multichain-address-validator 0.7.9 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +0 -1
  2. package/dist/cjs/chain-validators.js +23 -1
  3. package/dist/cjs/crypto/segwit_addr.js +8 -3
  4. package/dist/cjs/validators/bitcoin_validator.d.ts +5 -0
  5. package/dist/cjs/validators/bitcoin_validator.js +6 -5
  6. package/dist/cjs/validators/bittensor_validator.d.ts +2 -0
  7. package/dist/cjs/validators/bittensor_validator.js +11 -0
  8. package/dist/cjs/validators/index.d.ts +2 -0
  9. package/dist/cjs/validators/index.js +5 -1
  10. package/dist/cjs/validators/polkadot_validator.d.ts +1 -4
  11. package/dist/cjs/validators/polkadot_validator.js +5 -49
  12. package/dist/cjs/validators/ss58_validator.d.ts +11 -0
  13. package/dist/cjs/validators/ss58_validator.js +70 -0
  14. package/dist/cjs/validators/zcash_validator.d.ts +5 -0
  15. package/dist/cjs/validators/zcash_validator.js +52 -0
  16. package/dist/esm/chain-validators.js +24 -2
  17. package/dist/esm/crypto/segwit_addr.js +8 -3
  18. package/dist/esm/validators/bitcoin_validator.d.ts +5 -0
  19. package/dist/esm/validators/bitcoin_validator.js +5 -5
  20. package/dist/esm/validators/bittensor_validator.d.ts +2 -0
  21. package/dist/esm/validators/bittensor_validator.js +6 -0
  22. package/dist/esm/validators/index.d.ts +2 -0
  23. package/dist/esm/validators/index.js +2 -0
  24. package/dist/esm/validators/polkadot_validator.d.ts +1 -4
  25. package/dist/esm/validators/polkadot_validator.js +5 -49
  26. package/dist/esm/validators/ss58_validator.d.ts +11 -0
  27. package/dist/esm/validators/ss58_validator.js +64 -0
  28. package/dist/esm/validators/zcash_validator.d.ts +5 -0
  29. package/dist/esm/validators/zcash_validator.js +47 -0
  30. package/package.json +3 -2
  31. package/.editorconfig +0 -10
  32. package/.travis.yml +0 -11
  33. package/.vscode/launch.json +0 -23
  34. package/index.html +0 -12
  35. package/src/chain-validators.ts +0 -161
  36. package/src/crypto/base32.ts +0 -66
  37. package/src/crypto/base58.ts +0 -46
  38. package/src/crypto/bech32.js +0 -132
  39. package/src/crypto/biginteger.js +0 -1426
  40. package/src/crypto/blake256.js +0 -188
  41. package/src/crypto/blake2b.js +0 -276
  42. package/src/crypto/cnBase58.js +0 -226
  43. package/src/crypto/segwit_addr.js +0 -112
  44. package/src/crypto/utils.ts +0 -133
  45. package/src/helpers.ts +0 -13
  46. package/src/index.ts +0 -28
  47. package/src/types.ts +0 -19
  48. package/src/validators/algorand_validator.ts +0 -28
  49. package/src/validators/base58_validator.ts +0 -32
  50. package/src/validators/bch_validator.ts +0 -66
  51. package/src/validators/bip173_validator.ts +0 -19
  52. package/src/validators/bitcoin_validator.ts +0 -94
  53. package/src/validators/cardano_validator.ts +0 -50
  54. package/src/validators/eos_validator.ts +0 -13
  55. package/src/validators/ethereum_validator.ts +0 -37
  56. package/src/validators/hedera_validator.ts +0 -10
  57. package/src/validators/index.ts +0 -18
  58. package/src/validators/monero_validator.ts +0 -72
  59. package/src/validators/move_validator.ts +0 -11
  60. package/src/validators/nano_validator.ts +0 -32
  61. package/src/validators/nem_validator.ts +0 -18
  62. package/src/validators/polkadot_validator.ts +0 -57
  63. package/src/validators/ripple_validator.ts +0 -44
  64. package/src/validators/sia_validator.ts +0 -33
  65. package/src/validators/solana_validator.ts +0 -21
  66. package/src/validators/tezos_validator.ts +0 -36
  67. package/src/validators/tron_validator.ts +0 -59
  68. package/src/validators/xlm_validator.ts +0 -54
  69. package/test/addresses/addresses.ts +0 -59
  70. package/test/addresses/algorand.json +0 -6
  71. package/test/addresses/aptos.json +0 -6
  72. package/test/addresses/bch-testnet.json +0 -4
  73. package/test/addresses/bch.json +0 -7
  74. package/test/addresses/btc-testnet.json +0 -13
  75. package/test/addresses/btc.json +0 -14
  76. package/test/addresses/cardano.json +0 -8
  77. package/test/addresses/doge-testnet.json +0 -3
  78. package/test/addresses/doge.json +0 -7
  79. package/test/addresses/eos.json +0 -6
  80. package/test/addresses/evm.json +0 -20
  81. package/test/addresses/hbar.json +0 -11
  82. package/test/addresses/ltc-testnet.json +0 -10
  83. package/test/addresses/ltc.json +0 -8
  84. package/test/addresses/monero-testnet.json +0 -5
  85. package/test/addresses/monero.json +0 -7
  86. package/test/addresses/nano.json +0 -12
  87. package/test/addresses/nem.json +0 -4
  88. package/test/addresses/polkadot.json +0 -8
  89. package/test/addresses/ripple.json +0 -20
  90. package/test/addresses/sia.json +0 -5
  91. package/test/addresses/solana.json +0 -12
  92. package/test/addresses/sui.json +0 -6
  93. package/test/addresses/tezos.json +0 -9
  94. package/test/addresses/tron.json +0 -6
  95. package/test/addresses/xlm.json +0 -21
  96. package/test/multichain-address-validator.test.ts +0 -225
  97. package/tsconfig.cjs.json +0 -7
  98. package/tsconfig.esm.json +0 -7
  99. package/tsconfig.json +0 -24
@@ -1,12 +0,0 @@
1
- [
2
- "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3",
3
- "xrb_13ezf4od79h1tgj9aiu4djzcmmguendtjfuhwfukhuucboua8cpoihmh8byo",
4
- "xrb_35jjmmmh81kydepzeuf9oec8hzkay7msr6yxagzxpcht7thwa5bus5tomgz9",
5
- "xrb_1111111111111111111111111111111111111111111111111111hifc8npp",
6
- "xrb_1ipx847tk8o46pwxt5qjdbncjqcbwcc1rrmqnkztrfjy5k7z4imsrata9est",
7
- "xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp",
8
- "xrb_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4",
9
- "xrb_1f5e4w33ndqbkx4bw5jtp13kp5xghebfxcmw9hdt1f7goid1s4373w6tjmgu",
10
- "xrb_1q79ahdr36uqn38p5tp5sqwkn73rnpj1k8obtuetdbjcx37d5gahhd1u9cuh",
11
- "nano_1q79ahdr36uqn38p5tp5sqwkn73rnpj1k8obtuetdbjcx37d5gahhd1u9cuh"
12
- ]
@@ -1,4 +0,0 @@
1
- [
2
- "NBZMQO7ZPBYNBDUR7F75MAKA2S3DHDCIFG775N3D",
3
- "TDWTRGT6GVWCV7GRWFNI45S53PGOJBKNUF3GE6PB"
4
- ]
@@ -1,8 +0,0 @@
1
- [
2
- "1iQPKJmghHbrRhUiMt2cNEuxYbR6S9vYtJKqYvE4PNR9WDB",
3
- "1FRMM8PEiWXYax7rpS6X4XZX1aAAxSWx1CrKTyrVYhV24fg",
4
- "5CK8D1sKNwF473wbuBP6NuhQfPaWUetNsWUNAAzVwTfxqjfr",
5
- "CpjsLDC1JFyrhm3ftC9Gs4QoyrkHKhZKtK7YqGTRFtTafgp",
6
- "15FKUKXC6kwaXxJ1tXNywmFy4ZY6FoDFCnU3fMbibFdeqwGw",
7
- "CxDDSH8gS7jecsxaRL9Txf8H5kqesLXAEAEgp76Yz632J9M"
8
- ]
@@ -1,20 +0,0 @@
1
- [
2
- "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn",
3
- "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn",
4
- "r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV",
5
- "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
6
- {
7
- "address": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
8
- "memo": "4294967295"
9
- },
10
- "rDTXLQ7ZKZVKz33zJbHjgVShjsBnqMBhmN",
11
- {
12
- "address": "rDTXLQ7ZKZVKz33zJbHjgVShjsBnqMBhmN",
13
- "memo": "50000"
14
- },
15
- {
16
- "address": "rDTXLQ7ZKZVKz33zJbHjgVShjsBnqMBhmN",
17
- "memo": "non-numeric-memo",
18
- "invalidMemo": true
19
- }
20
- ]
@@ -1,5 +0,0 @@
1
- [
2
- "a9b01c85163638682b170d82de02b8bb99ba86092e9ab1b0d25111284fe618e93456915820f1",
3
- "ab0c327982abfcc6055a6c9551589167d8a73501aca8769f106371fbc937ad100c955c3b7ba9",
4
- "ffe1308c044ade30392a0cdc1fd5a4dbe94f9616a95faf888ed36123d9e711557aa497530373"
5
- ]
@@ -1,12 +0,0 @@
1
- [
2
- "833XorXTTx5iya5B3Tr6iqEs9GbRuvVfwyLCP2vpdzhq",
3
- "6ZRCB7AAqGre6c72PRz3MHLC73VMYvJ8bi9KHf1HFpNk",
4
- "HgyXhqapicB8zoyyFQ23oUwwFrBACDyDc7bqUuvnEELM",
5
- "833XorXTTx5iya5B3Tr6iqEs9GbRuvVfwyLCP2vpdzhq",
6
- "69UwBV4LPg7hHUS5JXiXyfgVnESmDKe8KJppsLj8pRU",
7
- "G4qGCGF4vWGPzYi2pxc2Djvgv3j8NiWaHQMgTVebCX6W",
8
- {
9
- "address": "3Yu3ULPjVc4QqS349VCs22br9zH9T6MWNnSM9RBimkw",
10
- "invalid": true
11
- }
12
- ]
@@ -1,6 +0,0 @@
1
- [
2
- "0xaabf25b0c115130a4ad88bfa08627c5a103b7851e90869c23fadaf0512dd5133",
3
- "0xdce6ab89a1d26c99491a70fd4a2536d065925114deee916a1ae7d35007f4dedf",
4
- "0xd05448f15a03f25b2816c4538b72bd54752ba7522d4831a4c9ea5a613becb47a",
5
- "0x39f521d22f611a4dec2f790fef2e4f8d1f96550509e85beccf8acec52c1a7219"
6
- ]
@@ -1,9 +0,0 @@
1
- [
2
- "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6",
3
- "tz1PyxsQ7xVTa5J7gtBeT7pST5Zi5nk5GSjg",
4
- "tz1LcuQHNVQEWP2fZjk1QYZGNrfLDwrT3SyZ",
5
- "tz1Lhf4J9Qxoe3DZ2nfe8FGDnvVj7oKjnMY6",
6
- "tz1RR6wETy9BeXG3Fjk25YmkSMGHxTtKkhpX",
7
- "tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY",
8
- "KT1EM2LvxxFGB3Svh9p9HCP2jEEYyHjABMbK"
9
- ]
@@ -1,6 +0,0 @@
1
- [
2
- "TNDzfERDpxLDS2w1q6yaFC7pzqaSQ3Bg3r",
3
- "TFEkshkSXo8yMe8vcA6P77XmiLfstNWHyT",
4
- "TUBBzKNM9gr687ucwj8fvVS2Sf2e4WseVa",
5
- "TFEkshkSXo8yMe8vcA6P77XmiLfstNWHyT"
6
- ]
@@ -1,21 +0,0 @@
1
- [
2
- "GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB",
3
- "GB7KKHHVYLDIZEKYJPAJUOTBE5E3NJAXPSDZK7O6O44WR3EBRO5HRPVT",
4
- "GD6WVYRVID442Y4JVWFWKWCZKB45UGHJAABBJRS22TUSTWGJYXIUR7N2",
5
- "GBCG42WTVWPO4Q6OZCYI3D6ZSTFSJIXIS6INCIUF23L6VN3ADE4337AP",
6
- "GDFX463YPLCO2EY7NGFMI7SXWWDQAMASGYZXCG2LATOF3PP5NQIUKBPT",
7
- "GBXEODUMM3SJ3QSX2VYUWFU3NRP7BQRC2ERWS7E2LZXDJXL2N66ZQ5PT",
8
- "GAJHORKJKDDEPYCD6URDFODV7CVLJ5AAOJKR6PG2VQOLWFQOF3X7XLOG",
9
- "GACXQEAXYBEZLBMQ2XETOBRO4P66FZAJENDHOQRYPUIXZIIXLKMZEXBJ",
10
- "GDD3XRXU3G4DXHVRUDH7LJM4CD4PDZTVP4QHOO4Q6DELKXUATR657OZV",
11
- "GDTYVCTAUQVPKEDZIBWEJGKBQHB4UGGXI2SXXUEW7LXMD4B7MK37CWLJ",
12
- {
13
- "address": "GDTYVCTAUQVPKEDZIBWEJGKBQHB4UGGXI2SXXUEW7LXMD4B7MK37CWLJ",
14
- "memo": "3fdsfsdfasdfdsfgasdgfdsfgas"
15
- },
16
- {
17
- "address": "GDTYVCTAUQVPKEDZIBWEJGKBQHB4UGGXI2SXXUEW7LXMD4B7MK37CWLJ",
18
- "memo": "really long memo that exceeds 28 bytes",
19
- "invalidMemo": true
20
- }
21
- ]
@@ -1,225 +0,0 @@
1
- import {describe, it} from 'mocha'
2
- import {expect} from 'chai'
3
-
4
- import {Chain, NetworkType, validate, validateMemo} from '../src'
5
- // @ts-ignore
6
- import addresses, {TestAddress} from './addresses/addresses'
7
-
8
- function check(address: TestAddress, chain: Chain) {
9
- if (typeof address === 'string') {
10
- return valid(address, chain)
11
- }
12
- (address.invalid || address.invalidMemo)
13
- ? invalid(address, chain)
14
- : valid(address, chain)
15
- }
16
-
17
- function valid(address: TestAddress, chain: Chain) {
18
- const valid = validate(address, chain);
19
- expect({address, chain, valid}).to.deep.equal({address, chain, valid: true});
20
- }
21
-
22
- function invalid(address: TestAddress, chain: Chain) {
23
- const valid = validate(address, chain);
24
- expect({address, chain, valid}).to.deep.equal({address, chain, valid: false});
25
- }
26
-
27
- function checkMemo(address: TestAddress, chain: Chain) {
28
- if (typeof address === 'string') {
29
- return
30
- }
31
- address.invalidMemo
32
- ? invalidMemo(address.memo, chain)
33
- : validMemo(address.memo, chain)
34
- }
35
-
36
- function validMemo(memo: string | undefined, chain: Chain) {
37
- if (!memo) {
38
- return
39
- }
40
- const valid = validateMemo(memo, chain);
41
- expect({memo, chain, valid}).to.deep.equal({memo, chain, valid: true});
42
- }
43
-
44
- function invalidMemo(memo: string | undefined, chain: Chain) {
45
- if (!memo) {
46
- return
47
- }
48
- const valid = validateMemo(memo, chain);
49
- expect({memo, chain, valid}).to.deep.equal({memo, chain, valid: false});
50
- }
51
-
52
- interface TestCase {
53
- alternatives: string[],
54
- testAddresses: keyof typeof addresses,
55
- exclude?: (keyof typeof addresses)[]
56
- testnet?: {
57
- testAddresses: keyof typeof addresses
58
- }
59
- }
60
-
61
- const TestCases: Record<string, TestCase> = {
62
- 'algorand': {
63
- alternatives: [],
64
- testAddresses: 'algorand',
65
- },
66
- 'aptos': {
67
- alternatives: [],
68
- testAddresses: 'aptos',
69
- exclude: ['sui']
70
- },
71
- 'bitcoin': {
72
- alternatives: ['btc', 'omni'],
73
- testAddresses: 'btc', // corresponds to addresses.js
74
- exclude: ['bch', 'ltc'],
75
- testnet: {
76
- testAddresses: 'btc-testnet'
77
- }
78
- },
79
- 'bitcoin-cash': {
80
- alternatives: ['bch', 'bitcoincash', 'bitcoin cash'],
81
- testAddresses: 'bch',
82
- exclude: ['btc', 'ltc'],
83
- testnet: {
84
- testAddresses: 'bch-testnet',
85
- }
86
- },
87
- 'cardano': {
88
- alternatives: ['ada'],
89
- testAddresses: 'cardano',
90
- },
91
- 'doge': {
92
- alternatives: ['dogecoin'],
93
- exclude: ['btc'],
94
- testAddresses: 'doge',
95
- testnet: {
96
- testAddresses: 'doge-testnet',
97
- }
98
- },
99
- 'eos': {
100
- alternatives: [],
101
- testAddresses: 'eos',
102
- },
103
- 'ethereum': {
104
- alternatives: [
105
- 'arbitrum',
106
- 'avalanche',
107
- 'avalanche-c',
108
- 'base',
109
- 'berachain',
110
- 'binance',
111
- 'bnb',
112
- 'bsc',
113
- 'eth',
114
- 'flare',
115
- 'optimism',
116
- 'sonic',
117
- 'story',
118
- ],
119
- testAddresses: 'evm',
120
- },
121
- 'hedera': {
122
- alternatives: [],
123
- testAddresses: 'hbar'
124
- },
125
- 'litecoin': {
126
- alternatives: ['ltc'],
127
- exclude: ['btc', 'bch'],
128
- testAddresses: 'ltc',
129
- testnet: {
130
- testAddresses: 'ltc-testnet'
131
- }
132
- },
133
- 'monero': {
134
- alternatives: [],
135
- testAddresses: 'monero',
136
- testnet: {
137
- testAddresses: 'monero-testnet',
138
- }
139
- },
140
- 'nano': {
141
- alternatives: [],
142
- testAddresses: 'nano',
143
- },
144
- 'nem': {
145
- alternatives: [],
146
- testAddresses: 'nem',
147
- },
148
- 'polkadot': {
149
- alternatives: [],
150
- testAddresses: 'polkadot',
151
- },
152
- 'ripple': {
153
- alternatives: ['xrp'],
154
- testAddresses: 'ripple'
155
- },
156
- 'sia': {
157
- alternatives: ['SiaCoin'],
158
- testAddresses: 'sia',
159
- },
160
- 'solana': {
161
- alternatives: ['sol', 'spl'],
162
- testAddresses: 'solana'
163
- },
164
- 'sui': {
165
- alternatives: [],
166
- testAddresses: 'sui',
167
- exclude: ['aptos']
168
- },
169
- 'tezos': {
170
- alternatives: [],
171
- testAddresses: 'tezos',
172
- exclude: ['btc', 'bch', 'btc-testnet', 'ltc-testnet', 'bch-testnet', 'doge', 'doge-testnet', 'ltc', 'tron'],
173
- },
174
- 'tron': {
175
- alternatives: ['trc20'],
176
- testAddresses: 'tron',
177
- },
178
- 'xlm': {
179
- alternatives: ['stellar', 'stellarlumens'],
180
- testAddresses: 'xlm',
181
- }
182
- }
183
-
184
- describe('multichain address validator', function () {
185
- it('should check valid addresses for chains', function () {
186
- for (const chain in TestCases) {
187
- for (const c of [chain, ...TestCases[chain].alternatives]) {
188
- if (!addresses[TestCases[chain].testAddresses]) {
189
- throw new Error(`No test addresses for chain '${chain}'`)
190
- }
191
- for (const address of addresses[TestCases[chain].testAddresses]) {
192
- check(address, c)
193
- checkMemo(address, c)
194
- }
195
-
196
- if (TestCases[chain].testnet) {
197
- if (!addresses[TestCases[chain].testnet.testAddresses]) {
198
- throw new Error(`No test testnet addresses for chain '${chain}'`)
199
- }
200
- for (const address of addresses[TestCases[chain].testnet.testAddresses]) {
201
- checkMemo(address, {chain: c, networkType: NetworkType.TestNet})
202
- }
203
- }
204
- }
205
- }
206
- })
207
-
208
- it('should check invalid addresses for chains', function () {
209
- for (const chain in TestCases) {
210
- for (const c of [chain, ...TestCases[chain].alternatives]) {
211
- const invalidChains = Object.keys(addresses)
212
- .filter(key => key !== TestCases[chain].testAddresses)
213
- .filter(key => !TestCases[chain].exclude?.includes(key as any))
214
-
215
- for (const invalidChain of invalidChains) {
216
- for (const address of addresses[invalidChain]) {
217
- invalid(address, c)
218
- }
219
- }
220
- }
221
- }
222
- })
223
- })
224
-
225
-
package/tsconfig.cjs.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "module": "CommonJS",
5
- "outDir": "./dist/cjs"
6
- }
7
- }
package/tsconfig.esm.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "module": "ESNext",
5
- "outDir": "./dist/esm"
6
- }
7
- }
package/tsconfig.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "lib": [
5
- "ESNext", "dom",
6
- ],
7
- "module": "NodeNext",
8
- "rootDir": "./src",
9
- "resolveJsonModule": true,
10
- "moduleResolution": "node",
11
- "declaration": true,
12
- "outDir": "./dist",
13
- "esModuleInterop": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "strict": false,
16
- "skipLibCheck": true,
17
- "allowJs": true,
18
- },
19
- "exclude": [
20
- "./dist",
21
- "./test",
22
- "./config",
23
- ]
24
- }