Files
Julien Marchand a001342170 chore: Initial commit
Co-authored-by: Franklin Delehelle <franklin.delehelle@odena.eu>
Co-authored-by: Alexandre Belling <alexandrebelling8@gmail.com>
Co-authored-by: Pedro Novais <jpvnovais@gmail.com>
Co-authored-by: Roman Vaseev <4833306+Filter94@users.noreply.github.com>
Co-authored-by: Bradley Bown <bradbown@googlemail.com>
Co-authored-by: Victorien Gauch <85494462+VGau@users.noreply.github.com>
Co-authored-by: Nikolai Golub <nikolai.golub@consensys.net>
Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
Co-authored-by: jonesho <81145364+jonesho@users.noreply.github.com>
Co-authored-by: Gaurav Ahuja <gauravahuja9@gmail.com>
Co-authored-by: Azam Soleimanian <49027816+Soleimani193@users.noreply.github.com>
Co-authored-by: Andrei A <andrei.alexandru@consensys.net>
Co-authored-by: Arijit Dutta <37040536+arijitdutta67@users.noreply.github.com>
Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
Co-authored-by: Ivo Kubjas <ivo.kubjas@consensys.net>
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
Co-authored-by: FlorianHuc <florian.huc@gmail.com>
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
Co-authored-by: Julink <julien.fontanel@consensys.net>
Co-authored-by: Bogdan Ursu <bogdanursuoffice@gmail.com>
Co-authored-by: Jakub Trąd <jakubtrad@gmail.com>
Co-authored-by: Alessandro Sforzin <alessandro.sforzin@consensys.net>
Co-authored-by: Olivier Bégassat <olivier.begassat.cours@gmail.com>
Co-authored-by: Steve Huang <97596526+stevehuangc7s@users.noreply.github.com>
Co-authored-by: bkolad <blazejkolad@gmail.com>
Co-authored-by: fadyabuhatoum1 <139905934+fadyabuhatoum1@users.noreply.github.com>
Co-authored-by: Blas Rodriguez Irizar <rodrigblas@gmail.com>
Co-authored-by: Eduardo Andrade <eduardofandrade@gmail.com>
Co-authored-by: Ivo Kubjas <tsimmm@gmail.com>
Co-authored-by: Ludcour <ludovic.courcelas@consensys.net>
Co-authored-by: m4sterbunny <harrie.bickle@consensys.net>
Co-authored-by: Alex Panayi <145478258+alexandrospanayi@users.noreply.github.com>
Co-authored-by: Diana Borbe - ConsenSys <diana.borbe@consensys.net>
Co-authored-by: ThomasPiellard <thomas.piellard@gmail.com>
2024-07-31 18:17:20 +02:00

50 lines
1.4 KiB
TypeScript

const HEXADECIMAL_REGEX = new RegExp("^0[xX][0-9a-fA-F]+$");
const ADDRESS_HEX_STR_SIZE = 42;
const PRIVKEY_HEX_STR_SIZE = 66;
const HASH_HEX_STR_SIZE = 66;
function sanitizeHexBytes(paramName: string, value: string, expectedSize: number) {
// TODO: add hexadecimal regex match
if (!value.startsWith("0x")) {
value = "0x" + value;
}
if (!HEXADECIMAL_REGEX.test(value)) {
throw new Error(`${paramName}: '${value}' is not a valid Hexadecimal notation!`);
}
if (value.length !== expectedSize) {
throw new Error(`${paramName} has size ${value.length} expected ${expectedSize}`);
}
return value;
}
function sanitizeAddress(argName: string) {
return (input: string) => {
return sanitizeHexBytes(argName, input, ADDRESS_HEX_STR_SIZE);
};
}
function sanitizePrivKey(argName: string) {
return (input: string) => {
return sanitizeHexBytes(argName, input, PRIVKEY_HEX_STR_SIZE);
};
}
function sanitizeHash(argName: string) {
return (input: string) => {
return sanitizeHexBytes(argName, input, HASH_HEX_STR_SIZE);
};
}
function assertIsNumber(argName: string) {
return (input: string) => {
if (typeof input != "number" || isNaN(input)) {
throw Error(`${argName} must be a valid number. Got: '${input}'`);
}
return input;
};
}
export { sanitizeHexBytes, sanitizeAddress, sanitizePrivKey, sanitizeHash, assertIsNumber };