@cityofzion/bs-ethereum 1.0.4 → 1.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/.rush/temp/operation/build/state.json +1 -1
- package/.rush/temp/package-deps_build.json +10 -8
- package/.rush/temp/shrinkwrap-deps.json +83 -1
- package/CHANGELOG.json +22 -0
- package/CHANGELOG.md +12 -1
- package/dist/BSEthereum.d.ts +7 -4
- package/dist/BSEthereum.js +36 -19
- package/dist/LedgerServiceEthereum.d.ts +9 -0
- package/dist/LedgerServiceEthereum.js +73 -0
- package/dist/constants.js +1 -1
- package/package.json +5 -2
- package/src/BSEthereum.ts +43 -25
- package/src/LedgerServiceEthereum.ts +44 -0
- package/src/__tests__/BSEthereum.spec.ts +42 -1
- package/src/__tests__/BitqueryBDSEthereum.spec.ts +106 -0
- package/src/__tests__/RpcBDSEthereum.spec.ts +62 -0
- package/src/constants.ts +1 -1
- package/src/__tests__/BDSEthereum.spec.ts +0 -126
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
"files": {
|
|
3
3
|
"packages/bs-ethereum/.eslintignore": "3ee402c88b68258919e4f4b4eef4f25e5d078d90",
|
|
4
4
|
"packages/bs-ethereum/.eslintrc.cjs": "5ec0bf6332ec01b3e02beb532bb47025c4c1bf7b",
|
|
5
|
-
"packages/bs-ethereum/CHANGELOG.json": "
|
|
6
|
-
"packages/bs-ethereum/CHANGELOG.md": "
|
|
5
|
+
"packages/bs-ethereum/CHANGELOG.json": "325dd368ceaddc016034aa87f89fd72ca69d24e7",
|
|
6
|
+
"packages/bs-ethereum/CHANGELOG.md": "3d678f8216c91d6607c00062fecae2068e8e8cac",
|
|
7
7
|
"packages/bs-ethereum/jest.config.ts": "d944475db93cbe41a9339187fd94b9962e411c43",
|
|
8
8
|
"packages/bs-ethereum/jest.setup.ts": "9a1976a32050616d4d2ee95b1aa21041bc4daca3",
|
|
9
|
-
"packages/bs-ethereum/package.json": "
|
|
10
|
-
"packages/bs-ethereum/src/BSEthereum.ts": "
|
|
9
|
+
"packages/bs-ethereum/package.json": "b28c67e06e88b76dabe2a59950a87fc702802784",
|
|
10
|
+
"packages/bs-ethereum/src/BSEthereum.ts": "851c8cb3d04e982b1f6084af3c0c6332e94dfb1b",
|
|
11
11
|
"packages/bs-ethereum/src/BitqueryBDSEthereum.ts": "47f24d0f3a94aa0eb761e1c2e96f6aeb9c51f82b",
|
|
12
12
|
"packages/bs-ethereum/src/BitqueryEDSEthereum.ts": "a1232bf1d1683d7fe0e752577f3eb489cfce734f",
|
|
13
13
|
"packages/bs-ethereum/src/GhostMarketNDSEthereum.ts": "c97f7fd9323b4089a8f2ed4178dbc14a0d17c61c",
|
|
14
|
+
"packages/bs-ethereum/src/LedgerServiceEthereum.ts": "4817179fe41406c77c24d7635c9fe01c8718ab51",
|
|
14
15
|
"packages/bs-ethereum/src/RpcBDSEthereum.ts": "6cbca256420b09cef7182cbc485eb4799ff9b614",
|
|
15
|
-
"packages/bs-ethereum/src/__tests__/
|
|
16
|
-
"packages/bs-ethereum/src/__tests__/
|
|
16
|
+
"packages/bs-ethereum/src/__tests__/BSEthereum.spec.ts": "755cb6c64843453d236c67b8e2837fe288fc8ecb",
|
|
17
|
+
"packages/bs-ethereum/src/__tests__/BitqueryBDSEthereum.spec.ts": "38f866d185089ff5a638dda6a7a7a82e6b75416c",
|
|
17
18
|
"packages/bs-ethereum/src/__tests__/BitqueryEDSEthereum.spec.ts": "a0994e0ad66408b281ec96a5f72b30b5e14a68ce",
|
|
18
19
|
"packages/bs-ethereum/src/__tests__/GhostMarketNDSEthereum.spec.ts": "4b10ef2b59437c9ea06695ab4844d5b131f65738",
|
|
20
|
+
"packages/bs-ethereum/src/__tests__/RpcBDSEthereum.spec.ts": "c76ab3af8b91ca9e1ae86face31933ca4f21ca1f",
|
|
19
21
|
"packages/bs-ethereum/src/assets/tokens/common.json": "96597dd06475ee6068b484510f27ffad27b52ebd",
|
|
20
|
-
"packages/bs-ethereum/src/constants.ts": "
|
|
22
|
+
"packages/bs-ethereum/src/constants.ts": "e216fc9b3e2f2333af4f42bca7cc2e6a461e2036",
|
|
21
23
|
"packages/bs-ethereum/src/graphql.ts": "2e759e198a9a37205ed115c41165eda18df66539",
|
|
22
24
|
"packages/bs-ethereum/src/index.ts": "69ca9c23acdd0afd70f7eaa0a840b07b62bdb07a",
|
|
23
25
|
"packages/bs-ethereum/tsconfig.build.json": "4dc23fb9c4c5e4d19a9bc3947a47c523f4bd967c",
|
|
24
26
|
"packages/bs-ethereum/tsconfig.json": "93e09769572b58e642d4990e9552c70a8b85e142",
|
|
25
|
-
"packages/bs-ethereum/.rush/temp/shrinkwrap-deps.json": "
|
|
27
|
+
"packages/bs-ethereum/.rush/temp/shrinkwrap-deps.json": "38753d194619dc40349a5bf0ecc2a3216d091fda"
|
|
26
28
|
},
|
|
27
29
|
"arguments": "tsc --project tsconfig.build.json "
|
|
28
30
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"../../packages/bs-ethereum": "../../packages/bs-ethereum
|
|
2
|
+
"../../packages/bs-ethereum": "../../packages/bs-ethereum:+YmJRJAu00IWum0fJUk+lJdPbFbwx8Aw/RDvXUKL2gI=:",
|
|
3
3
|
"/@0no-co/graphql.web@1.0.4(graphql@16.8.1)": "sha512-W3ezhHGfO0MS1PtGloaTpg0PbaT8aZSmmaerL7idtU5F7oCI+uu25k+MsMS31BVFlp4aMkHSrNRxiD72IlK8TA==",
|
|
4
4
|
"/@aashutoshrathi/word-wrap@1.2.6": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
|
|
5
5
|
"/@ampproject/remapping@2.2.1": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
|
|
@@ -100,6 +100,19 @@
|
|
|
100
100
|
"/@jridgewell/sourcemap-codec@1.4.15": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
|
101
101
|
"/@jridgewell/trace-mapping@0.3.22": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
|
|
102
102
|
"/@jridgewell/trace-mapping@0.3.9": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
|
|
103
|
+
"/@ledgerhq/cryptoassets@12.0.0": "sha512-e6PwYGNCyw2ZFEiHZXJPgI3tkl3Iq58Nt32hpW3mccQqTIJYsWmsn4gvBlkgx+ts5EB6IT2TypTo8B6FXQqMGg==",
|
|
104
|
+
"/@ledgerhq/devices@8.2.2": "sha512-SKahGA4p0mZ3ovypOJ2wa5mUvUkArE3HBrwWKYf+cRs+t/Licp3OJfhj+DHIxP3AfyH2xR6CFFWECYHeKwGsDQ==",
|
|
105
|
+
"/@ledgerhq/domain-service@1.1.19": "sha512-BsJwMYV6cfdVeo9mQeax7Z5iDqBYCkaLvDtSNyZ54rQPojMcUPLTGPB53tk1zuSeyrfs5z2Hbahp3jNtBzWX0A==",
|
|
106
|
+
"/@ledgerhq/errors@6.16.3": "sha512-3w7/SJVXOPa9mpzyll7VKoKnGwDD3BzWgN1Nom8byR40DiQvOKjHX+kKQausCedTHVNBn9euzPCNsftZ9+mxfw==",
|
|
107
|
+
"/@ledgerhq/evm-tools@1.0.17": "sha512-WGHb7OaxD5VllRnMEsAi2/5fZEvM5LbaWcuLSIF5plrb3UIv5EGJfDyz2UlCYpMwtrx4GScyhwy0MvyIYmSnmQ==",
|
|
108
|
+
"/@ledgerhq/hw-app-eth@6.35.7": "sha512-cwBB4xuCfFGatNpF8eVMfCDxD9wbEH3n4Sh5mOR0HoKC3A0Xc2iCDQN8PzqNe2jlctveI8u2+JCeYGWyhFOrew==",
|
|
109
|
+
"/@ledgerhq/hw-transport-mocker@6.28.5": "sha512-NrOoonR5pIQgzCC9HhKaomUtMCDoz42wWP4bjB2v8vh9KKYXQG9T4R5A+I+KGUqYVSCgyI1YW0RM7V2ZhuWdCA==",
|
|
110
|
+
"/@ledgerhq/hw-transport-node-hid-noevents@6.29.5": "sha512-KzLJtH4gzt8AROQm2x9GSPrlqH+Mf7e/UlgQI3ldLcZFJQIaXZUCVjn4EyhMMTwggqjLvczEQNDwZ0zvEiXWuA==",
|
|
111
|
+
"/@ledgerhq/hw-transport-node-hid@6.28.5": "sha512-vH5fu0SiM27gE5UqRwO4aySS2qu1tiCYMf4/XkkYafac4FLwqMIg03RyU7Wp+SQ3srMeXjSCsLbijF1kPSyTKQ==",
|
|
112
|
+
"/@ledgerhq/hw-transport@6.30.5": "sha512-JMl//7BgPBvWxrWyMu82jj6JEYtsQyOyhYtonWNgtxn6KUZWht3gU4gxmLpeIRr+DiS7e50mW7m3GA+EudZmmA==",
|
|
113
|
+
"/@ledgerhq/live-env@2.0.0": "sha512-m6n6/nxG9xd+NUyUsidZkxcjckyovI0L5yAzKpbtRuUx7LQxK+ZGjkUqmdoI1z9erOnmZLfhnAsQqHpPFLle+Q==",
|
|
114
|
+
"/@ledgerhq/logs@6.12.0": "sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==",
|
|
115
|
+
"/@ledgerhq/types-live@6.45.0": "sha512-UKcPVtI53wVOGOrcVkHwPMTNo0ajULlxs4dUmmair2al/yBFi4kosKGPw4i2T43J9rbGnKA+KVuS5G4b0dueXA==",
|
|
103
116
|
"/@nodelib/fs.scandir@2.1.5": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
|
104
117
|
"/@nodelib/fs.stat@2.0.5": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
|
105
118
|
"/@nodelib/fs.walk@1.2.8": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
|
@@ -124,6 +137,7 @@
|
|
|
124
137
|
"/@types/node@20.2.6": "sha512-GQBWUtGoefMEOx/vu+emHEHU5aw6JdDoEtZhoBrHFPZbA/YNRFfN996XbBASEWdvmLSLyv9FKYppYGyZjCaq/g==",
|
|
125
138
|
"/@types/semver@7.5.6": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
|
|
126
139
|
"/@types/stack-utils@2.0.3": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
|
|
140
|
+
"/@types/w3c-web-usb@1.0.10": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ==",
|
|
127
141
|
"/@types/yargs-parser@21.0.3": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
|
|
128
142
|
"/@types/yargs@17.0.32": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
|
|
129
143
|
"/@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@4.9.5)": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==",
|
|
@@ -152,13 +166,20 @@
|
|
|
152
166
|
"/argparse@2.0.1": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
|
153
167
|
"/array-union@2.1.0": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
|
154
168
|
"/asynckit@0.4.0": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
169
|
+
"/axios@1.5.1": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
|
|
170
|
+
"/axios@1.6.8": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
|
|
155
171
|
"/babel-jest@29.7.0(@babel/core@7.23.9)": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
|
|
156
172
|
"/babel-plugin-istanbul@6.1.1": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
|
|
157
173
|
"/babel-plugin-jest-hoist@29.6.3": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
|
|
158
174
|
"/babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9)": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
|
|
159
175
|
"/babel-preset-jest@29.6.3(@babel/core@7.23.9)": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
|
|
160
176
|
"/balanced-match@1.0.2": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
|
177
|
+
"/base-x@3.0.9": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==",
|
|
178
|
+
"/base64-js@1.5.1": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
|
161
179
|
"/bech32@1.1.4": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==",
|
|
180
|
+
"/bignumber.js@9.1.2": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
|
|
181
|
+
"/bindings@1.5.0": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
|
182
|
+
"/bl@4.1.0": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
|
162
183
|
"/bn.js@4.12.0": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
|
|
163
184
|
"/bn.js@5.2.1": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
|
|
164
185
|
"/brace-expansion@1.1.11": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
@@ -167,8 +188,11 @@
|
|
|
167
188
|
"/brorand@1.1.0": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
|
|
168
189
|
"/browserslist@4.22.3": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
|
|
169
190
|
"/bs-logger@0.2.6": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
|
|
191
|
+
"/bs58@4.0.1": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==",
|
|
192
|
+
"/bs58check@2.1.2": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==",
|
|
170
193
|
"/bser@2.1.1": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
|
|
171
194
|
"/buffer-from@1.1.2": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
|
|
195
|
+
"/buffer@5.7.1": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
|
172
196
|
"/callsites@3.1.0": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
|
173
197
|
"/camelcase@5.3.1": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
|
174
198
|
"/camelcase@6.3.0": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
|
|
@@ -176,7 +200,9 @@
|
|
|
176
200
|
"/chalk@2.4.2": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
|
177
201
|
"/chalk@4.1.2": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
178
202
|
"/char-regex@1.0.2": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
|
|
203
|
+
"/chownr@1.1.4": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
|
179
204
|
"/ci-info@3.9.0": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
|
|
205
|
+
"/cipher-base@1.0.4": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
|
|
180
206
|
"/cjs-module-lexer@1.2.3": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
|
|
181
207
|
"/cliui@8.0.1": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
|
182
208
|
"/co@4.6.0": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
|
|
@@ -188,26 +214,33 @@
|
|
|
188
214
|
"/combined-stream@1.0.8": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
189
215
|
"/concat-map@0.0.1": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
|
190
216
|
"/convert-source-map@2.0.0": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
|
217
|
+
"/create-hash@1.2.0": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
|
191
218
|
"/create-jest@29.7.0(@types/node@20.2.6)(ts-node@10.9.1)": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
|
|
192
219
|
"/create-require@1.1.1": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
|
193
220
|
"/cross-spawn@7.0.3": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
|
221
|
+
"/crypto-js@4.2.0": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
|
|
194
222
|
"/dayjs@1.11.10": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==",
|
|
195
223
|
"/debug@4.3.4": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
|
196
224
|
"/decode-uri-component@0.2.2": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
|
225
|
+
"/decompress-response@6.0.0": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
|
|
197
226
|
"/dedent@1.5.1": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
|
|
227
|
+
"/deep-extend@0.6.0": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
|
|
198
228
|
"/deep-is@0.1.4": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
|
|
199
229
|
"/deepmerge@4.3.1": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
|
200
230
|
"/delayed-stream@1.0.0": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
231
|
+
"/detect-libc@2.0.3": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
|
|
201
232
|
"/detect-newline@3.1.0": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
|
|
202
233
|
"/diff-sequences@29.6.3": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
|
|
203
234
|
"/diff@4.0.2": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
|
|
204
235
|
"/dir-glob@3.0.1": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
|
205
236
|
"/doctrine@3.0.0": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
|
|
206
237
|
"/dotenv@16.3.1": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
|
|
238
|
+
"/eip55@2.1.1": "sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA==",
|
|
207
239
|
"/electron-to-chromium@1.4.654": "sha512-hjfFa+Vj4WGLRVTlCQa+IivBkpcp+boGxMQfusOC/me5Y5NfU4wX7wyw+K9p8Cw4tl0BVIZGH2n7y/jMc3w4pg==",
|
|
208
240
|
"/elliptic@6.5.4": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
|
|
209
241
|
"/emittery@0.13.1": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
|
|
210
242
|
"/emoji-regex@8.0.0": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
|
243
|
+
"/end-of-stream@1.4.4": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
|
211
244
|
"/error-ex@1.3.2": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
|
212
245
|
"/escalade@3.1.1": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
|
213
246
|
"/escape-string-regexp@1.0.5": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
|
@@ -223,8 +256,10 @@
|
|
|
223
256
|
"/estraverse@5.3.0": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
|
224
257
|
"/esutils@2.0.3": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
|
225
258
|
"/ethers@5.7.2": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==",
|
|
259
|
+
"/events@3.3.0": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
|
|
226
260
|
"/execa@5.1.1": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
|
227
261
|
"/exit@0.1.2": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
|
|
262
|
+
"/expand-template@2.0.3": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
|
|
228
263
|
"/expect@29.7.0": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
|
|
229
264
|
"/fast-deep-equal@3.1.3": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
230
265
|
"/fast-glob@3.3.2": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
|
|
@@ -233,13 +268,18 @@
|
|
|
233
268
|
"/fastq@1.17.0": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
|
|
234
269
|
"/fb-watchman@2.0.2": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
|
|
235
270
|
"/file-entry-cache@6.0.1": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
|
|
271
|
+
"/file-uri-to-path@1.0.0": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
|
236
272
|
"/fill-range@7.0.1": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
|
237
273
|
"/filter-obj@1.1.0": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
|
|
238
274
|
"/find-up@4.1.0": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
|
239
275
|
"/find-up@5.0.0": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
|
240
276
|
"/flat-cache@3.2.0": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
|
|
241
277
|
"/flatted@3.2.9": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
|
|
278
|
+
"/follow-redirects@1.15.5": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
|
|
279
|
+
"/follow-redirects@1.15.6": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
|
|
242
280
|
"/form-data@3.0.1": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
|
281
|
+
"/form-data@4.0.0": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
|
282
|
+
"/fs-constants@1.0.0": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
|
|
243
283
|
"/fs.realpath@1.0.0": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
|
244
284
|
"/fsevents@2.3.3": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
|
245
285
|
"/function-bind@1.1.2": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
@@ -247,6 +287,7 @@
|
|
|
247
287
|
"/get-caller-file@2.0.5": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
248
288
|
"/get-package-type@0.1.0": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
|
|
249
289
|
"/get-stream@6.0.1": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
|
|
290
|
+
"/github-from-package@0.0.0": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
|
|
250
291
|
"/glob-parent@5.1.2": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
|
251
292
|
"/glob-parent@6.0.2": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
|
252
293
|
"/glob@7.2.3": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
|
@@ -258,17 +299,21 @@
|
|
|
258
299
|
"/graphql@16.8.1": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
|
|
259
300
|
"/has-flag@3.0.0": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
|
260
301
|
"/has-flag@4.0.0": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
302
|
+
"/hash-base@3.1.0": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
|
|
261
303
|
"/hash.js@1.1.7": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
|
|
262
304
|
"/hasown@2.0.0": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
|
|
263
305
|
"/hmac-drbg@1.0.1": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
|
|
264
306
|
"/html-escaper@2.0.2": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
|
|
265
307
|
"/human-signals@2.1.0": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
|
308
|
+
"/ieee754@1.2.1": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
|
266
309
|
"/ignore@5.3.1": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
|
|
267
310
|
"/import-fresh@3.3.0": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
|
268
311
|
"/import-local@3.1.0": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
|
|
269
312
|
"/imurmurhash@0.1.4": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
|
|
270
313
|
"/inflight@1.0.6": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
|
271
314
|
"/inherits@2.0.4": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
315
|
+
"/ini@1.3.8": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
|
316
|
+
"/invariant@2.2.4": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
|
|
272
317
|
"/is-arrayish@0.2.1": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
|
273
318
|
"/is-core-module@2.13.1": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
|
|
274
319
|
"/is-extglob@2.1.1": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
|
@@ -321,6 +366,7 @@
|
|
|
321
366
|
"/json-schema-traverse@0.4.1": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
|
322
367
|
"/json-stable-stringify-without-jsonify@1.0.1": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
|
|
323
368
|
"/json5@2.2.3": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
369
|
+
"/keccak@3.0.4": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==",
|
|
324
370
|
"/keyv@4.5.4": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
|
|
325
371
|
"/kleur@3.0.3": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
|
|
326
372
|
"/leven@3.1.0": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
|
|
@@ -330,24 +376,37 @@
|
|
|
330
376
|
"/locate-path@6.0.0": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
|
331
377
|
"/lodash.memoize@4.1.2": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
|
|
332
378
|
"/lodash.merge@4.6.2": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
|
379
|
+
"/lodash@4.17.21": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
|
380
|
+
"/loose-envify@1.4.0": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
|
333
381
|
"/lru-cache@5.1.1": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
|
334
382
|
"/lru-cache@6.0.0": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
335
383
|
"/make-dir@4.0.0": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
|
|
336
384
|
"/make-error@1.3.6": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
|
337
385
|
"/makeerror@1.0.12": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
|
|
386
|
+
"/md5.js@1.3.5": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
|
|
338
387
|
"/merge-stream@2.0.0": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
|
|
339
388
|
"/merge2@1.4.1": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
|
340
389
|
"/micromatch@4.0.5": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
|
341
390
|
"/mime-db@1.52.0": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
342
391
|
"/mime-types@2.1.35": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
343
392
|
"/mimic-fn@2.1.0": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
|
393
|
+
"/mimic-response@3.1.0": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
|
|
344
394
|
"/minimalistic-assert@1.0.1": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
|
|
345
395
|
"/minimalistic-crypto-utils@1.0.1": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
|
|
346
396
|
"/minimatch@3.1.2": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
347
397
|
"/minimatch@9.0.3": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
|
|
398
|
+
"/minimist@1.2.8": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
|
399
|
+
"/mkdirp-classic@0.5.3": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
|
|
348
400
|
"/ms@2.1.2": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
|
401
|
+
"/napi-build-utils@1.0.2": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
|
|
349
402
|
"/natural-compare@1.4.0": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
|
403
|
+
"/node-abi@3.57.0": "sha512-Dp+A9JWxRaKuHP35H77I4kCKesDy5HUDEmScia2FyncMTOXASMyg251F5PhFoDA5uqBrDDffiLpbqnrZmNXW+g==",
|
|
404
|
+
"/node-addon-api@2.0.2": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
|
|
405
|
+
"/node-addon-api@3.2.1": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
|
|
406
|
+
"/node-addon-api@6.1.0": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
|
|
350
407
|
"/node-fetch@2.6.4": "sha512-aD1fO+xtLiSCc9vuD+sYMxpIuQyhHscGSkBEo2o5LTV/3bTEAYvdUii29n8LlO5uLCmWdGP7uVUVXFo5SRdkLA==",
|
|
408
|
+
"/node-gyp-build@4.8.0": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
|
|
409
|
+
"/node-hid@2.2.0": "sha512-vj48zh9j555DZzUhMc8tk/qw6xPFrDyPBH1ST1Z/hWaA/juBJw7IuSxPeOgpzNFNU36mGYj+THioRMt1xOdm/g==",
|
|
351
410
|
"/node-int64@0.4.0": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
|
|
352
411
|
"/node-releases@2.0.14": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
|
353
412
|
"/normalize-path@3.0.0": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
|
@@ -371,14 +430,21 @@
|
|
|
371
430
|
"/picomatch@2.3.1": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
|
372
431
|
"/pirates@4.0.6": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
|
|
373
432
|
"/pkg-dir@4.2.0": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
|
|
433
|
+
"/prebuild-install@7.1.2": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
|
|
374
434
|
"/prelude-ls@1.2.1": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
|
|
375
435
|
"/pretty-format@29.7.0": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
|
|
376
436
|
"/prompts@2.4.2": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
|
|
437
|
+
"/proxy-from-env@1.1.0": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
|
438
|
+
"/pump@3.0.0": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
|
377
439
|
"/punycode@2.3.1": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
|
378
440
|
"/pure-rand@6.0.4": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
|
|
379
441
|
"/query-string@7.1.3": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
|
|
380
442
|
"/queue-microtask@1.2.3": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
|
443
|
+
"/rc@1.2.8": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
|
|
444
|
+
"/react-dom@18.2.0(react@18.2.0)": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
|
|
381
445
|
"/react-is@18.2.0": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
|
|
446
|
+
"/react@18.2.0": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
|
|
447
|
+
"/readable-stream@3.6.2": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
|
382
448
|
"/require-directory@2.1.1": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
|
383
449
|
"/resolve-cwd@3.0.0": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
|
|
384
450
|
"/resolve-from@4.0.0": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
|
@@ -387,13 +453,20 @@
|
|
|
387
453
|
"/resolve@1.22.8": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
|
|
388
454
|
"/reusify@1.0.4": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
|
389
455
|
"/rimraf@3.0.2": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
|
456
|
+
"/ripemd160@2.0.2": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
|
|
390
457
|
"/run-parallel@1.2.0": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
|
458
|
+
"/rxjs@7.8.1": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
|
|
459
|
+
"/safe-buffer@5.2.1": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
|
460
|
+
"/scheduler@0.23.0": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
|
|
391
461
|
"/scrypt-js@3.0.1": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==",
|
|
392
462
|
"/semver@6.3.1": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
|
393
463
|
"/semver@7.5.4": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
|
464
|
+
"/sha.js@2.4.11": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
|
394
465
|
"/shebang-command@2.0.0": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
|
395
466
|
"/shebang-regex@3.0.0": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
|
396
467
|
"/signal-exit@3.0.7": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
|
468
|
+
"/simple-concat@1.0.1": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
|
|
469
|
+
"/simple-get@4.0.1": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
|
|
397
470
|
"/sisteransi@1.0.5": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
|
|
398
471
|
"/slash@3.0.0": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
|
399
472
|
"/source-map-support@0.5.13": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
|
|
@@ -404,14 +477,18 @@
|
|
|
404
477
|
"/strict-uri-encode@2.0.0": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
|
|
405
478
|
"/string-length@4.0.2": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
|
|
406
479
|
"/string-width@4.2.3": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
480
|
+
"/string_decoder@1.3.0": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
|
407
481
|
"/strip-ansi@6.0.1": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
408
482
|
"/strip-bom@4.0.0": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
|
|
409
483
|
"/strip-final-newline@2.0.0": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
|
484
|
+
"/strip-json-comments@2.0.1": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
|
|
410
485
|
"/strip-json-comments@3.1.1": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
|
|
411
486
|
"/supports-color@5.5.0": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
|
412
487
|
"/supports-color@7.2.0": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
|
413
488
|
"/supports-color@8.1.1": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
|
|
414
489
|
"/supports-preserve-symlinks-flag@1.0.0": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
|
490
|
+
"/tar-fs@2.1.1": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
|
|
491
|
+
"/tar-stream@2.2.0": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
|
|
415
492
|
"/test-exclude@6.0.0": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
|
|
416
493
|
"/text-table@0.2.0": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
|
|
417
494
|
"/tmpl@1.0.5": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
|
|
@@ -421,6 +498,8 @@
|
|
|
421
498
|
"/ts-api-utils@1.0.3(typescript@4.9.5)": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
|
|
422
499
|
"/ts-jest@29.1.1(@babel/core@7.23.9)(jest@29.6.2)(typescript@4.9.5)": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
|
|
423
500
|
"/ts-node@10.9.1(@types/node@20.2.6)(typescript@4.9.5)": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
|
|
501
|
+
"/tslib@2.6.2": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
|
502
|
+
"/tunnel-agent@0.6.0": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
|
|
424
503
|
"/type-check@0.4.0": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
|
|
425
504
|
"/type-detect@4.0.8": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
|
426
505
|
"/type-fest@0.20.2": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
|
|
@@ -428,6 +507,9 @@
|
|
|
428
507
|
"/typescript@4.9.5": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
|
|
429
508
|
"/update-browserslist-db@1.0.13(browserslist@4.22.3)": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
|
|
430
509
|
"/uri-js@4.4.1": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
|
510
|
+
"/usb@2.9.0": "sha512-G0I/fPgfHUzWH8xo2KkDxTTFruUWfppgSFJ+bQxz/kVY2x15EQ/XDB7dqD1G432G4gBG4jYQuF3U7j/orSs5nw==",
|
|
511
|
+
"/util-deprecate@1.0.2": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
|
512
|
+
"/utility-types@3.11.0": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
|
|
431
513
|
"/v8-compile-cache-lib@3.0.1": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
|
|
432
514
|
"/v8-to-istanbul@9.2.0": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==",
|
|
433
515
|
"/walker@1.0.8": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
|
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cityofzion/bs-ethereum",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "1.1.0",
|
|
6
|
+
"tag": "@cityofzion/bs-ethereum_v1.1.0",
|
|
7
|
+
"date": "Thu, 04 Apr 2024 19:52:20 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Add ledger support"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"patch": [
|
|
15
|
+
{
|
|
16
|
+
"comment": "Change Goerli to Sepolia and call RPC using testnet instead of Bitquery"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"dependency": [
|
|
20
|
+
{
|
|
21
|
+
"comment": "Updating dependency \"@cityofzion/blockchain-service\" to `0.10.0`"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
},
|
|
4
26
|
{
|
|
5
27
|
"version": "1.0.4",
|
|
6
28
|
"tag": "@cityofzion/bs-ethereum_v1.0.4",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# Change Log - @cityofzion/bs-ethereum
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 04 Apr 2024 19:52:20 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 1.1.0
|
|
6
|
+
Thu, 04 Apr 2024 19:52:20 GMT
|
|
7
|
+
|
|
8
|
+
### Minor changes
|
|
9
|
+
|
|
10
|
+
- Add ledger support
|
|
11
|
+
|
|
12
|
+
### Patches
|
|
13
|
+
|
|
14
|
+
- Change Goerli to Sepolia and call RPC using testnet instead of Bitquery
|
|
4
15
|
|
|
5
16
|
## 1.0.4
|
|
6
17
|
Mon, 04 Mar 2024 21:53:09 GMT
|
package/dist/BSEthereum.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Account, AccountWithDerivationPath, BSCalculableFee, BSWithNameService, BSWithNft, BlockchainDataService, BlockchainService, ExchangeDataService, Network, NftDataService, PartialBy, Token, TransferParam } from '@cityofzion/blockchain-service';
|
|
2
|
-
|
|
1
|
+
import { Account, AccountWithDerivationPath, BSCalculableFee, BSWithLedger, BSWithNameService, BSWithNft, BlockchainDataService, BlockchainService, ExchangeDataService, Network, NftDataService, PartialBy, Token, TransferParam } from '@cityofzion/blockchain-service';
|
|
2
|
+
import { LedgerServiceEthereum } from './LedgerServiceEthereum';
|
|
3
|
+
export declare class BSEthereum<BSCustomName extends string = string> implements BlockchainService, BSWithNft, BSWithNameService, BSCalculableFee, BSWithLedger {
|
|
3
4
|
readonly blockchainName: BSCustomName;
|
|
4
5
|
readonly feeToken: Token;
|
|
5
6
|
readonly derivationPath: string;
|
|
6
7
|
private readonly bitqueryApiKey;
|
|
7
8
|
blockchainDataService: BlockchainDataService;
|
|
8
9
|
exchangeDataService: ExchangeDataService;
|
|
10
|
+
ledgerService: LedgerServiceEthereum;
|
|
9
11
|
tokens: Token[];
|
|
10
12
|
nftDataService: NftDataService;
|
|
11
13
|
network: Network;
|
|
@@ -17,9 +19,10 @@ export declare class BSEthereum<BSCustomName extends string = string> implements
|
|
|
17
19
|
validateNameServiceDomainFormat(domainName: string): boolean;
|
|
18
20
|
generateAccountFromMnemonic(mnemonic: string[] | string, index: number): AccountWithDerivationPath;
|
|
19
21
|
generateAccountFromKey(key: string): Account;
|
|
22
|
+
generateAccountFromPublicKey(publicKey: string): Account;
|
|
20
23
|
decrypt(json: string, password: string): Promise<Account>;
|
|
21
24
|
encrypt(key: string, password: string): Promise<string>;
|
|
22
|
-
transfer(
|
|
23
|
-
calculateTransferFee({
|
|
25
|
+
transfer(param: TransferParam): Promise<string>;
|
|
26
|
+
calculateTransferFee({ intent }: TransferParam): Promise<string>;
|
|
24
27
|
resolveNameServiceDomain(domainName: string): Promise<string>;
|
|
25
28
|
}
|
package/dist/BSEthereum.js
CHANGED
|
@@ -42,8 +42,10 @@ const BitqueryEDSEthereum_1 = require("./BitqueryEDSEthereum");
|
|
|
42
42
|
const GhostMarketNDSEthereum_1 = require("./GhostMarketNDSEthereum");
|
|
43
43
|
const RpcBDSEthereum_1 = require("./RpcBDSEthereum");
|
|
44
44
|
const BitqueryBDSEthereum_1 = require("./BitqueryBDSEthereum");
|
|
45
|
+
const LedgerServiceEthereum_1 = require("./LedgerServiceEthereum");
|
|
45
46
|
class BSEthereum {
|
|
46
47
|
constructor(blockchainName, network, bitqueryApiKey) {
|
|
48
|
+
this.ledgerService = new LedgerServiceEthereum_1.LedgerServiceEthereum();
|
|
47
49
|
this.blockchainName = blockchainName;
|
|
48
50
|
this.derivationPath = constants_1.DERIVATION_PATH;
|
|
49
51
|
this.tokens = constants_1.TOKENS[network.type];
|
|
@@ -58,7 +60,7 @@ class BSEthereum {
|
|
|
58
60
|
url: (_a = param.url) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_URL_BY_NETWORK_TYPE[param.type],
|
|
59
61
|
};
|
|
60
62
|
this.network = network;
|
|
61
|
-
if (network.type
|
|
63
|
+
if (network.type !== 'mainnet') {
|
|
62
64
|
this.blockchainDataService = new RpcBDSEthereum_1.RpcBDSEthereum(network);
|
|
63
65
|
}
|
|
64
66
|
else {
|
|
@@ -109,6 +111,14 @@ class BSEthereum {
|
|
|
109
111
|
type: 'privateKey',
|
|
110
112
|
};
|
|
111
113
|
}
|
|
114
|
+
generateAccountFromPublicKey(publicKey) {
|
|
115
|
+
const address = ethers_1.ethers.utils.computeAddress(publicKey);
|
|
116
|
+
return {
|
|
117
|
+
address,
|
|
118
|
+
key: publicKey,
|
|
119
|
+
type: 'publicKey',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
112
122
|
decrypt(json, password) {
|
|
113
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
124
|
const wallet = yield ethers_1.ethers.Wallet.fromEncryptedJson(json, password);
|
|
@@ -125,44 +135,51 @@ class BSEthereum {
|
|
|
125
135
|
return wallet.encrypt(password);
|
|
126
136
|
});
|
|
127
137
|
}
|
|
128
|
-
transfer(
|
|
138
|
+
transfer(param) {
|
|
129
139
|
var _a;
|
|
130
140
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
141
|
const provider = new ethers_1.ethers.providers.JsonRpcProvider(this.network.url);
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
142
|
+
const signTransactionFunction = param.isLedger
|
|
143
|
+
? yield this.ledgerService.getSignTransactionFunction(param.ledgerTransport)
|
|
144
|
+
: new ethers_1.ethers.Wallet(param.senderAccount.key, provider).signTransaction;
|
|
145
|
+
const decimals = (_a = param.intent.tokenDecimals) !== null && _a !== void 0 ? _a : 18;
|
|
146
|
+
const amount = ethersBigNumber.parseFixed(param.intent.amount, decimals);
|
|
147
|
+
let transactionParams;
|
|
148
|
+
const isNative = constants_1.NATIVE_ASSETS.some(asset => asset.hash === param.intent.tokenHash);
|
|
149
|
+
if (isNative) {
|
|
150
|
+
transactionParams = {
|
|
151
|
+
to: param.intent.receiverAddress,
|
|
152
|
+
value: amount,
|
|
153
|
+
};
|
|
140
154
|
}
|
|
141
155
|
else {
|
|
142
|
-
|
|
143
|
-
to
|
|
144
|
-
|
|
145
|
-
|
|
156
|
+
const contract = new ethers_1.ethers.Contract(param.intent.tokenHash, [
|
|
157
|
+
'function transfer(address to, uint amount) returns (bool)',
|
|
158
|
+
]);
|
|
159
|
+
transactionParams = yield contract.populateTransaction.transfer(param.intent.receiverAddress, amount);
|
|
146
160
|
}
|
|
147
|
-
|
|
161
|
+
const voidSigner = new ethers_1.ethers.VoidSigner(param.senderAccount.address, provider);
|
|
162
|
+
const transaction = yield voidSigner.populateTransaction(transactionParams);
|
|
163
|
+
const signedTransaction = yield signTransactionFunction(transaction);
|
|
164
|
+
const transactionResponse = yield provider.sendTransaction(signedTransaction);
|
|
165
|
+
return transactionResponse.hash;
|
|
148
166
|
});
|
|
149
167
|
}
|
|
150
|
-
calculateTransferFee({
|
|
168
|
+
calculateTransferFee({ intent }) {
|
|
151
169
|
var _a;
|
|
152
170
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
171
|
const provider = new ethers_1.ethers.providers.JsonRpcProvider(this.network.url);
|
|
154
|
-
const wallet = new ethers_1.ethers.Wallet(senderAccount.key, provider);
|
|
155
172
|
const gasPrice = yield provider.getGasPrice();
|
|
156
173
|
let estimated;
|
|
157
174
|
const isNative = constants_1.NATIVE_ASSETS.some(asset => asset.hash === intent.tokenHash);
|
|
158
175
|
const decimals = (_a = intent.tokenDecimals) !== null && _a !== void 0 ? _a : 18;
|
|
159
176
|
const amount = ethersBigNumber.parseFixed(intent.amount, decimals);
|
|
160
177
|
if (!isNative) {
|
|
161
|
-
const contract = new ethers_1.ethers.Contract(intent.tokenHash, ['function transfer(address to, uint amount) returns (bool)'],
|
|
178
|
+
const contract = new ethers_1.ethers.Contract(intent.tokenHash, ['function transfer(address to, uint amount) returns (bool)'], provider);
|
|
162
179
|
estimated = yield contract.estimateGas.transfer(intent.receiverAddress, amount);
|
|
163
180
|
}
|
|
164
181
|
else {
|
|
165
|
-
estimated = yield
|
|
182
|
+
estimated = yield provider.estimateGas({
|
|
166
183
|
to: intent.receiverAddress,
|
|
167
184
|
value: amount,
|
|
168
185
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LedgerService } from '@cityofzion/blockchain-service';
|
|
2
|
+
import Transport from '@ledgerhq/hw-transport';
|
|
3
|
+
import { ethers } from 'ethers';
|
|
4
|
+
export declare class LedgerServiceEthereum implements LedgerService {
|
|
5
|
+
private readonly defaultPath;
|
|
6
|
+
getAddress(transport: Transport): Promise<string>;
|
|
7
|
+
getPublicKey(transport: Transport): Promise<string>;
|
|
8
|
+
getSignTransactionFunction(transport: Transport): Promise<(transaction: ethers.providers.TransactionRequest) => Promise<string>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.LedgerServiceEthereum = void 0;
|
|
36
|
+
const hw_app_eth_1 = __importStar(require("@ledgerhq/hw-app-eth"));
|
|
37
|
+
const ethers_1 = require("ethers");
|
|
38
|
+
class LedgerServiceEthereum {
|
|
39
|
+
constructor() {
|
|
40
|
+
this.defaultPath = "44'/60'/0'/0/0";
|
|
41
|
+
}
|
|
42
|
+
getAddress(transport) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const ledgerApp = new hw_app_eth_1.default(transport);
|
|
45
|
+
const { address } = yield ledgerApp.getAddress(this.defaultPath);
|
|
46
|
+
return address;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
getPublicKey(transport) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const ledgerApp = new hw_app_eth_1.default(transport);
|
|
52
|
+
const { publicKey } = yield ledgerApp.getAddress(this.defaultPath);
|
|
53
|
+
return '0x' + publicKey;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
getSignTransactionFunction(transport) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
return (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const ledgerApp = new hw_app_eth_1.default(transport);
|
|
60
|
+
const unsignedTransaction = Object.assign(Object.assign({}, transaction), { nonce: transaction.nonce ? ethers_1.ethers.BigNumber.from(transaction.nonce).toNumber() : undefined });
|
|
61
|
+
const serializedUnsignedTransaction = ethers_1.ethers.utils.serializeTransaction(unsignedTransaction).substring(2);
|
|
62
|
+
const resolution = yield hw_app_eth_1.ledgerService.resolveTransaction(serializedUnsignedTransaction, {}, {});
|
|
63
|
+
const signature = yield ledgerApp.signTransaction(this.defaultPath, serializedUnsignedTransaction, resolution);
|
|
64
|
+
return ethers_1.ethers.utils.serializeTransaction(unsignedTransaction, {
|
|
65
|
+
v: ethers_1.ethers.BigNumber.from('0x' + signature.v).toNumber(),
|
|
66
|
+
r: '0x' + signature.r,
|
|
67
|
+
s: '0x' + signature.s,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.LedgerServiceEthereum = LedgerServiceEthereum;
|
package/dist/constants.js
CHANGED
|
@@ -13,7 +13,7 @@ exports.TOKENS = {
|
|
|
13
13
|
exports.NATIVE_ASSETS = common_json_1.default;
|
|
14
14
|
exports.DEFAULT_URL_BY_NETWORK_TYPE = {
|
|
15
15
|
mainnet: 'https://ethereum-mainnet-rpc.allthatnode.com',
|
|
16
|
-
testnet: 'https://ethereum-
|
|
16
|
+
testnet: 'https://ethereum-sepolia-rpc.publicnode.com',
|
|
17
17
|
custom: 'http://127.0.0.1:8545',
|
|
18
18
|
};
|
|
19
19
|
exports.BITQUERY_URL = 'https://graphql.bitquery.io';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cityofzion/bs-ethereum",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"repository": "https://github.com/CityOfZion/blockchain-services",
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
"@ethersproject/json-wallets": "5.7.0",
|
|
17
17
|
"@ethersproject/bytes": "5.7.0",
|
|
18
18
|
"@ethersproject/bignumber": "5.7.0",
|
|
19
|
-
"@
|
|
19
|
+
"@ledgerhq/hw-transport-node-hid": "~6.28.5",
|
|
20
|
+
"@ledgerhq/hw-transport": "~6.30.5",
|
|
21
|
+
"@ledgerhq/hw-app-eth": "~6.35.7",
|
|
22
|
+
"@cityofzion/blockchain-service": "0.10.0"
|
|
20
23
|
},
|
|
21
24
|
"devDependencies": {
|
|
22
25
|
"@types/jest": "29.5.3",
|
package/src/BSEthereum.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
Account,
|
|
3
3
|
AccountWithDerivationPath,
|
|
4
4
|
BSCalculableFee,
|
|
5
|
+
BSWithLedger,
|
|
5
6
|
BSWithNameService,
|
|
6
7
|
BSWithNft,
|
|
7
8
|
BlockchainDataService,
|
|
@@ -22,9 +23,9 @@ import { BitqueryEDSEthereum } from './BitqueryEDSEthereum'
|
|
|
22
23
|
import { GhostMarketNDSEthereum } from './GhostMarketNDSEthereum'
|
|
23
24
|
import { RpcBDSEthereum } from './RpcBDSEthereum'
|
|
24
25
|
import { BitqueryBDSEthereum } from './BitqueryBDSEthereum'
|
|
25
|
-
|
|
26
|
+
import { LedgerServiceEthereum } from './LedgerServiceEthereum'
|
|
26
27
|
export class BSEthereum<BSCustomName extends string = string>
|
|
27
|
-
implements BlockchainService, BSWithNft, BSWithNameService, BSCalculableFee
|
|
28
|
+
implements BlockchainService, BSWithNft, BSWithNameService, BSCalculableFee, BSWithLedger
|
|
28
29
|
{
|
|
29
30
|
readonly blockchainName: BSCustomName
|
|
30
31
|
readonly feeToken: Token
|
|
@@ -33,6 +34,7 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
33
34
|
|
|
34
35
|
blockchainDataService!: BlockchainDataService
|
|
35
36
|
exchangeDataService!: ExchangeDataService
|
|
37
|
+
ledgerService: LedgerServiceEthereum = new LedgerServiceEthereum()
|
|
36
38
|
tokens: Token[]
|
|
37
39
|
nftDataService!: NftDataService
|
|
38
40
|
network!: Network
|
|
@@ -54,7 +56,7 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
54
56
|
}
|
|
55
57
|
this.network = network
|
|
56
58
|
|
|
57
|
-
if (network.type
|
|
59
|
+
if (network.type !== 'mainnet') {
|
|
58
60
|
this.blockchainDataService = new RpcBDSEthereum(network)
|
|
59
61
|
} else {
|
|
60
62
|
this.blockchainDataService = new BitqueryBDSEthereum(network, this.bitqueryApiKey)
|
|
@@ -104,6 +106,7 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
104
106
|
|
|
105
107
|
generateAccountFromKey(key: string): Account {
|
|
106
108
|
const wallet = new ethers.Wallet(key)
|
|
109
|
+
|
|
107
110
|
return {
|
|
108
111
|
address: wallet.address,
|
|
109
112
|
key,
|
|
@@ -111,6 +114,15 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
|
|
117
|
+
generateAccountFromPublicKey(publicKey: string): Account {
|
|
118
|
+
const address = ethers.utils.computeAddress(publicKey)
|
|
119
|
+
return {
|
|
120
|
+
address,
|
|
121
|
+
key: publicKey,
|
|
122
|
+
type: 'publicKey',
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
114
126
|
async decrypt(json: string, password: string): Promise<Account> {
|
|
115
127
|
const wallet = await ethers.Wallet.fromEncryptedJson(json, password)
|
|
116
128
|
return {
|
|
@@ -125,35 +137,41 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
125
137
|
return wallet.encrypt(password)
|
|
126
138
|
}
|
|
127
139
|
|
|
128
|
-
async transfer(
|
|
140
|
+
async transfer(param: TransferParam): Promise<string> {
|
|
129
141
|
const provider = new ethers.providers.JsonRpcProvider(this.network.url)
|
|
130
|
-
const wallet = new ethers.Wallet(senderAccount.key, provider)
|
|
131
142
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
143
|
+
const signTransactionFunction = param.isLedger
|
|
144
|
+
? await this.ledgerService.getSignTransactionFunction(param.ledgerTransport)
|
|
145
|
+
: new ethers.Wallet(param.senderAccount.key, provider).signTransaction
|
|
135
146
|
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
transaction = await wallet.sendTransaction({
|
|
146
|
-
to: intent.receiverAddress,
|
|
147
|
+
const decimals = param.intent.tokenDecimals ?? 18
|
|
148
|
+
const amount = ethersBigNumber.parseFixed(param.intent.amount, decimals)
|
|
149
|
+
|
|
150
|
+
let transactionParams: ethers.utils.Deferrable<ethers.providers.TransactionRequest>
|
|
151
|
+
|
|
152
|
+
const isNative = NATIVE_ASSETS.some(asset => asset.hash === param.intent.tokenHash)
|
|
153
|
+
if (isNative) {
|
|
154
|
+
transactionParams = {
|
|
155
|
+
to: param.intent.receiverAddress,
|
|
147
156
|
value: amount,
|
|
148
|
-
}
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
const contract = new ethers.Contract(param.intent.tokenHash, [
|
|
160
|
+
'function transfer(address to, uint amount) returns (bool)',
|
|
161
|
+
])
|
|
162
|
+
transactionParams = await contract.populateTransaction.transfer(param.intent.receiverAddress, amount)
|
|
149
163
|
}
|
|
150
164
|
|
|
151
|
-
|
|
165
|
+
const voidSigner = new ethers.VoidSigner(param.senderAccount.address, provider)
|
|
166
|
+
const transaction = await voidSigner.populateTransaction(transactionParams)
|
|
167
|
+
|
|
168
|
+
const signedTransaction = await signTransactionFunction(transaction)
|
|
169
|
+
const transactionResponse = await provider.sendTransaction(signedTransaction)
|
|
170
|
+
return transactionResponse.hash
|
|
152
171
|
}
|
|
153
172
|
|
|
154
|
-
async calculateTransferFee({
|
|
173
|
+
async calculateTransferFee({ intent }: TransferParam): Promise<string> {
|
|
155
174
|
const provider = new ethers.providers.JsonRpcProvider(this.network.url)
|
|
156
|
-
const wallet = new ethers.Wallet(senderAccount.key, provider)
|
|
157
175
|
|
|
158
176
|
const gasPrice = await provider.getGasPrice()
|
|
159
177
|
|
|
@@ -167,12 +185,12 @@ export class BSEthereum<BSCustomName extends string = string>
|
|
|
167
185
|
const contract = new ethers.Contract(
|
|
168
186
|
intent.tokenHash,
|
|
169
187
|
['function transfer(address to, uint amount) returns (bool)'],
|
|
170
|
-
|
|
188
|
+
provider
|
|
171
189
|
)
|
|
172
190
|
|
|
173
191
|
estimated = await contract.estimateGas.transfer(intent.receiverAddress, amount)
|
|
174
192
|
} else {
|
|
175
|
-
estimated = await
|
|
193
|
+
estimated = await provider.estimateGas({
|
|
176
194
|
to: intent.receiverAddress,
|
|
177
195
|
value: amount,
|
|
178
196
|
})
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LedgerService } from '@cityofzion/blockchain-service'
|
|
2
|
+
import Transport from '@ledgerhq/hw-transport'
|
|
3
|
+
import LedgerEthereumApp, { ledgerService as LedgerEthereumAppService } from '@ledgerhq/hw-app-eth'
|
|
4
|
+
import { ethers } from 'ethers'
|
|
5
|
+
|
|
6
|
+
export class LedgerServiceEthereum implements LedgerService {
|
|
7
|
+
private readonly defaultPath = "44'/60'/0'/0/0"
|
|
8
|
+
|
|
9
|
+
async getAddress(transport: Transport): Promise<string> {
|
|
10
|
+
const ledgerApp = new LedgerEthereumApp(transport)
|
|
11
|
+
const { address } = await ledgerApp.getAddress(this.defaultPath)
|
|
12
|
+
|
|
13
|
+
return address
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async getPublicKey(transport: Transport): Promise<string> {
|
|
17
|
+
const ledgerApp = new LedgerEthereumApp(transport)
|
|
18
|
+
const { publicKey } = await ledgerApp.getAddress(this.defaultPath)
|
|
19
|
+
|
|
20
|
+
return '0x' + publicKey
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async getSignTransactionFunction(transport: Transport) {
|
|
24
|
+
return async (transaction: ethers.providers.TransactionRequest): Promise<string> => {
|
|
25
|
+
const ledgerApp = new LedgerEthereumApp(transport)
|
|
26
|
+
|
|
27
|
+
const unsignedTransaction: ethers.utils.UnsignedTransaction = {
|
|
28
|
+
...transaction,
|
|
29
|
+
nonce: transaction.nonce ? ethers.BigNumber.from(transaction.nonce).toNumber() : undefined,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const serializedUnsignedTransaction = ethers.utils.serializeTransaction(unsignedTransaction).substring(2)
|
|
33
|
+
|
|
34
|
+
const resolution = await LedgerEthereumAppService.resolveTransaction(serializedUnsignedTransaction, {}, {})
|
|
35
|
+
const signature = await ledgerApp.signTransaction(this.defaultPath, serializedUnsignedTransaction, resolution)
|
|
36
|
+
|
|
37
|
+
return ethers.utils.serializeTransaction(unsignedTransaction, {
|
|
38
|
+
v: ethers.BigNumber.from('0x' + signature.v).toNumber(),
|
|
39
|
+
r: '0x' + signature.r,
|
|
40
|
+
s: '0x' + signature.s,
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ethers } from 'ethers'
|
|
2
2
|
import { BSEthereum } from '../BSEthereum'
|
|
3
3
|
import { Account } from '@cityofzion/blockchain-service'
|
|
4
|
+
import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'
|
|
4
5
|
|
|
5
6
|
let bsEthereum: BSEthereum
|
|
6
7
|
let wallet: ethers.Wallet
|
|
@@ -90,7 +91,7 @@ describe('BSEthereum', () => {
|
|
|
90
91
|
})
|
|
91
92
|
|
|
92
93
|
expect(fee).toEqual(expect.any(String))
|
|
93
|
-
})
|
|
94
|
+
}, 50000)
|
|
94
95
|
|
|
95
96
|
it.skip('Should be able to transfer a native token', async () => {
|
|
96
97
|
const account = bsEthereum.generateAccountFromKey(process.env.TESTNET_PRIVATE_KEY as string)
|
|
@@ -124,6 +125,46 @@ describe('BSEthereum', () => {
|
|
|
124
125
|
expect(transactionHash).toEqual(expect.any(String))
|
|
125
126
|
}, 50000)
|
|
126
127
|
|
|
128
|
+
it.skip('Should be able to transfer a native token with ledger', async () => {
|
|
129
|
+
const transport = await TransportNodeHid.create()
|
|
130
|
+
const publicKey = await bsEthereum.ledgerService.getPublicKey(transport)
|
|
131
|
+
const account = bsEthereum.generateAccountFromPublicKey(publicKey)
|
|
132
|
+
|
|
133
|
+
const transactionHash = await bsEthereum.transfer({
|
|
134
|
+
senderAccount: account,
|
|
135
|
+
intent: {
|
|
136
|
+
amount: '0.00000001',
|
|
137
|
+
receiverAddress: '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89',
|
|
138
|
+
tokenDecimals: 18,
|
|
139
|
+
tokenHash: '-',
|
|
140
|
+
},
|
|
141
|
+
isLedger: true,
|
|
142
|
+
ledgerTransport: transport,
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
expect(transactionHash).toEqual(expect.any(String))
|
|
146
|
+
}, 50000)
|
|
147
|
+
|
|
148
|
+
it.skip('Should be able to transfer a ERC20 token with ledger', async () => {
|
|
149
|
+
const transport = await TransportNodeHid.create()
|
|
150
|
+
const publicKey = await bsEthereum.ledgerService.getPublicKey(transport)
|
|
151
|
+
const account = bsEthereum.generateAccountFromPublicKey(publicKey)
|
|
152
|
+
|
|
153
|
+
const transactionHash = await bsEthereum.transfer({
|
|
154
|
+
senderAccount: account,
|
|
155
|
+
intent: {
|
|
156
|
+
amount: '0.00000001',
|
|
157
|
+
receiverAddress: '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89',
|
|
158
|
+
tokenDecimals: 18,
|
|
159
|
+
tokenHash: '0xcf185f2F3Fe19D82bFdcee59E3330FD7ba5f27ce',
|
|
160
|
+
},
|
|
161
|
+
isLedger: true,
|
|
162
|
+
ledgerTransport: transport,
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
expect(transactionHash).toEqual(expect.any(String))
|
|
166
|
+
}, 50000)
|
|
167
|
+
|
|
127
168
|
it('Should be able to resolve a name service domain', async () => {
|
|
128
169
|
const address = await bsEthereum.resolveNameServiceDomain('alice.eth')
|
|
129
170
|
expect(address).toEqual('0xa974890156A3649A23a6C0f2ebd77D6F7A7333d4')
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { BitqueryBDSEthereum } from '../BitqueryBDSEthereum'
|
|
2
|
+
import { DEFAULT_URL_BY_NETWORK_TYPE } from '../constants'
|
|
3
|
+
|
|
4
|
+
const bitqueryBDSEthereum = new BitqueryBDSEthereum(
|
|
5
|
+
{ type: 'testnet', url: DEFAULT_URL_BY_NETWORK_TYPE.testnet },
|
|
6
|
+
process.env.BITQUERY_API_KEY as string
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
describe('BitqueryBDSEthereum', () => {
|
|
10
|
+
it('Should be able to get transaction - %s', async () => {
|
|
11
|
+
const hash = '0x43fa3015d077a13888409cfbd6228df8900abcd5314ff11ea6ce0c49e8b7c94d'
|
|
12
|
+
const transaction = await bitqueryBDSEthereum.getTransaction(hash)
|
|
13
|
+
|
|
14
|
+
expect(transaction).toEqual(
|
|
15
|
+
expect.objectContaining({
|
|
16
|
+
block: expect.any(Number),
|
|
17
|
+
hash,
|
|
18
|
+
notifications: [],
|
|
19
|
+
time: expect.any(Number),
|
|
20
|
+
})
|
|
21
|
+
)
|
|
22
|
+
transaction.transfers.forEach(transfer => {
|
|
23
|
+
expect(transfer).toEqual(
|
|
24
|
+
expect.objectContaining({
|
|
25
|
+
from: expect.any(String),
|
|
26
|
+
to: expect.any(String),
|
|
27
|
+
contractHash: expect.any(String),
|
|
28
|
+
amount: expect.any(String),
|
|
29
|
+
type: expect.any(String),
|
|
30
|
+
})
|
|
31
|
+
)
|
|
32
|
+
})
|
|
33
|
+
}, 10000)
|
|
34
|
+
|
|
35
|
+
it('Should be able to get transactions of address - %s', async () => {
|
|
36
|
+
const address = '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89'
|
|
37
|
+
const response = await bitqueryBDSEthereum.getTransactionsByAddress({ address: address, page: 1 })
|
|
38
|
+
expect(response.totalCount).toBeGreaterThan(0)
|
|
39
|
+
response.transactions.forEach(transaction => {
|
|
40
|
+
expect(transaction).toEqual(
|
|
41
|
+
expect.objectContaining({
|
|
42
|
+
block: expect.any(Number),
|
|
43
|
+
hash: expect.any(String),
|
|
44
|
+
notifications: [],
|
|
45
|
+
time: expect.any(Number),
|
|
46
|
+
fee: expect.any(String),
|
|
47
|
+
})
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
transaction.transfers.forEach(transfer => {
|
|
51
|
+
expect(transfer).toEqual(
|
|
52
|
+
expect.objectContaining({
|
|
53
|
+
from: expect.any(String),
|
|
54
|
+
to: expect.any(String),
|
|
55
|
+
contractHash: expect.any(String),
|
|
56
|
+
amount: expect.any(String),
|
|
57
|
+
type: expect.any(String),
|
|
58
|
+
})
|
|
59
|
+
)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
}, 10000)
|
|
63
|
+
|
|
64
|
+
it('Should be able to get eth info - %s', async () => {
|
|
65
|
+
const hash = '-'
|
|
66
|
+
const token = await bitqueryBDSEthereum.getTokenInfo(hash)
|
|
67
|
+
|
|
68
|
+
expect(token).toEqual({
|
|
69
|
+
symbol: 'ETH',
|
|
70
|
+
name: 'Ethereum',
|
|
71
|
+
hash: '-',
|
|
72
|
+
decimals: 18,
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
it('Should be able to get token info - %s', async () => {
|
|
77
|
+
const hash = '0xBA62BCfcAaFc6622853cca2BE6Ac7d845BC0f2Dc'
|
|
78
|
+
const token = await bitqueryBDSEthereum.getTokenInfo(hash)
|
|
79
|
+
|
|
80
|
+
expect(token).toEqual({
|
|
81
|
+
hash: '0xba62bcfcaafc6622853cca2be6ac7d845bc0f2dc',
|
|
82
|
+
name: 'FaucetToken',
|
|
83
|
+
symbol: 'FAU',
|
|
84
|
+
decimals: 18,
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('Should be able to get balance - %s', async () => {
|
|
89
|
+
const address = '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89'
|
|
90
|
+
const balance = await bitqueryBDSEthereum.getBalance(address)
|
|
91
|
+
|
|
92
|
+
balance.forEach(balance => {
|
|
93
|
+
expect(balance).toEqual(
|
|
94
|
+
expect.objectContaining({
|
|
95
|
+
amount: expect.any(String),
|
|
96
|
+
token: {
|
|
97
|
+
hash: expect.any(String),
|
|
98
|
+
name: expect.any(String),
|
|
99
|
+
symbol: expect.any(String),
|
|
100
|
+
decimals: expect.any(Number),
|
|
101
|
+
},
|
|
102
|
+
})
|
|
103
|
+
)
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
})
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { RpcBDSEthereum } from '../RpcBDSEthereum'
|
|
2
|
+
import { DEFAULT_URL_BY_NETWORK_TYPE } from '../constants'
|
|
3
|
+
|
|
4
|
+
const rpcBDSEthereum = new RpcBDSEthereum({ type: 'testnet', url: DEFAULT_URL_BY_NETWORK_TYPE.testnet })
|
|
5
|
+
|
|
6
|
+
describe('RpcBDSEthereum', () => {
|
|
7
|
+
it('Should be able to get transaction', async () => {
|
|
8
|
+
const hash = '0x48eac645fac2280d7ac89a319372d7a38d52516f8b3003574bfaaed31b471ff3'
|
|
9
|
+
const transaction = await rpcBDSEthereum.getTransaction(hash)
|
|
10
|
+
|
|
11
|
+
expect(transaction).toEqual(
|
|
12
|
+
expect.objectContaining({
|
|
13
|
+
block: expect.any(Number),
|
|
14
|
+
hash,
|
|
15
|
+
notifications: [],
|
|
16
|
+
time: expect.any(Number),
|
|
17
|
+
})
|
|
18
|
+
)
|
|
19
|
+
transaction.transfers.forEach(transfer => {
|
|
20
|
+
expect(transfer).toEqual(
|
|
21
|
+
expect.objectContaining({
|
|
22
|
+
from: expect.any(String),
|
|
23
|
+
to: expect.any(String),
|
|
24
|
+
contractHash: expect.any(String),
|
|
25
|
+
amount: expect.any(String),
|
|
26
|
+
type: expect.any(String),
|
|
27
|
+
})
|
|
28
|
+
)
|
|
29
|
+
})
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
it('Should be able to get eth info', async () => {
|
|
33
|
+
const hash = '-'
|
|
34
|
+
const token = await rpcBDSEthereum.getTokenInfo(hash)
|
|
35
|
+
|
|
36
|
+
expect(token).toEqual({
|
|
37
|
+
symbol: 'ETH',
|
|
38
|
+
name: 'Ethereum',
|
|
39
|
+
hash: '-',
|
|
40
|
+
decimals: 18,
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
it('Should be able to get balance', async () => {
|
|
45
|
+
const address = '0xbA65F285D1F9E0bf76Ab01211547979a3b60011A'
|
|
46
|
+
const balance = await rpcBDSEthereum.getBalance(address)
|
|
47
|
+
|
|
48
|
+
balance.forEach(balance => {
|
|
49
|
+
expect(balance).toEqual(
|
|
50
|
+
expect.objectContaining({
|
|
51
|
+
amount: expect.any(String),
|
|
52
|
+
token: {
|
|
53
|
+
hash: expect.any(String),
|
|
54
|
+
name: expect.any(String),
|
|
55
|
+
symbol: expect.any(String),
|
|
56
|
+
decimals: expect.any(Number),
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
})
|
package/src/constants.ts
CHANGED
|
@@ -13,7 +13,7 @@ export const NATIVE_ASSETS = commom
|
|
|
13
13
|
|
|
14
14
|
export const DEFAULT_URL_BY_NETWORK_TYPE: Record<NetworkType, string> = {
|
|
15
15
|
mainnet: 'https://ethereum-mainnet-rpc.allthatnode.com',
|
|
16
|
-
testnet: 'https://ethereum-
|
|
16
|
+
testnet: 'https://ethereum-sepolia-rpc.publicnode.com',
|
|
17
17
|
custom: 'http://127.0.0.1:8545',
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { BlockchainDataService } from '@cityofzion/blockchain-service'
|
|
2
|
-
import { BitqueryBDSEthereum } from '../BitqueryBDSEthereum'
|
|
3
|
-
import { RpcBDSEthereum } from '../RpcBDSEthereum'
|
|
4
|
-
import { DEFAULT_URL_BY_NETWORK_TYPE } from '../constants'
|
|
5
|
-
|
|
6
|
-
const bitqueryBDSEthereum = new BitqueryBDSEthereum(
|
|
7
|
-
{ type: 'testnet', url: DEFAULT_URL_BY_NETWORK_TYPE.testnet },
|
|
8
|
-
process.env.BITQUERY_API_KEY as string
|
|
9
|
-
)
|
|
10
|
-
const rpcBDSEthereum = new RpcBDSEthereum({ type: 'testnet', url: DEFAULT_URL_BY_NETWORK_TYPE.testnet })
|
|
11
|
-
|
|
12
|
-
describe('BDSEthereum', () => {
|
|
13
|
-
it.each([rpcBDSEthereum, bitqueryBDSEthereum])(
|
|
14
|
-
'Should be able to get transaction - %s',
|
|
15
|
-
async (BDSEthereum: BlockchainDataService) => {
|
|
16
|
-
const hash = '0x43fa3015d077a13888409cfbd6228df8900abcd5314ff11ea6ce0c49e8b7c94d'
|
|
17
|
-
const transaction = await BDSEthereum.getTransaction(hash)
|
|
18
|
-
|
|
19
|
-
expect(transaction).toEqual(
|
|
20
|
-
expect.objectContaining({
|
|
21
|
-
block: expect.any(Number),
|
|
22
|
-
hash,
|
|
23
|
-
notifications: [],
|
|
24
|
-
time: expect.any(Number),
|
|
25
|
-
})
|
|
26
|
-
)
|
|
27
|
-
transaction.transfers.forEach(transfer => {
|
|
28
|
-
expect(transfer).toEqual(
|
|
29
|
-
expect.objectContaining({
|
|
30
|
-
from: expect.any(String),
|
|
31
|
-
to: expect.any(String),
|
|
32
|
-
contractHash: expect.any(String),
|
|
33
|
-
amount: expect.any(String),
|
|
34
|
-
type: expect.any(String),
|
|
35
|
-
})
|
|
36
|
-
)
|
|
37
|
-
})
|
|
38
|
-
},
|
|
39
|
-
10000
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
it.each([bitqueryBDSEthereum])(
|
|
43
|
-
'Should be able to get transactions of address - %s',
|
|
44
|
-
async (BDSEthereum: BlockchainDataService) => {
|
|
45
|
-
const address = '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89'
|
|
46
|
-
const response = await BDSEthereum.getTransactionsByAddress({ address: address, page: 1 })
|
|
47
|
-
expect(response.totalCount).toBeGreaterThan(0)
|
|
48
|
-
response.transactions.forEach(transaction => {
|
|
49
|
-
expect(transaction).toEqual(
|
|
50
|
-
expect.objectContaining({
|
|
51
|
-
block: expect.any(Number),
|
|
52
|
-
hash: expect.any(String),
|
|
53
|
-
notifications: [],
|
|
54
|
-
time: expect.any(Number),
|
|
55
|
-
fee: expect.any(String),
|
|
56
|
-
})
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
transaction.transfers.forEach(transfer => {
|
|
60
|
-
expect(transfer).toEqual(
|
|
61
|
-
expect.objectContaining({
|
|
62
|
-
from: expect.any(String),
|
|
63
|
-
to: expect.any(String),
|
|
64
|
-
contractHash: expect.any(String),
|
|
65
|
-
amount: expect.any(String),
|
|
66
|
-
type: expect.any(String),
|
|
67
|
-
})
|
|
68
|
-
)
|
|
69
|
-
})
|
|
70
|
-
})
|
|
71
|
-
},
|
|
72
|
-
10000
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
it.each([bitqueryBDSEthereum, rpcBDSEthereum])(
|
|
76
|
-
'Should be able to get eth info - %s',
|
|
77
|
-
async (BDSEthereum: BlockchainDataService) => {
|
|
78
|
-
const hash = '-'
|
|
79
|
-
const token = await BDSEthereum.getTokenInfo(hash)
|
|
80
|
-
|
|
81
|
-
expect(token).toEqual({
|
|
82
|
-
symbol: 'ETH',
|
|
83
|
-
name: 'Ethereum',
|
|
84
|
-
hash: '-',
|
|
85
|
-
decimals: 18,
|
|
86
|
-
})
|
|
87
|
-
}
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
it.each([bitqueryBDSEthereum])(
|
|
91
|
-
'Should be able to get token info - %s',
|
|
92
|
-
async (BDSEthereum: BlockchainDataService) => {
|
|
93
|
-
const hash = '0xBA62BCfcAaFc6622853cca2BE6Ac7d845BC0f2Dc'
|
|
94
|
-
const token = await BDSEthereum.getTokenInfo(hash)
|
|
95
|
-
|
|
96
|
-
expect(token).toEqual({
|
|
97
|
-
hash: '0xba62bcfcaafc6622853cca2be6ac7d845bc0f2dc',
|
|
98
|
-
name: 'FaucetToken',
|
|
99
|
-
symbol: 'FAU',
|
|
100
|
-
decimals: 18,
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
)
|
|
104
|
-
|
|
105
|
-
it.each([bitqueryBDSEthereum, rpcBDSEthereum])(
|
|
106
|
-
'Should be able to get balance - %s',
|
|
107
|
-
async (BDSEthereum: BlockchainDataService) => {
|
|
108
|
-
const address = '0x82B5Cd984880C8A821429cFFf89f36D35BaeBE89'
|
|
109
|
-
const balance = await BDSEthereum.getBalance(address)
|
|
110
|
-
|
|
111
|
-
balance.forEach(balance => {
|
|
112
|
-
expect(balance).toEqual(
|
|
113
|
-
expect.objectContaining({
|
|
114
|
-
amount: expect.any(String),
|
|
115
|
-
token: {
|
|
116
|
-
hash: expect.any(String),
|
|
117
|
-
name: expect.any(String),
|
|
118
|
-
symbol: expect.any(String),
|
|
119
|
-
decimals: expect.any(Number),
|
|
120
|
-
},
|
|
121
|
-
})
|
|
122
|
-
)
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
)
|
|
126
|
-
})
|