UNPKG

fastest-validator

Version:

The fastest JS validator library for NodeJS

57 lines (48 loc) 1.19 kB
"use strict"; const PATTERN = /^([0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}|[0]{8}-[0]{4}-[0]{4}-[0]{4}-[0]{12})$/i; /** Signature: function(value, field, parent, errors, context) */ module.exports = function({ schema, messages }, path) { const src = []; src.push(` if (typeof value !== "string") { ${this.makeError({ type: "string", actual: "value", messages })} return value; } var val = value.toLowerCase(); if (!${PATTERN.toString()}.test(val)) { ${this.makeError({ type: "uuid", actual: "value", messages })} return value; } const version = val.charAt(14) | 0; `); if(parseInt(schema.version) < 9) { src.push(` if (${schema.version} !== version) { ${this.makeError({ type: "uuidVersion", expected: schema.version, actual: "version", messages })} return value; } `); } src.push(` switch (version) { case 0: case 1: case 2: case 6: break; case 3: case 4: case 5: case 7: case 8: if (["8", "9", "a", "b"].indexOf(val.charAt(19)) === -1) { ${this.makeError({ type: "uuid", actual: "value", messages })} } } return value; `); return { source: src.join("\n") }; };