@xian-tech/provider 0.1.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 +46 -0
- package/dist/discovery.d.ts +85 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +257 -0
- package/dist/discovery.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/provider.d.ts +142 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +295 -0
- package/dist/provider.js.map +1 -0
- package/package.json +26 -0
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @xian-tech/provider
|
|
2
|
+
|
|
3
|
+
This package defines the browser wallet provider surface for Xian and ships a
|
|
4
|
+
simple in-memory provider plus injected-wallet discovery helpers.
|
|
5
|
+
|
|
6
|
+
It includes:
|
|
7
|
+
|
|
8
|
+
- `request(...)`-based provider interface
|
|
9
|
+
- account and chain event handling
|
|
10
|
+
- a reference provider that delegates signing and submission to `@xian-tech/client`
|
|
11
|
+
- browser injection and discovery helpers for `window.xian` and
|
|
12
|
+
`window.xianProviders`
|
|
13
|
+
- a dapp-facing wrapper around an injected provider
|
|
14
|
+
|
|
15
|
+
Core helpers:
|
|
16
|
+
|
|
17
|
+
- `registerInjectedXianProvider(...)`: wallet-side registration into the global
|
|
18
|
+
browser namespace
|
|
19
|
+
- `listInjectedXianProviders(...)`: enumerate known injected wallets
|
|
20
|
+
- `getInjectedXianProvider(...)`: resolve the default or matching injected
|
|
21
|
+
wallet
|
|
22
|
+
- `waitForInjectedXianProvider(...)`: await late wallet injection via the
|
|
23
|
+
`xian#initialized` event
|
|
24
|
+
- `InjectedXianWallet`: dapp-facing convenience wrapper for connect, chain,
|
|
25
|
+
wallet info, asset watching, transaction preparation, sign, and send flows
|
|
26
|
+
- `ProviderBackedXianSigner`: adapter that lets provider-backed wallets fit
|
|
27
|
+
signer-based APIs that only need `getAddress()` and `signMessage()`
|
|
28
|
+
|
|
29
|
+
Current provider request methods include:
|
|
30
|
+
|
|
31
|
+
- `xian_getWalletInfo`
|
|
32
|
+
- `xian_requestAccounts`
|
|
33
|
+
- `xian_accounts`
|
|
34
|
+
- `xian_chainId`
|
|
35
|
+
- `xian_switchChain`
|
|
36
|
+
- `xian_watchAsset`
|
|
37
|
+
- `xian_prepareTransaction`
|
|
38
|
+
- `xian_signMessage`
|
|
39
|
+
- `xian_signTransaction`
|
|
40
|
+
- `xian_sendTransaction`
|
|
41
|
+
- `xian_sendCall`
|
|
42
|
+
|
|
43
|
+
It does not own:
|
|
44
|
+
|
|
45
|
+
- framework bindings
|
|
46
|
+
- production wallet custody flows
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { BroadcastMode, TransactionSubmission, XianTransactionIntent, XianProvider, XianProviderRequest, XianWalletInfo, XianSignedTransaction, XianSigner, XianWatchAssetRequest, XianUnsignedTransaction } from "./provider";
|
|
2
|
+
export declare const XIAN_INITIALIZED_EVENT = "xian#initialized";
|
|
3
|
+
export interface XianWalletMetadata {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
rdns?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface InjectedXianProviderRecord {
|
|
10
|
+
metadata: XianWalletMetadata;
|
|
11
|
+
provider: XianProvider;
|
|
12
|
+
}
|
|
13
|
+
export interface XianProviderNamespace {
|
|
14
|
+
provider?: XianProvider;
|
|
15
|
+
providers: InjectedXianProviderRecord[];
|
|
16
|
+
}
|
|
17
|
+
export interface XianInjectionTarget extends EventTarget {
|
|
18
|
+
xian?: XianProviderNamespace;
|
|
19
|
+
xianProviders?: InjectedXianProviderRecord[];
|
|
20
|
+
}
|
|
21
|
+
export interface RegisterInjectedXianProviderOptions {
|
|
22
|
+
metadata: XianWalletMetadata;
|
|
23
|
+
provider: XianProvider;
|
|
24
|
+
target?: XianInjectionTarget;
|
|
25
|
+
setAsDefault?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface FindInjectedXianProviderOptions {
|
|
28
|
+
id?: string;
|
|
29
|
+
target?: XianInjectionTarget;
|
|
30
|
+
predicate?(record: InjectedXianProviderRecord): boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface WaitForInjectedXianProviderOptions extends FindInjectedXianProviderOptions {
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
}
|
|
35
|
+
export declare function registerInjectedXianProvider(options: RegisterInjectedXianProviderOptions): InjectedXianProviderRecord;
|
|
36
|
+
export declare function listInjectedXianProviders(target?: XianInjectionTarget): InjectedXianProviderRecord[];
|
|
37
|
+
export declare function getInjectedXianProvider(options?: FindInjectedXianProviderOptions): InjectedXianProviderRecord | undefined;
|
|
38
|
+
export declare function waitForInjectedXianProvider(options?: WaitForInjectedXianProviderOptions): Promise<InjectedXianProviderRecord | undefined>;
|
|
39
|
+
export declare class ProviderBackedXianSigner implements XianSigner {
|
|
40
|
+
private readonly wallet;
|
|
41
|
+
constructor(wallet: InjectedXianWallet);
|
|
42
|
+
getAddress(): Promise<string>;
|
|
43
|
+
signMessage(message: string): Promise<string>;
|
|
44
|
+
}
|
|
45
|
+
export declare class InjectedXianWallet {
|
|
46
|
+
readonly provider: XianProvider;
|
|
47
|
+
readonly metadata?: XianWalletMetadata | undefined;
|
|
48
|
+
constructor(provider: XianProvider, metadata?: XianWalletMetadata | undefined);
|
|
49
|
+
static fromRecord(record: InjectedXianProviderRecord): InjectedXianWallet;
|
|
50
|
+
static getInjected(options?: FindInjectedXianProviderOptions): InjectedXianWallet | undefined;
|
|
51
|
+
static waitForInjected(options?: WaitForInjectedXianProviderOptions): Promise<InjectedXianWallet | undefined>;
|
|
52
|
+
request<TResponse = unknown>(args: XianProviderRequest): Promise<TResponse>;
|
|
53
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
54
|
+
removeListener(event: string, listener: (...args: unknown[]) => void): void;
|
|
55
|
+
connect(): Promise<string[]>;
|
|
56
|
+
disconnect(): Promise<unknown>;
|
|
57
|
+
getAccounts(): Promise<string[]>;
|
|
58
|
+
getChainId(): Promise<string>;
|
|
59
|
+
getWalletInfo(): Promise<XianWalletInfo>;
|
|
60
|
+
switchChain(chainId: string): Promise<unknown>;
|
|
61
|
+
watchAsset(request: XianWatchAssetRequest): Promise<boolean>;
|
|
62
|
+
signMessage(message: string): Promise<string>;
|
|
63
|
+
prepareTransaction(intent: XianTransactionIntent): Promise<XianUnsignedTransaction>;
|
|
64
|
+
signTransaction(tx: XianUnsignedTransaction): Promise<XianSignedTransaction>;
|
|
65
|
+
sendTransaction(tx: XianUnsignedTransaction, options?: {
|
|
66
|
+
mode?: BroadcastMode;
|
|
67
|
+
waitForTx?: boolean;
|
|
68
|
+
timeoutMs?: number;
|
|
69
|
+
pollIntervalMs?: number;
|
|
70
|
+
}): Promise<TransactionSubmission>;
|
|
71
|
+
sendCall(intent: XianTransactionIntent, options?: {
|
|
72
|
+
mode?: BroadcastMode;
|
|
73
|
+
waitForTx?: boolean;
|
|
74
|
+
timeoutMs?: number;
|
|
75
|
+
pollIntervalMs?: number;
|
|
76
|
+
}): Promise<TransactionSubmission>;
|
|
77
|
+
asSigner(): ProviderBackedXianSigner;
|
|
78
|
+
}
|
|
79
|
+
declare global {
|
|
80
|
+
interface Window {
|
|
81
|
+
xian?: XianProviderNamespace;
|
|
82
|
+
xianProviders?: InjectedXianProviderRecord[];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { ProviderUnauthorizedError } from "./errors";
|
|
2
|
+
export const XIAN_INITIALIZED_EVENT = "xian#initialized";
|
|
3
|
+
function getDefaultTarget(target) {
|
|
4
|
+
if (target) {
|
|
5
|
+
return target;
|
|
6
|
+
}
|
|
7
|
+
if (typeof window !== "undefined") {
|
|
8
|
+
return window;
|
|
9
|
+
}
|
|
10
|
+
throw new TypeError("window is not available; pass an explicit injection target");
|
|
11
|
+
}
|
|
12
|
+
function ensureNamespace(target) {
|
|
13
|
+
const providers = target.xianProviders ?? target.xian?.providers ?? [];
|
|
14
|
+
target.xianProviders = providers;
|
|
15
|
+
if (!target.xian) {
|
|
16
|
+
target.xian = { providers };
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
target.xian.providers = providers;
|
|
20
|
+
}
|
|
21
|
+
return target.xian;
|
|
22
|
+
}
|
|
23
|
+
function matchesFindOptions(record, options) {
|
|
24
|
+
if (!options) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (options.id && record.metadata.id !== options.id) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (options.predicate && !options.predicate(record)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function createInitializedEvent(record) {
|
|
36
|
+
if (typeof CustomEvent === "function") {
|
|
37
|
+
return new CustomEvent(XIAN_INITIALIZED_EVENT, {
|
|
38
|
+
detail: record
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const event = new Event(XIAN_INITIALIZED_EVENT);
|
|
42
|
+
Object.defineProperty(event, "detail", {
|
|
43
|
+
value: record
|
|
44
|
+
});
|
|
45
|
+
return event;
|
|
46
|
+
}
|
|
47
|
+
export function registerInjectedXianProvider(options) {
|
|
48
|
+
const target = getDefaultTarget(options.target);
|
|
49
|
+
const namespace = ensureNamespace(target);
|
|
50
|
+
const record = {
|
|
51
|
+
metadata: options.metadata,
|
|
52
|
+
provider: options.provider
|
|
53
|
+
};
|
|
54
|
+
const providers = target.xianProviders ?? [];
|
|
55
|
+
const existingIndex = providers.findIndex((entry) => entry.provider === options.provider ||
|
|
56
|
+
entry.metadata.id === options.metadata.id);
|
|
57
|
+
const replacedDefault = existingIndex >= 0 && providers[existingIndex]?.provider === namespace.provider;
|
|
58
|
+
if (existingIndex >= 0) {
|
|
59
|
+
providers[existingIndex] = record;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
providers.push(record);
|
|
63
|
+
}
|
|
64
|
+
target.xianProviders = providers;
|
|
65
|
+
namespace.providers = providers;
|
|
66
|
+
const shouldSetDefault = options.setAsDefault === true ||
|
|
67
|
+
(options.setAsDefault !== false && namespace.provider == null) ||
|
|
68
|
+
replacedDefault;
|
|
69
|
+
if (shouldSetDefault) {
|
|
70
|
+
namespace.provider = options.provider;
|
|
71
|
+
}
|
|
72
|
+
else if (namespace.provider &&
|
|
73
|
+
!providers.some((entry) => entry.provider === namespace.provider)) {
|
|
74
|
+
namespace.provider = providers[0]?.provider;
|
|
75
|
+
}
|
|
76
|
+
target.dispatchEvent(createInitializedEvent(record));
|
|
77
|
+
return record;
|
|
78
|
+
}
|
|
79
|
+
export function listInjectedXianProviders(target) {
|
|
80
|
+
const resolvedTarget = getDefaultTarget(target);
|
|
81
|
+
const namespace = ensureNamespace(resolvedTarget);
|
|
82
|
+
return [...namespace.providers];
|
|
83
|
+
}
|
|
84
|
+
export function getInjectedXianProvider(options) {
|
|
85
|
+
const target = getDefaultTarget(options?.target);
|
|
86
|
+
const namespace = ensureNamespace(target);
|
|
87
|
+
const providers = listInjectedXianProviders(target);
|
|
88
|
+
if (!options?.id && !options?.predicate && namespace.provider) {
|
|
89
|
+
const defaultRecord = providers.find((record) => record.provider === namespace.provider);
|
|
90
|
+
if (defaultRecord) {
|
|
91
|
+
return defaultRecord;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return providers.find((record) => matchesFindOptions(record, options));
|
|
95
|
+
}
|
|
96
|
+
export async function waitForInjectedXianProvider(options) {
|
|
97
|
+
const target = getDefaultTarget(options?.target);
|
|
98
|
+
const existing = getInjectedXianProvider(options);
|
|
99
|
+
if (existing) {
|
|
100
|
+
return existing;
|
|
101
|
+
}
|
|
102
|
+
const timeoutMs = options?.timeoutMs ?? 0;
|
|
103
|
+
return new Promise((resolve) => {
|
|
104
|
+
let timeoutId = null;
|
|
105
|
+
const cleanup = () => {
|
|
106
|
+
target.removeEventListener(XIAN_INITIALIZED_EVENT, handleInitialized);
|
|
107
|
+
if (timeoutId) {
|
|
108
|
+
clearTimeout(timeoutId);
|
|
109
|
+
timeoutId = null;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const handleInitialized = (event) => {
|
|
113
|
+
const detail = event.detail;
|
|
114
|
+
if (detail && matchesFindOptions(detail, options)) {
|
|
115
|
+
cleanup();
|
|
116
|
+
resolve(detail);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
target.addEventListener(XIAN_INITIALIZED_EVENT, handleInitialized);
|
|
120
|
+
if (timeoutMs > 0) {
|
|
121
|
+
timeoutId = setTimeout(() => {
|
|
122
|
+
cleanup();
|
|
123
|
+
resolve(undefined);
|
|
124
|
+
}, timeoutMs);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
export class ProviderBackedXianSigner {
|
|
129
|
+
wallet;
|
|
130
|
+
constructor(wallet) {
|
|
131
|
+
this.wallet = wallet;
|
|
132
|
+
}
|
|
133
|
+
async getAddress() {
|
|
134
|
+
const [account] = await this.wallet.connect();
|
|
135
|
+
if (!account) {
|
|
136
|
+
throw new ProviderUnauthorizedError("wallet returned no accounts");
|
|
137
|
+
}
|
|
138
|
+
return account;
|
|
139
|
+
}
|
|
140
|
+
signMessage(message) {
|
|
141
|
+
return this.wallet.signMessage(message);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export class InjectedXianWallet {
|
|
145
|
+
provider;
|
|
146
|
+
metadata;
|
|
147
|
+
constructor(provider, metadata) {
|
|
148
|
+
this.provider = provider;
|
|
149
|
+
this.metadata = metadata;
|
|
150
|
+
}
|
|
151
|
+
static fromRecord(record) {
|
|
152
|
+
return new InjectedXianWallet(record.provider, record.metadata);
|
|
153
|
+
}
|
|
154
|
+
static getInjected(options) {
|
|
155
|
+
const record = getInjectedXianProvider(options);
|
|
156
|
+
return record ? InjectedXianWallet.fromRecord(record) : undefined;
|
|
157
|
+
}
|
|
158
|
+
static async waitForInjected(options) {
|
|
159
|
+
const record = await waitForInjectedXianProvider(options);
|
|
160
|
+
return record ? InjectedXianWallet.fromRecord(record) : undefined;
|
|
161
|
+
}
|
|
162
|
+
request(args) {
|
|
163
|
+
return this.provider.request(args);
|
|
164
|
+
}
|
|
165
|
+
on(event, listener) {
|
|
166
|
+
this.provider.on(event, listener);
|
|
167
|
+
}
|
|
168
|
+
removeListener(event, listener) {
|
|
169
|
+
this.provider.removeListener(event, listener);
|
|
170
|
+
}
|
|
171
|
+
connect() {
|
|
172
|
+
return this.request({ method: "xian_requestAccounts" });
|
|
173
|
+
}
|
|
174
|
+
disconnect() {
|
|
175
|
+
return this.request({ method: "xian_disconnect" });
|
|
176
|
+
}
|
|
177
|
+
getAccounts() {
|
|
178
|
+
return this.request({ method: "xian_accounts" });
|
|
179
|
+
}
|
|
180
|
+
getChainId() {
|
|
181
|
+
return this.request({ method: "xian_chainId" });
|
|
182
|
+
}
|
|
183
|
+
async getWalletInfo() {
|
|
184
|
+
const walletInfo = await this.request({
|
|
185
|
+
method: "xian_getWalletInfo"
|
|
186
|
+
});
|
|
187
|
+
if (this.metadata && walletInfo.wallet == null) {
|
|
188
|
+
return {
|
|
189
|
+
...walletInfo,
|
|
190
|
+
wallet: this.metadata
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return walletInfo;
|
|
194
|
+
}
|
|
195
|
+
switchChain(chainId) {
|
|
196
|
+
return this.request({
|
|
197
|
+
method: "xian_switchChain",
|
|
198
|
+
params: [{ chainId }]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
watchAsset(request) {
|
|
202
|
+
return this.request({
|
|
203
|
+
method: "xian_watchAsset",
|
|
204
|
+
params: [request]
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
signMessage(message) {
|
|
208
|
+
return this.request({
|
|
209
|
+
method: "xian_signMessage",
|
|
210
|
+
params: [{ message }]
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
prepareTransaction(intent) {
|
|
214
|
+
return this.request({
|
|
215
|
+
method: "xian_prepareTransaction",
|
|
216
|
+
params: [{ intent }]
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
signTransaction(tx) {
|
|
220
|
+
return this.request({
|
|
221
|
+
method: "xian_signTransaction",
|
|
222
|
+
params: [{ tx }]
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
sendTransaction(tx, options) {
|
|
226
|
+
return this.request({
|
|
227
|
+
method: "xian_sendTransaction",
|
|
228
|
+
params: [
|
|
229
|
+
{
|
|
230
|
+
tx,
|
|
231
|
+
mode: options?.mode,
|
|
232
|
+
waitForTx: options?.waitForTx,
|
|
233
|
+
timeoutMs: options?.timeoutMs,
|
|
234
|
+
pollIntervalMs: options?.pollIntervalMs
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
sendCall(intent, options) {
|
|
240
|
+
return this.request({
|
|
241
|
+
method: "xian_sendCall",
|
|
242
|
+
params: [
|
|
243
|
+
{
|
|
244
|
+
intent,
|
|
245
|
+
mode: options?.mode,
|
|
246
|
+
waitForTx: options?.waitForTx,
|
|
247
|
+
timeoutMs: options?.timeoutMs,
|
|
248
|
+
pollIntervalMs: options?.pollIntervalMs
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
asSigner() {
|
|
254
|
+
return new ProviderBackedXianSigner(this);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class XianProviderError extends Error {
|
|
2
|
+
readonly code: number;
|
|
3
|
+
readonly data?: unknown;
|
|
4
|
+
constructor(code: number, message: string, data?: unknown);
|
|
5
|
+
}
|
|
6
|
+
export declare class ProviderDisconnectedError extends XianProviderError {
|
|
7
|
+
constructor(message?: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ProviderChainMismatchError extends XianProviderError {
|
|
10
|
+
constructor(message?: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class ProviderUnauthorizedError extends XianProviderError {
|
|
13
|
+
constructor(message?: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class ProviderUnsupportedMethodError extends XianProviderError {
|
|
16
|
+
constructor(method: string);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,OAAO,SAA6B;CAGjD;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;gBACnD,OAAO,SAA+C;CAGnE;AAED,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,OAAO,SAA+B;CAGnD;AAED,qBAAa,8BAA+B,SAAQ,iBAAiB;gBACvD,MAAM,EAAE,MAAM;CAG3B"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export class XianProviderError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
data;
|
|
4
|
+
constructor(code, message, data) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = new.target.name;
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.data = data;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class ProviderDisconnectedError extends XianProviderError {
|
|
12
|
+
constructor(message = "provider is disconnected") {
|
|
13
|
+
super(4900, message);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class ProviderChainMismatchError extends XianProviderError {
|
|
17
|
+
constructor(message = "provider is connected to a different chain") {
|
|
18
|
+
super(4901, message);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class ProviderUnauthorizedError extends XianProviderError {
|
|
22
|
+
constructor(message = "provider is not authorized") {
|
|
23
|
+
super(4100, message);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class ProviderUnsupportedMethodError extends XianProviderError {
|
|
27
|
+
constructor(method) {
|
|
28
|
+
super(4200, `unsupported provider method: ${method}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAS;IACb,IAAI,CAAW;IAExB,YAAY,IAAY,EAAE,OAAe,EAAE,IAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,OAAO,GAAG,0BAA0B;QAC9C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IAC/D,YAAY,OAAO,GAAG,4CAA4C;QAChE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,iBAAiB;IACnE,YAAY,MAAc;QACxB,KAAK,CAAC,IAAI,EAAE,gCAAgC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { InMemoryXianProvider, type InMemoryXianProviderOptions, type BroadcastMode, type TransactionSubmission, type XianNumber, type XianProvider, type XianProviderClient, type XianProviderRequest, type XianSignedTransaction, type XianSigner, type XianTransactionIntent, type XianTxPayload, type XianWalletCapabilities, type XianWalletDescriptor, type XianWalletInfo, type XianWatchedAsset, type XianWatchAssetRequest, type XianUnsignedTransaction } from "./provider";
|
|
2
|
+
export { InjectedXianWallet, ProviderBackedXianSigner, XIAN_INITIALIZED_EVENT, getInjectedXianProvider, listInjectedXianProviders, registerInjectedXianProvider, waitForInjectedXianProvider, type FindInjectedXianProviderOptions, type InjectedXianProviderRecord, type RegisterInjectedXianProviderOptions, type WaitForInjectedXianProviderOptions, type XianInjectionTarget, type XianProviderNamespace, type XianWalletMetadata } from "./discovery";
|
|
3
|
+
export { ProviderChainMismatchError, ProviderDisconnectedError, ProviderUnauthorizedError, ProviderUnsupportedMethodError, XianProviderError } from "./errors";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,EACvC,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { InMemoryXianProvider } from "./provider";
|
|
2
|
+
export { InjectedXianWallet, ProviderBackedXianSigner, XIAN_INITIALIZED_EVENT, getInjectedXianProvider, listInjectedXianProviders, registerInjectedXianProvider, waitForInjectedXianProvider } from "./discovery";
|
|
3
|
+
export { ProviderChainMismatchError, ProviderDisconnectedError, ProviderUnauthorizedError, ProviderUnsupportedMethodError, XianProviderError } from "./errors";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAkBrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAQ5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
type Listener = (...args: unknown[]) => void;
|
|
2
|
+
export type BroadcastMode = "async" | "checktx" | "commit";
|
|
3
|
+
export type XianNumber = number | bigint;
|
|
4
|
+
export interface XianSigner {
|
|
5
|
+
getAddress?(): Promise<string> | string;
|
|
6
|
+
signMessage(message: string): Promise<string> | string;
|
|
7
|
+
}
|
|
8
|
+
export interface XianTxPayload {
|
|
9
|
+
chain_id: string;
|
|
10
|
+
contract: string;
|
|
11
|
+
function: string;
|
|
12
|
+
kwargs: Record<string, unknown>;
|
|
13
|
+
nonce: XianNumber;
|
|
14
|
+
sender: string;
|
|
15
|
+
stamps_supplied: XianNumber;
|
|
16
|
+
}
|
|
17
|
+
export interface XianUnsignedTransaction {
|
|
18
|
+
payload: XianTxPayload;
|
|
19
|
+
}
|
|
20
|
+
export interface XianSignedTransaction {
|
|
21
|
+
payload: XianTxPayload;
|
|
22
|
+
metadata: {
|
|
23
|
+
signature: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface TransactionSubmission {
|
|
27
|
+
submitted: boolean;
|
|
28
|
+
accepted: boolean | null;
|
|
29
|
+
finalized: boolean;
|
|
30
|
+
txHash?: string;
|
|
31
|
+
message?: unknown;
|
|
32
|
+
mode: BroadcastMode;
|
|
33
|
+
nonce: XianNumber;
|
|
34
|
+
stampsSupplied: XianNumber;
|
|
35
|
+
response: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
export interface XianWalletCapabilities {
|
|
38
|
+
getWalletInfo: boolean;
|
|
39
|
+
prepareTransaction: boolean;
|
|
40
|
+
signMessage: boolean;
|
|
41
|
+
signTransaction: boolean;
|
|
42
|
+
sendTransaction: boolean;
|
|
43
|
+
sendCall: boolean;
|
|
44
|
+
switchChain: boolean;
|
|
45
|
+
watchAsset: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface XianWalletDescriptor {
|
|
48
|
+
id?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
icon?: string;
|
|
51
|
+
rdns?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface XianWalletInfo {
|
|
54
|
+
accounts: string[];
|
|
55
|
+
selectedAccount?: string;
|
|
56
|
+
chainId?: string;
|
|
57
|
+
connected: boolean;
|
|
58
|
+
locked: boolean;
|
|
59
|
+
wallet?: XianWalletDescriptor;
|
|
60
|
+
capabilities: XianWalletCapabilities;
|
|
61
|
+
}
|
|
62
|
+
export interface XianWatchedAsset {
|
|
63
|
+
contract: string;
|
|
64
|
+
name?: string;
|
|
65
|
+
symbol?: string;
|
|
66
|
+
icon?: string;
|
|
67
|
+
decimals?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface XianWatchAssetRequest {
|
|
70
|
+
type?: "token";
|
|
71
|
+
options: XianWatchedAsset;
|
|
72
|
+
}
|
|
73
|
+
export interface XianTransactionIntent {
|
|
74
|
+
contract: string;
|
|
75
|
+
function: string;
|
|
76
|
+
kwargs: Record<string, unknown>;
|
|
77
|
+
chainId?: string;
|
|
78
|
+
stamps?: XianNumber | string;
|
|
79
|
+
stampsSupplied?: XianNumber | string;
|
|
80
|
+
}
|
|
81
|
+
export interface XianProviderRequest {
|
|
82
|
+
method: string;
|
|
83
|
+
params?: unknown[] | Record<string, unknown>;
|
|
84
|
+
}
|
|
85
|
+
export interface XianProvider {
|
|
86
|
+
request(args: XianProviderRequest): Promise<unknown>;
|
|
87
|
+
on(event: string, listener: Listener): void;
|
|
88
|
+
removeListener(event: string, listener: Listener): void;
|
|
89
|
+
}
|
|
90
|
+
export interface XianProviderClient {
|
|
91
|
+
getChainId(): Promise<string>;
|
|
92
|
+
buildTx(intent: {
|
|
93
|
+
sender: string;
|
|
94
|
+
contract: string;
|
|
95
|
+
function: string;
|
|
96
|
+
kwargs: Record<string, unknown>;
|
|
97
|
+
chainId?: string;
|
|
98
|
+
stamps?: XianNumber;
|
|
99
|
+
stampsSupplied?: XianNumber;
|
|
100
|
+
}): Promise<XianUnsignedTransaction>;
|
|
101
|
+
signTx(tx: XianUnsignedTransaction, signer: XianSigner): Promise<XianSignedTransaction>;
|
|
102
|
+
broadcastTx(tx: XianSignedTransaction, options?: {
|
|
103
|
+
mode?: BroadcastMode;
|
|
104
|
+
waitForTx?: boolean;
|
|
105
|
+
timeoutMs?: number;
|
|
106
|
+
pollIntervalMs?: number;
|
|
107
|
+
}): Promise<TransactionSubmission>;
|
|
108
|
+
}
|
|
109
|
+
export interface InMemoryXianProviderOptions {
|
|
110
|
+
signer: XianSigner;
|
|
111
|
+
client?: XianProviderClient;
|
|
112
|
+
chainId?: string;
|
|
113
|
+
locked?: boolean;
|
|
114
|
+
watchedAssets?: XianWatchedAsset[];
|
|
115
|
+
onWatchAsset?(asset: XianWatchedAsset): boolean | Promise<boolean>;
|
|
116
|
+
}
|
|
117
|
+
export declare class InMemoryXianProvider implements XianProvider {
|
|
118
|
+
private readonly options;
|
|
119
|
+
private readonly events;
|
|
120
|
+
private readonly watchedAssets;
|
|
121
|
+
private connected;
|
|
122
|
+
private chainId?;
|
|
123
|
+
private locked;
|
|
124
|
+
constructor(options: InMemoryXianProviderOptions);
|
|
125
|
+
on(event: string, listener: Listener): void;
|
|
126
|
+
removeListener(event: string, listener: Listener): void;
|
|
127
|
+
private getAddress;
|
|
128
|
+
private requireUnlocked;
|
|
129
|
+
private ensureChainId;
|
|
130
|
+
private maybeChainId;
|
|
131
|
+
private getCapabilities;
|
|
132
|
+
private getWalletInfo;
|
|
133
|
+
private connect;
|
|
134
|
+
private disconnect;
|
|
135
|
+
private requireConnected;
|
|
136
|
+
private prepareTransaction;
|
|
137
|
+
private normalizeWatchAssetRequest;
|
|
138
|
+
listWatchedAssets(): XianWatchedAsset[];
|
|
139
|
+
request(args: XianProviderRequest): Promise<unknown>;
|
|
140
|
+
}
|
|
141
|
+
export {};
|
|
142
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.js
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { ProviderChainMismatchError, ProviderDisconnectedError, ProviderUnauthorizedError, ProviderUnsupportedMethodError } from "./errors";
|
|
2
|
+
class EventEmitter {
|
|
3
|
+
listeners = new Map();
|
|
4
|
+
on(event, listener) {
|
|
5
|
+
const set = this.listeners.get(event) ?? new Set();
|
|
6
|
+
set.add(listener);
|
|
7
|
+
this.listeners.set(event, set);
|
|
8
|
+
}
|
|
9
|
+
removeListener(event, listener) {
|
|
10
|
+
this.listeners.get(event)?.delete(listener);
|
|
11
|
+
}
|
|
12
|
+
emit(event, ...args) {
|
|
13
|
+
for (const listener of this.listeners.get(event) ?? []) {
|
|
14
|
+
listener(...args);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function firstParamObject(params) {
|
|
19
|
+
if (Array.isArray(params)) {
|
|
20
|
+
const [first] = params;
|
|
21
|
+
return (first ?? {});
|
|
22
|
+
}
|
|
23
|
+
return (params ?? {});
|
|
24
|
+
}
|
|
25
|
+
function isIdentifier(value) {
|
|
26
|
+
return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(value);
|
|
27
|
+
}
|
|
28
|
+
function parseOptionalXianNumber(value, fieldName) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (typeof value === "bigint") {
|
|
33
|
+
if (value < 0n) {
|
|
34
|
+
throw new TypeError(`${fieldName} must be a non-negative integer`);
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
if (typeof value === "number") {
|
|
39
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
40
|
+
throw new TypeError(`${fieldName} must be a non-negative integer`);
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
if (typeof value === "string" && /^\d+$/.test(value)) {
|
|
45
|
+
const parsed = BigInt(value);
|
|
46
|
+
return parsed <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : parsed;
|
|
47
|
+
}
|
|
48
|
+
throw new TypeError(`${fieldName} must be a non-negative integer`);
|
|
49
|
+
}
|
|
50
|
+
export class InMemoryXianProvider {
|
|
51
|
+
options;
|
|
52
|
+
events = new EventEmitter();
|
|
53
|
+
watchedAssets = new Map();
|
|
54
|
+
connected = false;
|
|
55
|
+
chainId;
|
|
56
|
+
locked;
|
|
57
|
+
constructor(options) {
|
|
58
|
+
this.options = options;
|
|
59
|
+
this.chainId = options.chainId;
|
|
60
|
+
this.locked = options.locked ?? false;
|
|
61
|
+
for (const asset of options.watchedAssets ?? []) {
|
|
62
|
+
this.watchedAssets.set(asset.contract, asset);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
on(event, listener) {
|
|
66
|
+
this.events.on(event, listener);
|
|
67
|
+
}
|
|
68
|
+
removeListener(event, listener) {
|
|
69
|
+
this.events.removeListener(event, listener);
|
|
70
|
+
}
|
|
71
|
+
async getAddress() {
|
|
72
|
+
if (typeof this.options.signer.getAddress === "function") {
|
|
73
|
+
return this.options.signer.getAddress();
|
|
74
|
+
}
|
|
75
|
+
throw new TypeError("provider signer must implement getAddress()");
|
|
76
|
+
}
|
|
77
|
+
requireUnlocked() {
|
|
78
|
+
if (this.locked) {
|
|
79
|
+
throw new ProviderUnauthorizedError("wallet is locked");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async ensureChainId() {
|
|
83
|
+
if (this.chainId) {
|
|
84
|
+
return this.chainId;
|
|
85
|
+
}
|
|
86
|
+
if (!this.options.client) {
|
|
87
|
+
throw new TypeError("provider client is required to resolve chain id");
|
|
88
|
+
}
|
|
89
|
+
this.chainId = await this.options.client.getChainId();
|
|
90
|
+
return this.chainId;
|
|
91
|
+
}
|
|
92
|
+
async maybeChainId() {
|
|
93
|
+
if (this.chainId) {
|
|
94
|
+
return this.chainId;
|
|
95
|
+
}
|
|
96
|
+
if (!this.options.client) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
return this.ensureChainId();
|
|
100
|
+
}
|
|
101
|
+
getCapabilities() {
|
|
102
|
+
const hasClient = this.options.client != null;
|
|
103
|
+
return {
|
|
104
|
+
getWalletInfo: true,
|
|
105
|
+
prepareTransaction: hasClient,
|
|
106
|
+
signMessage: true,
|
|
107
|
+
signTransaction: hasClient,
|
|
108
|
+
sendTransaction: hasClient,
|
|
109
|
+
sendCall: hasClient,
|
|
110
|
+
switchChain: true,
|
|
111
|
+
watchAsset: true
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async getWalletInfo() {
|
|
115
|
+
const accounts = this.connected && !this.locked ? [await this.getAddress()] : [];
|
|
116
|
+
return {
|
|
117
|
+
accounts,
|
|
118
|
+
selectedAccount: accounts[0],
|
|
119
|
+
chainId: await this.maybeChainId(),
|
|
120
|
+
connected: this.connected,
|
|
121
|
+
locked: this.locked,
|
|
122
|
+
capabilities: this.getCapabilities()
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async connect() {
|
|
126
|
+
this.requireUnlocked();
|
|
127
|
+
const accounts = [await this.getAddress()];
|
|
128
|
+
const wasConnected = this.connected;
|
|
129
|
+
this.connected = true;
|
|
130
|
+
const chainId = await this.ensureChainId();
|
|
131
|
+
if (!wasConnected) {
|
|
132
|
+
this.events.emit("connect", { chainId });
|
|
133
|
+
this.events.emit("accountsChanged", accounts);
|
|
134
|
+
this.events.emit("chainChanged", chainId);
|
|
135
|
+
}
|
|
136
|
+
return accounts;
|
|
137
|
+
}
|
|
138
|
+
disconnect() {
|
|
139
|
+
if (this.connected) {
|
|
140
|
+
this.connected = false;
|
|
141
|
+
this.events.emit("accountsChanged", []);
|
|
142
|
+
this.events.emit("disconnect", { code: 4900, message: "provider disconnected" });
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
async requireConnected() {
|
|
147
|
+
if (!this.connected) {
|
|
148
|
+
throw new ProviderDisconnectedError();
|
|
149
|
+
}
|
|
150
|
+
this.requireUnlocked();
|
|
151
|
+
}
|
|
152
|
+
async prepareTransaction(intent) {
|
|
153
|
+
if (!this.options.client) {
|
|
154
|
+
throw new TypeError("provider client is required for xian_prepareTransaction");
|
|
155
|
+
}
|
|
156
|
+
const activeChainId = await this.ensureChainId();
|
|
157
|
+
if (intent.chainId && intent.chainId !== activeChainId) {
|
|
158
|
+
throw new ProviderChainMismatchError();
|
|
159
|
+
}
|
|
160
|
+
return this.options.client.buildTx({
|
|
161
|
+
sender: await this.getAddress(),
|
|
162
|
+
contract: intent.contract,
|
|
163
|
+
function: intent.function,
|
|
164
|
+
kwargs: intent.kwargs,
|
|
165
|
+
chainId: activeChainId,
|
|
166
|
+
stamps: parseOptionalXianNumber(intent.stamps, "stamps"),
|
|
167
|
+
stampsSupplied: parseOptionalXianNumber(intent.stampsSupplied, "stampsSupplied")
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
normalizeWatchAssetRequest(request) {
|
|
171
|
+
const type = request.type;
|
|
172
|
+
if (type != null && type !== "token") {
|
|
173
|
+
throw new TypeError("xian_watchAsset currently supports only type 'token'");
|
|
174
|
+
}
|
|
175
|
+
const options = firstParamObject(request.options);
|
|
176
|
+
const contract = options.contract;
|
|
177
|
+
if (typeof contract !== "string" || !isIdentifier(contract)) {
|
|
178
|
+
throw new TypeError("xian_watchAsset requires a token contract identifier");
|
|
179
|
+
}
|
|
180
|
+
const name = options.name;
|
|
181
|
+
const symbol = options.symbol;
|
|
182
|
+
const icon = options.icon;
|
|
183
|
+
const decimals = options.decimals;
|
|
184
|
+
if (name != null && typeof name !== "string") {
|
|
185
|
+
throw new TypeError("asset name must be a string");
|
|
186
|
+
}
|
|
187
|
+
if (symbol != null && typeof symbol !== "string") {
|
|
188
|
+
throw new TypeError("asset symbol must be a string");
|
|
189
|
+
}
|
|
190
|
+
if (icon != null && typeof icon !== "string") {
|
|
191
|
+
throw new TypeError("asset icon must be a string");
|
|
192
|
+
}
|
|
193
|
+
if (decimals != null &&
|
|
194
|
+
(typeof decimals !== "number" || !Number.isInteger(decimals) || decimals < 0)) {
|
|
195
|
+
throw new TypeError("asset decimals must be a non-negative integer");
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
contract,
|
|
199
|
+
name: name,
|
|
200
|
+
symbol: symbol,
|
|
201
|
+
icon: icon,
|
|
202
|
+
decimals: decimals
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
listWatchedAssets() {
|
|
206
|
+
return [...this.watchedAssets.values()];
|
|
207
|
+
}
|
|
208
|
+
async request(args) {
|
|
209
|
+
switch (args.method) {
|
|
210
|
+
case "xian_connect":
|
|
211
|
+
case "xian_requestAccounts":
|
|
212
|
+
return this.connect();
|
|
213
|
+
case "xian_getWalletInfo":
|
|
214
|
+
return this.getWalletInfo();
|
|
215
|
+
case "xian_disconnect":
|
|
216
|
+
return this.disconnect();
|
|
217
|
+
case "xian_accounts":
|
|
218
|
+
return this.connected ? [await this.getAddress()] : [];
|
|
219
|
+
case "xian_chainId":
|
|
220
|
+
return this.ensureChainId();
|
|
221
|
+
case "xian_switchChain": {
|
|
222
|
+
const { chainId } = firstParamObject(args.params);
|
|
223
|
+
if (typeof chainId !== "string" || chainId.length === 0) {
|
|
224
|
+
throw new TypeError("xian_switchChain requires a chainId string");
|
|
225
|
+
}
|
|
226
|
+
this.chainId = chainId;
|
|
227
|
+
this.events.emit("chainChanged", chainId);
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
case "xian_signMessage": {
|
|
231
|
+
await this.requireConnected();
|
|
232
|
+
const { message } = firstParamObject(args.params);
|
|
233
|
+
if (typeof message !== "string") {
|
|
234
|
+
throw new TypeError("xian_signMessage requires a message string");
|
|
235
|
+
}
|
|
236
|
+
return this.options.signer.signMessage(message);
|
|
237
|
+
}
|
|
238
|
+
case "xian_signTransaction": {
|
|
239
|
+
await this.requireConnected();
|
|
240
|
+
if (!this.options.client) {
|
|
241
|
+
throw new TypeError("provider client is required for xian_signTransaction");
|
|
242
|
+
}
|
|
243
|
+
const { tx } = firstParamObject(args.params);
|
|
244
|
+
return this.options.client.signTx(tx, this.options.signer);
|
|
245
|
+
}
|
|
246
|
+
case "xian_prepareTransaction": {
|
|
247
|
+
await this.requireConnected();
|
|
248
|
+
const { intent } = firstParamObject(args.params);
|
|
249
|
+
return this.prepareTransaction(intent);
|
|
250
|
+
}
|
|
251
|
+
case "xian_sendTransaction": {
|
|
252
|
+
await this.requireConnected();
|
|
253
|
+
if (!this.options.client) {
|
|
254
|
+
throw new TypeError("provider client is required for xian_sendTransaction");
|
|
255
|
+
}
|
|
256
|
+
const { tx, mode, waitForTx, timeoutMs, pollIntervalMs } = firstParamObject(args.params);
|
|
257
|
+
const signedTx = await this.options.client.signTx(tx, this.options.signer);
|
|
258
|
+
return this.options.client.broadcastTx(signedTx, {
|
|
259
|
+
mode: mode,
|
|
260
|
+
waitForTx: waitForTx,
|
|
261
|
+
timeoutMs: timeoutMs,
|
|
262
|
+
pollIntervalMs: pollIntervalMs
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
case "xian_sendCall": {
|
|
266
|
+
await this.requireConnected();
|
|
267
|
+
if (!this.options.client) {
|
|
268
|
+
throw new TypeError("provider client is required for xian_sendCall");
|
|
269
|
+
}
|
|
270
|
+
const { intent, mode, waitForTx, timeoutMs, pollIntervalMs } = firstParamObject(args.params);
|
|
271
|
+
const preparedTx = await this.prepareTransaction(intent);
|
|
272
|
+
const signedTx = await this.options.client.signTx(preparedTx, this.options.signer);
|
|
273
|
+
return this.options.client.broadcastTx(signedTx, {
|
|
274
|
+
mode: mode,
|
|
275
|
+
waitForTx: waitForTx,
|
|
276
|
+
timeoutMs: timeoutMs,
|
|
277
|
+
pollIntervalMs: pollIntervalMs
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
case "xian_watchAsset": {
|
|
281
|
+
const asset = this.normalizeWatchAssetRequest(firstParamObject(args.params));
|
|
282
|
+
const accepted = this.options.onWatchAsset
|
|
283
|
+
? await this.options.onWatchAsset(asset)
|
|
284
|
+
: true;
|
|
285
|
+
if (accepted) {
|
|
286
|
+
this.watchedAssets.set(asset.contract, asset);
|
|
287
|
+
}
|
|
288
|
+
return accepted;
|
|
289
|
+
}
|
|
290
|
+
default:
|
|
291
|
+
throw new ProviderUnsupportedMethodError(args.method);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xian-tech/provider",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Xian browser wallet provider contract and reference provider",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/xian-technology/xian-js.git",
|
|
8
|
+
"directory": "packages/provider"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"files": ["dist"],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc -p tsconfig.json",
|
|
24
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
25
|
+
}
|
|
26
|
+
}
|