UNPKG

hive-keychain-commons

Version:

Platform-agnostic functions used in Hive Keychain mobile and extensions

51 lines (50 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccountsUtils = void 0; const HIVE_MIN_ACCOUNT_NAME_LENGTH = 3; const HIVE_MAX_ACCOUNT_NAME_LENGTH = 16; var UsernameValidation; (function (UsernameValidation) { UsernameValidation[UsernameValidation["too_short"] = 0] = "too_short"; UsernameValidation[UsernameValidation["too_long"] = 1] = "too_long"; UsernameValidation[UsernameValidation["invalid_segment_length"] = 2] = "invalid_segment_length"; UsernameValidation[UsernameValidation["invalid_first_character"] = 3] = "invalid_first_character"; UsernameValidation[UsernameValidation["invalid_last_character"] = 4] = "invalid_last_character"; UsernameValidation[UsernameValidation["invalid_middle_characters"] = 5] = "invalid_middle_characters"; UsernameValidation[UsernameValidation["valid"] = 6] = "valid"; })(UsernameValidation || (UsernameValidation = {})); const validateUsername = (name) => { const len = name.length; if (len < HIVE_MIN_ACCOUNT_NAME_LENGTH) return UsernameValidation.too_short; if (len > HIVE_MAX_ACCOUNT_NAME_LENGTH) return UsernameValidation.too_long; let begin = 0; while (true) { let end = name.indexOf('.', begin); if (end === -1) end = len; if (end - begin < 3) return UsernameValidation.invalid_segment_length; const segment = name.slice(begin, end); // Check first character: must be a-z if (!/^[a-z]/.test(segment[0])) return UsernameValidation.invalid_first_character; // Check last character: must be a-z or 0-9 if (!/[a-z0-9]$/.test(segment[segment.length - 1])) return UsernameValidation.invalid_last_character; // Check middle characters for (let i = 1; i < segment.length - 1; i++) { if (!/[a-z0-9-]/.test(segment[i])) return UsernameValidation.invalid_middle_characters; } if (end === len) break; begin = end + 1; } return UsernameValidation.valid; }; exports.AccountsUtils = { UsernameValidation, validateUsername, };