multichain-address-validator 0.7.4 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/chain-validators.d.ts +2 -0
- package/dist/cjs/chain-validators.js +124 -0
- package/dist/cjs/crypto/base32.d.ts +5 -0
- package/dist/cjs/crypto/base32.js +66 -0
- package/dist/cjs/crypto/base58.d.ts +4 -0
- package/dist/cjs/crypto/base58.js +44 -0
- package/dist/cjs/crypto/bech32.d.ts +17 -0
- package/dist/cjs/crypto/bech32.js +126 -0
- package/dist/cjs/crypto/biginteger.d.ts +57 -0
- package/dist/cjs/crypto/biginteger.js +1313 -0
- package/dist/cjs/crypto/blake256.d.ts +23 -0
- package/dist/cjs/crypto/blake256.js +172 -0
- package/dist/cjs/crypto/blake2b.d.ts +13 -0
- package/dist/cjs/crypto/blake2b.js +243 -0
- package/dist/cjs/crypto/cnBase58.d.ts +7 -0
- package/dist/cjs/crypto/cnBase58.js +211 -0
- package/dist/cjs/crypto/segwit_addr.d.ts +12 -0
- package/dist/cjs/crypto/segwit_addr.js +107 -0
- package/dist/cjs/crypto/utils.d.ts +26 -0
- package/dist/cjs/crypto/utils.js +128 -0
- package/dist/cjs/helpers.d.ts +3 -0
- package/dist/cjs/helpers.js +14 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.ts +15 -0
- package/dist/cjs/types.js +8 -0
- package/dist/cjs/validators/algorand_validator.d.ts +5 -0
- package/dist/cjs/validators/algorand_validator.js +28 -0
- package/dist/cjs/validators/base58_validator.d.ts +4 -0
- package/dist/cjs/validators/base58_validator.js +36 -0
- package/dist/cjs/validators/bch_validator.d.ts +13 -0
- package/dist/cjs/validators/bch_validator.js +55 -0
- package/dist/cjs/validators/bip173_validator.d.ts +7 -0
- package/dist/cjs/validators/bip173_validator.js +17 -0
- package/dist/cjs/validators/bitcoin_validator.d.ts +12 -0
- package/dist/cjs/validators/bitcoin_validator.js +73 -0
- package/dist/cjs/validators/cardano_validator.d.ts +5 -0
- package/dist/cjs/validators/cardano_validator.js +46 -0
- package/dist/cjs/validators/eos_validator.d.ts +5 -0
- package/dist/cjs/validators/eos_validator.js +12 -0
- package/dist/cjs/validators/ethereum_validator.d.ts +6 -0
- package/dist/cjs/validators/ethereum_validator.js +35 -0
- package/dist/cjs/validators/hedera_validator.d.ts +5 -0
- package/dist/cjs/validators/hedera_validator.js +10 -0
- package/dist/cjs/validators/index.d.ts +18 -0
- package/dist/cjs/validators/index.js +42 -0
- package/dist/cjs/validators/monero_validator.d.ts +5 -0
- package/dist/cjs/validators/monero_validator.js +63 -0
- package/dist/cjs/validators/move_validator.d.ts +5 -0
- package/dist/cjs/validators/move_validator.js +10 -0
- package/dist/cjs/validators/nano_validator.d.ts +6 -0
- package/dist/cjs/validators/nano_validator.js +28 -0
- package/dist/cjs/validators/nem_validator.d.ts +5 -0
- package/dist/cjs/validators/nem_validator.js +19 -0
- package/dist/cjs/validators/polkadot_validator.d.ts +5 -0
- package/dist/cjs/validators/polkadot_validator.js +54 -0
- package/dist/cjs/validators/ripple_validator.d.ts +10 -0
- package/dist/cjs/validators/ripple_validator.js +35 -0
- package/dist/cjs/validators/sia_validator.d.ts +5 -0
- package/dist/cjs/validators/sia_validator.js +32 -0
- package/dist/cjs/validators/solana_validator.d.ts +5 -0
- package/dist/cjs/validators/solana_validator.js +15 -0
- package/dist/cjs/validators/tezos_validator.d.ts +5 -0
- package/dist/cjs/validators/tezos_validator.js +35 -0
- package/dist/cjs/validators/tron_validator.d.ts +8 -0
- package/dist/cjs/validators/tron_validator.js +50 -0
- package/dist/cjs/validators/xlm_validator.d.ts +7 -0
- package/dist/cjs/validators/xlm_validator.js +43 -0
- package/dist/esm/chain-validators.d.ts +2 -0
- package/dist/esm/chain-validators.js +121 -0
- package/dist/esm/crypto/base32.d.ts +5 -0
- package/dist/esm/crypto/base32.js +64 -0
- package/dist/esm/crypto/base58.d.ts +4 -0
- package/dist/esm/crypto/base58.js +42 -0
- package/dist/esm/crypto/bech32.d.ts +17 -0
- package/dist/esm/crypto/bech32.js +124 -0
- package/dist/esm/crypto/biginteger.d.ts +57 -0
- package/dist/esm/crypto/biginteger.js +1311 -0
- package/dist/esm/crypto/blake256.d.ts +23 -0
- package/dist/esm/crypto/blake256.js +170 -0
- package/dist/esm/crypto/blake2b.d.ts +13 -0
- package/dist/esm/crypto/blake2b.js +242 -0
- package/dist/esm/crypto/cnBase58.d.ts +7 -0
- package/dist/esm/crypto/cnBase58.js +209 -0
- package/dist/esm/crypto/segwit_addr.d.ts +12 -0
- package/dist/esm/crypto/segwit_addr.js +102 -0
- package/dist/esm/crypto/utils.d.ts +26 -0
- package/dist/esm/crypto/utils.js +123 -0
- package/dist/esm/helpers.d.ts +3 -0
- package/dist/esm/helpers.js +10 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/types.d.ts +15 -0
- package/dist/esm/types.js +5 -0
- package/dist/esm/validators/algorand_validator.d.ts +5 -0
- package/dist/esm/validators/algorand_validator.js +23 -0
- package/dist/esm/validators/base58_validator.d.ts +4 -0
- package/dist/esm/validators/base58_validator.js +31 -0
- package/dist/esm/validators/bch_validator.d.ts +13 -0
- package/dist/esm/validators/bch_validator.js +50 -0
- package/dist/esm/validators/bip173_validator.d.ts +7 -0
- package/dist/esm/validators/bip173_validator.js +12 -0
- package/dist/esm/validators/bitcoin_validator.d.ts +12 -0
- package/dist/esm/validators/bitcoin_validator.js +68 -0
- package/dist/esm/validators/cardano_validator.d.ts +5 -0
- package/dist/esm/validators/cardano_validator.js +41 -0
- package/dist/esm/validators/eos_validator.d.ts +5 -0
- package/dist/esm/validators/eos_validator.js +10 -0
- package/dist/esm/validators/ethereum_validator.d.ts +6 -0
- package/dist/esm/validators/ethereum_validator.js +30 -0
- package/dist/esm/validators/hedera_validator.d.ts +5 -0
- package/dist/esm/validators/hedera_validator.js +8 -0
- package/dist/esm/validators/index.d.ts +18 -0
- package/dist/esm/validators/index.js +18 -0
- package/dist/esm/validators/monero_validator.d.ts +5 -0
- package/dist/esm/validators/monero_validator.js +58 -0
- package/dist/esm/validators/move_validator.d.ts +5 -0
- package/dist/esm/validators/move_validator.js +8 -0
- package/dist/esm/validators/nano_validator.d.ts +6 -0
- package/dist/esm/validators/nano_validator.js +23 -0
- package/dist/esm/validators/nem_validator.d.ts +5 -0
- package/dist/esm/validators/nem_validator.js +14 -0
- package/dist/esm/validators/polkadot_validator.d.ts +5 -0
- package/dist/esm/validators/polkadot_validator.js +49 -0
- package/dist/esm/validators/ripple_validator.d.ts +10 -0
- package/dist/esm/validators/ripple_validator.js +30 -0
- package/dist/esm/validators/sia_validator.d.ts +5 -0
- package/dist/esm/validators/sia_validator.js +27 -0
- package/dist/esm/validators/solana_validator.d.ts +5 -0
- package/dist/esm/validators/solana_validator.js +10 -0
- package/dist/esm/validators/tezos_validator.d.ts +5 -0
- package/dist/esm/validators/tezos_validator.js +30 -0
- package/dist/esm/validators/tron_validator.d.ts +8 -0
- package/dist/esm/validators/tron_validator.js +45 -0
- package/dist/esm/validators/xlm_validator.d.ts +7 -0
- package/dist/esm/validators/xlm_validator.js +38 -0
- package/package.json +1 -1
- package/src/crypto/blake256.js +2 -0
- package/src/helpers.ts +6 -0
- package/src/validators/ripple_validator.ts +9 -9
- package/src/validators/xlm_validator.ts +4 -4
- package/test/addresses/addresses.ts +7 -2
- package/test/addresses/ripple.json +7 -2
- package/test/addresses/xlm.json +6 -1
- package/test/multichain-address-validator.test.ts +48 -43
- package/package-lock.json +0 -1704
|
@@ -1,168 +1,173 @@
|
|
|
1
1
|
import {describe, it} from 'mocha'
|
|
2
2
|
import {expect} from 'chai'
|
|
3
3
|
|
|
4
|
-
import {validate,
|
|
4
|
+
import {validate, Chain, NetworkType} from '../src'
|
|
5
5
|
// @ts-ignore
|
|
6
|
-
import addresses from './addresses/addresses'
|
|
6
|
+
import addresses, {TestAddress} from './addresses/addresses'
|
|
7
7
|
|
|
8
|
+
function check(address: TestAddress, chain: Chain) {
|
|
9
|
+
address.invalid
|
|
10
|
+
? invalid(address, chain)
|
|
11
|
+
: valid(address, chain)
|
|
12
|
+
}
|
|
8
13
|
|
|
9
|
-
function valid(address:
|
|
14
|
+
function valid(address: TestAddress, chain: Chain) {
|
|
10
15
|
const valid = validate(address, chain);
|
|
11
16
|
expect({address, chain, valid}).to.deep.equal({address, chain, valid: true});
|
|
12
17
|
}
|
|
13
18
|
|
|
14
|
-
function invalid(address:
|
|
19
|
+
function invalid(address: TestAddress, chain: Chain) {
|
|
15
20
|
const valid = validate(address, chain);
|
|
16
21
|
expect({address, chain, valid}).to.deep.equal({address, chain, valid: false});
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
interface TestCase {
|
|
20
25
|
alternatives: string[],
|
|
21
|
-
|
|
26
|
+
testAddresses: keyof typeof addresses,
|
|
22
27
|
exclude?: (keyof typeof addresses)[]
|
|
23
28
|
testnet?: {
|
|
24
|
-
|
|
29
|
+
testAddresses: keyof typeof addresses
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
const TestCases: Record<string, TestCase> = {
|
|
29
34
|
'algorand': {
|
|
30
35
|
alternatives: [],
|
|
31
|
-
|
|
36
|
+
testAddresses: 'algorand',
|
|
32
37
|
},
|
|
33
38
|
'aptos': {
|
|
34
39
|
alternatives: [],
|
|
35
|
-
|
|
40
|
+
testAddresses: 'aptos',
|
|
36
41
|
exclude: ['sui']
|
|
37
42
|
},
|
|
38
43
|
'bitcoin': {
|
|
39
44
|
alternatives: ['btc', 'omni'],
|
|
40
|
-
|
|
45
|
+
testAddresses: 'btc', // corresponds to addresses.js
|
|
41
46
|
exclude: ['bch', 'ltc'],
|
|
42
47
|
testnet: {
|
|
43
|
-
|
|
48
|
+
testAddresses: 'btc-testnet'
|
|
44
49
|
}
|
|
45
50
|
},
|
|
46
51
|
'bitcoin-cash': {
|
|
47
52
|
alternatives: ['bch', 'bitcoincash', 'bitcoin cash'],
|
|
48
|
-
|
|
53
|
+
testAddresses: 'bch',
|
|
49
54
|
exclude: ['btc', 'ltc'],
|
|
50
55
|
testnet: {
|
|
51
|
-
|
|
56
|
+
testAddresses: 'bch-testnet',
|
|
52
57
|
}
|
|
53
58
|
},
|
|
54
59
|
'cardano': {
|
|
55
60
|
alternatives: ['ada'],
|
|
56
|
-
|
|
61
|
+
testAddresses: 'cardano',
|
|
57
62
|
},
|
|
58
63
|
'doge': {
|
|
59
64
|
alternatives: ['dogecoin'],
|
|
60
65
|
exclude: ['btc'],
|
|
61
|
-
|
|
66
|
+
testAddresses: 'doge',
|
|
62
67
|
testnet: {
|
|
63
|
-
|
|
68
|
+
testAddresses: 'doge-testnet',
|
|
64
69
|
}
|
|
65
70
|
},
|
|
66
71
|
'eos': {
|
|
67
72
|
alternatives: [],
|
|
68
|
-
|
|
73
|
+
testAddresses: 'eos',
|
|
69
74
|
},
|
|
70
75
|
'ethereum': {
|
|
71
76
|
alternatives: ['eth', 'flare', 'avalanche', 'avalanche-c', 'bsc', 'bnb', 'binance', 'sonic', 'berachain', 'story'],
|
|
72
|
-
|
|
77
|
+
testAddresses: 'evm',
|
|
73
78
|
},
|
|
74
79
|
'hedera': {
|
|
75
80
|
alternatives: [],
|
|
76
|
-
|
|
81
|
+
testAddresses: 'hbar'
|
|
77
82
|
},
|
|
78
83
|
'litecoin': {
|
|
79
84
|
alternatives: ['ltc'],
|
|
80
85
|
exclude: ['btc', 'bch'],
|
|
81
|
-
|
|
86
|
+
testAddresses: 'ltc',
|
|
82
87
|
testnet: {
|
|
83
|
-
|
|
88
|
+
testAddresses: 'ltc-testnet'
|
|
84
89
|
}
|
|
85
90
|
},
|
|
86
91
|
'monero': {
|
|
87
92
|
alternatives: [],
|
|
88
|
-
|
|
93
|
+
testAddresses: 'monero',
|
|
89
94
|
testnet: {
|
|
90
|
-
|
|
95
|
+
testAddresses: 'monero-testnet',
|
|
91
96
|
}
|
|
92
97
|
},
|
|
93
98
|
'nano': {
|
|
94
99
|
alternatives: [],
|
|
95
|
-
|
|
100
|
+
testAddresses: 'nano',
|
|
96
101
|
},
|
|
97
102
|
'nem': {
|
|
98
103
|
alternatives: [],
|
|
99
|
-
|
|
104
|
+
testAddresses: 'nem',
|
|
100
105
|
},
|
|
101
106
|
'polkadot': {
|
|
102
107
|
alternatives: [],
|
|
103
|
-
|
|
108
|
+
testAddresses: 'polkadot',
|
|
104
109
|
},
|
|
105
110
|
'ripple': {
|
|
106
111
|
alternatives: ['xrp'],
|
|
107
|
-
|
|
112
|
+
testAddresses: 'ripple'
|
|
108
113
|
},
|
|
109
114
|
'sia': {
|
|
110
115
|
alternatives: [],
|
|
111
|
-
|
|
116
|
+
testAddresses: 'sia',
|
|
112
117
|
},
|
|
113
118
|
'solana': {
|
|
114
119
|
alternatives: ['spl'],
|
|
115
|
-
|
|
120
|
+
testAddresses: 'solana'
|
|
116
121
|
},
|
|
117
122
|
'sui': {
|
|
118
123
|
alternatives: [],
|
|
119
|
-
|
|
124
|
+
testAddresses: 'sui',
|
|
120
125
|
exclude: ['aptos']
|
|
121
126
|
},
|
|
122
127
|
'tezos': {
|
|
123
128
|
alternatives: [],
|
|
124
|
-
|
|
129
|
+
testAddresses: 'tezos',
|
|
125
130
|
exclude: ['btc', 'bch', 'btc-testnet', 'ltc-testnet', 'bch-testnet', 'doge', 'doge-testnet', 'ltc', 'tron'],
|
|
126
131
|
},
|
|
127
132
|
'tron': {
|
|
128
133
|
alternatives: ['trc20'],
|
|
129
|
-
|
|
134
|
+
testAddresses: 'tron',
|
|
130
135
|
},
|
|
131
136
|
'xlm': {
|
|
132
137
|
alternatives: ['stellar'],
|
|
133
|
-
|
|
138
|
+
testAddresses: 'xlm',
|
|
134
139
|
}
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
describe('multichain address validator', function () {
|
|
138
143
|
|
|
139
|
-
it('should
|
|
144
|
+
it('should check valid addresses for chains', function () {
|
|
140
145
|
for (const chain in TestCases) {
|
|
141
146
|
for (const c of [chain, ...TestCases[chain].alternatives]) {
|
|
142
|
-
if (!addresses[TestCases[chain].
|
|
143
|
-
throw new Error(`No
|
|
147
|
+
if (!addresses[TestCases[chain].testAddresses]) {
|
|
148
|
+
throw new Error(`No test addresses for chain '${chain}'`)
|
|
144
149
|
}
|
|
145
|
-
for (const address of addresses[TestCases[chain].
|
|
146
|
-
|
|
150
|
+
for (const address of addresses[TestCases[chain].testAddresses]) {
|
|
151
|
+
check(address, c)
|
|
147
152
|
}
|
|
148
153
|
|
|
149
154
|
if (TestCases[chain].testnet) {
|
|
150
|
-
if (!addresses[TestCases[chain].testnet.
|
|
151
|
-
throw new Error(`No
|
|
155
|
+
if (!addresses[TestCases[chain].testnet.testAddresses]) {
|
|
156
|
+
throw new Error(`No test testnet addresses for chain '${chain}'`)
|
|
152
157
|
}
|
|
153
|
-
for (const address of addresses[TestCases[chain].testnet.
|
|
154
|
-
|
|
158
|
+
for (const address of addresses[TestCases[chain].testnet.testAddresses]) {
|
|
159
|
+
check(address, { chain: c, networkType: NetworkType.TestNet })
|
|
155
160
|
}
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
163
|
}
|
|
159
164
|
})
|
|
160
165
|
|
|
161
|
-
it('should
|
|
166
|
+
it('should check invalid addresses for chains', function () {
|
|
162
167
|
for (const chain in TestCases) {
|
|
163
168
|
for (const c of [chain, ...TestCases[chain].alternatives]) {
|
|
164
169
|
const invalidChains = Object.keys(addresses)
|
|
165
|
-
.filter(key => key !== TestCases[chain].
|
|
170
|
+
.filter(key => key !== TestCases[chain].testAddresses)
|
|
166
171
|
.filter(key => !TestCases[chain].exclude?.includes(key as any))
|
|
167
172
|
|
|
168
173
|
for (const invalidChain of invalidChains) {
|