@sabaaa1/common 0.0.14 → 0.0.16
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sabaaa1/common",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"homepage": "hinkal.pro",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Hinkal Protocol"
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@hazae41/fleche": "1.4.5",
|
|
67
67
|
"@hazae41/sha1": "1.1.14",
|
|
68
68
|
"@hazae41/x25519": "2.2.9",
|
|
69
|
-
"@hazae41/x509": "1.2.
|
|
69
|
+
"@hazae41/x509": "1.2.14",
|
|
70
70
|
"axios": "^1.6.8",
|
|
71
71
|
"async-mutex": "^0.4.0",
|
|
72
72
|
"buffer": "6.0.3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("../constants/chains.constants.cjs"),o=require("../error-handling/error-codes.constants.cjs"),s=require("ethers"),g=require("wagmi"),n=require("wagmi/actions"),a=require("../functions/web3/getContractMetadata.cjs");class h{connector;chainId;originalProvider;fetchProvider;signer;chainEventListener;config;unsubscribeFns=[];initConnector(t){this.connector=t}getSigner(){if(!this.signer)throw new Error("No Signer In Provider Adapter");return this.signer}requireConnector(){if(!this.connector)throw Error("No Connector In Provider Adapter")}initConfig(t){this.config=t}async init(t){this.requireConnector(),t&&(this.chainId=t),this.originalProvider=await this.connector.getProvider(),this.fetchProvider=this.createFetchProvider()??this.originalProvider,this.fetchProvider===this.originalProvider&&console.warn("fetchProvider not available");const r=await this.connector.getProvider(),e=await this.connector.getAccounts();this.signer=await this.walletClientToSigner({transport:r,account:e[0]},this.chainId)}async disconnectFromConnector(){if(!this.config)throw new Error("No Config In Provider Adapter");this.release(),await n.disconnect(this.config)}async connectToConnector(t){if(!this.config)throw new Error("No Config In Provider Adapter");if(t.id==="walletConnect")try{await n.reconnect(this.config,{connectors:[t]}),await n.disconnect(this.config)}catch{}try{return(await n.connect(this.config,{connector:t})).chainId}catch(r){if(r instanceof g.ConnectorAlreadyConnectedError)return t.getChainId();let e=o.transactionErrorCodes.CONNECTION_FAILED;throw r?.code===4001&&(e=o.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),new Error(e)}}async waitForTransaction(t,r){if((await this.fetchProvider?.waitForTransaction(t,r))?.status)return!0;throw Error(o.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(t){if(!this.config)throw new Error("No Config In Provider Adapter");const r=await n.signMessage(this.config,{message:t});if(!r)throw new Error(o.transactionErrorCodes.SIGNING_FAILED);if(r.includes("error"))throw new Error(o.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return r}async signTypedData(t,r,e){return this.signer._signTypedData(t,r,e)}getSelectedNetwork=()=>{if(!this.chainId)throw new Error("Illegal state: no chaindId");return i.networkRegistry[this.chainId]};async switchNetwork(t){if(!this.config)throw new Error("No Config In Provider Adapter");return n.switchChain(this.config,{chainId:t.chainId})}createFetchProvider(){try{const r=i.networkRegistry[this.chainId]?.fetchRpcUrl;return r?r.includes("wss")?new s.providers.WebSocketProvider(r):new s.providers.StaticJsonRpcProvider(r):void 0}catch(t){console.log("create Fetch Provider error",t);return}}async getAddress(){if(!this.config)throw new Error("No Config In Provider Adapter");const{address:t}=n.getAccount(this.config);if(!t)throw new Error("IllegalState");return s.utils.getAddress(t)}setChainEventListener(t){if(!this.config)throw new Error("No Config In Provider Adapter");this.chainEventListener=t,this.chainEventListener&&(this.unsubscribeFns.push(n.watchAccount(this.config,{onChange:({address:r},{address:e})=>{if(!this.chainEventListener){console.warn("chainEventListener is not set");return}console.log("Account changed"),r!==e&&(console.log("Account changed"),this.chainEventListener.onAccountChanged())}})),this.unsubscribeFns.push(n.watchChainId(this.config,{onChange:r=>{if(!this.chainEventListener){console.warn("chainEventListener is not set");return}console.log("Chain ID changed!",r),this.chainEventListener.onChainChanged(r)}})))}onAccountChanged(){return this.init()}onChainChanged(t){return this.init(t)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(t=>t()),this.unsubscribeFns=[]}parseChainIdParam(t){const r=t??this.chainId;if(!r)throw new Error("No chainId provided in context");return r}getContractMetadata(t,r){const e=this.parseChainIdParam(r);return a.getContractMetadata(t,e)}getContract(t,r=void 0,e){const c=this.parseChainIdParam(e);return a.getContract(t,c,r)}getContractWithSigner(t,r=void 0){if(!this.signer)throw new Error("IllegalState: no signer");return this.getContract(t,r).connect(this.signer)}getContractWithFetcher(t,r=void 0){if(!this.fetchProvider)throw new Error("fetchProvider not initialized");return this.getContract(t,r).connect(this.fetchProvider)}getContractWithFetcherForEthereum(t,r=void 0){const e=this.chainId===i.chainIds.localhost&&i.localhostNetwork===i.chainIds.ethMainnet?i.chainIds.localhost:i.chainIds.ethMainnet;return a.getContractWithFetcherByChainId(e,t,r)}async sendTransaction(t){if(!this.signer)throw new Error("IllegalState: no signer");return await this.signer.sendTransaction(t)}async connectAndPatchProvider(t){return await this.connectToConnector(t)}isPermitterAvailable(){return!!this.getSelectedNetwork()?.contractData?.permitterAddress}async getGasPrice(){const t=await this.fetchProvider?.getGasPrice();if(!t)throw Error("Could not fetch gas price in getGasPrice");return t.toBigInt()}async walletClientToSigner(t,r){const{account:e,transport:c}=t,d={chainId:r,name:""};return new s.providers.Web3Provider(c,d).getSigner(e)}switchAccount(){throw new Error("Method not implemented.")}}const w=new h,u=()=>new h;exports.WagmiProviderAdapter=h;exports.default=u;exports.wagmiProviderAdapter=w;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { networkRegistry as c, chainIds as n, localhostNetwork as g } from "../constants/chains.constants.mjs";
|
|
2
|
-
import { transactionErrorCodes as i, UserFriendlyErrorCodes as
|
|
3
|
-
import { providers as s, utils as
|
|
2
|
+
import { transactionErrorCodes as i, UserFriendlyErrorCodes as w } from "../error-handling/error-codes.constants.mjs";
|
|
3
|
+
import { providers as s, utils as f } from "ethers";
|
|
4
4
|
import { ConnectorAlreadyConnectedError as l } from "wagmi";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { reconnect as p } from "../node_modules/@wagmi/core/dist/esm/actions/reconnect.mjs";
|
|
8
|
-
import { connect as I } from "../node_modules/@wagmi/core/dist/esm/actions/connect.mjs";
|
|
9
|
-
import { signMessage as E } from "../node_modules/@wagmi/core/dist/esm/actions/signMessage.mjs";
|
|
10
|
-
import { switchChain as P } from "../node_modules/@wagmi/core/dist/esm/actions/switchChain.mjs";
|
|
11
|
-
import { getAccount as m } from "../node_modules/@wagmi/core/dist/esm/actions/getAccount.mjs";
|
|
12
|
-
import { watchAccount as A } from "../node_modules/@wagmi/core/dist/esm/actions/watchAccount.mjs";
|
|
13
|
-
import { watchChainId as N } from "../node_modules/@wagmi/core/dist/esm/actions/watchChainId.mjs";
|
|
5
|
+
import { disconnect as a, reconnect as u, connect as v, signMessage as C, switchChain as I, getAccount as E, watchAccount as p, watchChainId as P } from "wagmi/actions";
|
|
6
|
+
import { getContractMetadata as A, getContract as m, getContractWithFetcherByChainId as N } from "../functions/web3/getContractMetadata.mjs";
|
|
14
7
|
class h {
|
|
15
8
|
connector;
|
|
16
9
|
chainId;
|
|
@@ -20,8 +13,8 @@ class h {
|
|
|
20
13
|
chainEventListener;
|
|
21
14
|
config;
|
|
22
15
|
unsubscribeFns = [];
|
|
23
|
-
initConnector(
|
|
24
|
-
this.connector =
|
|
16
|
+
initConnector(t) {
|
|
17
|
+
this.connector = t;
|
|
25
18
|
}
|
|
26
19
|
getSigner() {
|
|
27
20
|
if (!this.signer)
|
|
@@ -32,104 +25,104 @@ class h {
|
|
|
32
25
|
if (!this.connector)
|
|
33
26
|
throw Error("No Connector In Provider Adapter");
|
|
34
27
|
}
|
|
35
|
-
initConfig(
|
|
36
|
-
this.config =
|
|
28
|
+
initConfig(t) {
|
|
29
|
+
this.config = t;
|
|
37
30
|
}
|
|
38
|
-
async init(
|
|
39
|
-
this.requireConnector(),
|
|
40
|
-
const
|
|
41
|
-
this.signer = await this.walletClientToSigner({ transport:
|
|
31
|
+
async init(t) {
|
|
32
|
+
this.requireConnector(), t && (this.chainId = t), this.originalProvider = await this.connector.getProvider(), this.fetchProvider = this.createFetchProvider() ?? this.originalProvider, this.fetchProvider === this.originalProvider && console.warn("fetchProvider not available");
|
|
33
|
+
const r = await this.connector.getProvider(), e = await this.connector.getAccounts();
|
|
34
|
+
this.signer = await this.walletClientToSigner({ transport: r, account: e[0] }, this.chainId);
|
|
42
35
|
}
|
|
43
36
|
async disconnectFromConnector() {
|
|
44
37
|
if (!this.config)
|
|
45
38
|
throw new Error("No Config In Provider Adapter");
|
|
46
39
|
this.release(), await a(this.config);
|
|
47
40
|
}
|
|
48
|
-
async connectToConnector(
|
|
41
|
+
async connectToConnector(t) {
|
|
49
42
|
if (!this.config)
|
|
50
43
|
throw new Error("No Config In Provider Adapter");
|
|
51
|
-
if (
|
|
44
|
+
if (t.id === "walletConnect")
|
|
52
45
|
try {
|
|
53
|
-
await
|
|
46
|
+
await u(this.config, { connectors: [t] }), await a(this.config);
|
|
54
47
|
} catch {
|
|
55
48
|
}
|
|
56
49
|
try {
|
|
57
|
-
return (await
|
|
58
|
-
} catch (
|
|
59
|
-
if (
|
|
60
|
-
return
|
|
50
|
+
return (await v(this.config, { connector: t })).chainId;
|
|
51
|
+
} catch (r) {
|
|
52
|
+
if (r instanceof l)
|
|
53
|
+
return t.getChainId();
|
|
61
54
|
let e = i.CONNECTION_FAILED;
|
|
62
|
-
throw
|
|
55
|
+
throw r?.code === 4001 && (e = w.YOU_CANCELED_REQUEST), new Error(e);
|
|
63
56
|
}
|
|
64
57
|
}
|
|
65
|
-
async waitForTransaction(
|
|
66
|
-
if ((await this.fetchProvider?.waitForTransaction(
|
|
58
|
+
async waitForTransaction(t, r) {
|
|
59
|
+
if ((await this.fetchProvider?.waitForTransaction(t, r))?.status)
|
|
67
60
|
return !0;
|
|
68
61
|
throw Error(i.TRANSACTION_NOT_CONFIRMED);
|
|
69
62
|
}
|
|
70
|
-
async signMessage(
|
|
63
|
+
async signMessage(t) {
|
|
71
64
|
if (!this.config)
|
|
72
65
|
throw new Error("No Config In Provider Adapter");
|
|
73
|
-
const
|
|
74
|
-
if (!
|
|
66
|
+
const r = await C(this.config, { message: t });
|
|
67
|
+
if (!r)
|
|
75
68
|
throw new Error(i.SIGNING_FAILED);
|
|
76
|
-
if (
|
|
69
|
+
if (r.includes("error"))
|
|
77
70
|
throw new Error(i.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);
|
|
78
|
-
return
|
|
71
|
+
return r;
|
|
79
72
|
}
|
|
80
|
-
async signTypedData(
|
|
81
|
-
return this.signer._signTypedData(
|
|
73
|
+
async signTypedData(t, r, e) {
|
|
74
|
+
return this.signer._signTypedData(t, r, e);
|
|
82
75
|
}
|
|
83
76
|
getSelectedNetwork = () => {
|
|
84
77
|
if (!this.chainId)
|
|
85
78
|
throw new Error("Illegal state: no chaindId");
|
|
86
79
|
return c[this.chainId];
|
|
87
80
|
};
|
|
88
|
-
async switchNetwork(
|
|
81
|
+
async switchNetwork(t) {
|
|
89
82
|
if (!this.config)
|
|
90
83
|
throw new Error("No Config In Provider Adapter");
|
|
91
|
-
return
|
|
92
|
-
chainId:
|
|
84
|
+
return I(this.config, {
|
|
85
|
+
chainId: t.chainId
|
|
93
86
|
});
|
|
94
87
|
}
|
|
95
88
|
createFetchProvider() {
|
|
96
89
|
try {
|
|
97
|
-
const
|
|
98
|
-
return
|
|
99
|
-
} catch (
|
|
100
|
-
console.log("create Fetch Provider error",
|
|
90
|
+
const r = c[this.chainId]?.fetchRpcUrl;
|
|
91
|
+
return r ? r.includes("wss") ? new s.WebSocketProvider(r) : new s.StaticJsonRpcProvider(r) : void 0;
|
|
92
|
+
} catch (t) {
|
|
93
|
+
console.log("create Fetch Provider error", t);
|
|
101
94
|
return;
|
|
102
95
|
}
|
|
103
96
|
}
|
|
104
97
|
async getAddress() {
|
|
105
98
|
if (!this.config)
|
|
106
99
|
throw new Error("No Config In Provider Adapter");
|
|
107
|
-
const { address:
|
|
108
|
-
if (!
|
|
100
|
+
const { address: t } = E(this.config);
|
|
101
|
+
if (!t)
|
|
109
102
|
throw new Error("IllegalState");
|
|
110
|
-
return
|
|
103
|
+
return f.getAddress(t);
|
|
111
104
|
}
|
|
112
|
-
setChainEventListener(
|
|
105
|
+
setChainEventListener(t) {
|
|
113
106
|
if (!this.config)
|
|
114
107
|
throw new Error("No Config In Provider Adapter");
|
|
115
|
-
this.chainEventListener =
|
|
116
|
-
|
|
117
|
-
onChange: ({ address:
|
|
108
|
+
this.chainEventListener = t, this.chainEventListener && (this.unsubscribeFns.push(
|
|
109
|
+
p(this.config, {
|
|
110
|
+
onChange: ({ address: r }, { address: e }) => {
|
|
118
111
|
if (!this.chainEventListener) {
|
|
119
112
|
console.warn("chainEventListener is not set");
|
|
120
113
|
return;
|
|
121
114
|
}
|
|
122
|
-
console.log("Account changed"),
|
|
115
|
+
console.log("Account changed"), r !== e && (console.log("Account changed"), this.chainEventListener.onAccountChanged());
|
|
123
116
|
}
|
|
124
117
|
})
|
|
125
118
|
), this.unsubscribeFns.push(
|
|
126
|
-
|
|
127
|
-
onChange: (
|
|
119
|
+
P(this.config, {
|
|
120
|
+
onChange: (r) => {
|
|
128
121
|
if (!this.chainEventListener) {
|
|
129
122
|
console.warn("chainEventListener is not set");
|
|
130
123
|
return;
|
|
131
124
|
}
|
|
132
|
-
console.log("Chain ID changed!",
|
|
125
|
+
console.log("Chain ID changed!", r), this.chainEventListener.onChainChanged(r);
|
|
133
126
|
}
|
|
134
127
|
})
|
|
135
128
|
));
|
|
@@ -137,63 +130,63 @@ class h {
|
|
|
137
130
|
onAccountChanged() {
|
|
138
131
|
return this.init();
|
|
139
132
|
}
|
|
140
|
-
onChainChanged(
|
|
141
|
-
return this.init(
|
|
133
|
+
onChainChanged(t) {
|
|
134
|
+
return this.init(t);
|
|
142
135
|
}
|
|
143
136
|
release() {
|
|
144
137
|
this.removeListeners();
|
|
145
138
|
}
|
|
146
139
|
removeListeners() {
|
|
147
|
-
this.unsubscribeFns.forEach((
|
|
140
|
+
this.unsubscribeFns.forEach((t) => t()), this.unsubscribeFns = [];
|
|
148
141
|
}
|
|
149
|
-
parseChainIdParam(
|
|
150
|
-
const
|
|
151
|
-
if (!
|
|
142
|
+
parseChainIdParam(t) {
|
|
143
|
+
const r = t ?? this.chainId;
|
|
144
|
+
if (!r)
|
|
152
145
|
throw new Error("No chainId provided in context");
|
|
153
|
-
return
|
|
146
|
+
return r;
|
|
154
147
|
}
|
|
155
|
-
getContractMetadata(
|
|
156
|
-
const e = this.parseChainIdParam(
|
|
157
|
-
return
|
|
148
|
+
getContractMetadata(t, r) {
|
|
149
|
+
const e = this.parseChainIdParam(r);
|
|
150
|
+
return A(t, e);
|
|
158
151
|
}
|
|
159
|
-
getContract(
|
|
152
|
+
getContract(t, r = void 0, e) {
|
|
160
153
|
const o = this.parseChainIdParam(e);
|
|
161
|
-
return
|
|
154
|
+
return m(t, o, r);
|
|
162
155
|
}
|
|
163
|
-
getContractWithSigner(
|
|
156
|
+
getContractWithSigner(t, r = void 0) {
|
|
164
157
|
if (!this.signer)
|
|
165
158
|
throw new Error("IllegalState: no signer");
|
|
166
|
-
return this.getContract(
|
|
159
|
+
return this.getContract(t, r).connect(this.signer);
|
|
167
160
|
}
|
|
168
|
-
getContractWithFetcher(
|
|
161
|
+
getContractWithFetcher(t, r = void 0) {
|
|
169
162
|
if (!this.fetchProvider)
|
|
170
163
|
throw new Error("fetchProvider not initialized");
|
|
171
|
-
return this.getContract(
|
|
164
|
+
return this.getContract(t, r).connect(this.fetchProvider);
|
|
172
165
|
}
|
|
173
|
-
getContractWithFetcherForEthereum(
|
|
166
|
+
getContractWithFetcherForEthereum(t, r = void 0) {
|
|
174
167
|
const e = this.chainId === n.localhost && g === n.ethMainnet ? n.localhost : n.ethMainnet;
|
|
175
|
-
return
|
|
168
|
+
return N(e, t, r);
|
|
176
169
|
}
|
|
177
|
-
async sendTransaction(
|
|
170
|
+
async sendTransaction(t) {
|
|
178
171
|
if (!this.signer)
|
|
179
172
|
throw new Error("IllegalState: no signer");
|
|
180
|
-
return await this.signer.sendTransaction(
|
|
173
|
+
return await this.signer.sendTransaction(t);
|
|
181
174
|
}
|
|
182
|
-
async connectAndPatchProvider(
|
|
183
|
-
return await this.connectToConnector(
|
|
175
|
+
async connectAndPatchProvider(t) {
|
|
176
|
+
return await this.connectToConnector(t);
|
|
184
177
|
}
|
|
185
178
|
isPermitterAvailable() {
|
|
186
179
|
return !!this.getSelectedNetwork()?.contractData?.permitterAddress;
|
|
187
180
|
}
|
|
188
181
|
async getGasPrice() {
|
|
189
|
-
const
|
|
190
|
-
if (!
|
|
182
|
+
const t = await this.fetchProvider?.getGasPrice();
|
|
183
|
+
if (!t)
|
|
191
184
|
throw Error("Could not fetch gas price in getGasPrice");
|
|
192
|
-
return
|
|
185
|
+
return t.toBigInt();
|
|
193
186
|
}
|
|
194
|
-
async walletClientToSigner(
|
|
195
|
-
const { account: e, transport: o } =
|
|
196
|
-
chainId:
|
|
187
|
+
async walletClientToSigner(t, r) {
|
|
188
|
+
const { account: e, transport: o } = t, d = {
|
|
189
|
+
chainId: r,
|
|
197
190
|
name: ""
|
|
198
191
|
};
|
|
199
192
|
return new s.Web3Provider(o, d).getSigner(e);
|
|
@@ -202,9 +195,9 @@ class h {
|
|
|
202
195
|
throw new Error("Method not implemented.");
|
|
203
196
|
}
|
|
204
197
|
}
|
|
205
|
-
const
|
|
198
|
+
const D = new h(), U = () => new h();
|
|
206
199
|
export {
|
|
207
200
|
h as WagmiProviderAdapter,
|
|
208
|
-
|
|
209
|
-
|
|
201
|
+
U as default,
|
|
202
|
+
D as wagmiProviderAdapter
|
|
210
203
|
};
|