UNPKG

livr-extra-rules

Version:
29 lines (23 loc) 918 B
const util = require('../util'); const uuidRe = { v1: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i, v2: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i, v3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, v4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, v5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i }; function uuid(version) { if (arguments.length == 1) { version = 'v4'; } if (!['v1', 'v2', 'v3', 'v4', 'v5'].includes(version)) { throw new Error('LIVR: unsupported uuid version: ' + version); } return value => { if (util.isNoValue(value)) return; if (!util.isPrimitiveValue(value)) return 'FORMAT_ERROR'; if (!uuidRe[version].test(value + '')) return 'NOT_UUID'; return; }; } module.exports = uuid;