@nexus-cross/crossx-sdk-wagmi 0.0.0-beta.2 → 1.0.0-beta.1
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/__tests__/connector.test.d.ts +2 -0
- package/dist/__tests__/connector.test.d.ts.map +1 -0
- package/dist/__tests__/provider.test.d.ts +2 -0
- package/dist/__tests__/provider.test.d.ts.map +1 -0
- package/dist/connector.d.ts +7 -5
- package/dist/connector.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +13 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -98
- package/dist/provider.d.ts +2 -6
- package/dist/provider.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/connector.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/provider.test.ts"],"names":[],"mappings":""}
|
package/dist/connector.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { CROSSxSDK } from '@nexus-cross/crossx-sdk-core';
|
|
1
|
+
import { CROSSxSDK, SDKConfig } from '@nexus-cross/crossx-sdk-core';
|
|
2
2
|
import { CROSSxEIP1193Provider } from './provider';
|
|
3
3
|
|
|
4
|
+
/** 고급 모드: 이미 생성한 SDK 인스턴스를 직접 주입 */
|
|
4
5
|
export interface CROSSxConnectorOptions {
|
|
5
6
|
sdk: CROSSxSDK;
|
|
6
|
-
/**
|
|
7
|
-
* 기본 체인 ID (숫자 또는 ChainId 상수의 CAIP-2 값)
|
|
8
|
-
* 기본값: ChainId.CROSS_MAINNET ('eip155:612055' → 612055)
|
|
9
|
-
*/
|
|
10
7
|
defaultChainId?: string | number;
|
|
11
8
|
}
|
|
9
|
+
/** 간편 모드: SDK 설정만 전달하면 내부에서 SDK를 생성 */
|
|
10
|
+
export type CrossxConnectorOptions = Omit<SDKConfig, 'useMockWallet'> & {
|
|
11
|
+
defaultChainId?: string | number;
|
|
12
|
+
};
|
|
13
|
+
export declare function crossxConnector(options: CrossxConnectorOptions): import('wagmi').CreateConnectorFn<CROSSxEIP1193Provider, Record<string, unknown>, Record<string, unknown>>;
|
|
12
14
|
export declare function createCROSSxConnector(options: CROSSxConnectorOptions): import('wagmi').CreateConnectorFn<CROSSxEIP1193Provider, Record<string, unknown>, Record<string, unknown>>;
|
|
13
15
|
//# sourceMappingURL=connector.d.ts.map
|
package/dist/connector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAInD,oCAAoC;AACpC,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,SAAS,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,uCAAuC;AACvC,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG;IACtE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC,CAAC;AAWF,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,8GAI9D;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,8GAwIpE"}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("wagmi"),I=require("@nexus-cross/crossx-sdk-core");function w(r){return parseInt(r.split(":")[1]??"1",10)}function h(r){return`eip155:${r}`}function C(r){return"0x"+r.toString(16)}class p{constructor(t,a=I.ChainId.CROSS_MAINNET){this.sdk=t,this.listeners=new Map,this.off=this.removeListener.bind(this),this.chainId=typeof a=="number"?a:w(a)}async request({method:t,params:a}){var o;const i=a??[];switch(t){case"eth_requestAccounts":case"eth_accounts":{const n=await this.sdk.getAddress();return n?[n.address]:[]}case"eth_chainId":return C(this.chainId);case"net_version":return String(this.chainId);case"personal_sign":{const[n]=i;return(await this.sdk.signMessage(h(this.chainId),n)).signature}case"eth_sign":{const[,n]=i;return(await this.sdk.signMessage(h(this.chainId),n)).signature}case"eth_signTypedData":case"eth_signTypedData_v3":case"eth_signTypedData_v4":{const[,n]=i,s=typeof n=="string"?JSON.parse(n):n,c=(o=s==null?void 0:s.domain)==null?void 0:o.chainId;return(c==null||c===0?await this.sdk.signTypedDataOffchain(s):await this.sdk.signTypedData(h(this.chainId),s)).signature}case"eth_sendTransaction":{const[n]=i,s=h(this.chainId);return(await this.sdk.sendTransaction(s,{from:n.from,to:n.to,value:n.value,data:n.data,gasLimit:n.gasLimit??n.gas,gasPrice:n.gasPrice,maxFeePerGas:n.maxFeePerGas,maxPriorityFeePerGas:n.maxPriorityFeePerGas,nonce:n.nonce!==void 0?parseInt(String(n.nonce),16):void 0,chainId:this.chainId})).txHash}case"wallet_switchEthereumChain":{const[{chainId:n}]=i,s=parseInt(n,16);return s!==this.chainId&&(this.chainId=s,this.emit("chainChanged",C(s))),null}case"wallet_addEthereumChain":return null;default:return this.sdk.walletRpc(t,i,h(this.chainId))}}on(t,a){return this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(a),this}removeListener(t,a){var i;return(i=this.listeners.get(t))==null||i.delete(a),this}emit(t,...a){var i;(i=this.listeners.get(t))==null||i.forEach(o=>o(...a))}notifyAccountsChanged(t){this.emit("accountsChanged",t)}notifyDisconnect(t){this.emit("disconnect",t)}getCurrentChainId(){return this.chainId}setChainId(t){t!==this.chainId&&(this.chainId=t,this.emit("chainChanged",C(t)))}}function x(r){return typeof r=="number"?r:parseInt(r.split(":")[1]??"1",10)}function _(r){const{defaultChainId:t,...a}=r,i=I.createCROSSxSDK(a);return y({sdk:i,defaultChainId:t})}function y(r){const{sdk:t,defaultChainId:a=I.ChainId.CROSS_MAINNET}=r,i=x(a);let o=null,n=!1;function s(){return o||(o=new p(t,i)),o}return S.createConnector(c=>({id:"crossx",name:"CROSSx Wallet",type:"crossx",async setup(){n||(await t.initialize(),n=!0);const e=s();e.on("accountsChanged",this.onAccountsChanged.bind(this)),e.on("chainChanged",this.onChainChanged.bind(this)),e.on("disconnect",this.onDisconnect.bind(this))},async connect({chainId:e,isReconnecting:g}={}){const d=s(),u=e??i;if(g||t.isAuthenticated()){const m=await t.getAddress();if(m)return{accounts:[m.address],chainId:u}}const f=await t.signIn();if(!f.success)throw new Error(f.error??"CROSSx sign-in failed");const l=await t.getAddress();if(!l)throw new Error("No address found after sign-in");return d.notifyAccountsChanged([l.address]),{accounts:[l.address],chainId:u}},async disconnect(){const e=s();await t.signOut(),e.notifyDisconnect(),c.emitter.emit("disconnect")},async getAccounts(){const e=await t.getAddress();return e?[e.address]:[]},async getChainId(){return s().getCurrentChainId()},async getProvider({chainId:e}={}){return s()},async isAuthorized(){return t.isAuthenticated()},async switchChain({chainId:e}){s().setChainId(e),c.emitter.emit("change",{chainId:e});const d=c.chains.find(u=>u.id===e);if(!d)throw new Error(`Chain ${e} is not configured`);return d},onAccountsChanged(e){e.length===0?c.emitter.emit("disconnect"):c.emitter.emit("change",{accounts:e})},onChainChanged(e){c.emitter.emit("change",{chainId:Number(e)})},onDisconnect(){c.emitter.emit("disconnect")}}))}exports.CROSSxEIP1193Provider=p;exports.createCROSSxConnector=y;exports.crossxConnector=_;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
*
|
|
4
4
|
* CROSSx 임베디드 지갑을 wagmi에 통합하는 Connector 패키지.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* import {
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
6
|
+
* 간편 모드:
|
|
7
|
+
* import { crossxConnector } from '@nexus-cross/crossx-sdk-wagmi';
|
|
8
|
+
* const config = createConfig({
|
|
9
|
+
* chains: [crossMainnet],
|
|
10
|
+
* connectors: [crossxConnector({ projectId: 'YOUR_ID' })],
|
|
11
|
+
* transports: { [crossMainnet.id]: http() },
|
|
12
|
+
* });
|
|
13
13
|
*
|
|
14
|
+
* 고급 모드 (SDK 직접 주입):
|
|
15
|
+
* import { createCROSSxConnector } from '@nexus-cross/crossx-sdk-wagmi';
|
|
16
|
+
* import { createCROSSxSDK } from '@nexus-cross/crossx-sdk-core';
|
|
17
|
+
* const sdk = createCROSSxSDK({ projectId: 'YOUR_ID' });
|
|
14
18
|
* const config = createConfig({
|
|
15
19
|
* chains: [crossMainnet],
|
|
16
20
|
* connectors: [createCROSSxConnector({ sdk })],
|
|
17
21
|
* transports: { [crossMainnet.id]: http() },
|
|
18
22
|
* });
|
|
19
23
|
*/
|
|
20
|
-
export { createCROSSxConnector } from './connector';
|
|
21
|
-
export type { CROSSxConnectorOptions } from './connector';
|
|
24
|
+
export { crossxConnector, createCROSSxConnector } from './connector';
|
|
25
|
+
export type { CrossxConnectorOptions, CROSSxConnectorOptions, } from './connector';
|
|
22
26
|
export { CROSSxEIP1193Provider } from './provider';
|
|
23
27
|
export type { EIP1193RequestArguments } from './provider';
|
|
24
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,75 +1,72 @@
|
|
|
1
1
|
import { createConnector as p } from "wagmi";
|
|
2
|
-
import { ChainId as
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
return parseInt(t[1] ?? "1", 10);
|
|
2
|
+
import { ChainId as C, createCROSSxSDK as w } from "@nexus-cross/crossx-sdk-core";
|
|
3
|
+
function y(r) {
|
|
4
|
+
return parseInt(r.split(":")[1] ?? "1", 10);
|
|
6
5
|
}
|
|
7
|
-
function
|
|
6
|
+
function h(r) {
|
|
8
7
|
return `eip155:${r}`;
|
|
9
8
|
}
|
|
10
|
-
function
|
|
9
|
+
function f(r) {
|
|
11
10
|
return "0x" + r.toString(16);
|
|
12
11
|
}
|
|
13
|
-
class
|
|
14
|
-
constructor(t, a =
|
|
15
|
-
this.sdk = t, this.listeners = /* @__PURE__ */ new Map(), this.off = this.removeListener.bind(this), this.chainId = typeof a == "number" ? a :
|
|
12
|
+
class S {
|
|
13
|
+
constructor(t, a = C.CROSS_MAINNET) {
|
|
14
|
+
this.sdk = t, this.listeners = /* @__PURE__ */ new Map(), this.off = this.removeListener.bind(this), this.chainId = typeof a == "number" ? a : y(a);
|
|
16
15
|
}
|
|
17
|
-
//
|
|
18
|
-
// EIP-1193 request
|
|
19
|
-
// ============================================================================
|
|
16
|
+
// ── EIP-1193 request ──────────────────────────────────────────────────────
|
|
20
17
|
async request({ method: t, params: a }) {
|
|
18
|
+
var o;
|
|
21
19
|
const i = a ?? [];
|
|
22
20
|
switch (t) {
|
|
23
21
|
case "eth_requestAccounts":
|
|
24
22
|
case "eth_accounts": {
|
|
25
|
-
const
|
|
26
|
-
return
|
|
23
|
+
const n = await this.sdk.getAddress();
|
|
24
|
+
return n ? [n.address] : [];
|
|
27
25
|
}
|
|
28
26
|
case "eth_chainId":
|
|
29
|
-
return
|
|
27
|
+
return f(this.chainId);
|
|
30
28
|
case "net_version":
|
|
31
29
|
return String(this.chainId);
|
|
32
30
|
case "personal_sign": {
|
|
33
|
-
const [
|
|
34
|
-
return (await this.sdk.signMessage(
|
|
31
|
+
const [n] = i;
|
|
32
|
+
return (await this.sdk.signMessage(h(this.chainId), n)).signature;
|
|
35
33
|
}
|
|
36
34
|
case "eth_sign": {
|
|
37
|
-
const [,
|
|
38
|
-
return (await this.sdk.signMessage(
|
|
35
|
+
const [, n] = i;
|
|
36
|
+
return (await this.sdk.signMessage(h(this.chainId), n)).signature;
|
|
39
37
|
}
|
|
40
38
|
case "eth_signTypedData":
|
|
39
|
+
case "eth_signTypedData_v3":
|
|
41
40
|
case "eth_signTypedData_v4": {
|
|
42
|
-
const [,
|
|
43
|
-
return (await this.sdk.
|
|
41
|
+
const [, n] = i, s = typeof n == "string" ? JSON.parse(n) : n, c = (o = s == null ? void 0 : s.domain) == null ? void 0 : o.chainId;
|
|
42
|
+
return (c == null || c === 0 ? await this.sdk.signTypedDataOffchain(s) : await this.sdk.signTypedData(h(this.chainId), s)).signature;
|
|
44
43
|
}
|
|
45
44
|
case "eth_sendTransaction": {
|
|
46
|
-
const [
|
|
45
|
+
const [n] = i, s = h(this.chainId);
|
|
47
46
|
return (await this.sdk.sendTransaction(s, {
|
|
48
|
-
from:
|
|
49
|
-
to:
|
|
50
|
-
value:
|
|
51
|
-
data:
|
|
52
|
-
gasLimit:
|
|
53
|
-
gasPrice:
|
|
54
|
-
maxFeePerGas:
|
|
55
|
-
maxPriorityFeePerGas:
|
|
56
|
-
nonce:
|
|
47
|
+
from: n.from,
|
|
48
|
+
to: n.to,
|
|
49
|
+
value: n.value,
|
|
50
|
+
data: n.data,
|
|
51
|
+
gasLimit: n.gasLimit ?? n.gas,
|
|
52
|
+
gasPrice: n.gasPrice,
|
|
53
|
+
maxFeePerGas: n.maxFeePerGas,
|
|
54
|
+
maxPriorityFeePerGas: n.maxPriorityFeePerGas,
|
|
55
|
+
nonce: n.nonce !== void 0 ? parseInt(String(n.nonce), 16) : void 0,
|
|
57
56
|
chainId: this.chainId
|
|
58
57
|
})).txHash;
|
|
59
58
|
}
|
|
60
59
|
case "wallet_switchEthereumChain": {
|
|
61
|
-
const [{ chainId:
|
|
62
|
-
return s !== this.chainId && (this.chainId = s, this.emit("chainChanged",
|
|
60
|
+
const [{ chainId: n }] = i, s = parseInt(n, 16);
|
|
61
|
+
return s !== this.chainId && (this.chainId = s, this.emit("chainChanged", f(s))), null;
|
|
63
62
|
}
|
|
64
63
|
case "wallet_addEthereumChain":
|
|
65
64
|
return null;
|
|
66
65
|
default:
|
|
67
|
-
|
|
66
|
+
return this.sdk.walletRpc(t, i, h(this.chainId));
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
|
-
//
|
|
71
|
-
// EIP-1193 이벤트 (EventEmitter 호환)
|
|
72
|
-
// ============================================================================
|
|
69
|
+
// ── EIP-1193 이벤트 ───────────────────────────────────────────────────────
|
|
73
70
|
on(t, a) {
|
|
74
71
|
return this.listeners.has(t) || this.listeners.set(t, /* @__PURE__ */ new Set()), this.listeners.get(t).add(a), this;
|
|
75
72
|
}
|
|
@@ -79,110 +76,114 @@ class w {
|
|
|
79
76
|
}
|
|
80
77
|
emit(t, ...a) {
|
|
81
78
|
var i;
|
|
82
|
-
(i = this.listeners.get(t)) == null || i.forEach((
|
|
79
|
+
(i = this.listeners.get(t)) == null || i.forEach((o) => o(...a));
|
|
83
80
|
}
|
|
84
|
-
//
|
|
85
|
-
// 내부 헬퍼 (Connector에서 호출)
|
|
86
|
-
// ============================================================================
|
|
87
|
-
/** 계정 변경 이벤트 발생 (connect/disconnect 시 Connector가 호출) */
|
|
81
|
+
// ── Connector 전용 헬퍼 ───────────────────────────────────────────────────
|
|
88
82
|
notifyAccountsChanged(t) {
|
|
89
83
|
this.emit("accountsChanged", t);
|
|
90
84
|
}
|
|
91
|
-
/** 연결 해제 이벤트 발생 */
|
|
92
85
|
notifyDisconnect(t) {
|
|
93
86
|
this.emit("disconnect", t);
|
|
94
87
|
}
|
|
95
88
|
getCurrentChainId() {
|
|
96
89
|
return this.chainId;
|
|
97
90
|
}
|
|
91
|
+
setChainId(t) {
|
|
92
|
+
t !== this.chainId && (this.chainId = t, this.emit("chainChanged", f(t)));
|
|
93
|
+
}
|
|
98
94
|
}
|
|
99
|
-
function
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
95
|
+
function x(r) {
|
|
96
|
+
return typeof r == "number" ? r : parseInt(r.split(":")[1] ?? "1", 10);
|
|
97
|
+
}
|
|
98
|
+
function O(r) {
|
|
99
|
+
const { defaultChainId: t, ...a } = r, i = w(a);
|
|
100
|
+
return _({ sdk: i, defaultChainId: t });
|
|
103
101
|
}
|
|
104
|
-
function
|
|
105
|
-
const { sdk: t, defaultChainId: a =
|
|
106
|
-
let
|
|
102
|
+
function _(r) {
|
|
103
|
+
const { sdk: t, defaultChainId: a = C.CROSS_MAINNET } = r, i = x(a);
|
|
104
|
+
let o = null, n = !1;
|
|
107
105
|
function s() {
|
|
108
|
-
return
|
|
106
|
+
return o || (o = new S(t, i)), o;
|
|
109
107
|
}
|
|
110
108
|
return p((c) => ({
|
|
111
109
|
id: "crossx",
|
|
112
110
|
name: "CROSSx Wallet",
|
|
113
111
|
type: "crossx",
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
112
|
+
async setup() {
|
|
113
|
+
n || (await t.initialize(), n = !0);
|
|
114
|
+
const e = s();
|
|
115
|
+
e.on("accountsChanged", this.onAccountsChanged.bind(this)), e.on("chainChanged", this.onChainChanged.bind(this)), e.on("disconnect", this.onDisconnect.bind(this));
|
|
116
|
+
},
|
|
117
|
+
// ── connect ─────────────────────────────────────────────────────────────
|
|
118
|
+
async connect({ chainId: e, isReconnecting: g } = {}) {
|
|
119
|
+
const d = s(), u = e ?? i;
|
|
120
|
+
if (g || t.isAuthenticated()) {
|
|
121
|
+
const m = await t.getAddress();
|
|
122
|
+
if (m)
|
|
123
|
+
return {
|
|
124
|
+
accounts: [m.address],
|
|
125
|
+
chainId: u
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
|
-
const
|
|
129
|
-
if (!
|
|
130
|
-
throw new Error(
|
|
131
|
-
const
|
|
132
|
-
if (!
|
|
133
|
-
throw new Error("
|
|
134
|
-
return
|
|
135
|
-
accounts: [
|
|
136
|
-
chainId:
|
|
137
|
-
}), {
|
|
138
|
-
accounts: [h.address],
|
|
139
|
-
chainId: o
|
|
128
|
+
const I = await t.signIn();
|
|
129
|
+
if (!I.success)
|
|
130
|
+
throw new Error(I.error ?? "CROSSx sign-in failed");
|
|
131
|
+
const l = await t.getAddress();
|
|
132
|
+
if (!l)
|
|
133
|
+
throw new Error("No address found after sign-in");
|
|
134
|
+
return d.notifyAccountsChanged([l.address]), {
|
|
135
|
+
accounts: [l.address],
|
|
136
|
+
chainId: u
|
|
140
137
|
};
|
|
141
138
|
},
|
|
142
|
-
// ──
|
|
139
|
+
// ── disconnect ──────────────────────────────────────────────────────────
|
|
143
140
|
async disconnect() {
|
|
144
|
-
const
|
|
145
|
-
await t.signOut(),
|
|
141
|
+
const e = s();
|
|
142
|
+
await t.signOut(), e.notifyDisconnect(), c.emitter.emit("disconnect");
|
|
146
143
|
},
|
|
147
|
-
// ──
|
|
144
|
+
// ── getAccounts ─────────────────────────────────────────────────────────
|
|
148
145
|
async getAccounts() {
|
|
149
|
-
const
|
|
150
|
-
return
|
|
146
|
+
const e = await t.getAddress();
|
|
147
|
+
return e ? [e.address] : [];
|
|
151
148
|
},
|
|
152
|
-
// ──
|
|
149
|
+
// ── getChainId ──────────────────────────────────────────────────────────
|
|
153
150
|
async getChainId() {
|
|
154
151
|
return s().getCurrentChainId();
|
|
155
152
|
},
|
|
156
|
-
// ──
|
|
157
|
-
async getProvider({ chainId:
|
|
153
|
+
// ── getProvider ─────────────────────────────────────────────────────────
|
|
154
|
+
async getProvider({ chainId: e } = {}) {
|
|
158
155
|
return s();
|
|
159
156
|
},
|
|
160
|
-
// ──
|
|
157
|
+
// ── isAuthorized ────────────────────────────────────────────────────────
|
|
161
158
|
async isAuthorized() {
|
|
162
159
|
return t.isAuthenticated();
|
|
163
160
|
},
|
|
164
|
-
// ──
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
161
|
+
// ── switchChain ─────────────────────────────────────────────────────────
|
|
162
|
+
async switchChain({ chainId: e }) {
|
|
163
|
+
s().setChainId(e), c.emitter.emit("change", { chainId: e });
|
|
164
|
+
const d = c.chains.find((u) => u.id === e);
|
|
165
|
+
if (!d)
|
|
166
|
+
throw new Error(`Chain ${e} is not configured`);
|
|
167
|
+
return d;
|
|
168
|
+
},
|
|
169
|
+
// ── 이벤트 핸들러 ───────────────────────────────────────────────────────
|
|
170
|
+
onAccountsChanged(e) {
|
|
171
|
+
e.length === 0 ? c.emitter.emit("disconnect") : c.emitter.emit("change", {
|
|
172
|
+
accounts: e
|
|
168
173
|
});
|
|
169
174
|
},
|
|
170
|
-
onChainChanged(
|
|
175
|
+
onChainChanged(e) {
|
|
171
176
|
c.emitter.emit("change", {
|
|
172
|
-
chainId: Number(
|
|
177
|
+
chainId: Number(e)
|
|
173
178
|
});
|
|
174
179
|
},
|
|
175
180
|
onDisconnect() {
|
|
176
181
|
c.emitter.emit("disconnect");
|
|
177
|
-
},
|
|
178
|
-
// ── 설정 ─────────────────────────────────────────────────────────────────
|
|
179
|
-
async setup() {
|
|
180
|
-
const n = s();
|
|
181
|
-
n.on("accountsChanged", this.onAccountsChanged.bind(this)), n.on("chainChanged", this.onChainChanged.bind(this)), n.on("disconnect", this.onDisconnect.bind(this));
|
|
182
182
|
}
|
|
183
183
|
}));
|
|
184
184
|
}
|
|
185
185
|
export {
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
S as CROSSxEIP1193Provider,
|
|
187
|
+
_ as createCROSSxConnector,
|
|
188
|
+
O as crossxConnector
|
|
188
189
|
};
|
package/dist/provider.d.ts
CHANGED
|
@@ -8,21 +8,17 @@ export interface EIP1193RequestArguments {
|
|
|
8
8
|
export declare class CROSSxEIP1193Provider {
|
|
9
9
|
private readonly sdk;
|
|
10
10
|
private listeners;
|
|
11
|
-
/** 현재 활성 체인 ID (숫자) */
|
|
12
11
|
private chainId;
|
|
13
|
-
constructor(sdk: CROSSxSDK,
|
|
14
|
-
/** 기본 체인 ID. ChainId 상수의 CAIP-2 값 또는 숫자 허용 */
|
|
15
|
-
defaultChainId?: string | number);
|
|
12
|
+
constructor(sdk: CROSSxSDK, defaultChainId?: string | number);
|
|
16
13
|
request({ method, params }: EIP1193RequestArguments): Promise<unknown>;
|
|
17
14
|
on(event: string, listener: EventListener): this;
|
|
18
15
|
removeListener(event: string, listener: EventListener): this;
|
|
19
16
|
off: (event: string, listener: EventListener) => this;
|
|
20
17
|
emit(event: string, ...args: unknown[]): void;
|
|
21
|
-
/** 계정 변경 이벤트 발생 (connect/disconnect 시 Connector가 호출) */
|
|
22
18
|
notifyAccountsChanged(accounts: string[]): void;
|
|
23
|
-
/** 연결 해제 이벤트 발생 */
|
|
24
19
|
notifyDisconnect(error?: Error): void;
|
|
25
20
|
getCurrentChainId(): number;
|
|
21
|
+
setChainId(id: number): void;
|
|
26
22
|
}
|
|
27
23
|
export {};
|
|
28
24
|
//# sourceMappingURL=provider.d.ts.map
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE9C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC;CACtC;AAcD,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,OAAO,CAAS;gBAGL,GAAG,EAAE,SAAS,EAC/B,cAAc,GAAE,MAAM,GAAG,MAA8B;IAUnD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0F5E,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAQhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK5D,GAAG,UALmB,MAAM,YAAY,aAAa,KAAG,IAAI,CAKvB;IAErC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM7C,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/C,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAIrC,iBAAiB,IAAI,MAAM;IAI3B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAM7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexus-cross/crossx-sdk-wagmi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0-beta.1",
|
|
4
4
|
"description": "CROSSx SDK wagmi Connector — OAuth 임베디드 지갑을 wagmi에 통합",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@nexus-cross/crossx-sdk-core": "
|
|
20
|
+
"@nexus-cross/crossx-sdk-core": "1.0.0-beta.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"viem": ">=2.0.0",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"viem": "^2.46.2",
|
|
29
29
|
"vite": "^5.0.11",
|
|
30
30
|
"vite-plugin-dts": "^3.7.1",
|
|
31
|
+
"vitest": "^1.2.0",
|
|
31
32
|
"wagmi": "^3.5.0"
|
|
32
33
|
},
|
|
33
34
|
"keywords": [
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
"scripts": {
|
|
46
47
|
"build": "vite build",
|
|
47
48
|
"dev": "vite build --watch",
|
|
49
|
+
"test": "vitest run",
|
|
48
50
|
"typecheck": "tsc --noEmit"
|
|
49
51
|
}
|
|
50
52
|
}
|