UNPKG

better-dni

Version:

The fastest Spanish DNI (NIE / NIF) validation out there.

3 lines (2 loc) 2.1 kB
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).dni={})}(this,(function(n){"use strict";var e=function(n){return"trwagmyfpdxbnjzsqvhlcke"[+n%23]},r=function(n){return(""+Math.random()).slice(-n)},t=function(n){return(function(n){var e=n%2147483647;return e<=0&&(e+=2147483646),{next:function(){return e=16807*e%2147483647}}}(n).next()-1)/2147483646},o=function(n){var r="xyzXYZ".indexOf(n[0])%3,t=r.toString();-1===r&&(t=n[0]);var o=""+t+n.slice(1,8);return e(o).toUpperCase()},i=function(n){return/^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]{1}$/i.test(n)},a=function(n){return/^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKE]{1}$/i.test(n)};n.ctrlChar=o,n.isNIE=function(n){return!!n&&9===n.length&&i(n)&&o(n)===n[8].toUpperCase()},n.isNIF=function(n){return!!n&&9===n.length&&a(n)&&o(n)===n[8].toUpperCase()},n.isValid=function(n){var e=n||"";if(9!==e.length&&!i(e)&&!a(e))return!1;var r="xyzXYZ".indexOf(e[0])%3,t=r.toString();-1===r&&(t=e[0]);var o=+(t+e.slice(1,8))%23;return"trwagmyfpdxbnjzsqvhlcket".indexOf(e[8].toLowerCase())===o},n.normalize=function(n){return n.replace(/[-_\s]/gi,"").toUpperCase()},n.randomNIE=function(){var n=Math.floor(3*Math.random()),t=r(7),o=e(""+n+t).toUpperCase();return""+"XYZ"[n]+t+o},n.randomNIEWith=function(n,e,r){void 0===r&&(r=1e8*Math.random());var o="xyzXYZ".indexOf(n)%3;if(-1===o)return null;var i="trwagmyfpdxbnjzsqvhlckeTRWAGMYFPDXBNJZSQVHLCKE".indexOf(e)%23;if(-1===i)return null;var a=o+1,u=+(""+o+Math.floor(1e6*a+(9999999-1e6*a-23)*t(r)));return(""+n+("0"+(u-u%23+i)+e).slice(-8)).toUpperCase()},n.randomNIF=function(){var n=r(8);return n+e(n).toUpperCase()},n.randomNIFWith=function(n,e){void 0===e&&(e=1e8*Math.random());var r="trwagmyfpdxbnjzsqvhlckeTRWAGMYFPDXBNJZSQVHLCKE".indexOf(n)%23;if(-1===r)return null;var o=99999998-4347826*(Math.floor(22*t(e))+1);return(""+("0"+(o+(r-Math.max(0,o)%23))).slice(-8)+n).toUpperCase()},Object.defineProperty(n,"__esModule",{value:!0})})); //# sourceMappingURL=index.js.map