@ellipticltd/aml-utils 0.16.27 → 0.16.29
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/README.md +11 -43
- package/lib/errors/errors.js +19 -30
- package/lib/errors/errors.js.map +1 -0
- package/{dist → lib}/file-parser/errors.js +1 -1
- package/lib/file-parser/errors.js.map +1 -0
- package/{dist → lib}/file-parser/file-parser.d.ts +2 -4
- package/lib/file-parser/file-parser.js +59 -0
- package/lib/file-parser/file-parser.js.map +1 -0
- package/{dist/structured-file-parser → lib/file-parser}/parse-row.js +2 -1
- package/lib/file-parser/parse-row.js.map +1 -0
- package/{dist/file-parser/sanitzeRows.d.ts → lib/file-parser/sanitizeRows.d.ts} +3 -1
- package/lib/file-parser/sanitizeRows.js +15 -0
- package/lib/file-parser/sanitizeRows.js.map +1 -0
- package/lib/formatting/formatting.js +11 -12
- package/lib/formatting/formatting.js.map +1 -0
- package/{dist → lib}/index.d.ts +1 -1
- package/lib/index.js +21 -0
- package/lib/index.js.map +1 -0
- package/lib/middleware/middleware.js +14 -17
- package/lib/middleware/middleware.js.map +1 -0
- package/lib/orm-helpers/ormHelpers.js +12 -13
- package/lib/orm-helpers/ormHelpers.js.map +1 -0
- package/{dist → lib}/structured-file-parser/errors.js +1 -0
- package/lib/structured-file-parser/errors.js.map +1 -0
- package/{dist/file-parser → lib/structured-file-parser}/parse-row.js +2 -1
- package/lib/structured-file-parser/parse-row.js.map +1 -0
- package/{dist → lib}/structured-file-parser/sanitize-rows.js +3 -4
- package/lib/structured-file-parser/sanitize-rows.js.map +1 -0
- package/{dist → lib}/structured-file-parser/structured-file-parser.d.ts +2 -2
- package/lib/structured-file-parser/structured-file-parser.js +95 -0
- package/lib/structured-file-parser/structured-file-parser.js.map +1 -0
- package/{dist → lib}/types/types.d.ts +0 -6
- package/lib/types/types.js +191 -203
- package/lib/types/types.js.map +1 -0
- package/{dist → lib}/validations/validations.d.ts +133 -82
- package/lib/validations/validations.js +673 -458
- package/lib/validations/validations.js.map +1 -0
- package/package.json +7 -61
- package/.circleci/config.yml +0 -87
- package/.claude/settings.local.json +0 -7
- package/.eslintrc +0 -45
- package/.huskyrc +0 -5
- package/.mocharc.json +0 -3
- package/.nvmrc +0 -1
- package/.nycrc.json +0 -11
- package/.releaserc.json +0 -18
- package/.snyk +0 -12
- package/codecov.yml +0 -29
- package/commitlint.config.js +0 -1
- package/dist/errors/errors.js +0 -42
- package/dist/errors/errors.spec.d.ts +0 -1
- package/dist/errors/errors.spec.js +0 -23
- package/dist/file-parser/__tests/file-parser.spec.d.ts +0 -1
- package/dist/file-parser/__tests/file-parser.spec.js +0 -109
- package/dist/file-parser/__tests/parse-row.spec.d.ts +0 -1
- package/dist/file-parser/__tests/parse-row.spec.js +0 -29
- package/dist/file-parser/__tests/sanitize-rows.spec.d.ts +0 -1
- package/dist/file-parser/__tests/sanitize-rows.spec.js +0 -78
- package/dist/file-parser/file-parser.js +0 -55
- package/dist/file-parser/sanitzeRows.js +0 -18
- package/dist/formatting/formatting.js +0 -17
- package/dist/formatting/formatting.spec.d.ts +0 -1
- package/dist/formatting/formatting.spec.js +0 -37
- package/dist/index.js +0 -22
- package/dist/middleware/middleware.js +0 -22
- package/dist/orm-helpers/ormHelpers.js +0 -17
- package/dist/orm-helpers/ormHelpers.spec.d.ts +0 -1
- package/dist/orm-helpers/ormHelpers.spec.js +0 -38
- package/dist/structured-file-parser/structured-file-parser.js +0 -98
- package/dist/types/types.js +0 -203
- package/dist/validations/validations.js +0 -470
- package/dist/validations/validations.spec.d.ts +0 -1
- package/dist/validations/validations.spec.js +0 -463
- package/lib/errors/errors.spec.js +0 -37
- package/lib/file-parser/__tests/file-parser.spec.js +0 -107
- package/lib/file-parser/__tests/parse-row.spec.js +0 -35
- package/lib/file-parser/__tests/sanitize-rows.spec.js +0 -88
- package/lib/file-parser/errors.ts +0 -7
- package/lib/file-parser/file-parser.ts +0 -84
- package/lib/file-parser/parse-row.ts +0 -52
- package/lib/file-parser/sanitzeRows.ts +0 -32
- package/lib/formatting/formatting.spec.js +0 -45
- package/lib/index.ts +0 -19
- package/lib/orm-helpers/ormHelpers.spec.js +0 -41
- package/lib/structured-file-parser/errors.ts +0 -25
- package/lib/structured-file-parser/parse-row.ts +0 -52
- package/lib/structured-file-parser/sanitize-rows.ts +0 -24
- package/lib/structured-file-parser/structured-file-parser.ts +0 -155
- package/lib/validations/validations.spec.js +0 -603
- package/tsconfig.json +0 -26
- /package/{dist → lib}/errors/errors.d.ts +0 -0
- /package/{dist → lib}/file-parser/errors.d.ts +0 -0
- /package/{dist → lib}/file-parser/parse-row.d.ts +0 -0
- /package/{dist → lib}/formatting/formatting.d.ts +0 -0
- /package/{dist → lib}/middleware/middleware.d.ts +0 -0
- /package/{dist → lib}/orm-helpers/ormHelpers.d.ts +0 -0
- /package/{dist → lib}/structured-file-parser/errors.d.ts +0 -0
- /package/{dist → lib}/structured-file-parser/parse-row.d.ts +0 -0
- /package/{dist → lib}/structured-file-parser/sanitize-rows.d.ts +0 -0
|
@@ -1,478 +1,693 @@
|
|
|
1
|
+
/* eslint no-underscore-dangle: 0 */
|
|
1
2
|
const V = require('validator');
|
|
2
3
|
const _ = require('lodash');
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
HDPublicKey,
|
|
7
|
-
PublicKey,
|
|
8
|
-
Script,
|
|
9
|
-
Transaction,
|
|
10
|
-
} = require('bitcore-lib');
|
|
11
|
-
const addressValidator = require('multicoin-address-validator');
|
|
12
|
-
const eip55 = require('eip55');
|
|
13
|
-
const stellarSDK = require('stellar-sdk');
|
|
4
|
+
// Importing directly from dist to make sure we import the browser-friendly version of the library
|
|
5
|
+
const addressValidator = require('multicoin-address-validator/dist/wallet-address-validator');
|
|
6
|
+
const stellarBase = require('@stellar/stellar-base');
|
|
14
7
|
const E = require('../errors/errors');
|
|
15
|
-
|
|
16
8
|
const cryptoValidators = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return typeof str === 'string' && /^[0-9]+$/.test(str);
|
|
30
|
-
},
|
|
9
|
+
isEvmAddress(str) {
|
|
10
|
+
return typeof str === 'string' && /^0x[0-9a-fA-F]{40}$/.test(str);
|
|
11
|
+
},
|
|
12
|
+
isHexStrict(str) {
|
|
13
|
+
return typeof str === 'string' && /^0x[0-9a-fA-F]*$/.test(str);
|
|
14
|
+
},
|
|
15
|
+
isHex(str) {
|
|
16
|
+
return typeof str === 'string' && /^(0x)?[0-9a-fA-F]*$/.test(str);
|
|
17
|
+
},
|
|
18
|
+
isValidWeiAmount(str) {
|
|
19
|
+
return typeof str === 'string' && /^[0-9]+$/.test(str);
|
|
20
|
+
},
|
|
31
21
|
};
|
|
32
|
-
|
|
33
22
|
const validations = {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
throw new Err(msg);
|
|
39
|
-
},
|
|
40
|
-
_validateArg(pred, x, msg) {
|
|
41
|
-
return this._validate(E.InvalidArguments, pred, x, msg);
|
|
42
|
-
},
|
|
43
|
-
_tryCheck(fn, arg) {
|
|
44
|
-
try {
|
|
45
|
-
fn(arg);
|
|
46
|
-
return true;
|
|
47
|
-
} catch (error) {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
exists(x) {
|
|
53
|
-
return x != null;
|
|
54
|
-
},
|
|
55
|
-
nonEmpty(x) {
|
|
56
|
-
return (x != null ? x.length : undefined) > 0;
|
|
57
|
-
},
|
|
58
|
-
isNonEmptyString(x) {
|
|
59
|
-
return _.isString(x) && (x != null ? x.length : undefined) > 0;
|
|
60
|
-
},
|
|
61
|
-
isSafeString(str) {
|
|
62
|
-
// eslint-disable-next-line no-useless-escape
|
|
63
|
-
return RegExp(/^(\p{L}|[0-9]|-|=|!|\.|:|\s|@|\+|_|,|\$|£|&)+$/, 'u').test(str);
|
|
64
|
-
},
|
|
65
|
-
ensureShortEnough(limit, x) {
|
|
66
|
-
const l = x != null ? x.length : undefined;
|
|
67
|
-
if (l <= limit) {
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
throw new E.BadRequest(`Max query size exceeded: ${l} / ${limit}`);
|
|
71
|
-
},
|
|
72
|
-
ensure(crit, msg) {
|
|
73
|
-
if (crit) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
throw new E.BadRequest(msg);
|
|
77
|
-
},
|
|
78
|
-
argExists(x, msg) {
|
|
79
|
-
return this._validateArg(this.exists, x, msg);
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
check: {
|
|
83
|
-
matches(required, given, msg) {
|
|
84
|
-
const newGiven = _.uniq(given);
|
|
85
|
-
const crit = _.intersection(newGiven, required).length === given.length;
|
|
86
|
-
if (crit) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
throw new E.BadRequest(msg);
|
|
90
|
-
},
|
|
91
|
-
wasFound(type) {
|
|
92
|
-
return (item) => {
|
|
93
|
-
if (item == null) {
|
|
94
|
-
throw new E.NotFound(`Unknown ${type}`);
|
|
95
|
-
} else {
|
|
96
|
-
return item;
|
|
23
|
+
_validate(Err, pred, x, msg) {
|
|
24
|
+
if (pred(x)) {
|
|
25
|
+
return x;
|
|
97
26
|
}
|
|
98
|
-
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
27
|
+
throw new Err(msg);
|
|
28
|
+
},
|
|
29
|
+
_validateArg(pred, x, msg) {
|
|
30
|
+
return this._validate(E.InvalidArguments, pred, x, msg);
|
|
31
|
+
},
|
|
32
|
+
_tryCheck(fn, arg) {
|
|
33
|
+
try {
|
|
34
|
+
fn(arg);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return false;
|
|
106
39
|
}
|
|
107
|
-
};
|
|
108
|
-
},
|
|
109
|
-
isTrue(crit, msg) {
|
|
110
|
-
if (crit) {
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
throw new E.BadRequest(msg);
|
|
114
|
-
},
|
|
115
|
-
isFalse(crit, msg) {
|
|
116
|
-
if (!crit) {
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
throw new E.BadRequest(msg);
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
|
|
123
|
-
isCustomerReference(x) {
|
|
124
|
-
return (
|
|
125
|
-
_.isString(x)
|
|
126
|
-
&& (x != null ? x.length : undefined) > 0
|
|
127
|
-
&& (x != null ? x.length : undefined) <= 100
|
|
128
|
-
);
|
|
129
|
-
},
|
|
130
|
-
isCustomerLabelName(x) {
|
|
131
|
-
return (
|
|
132
|
-
_.isString(x)
|
|
133
|
-
&& (x != null ? x.length : undefined) > 0
|
|
134
|
-
&& (x != null ? x.length : undefined) <= 50
|
|
135
|
-
);
|
|
136
|
-
},
|
|
137
|
-
binanceChain: {
|
|
138
|
-
isAddress(str) {
|
|
139
|
-
return /^(bnb)([a-z0-9]{39})$/.test(str);
|
|
140
|
-
},
|
|
141
|
-
isTxHash(str) {
|
|
142
|
-
if (!V.isHexadecimal(str)) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
return str.length === 64;
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
bitcoin: {
|
|
149
|
-
isAddress(str) {
|
|
150
|
-
const network = process.env.BITCOIN_NETWORK === 'testnet' ? 'testnet' : 'prod';
|
|
151
|
-
return typeof str === 'string' && addressValidator.validate(str.trim(), 'btc', network);
|
|
152
|
-
},
|
|
153
|
-
isBech32Address(str) {
|
|
154
|
-
return /^bc1[ac-hj-np-z02-9]{6,86}|^BC1[AC-HJ-NP-Z02-9]{6,86}/.test(str);
|
|
155
|
-
},
|
|
156
|
-
isHDPublicKey(str) {
|
|
157
|
-
try {
|
|
158
|
-
HDPublicKey(str);
|
|
159
|
-
return true;
|
|
160
|
-
} catch (error) {
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
isPublicKey(str) {
|
|
165
|
-
try {
|
|
166
|
-
PublicKey(str);
|
|
167
|
-
return true;
|
|
168
|
-
} catch (error) {
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
isTxHash(str) {
|
|
173
|
-
if (!V.isHexadecimal(str)) {
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
return str.length === 64;
|
|
177
|
-
},
|
|
178
|
-
isTxHex(str) {
|
|
179
|
-
if (!V.isHexadecimal(str)) {
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
try {
|
|
183
|
-
Transaction(str);
|
|
184
|
-
return true;
|
|
185
|
-
} catch (error) {
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
isHDPath(str) {
|
|
190
|
-
return HDPrivateKey.isValidPath(str);
|
|
191
|
-
},
|
|
192
|
-
isScriptHex(str) {
|
|
193
|
-
if (!V.isHexadecimal(str)) {
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
try {
|
|
197
|
-
Script(str);
|
|
198
|
-
return true;
|
|
199
|
-
} catch (error) {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
isTxSignature(str) {
|
|
204
|
-
if (!V.isHexadecimal(str)) {
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
try {
|
|
208
|
-
const b = Buffer.from(str, 'hex');
|
|
209
|
-
Signature.fromTxFormat(b);
|
|
210
|
-
return true;
|
|
211
|
-
} catch (error) {
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
},
|
|
215
|
-
isBlockHeight(obj) {
|
|
216
|
-
return _.isInteger(+obj) && parseInt(obj, 10) >= 0;
|
|
217
|
-
},
|
|
218
|
-
},
|
|
219
|
-
bitcoinCash: {
|
|
220
|
-
isAddress(str) {
|
|
221
|
-
return /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bitcoincash:)?[q|p][a-z0-9]{41}$|^(BITCOINCASH:)?[Q|P][A-Z0-9]{41}$/.test(str);
|
|
222
|
-
},
|
|
223
|
-
isTxHash(str) {
|
|
224
|
-
if (!V.isHexadecimal(str)) {
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
return str.length === 64;
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
ethereum: {
|
|
231
|
-
isAddress(str) {
|
|
232
|
-
return cryptoValidators.isAddress(str);
|
|
233
|
-
},
|
|
234
|
-
isBlockHash(str) {
|
|
235
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
236
|
-
},
|
|
237
|
-
isTxHash(str) {
|
|
238
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
239
|
-
},
|
|
240
|
-
isAddressCode(str) {
|
|
241
|
-
return cryptoValidators.isHexStrict(str);
|
|
242
40
|
},
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
horizen: {
|
|
248
|
-
isAddress(str) {
|
|
249
|
-
return addressValidator.validate(str, 'zen');
|
|
250
|
-
},
|
|
251
|
-
isTxHash(str) {
|
|
252
|
-
if (!V.isHexadecimal(str)) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
return str.length === 64;
|
|
256
|
-
},
|
|
257
|
-
},
|
|
258
|
-
litecoin: {
|
|
259
|
-
isAddress(str) {
|
|
260
|
-
return /^[3LM][a-km-zA-HJ-NP-Z1-9]{24,33}$|^ltc1[ac-hj-np-z02-9]{6,86}$|^LTC1[AC-HJ-NP-Z02-9]{6,86}$|^ltcmweb[a-zA-Z0-9]{114}$/.test(str);
|
|
261
|
-
},
|
|
262
|
-
isTxHash(str) {
|
|
263
|
-
if (!V.isHexadecimal(str)) {
|
|
264
|
-
return false;
|
|
265
|
-
}
|
|
266
|
-
return str.length === 64;
|
|
267
|
-
},
|
|
268
|
-
},
|
|
269
|
-
ripple: {
|
|
270
|
-
isAddress(str) {
|
|
271
|
-
return addressValidator.validate(str, 'xrp');
|
|
272
|
-
},
|
|
273
|
-
isTxHash(str) {
|
|
274
|
-
if (!V.isHexadecimal(str)) {
|
|
275
|
-
return false;
|
|
276
|
-
}
|
|
277
|
-
return str.length === 64;
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
stellar: {
|
|
281
|
-
isAddress(str) {
|
|
282
|
-
return stellarSDK.StrKey.isValidEd25519PublicKey(str);
|
|
283
|
-
},
|
|
284
|
-
isTxHash(str) {
|
|
285
|
-
if (!V.isHexadecimal(str)) {
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
288
|
-
return str.length === 64;
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
zcash: {
|
|
292
|
-
isAddress(str) {
|
|
293
|
-
return addressValidator.validate(str, 'zec');
|
|
294
|
-
},
|
|
295
|
-
isTxHash(str) {
|
|
296
|
-
if (!V.isHexadecimal(str)) {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
return str.length === 64;
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
zilliqa: {
|
|
303
|
-
isAddress(str) {
|
|
304
|
-
// https://pub.dev/documentation/laksadart/latest/laksadart/isBech32.html
|
|
305
|
-
return !!str.match(/^zil1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38}$/);
|
|
306
|
-
},
|
|
307
|
-
isTxHash(str) {
|
|
308
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
309
|
-
},
|
|
310
|
-
},
|
|
311
|
-
algorand: {
|
|
312
|
-
isAddress(str) {
|
|
313
|
-
return addressValidator.validate(str, 'algo');
|
|
314
|
-
},
|
|
315
|
-
isTxHash(str) {
|
|
316
|
-
return str.length === 52;
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
tezos: {
|
|
320
|
-
isAddress(str) {
|
|
321
|
-
return str[0] !== 'o' && addressValidator.validate(str, 'xtz');
|
|
322
|
-
},
|
|
323
|
-
isTxHash(str) {
|
|
324
|
-
return str.length === 51;
|
|
325
|
-
},
|
|
326
|
-
},
|
|
327
|
-
polkadot: {
|
|
328
|
-
isAddress(str) {
|
|
329
|
-
return addressValidator.validate(str, 'dot');
|
|
330
|
-
},
|
|
331
|
-
isTxHash(str) {
|
|
332
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
333
|
-
},
|
|
334
|
-
},
|
|
335
|
-
cardano: {
|
|
336
|
-
isAddress(str) {
|
|
337
|
-
return addressValidator.validate(str, 'ada');
|
|
338
|
-
},
|
|
339
|
-
isTxHash(str) {
|
|
340
|
-
if (!V.isHexadecimal(str)) {
|
|
341
|
-
return false;
|
|
342
|
-
}
|
|
343
|
-
return str.length === 64;
|
|
344
|
-
},
|
|
345
|
-
},
|
|
346
|
-
cryptocom: {
|
|
347
|
-
isAddress(str) {
|
|
348
|
-
return addressValidator.validate(str, 'cro');
|
|
349
|
-
},
|
|
350
|
-
isTxHash(str) {
|
|
351
|
-
if (!V.isHexadecimal(str)) {
|
|
352
|
-
return false;
|
|
353
|
-
}
|
|
354
|
-
return str.length === 64;
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
near: {
|
|
358
|
-
isAddress(str) {
|
|
359
|
-
// https://nomicon.io/DataStructures/Account
|
|
360
|
-
return /^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(str);
|
|
361
|
-
},
|
|
362
|
-
isTxHash(str) {
|
|
363
|
-
return str.length === 44 || str.length === 43;
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
doge: {
|
|
367
|
-
isAddress(str) {
|
|
368
|
-
return /^[a-zA-Z\d]{34}$/.test(str);
|
|
369
|
-
},
|
|
370
|
-
isTxHash(str) {
|
|
371
|
-
return str.length === 64;
|
|
372
|
-
},
|
|
373
|
-
},
|
|
374
|
-
cosmos: {
|
|
375
|
-
isAddress(str) {
|
|
376
|
-
return /^cosmos{1}[a-zA-Z\d]{39}$/.test(str);
|
|
377
|
-
},
|
|
378
|
-
isTxHash(str) {
|
|
379
|
-
return str.length === 64 && cryptoValidators.isHex(str);
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
solana: {
|
|
383
|
-
isAddress(str) {
|
|
384
|
-
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(str);
|
|
385
|
-
},
|
|
386
|
-
isTxHash(str) {
|
|
387
|
-
return /^[1-9A-HJ-NP-Za-km-z]{77,88}$/.test(str);
|
|
388
|
-
},
|
|
389
|
-
},
|
|
390
|
-
binanceSmartChain: {
|
|
391
|
-
isAddress(str) {
|
|
392
|
-
return cryptoValidators.isAddress(str);
|
|
393
|
-
},
|
|
394
|
-
isTxHash(str) {
|
|
395
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
396
|
-
},
|
|
397
|
-
},
|
|
398
|
-
polygon: {
|
|
399
|
-
isAddress(str) {
|
|
400
|
-
return cryptoValidators.isAddress(str);
|
|
401
|
-
},
|
|
402
|
-
isTxHash(str) {
|
|
403
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
404
|
-
},
|
|
405
|
-
},
|
|
406
|
-
filecoin: {
|
|
407
|
-
isAddress(str) {
|
|
408
|
-
return /^(f0|f1|f2|f3)/.test(str);
|
|
409
|
-
},
|
|
410
|
-
isTxHash(str) {
|
|
411
|
-
return str.length === 62 && /^bafy2bza/.test(str);
|
|
412
|
-
},
|
|
413
|
-
},
|
|
414
|
-
optimism: {
|
|
415
|
-
isAddress(str) {
|
|
416
|
-
return cryptoValidators.isAddress(str);
|
|
417
|
-
},
|
|
418
|
-
isTxHash(str) {
|
|
419
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
420
|
-
},
|
|
421
|
-
},
|
|
422
|
-
avalanche: {
|
|
423
|
-
isAddress(str) {
|
|
424
|
-
return cryptoValidators.isAddress(str);
|
|
425
|
-
},
|
|
426
|
-
isTxHash(str) {
|
|
427
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
428
|
-
},
|
|
429
|
-
},
|
|
430
|
-
arbitrum: {
|
|
431
|
-
isAddress(str) {
|
|
432
|
-
return cryptoValidators.isAddress(str);
|
|
433
|
-
},
|
|
434
|
-
isTxHash(str) {
|
|
435
|
-
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
436
|
-
},
|
|
437
|
-
},
|
|
438
|
-
tron: {
|
|
439
|
-
isAddress(str) {
|
|
440
|
-
return addressValidator.validate(str, 'tron');
|
|
441
|
-
},
|
|
442
|
-
isTxHash(str) {
|
|
443
|
-
return str.length === 64 && cryptoValidators.isHex(str);
|
|
41
|
+
exists(x) {
|
|
42
|
+
return x != null;
|
|
444
43
|
},
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
isAddress(str) {
|
|
448
|
-
return cryptoValidators.isAddress(str);
|
|
44
|
+
nonEmpty(x) {
|
|
45
|
+
return (x != null ? x.length : undefined) > 0;
|
|
449
46
|
},
|
|
450
|
-
|
|
451
|
-
|
|
47
|
+
isNonEmptyString(x) {
|
|
48
|
+
return _.isString(x) && (x != null ? x.length : undefined) > 0;
|
|
452
49
|
},
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
return cryptoValidators.isAddress(str);
|
|
50
|
+
isSafeString(str) {
|
|
51
|
+
// eslint-disable-next-line no-useless-escape, prefer-regex-literals
|
|
52
|
+
return RegExp(/^(\p{L}|[0-9]|-|=|!|\.|:|\s|@|\+|_|,|\$|£|&)+$/, 'u').test(str);
|
|
457
53
|
},
|
|
458
|
-
|
|
459
|
-
|
|
54
|
+
isAssetSafeString(str) {
|
|
55
|
+
// eslint-disable-next-line no-useless-escape, prefer-regex-literals
|
|
56
|
+
return RegExp(/^(\p{L}|[0-9]|-|=|!|\.|:|\s|@|\+|_|,|\$|£|&|\/)+$/, 'u').test(str);
|
|
460
57
|
},
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
58
|
+
ensureShortEnough(limit, x) {
|
|
59
|
+
const l = x != null ? x.length : undefined;
|
|
60
|
+
if (l <= limit) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
throw new E.BadRequest(`Max query size exceeded: ${l} / ${limit}`);
|
|
465
64
|
},
|
|
466
|
-
|
|
467
|
-
|
|
65
|
+
ensure(crit, msg) {
|
|
66
|
+
if (crit) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
throw new E.BadRequest(msg);
|
|
70
|
+
},
|
|
71
|
+
argExists(x, msg) {
|
|
72
|
+
return this._validateArg(this.exists, x, msg);
|
|
73
|
+
},
|
|
74
|
+
check: {
|
|
75
|
+
matches(required, given, msg) {
|
|
76
|
+
const newGiven = _.uniq(given);
|
|
77
|
+
const crit = _.intersection(newGiven, required).length === given.length;
|
|
78
|
+
if (crit) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
throw new E.BadRequest(msg);
|
|
82
|
+
},
|
|
83
|
+
wasFound(type) {
|
|
84
|
+
return (item) => {
|
|
85
|
+
if (item == null) {
|
|
86
|
+
throw new E.NotFound(`Unknown ${type}`);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return item;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
wasCreated(msg) {
|
|
94
|
+
return (arr) => {
|
|
95
|
+
if (!arr[1]) {
|
|
96
|
+
throw new E.BadRequest(msg);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
return arr;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
isTrue(crit, msg) {
|
|
104
|
+
if (crit) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
throw new E.BadRequest(msg);
|
|
108
|
+
},
|
|
109
|
+
isFalse(crit, msg) {
|
|
110
|
+
if (!crit) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
throw new E.BadRequest(msg);
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
isCustomerReference(x) {
|
|
117
|
+
return _.isString(x) && (x != null ? x.length : undefined) > 0 && (x != null ? x.length : undefined) <= 100;
|
|
118
|
+
},
|
|
119
|
+
isCustomerLabelName(x) {
|
|
120
|
+
return _.isString(x) && (x != null ? x.length : undefined) > 0 && (x != null ? x.length : undefined) <= 50;
|
|
121
|
+
},
|
|
122
|
+
binanceChain: {
|
|
123
|
+
isAddress(str) {
|
|
124
|
+
return /^(bnb)([a-z0-9]{39})$/.test(str);
|
|
125
|
+
},
|
|
126
|
+
isTxHash(str) {
|
|
127
|
+
if (!V.isHexadecimal(str)) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return str.length === 64;
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
bitcoin: {
|
|
134
|
+
isAddress(str, asset) {
|
|
135
|
+
if (asset === 'lightning') {
|
|
136
|
+
return validations.isNonEmptyString(str);
|
|
137
|
+
}
|
|
138
|
+
return typeof str === 'string' && addressValidator.validate(str.trim(), 'btc', 'prod');
|
|
139
|
+
},
|
|
140
|
+
isTxHash(str) {
|
|
141
|
+
if (!V.isHexadecimal(str)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return str.length === 64;
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
bitcoinCash: {
|
|
148
|
+
isAddress(str) {
|
|
149
|
+
return /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bitcoincash:)?[q|p][a-z0-9]{41}$|^(BITCOINCASH:)?[Q|P][A-Z0-9]{41}$/.test(str);
|
|
150
|
+
},
|
|
151
|
+
isTxHash(str) {
|
|
152
|
+
if (!V.isHexadecimal(str)) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
return str.length === 64;
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
ethereum: {
|
|
159
|
+
isAddress(str) {
|
|
160
|
+
return cryptoValidators.isEvmAddress(str);
|
|
161
|
+
},
|
|
162
|
+
isBlockHash(str) {
|
|
163
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
164
|
+
},
|
|
165
|
+
isTxHash(str) {
|
|
166
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
167
|
+
},
|
|
168
|
+
isAddressCode(str) {
|
|
169
|
+
return cryptoValidators.isHexStrict(str);
|
|
170
|
+
},
|
|
171
|
+
isValidWeiAmount(str) {
|
|
172
|
+
return cryptoValidators.isValidWeiAmount(str);
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
horizen: {
|
|
176
|
+
isAddress(str) {
|
|
177
|
+
return addressValidator.validate(str, 'zen');
|
|
178
|
+
},
|
|
179
|
+
isTxHash(str) {
|
|
180
|
+
if (!V.isHexadecimal(str)) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
return str.length === 64;
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
litecoin: {
|
|
187
|
+
isAddress(str) {
|
|
188
|
+
return /^[3LM][a-km-zA-HJ-NP-Z1-9]{24,33}$|^ltc1[ac-hj-np-z02-9]{6,86}$|^LTC1[AC-HJ-NP-Z02-9]{6,86}$|^ltcmweb[a-zA-Z0-9]{114}$/.test(str);
|
|
189
|
+
},
|
|
190
|
+
isTxHash(str) {
|
|
191
|
+
if (!V.isHexadecimal(str)) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
return str.length === 64;
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
ripple: {
|
|
198
|
+
isAddress(str) {
|
|
199
|
+
return addressValidator.validate(str, 'xrp');
|
|
200
|
+
},
|
|
201
|
+
isTxHash(str) {
|
|
202
|
+
if (!V.isHexadecimal(str)) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
return str.length === 64;
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
stellar: {
|
|
209
|
+
isAddress(str) {
|
|
210
|
+
return stellarBase.StrKey.isValidEd25519PublicKey(str);
|
|
211
|
+
},
|
|
212
|
+
isTxHash(str) {
|
|
213
|
+
if (!V.isHexadecimal(str)) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
return str.length === 64;
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
zcash: {
|
|
220
|
+
isAddress(str) {
|
|
221
|
+
return addressValidator.validate(str, 'zec');
|
|
222
|
+
},
|
|
223
|
+
isTxHash(str) {
|
|
224
|
+
if (!V.isHexadecimal(str)) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
return str.length === 64;
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
zilliqa: {
|
|
231
|
+
isAddress(str) {
|
|
232
|
+
// https://pub.dev/documentation/laksadart/latest/laksadart/isBech32.html
|
|
233
|
+
return !!str.match(/^zil1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38}$/);
|
|
234
|
+
},
|
|
235
|
+
isTxHash(str) {
|
|
236
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
algorand: {
|
|
240
|
+
isAddress(str) {
|
|
241
|
+
return addressValidator.validate(str, 'algo');
|
|
242
|
+
},
|
|
243
|
+
isTxHash(str) {
|
|
244
|
+
return str.length === 52;
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
tezos: {
|
|
248
|
+
isAddress(str) {
|
|
249
|
+
return str[0] !== 'o' && addressValidator.validate(str, 'xtz');
|
|
250
|
+
},
|
|
251
|
+
isTxHash(str) {
|
|
252
|
+
return str.length === 51;
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
polkadot: {
|
|
256
|
+
isAddress(str) {
|
|
257
|
+
return addressValidator.validate(str, 'dot');
|
|
258
|
+
},
|
|
259
|
+
isTxHash(str) {
|
|
260
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
cardano: {
|
|
264
|
+
isAddress(str) {
|
|
265
|
+
return addressValidator.validate(str, 'ada');
|
|
266
|
+
},
|
|
267
|
+
isTxHash(str) {
|
|
268
|
+
if (!V.isHexadecimal(str)) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
return str.length === 64;
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
cryptocom: {
|
|
275
|
+
isAddress(str) {
|
|
276
|
+
return addressValidator.validate(str, 'cro');
|
|
277
|
+
},
|
|
278
|
+
isTxHash(str) {
|
|
279
|
+
if (!V.isHexadecimal(str)) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
return str.length === 64;
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
near: {
|
|
286
|
+
isAddress(str) {
|
|
287
|
+
// https://nomicon.io/DataStructures/Account
|
|
288
|
+
return /^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(str);
|
|
289
|
+
},
|
|
290
|
+
isTxHash(str) {
|
|
291
|
+
return str.length === 44 || str.length === 43;
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
doge: {
|
|
295
|
+
isAddress(str) {
|
|
296
|
+
return /^[a-zA-Z\d]{34}$/.test(str);
|
|
297
|
+
},
|
|
298
|
+
isTxHash(str) {
|
|
299
|
+
return str.length === 64;
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
cosmos: {
|
|
303
|
+
isAddress(str) {
|
|
304
|
+
return /^cosmos{1}[a-zA-Z\d]{39}$/.test(str);
|
|
305
|
+
},
|
|
306
|
+
isTxHash(str) {
|
|
307
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
solana: {
|
|
311
|
+
isAddress(str) {
|
|
312
|
+
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(str);
|
|
313
|
+
},
|
|
314
|
+
isTxHash(str) {
|
|
315
|
+
return /^[1-9A-HJ-NP-Za-km-z]{77,88}$/.test(str);
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
binanceSmartChain: {
|
|
319
|
+
isAddress(str) {
|
|
320
|
+
return cryptoValidators.isEvmAddress(str);
|
|
321
|
+
},
|
|
322
|
+
isTxHash(str) {
|
|
323
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
polygon: {
|
|
327
|
+
isAddress(str) {
|
|
328
|
+
return cryptoValidators.isEvmAddress(str);
|
|
329
|
+
},
|
|
330
|
+
isTxHash(str) {
|
|
331
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
filecoin: {
|
|
335
|
+
isAddress(str) {
|
|
336
|
+
return /^(f0|f1|f2|f3)/.test(str);
|
|
337
|
+
},
|
|
338
|
+
isTxHash(str) {
|
|
339
|
+
return str.length === 62 && /^bafy2bza/.test(str);
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
optimism: {
|
|
343
|
+
isAddress(str) {
|
|
344
|
+
return cryptoValidators.isEvmAddress(str);
|
|
345
|
+
},
|
|
346
|
+
isTxHash(str) {
|
|
347
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
avalanche: {
|
|
351
|
+
isAddress(str) {
|
|
352
|
+
return cryptoValidators.isEvmAddress(str);
|
|
353
|
+
},
|
|
354
|
+
isTxHash(str) {
|
|
355
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
arbitrum: {
|
|
359
|
+
isAddress(str) {
|
|
360
|
+
return cryptoValidators.isEvmAddress(str);
|
|
361
|
+
},
|
|
362
|
+
isTxHash(str) {
|
|
363
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
tron: {
|
|
367
|
+
isAddress(str) {
|
|
368
|
+
return addressValidator.validate(str, 'tron');
|
|
369
|
+
},
|
|
370
|
+
isTxHash(str) {
|
|
371
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
fantom: {
|
|
375
|
+
isAddress(str) {
|
|
376
|
+
return cryptoValidators.isEvmAddress(str);
|
|
377
|
+
},
|
|
378
|
+
isTxHash(str) {
|
|
379
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
celo: {
|
|
383
|
+
isAddress(str) {
|
|
384
|
+
return cryptoValidators.isEvmAddress(str);
|
|
385
|
+
},
|
|
386
|
+
isTxHash(str) {
|
|
387
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
ethereumClassic: {
|
|
391
|
+
isAddress(str) {
|
|
392
|
+
return cryptoValidators.isEvmAddress(str);
|
|
393
|
+
},
|
|
394
|
+
isTxHash(str) {
|
|
395
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
mobilecoin: {
|
|
399
|
+
isAddress(str) {
|
|
400
|
+
return str.length === 24 && /^[A-Za-z0-9+/]+={0,2}$/.test(str);
|
|
401
|
+
},
|
|
402
|
+
isTxHash(str) {
|
|
403
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
sui: {
|
|
407
|
+
isAddress(str) {
|
|
408
|
+
return str.length === 66 && /^[A-Za-z0-9+/]+$/.test(str);
|
|
409
|
+
},
|
|
410
|
+
isTxHash(str) {
|
|
411
|
+
return str.length === 44;
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
flare: {
|
|
415
|
+
isAddress(str) {
|
|
416
|
+
return str.length === 42 && /^[A-Za-z0-9+/]+$/.test(str);
|
|
417
|
+
},
|
|
418
|
+
isTxHash(str) {
|
|
419
|
+
return str.length === 66;
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
ton: {
|
|
423
|
+
isAddress(str) {
|
|
424
|
+
return /^[A-Za-z0-9+/]{64}$/.test(str);
|
|
425
|
+
},
|
|
426
|
+
isTxHash(str) {
|
|
427
|
+
return /^[A-Za-z0-9+/]{64}$/.test(str);
|
|
428
|
+
},
|
|
429
|
+
},
|
|
430
|
+
gnosis: {
|
|
431
|
+
isAddress(str) {
|
|
432
|
+
return cryptoValidators.isEvmAddress(str);
|
|
433
|
+
},
|
|
434
|
+
isTxHash(str) {
|
|
435
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
dydx: {
|
|
439
|
+
isAddress(str) {
|
|
440
|
+
return /^[a-z]+1[a-zA-Z0-9]{38}$/.test(str) || str === 'dydx_chain';
|
|
441
|
+
},
|
|
442
|
+
isTxHash(str) {
|
|
443
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
hederaHashgraph: {
|
|
447
|
+
isAddress(str) {
|
|
448
|
+
return /^\d+\.\d+\.\d+$/.test(str);
|
|
449
|
+
},
|
|
450
|
+
isTxHash(str) {
|
|
451
|
+
return /^[xa-f0-9+/]{98}$/.test(str);
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
aptos: {
|
|
455
|
+
isAddress(str) {
|
|
456
|
+
return str.length <= 66 && cryptoValidators.isHex(str);
|
|
457
|
+
},
|
|
458
|
+
isTxHash(str) {
|
|
459
|
+
return cryptoValidators.isHex(str);
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
zksync: {
|
|
463
|
+
isAddress(str) {
|
|
464
|
+
return cryptoValidators.isEvmAddress(str);
|
|
465
|
+
},
|
|
466
|
+
isTxHash(str) {
|
|
467
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
haqq: {
|
|
471
|
+
isAddress(str) {
|
|
472
|
+
return cryptoValidators.isEvmAddress(str);
|
|
473
|
+
},
|
|
474
|
+
isTxHash(str) {
|
|
475
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
base: {
|
|
479
|
+
isAddress(str) {
|
|
480
|
+
return cryptoValidators.isEvmAddress(str);
|
|
481
|
+
},
|
|
482
|
+
isTxHash(str) {
|
|
483
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
corechain: {
|
|
487
|
+
isAddress(str) {
|
|
488
|
+
return cryptoValidators.isEvmAddress(str);
|
|
489
|
+
},
|
|
490
|
+
isTxHash(str) {
|
|
491
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
worldchain: {
|
|
495
|
+
isAddress(str) {
|
|
496
|
+
return cryptoValidators.isEvmAddress(str);
|
|
497
|
+
},
|
|
498
|
+
isTxHash(str) {
|
|
499
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
injective: {
|
|
503
|
+
isAddress(str) {
|
|
504
|
+
return /^[a-z0-9]+$/i.test(str);
|
|
505
|
+
},
|
|
506
|
+
isTxHash(str) {
|
|
507
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
508
|
+
},
|
|
509
|
+
},
|
|
510
|
+
linea: {
|
|
511
|
+
isAddress(str) {
|
|
512
|
+
return cryptoValidators.isEvmAddress(str);
|
|
513
|
+
},
|
|
514
|
+
isTxHash(str) {
|
|
515
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
516
|
+
},
|
|
517
|
+
},
|
|
518
|
+
xdc: {
|
|
519
|
+
isAddress(str) {
|
|
520
|
+
return cryptoValidators.isEvmAddress(str);
|
|
521
|
+
},
|
|
522
|
+
isTxHash(str) {
|
|
523
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
524
|
+
},
|
|
525
|
+
},
|
|
526
|
+
internetcomputer: {
|
|
527
|
+
isAddress(str) {
|
|
528
|
+
return cryptoValidators.isHex(str);
|
|
529
|
+
},
|
|
530
|
+
isTxHash(str) {
|
|
531
|
+
return cryptoValidators.isHex(str);
|
|
532
|
+
},
|
|
533
|
+
},
|
|
534
|
+
unichain: {
|
|
535
|
+
isAddress(str) {
|
|
536
|
+
return cryptoValidators.isEvmAddress(str);
|
|
537
|
+
},
|
|
538
|
+
isTxHash(str) {
|
|
539
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
540
|
+
},
|
|
541
|
+
},
|
|
542
|
+
sei: {
|
|
543
|
+
isAddress(str) {
|
|
544
|
+
return /^[a-z0-9]+$/i.test(str);
|
|
545
|
+
},
|
|
546
|
+
isTxHash(str) {
|
|
547
|
+
return (str.length === 64 && cryptoValidators.isHex(str)) || (str.length === 66 && cryptoValidators.isHexStrict(str));
|
|
548
|
+
},
|
|
549
|
+
},
|
|
550
|
+
bittensor: {
|
|
551
|
+
isAddress(str) {
|
|
552
|
+
return addressValidator.validate(str, 'dot');
|
|
553
|
+
},
|
|
554
|
+
isTxHash(str) {
|
|
555
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
codex: {
|
|
559
|
+
isAddress(str) {
|
|
560
|
+
return cryptoValidators.isEvmAddress(str);
|
|
561
|
+
},
|
|
562
|
+
isTxHash(str) {
|
|
563
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
mantra: {
|
|
567
|
+
isAddress(str) {
|
|
568
|
+
return /^[a-z0-9]+$/i.test(str);
|
|
569
|
+
},
|
|
570
|
+
isTxHash(str) {
|
|
571
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
572
|
+
},
|
|
573
|
+
},
|
|
574
|
+
nillion: {
|
|
575
|
+
isAddress(str) {
|
|
576
|
+
return /^[a-z0-9]+$/i.test(str);
|
|
577
|
+
},
|
|
578
|
+
isTxHash(str) {
|
|
579
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
580
|
+
},
|
|
581
|
+
},
|
|
582
|
+
canton: {
|
|
583
|
+
isAddress(str) {
|
|
584
|
+
return str.length > 1;
|
|
585
|
+
},
|
|
586
|
+
isTxHash(str) {
|
|
587
|
+
return cryptoValidators.isHex(str) && str.length === 68;
|
|
588
|
+
},
|
|
589
|
+
},
|
|
590
|
+
starknet: {
|
|
591
|
+
isAddress(str) {
|
|
592
|
+
return cryptoValidators.isHex(str);
|
|
593
|
+
},
|
|
594
|
+
isTxHash(str) {
|
|
595
|
+
return cryptoValidators.isHex(str);
|
|
596
|
+
},
|
|
597
|
+
},
|
|
598
|
+
noble: {
|
|
599
|
+
isAddress(str) {
|
|
600
|
+
return /^[a-z0-9]+$/i.test(str);
|
|
601
|
+
},
|
|
602
|
+
isTxHash(str) {
|
|
603
|
+
return str.length === 64 && cryptoValidators.isHex(str);
|
|
604
|
+
},
|
|
605
|
+
},
|
|
606
|
+
assethub: {
|
|
607
|
+
isAddress(str) {
|
|
608
|
+
return addressValidator.validate(str, 'dot');
|
|
609
|
+
},
|
|
610
|
+
isTxHash(str) {
|
|
611
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
plasma: {
|
|
615
|
+
isAddress(str) {
|
|
616
|
+
return cryptoValidators.isEvmAddress(str);
|
|
617
|
+
},
|
|
618
|
+
isTxHash(str) {
|
|
619
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
620
|
+
},
|
|
621
|
+
},
|
|
622
|
+
ink: {
|
|
623
|
+
isAddress(str) {
|
|
624
|
+
return cryptoValidators.isEvmAddress(str);
|
|
625
|
+
},
|
|
626
|
+
isTxHash(str) {
|
|
627
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
628
|
+
},
|
|
629
|
+
},
|
|
630
|
+
xlayer: {
|
|
631
|
+
isAddress(str) {
|
|
632
|
+
return cryptoValidators.isEvmAddress(str);
|
|
633
|
+
},
|
|
634
|
+
isTxHash(str) {
|
|
635
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
636
|
+
},
|
|
637
|
+
},
|
|
638
|
+
monad: {
|
|
639
|
+
isAddress(str) {
|
|
640
|
+
return cryptoValidators.isEvmAddress(str);
|
|
641
|
+
},
|
|
642
|
+
isTxHash(str) {
|
|
643
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
644
|
+
},
|
|
645
|
+
},
|
|
646
|
+
hyperevm: {
|
|
647
|
+
isAddress(str) {
|
|
648
|
+
return cryptoValidators.isEvmAddress(str);
|
|
649
|
+
},
|
|
650
|
+
isTxHash(str) {
|
|
651
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
tempo: {
|
|
655
|
+
isAddress(str) {
|
|
656
|
+
return cryptoValidators.isEvmAddress(str);
|
|
657
|
+
},
|
|
658
|
+
isTxHash(str) {
|
|
659
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
660
|
+
},
|
|
661
|
+
},
|
|
662
|
+
morph: {
|
|
663
|
+
isAddress(str) {
|
|
664
|
+
return cryptoValidators.isEvmAddress(str);
|
|
665
|
+
},
|
|
666
|
+
isTxHash(str) {
|
|
667
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
668
|
+
},
|
|
669
|
+
},
|
|
670
|
+
etherlink: {
|
|
671
|
+
isAddress(str) {
|
|
672
|
+
return cryptoValidators.isEvmAddress(str);
|
|
673
|
+
},
|
|
674
|
+
isTxHash(str) {
|
|
675
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
676
|
+
},
|
|
677
|
+
},
|
|
678
|
+
edgex: {
|
|
679
|
+
isAddress(str) {
|
|
680
|
+
return cryptoValidators.isEvmAddress(str);
|
|
681
|
+
},
|
|
682
|
+
isTxHash(str) {
|
|
683
|
+
return str.length === 66 && cryptoValidators.isHexStrict(str);
|
|
684
|
+
},
|
|
468
685
|
},
|
|
469
|
-
},
|
|
470
686
|
};
|
|
471
|
-
|
|
472
687
|
Object.keys(V).forEach((k) => {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
688
|
+
const v = V[k];
|
|
689
|
+
// don't trigger validation with null values (prevents swagger 500 error)
|
|
690
|
+
validations[k] = (x) => (x === null ? false : v(x));
|
|
476
691
|
});
|
|
477
|
-
|
|
478
692
|
module.exports = validations;
|
|
693
|
+
//# sourceMappingURL=validations.js.map
|