@onekeyfe/onekey-alph-provider 2.2.61 → 2.2.63
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/OnekeyAlphProvider.d.ts +15 -3
- package/dist/OnekeyAlphProvider.js +62 -23
- package/dist/cjs/OnekeyAlphProvider.js +61 -22
- package/package.json +6 -6
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { IInpageProviderConfig } from '@onekeyfe/cross-inpage-provider-core';
|
|
2
2
|
import { AlephiumWindowObject, EnableOptions, RequestMessage } from '@alephium/get-extension-wallet';
|
|
3
|
-
import {
|
|
4
|
-
import type { EnableOptionsBase, Account, SignDeployContractTxParams, SignDeployContractTxResult, SignExecuteScriptTxParams, SignExecuteScriptTxResult, SignTransferTxParams, SignTransferTxResult, SignUnsignedTxParams, SignUnsignedTxResult, SignMessageParams, SignMessageResult } from '@alephium/web3';
|
|
3
|
+
import { InteractiveSignerProvider } from '@alephium/web3';
|
|
4
|
+
import type { EnableOptionsBase, Account, NodeProvider, ExplorerProvider, SignDeployContractTxParams, SignDeployContractTxResult, SignExecuteScriptTxParams, SignExecuteScriptTxResult, SignTransferTxParams, SignTransferTxResult, SignUnsignedTxParams, SignUnsignedTxResult, SignMessageParams, SignMessageResult } from '@alephium/web3';
|
|
5
5
|
import { ProviderAlphBase } from './ProviderAlphBase';
|
|
6
6
|
type OneKeyTonProviderProps = IInpageProviderConfig & {
|
|
7
7
|
timeout?: number;
|
|
8
8
|
};
|
|
9
9
|
export declare class ProviderAlph extends InteractiveSignerProvider implements AlephiumWindowObject {
|
|
10
|
-
#private;
|
|
11
10
|
_base: ProviderAlphBase;
|
|
12
11
|
id: string;
|
|
13
12
|
name: string;
|
|
@@ -15,6 +14,8 @@ export declare class ProviderAlph extends InteractiveSignerProvider implements A
|
|
|
15
14
|
version: string;
|
|
16
15
|
_accountInfo: Account | undefined;
|
|
17
16
|
onDisconnected: (() => void | Promise<void>) | undefined;
|
|
17
|
+
_nodeProvider: NodeProvider | undefined;
|
|
18
|
+
_explorerProvider: ExplorerProvider | undefined;
|
|
18
19
|
constructor(props: OneKeyTonProviderProps);
|
|
19
20
|
private bridgeRequest;
|
|
20
21
|
on(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
|
|
@@ -33,6 +34,17 @@ export declare class ProviderAlph extends InteractiveSignerProvider implements A
|
|
|
33
34
|
unsafeEnable(opt?: EnableOptionsBase | undefined): Promise<Account>;
|
|
34
35
|
get nodeProvider(): NodeProvider | undefined;
|
|
35
36
|
get explorerProvider(): ExplorerProvider | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Create a two-level Proxy that forwards all property access to the App side
|
|
39
|
+
* via bridge, where the real NodeProvider/ExplorerProvider executes the call.
|
|
40
|
+
*
|
|
41
|
+
* Handles three usage patterns:
|
|
42
|
+
* 1. provider.namespace.method(...args) -- e.g. nodeProvider.addresses.getAddressesAddressBalance('T...')
|
|
43
|
+
* 2. provider.directMethod(...args) -- e.g. nodeProvider.fetchFungibleTokenMetaData(tokenId)
|
|
44
|
+
* 3. provider.request(args) -- low-level API
|
|
45
|
+
*/
|
|
46
|
+
private _sanitizeBridgeParams;
|
|
47
|
+
private _createProviderProxy;
|
|
36
48
|
unsafeGetSelectedAccount(): Promise<Account>;
|
|
37
49
|
signAndSubmitDeployContractTx(params: SignDeployContractTxParams): Promise<SignDeployContractTxResult>;
|
|
38
50
|
signAndSubmitExecuteScriptTx(params: SignExecuteScriptTxParams): Promise<SignExecuteScriptTxResult>;
|
|
@@ -7,20 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
12
|
-
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");
|
|
13
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
|
-
};
|
|
15
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
16
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
17
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
18
|
-
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");
|
|
19
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
20
|
-
};
|
|
21
|
-
var _ProviderAlph_nodeProvider, _ProviderAlph_explorerProvider;
|
|
22
10
|
import { getOrCreateExtInjectedJsBridge } from '@onekeyfe/extension-bridge-injected';
|
|
23
|
-
import {
|
|
11
|
+
import { InteractiveSignerProvider } from '@alephium/web3';
|
|
24
12
|
import { ProviderAlphBase } from './ProviderAlphBase';
|
|
25
13
|
const PROVIDER_EVENTS = {
|
|
26
14
|
'disconnect': 'disconnect',
|
|
@@ -40,10 +28,19 @@ export class ProviderAlph extends InteractiveSignerProvider {
|
|
|
40
28
|
this.icon = 'https://uni.onekey-asset.com/static/logo/onekey.png';
|
|
41
29
|
this.version = '0.9.4';
|
|
42
30
|
this.onDisconnected = undefined;
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
// NOTE: Do NOT use `private` keyword here — TypeScript compiles it to WeakMap-based
|
|
32
|
+
// access, which breaks when the instance is wrapped in a Proxy by defineWindowProperty().
|
|
33
|
+
this._nodeProvider = undefined;
|
|
34
|
+
this._explorerProvider = undefined;
|
|
45
35
|
this._base = new ProviderAlphBase(Object.assign(Object.assign({}, props), { bridge: props.bridge || getOrCreateExtInjectedJsBridge({ timeout: props.timeout }) }));
|
|
46
36
|
this.version = this._base.version;
|
|
37
|
+
// Create proxy providers eagerly in the constructor.
|
|
38
|
+
// defineWindowProperty() wraps the instance in a Proxy whose defineProperty
|
|
39
|
+
// trap silently blocks property assignments not in its whitelist.
|
|
40
|
+
// Lazy assignment in the getter (this._nodeProvider = ...) is swallowed
|
|
41
|
+
// by that trap, so we must set these before the Proxy wrapping happens.
|
|
42
|
+
this._nodeProvider = this._createProviderProxy('alph_nodeProvider_request');
|
|
43
|
+
this._explorerProvider = this._createProviderProxy('alph_explorerProvider_request');
|
|
47
44
|
this._registerEvents();
|
|
48
45
|
}
|
|
49
46
|
bridgeRequest(data) {
|
|
@@ -161,16 +158,59 @@ export class ProviderAlph extends InteractiveSignerProvider {
|
|
|
161
158
|
return this.bridgeRequest({ method: 'unsafeEnable', params });
|
|
162
159
|
}
|
|
163
160
|
get nodeProvider() {
|
|
164
|
-
|
|
165
|
-
__classPrivateFieldSet(this, _ProviderAlph_nodeProvider, new NodeProvider('https://node.mainnet.alephium.org'), "f");
|
|
166
|
-
}
|
|
167
|
-
return __classPrivateFieldGet(this, _ProviderAlph_nodeProvider, "f");
|
|
161
|
+
return this._nodeProvider;
|
|
168
162
|
}
|
|
169
163
|
get explorerProvider() {
|
|
170
|
-
|
|
171
|
-
|
|
164
|
+
return this._explorerProvider;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Create a two-level Proxy that forwards all property access to the App side
|
|
168
|
+
* via bridge, where the real NodeProvider/ExplorerProvider executes the call.
|
|
169
|
+
*
|
|
170
|
+
* Handles three usage patterns:
|
|
171
|
+
* 1. provider.namespace.method(...args) -- e.g. nodeProvider.addresses.getAddressesAddressBalance('T...')
|
|
172
|
+
* 2. provider.directMethod(...args) -- e.g. nodeProvider.fetchFungibleTokenMetaData(tokenId)
|
|
173
|
+
* 3. provider.request(args) -- low-level API
|
|
174
|
+
*/
|
|
175
|
+
// eslint-disable-next-line class-methods-use-this
|
|
176
|
+
_sanitizeBridgeParams(value) {
|
|
177
|
+
if (typeof value === 'bigint')
|
|
178
|
+
return value.toString();
|
|
179
|
+
if (Array.isArray(value))
|
|
180
|
+
return value.map((v) => this._sanitizeBridgeParams(v));
|
|
181
|
+
if (value !== null && typeof value === 'object') {
|
|
182
|
+
const out = {};
|
|
183
|
+
for (const [k, v] of Object.entries(value)) {
|
|
184
|
+
out[k] = this._sanitizeBridgeParams(v);
|
|
185
|
+
}
|
|
186
|
+
return out;
|
|
172
187
|
}
|
|
173
|
-
return
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
_createProviderProxy(bridgeMethod) {
|
|
191
|
+
const bridge = this.bridgeRequest.bind(this);
|
|
192
|
+
const sanitize = this._sanitizeBridgeParams.bind(this);
|
|
193
|
+
const forward = (args) => bridge({ method: bridgeMethod, params: sanitize(args) });
|
|
194
|
+
return new Proxy(Object.create(null), {
|
|
195
|
+
get(_, prop) {
|
|
196
|
+
if (typeof prop !== 'string' || prop === 'then' || prop === 'toJSON')
|
|
197
|
+
return undefined;
|
|
198
|
+
// request() — standard low-level API: provider.request({ path, method, params })
|
|
199
|
+
if (prop === 'request')
|
|
200
|
+
return forward;
|
|
201
|
+
// Return a callable Proxy:
|
|
202
|
+
// - Called directly → direct method: provider.fetchFungibleTokenMetaData(tokenId)
|
|
203
|
+
// - Property access → namespace.method: provider.addresses.getBalance(addr)
|
|
204
|
+
const directCall = (...args) => forward({ path: prop, params: args });
|
|
205
|
+
return new Proxy(directCall, {
|
|
206
|
+
get(_, method) {
|
|
207
|
+
if (typeof method !== 'string' || method === 'then')
|
|
208
|
+
return undefined;
|
|
209
|
+
return (...args) => forward({ path: prop, method, params: args });
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
},
|
|
213
|
+
});
|
|
174
214
|
}
|
|
175
215
|
unsafeGetSelectedAccount() {
|
|
176
216
|
return this.bridgeRequest({ method: 'unsafeGetSelectedAccount' });
|
|
@@ -218,4 +258,3 @@ export class ProviderAlph extends InteractiveSignerProvider {
|
|
|
218
258
|
});
|
|
219
259
|
}
|
|
220
260
|
}
|
|
221
|
-
_ProviderAlph_nodeProvider = new WeakMap(), _ProviderAlph_explorerProvider = new WeakMap();
|
|
@@ -8,18 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
-
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");
|
|
14
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
-
};
|
|
16
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
17
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
18
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
19
|
-
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");
|
|
20
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
21
|
-
};
|
|
22
|
-
var _ProviderAlph_nodeProvider, _ProviderAlph_explorerProvider;
|
|
23
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
12
|
exports.ProviderAlph = void 0;
|
|
25
13
|
const extension_bridge_injected_1 = require("@onekeyfe/extension-bridge-injected");
|
|
@@ -43,10 +31,19 @@ class ProviderAlph extends web3_1.InteractiveSignerProvider {
|
|
|
43
31
|
this.icon = 'https://uni.onekey-asset.com/static/logo/onekey.png';
|
|
44
32
|
this.version = '0.9.4';
|
|
45
33
|
this.onDisconnected = undefined;
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
// NOTE: Do NOT use `private` keyword here — TypeScript compiles it to WeakMap-based
|
|
35
|
+
// access, which breaks when the instance is wrapped in a Proxy by defineWindowProperty().
|
|
36
|
+
this._nodeProvider = undefined;
|
|
37
|
+
this._explorerProvider = undefined;
|
|
48
38
|
this._base = new ProviderAlphBase_1.ProviderAlphBase(Object.assign(Object.assign({}, props), { bridge: props.bridge || (0, extension_bridge_injected_1.getOrCreateExtInjectedJsBridge)({ timeout: props.timeout }) }));
|
|
49
39
|
this.version = this._base.version;
|
|
40
|
+
// Create proxy providers eagerly in the constructor.
|
|
41
|
+
// defineWindowProperty() wraps the instance in a Proxy whose defineProperty
|
|
42
|
+
// trap silently blocks property assignments not in its whitelist.
|
|
43
|
+
// Lazy assignment in the getter (this._nodeProvider = ...) is swallowed
|
|
44
|
+
// by that trap, so we must set these before the Proxy wrapping happens.
|
|
45
|
+
this._nodeProvider = this._createProviderProxy('alph_nodeProvider_request');
|
|
46
|
+
this._explorerProvider = this._createProviderProxy('alph_explorerProvider_request');
|
|
50
47
|
this._registerEvents();
|
|
51
48
|
}
|
|
52
49
|
bridgeRequest(data) {
|
|
@@ -164,16 +161,59 @@ class ProviderAlph extends web3_1.InteractiveSignerProvider {
|
|
|
164
161
|
return this.bridgeRequest({ method: 'unsafeEnable', params });
|
|
165
162
|
}
|
|
166
163
|
get nodeProvider() {
|
|
167
|
-
|
|
168
|
-
__classPrivateFieldSet(this, _ProviderAlph_nodeProvider, new web3_1.NodeProvider('https://node.mainnet.alephium.org'), "f");
|
|
169
|
-
}
|
|
170
|
-
return __classPrivateFieldGet(this, _ProviderAlph_nodeProvider, "f");
|
|
164
|
+
return this._nodeProvider;
|
|
171
165
|
}
|
|
172
166
|
get explorerProvider() {
|
|
173
|
-
|
|
174
|
-
|
|
167
|
+
return this._explorerProvider;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a two-level Proxy that forwards all property access to the App side
|
|
171
|
+
* via bridge, where the real NodeProvider/ExplorerProvider executes the call.
|
|
172
|
+
*
|
|
173
|
+
* Handles three usage patterns:
|
|
174
|
+
* 1. provider.namespace.method(...args) -- e.g. nodeProvider.addresses.getAddressesAddressBalance('T...')
|
|
175
|
+
* 2. provider.directMethod(...args) -- e.g. nodeProvider.fetchFungibleTokenMetaData(tokenId)
|
|
176
|
+
* 3. provider.request(args) -- low-level API
|
|
177
|
+
*/
|
|
178
|
+
// eslint-disable-next-line class-methods-use-this
|
|
179
|
+
_sanitizeBridgeParams(value) {
|
|
180
|
+
if (typeof value === 'bigint')
|
|
181
|
+
return value.toString();
|
|
182
|
+
if (Array.isArray(value))
|
|
183
|
+
return value.map((v) => this._sanitizeBridgeParams(v));
|
|
184
|
+
if (value !== null && typeof value === 'object') {
|
|
185
|
+
const out = {};
|
|
186
|
+
for (const [k, v] of Object.entries(value)) {
|
|
187
|
+
out[k] = this._sanitizeBridgeParams(v);
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
175
190
|
}
|
|
176
|
-
return
|
|
191
|
+
return value;
|
|
192
|
+
}
|
|
193
|
+
_createProviderProxy(bridgeMethod) {
|
|
194
|
+
const bridge = this.bridgeRequest.bind(this);
|
|
195
|
+
const sanitize = this._sanitizeBridgeParams.bind(this);
|
|
196
|
+
const forward = (args) => bridge({ method: bridgeMethod, params: sanitize(args) });
|
|
197
|
+
return new Proxy(Object.create(null), {
|
|
198
|
+
get(_, prop) {
|
|
199
|
+
if (typeof prop !== 'string' || prop === 'then' || prop === 'toJSON')
|
|
200
|
+
return undefined;
|
|
201
|
+
// request() — standard low-level API: provider.request({ path, method, params })
|
|
202
|
+
if (prop === 'request')
|
|
203
|
+
return forward;
|
|
204
|
+
// Return a callable Proxy:
|
|
205
|
+
// - Called directly → direct method: provider.fetchFungibleTokenMetaData(tokenId)
|
|
206
|
+
// - Property access → namespace.method: provider.addresses.getBalance(addr)
|
|
207
|
+
const directCall = (...args) => forward({ path: prop, params: args });
|
|
208
|
+
return new Proxy(directCall, {
|
|
209
|
+
get(_, method) {
|
|
210
|
+
if (typeof method !== 'string' || method === 'then')
|
|
211
|
+
return undefined;
|
|
212
|
+
return (...args) => forward({ path: prop, method, params: args });
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
});
|
|
177
217
|
}
|
|
178
218
|
unsafeGetSelectedAccount() {
|
|
179
219
|
return this.bridgeRequest({ method: 'unsafeGetSelectedAccount' });
|
|
@@ -222,4 +262,3 @@ class ProviderAlph extends web3_1.InteractiveSignerProvider {
|
|
|
222
262
|
}
|
|
223
263
|
}
|
|
224
264
|
exports.ProviderAlph = ProviderAlph;
|
|
225
|
-
_ProviderAlph_nodeProvider = new WeakMap(), _ProviderAlph_explorerProvider = new WeakMap();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/onekey-alph-provider",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.63",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"cross-inpage-provider"
|
|
6
6
|
],
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
"@alephium/get-extension-wallet": "^1.5.2",
|
|
32
32
|
"@alephium/walletconnect-provider": "^1.5.2",
|
|
33
33
|
"@alephium/web3": "^1.5.2",
|
|
34
|
-
"@onekeyfe/cross-inpage-provider-core": "2.2.
|
|
35
|
-
"@onekeyfe/cross-inpage-provider-errors": "2.2.
|
|
36
|
-
"@onekeyfe/cross-inpage-provider-types": "2.2.
|
|
37
|
-
"@onekeyfe/extension-bridge-injected": "2.2.
|
|
34
|
+
"@onekeyfe/cross-inpage-provider-core": "2.2.63",
|
|
35
|
+
"@onekeyfe/cross-inpage-provider-errors": "2.2.63",
|
|
36
|
+
"@onekeyfe/cross-inpage-provider-types": "2.2.63",
|
|
37
|
+
"@onekeyfe/extension-bridge-injected": "2.2.63",
|
|
38
38
|
"cipher-base": "^1.0.6",
|
|
39
39
|
"elliptic": "^6.6.1",
|
|
40
40
|
"patch-package": "^8.0.0",
|
|
41
41
|
"pbkdf2": "^3.1.3",
|
|
42
42
|
"sha.js": "^2.4.12"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "321fff7491b90508f1adb921307e01539a867152"
|
|
45
45
|
}
|