@onekeyfe/onekey-solana-provider 1.1.45 → 1.1.48

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/dist/cjs/index.js CHANGED
@@ -12,3 +12,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./ProviderSolana"), exports);
14
14
  __exportStar(require("./ProviderSolanaBase"), exports);
15
+ __exportStar(require("./wallet-standard/index"), exports);
package/dist/cjs/utils.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isWalletEventMethodMatch = exports.decodeSignedTransaction = exports.encodeTransaction = void 0;
6
+ exports.arraysEqual = exports.bytesEqual = exports.isWalletEventMethodMatch = exports.decodeSignedTransaction = exports.encodeTransaction = void 0;
7
7
  const web3_js_1 = require("@solana/web3.js");
8
8
  const bs58_1 = __importDefault(require("bs58"));
9
9
  const encodeTransaction = (transaction) => {
@@ -24,3 +24,20 @@ function isWalletEventMethodMatch(method, name) {
24
24
  return method === `metamask_${name}` || method === `wallet_events_${name}`;
25
25
  }
26
26
  exports.isWalletEventMethodMatch = isWalletEventMethodMatch;
27
+ function bytesEqual(a, b) {
28
+ return arraysEqual(a, b);
29
+ }
30
+ exports.bytesEqual = bytesEqual;
31
+ function arraysEqual(a, b) {
32
+ if (a === b)
33
+ return true;
34
+ const length = a.length;
35
+ if (length !== b.length)
36
+ return false;
37
+ for (let i = 0; i < length; i++) {
38
+ if (a[i] !== b[i])
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ exports.arraysEqual = arraysEqual;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _OneKeySolanaWalletAccount_address, _OneKeySolanaWalletAccount_publicKey, _OneKeySolanaWalletAccount_chains, _OneKeySolanaWalletAccount_features, _OneKeySolanaWalletAccount_label, _OneKeySolanaWalletAccount_icon;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OneKeySolanaWalletAccount = void 0;
16
+ const wallet_standard_features_1 = require("@solana/wallet-standard-features");
17
+ const solana_1 = require("./solana");
18
+ const chains = solana_1.SOLANA_CHAINS;
19
+ const features = [wallet_standard_features_1.SolanaSignAndSendTransaction, wallet_standard_features_1.SolanaSignTransaction, wallet_standard_features_1.SolanaSignMessage];
20
+ class OneKeySolanaWalletAccount {
21
+ constructor({ address, publicKey, label, icon }) {
22
+ _OneKeySolanaWalletAccount_address.set(this, void 0);
23
+ _OneKeySolanaWalletAccount_publicKey.set(this, void 0);
24
+ _OneKeySolanaWalletAccount_chains.set(this, void 0);
25
+ _OneKeySolanaWalletAccount_features.set(this, void 0);
26
+ _OneKeySolanaWalletAccount_label.set(this, void 0);
27
+ _OneKeySolanaWalletAccount_icon.set(this, void 0);
28
+ if (new.target === OneKeySolanaWalletAccount) {
29
+ Object.freeze(this);
30
+ }
31
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_address, address, "f");
32
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_publicKey, publicKey, "f");
33
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_chains, chains, "f");
34
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_features, features, "f");
35
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_label, label, "f");
36
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_icon, icon, "f");
37
+ }
38
+ get address() {
39
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_address, "f");
40
+ }
41
+ get publicKey() {
42
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_publicKey, "f").slice();
43
+ }
44
+ get chains() {
45
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_chains, "f").slice();
46
+ }
47
+ get features() {
48
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_features, "f").slice();
49
+ }
50
+ get label() {
51
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_label, "f");
52
+ }
53
+ get icon() {
54
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_icon, "f");
55
+ }
56
+ }
57
+ exports.OneKeySolanaWalletAccount = OneKeySolanaWalletAccount;
58
+ _OneKeySolanaWalletAccount_address = new WeakMap(), _OneKeySolanaWalletAccount_publicKey = new WeakMap(), _OneKeySolanaWalletAccount_chains = new WeakMap(), _OneKeySolanaWalletAccount_features = new WeakMap(), _OneKeySolanaWalletAccount_label = new WeakMap(), _OneKeySolanaWalletAccount_icon = new WeakMap();
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneKeySolanaStandardWallet = exports.registerSolanaWallet = void 0;
4
+ var register_js_1 = require("./register.js");
5
+ Object.defineProperty(exports, "registerSolanaWallet", { enumerable: true, get: function () { return register_js_1.registerSolanaWallet; } });
6
+ var wallet_js_1 = require("./wallet.js");
7
+ Object.defineProperty(exports, "OneKeySolanaStandardWallet", { enumerable: true, get: function () { return wallet_js_1.OneKeySolanaStandardWallet; } });
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _RegisterWalletEvent_detail;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.registerSolanaWallet = exports.DEPRECATED_registerWallet = exports.registerWallet = void 0;
16
+ const wallet_1 = require("./wallet");
17
+ function registerWallet(wallet) {
18
+ const callback = ({ register }) => register(wallet);
19
+ try {
20
+ window.dispatchEvent(new RegisterWalletEvent(callback));
21
+ }
22
+ catch (error) {
23
+ console.error('wallet-standard:register-wallet event could not be dispatched\n', error);
24
+ }
25
+ try {
26
+ window.addEventListener('wallet-standard:app-ready', ({ detail: api }) => callback(api));
27
+ }
28
+ catch (error) {
29
+ console.error('wallet-standard:app-ready event listener could not be added\n', error);
30
+ }
31
+ }
32
+ exports.registerWallet = registerWallet;
33
+ class RegisterWalletEvent extends Event {
34
+ constructor(callback) {
35
+ super('wallet-standard:register-wallet', {
36
+ bubbles: false,
37
+ cancelable: false,
38
+ composed: false,
39
+ });
40
+ _RegisterWalletEvent_detail.set(this, void 0);
41
+ __classPrivateFieldSet(this, _RegisterWalletEvent_detail, callback, "f");
42
+ }
43
+ get detail() {
44
+ return __classPrivateFieldGet(this, _RegisterWalletEvent_detail, "f");
45
+ }
46
+ get type() {
47
+ return 'wallet-standard:register-wallet';
48
+ }
49
+ /** @deprecated */
50
+ preventDefault() {
51
+ throw new Error('preventDefault cannot be called');
52
+ }
53
+ /** @deprecated */
54
+ stopImmediatePropagation() {
55
+ throw new Error('stopImmediatePropagation cannot be called');
56
+ }
57
+ /** @deprecated */
58
+ stopPropagation() {
59
+ throw new Error('stopPropagation cannot be called');
60
+ }
61
+ }
62
+ _RegisterWalletEvent_detail = new WeakMap();
63
+ /** @deprecated */
64
+ function DEPRECATED_registerWallet(wallet) {
65
+ var _a;
66
+ registerWallet(wallet);
67
+ try {
68
+ ((_a = window.navigator).wallets || (_a.wallets = [])).push(({ register }) => register(wallet));
69
+ }
70
+ catch (error) {
71
+ console.error('window.navigator.wallets could not be pushed\n', error);
72
+ }
73
+ }
74
+ exports.DEPRECATED_registerWallet = DEPRECATED_registerWallet;
75
+ function registerSolanaWallet(provider, options) {
76
+ try {
77
+ registerWallet(new wallet_1.OneKeySolanaStandardWallet(provider, options));
78
+ }
79
+ catch (error) {
80
+ console.error(error);
81
+ }
82
+ }
83
+ exports.registerSolanaWallet = registerSolanaWallet;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSolanaChain = exports.SOLANA_CHAINS = exports.SOLANA_LOCALNET_CHAIN = exports.SOLANA_TESTNET_CHAIN = exports.SOLANA_DEVNET_CHAIN = exports.SOLANA_MAINNET_CHAIN = void 0;
4
+ exports.SOLANA_MAINNET_CHAIN = 'solana:mainnet';
5
+ exports.SOLANA_DEVNET_CHAIN = 'solana:devnet';
6
+ exports.SOLANA_TESTNET_CHAIN = 'solana:testnet';
7
+ exports.SOLANA_LOCALNET_CHAIN = 'solana:localnet';
8
+ exports.SOLANA_CHAINS = [
9
+ exports.SOLANA_MAINNET_CHAIN,
10
+ exports.SOLANA_DEVNET_CHAIN,
11
+ exports.SOLANA_TESTNET_CHAIN,
12
+ exports.SOLANA_LOCALNET_CHAIN,
13
+ ];
14
+ function isSolanaChain(chain) {
15
+ return exports.SOLANA_CHAINS.includes(chain);
16
+ }
17
+ exports.isSolanaChain = isSolanaChain;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
12
+ if (kind === "m") throw new TypeError("Private method is not writable");
13
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
14
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
+ };
17
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
18
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
19
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ var _OneKeySolanaStandardWallet_instances, _OneKeySolanaStandardWallet_listeners, _OneKeySolanaStandardWallet_version, _OneKeySolanaStandardWallet_name, _OneKeySolanaStandardWallet_icon, _OneKeySolanaStandardWallet_account, _OneKeySolanaStandardWallet_provider, _OneKeySolanaStandardWallet_on, _OneKeySolanaStandardWallet_emit, _OneKeySolanaStandardWallet_off, _OneKeySolanaStandardWallet_connected, _OneKeySolanaStandardWallet_disconnected, _OneKeySolanaStandardWallet_reconnected, _OneKeySolanaStandardWallet_connect, _OneKeySolanaStandardWallet_disconnect, _OneKeySolanaStandardWallet_signAndSendTransaction, _OneKeySolanaStandardWallet_signTransaction, _OneKeySolanaStandardWallet_signMessage;
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.OneKeySolanaStandardWallet = exports.OneKeyNamespace = void 0;
28
+ const wallet_standard_features_1 = require("@solana/wallet-standard-features");
29
+ const web3_js_1 = require("@solana/web3.js");
30
+ const features_1 = require("@wallet-standard/features");
31
+ const bs58_1 = __importDefault(require("bs58"));
32
+ const account_1 = require("./account");
33
+ const solana_1 = require("./solana");
34
+ const utils_1 = require("../utils");
35
+ exports.OneKeyNamespace = 'onekey:';
36
+ class OneKeySolanaStandardWallet {
37
+ constructor(provider, options) {
38
+ _OneKeySolanaStandardWallet_instances.add(this);
39
+ _OneKeySolanaStandardWallet_listeners.set(this, {});
40
+ _OneKeySolanaStandardWallet_version.set(this, '1.0.0');
41
+ _OneKeySolanaStandardWallet_name.set(this, 'OneKey');
42
+ _OneKeySolanaStandardWallet_icon.set(this, void 0);
43
+ _OneKeySolanaStandardWallet_account.set(this, null);
44
+ _OneKeySolanaStandardWallet_provider.set(this, void 0);
45
+ _OneKeySolanaStandardWallet_on.set(this, (event, listener) => {
46
+ var _a;
47
+ ((_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.push(listener)) || (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event] = [listener]);
48
+ return () => __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_off).call(this, event, listener);
49
+ });
50
+ _OneKeySolanaStandardWallet_connected.set(this, () => {
51
+ var _a;
52
+ const address = (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey) === null || _a === void 0 ? void 0 : _a.toBase58();
53
+ if (address) {
54
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
55
+ const publicKey = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey.toBytes();
56
+ const account = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f");
57
+ if (!account || account.address !== address || !(0, utils_1.bytesEqual)(account.publicKey, publicKey)) {
58
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_account, new account_1.OneKeySolanaWalletAccount({ address, publicKey }), "f");
59
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_emit).call(this, 'change', { accounts: this.accounts });
60
+ }
61
+ }
62
+ });
63
+ _OneKeySolanaStandardWallet_disconnected.set(this, () => {
64
+ if (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")) {
65
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_account, null, "f");
66
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_emit).call(this, 'change', { accounts: this.accounts });
67
+ }
68
+ });
69
+ _OneKeySolanaStandardWallet_reconnected.set(this, () => {
70
+ if (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey) {
71
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
72
+ }
73
+ else {
74
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnected, "f").call(this);
75
+ }
76
+ });
77
+ _OneKeySolanaStandardWallet_connect.set(this, ({ silent } = {}) => __awaiter(this, void 0, void 0, function* () {
78
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")) {
79
+ yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").connect(silent ? { onlyIfTrusted: true } : undefined);
80
+ }
81
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
82
+ return { accounts: this.accounts };
83
+ }));
84
+ _OneKeySolanaStandardWallet_disconnect.set(this, () => __awaiter(this, void 0, void 0, function* () {
85
+ yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").disconnect();
86
+ }));
87
+ _OneKeySolanaStandardWallet_signAndSendTransaction.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
88
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
89
+ throw new Error('not connected');
90
+ const outputs = [];
91
+ if (inputs.length === 1) {
92
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
93
+ const { transaction, account, chain, options } = inputs[0];
94
+ const { minContextSlot, preflightCommitment, skipPreflight, maxRetries } = options || {};
95
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
96
+ throw new Error('invalid account');
97
+ if (!(0, solana_1.isSolanaChain)(chain))
98
+ throw new Error('invalid chain');
99
+ const { signature } = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signAndSendTransaction(web3_js_1.VersionedTransaction.deserialize(transaction), {
100
+ preflightCommitment,
101
+ minContextSlot,
102
+ maxRetries,
103
+ skipPreflight,
104
+ });
105
+ outputs.push({ signature: bs58_1.default.decode(signature) });
106
+ }
107
+ else if (inputs.length > 1) {
108
+ for (const input of inputs) {
109
+ outputs.push(...(yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signAndSendTransaction, "f").call(this, input)));
110
+ }
111
+ }
112
+ return outputs;
113
+ }));
114
+ _OneKeySolanaStandardWallet_signTransaction.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
115
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
116
+ throw new Error('not connected');
117
+ const outputs = [];
118
+ if (inputs.length === 1) {
119
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
120
+ const { transaction, account, chain } = inputs[0];
121
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
122
+ throw new Error('invalid account');
123
+ if (chain && !(0, solana_1.isSolanaChain)(chain))
124
+ throw new Error('invalid chain');
125
+ const signedTransaction = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signTransaction(web3_js_1.VersionedTransaction.deserialize(transaction));
126
+ outputs.push({ signedTransaction: signedTransaction.serialize() });
127
+ }
128
+ else if (inputs.length > 1) {
129
+ let chain = undefined;
130
+ for (const input of inputs) {
131
+ if (input.account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
132
+ throw new Error('invalid account');
133
+ if (input.chain) {
134
+ if (!(0, solana_1.isSolanaChain)(input.chain))
135
+ throw new Error('invalid chain');
136
+ if (chain) {
137
+ if (input.chain !== chain)
138
+ throw new Error('conflicting chain');
139
+ }
140
+ else {
141
+ chain = input.chain;
142
+ }
143
+ }
144
+ }
145
+ const transactions = inputs.map(({ transaction }) => web3_js_1.Transaction.from(transaction));
146
+ const signedTransactions = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signAllTransactions(transactions);
147
+ outputs.push(...signedTransactions.map((signedTransaction) => ({ signedTransaction: signedTransaction.serialize() })));
148
+ }
149
+ return outputs;
150
+ }));
151
+ _OneKeySolanaStandardWallet_signMessage.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
152
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
153
+ throw new Error('not connected');
154
+ const outputs = [];
155
+ if (inputs.length === 1) {
156
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
157
+ const { message, account } = inputs[0];
158
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
159
+ throw new Error('invalid account');
160
+ const { signature } = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signMessage(message);
161
+ outputs.push({ signedMessage: message, signature });
162
+ }
163
+ else if (inputs.length > 1) {
164
+ for (const input of inputs) {
165
+ outputs.push(...(yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signMessage, "f").call(this, input)));
166
+ }
167
+ }
168
+ return outputs;
169
+ }));
170
+ if (new.target === OneKeySolanaStandardWallet) {
171
+ Object.freeze(this);
172
+ }
173
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_provider, provider, "f");
174
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_icon, options.icon, "f");
175
+ provider.on('connect', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f"));
176
+ provider.on('disconnect', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnected, "f"));
177
+ provider.on('accountChanged', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_reconnected, "f"));
178
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
179
+ }
180
+ get version() {
181
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_version, "f");
182
+ }
183
+ get name() {
184
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_name, "f");
185
+ }
186
+ get icon() {
187
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_icon, "f");
188
+ }
189
+ get chains() {
190
+ return solana_1.SOLANA_CHAINS.slice();
191
+ }
192
+ get features() {
193
+ return {
194
+ [features_1.StandardConnect]: {
195
+ version: '1.0.0',
196
+ connect: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connect, "f"),
197
+ },
198
+ [features_1.StandardDisconnect]: {
199
+ version: '1.0.0',
200
+ disconnect: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnect, "f"),
201
+ },
202
+ [features_1.StandardEvents]: {
203
+ version: '1.0.0',
204
+ on: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_on, "f"),
205
+ },
206
+ [wallet_standard_features_1.SolanaSignAndSendTransaction]: {
207
+ version: '1.0.0',
208
+ supportedTransactionVersions: ['legacy', 0],
209
+ signAndSendTransaction: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signAndSendTransaction, "f"),
210
+ },
211
+ [wallet_standard_features_1.SolanaSignTransaction]: {
212
+ version: '1.0.0',
213
+ supportedTransactionVersions: ['legacy', 0],
214
+ signTransaction: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signTransaction, "f"),
215
+ },
216
+ [wallet_standard_features_1.SolanaSignMessage]: {
217
+ version: '1.0.0',
218
+ signMessage: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signMessage, "f"),
219
+ },
220
+ [exports.OneKeyNamespace]: {
221
+ onekey: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f"),
222
+ },
223
+ };
224
+ }
225
+ get accounts() {
226
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f") ? [__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")] : [];
227
+ }
228
+ }
229
+ exports.OneKeySolanaStandardWallet = OneKeySolanaStandardWallet;
230
+ _OneKeySolanaStandardWallet_listeners = new WeakMap(), _OneKeySolanaStandardWallet_version = new WeakMap(), _OneKeySolanaStandardWallet_name = new WeakMap(), _OneKeySolanaStandardWallet_icon = new WeakMap(), _OneKeySolanaStandardWallet_account = new WeakMap(), _OneKeySolanaStandardWallet_provider = new WeakMap(), _OneKeySolanaStandardWallet_on = new WeakMap(), _OneKeySolanaStandardWallet_connected = new WeakMap(), _OneKeySolanaStandardWallet_disconnected = new WeakMap(), _OneKeySolanaStandardWallet_reconnected = new WeakMap(), _OneKeySolanaStandardWallet_connect = new WeakMap(), _OneKeySolanaStandardWallet_disconnect = new WeakMap(), _OneKeySolanaStandardWallet_signAndSendTransaction = new WeakMap(), _OneKeySolanaStandardWallet_signTransaction = new WeakMap(), _OneKeySolanaStandardWallet_signMessage = new WeakMap(), _OneKeySolanaStandardWallet_instances = new WeakSet(), _OneKeySolanaStandardWallet_emit = function _OneKeySolanaStandardWallet_emit(event, ...args) {
231
+ var _a;
232
+ // eslint-disable-next-line prefer-spread
233
+ (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.forEach((listener) => listener.apply(null, args));
234
+ }, _OneKeySolanaStandardWallet_off = function _OneKeySolanaStandardWallet_off(event, listener) {
235
+ var _a;
236
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event] = (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.filter((existingListener) => listener !== existingListener);
237
+ };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './ProviderSolana';
2
2
  export * from './ProviderSolanaBase';
3
+ export * from './wallet-standard/index';
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './ProviderSolana';
2
2
  export * from './ProviderSolanaBase';
3
+ export * from './wallet-standard/index';
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,11 @@
1
1
  import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ interface Indexed<T> {
3
+ length: number;
4
+ [index: number]: T;
5
+ }
2
6
  export declare const encodeTransaction: (transaction: Transaction | VersionedTransaction) => string;
3
7
  export declare const decodeSignedTransaction: (message: string) => Transaction | VersionedTransaction;
4
8
  export declare function isWalletEventMethodMatch(method: string, name: string): boolean;
9
+ export declare function bytesEqual(a: Uint8Array, b: Uint8Array): boolean;
10
+ export declare function arraysEqual<T>(a: Indexed<T>, b: Indexed<T>): boolean;
11
+ export {};
package/dist/utils.js CHANGED
@@ -15,3 +15,18 @@ export const decodeSignedTransaction = (message) => {
15
15
  export function isWalletEventMethodMatch(method, name) {
16
16
  return method === `metamask_${name}` || method === `wallet_events_${name}`;
17
17
  }
18
+ export function bytesEqual(a, b) {
19
+ return arraysEqual(a, b);
20
+ }
21
+ export function arraysEqual(a, b) {
22
+ if (a === b)
23
+ return true;
24
+ const length = a.length;
25
+ if (length !== b.length)
26
+ return false;
27
+ for (let i = 0; i < length; i++) {
28
+ if (a[i] !== b[i])
29
+ return false;
30
+ }
31
+ return true;
32
+ }
@@ -0,0 +1,11 @@
1
+ import type { WalletAccount } from '@wallet-standard/base';
2
+ export declare class OneKeySolanaWalletAccount implements WalletAccount {
3
+ #private;
4
+ get address(): string;
5
+ get publicKey(): Uint8Array;
6
+ get chains(): `${string}:${string}`[];
7
+ get features(): `${string}:${string}`[];
8
+ get label(): string | undefined;
9
+ get icon(): `data:image/svg+xml;base64,${string}` | `data:image/webp;base64,${string}` | `data:image/png;base64,${string}` | `data:image/gif;base64,${string}` | undefined;
10
+ constructor({ address, publicKey, label, icon }: Omit<WalletAccount, 'chains' | 'features'>);
11
+ }
@@ -0,0 +1,54 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _OneKeySolanaWalletAccount_address, _OneKeySolanaWalletAccount_publicKey, _OneKeySolanaWalletAccount_chains, _OneKeySolanaWalletAccount_features, _OneKeySolanaWalletAccount_label, _OneKeySolanaWalletAccount_icon;
13
+ import { SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction, } from '@solana/wallet-standard-features';
14
+ import { SOLANA_CHAINS } from './solana';
15
+ const chains = SOLANA_CHAINS;
16
+ const features = [SolanaSignAndSendTransaction, SolanaSignTransaction, SolanaSignMessage];
17
+ export class OneKeySolanaWalletAccount {
18
+ constructor({ address, publicKey, label, icon }) {
19
+ _OneKeySolanaWalletAccount_address.set(this, void 0);
20
+ _OneKeySolanaWalletAccount_publicKey.set(this, void 0);
21
+ _OneKeySolanaWalletAccount_chains.set(this, void 0);
22
+ _OneKeySolanaWalletAccount_features.set(this, void 0);
23
+ _OneKeySolanaWalletAccount_label.set(this, void 0);
24
+ _OneKeySolanaWalletAccount_icon.set(this, void 0);
25
+ if (new.target === OneKeySolanaWalletAccount) {
26
+ Object.freeze(this);
27
+ }
28
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_address, address, "f");
29
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_publicKey, publicKey, "f");
30
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_chains, chains, "f");
31
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_features, features, "f");
32
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_label, label, "f");
33
+ __classPrivateFieldSet(this, _OneKeySolanaWalletAccount_icon, icon, "f");
34
+ }
35
+ get address() {
36
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_address, "f");
37
+ }
38
+ get publicKey() {
39
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_publicKey, "f").slice();
40
+ }
41
+ get chains() {
42
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_chains, "f").slice();
43
+ }
44
+ get features() {
45
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_features, "f").slice();
46
+ }
47
+ get label() {
48
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_label, "f");
49
+ }
50
+ get icon() {
51
+ return __classPrivateFieldGet(this, _OneKeySolanaWalletAccount_icon, "f");
52
+ }
53
+ }
54
+ _OneKeySolanaWalletAccount_address = new WeakMap(), _OneKeySolanaWalletAccount_publicKey = new WeakMap(), _OneKeySolanaWalletAccount_chains = new WeakMap(), _OneKeySolanaWalletAccount_features = new WeakMap(), _OneKeySolanaWalletAccount_label = new WeakMap(), _OneKeySolanaWalletAccount_icon = new WeakMap();
@@ -0,0 +1,3 @@
1
+ export { registerSolanaWallet } from './register.js';
2
+ export { OneKeySolanaStandardWallet } from './wallet.js';
3
+ export { WalletIcon } from './types.js';
@@ -0,0 +1,2 @@
1
+ export { registerSolanaWallet } from './register.js';
2
+ export { OneKeySolanaStandardWallet } from './wallet.js';
@@ -0,0 +1,7 @@
1
+ import type { Wallet } from '@wallet-standard/base';
2
+ import { ProviderSolana } from '../ProviderSolana';
3
+ import { WalletInfo } from './types';
4
+ export declare function registerWallet(wallet: Wallet): void;
5
+ /** @deprecated */
6
+ export declare function DEPRECATED_registerWallet(wallet: Wallet): void;
7
+ export declare function registerSolanaWallet(provider: ProviderSolana, options: WalletInfo): void;
@@ -0,0 +1,77 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _RegisterWalletEvent_detail;
13
+ import { OneKeySolanaStandardWallet } from './wallet';
14
+ export function registerWallet(wallet) {
15
+ const callback = ({ register }) => register(wallet);
16
+ try {
17
+ window.dispatchEvent(new RegisterWalletEvent(callback));
18
+ }
19
+ catch (error) {
20
+ console.error('wallet-standard:register-wallet event could not be dispatched\n', error);
21
+ }
22
+ try {
23
+ window.addEventListener('wallet-standard:app-ready', ({ detail: api }) => callback(api));
24
+ }
25
+ catch (error) {
26
+ console.error('wallet-standard:app-ready event listener could not be added\n', error);
27
+ }
28
+ }
29
+ class RegisterWalletEvent extends Event {
30
+ constructor(callback) {
31
+ super('wallet-standard:register-wallet', {
32
+ bubbles: false,
33
+ cancelable: false,
34
+ composed: false,
35
+ });
36
+ _RegisterWalletEvent_detail.set(this, void 0);
37
+ __classPrivateFieldSet(this, _RegisterWalletEvent_detail, callback, "f");
38
+ }
39
+ get detail() {
40
+ return __classPrivateFieldGet(this, _RegisterWalletEvent_detail, "f");
41
+ }
42
+ get type() {
43
+ return 'wallet-standard:register-wallet';
44
+ }
45
+ /** @deprecated */
46
+ preventDefault() {
47
+ throw new Error('preventDefault cannot be called');
48
+ }
49
+ /** @deprecated */
50
+ stopImmediatePropagation() {
51
+ throw new Error('stopImmediatePropagation cannot be called');
52
+ }
53
+ /** @deprecated */
54
+ stopPropagation() {
55
+ throw new Error('stopPropagation cannot be called');
56
+ }
57
+ }
58
+ _RegisterWalletEvent_detail = new WeakMap();
59
+ /** @deprecated */
60
+ export function DEPRECATED_registerWallet(wallet) {
61
+ var _a;
62
+ registerWallet(wallet);
63
+ try {
64
+ ((_a = window.navigator).wallets || (_a.wallets = [])).push(({ register }) => register(wallet));
65
+ }
66
+ catch (error) {
67
+ console.error('window.navigator.wallets could not be pushed\n', error);
68
+ }
69
+ }
70
+ export function registerSolanaWallet(provider, options) {
71
+ try {
72
+ registerWallet(new OneKeySolanaStandardWallet(provider, options));
73
+ }
74
+ catch (error) {
75
+ console.error(error);
76
+ }
77
+ }
@@ -0,0 +1,8 @@
1
+ import type { IdentifierString } from '@wallet-standard/base';
2
+ export declare const SOLANA_MAINNET_CHAIN = "solana:mainnet";
3
+ export declare const SOLANA_DEVNET_CHAIN = "solana:devnet";
4
+ export declare const SOLANA_TESTNET_CHAIN = "solana:testnet";
5
+ export declare const SOLANA_LOCALNET_CHAIN = "solana:localnet";
6
+ export declare const SOLANA_CHAINS: readonly ["solana:mainnet", "solana:devnet", "solana:testnet", "solana:localnet"];
7
+ export declare type SolanaChain = typeof SOLANA_CHAINS[number];
8
+ export declare function isSolanaChain(chain: IdentifierString): chain is SolanaChain;
@@ -0,0 +1,13 @@
1
+ export const SOLANA_MAINNET_CHAIN = 'solana:mainnet';
2
+ export const SOLANA_DEVNET_CHAIN = 'solana:devnet';
3
+ export const SOLANA_TESTNET_CHAIN = 'solana:testnet';
4
+ export const SOLANA_LOCALNET_CHAIN = 'solana:localnet';
5
+ export const SOLANA_CHAINS = [
6
+ SOLANA_MAINNET_CHAIN,
7
+ SOLANA_DEVNET_CHAIN,
8
+ SOLANA_TESTNET_CHAIN,
9
+ SOLANA_LOCALNET_CHAIN,
10
+ ];
11
+ export function isSolanaChain(chain) {
12
+ return SOLANA_CHAINS.includes(chain);
13
+ }
@@ -0,0 +1,6 @@
1
+ import { WalletIcon } from '@wallet-standard/base';
2
+ export declare type WalletInfo = {
3
+ name?: string;
4
+ icon: WalletIcon;
5
+ };
6
+ export { WalletIcon };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { type SolanaSignAndSendTransactionFeature, type SolanaSignMessageFeature, type SolanaSignTransactionFeature } from '@solana/wallet-standard-features';
2
+ import type { Wallet } from '@wallet-standard/base';
3
+ import { type StandardConnectFeature, type StandardDisconnectFeature, type StandardEventsFeature } from '@wallet-standard/features';
4
+ import { OneKeySolanaWalletAccount } from './account';
5
+ import { ProviderSolana } from '../ProviderSolana';
6
+ import { WalletInfo } from './types';
7
+ export declare const OneKeyNamespace = "onekey:";
8
+ export declare type OneKeyFeature = {
9
+ [OneKeyNamespace]: {
10
+ onekey: ProviderSolana;
11
+ };
12
+ };
13
+ export declare class OneKeySolanaStandardWallet implements Wallet {
14
+ #private;
15
+ get version(): "1.0.0";
16
+ get name(): "OneKey";
17
+ get icon(): `data:image/svg+xml;base64,${string}` | `data:image/webp;base64,${string}` | `data:image/png;base64,${string}` | `data:image/gif;base64,${string}`;
18
+ get chains(): ("solana:mainnet" | "solana:devnet" | "solana:testnet" | "solana:localnet")[];
19
+ get features(): StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & SolanaSignAndSendTransactionFeature & SolanaSignTransactionFeature & SolanaSignMessageFeature & OneKeyFeature;
20
+ get accounts(): OneKeySolanaWalletAccount[];
21
+ constructor(provider: ProviderSolana, options: WalletInfo);
22
+ }
@@ -0,0 +1,230 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
11
+ if (kind === "m") throw new TypeError("Private method is not writable");
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
15
+ };
16
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
+ };
21
+ var _OneKeySolanaStandardWallet_instances, _OneKeySolanaStandardWallet_listeners, _OneKeySolanaStandardWallet_version, _OneKeySolanaStandardWallet_name, _OneKeySolanaStandardWallet_icon, _OneKeySolanaStandardWallet_account, _OneKeySolanaStandardWallet_provider, _OneKeySolanaStandardWallet_on, _OneKeySolanaStandardWallet_emit, _OneKeySolanaStandardWallet_off, _OneKeySolanaStandardWallet_connected, _OneKeySolanaStandardWallet_disconnected, _OneKeySolanaStandardWallet_reconnected, _OneKeySolanaStandardWallet_connect, _OneKeySolanaStandardWallet_disconnect, _OneKeySolanaStandardWallet_signAndSendTransaction, _OneKeySolanaStandardWallet_signTransaction, _OneKeySolanaStandardWallet_signMessage;
22
+ import { SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction, } from '@solana/wallet-standard-features';
23
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
24
+ import { StandardConnect, StandardDisconnect, StandardEvents, } from '@wallet-standard/features';
25
+ import bs58 from 'bs58';
26
+ import { OneKeySolanaWalletAccount } from './account';
27
+ import { SOLANA_CHAINS, isSolanaChain } from './solana';
28
+ import { bytesEqual } from '../utils';
29
+ export const OneKeyNamespace = 'onekey:';
30
+ export class OneKeySolanaStandardWallet {
31
+ constructor(provider, options) {
32
+ _OneKeySolanaStandardWallet_instances.add(this);
33
+ _OneKeySolanaStandardWallet_listeners.set(this, {});
34
+ _OneKeySolanaStandardWallet_version.set(this, '1.0.0');
35
+ _OneKeySolanaStandardWallet_name.set(this, 'OneKey');
36
+ _OneKeySolanaStandardWallet_icon.set(this, void 0);
37
+ _OneKeySolanaStandardWallet_account.set(this, null);
38
+ _OneKeySolanaStandardWallet_provider.set(this, void 0);
39
+ _OneKeySolanaStandardWallet_on.set(this, (event, listener) => {
40
+ var _a;
41
+ ((_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.push(listener)) || (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event] = [listener]);
42
+ return () => __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_off).call(this, event, listener);
43
+ });
44
+ _OneKeySolanaStandardWallet_connected.set(this, () => {
45
+ var _a;
46
+ const address = (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey) === null || _a === void 0 ? void 0 : _a.toBase58();
47
+ if (address) {
48
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
49
+ const publicKey = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey.toBytes();
50
+ const account = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f");
51
+ if (!account || account.address !== address || !bytesEqual(account.publicKey, publicKey)) {
52
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_account, new OneKeySolanaWalletAccount({ address, publicKey }), "f");
53
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_emit).call(this, 'change', { accounts: this.accounts });
54
+ }
55
+ }
56
+ });
57
+ _OneKeySolanaStandardWallet_disconnected.set(this, () => {
58
+ if (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")) {
59
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_account, null, "f");
60
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_instances, "m", _OneKeySolanaStandardWallet_emit).call(this, 'change', { accounts: this.accounts });
61
+ }
62
+ });
63
+ _OneKeySolanaStandardWallet_reconnected.set(this, () => {
64
+ if (__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").publicKey) {
65
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
66
+ }
67
+ else {
68
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnected, "f").call(this);
69
+ }
70
+ });
71
+ _OneKeySolanaStandardWallet_connect.set(this, ({ silent } = {}) => __awaiter(this, void 0, void 0, function* () {
72
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")) {
73
+ yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").connect(silent ? { onlyIfTrusted: true } : undefined);
74
+ }
75
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
76
+ return { accounts: this.accounts };
77
+ }));
78
+ _OneKeySolanaStandardWallet_disconnect.set(this, () => __awaiter(this, void 0, void 0, function* () {
79
+ yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").disconnect();
80
+ }));
81
+ _OneKeySolanaStandardWallet_signAndSendTransaction.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
82
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
83
+ throw new Error('not connected');
84
+ const outputs = [];
85
+ if (inputs.length === 1) {
86
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
87
+ const { transaction, account, chain, options } = inputs[0];
88
+ const { minContextSlot, preflightCommitment, skipPreflight, maxRetries } = options || {};
89
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
90
+ throw new Error('invalid account');
91
+ if (!isSolanaChain(chain))
92
+ throw new Error('invalid chain');
93
+ const { signature } = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signAndSendTransaction(VersionedTransaction.deserialize(transaction), {
94
+ preflightCommitment,
95
+ minContextSlot,
96
+ maxRetries,
97
+ skipPreflight,
98
+ });
99
+ outputs.push({ signature: bs58.decode(signature) });
100
+ }
101
+ else if (inputs.length > 1) {
102
+ for (const input of inputs) {
103
+ outputs.push(...(yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signAndSendTransaction, "f").call(this, input)));
104
+ }
105
+ }
106
+ return outputs;
107
+ }));
108
+ _OneKeySolanaStandardWallet_signTransaction.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
109
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
110
+ throw new Error('not connected');
111
+ const outputs = [];
112
+ if (inputs.length === 1) {
113
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
114
+ const { transaction, account, chain } = inputs[0];
115
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
116
+ throw new Error('invalid account');
117
+ if (chain && !isSolanaChain(chain))
118
+ throw new Error('invalid chain');
119
+ const signedTransaction = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signTransaction(VersionedTransaction.deserialize(transaction));
120
+ outputs.push({ signedTransaction: signedTransaction.serialize() });
121
+ }
122
+ else if (inputs.length > 1) {
123
+ let chain = undefined;
124
+ for (const input of inputs) {
125
+ if (input.account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
126
+ throw new Error('invalid account');
127
+ if (input.chain) {
128
+ if (!isSolanaChain(input.chain))
129
+ throw new Error('invalid chain');
130
+ if (chain) {
131
+ if (input.chain !== chain)
132
+ throw new Error('conflicting chain');
133
+ }
134
+ else {
135
+ chain = input.chain;
136
+ }
137
+ }
138
+ }
139
+ const transactions = inputs.map(({ transaction }) => Transaction.from(transaction));
140
+ const signedTransactions = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signAllTransactions(transactions);
141
+ outputs.push(...signedTransactions.map((signedTransaction) => ({ signedTransaction: signedTransaction.serialize() })));
142
+ }
143
+ return outputs;
144
+ }));
145
+ _OneKeySolanaStandardWallet_signMessage.set(this, (...inputs) => __awaiter(this, void 0, void 0, function* () {
146
+ if (!__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
147
+ throw new Error('not connected');
148
+ const outputs = [];
149
+ if (inputs.length === 1) {
150
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
151
+ const { message, account } = inputs[0];
152
+ if (account !== __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f"))
153
+ throw new Error('invalid account');
154
+ const { signature } = yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f").signMessage(message);
155
+ outputs.push({ signedMessage: message, signature });
156
+ }
157
+ else if (inputs.length > 1) {
158
+ for (const input of inputs) {
159
+ outputs.push(...(yield __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signMessage, "f").call(this, input)));
160
+ }
161
+ }
162
+ return outputs;
163
+ }));
164
+ if (new.target === OneKeySolanaStandardWallet) {
165
+ Object.freeze(this);
166
+ }
167
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_provider, provider, "f");
168
+ __classPrivateFieldSet(this, _OneKeySolanaStandardWallet_icon, options.icon, "f");
169
+ provider.on('connect', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f"));
170
+ provider.on('disconnect', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnected, "f"));
171
+ provider.on('accountChanged', __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_reconnected, "f"));
172
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connected, "f").call(this);
173
+ }
174
+ get version() {
175
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_version, "f");
176
+ }
177
+ get name() {
178
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_name, "f");
179
+ }
180
+ get icon() {
181
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_icon, "f");
182
+ }
183
+ get chains() {
184
+ return SOLANA_CHAINS.slice();
185
+ }
186
+ get features() {
187
+ return {
188
+ [StandardConnect]: {
189
+ version: '1.0.0',
190
+ connect: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_connect, "f"),
191
+ },
192
+ [StandardDisconnect]: {
193
+ version: '1.0.0',
194
+ disconnect: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_disconnect, "f"),
195
+ },
196
+ [StandardEvents]: {
197
+ version: '1.0.0',
198
+ on: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_on, "f"),
199
+ },
200
+ [SolanaSignAndSendTransaction]: {
201
+ version: '1.0.0',
202
+ supportedTransactionVersions: ['legacy', 0],
203
+ signAndSendTransaction: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signAndSendTransaction, "f"),
204
+ },
205
+ [SolanaSignTransaction]: {
206
+ version: '1.0.0',
207
+ supportedTransactionVersions: ['legacy', 0],
208
+ signTransaction: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signTransaction, "f"),
209
+ },
210
+ [SolanaSignMessage]: {
211
+ version: '1.0.0',
212
+ signMessage: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_signMessage, "f"),
213
+ },
214
+ [OneKeyNamespace]: {
215
+ onekey: __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_provider, "f"),
216
+ },
217
+ };
218
+ }
219
+ get accounts() {
220
+ return __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f") ? [__classPrivateFieldGet(this, _OneKeySolanaStandardWallet_account, "f")] : [];
221
+ }
222
+ }
223
+ _OneKeySolanaStandardWallet_listeners = new WeakMap(), _OneKeySolanaStandardWallet_version = new WeakMap(), _OneKeySolanaStandardWallet_name = new WeakMap(), _OneKeySolanaStandardWallet_icon = new WeakMap(), _OneKeySolanaStandardWallet_account = new WeakMap(), _OneKeySolanaStandardWallet_provider = new WeakMap(), _OneKeySolanaStandardWallet_on = new WeakMap(), _OneKeySolanaStandardWallet_connected = new WeakMap(), _OneKeySolanaStandardWallet_disconnected = new WeakMap(), _OneKeySolanaStandardWallet_reconnected = new WeakMap(), _OneKeySolanaStandardWallet_connect = new WeakMap(), _OneKeySolanaStandardWallet_disconnect = new WeakMap(), _OneKeySolanaStandardWallet_signAndSendTransaction = new WeakMap(), _OneKeySolanaStandardWallet_signTransaction = new WeakMap(), _OneKeySolanaStandardWallet_signMessage = new WeakMap(), _OneKeySolanaStandardWallet_instances = new WeakSet(), _OneKeySolanaStandardWallet_emit = function _OneKeySolanaStandardWallet_emit(event, ...args) {
224
+ var _a;
225
+ // eslint-disable-next-line prefer-spread
226
+ (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.forEach((listener) => listener.apply(null, args));
227
+ }, _OneKeySolanaStandardWallet_off = function _OneKeySolanaStandardWallet_off(event, listener) {
228
+ var _a;
229
+ __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event] = (_a = __classPrivateFieldGet(this, _OneKeySolanaStandardWallet_listeners, "f")[event]) === null || _a === void 0 ? void 0 : _a.filter((existingListener) => listener !== existingListener);
230
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/onekey-solana-provider",
3
- "version": "1.1.45",
3
+ "version": "1.1.48",
4
4
  "keywords": [
5
5
  "cross-inpage-provider",
6
6
  "solona"
@@ -29,15 +29,17 @@
29
29
  "start": "tsc --watch"
30
30
  },
31
31
  "dependencies": {
32
- "@onekeyfe/cross-inpage-provider-core": "1.1.45",
33
- "@onekeyfe/cross-inpage-provider-errors": "1.1.45",
34
- "@onekeyfe/cross-inpage-provider-types": "1.1.45",
35
- "@onekeyfe/extension-bridge-injected": "1.1.45",
32
+ "@onekeyfe/cross-inpage-provider-core": "1.1.48",
33
+ "@onekeyfe/cross-inpage-provider-errors": "1.1.48",
34
+ "@onekeyfe/cross-inpage-provider-types": "1.1.48",
35
+ "@onekeyfe/extension-bridge-injected": "1.1.48",
36
+ "@solana/wallet-standard-features": "^1.1.0",
36
37
  "@solana/web3.js": "^1.41.3",
38
+ "@wallet-standard/base": "^1.0.1",
37
39
  "bs58": "^5.0.0"
38
40
  },
39
41
  "devDependencies": {
40
42
  "@types/bs58": "^4.0.1"
41
43
  },
42
- "gitHead": "25bf58e46d50cb61816d5515524bd3d7817c278e"
44
+ "gitHead": "6a43a23aaf1a7ba4bd6e3efa04e52fe6dbd63101"
43
45
  }