2021-04-30 04:30:50 -06:00
( function ( f ) { if ( typeof exports === "object" && typeof module !== "undefined" ) { module . exports = f ( ) } else if ( typeof define === "function" && define . amd ) { define ( [ ] , f ) } else { var g ; if ( typeof window !== "undefined" ) { g = window } else if ( typeof global !== "undefined" ) { g = global } else if ( typeof self !== "undefined" ) { g = self } else { g = this } g . doip = f ( ) } } ) ( function ( ) { var define , module , exports ; return ( function ( ) { function r ( e , n , t ) { function o ( i , f ) { if ( ! n [ i ] ) { if ( ! e [ i ] ) { var c = "function" == typeof require && require ; if ( ! f && c ) return c ( i , ! 0 ) ; if ( u ) return u ( i , ! 0 ) ; var a = new Error ( "Cannot find module '" + i + "'" ) ; throw a . code = "MODULE_NOT_FOUND" , a } var p = n [ i ] = { exports : { } } ; e [ i ] [ 0 ] . call ( p . exports , function ( r ) { var n = e [ i ] [ 1 ] [ r ] ; return o ( n || r ) } , p , p . exports , r , e , n , t ) } return n [ i ] . exports } for ( var u = "function" == typeof require && require , i = 0 ; i < t . length ; i ++ ) o ( t [ i ] ) ; return o } return r } ) ( ) ( { 1 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
'use strict'
/* global fetch, btoa, Headers */
const core = require ( './core' )
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
class StatusError extends Error {
constructor ( res , ... params ) {
super ( ... params )
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( Error . captureStackTrace ) {
Error . captureStackTrace ( this , StatusError )
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
this . name = 'StatusError'
this . message = res . statusMessage
this . statusCode = res . status
this . res = res
this . json = res . json . bind ( res )
this . text = res . text . bind ( res )
this . arrayBuffer = res . arrayBuffer . bind ( res )
let buffer
const get = ( ) => {
if ( ! buffer ) buffer = this . arrayBuffer ( )
return buffer
}
Object . defineProperty ( this , 'responseBody' , { get } )
// match Node.js headers object
this . headers = { }
for ( const [ key , value ] of res . headers . entries ( ) ) {
this . headers [ key . toLowerCase ( ) ] = value
}
2020-10-24 17:22:54 -06:00
}
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
const mkrequest = ( statusCodes , method , encoding , headers , baseurl ) => async ( _url , body , _headers = { } ) => {
_url = baseurl + ( _url || '' )
let parsed = new URL ( _url )
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( ! headers ) headers = { }
if ( parsed . username ) {
headers . Authorization = 'Basic ' + btoa ( parsed . username + ':' + parsed . password )
parsed = new URL ( parsed . protocol + '//' + parsed . host + parsed . pathname + parsed . search )
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
if ( parsed . protocol !== 'https:' && parsed . protocol !== 'http:' ) {
throw new Error ( ` Unknown protocol, ${ parsed . protocol } ` )
2020-10-24 17:22:54 -06:00
}
2021-03-02 02:48:52 -07:00
if ( body ) {
if ( body instanceof ArrayBuffer ||
ArrayBuffer . isView ( body ) ||
typeof body === 'string'
) {
// noop
} else if ( typeof body === 'object' ) {
body = JSON . stringify ( body )
headers [ 'Content-Type' ] = 'application/json'
} else {
throw new Error ( 'Unknown body type.' )
}
}
2020-10-24 17:22:54 -06:00
2021-03-02 02:48:52 -07:00
_headers = new Headers ( { ... ( headers || { } ) , ... _headers } )
2020-10-24 17:22:54 -06:00
2021-03-02 02:48:52 -07:00
const resp = await fetch ( parsed , { method , headers : _headers , body } )
resp . statusCode = resp . status
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( ! statusCodes . has ( resp . status ) ) {
throw new StatusError ( resp )
2020-10-24 17:22:54 -06:00
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( encoding === 'json' ) return resp . json ( )
else if ( encoding === 'buffer' ) return resp . arrayBuffer ( )
else if ( encoding === 'string' ) return resp . text ( )
else return resp
2020-10-24 17:22:54 -06:00
}
2021-03-02 02:48:52 -07:00
module . exports = core ( mkrequest )
2020-10-24 17:22:54 -06:00
2021-04-30 04:30:50 -06:00
} , { "./core" : 2 } ] , 2 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
'use strict'
const encodings = new Set ( [ 'json' , 'buffer' , 'string' ] )
2020-10-24 17:22:54 -06:00
2021-03-02 02:48:52 -07:00
module . exports = mkrequest => ( ... args ) => {
const statusCodes = new Set ( )
let method
let encoding
let headers
let baseurl = ''
2020-10-24 17:22:54 -06:00
2021-03-02 02:48:52 -07:00
args . forEach ( arg => {
if ( typeof arg === 'string' ) {
if ( arg . toUpperCase ( ) === arg ) {
if ( method ) {
const msg = ` Can't set method to ${ arg } , already set to ${ method } . `
throw new Error ( msg )
} else {
method = arg
}
} else if ( arg . startsWith ( 'http:' ) || arg . startsWith ( 'https:' ) ) {
baseurl = arg
} else {
if ( encodings . has ( arg ) ) {
encoding = arg
} else {
throw new Error ( ` Unknown encoding, ${ arg } ` )
}
2020-10-24 17:22:54 -06:00
}
2021-03-02 02:48:52 -07:00
} else if ( typeof arg === 'number' ) {
statusCodes . add ( arg )
} else if ( typeof arg === 'object' ) {
if ( Array . isArray ( arg ) || arg instanceof Set ) {
arg . forEach ( code => statusCodes . add ( code ) )
} else {
if ( headers ) {
throw new Error ( 'Cannot set headers twice.' )
}
headers = arg
}
} else {
throw new Error ( ` Unknown type: ${ typeof arg } ` )
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
} )
2020-10-24 17:22:54 -06:00
2021-03-02 02:48:52 -07:00
if ( ! method ) method = 'GET'
if ( statusCodes . size === 0 ) {
statusCodes . add ( 200 )
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return mkrequest ( statusCodes , method , encoding , headers , baseurl )
}
2020-11-05 04:14:26 -07:00
2021-04-30 04:30:50 -06:00
} , { } ] , 3 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
( function ( process ) { ( function ( ) {
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
/* global window self */
var isBrowser = typeof window !== 'undefined' && typeof window . document !== 'undefined' ;
/* eslint-disable no-restricted-globals */
var isWebWorker = ( typeof self === 'undefined' ? 'undefined' : _typeof ( self ) ) === 'object' && self . constructor && self . constructor . name === 'DedicatedWorkerGlobalScope' ;
/* eslint-enable no-restricted-globals */
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
var isNode = typeof process !== 'undefined' && process . versions != null && process . versions . node != null ;
/ * *
* @ see https : //github.com/jsdom/jsdom/releases/tag/12.0.0
* @ see https : //github.com/jsdom/jsdom/issues/1537
* /
/* eslint-disable no-undef */
var isJsDom = function isJsDom ( ) {
return typeof window !== 'undefined' && window . name === 'nodejs' || navigator . userAgent . includes ( 'Node.js' ) || navigator . userAgent . includes ( 'jsdom' ) ;
} ;
exports . isBrowser = isBrowser ;
exports . isWebWorker = isWebWorker ;
exports . isNode = isNode ;
exports . isJsDom = isJsDom ;
} ) . call ( this ) } ) . call ( this , require ( '_process' ) )
2021-04-30 04:30:50 -06:00
} , { "_process" : 9 } ] , 4 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
2021-04-30 04:30:50 -06:00
} , { } ] , 5 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
'use strict' ;
2021-03-05 09:13:08 -07:00
var token = '%[a-f0-9]{2}' ;
var singleMatcher = new RegExp ( token , 'gi' ) ;
var multiMatcher = new RegExp ( '(' + token + ')+' , 'gi' ) ;
function decodeComponents ( components , split ) {
try {
// Try to decode the entire string first
return decodeURIComponent ( components . join ( '' ) ) ;
} catch ( err ) {
// Do nothing
}
if ( components . length === 1 ) {
return components ;
}
split = split || 1 ;
// Split the array in 2 parts
var left = components . slice ( 0 , split ) ;
var right = components . slice ( split ) ;
return Array . prototype . concat . call ( [ ] , decodeComponents ( left ) , decodeComponents ( right ) ) ;
}
function decode ( input ) {
try {
return decodeURIComponent ( input ) ;
} catch ( err ) {
var tokens = input . match ( singleMatcher ) ;
for ( var i = 1 ; i < tokens . length ; i ++ ) {
input = decodeComponents ( tokens , i ) . join ( '' ) ;
tokens = input . match ( singleMatcher ) ;
}
return input ;
}
}
function customDecodeURIComponent ( input ) {
// Keep track of all the replacements and prefill the map with the `BOM`
var replaceMap = {
'%FE%FF' : '\uFFFD\uFFFD' ,
'%FF%FE' : '\uFFFD\uFFFD'
} ;
var match = multiMatcher . exec ( input ) ;
while ( match ) {
try {
// Decode as big chunks as possible
replaceMap [ match [ 0 ] ] = decodeURIComponent ( match [ 0 ] ) ;
} catch ( err ) {
var result = decode ( match [ 0 ] ) ;
if ( result !== match [ 0 ] ) {
replaceMap [ match [ 0 ] ] = result ;
}
}
match = multiMatcher . exec ( input ) ;
}
// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
replaceMap [ '%C2' ] = '\uFFFD' ;
var entries = Object . keys ( replaceMap ) ;
for ( var i = 0 ; i < entries . length ; i ++ ) {
// Replace all decoded components
var key = entries [ i ] ;
input = input . replace ( new RegExp ( key , 'g' ) , replaceMap [ key ] ) ;
}
return input ;
}
module . exports = function ( encodedURI ) {
if ( typeof encodedURI !== 'string' ) {
throw new TypeError ( 'Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`' ) ;
}
try {
encodedURI = encodedURI . replace ( /\+/g , ' ' ) ;
// Try the built in decoder first
return decodeURIComponent ( encodedURI ) ;
} catch ( err ) {
// Fallback to a more advanced decoder
return customDecodeURIComponent ( encodedURI ) ;
}
} ;
2021-04-30 04:30:50 -06:00
} , { } ] , 6 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
'use strict' ;
module . exports = function ( obj , predicate ) {
var ret = { } ;
var keys = Object . keys ( obj ) ;
var isArr = Array . isArray ( predicate ) ;
for ( var i = 0 ; i < keys . length ; i ++ ) {
var key = keys [ i ] ;
var val = obj [ key ] ;
if ( isArr ? predicate . indexOf ( key ) !== - 1 : predicate ( key , val , obj ) ) {
ret [ key ] = val ;
}
}
return ret ;
} ;
2021-04-30 04:30:50 -06:00
} , { } ] , 7 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
'use strict' ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
module . exports = value => {
if ( Object . prototype . toString . call ( value ) !== '[object Object]' ) {
return false ;
}
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
const prototype = Object . getPrototypeOf ( value ) ;
return prototype === null || prototype === Object . prototype ;
} ;
2020-11-05 04:14:26 -07:00
2021-04-30 04:30:50 -06:00
} , { } ] , 8 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
'use strict' ;
const isOptionObject = require ( 'is-plain-obj' ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
const { hasOwnProperty } = Object . prototype ;
const { propertyIsEnumerable } = Object ;
const defineProperty = ( object , name , value ) => Object . defineProperty ( object , name , {
value ,
writable : true ,
enumerable : true ,
configurable : true
} ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
const globalThis = this ;
const defaultMergeOptions = {
concatArrays : false ,
ignoreUndefined : false
} ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
const getEnumerableOwnPropertyKeys = value => {
const keys = [ ] ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
for ( const key in value ) {
if ( hasOwnProperty . call ( value , key ) ) {
keys . push ( key ) ;
}
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
/* istanbul ignore else */
if ( Object . getOwnPropertySymbols ) {
const symbols = Object . getOwnPropertySymbols ( value ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
for ( const symbol of symbols ) {
if ( propertyIsEnumerable . call ( value , symbol ) ) {
keys . push ( symbol ) ;
}
}
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return keys ;
} ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
function clone ( value ) {
if ( Array . isArray ( value ) ) {
return cloneArray ( value ) ;
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( isOptionObject ( value ) ) {
return cloneOptionObject ( value ) ;
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
return value ;
2020-11-05 04:14:26 -07:00
}
2021-03-02 02:48:52 -07:00
function cloneArray ( array ) {
const result = array . slice ( 0 , 0 ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
getEnumerableOwnPropertyKeys ( array ) . forEach ( key => {
defineProperty ( result , key , clone ( array [ key ] ) ) ;
} ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return result ;
2020-11-05 04:14:26 -07:00
}
2021-03-02 02:48:52 -07:00
function cloneOptionObject ( object ) {
const result = Object . getPrototypeOf ( object ) === null ? Object . create ( null ) : { } ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
getEnumerableOwnPropertyKeys ( object ) . forEach ( key => {
defineProperty ( result , key , clone ( object [ key ] ) ) ;
} ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return result ;
2020-11-06 10:39:06 -07:00
}
2020-11-05 04:14:26 -07:00
2020-11-06 10:39:06 -07:00
/ * *
2021-03-02 02:48:52 -07:00
* @ param { * } merged already cloned
* @ param { * } source something to merge
* @ param { string [ ] } keys keys to merge
* @ param { Object } config Config Object
* @ returns { * } cloned Object
2020-11-06 10:39:06 -07:00
* /
2021-03-02 02:48:52 -07:00
const mergeKeys = ( merged , source , keys , config ) => {
keys . forEach ( key => {
if ( typeof source [ key ] === 'undefined' && config . ignoreUndefined ) {
return ;
}
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
// Do not recurse into prototype chain of merged
if ( key in merged && merged [ key ] !== Object . getPrototypeOf ( merged ) ) {
defineProperty ( merged , key , merge ( merged [ key ] , source [ key ] , config ) ) ;
} else {
defineProperty ( merged , key , clone ( source [ key ] ) ) ;
}
} ) ;
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
return merged ;
} ;
2020-11-05 04:14:26 -07:00
2020-11-06 10:39:06 -07:00
/ * *
2021-03-02 02:48:52 -07:00
* @ param { * } merged already cloned
* @ param { * } source something to merge
* @ param { Object } config Config Object
* @ returns { * } cloned Object
*
* see [ Array . prototype . concat ( ... arguments ) ] ( http : //www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat)
* /
const concatArrays = ( merged , source , config ) => {
let result = merged . slice ( 0 , 0 ) ;
let resultIndex = 0 ;
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
[ merged , source ] . forEach ( array => {
const indices = [ ] ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
// `result.concat(array)` with cloning
for ( let k = 0 ; k < array . length ; k ++ ) {
if ( ! hasOwnProperty . call ( array , k ) ) {
continue ;
}
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
indices . push ( String ( k ) ) ;
2020-11-06 10:39:06 -07:00
2021-03-02 02:48:52 -07:00
if ( array === merged ) {
// Already cloned
defineProperty ( result , resultIndex ++ , array [ k ] ) ;
} else {
defineProperty ( result , resultIndex ++ , clone ( array [ k ] ) ) ;
}
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
// Merge non-index keys
result = mergeKeys ( result , array , getEnumerableOwnPropertyKeys ( array ) . filter ( key => ! indices . includes ( key ) ) , config ) ;
} ) ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return result ;
} ;
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
/ * *
* @ param { * } merged already cloned
* @ param { * } source something to merge
* @ param { Object } config Config Object
* @ returns { * } cloned Object
* /
function merge ( merged , source , config ) {
if ( config . concatArrays && Array . isArray ( merged ) && Array . isArray ( source ) ) {
return concatArrays ( merged , source , config ) ;
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
if ( ! isOptionObject ( source ) || ! isOptionObject ( merged ) ) {
return clone ( source ) ;
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
return mergeKeys ( merged , source , getEnumerableOwnPropertyKeys ( source ) , config ) ;
2021-03-01 10:35:59 -07:00
}
2020-11-05 04:14:26 -07:00
2021-03-02 02:48:52 -07:00
module . exports = function ( ... options ) {
const config = merge ( clone ( defaultMergeOptions ) , ( this !== globalThis && this ) || { } , defaultMergeOptions ) ;
let merged = { _ : { } } ;
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
for ( const option of options ) {
if ( option === undefined ) {
continue ;
}
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
if ( ! isOptionObject ( option ) ) {
throw new TypeError ( '`' + option + '` is not an Option Object' ) ;
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
merged = merge ( merged , { _ : option } , config ) ;
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
return merged . _ ;
2021-03-01 10:35:59 -07:00
} ;
2021-04-30 04:30:50 -06:00
} , { "is-plain-obj" : 7 } ] , 9 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
// shim for using process in browser
var process = module . exports = { } ;
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
var cachedSetTimeout ;
var cachedClearTimeout ;
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
function defaultSetTimout ( ) {
throw new Error ( 'setTimeout has not been defined' ) ;
}
function defaultClearTimeout ( ) {
throw new Error ( 'clearTimeout has not been defined' ) ;
}
( function ( ) {
try {
if ( typeof setTimeout === 'function' ) {
cachedSetTimeout = setTimeout ;
2021-03-01 10:35:59 -07:00
} else {
2021-03-02 02:48:52 -07:00
cachedSetTimeout = defaultSetTimout ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
} catch ( e ) {
cachedSetTimeout = defaultSetTimout ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
try {
if ( typeof clearTimeout === 'function' ) {
cachedClearTimeout = clearTimeout ;
2021-03-01 10:35:59 -07:00
} else {
2021-03-02 02:48:52 -07:00
cachedClearTimeout = defaultClearTimeout ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
} catch ( e ) {
cachedClearTimeout = defaultClearTimeout ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
} ( ) )
function runTimeout ( fun ) {
if ( cachedSetTimeout === setTimeout ) {
//normal enviroments in sane situations
return setTimeout ( fun , 0 ) ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
// if setTimeout wasn't available but was latter defined
if ( ( cachedSetTimeout === defaultSetTimout || ! cachedSetTimeout ) && setTimeout ) {
cachedSetTimeout = setTimeout ;
return setTimeout ( fun , 0 ) ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout ( fun , 0 ) ;
} catch ( e ) {
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout . call ( null , fun , 0 ) ;
} catch ( e ) {
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout . call ( this , fun , 0 ) ;
}
2021-03-01 10:35:59 -07:00
}
}
2021-03-02 02:48:52 -07:00
function runClearTimeout ( marker ) {
if ( cachedClearTimeout === clearTimeout ) {
//normal enviroments in sane situations
return clearTimeout ( marker ) ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
// if clearTimeout wasn't available but was latter defined
if ( ( cachedClearTimeout === defaultClearTimeout || ! cachedClearTimeout ) && clearTimeout ) {
cachedClearTimeout = clearTimeout ;
return clearTimeout ( marker ) ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout ( marker ) ;
} catch ( e ) {
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout . call ( null , marker ) ;
} catch ( e ) {
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout . call ( this , marker ) ;
}
2021-03-01 10:35:59 -07:00
}
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
}
var queue = [ ] ;
var draining = false ;
var currentQueue ;
var queueIndex = - 1 ;
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
function cleanUpNextTick ( ) {
if ( ! draining || ! currentQueue ) {
return ;
}
draining = false ;
if ( currentQueue . length ) {
queue = currentQueue . concat ( queue ) ;
} else {
queueIndex = - 1 ;
}
if ( queue . length ) {
drainQueue ( ) ;
}
}
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
function drainQueue ( ) {
if ( draining ) {
return ;
}
var timeout = runTimeout ( cleanUpNextTick ) ;
draining = true ;
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
var len = queue . length ;
while ( len ) {
currentQueue = queue ;
queue = [ ] ;
while ( ++ queueIndex < len ) {
if ( currentQueue ) {
currentQueue [ queueIndex ] . run ( ) ;
}
}
queueIndex = - 1 ;
len = queue . length ;
}
currentQueue = null ;
draining = false ;
runClearTimeout ( timeout ) ;
}
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
process . nextTick = function ( fun ) {
var args = new Array ( arguments . length - 1 ) ;
if ( arguments . length > 1 ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
args [ i - 1 ] = arguments [ i ] ;
}
}
queue . push ( new Item ( fun , args ) ) ;
if ( queue . length === 1 && ! draining ) {
runTimeout ( drainQueue ) ;
}
} ;
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
// v8 likes predictible objects
function Item ( fun , array ) {
this . fun = fun ;
this . array = array ;
}
Item . prototype . run = function ( ) {
this . fun . apply ( null , this . array ) ;
} ;
process . title = 'browser' ;
process . browser = true ;
process . env = { } ;
process . argv = [ ] ;
process . version = '' ; // empty string to avoid regexp issues
process . versions = { } ;
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
function noop ( ) { }
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
process . on = noop ;
process . addListener = noop ;
process . once = noop ;
process . off = noop ;
process . removeListener = noop ;
process . removeAllListeners = noop ;
process . emit = noop ;
process . prependListener = noop ;
process . prependOnceListener = noop ;
2020-11-20 01:15:39 -07:00
2021-03-02 02:48:52 -07:00
process . listeners = function ( name ) { return [ ] }
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
process . binding = function ( name ) {
throw new Error ( 'process.binding is not supported' ) ;
} ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
process . cwd = function ( ) { return '/' } ;
process . chdir = function ( dir ) {
throw new Error ( 'process.chdir is not supported' ) ;
} ;
process . umask = function ( ) { return 0 ; } ;
2020-10-24 06:38:10 -06:00
2021-04-30 04:30:50 -06:00
} , { } ] , 10 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
'use strict' ;
const strictUriEncode = require ( 'strict-uri-encode' ) ;
const decodeComponent = require ( 'decode-uri-component' ) ;
const splitOnFirst = require ( 'split-on-first' ) ;
const filterObject = require ( 'filter-obj' ) ;
const isNullOrUndefined = value => value === null || value === undefined ;
function encoderForArrayFormat ( options ) {
switch ( options . arrayFormat ) {
case 'index' :
return key => ( result , value ) => {
const index = result . length ;
if (
value === undefined ||
( options . skipNull && value === null ) ||
( options . skipEmptyString && value === '' )
) {
return result ;
}
if ( value === null ) {
return [ ... result , [ encode ( key , options ) , '[' , index , ']' ] . join ( '' ) ] ;
}
return [
... result ,
[ encode ( key , options ) , '[' , encode ( index , options ) , ']=' , encode ( value , options ) ] . join ( '' )
] ;
} ;
case 'bracket' :
return key => ( result , value ) => {
if (
value === undefined ||
( options . skipNull && value === null ) ||
( options . skipEmptyString && value === '' )
) {
return result ;
}
if ( value === null ) {
return [ ... result , [ encode ( key , options ) , '[]' ] . join ( '' ) ] ;
}
return [ ... result , [ encode ( key , options ) , '[]=' , encode ( value , options ) ] . join ( '' ) ] ;
} ;
case 'comma' :
case 'separator' :
return key => ( result , value ) => {
if ( value === null || value === undefined || value . length === 0 ) {
return result ;
}
if ( result . length === 0 ) {
return [ [ encode ( key , options ) , '=' , encode ( value , options ) ] . join ( '' ) ] ;
}
return [ [ result , encode ( value , options ) ] . join ( options . arrayFormatSeparator ) ] ;
} ;
default :
return key => ( result , value ) => {
if (
value === undefined ||
( options . skipNull && value === null ) ||
( options . skipEmptyString && value === '' )
) {
return result ;
}
if ( value === null ) {
return [ ... result , encode ( key , options ) ] ;
}
return [ ... result , [ encode ( key , options ) , '=' , encode ( value , options ) ] . join ( '' ) ] ;
} ;
}
}
function parserForArrayFormat ( options ) {
let result ;
switch ( options . arrayFormat ) {
case 'index' :
return ( key , value , accumulator ) => {
result = /\[(\d*)\]$/ . exec ( key ) ;
key = key . replace ( /\[\d*\]$/ , '' ) ;
if ( ! result ) {
accumulator [ key ] = value ;
return ;
}
if ( accumulator [ key ] === undefined ) {
accumulator [ key ] = { } ;
}
accumulator [ key ] [ result [ 1 ] ] = value ;
} ;
case 'bracket' :
return ( key , value , accumulator ) => {
result = /(\[\])$/ . exec ( key ) ;
key = key . replace ( /\[\]$/ , '' ) ;
if ( ! result ) {
accumulator [ key ] = value ;
return ;
}
if ( accumulator [ key ] === undefined ) {
accumulator [ key ] = [ value ] ;
return ;
}
accumulator [ key ] = [ ] . concat ( accumulator [ key ] , value ) ;
} ;
case 'comma' :
case 'separator' :
return ( key , value , accumulator ) => {
const isArray = typeof value === 'string' && value . includes ( options . arrayFormatSeparator ) ;
const isEncodedArray = ( typeof value === 'string' && ! isArray && decode ( value , options ) . includes ( options . arrayFormatSeparator ) ) ;
value = isEncodedArray ? decode ( value , options ) : value ;
const newValue = isArray || isEncodedArray ? value . split ( options . arrayFormatSeparator ) . map ( item => decode ( item , options ) ) : value === null ? value : decode ( value , options ) ;
accumulator [ key ] = newValue ;
} ;
default :
return ( key , value , accumulator ) => {
if ( accumulator [ key ] === undefined ) {
accumulator [ key ] = value ;
return ;
}
accumulator [ key ] = [ ] . concat ( accumulator [ key ] , value ) ;
} ;
}
}
function validateArrayFormatSeparator ( value ) {
if ( typeof value !== 'string' || value . length !== 1 ) {
throw new TypeError ( 'arrayFormatSeparator must be single character string' ) ;
}
}
function encode ( value , options ) {
if ( options . encode ) {
return options . strict ? strictUriEncode ( value ) : encodeURIComponent ( value ) ;
}
return value ;
}
function decode ( value , options ) {
if ( options . decode ) {
return decodeComponent ( value ) ;
}
return value ;
}
function keysSorter ( input ) {
if ( Array . isArray ( input ) ) {
return input . sort ( ) ;
}
if ( typeof input === 'object' ) {
return keysSorter ( Object . keys ( input ) )
. sort ( ( a , b ) => Number ( a ) - Number ( b ) )
. map ( key => input [ key ] ) ;
}
return input ;
}
function removeHash ( input ) {
const hashStart = input . indexOf ( '#' ) ;
if ( hashStart !== - 1 ) {
input = input . slice ( 0 , hashStart ) ;
}
return input ;
}
function getHash ( url ) {
let hash = '' ;
const hashStart = url . indexOf ( '#' ) ;
if ( hashStart !== - 1 ) {
hash = url . slice ( hashStart ) ;
}
return hash ;
}
function extract ( input ) {
input = removeHash ( input ) ;
const queryStart = input . indexOf ( '?' ) ;
if ( queryStart === - 1 ) {
return '' ;
}
return input . slice ( queryStart + 1 ) ;
}
function parseValue ( value , options ) {
if ( options . parseNumbers && ! Number . isNaN ( Number ( value ) ) && ( typeof value === 'string' && value . trim ( ) !== '' ) ) {
value = Number ( value ) ;
} else if ( options . parseBooleans && value !== null && ( value . toLowerCase ( ) === 'true' || value . toLowerCase ( ) === 'false' ) ) {
value = value . toLowerCase ( ) === 'true' ;
}
return value ;
}
function parse ( query , options ) {
options = Object . assign ( {
decode : true ,
sort : true ,
arrayFormat : 'none' ,
arrayFormatSeparator : ',' ,
parseNumbers : false ,
parseBooleans : false
} , options ) ;
validateArrayFormatSeparator ( options . arrayFormatSeparator ) ;
const formatter = parserForArrayFormat ( options ) ;
// Create an object with no prototype
const ret = Object . create ( null ) ;
if ( typeof query !== 'string' ) {
return ret ;
}
query = query . trim ( ) . replace ( /^[?#&]/ , '' ) ;
if ( ! query ) {
return ret ;
}
for ( const param of query . split ( '&' ) ) {
if ( param === '' ) {
continue ;
}
let [ key , value ] = splitOnFirst ( options . decode ? param . replace ( /\+/g , ' ' ) : param , '=' ) ;
// Missing `=` should be `null`:
// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
value = value === undefined ? null : [ 'comma' , 'separator' ] . includes ( options . arrayFormat ) ? value : decode ( value , options ) ;
formatter ( decode ( key , options ) , value , ret ) ;
}
for ( const key of Object . keys ( ret ) ) {
const value = ret [ key ] ;
if ( typeof value === 'object' && value !== null ) {
for ( const k of Object . keys ( value ) ) {
value [ k ] = parseValue ( value [ k ] , options ) ;
}
} else {
ret [ key ] = parseValue ( value , options ) ;
}
}
if ( options . sort === false ) {
return ret ;
}
return ( options . sort === true ? Object . keys ( ret ) . sort ( ) : Object . keys ( ret ) . sort ( options . sort ) ) . reduce ( ( result , key ) => {
const value = ret [ key ] ;
if ( Boolean ( value ) && typeof value === 'object' && ! Array . isArray ( value ) ) {
// Sort object keys, not values
result [ key ] = keysSorter ( value ) ;
} else {
result [ key ] = value ;
}
return result ;
} , Object . create ( null ) ) ;
}
exports . extract = extract ;
exports . parse = parse ;
exports . stringify = ( object , options ) => {
if ( ! object ) {
return '' ;
}
options = Object . assign ( {
encode : true ,
strict : true ,
arrayFormat : 'none' ,
arrayFormatSeparator : ','
} , options ) ;
validateArrayFormatSeparator ( options . arrayFormatSeparator ) ;
const shouldFilter = key => (
( options . skipNull && isNullOrUndefined ( object [ key ] ) ) ||
( options . skipEmptyString && object [ key ] === '' )
) ;
const formatter = encoderForArrayFormat ( options ) ;
const objectCopy = { } ;
for ( const key of Object . keys ( object ) ) {
if ( ! shouldFilter ( key ) ) {
objectCopy [ key ] = object [ key ] ;
}
}
const keys = Object . keys ( objectCopy ) ;
if ( options . sort !== false ) {
keys . sort ( options . sort ) ;
}
return keys . map ( key => {
const value = object [ key ] ;
if ( value === undefined ) {
return '' ;
}
if ( value === null ) {
return encode ( key , options ) ;
}
if ( Array . isArray ( value ) ) {
return value
. reduce ( formatter ( key ) , [ ] )
. join ( '&' ) ;
}
return encode ( key , options ) + '=' + encode ( value , options ) ;
} ) . filter ( x => x . length > 0 ) . join ( '&' ) ;
} ;
exports . parseUrl = ( url , options ) => {
options = Object . assign ( {
decode : true
} , options ) ;
const [ url _ , hash ] = splitOnFirst ( url , '#' ) ;
return Object . assign (
{
url : url _ . split ( '?' ) [ 0 ] || '' ,
query : parse ( extract ( url ) , options )
} ,
options && options . parseFragmentIdentifier && hash ? { fragmentIdentifier : decode ( hash , options ) } : { }
) ;
} ;
exports . stringifyUrl = ( object , options ) => {
options = Object . assign ( {
encode : true ,
strict : true
} , options ) ;
const url = removeHash ( object . url ) . split ( '?' ) [ 0 ] || '' ;
const queryFromUrl = exports . extract ( object . url ) ;
const parsedQueryFromUrl = exports . parse ( queryFromUrl , { sort : false } ) ;
const query = Object . assign ( parsedQueryFromUrl , object . query ) ;
let queryString = exports . stringify ( query , options ) ;
if ( queryString ) {
queryString = ` ? ${ queryString } ` ;
}
let hash = getHash ( object . url ) ;
if ( object . fragmentIdentifier ) {
hash = ` # ${ encode ( object . fragmentIdentifier , options ) } ` ;
}
return ` ${ url } ${ queryString } ${ hash } ` ;
} ;
exports . pick = ( input , filter , options ) => {
options = Object . assign ( {
parseFragmentIdentifier : true
} , options ) ;
const { url , query , fragmentIdentifier } = exports . parseUrl ( input , options ) ;
return exports . stringifyUrl ( {
url ,
query : filterObject ( query , filter ) ,
fragmentIdentifier
} , options ) ;
} ;
exports . exclude = ( input , filter , options ) => {
const exclusionFilter = Array . isArray ( filter ) ? key => ! filter . includes ( key ) : ( key , value ) => ! filter ( key , value ) ;
return exports . pick ( input , exclusionFilter , options ) ;
} ;
2021-04-30 04:30:50 -06:00
} , { "decode-uri-component" : 5 , "filter-obj" : 6 , "split-on-first" : 11 , "strict-uri-encode" : 12 } ] , 11 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
'use strict' ;
module . exports = ( string , separator ) => {
if ( ! ( typeof string === 'string' && typeof separator === 'string' ) ) {
throw new TypeError ( 'Expected the arguments to be of type `string`' ) ;
}
if ( separator === '' ) {
return [ string ] ;
}
const separatorIndex = string . indexOf ( separator ) ;
if ( separatorIndex === - 1 ) {
return [ string ] ;
}
return [
string . slice ( 0 , separatorIndex ) ,
string . slice ( separatorIndex + separator . length )
] ;
} ;
2021-04-30 04:30:50 -06:00
} , { } ] , 12 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
'use strict' ;
module . exports = str => encodeURIComponent ( str ) . replace ( /[!'()*]/g , x => ` % ${ x . charCodeAt ( 0 ) . toString ( 16 ) . toUpperCase ( ) } ` ) ;
2021-04-30 04:30:50 -06:00
} , { } ] , 13 : [ function ( require , module , exports ) {
2021-03-02 02:48:52 -07:00
( function ( module ) {
'use strict' ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
module . exports . is _uri = is _iri ;
module . exports . is _http _uri = is _http _iri ;
module . exports . is _https _uri = is _https _iri ;
module . exports . is _web _uri = is _web _iri ;
// Create aliases
module . exports . isUri = is _iri ;
module . exports . isHttpUri = is _http _iri ;
module . exports . isHttpsUri = is _https _iri ;
module . exports . isWebUri = is _web _iri ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// private function
// internal URI spitter method - direct from RFC 3986
var splitUri = function ( uri ) {
var splitted = uri . match ( /(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/ ) ;
return splitted ;
} ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
function is _iri ( value ) {
if ( ! value ) {
return ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// check for illegal characters
if ( /[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i . test ( value ) ) return ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// check for hex escapes that aren't complete
if ( /%[^0-9a-f]/i . test ( value ) ) return ;
if ( /%[0-9a-f](:?[^0-9a-f]|$)/i . test ( value ) ) return ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
var splitted = [ ] ;
var scheme = '' ;
var authority = '' ;
var path = '' ;
var query = '' ;
var fragment = '' ;
var out = '' ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// from RFC 3986
splitted = splitUri ( value ) ;
scheme = splitted [ 1 ] ;
authority = splitted [ 2 ] ;
path = splitted [ 3 ] ;
query = splitted [ 4 ] ;
fragment = splitted [ 5 ] ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// scheme and path are required, though the path can be empty
if ( ! ( scheme && scheme . length && path . length >= 0 ) ) return ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// if authority is present, the path must be empty or begin with a /
if ( authority && authority . length ) {
if ( ! ( path . length === 0 || /^\// . test ( path ) ) ) return ;
} else {
// if authority is not present, the path must not start with //
if ( /^\/\// . test ( path ) ) return ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// scheme must begin with a letter, then consist of letters, digits, +, ., or -
if ( ! /^[a-z][a-z0-9\+\-\.]*$/ . test ( scheme . toLowerCase ( ) ) ) return ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// re-assemble the URL per section 5.3 in RFC 3986
out += scheme + ':' ;
if ( authority && authority . length ) {
out += '//' + authority ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
out += path ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
if ( query && query . length ) {
out += '?' + query ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
if ( fragment && fragment . length ) {
out += '#' + fragment ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
return out ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
function is _http _iri ( value , allowHttps ) {
if ( ! is _iri ( value ) ) {
return ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
var splitted = [ ] ;
var scheme = '' ;
var authority = '' ;
var path = '' ;
var port = '' ;
var query = '' ;
var fragment = '' ;
var out = '' ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// from RFC 3986
splitted = splitUri ( value ) ;
scheme = splitted [ 1 ] ;
authority = splitted [ 2 ] ;
path = splitted [ 3 ] ;
query = splitted [ 4 ] ;
fragment = splitted [ 5 ] ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
if ( ! scheme ) return ;
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
if ( allowHttps ) {
if ( scheme . toLowerCase ( ) != 'https' ) return ;
} else {
if ( scheme . toLowerCase ( ) != 'http' ) return ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// fully-qualified URIs must have an authority section that is
// a valid host
if ( ! authority ) {
return ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
// enable port component
if ( /:(\d+)$/ . test ( authority ) ) {
port = authority . match ( /:(\d+)$/ ) [ 0 ] ;
authority = authority . replace ( /:\d+$/ , '' ) ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
out += scheme + ':' ;
out += '//' + authority ;
if ( port ) {
out += port ;
}
out += path ;
if ( query && query . length ) {
out += '?' + query ;
}
2021-03-01 10:35:59 -07:00
2021-03-02 02:48:52 -07:00
if ( fragment && fragment . length ) {
out += '#' + fragment ;
2021-03-01 10:35:59 -07:00
}
2021-03-02 02:48:52 -07:00
return out ;
2020-10-24 06:38:10 -06:00
}
2021-03-02 02:48:52 -07:00
function is _https _iri ( value ) {
return is _http _iri ( value , true ) ;
}
function is _web _iri ( value ) {
return ( is _http _iri ( value ) || is _https _iri ( value ) ) ;
}
2020-10-24 06:38:10 -06:00
2021-03-02 02:48:52 -07:00
} ) ( module ) ;
2021-04-30 04:30:50 -06:00
} , { } ] , 14 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = void 0 ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _toDate = _interopRequireDefault ( require ( "./lib/toDate" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _toFloat = _interopRequireDefault ( require ( "./lib/toFloat" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _toInt = _interopRequireDefault ( require ( "./lib/toInt" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _toBoolean = _interopRequireDefault ( require ( "./lib/toBoolean" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _equals = _interopRequireDefault ( require ( "./lib/equals" ) ) ;
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
var _contains = _interopRequireDefault ( require ( "./lib/contains" ) ) ;
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
var _matches = _interopRequireDefault ( require ( "./lib/matches" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isEmail = _interopRequireDefault ( require ( "./lib/isEmail" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isURL = _interopRequireDefault ( require ( "./lib/isURL" ) ) ;
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
var _isMACAddress = _interopRequireDefault ( require ( "./lib/isMACAddress" ) ) ;
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
var _isIP = _interopRequireDefault ( require ( "./lib/isIP" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isIPRange = _interopRequireDefault ( require ( "./lib/isIPRange" ) ) ;
2020-12-05 15:17:54 -07:00
2021-04-22 07:52:25 -06:00
var _isFQDN = _interopRequireDefault ( require ( "./lib/isFQDN" ) ) ;
2020-12-05 15:17:54 -07:00
2021-04-22 07:52:25 -06:00
var _isDate = _interopRequireDefault ( require ( "./lib/isDate" ) ) ;
2020-10-24 17:22:54 -06:00
2021-04-22 07:52:25 -06:00
var _isBoolean = _interopRequireDefault ( require ( "./lib/isBoolean" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isLocale = _interopRequireDefault ( require ( "./lib/isLocale" ) ) ;
2020-10-24 17:22:54 -06:00
2021-04-22 07:52:25 -06:00
var _isAlpha = _interopRequireWildcard ( require ( "./lib/isAlpha" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isAlphanumeric = _interopRequireWildcard ( require ( "./lib/isAlphanumeric" ) ) ;
2020-11-06 10:39:06 -07:00
2021-04-22 07:52:25 -06:00
var _isNumeric = _interopRequireDefault ( require ( "./lib/isNumeric" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isPassportNumber = _interopRequireDefault ( require ( "./lib/isPassportNumber" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isPort = _interopRequireDefault ( require ( "./lib/isPort" ) ) ;
2020-12-11 03:07:13 -07:00
2021-04-22 07:52:25 -06:00
var _isLowercase = _interopRequireDefault ( require ( "./lib/isLowercase" ) ) ;
2020-12-11 03:07:13 -07:00
2021-04-22 07:52:25 -06:00
var _isUppercase = _interopRequireDefault ( require ( "./lib/isUppercase" ) ) ;
2020-10-24 17:22:54 -06:00
2021-04-22 07:52:25 -06:00
var _isIMEI = _interopRequireDefault ( require ( "./lib/isIMEI" ) ) ;
2020-10-24 17:22:54 -06:00
2021-04-22 07:52:25 -06:00
var _isAscii = _interopRequireDefault ( require ( "./lib/isAscii" ) ) ;
2020-12-20 15:20:32 -07:00
2021-04-22 07:52:25 -06:00
var _isFullWidth = _interopRequireDefault ( require ( "./lib/isFullWidth" ) ) ;
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
var _isHalfWidth = _interopRequireDefault ( require ( "./lib/isHalfWidth" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isVariableWidth = _interopRequireDefault ( require ( "./lib/isVariableWidth" ) ) ;
2020-12-20 15:20:32 -07:00
2021-04-22 07:52:25 -06:00
var _isMultibyte = _interopRequireDefault ( require ( "./lib/isMultibyte" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isSemVer = _interopRequireDefault ( require ( "./lib/isSemVer" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isSurrogatePair = _interopRequireDefault ( require ( "./lib/isSurrogatePair" ) ) ;
2020-12-20 15:20:32 -07:00
2021-04-22 07:52:25 -06:00
var _isInt = _interopRequireDefault ( require ( "./lib/isInt" ) ) ;
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
var _isFloat = _interopRequireWildcard ( require ( "./lib/isFloat" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isDecimal = _interopRequireDefault ( require ( "./lib/isDecimal" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isHexadecimal = _interopRequireDefault ( require ( "./lib/isHexadecimal" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isOctal = _interopRequireDefault ( require ( "./lib/isOctal" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isDivisibleBy = _interopRequireDefault ( require ( "./lib/isDivisibleBy" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isHexColor = _interopRequireDefault ( require ( "./lib/isHexColor" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isRgbColor = _interopRequireDefault ( require ( "./lib/isRgbColor" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isHSL = _interopRequireDefault ( require ( "./lib/isHSL" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISRC = _interopRequireDefault ( require ( "./lib/isISRC" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isIBAN = _interopRequireDefault ( require ( "./lib/isIBAN" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isBIC = _interopRequireDefault ( require ( "./lib/isBIC" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isMD = _interopRequireDefault ( require ( "./lib/isMD5" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isHash = _interopRequireDefault ( require ( "./lib/isHash" ) ) ;
2021-01-09 08:07:01 -07:00
2021-04-22 07:52:25 -06:00
var _isJWT = _interopRequireDefault ( require ( "./lib/isJWT" ) ) ;
2021-03-01 10:35:59 -07:00
2021-04-22 07:52:25 -06:00
var _isJSON = _interopRequireDefault ( require ( "./lib/isJSON" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isEmpty = _interopRequireDefault ( require ( "./lib/isEmpty" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isLength = _interopRequireDefault ( require ( "./lib/isLength" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isByteLength = _interopRequireDefault ( require ( "./lib/isByteLength" ) ) ;
2021-01-09 08:07:01 -07:00
2021-04-22 07:52:25 -06:00
var _isUUID = _interopRequireDefault ( require ( "./lib/isUUID" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isMongoId = _interopRequireDefault ( require ( "./lib/isMongoId" ) ) ;
2021-03-01 10:35:59 -07:00
2021-04-22 07:52:25 -06:00
var _isAfter = _interopRequireDefault ( require ( "./lib/isAfter" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isBefore = _interopRequireDefault ( require ( "./lib/isBefore" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isIn = _interopRequireDefault ( require ( "./lib/isIn" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isCreditCard = _interopRequireDefault ( require ( "./lib/isCreditCard" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isIdentityCard = _interopRequireDefault ( require ( "./lib/isIdentityCard" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isEAN = _interopRequireDefault ( require ( "./lib/isEAN" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISIN = _interopRequireDefault ( require ( "./lib/isISIN" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISBN = _interopRequireDefault ( require ( "./lib/isISBN" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISSN = _interopRequireDefault ( require ( "./lib/isISSN" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isTaxID = _interopRequireDefault ( require ( "./lib/isTaxID" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isMobilePhone = _interopRequireWildcard ( require ( "./lib/isMobilePhone" ) ) ;
2020-12-05 15:17:54 -07:00
2021-04-22 07:52:25 -06:00
var _isEthereumAddress = _interopRequireDefault ( require ( "./lib/isEthereumAddress" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isCurrency = _interopRequireDefault ( require ( "./lib/isCurrency" ) ) ;
2020-12-05 15:17:54 -07:00
2021-04-22 07:52:25 -06:00
var _isBtcAddress = _interopRequireDefault ( require ( "./lib/isBtcAddress" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISO = _interopRequireDefault ( require ( "./lib/isISO8601" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isRFC = _interopRequireDefault ( require ( "./lib/isRFC3339" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISO31661Alpha = _interopRequireDefault ( require ( "./lib/isISO31661Alpha2" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isISO31661Alpha2 = _interopRequireDefault ( require ( "./lib/isISO31661Alpha3" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isBase = _interopRequireDefault ( require ( "./lib/isBase32" ) ) ;
2020-11-18 13:51:53 -07:00
2021-04-22 07:52:25 -06:00
var _isBase2 = _interopRequireDefault ( require ( "./lib/isBase58" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isBase3 = _interopRequireDefault ( require ( "./lib/isBase64" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isDataURI = _interopRequireDefault ( require ( "./lib/isDataURI" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isMagnetURI = _interopRequireDefault ( require ( "./lib/isMagnetURI" ) ) ;
2020-10-26 16:02:22 -06:00
2021-04-22 07:52:25 -06:00
var _isMimeType = _interopRequireDefault ( require ( "./lib/isMimeType" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isLatLong = _interopRequireDefault ( require ( "./lib/isLatLong" ) ) ;
2020-10-24 06:38:10 -06:00
2021-04-22 07:52:25 -06:00
var _isPostalCode = _interopRequireWildcard ( require ( "./lib/isPostalCode" ) ) ;
var _ltrim = _interopRequireDefault ( require ( "./lib/ltrim" ) ) ;
var _rtrim = _interopRequireDefault ( require ( "./lib/rtrim" ) ) ;
var _trim = _interopRequireDefault ( require ( "./lib/trim" ) ) ;
var _escape = _interopRequireDefault ( require ( "./lib/escape" ) ) ;
var _unescape = _interopRequireDefault ( require ( "./lib/unescape" ) ) ;
var _stripLow = _interopRequireDefault ( require ( "./lib/stripLow" ) ) ;
var _whitelist = _interopRequireDefault ( require ( "./lib/whitelist" ) ) ;
var _blacklist = _interopRequireDefault ( require ( "./lib/blacklist" ) ) ;
var _isWhitelisted = _interopRequireDefault ( require ( "./lib/isWhitelisted" ) ) ;
var _normalizeEmail = _interopRequireDefault ( require ( "./lib/normalizeEmail" ) ) ;
var _isSlug = _interopRequireDefault ( require ( "./lib/isSlug" ) ) ;
var _isStrongPassword = _interopRequireDefault ( require ( "./lib/isStrongPassword" ) ) ;
var _isVAT = _interopRequireDefault ( require ( "./lib/isVAT" ) ) ;
function _getRequireWildcardCache ( ) { if ( typeof WeakMap !== "function" ) return null ; var cache = new WeakMap ( ) ; _getRequireWildcardCache = function _getRequireWildcardCache ( ) { return cache ; } ; return cache ; }
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } if ( obj === null || _typeof ( obj ) !== "object" && typeof obj !== "function" ) { return { default : obj } ; } var cache = _getRequireWildcardCache ( ) ; if ( cache && cache . has ( obj ) ) { return cache . get ( obj ) ; } var newObj = { } ; var hasPropertyDescriptor = Object . defineProperty && Object . getOwnPropertyDescriptor ; for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = hasPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : null ; if ( desc && ( desc . get || desc . set ) ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } newObj . default = obj ; if ( cache ) { cache . set ( obj , newObj ) ; } return newObj ; }
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var version = '13.5.2' ;
var validator = {
version : version ,
toDate : _toDate . default ,
toFloat : _toFloat . default ,
toInt : _toInt . default ,
toBoolean : _toBoolean . default ,
equals : _equals . default ,
contains : _contains . default ,
matches : _matches . default ,
isEmail : _isEmail . default ,
isURL : _isURL . default ,
isMACAddress : _isMACAddress . default ,
isIP : _isIP . default ,
isIPRange : _isIPRange . default ,
isFQDN : _isFQDN . default ,
isBoolean : _isBoolean . default ,
isIBAN : _isIBAN . default ,
isBIC : _isBIC . default ,
isAlpha : _isAlpha . default ,
isAlphaLocales : _isAlpha . locales ,
isAlphanumeric : _isAlphanumeric . default ,
isAlphanumericLocales : _isAlphanumeric . locales ,
isNumeric : _isNumeric . default ,
isPassportNumber : _isPassportNumber . default ,
isPort : _isPort . default ,
isLowercase : _isLowercase . default ,
isUppercase : _isUppercase . default ,
isAscii : _isAscii . default ,
isFullWidth : _isFullWidth . default ,
isHalfWidth : _isHalfWidth . default ,
isVariableWidth : _isVariableWidth . default ,
isMultibyte : _isMultibyte . default ,
isSemVer : _isSemVer . default ,
isSurrogatePair : _isSurrogatePair . default ,
isInt : _isInt . default ,
isIMEI : _isIMEI . default ,
isFloat : _isFloat . default ,
isFloatLocales : _isFloat . locales ,
isDecimal : _isDecimal . default ,
isHexadecimal : _isHexadecimal . default ,
isOctal : _isOctal . default ,
isDivisibleBy : _isDivisibleBy . default ,
isHexColor : _isHexColor . default ,
isRgbColor : _isRgbColor . default ,
isHSL : _isHSL . default ,
isISRC : _isISRC . default ,
isMD5 : _isMD . default ,
isHash : _isHash . default ,
isJWT : _isJWT . default ,
isJSON : _isJSON . default ,
isEmpty : _isEmpty . default ,
isLength : _isLength . default ,
isLocale : _isLocale . default ,
isByteLength : _isByteLength . default ,
isUUID : _isUUID . default ,
isMongoId : _isMongoId . default ,
isAfter : _isAfter . default ,
isBefore : _isBefore . default ,
isIn : _isIn . default ,
isCreditCard : _isCreditCard . default ,
isIdentityCard : _isIdentityCard . default ,
isEAN : _isEAN . default ,
isISIN : _isISIN . default ,
isISBN : _isISBN . default ,
isISSN : _isISSN . default ,
isMobilePhone : _isMobilePhone . default ,
isMobilePhoneLocales : _isMobilePhone . locales ,
isPostalCode : _isPostalCode . default ,
isPostalCodeLocales : _isPostalCode . locales ,
isEthereumAddress : _isEthereumAddress . default ,
isCurrency : _isCurrency . default ,
isBtcAddress : _isBtcAddress . default ,
isISO8601 : _isISO . default ,
isRFC3339 : _isRFC . default ,
isISO31661Alpha2 : _isISO31661Alpha . default ,
isISO31661Alpha3 : _isISO31661Alpha2 . default ,
isBase32 : _isBase . default ,
isBase58 : _isBase2 . default ,
isBase64 : _isBase3 . default ,
isDataURI : _isDataURI . default ,
isMagnetURI : _isMagnetURI . default ,
isMimeType : _isMimeType . default ,
isLatLong : _isLatLong . default ,
ltrim : _ltrim . default ,
rtrim : _rtrim . default ,
trim : _trim . default ,
escape : _escape . default ,
unescape : _unescape . default ,
stripLow : _stripLow . default ,
whitelist : _whitelist . default ,
blacklist : _blacklist . default ,
isWhitelisted : _isWhitelisted . default ,
normalizeEmail : _normalizeEmail . default ,
toString : toString ,
isSlug : _isSlug . default ,
isStrongPassword : _isStrongPassword . default ,
isTaxID : _isTaxID . default ,
isDate : _isDate . default ,
isVAT : _isVAT . default
} ;
var _default = validator ;
exports . default = _default ;
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./lib/blacklist" : 16 , "./lib/contains" : 17 , "./lib/equals" : 18 , "./lib/escape" : 19 , "./lib/isAfter" : 20 , "./lib/isAlpha" : 21 , "./lib/isAlphanumeric" : 22 , "./lib/isAscii" : 23 , "./lib/isBIC" : 24 , "./lib/isBase32" : 25 , "./lib/isBase58" : 26 , "./lib/isBase64" : 27 , "./lib/isBefore" : 28 , "./lib/isBoolean" : 29 , "./lib/isBtcAddress" : 30 , "./lib/isByteLength" : 31 , "./lib/isCreditCard" : 32 , "./lib/isCurrency" : 33 , "./lib/isDataURI" : 34 , "./lib/isDate" : 35 , "./lib/isDecimal" : 36 , "./lib/isDivisibleBy" : 37 , "./lib/isEAN" : 38 , "./lib/isEmail" : 39 , "./lib/isEmpty" : 40 , "./lib/isEthereumAddress" : 41 , "./lib/isFQDN" : 42 , "./lib/isFloat" : 43 , "./lib/isFullWidth" : 44 , "./lib/isHSL" : 45 , "./lib/isHalfWidth" : 46 , "./lib/isHash" : 47 , "./lib/isHexColor" : 48 , "./lib/isHexadecimal" : 49 , "./lib/isIBAN" : 50 , "./lib/isIMEI" : 51 , "./lib/isIP" : 52 , "./lib/isIPRange" : 53 , "./lib/isISBN" : 54 , "./lib/isISIN" : 55 , "./lib/isISO31661Alpha2" : 56 , "./lib/isISO31661Alpha3" : 57 , "./lib/isISO8601" : 58 , "./lib/isISRC" : 59 , "./lib/isISSN" : 60 , "./lib/isIdentityCard" : 61 , "./lib/isIn" : 62 , "./lib/isInt" : 63 , "./lib/isJSON" : 64 , "./lib/isJWT" : 65 , "./lib/isLatLong" : 66 , "./lib/isLength" : 67 , "./lib/isLocale" : 68 , "./lib/isLowercase" : 69 , "./lib/isMACAddress" : 70 , "./lib/isMD5" : 71 , "./lib/isMagnetURI" : 72 , "./lib/isMimeType" : 73 , "./lib/isMobilePhone" : 74 , "./lib/isMongoId" : 75 , "./lib/isMultibyte" : 76 , "./lib/isNumeric" : 77 , "./lib/isOctal" : 78 , "./lib/isPassportNumber" : 79 , "./lib/isPort" : 80 , "./lib/isPostalCode" : 81 , "./lib/isRFC3339" : 82 , "./lib/isRgbColor" : 83 , "./lib/isSemVer" : 84 , "./lib/isSlug" : 85 , "./lib/isStrongPassword" : 86 , "./lib/isSurrogatePair" : 87 , "./lib/isTaxID" : 88 , "./lib/isURL" : 89 , "./lib/isUUID" : 90 , "./lib/isUppercase" : 91 , "./lib/isVAT" : 92 , "./lib/isVariableWidth" : 93 , "./lib/isWhitelisted" : 94 , "./lib/ltrim" : 95 , "./lib/matches" : 96 , "./lib/normalizeEmail" : 97 , "./lib/rtrim" : 98 , "./lib/stripLow" : 99 , "./lib/toBoolean" : 100 , "./lib/toDate" : 101 , "./lib/toFloat" : 102 , "./lib/toInt" : 103 , "./lib/trim" : 104 , "./lib/unescape" : 105 , "./lib/whitelist" : 112 } ] , 15 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . commaDecimal = exports . dotDecimal = exports . farsiLocales = exports . arabicLocales = exports . englishLocales = exports . decimal = exports . alphanumeric = exports . alpha = void 0 ;
var alpha = {
'en-US' : /^[A-Z]+$/i ,
'az-AZ' : /^[A-VXYZÇƏĞİı ÖŞÜ]+$/i ,
'bg-BG' : /^[А -Я]+$/i ,
'cs-CZ' : /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i ,
'da-DK' : /^[A-ZÆØÅ]+$/i ,
'de-DE' : /^[A-ZÄÖÜß]+$/i ,
'el-GR' : /^[Α -ώ]+$/i ,
'es-ES' : /^[A-ZÁÉÍÑÓÚÜ]+$/i ,
'fa-IR' : /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i ,
'fr-FR' : /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i ,
'it-IT' : /^[A-ZÀÉÈÌÎÓÒÙ]+$/i ,
'nb-NO' : /^[A-ZÆØÅ]+$/i ,
'nl-NL' : /^[A-ZÁÉËÏÓÖÜÚ]+$/i ,
'nn-NO' : /^[A-ZÆØÅ]+$/i ,
'hu-HU' : /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i ,
'pl-PL' : /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i ,
'pt-PT' : /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i ,
'ru-RU' : /^[А -ЯЁ]+$/i ,
'sl-SI' : /^[A-ZČĆĐŠŽ]+$/i ,
'sk-SK' : /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i ,
'sr-RS@latin' : /^[A-ZČĆŽŠĐ]+$/i ,
'sr-RS' : /^[А -ЯЂЈЉЊЋЏ]+$/i ,
'sv-SE' : /^[A-ZÅÄÖ]+$/i ,
'th-TH' : /^[ก-๐ \s]+$/i ,
'tr-TR' : /^[A-ZÇĞİı ÖŞÜ]+$/i ,
'uk-UA' : /^[А -ЩЬ ЮЯЄIЇҐі ]+$/i ,
'vi-VN' : /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i ,
'ku-IQ' : /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i ,
ar : /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/ ,
he : /^[א-ת]+$/ ,
fa : /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i
} ;
exports . alpha = alpha ;
var alphanumeric = {
'en-US' : /^[0-9A-Z]+$/i ,
'az-AZ' : /^[0-9A-VXYZÇƏĞİı ÖŞÜ]+$/i ,
'bg-BG' : /^[0-9А -Я]+$/i ,
'cs-CZ' : /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i ,
'da-DK' : /^[0-9A-ZÆØÅ]+$/i ,
'de-DE' : /^[0-9A-ZÄÖÜß]+$/i ,
'el-GR' : /^[0-9Α -ω]+$/i ,
'es-ES' : /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i ,
'fr-FR' : /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i ,
'it-IT' : /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i ,
'hu-HU' : /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i ,
'nb-NO' : /^[0-9A-ZÆØÅ]+$/i ,
'nl-NL' : /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i ,
'nn-NO' : /^[0-9A-ZÆØÅ]+$/i ,
'pl-PL' : /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i ,
'pt-PT' : /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i ,
'ru-RU' : /^[0-9А -ЯЁ]+$/i ,
'sl-SI' : /^[0-9A-ZČĆĐŠŽ]+$/i ,
'sk-SK' : /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i ,
'sr-RS@latin' : /^[0-9A-ZČĆŽŠĐ]+$/i ,
'sr-RS' : /^[0-9А -ЯЂЈЉЊЋЏ]+$/i ,
'sv-SE' : /^[0-9A-ZÅÄÖ]+$/i ,
'th-TH' : /^[ก-๙\s]+$/i ,
'tr-TR' : /^[0-9A-ZÇĞİı ÖŞÜ]+$/i ,
'uk-UA' : /^[0-9А -ЩЬ ЮЯЄIЇҐі ]+$/i ,
'ku-IQ' : /^[٠ ١ ٢٣٤٥ ٦٧ ٨٩0-9ئا بپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھ ە یێيطؤثآإأكضصةظذ]+$/i ,
'vi-VN' : /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i ,
ar : /^[٠ ١ ٢٣٤٥ ٦٧ ٨٩0-9ءآأؤإئا بةتثجحخدذرزسشصضطظعغفقكلمنه وىيًٌٍَُِّْٰ]+$/ ,
he : /^[0-9א-ת]+$/ ,
fa : /^['0-9آا ءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوه ةی۱ ۲۳۴۵ ۶۷ ۸۹۰ ']+$/i
} ;
exports . alphanumeric = alphanumeric ;
var decimal = {
'en-US' : '.' ,
ar : '٫ '
} ;
exports . decimal = decimal ;
var englishLocales = [ 'AU' , 'GB' , 'HK' , 'IN' , 'NZ' , 'ZA' , 'ZM' ] ;
exports . englishLocales = englishLocales ;
for ( var locale , i = 0 ; i < englishLocales . length ; i ++ ) {
locale = "en-" . concat ( englishLocales [ i ] ) ;
alpha [ locale ] = alpha [ 'en-US' ] ;
alphanumeric [ locale ] = alphanumeric [ 'en-US' ] ;
decimal [ locale ] = decimal [ 'en-US' ] ;
} // Source: http://www.localeplanet.com/java/
var arabicLocales = [ 'AE' , 'BH' , 'DZ' , 'EG' , 'IQ' , 'JO' , 'KW' , 'LB' , 'LY' , 'MA' , 'QM' , 'QA' , 'SA' , 'SD' , 'SY' , 'TN' , 'YE' ] ;
exports . arabicLocales = arabicLocales ;
for ( var _locale , _i = 0 ; _i < arabicLocales . length ; _i ++ ) {
_locale = "ar-" . concat ( arabicLocales [ _i ] ) ;
alpha [ _locale ] = alpha . ar ;
alphanumeric [ _locale ] = alphanumeric . ar ;
decimal [ _locale ] = decimal . ar ;
2020-10-24 06:38:10 -06:00
}
2021-04-22 07:52:25 -06:00
var farsiLocales = [ 'IR' , 'AF' ] ;
exports . farsiLocales = farsiLocales ;
for ( var _locale2 , _i2 = 0 ; _i2 < farsiLocales . length ; _i2 ++ ) {
_locale2 = "fa-" . concat ( farsiLocales [ _i2 ] ) ;
alphanumeric [ _locale2 ] = alphanumeric . fa ;
decimal [ _locale2 ] = decimal . ar ;
} // Source: https://en.wikipedia.org/wiki/Decimal_mark
var dotDecimal = [ 'ar-EG' , 'ar-LB' , 'ar-LY' ] ;
exports . dotDecimal = dotDecimal ;
var commaDecimal = [ 'bg-BG' , 'cs-CZ' , 'da-DK' , 'de-DE' , 'el-GR' , 'en-ZM' , 'es-ES' , 'fr-CA' , 'fr-FR' , 'id-ID' , 'it-IT' , 'ku-IQ' , 'hu-HU' , 'nb-NO' , 'nn-NO' , 'nl-NL' , 'pl-PL' , 'pt-PT' , 'ru-RU' , 'sl-SI' , 'sr-RS@latin' , 'sr-RS' , 'sv-SE' , 'tr-TR' , 'uk-UA' , 'vi-VN' ] ;
exports . commaDecimal = commaDecimal ;
for ( var _i3 = 0 ; _i3 < dotDecimal . length ; _i3 ++ ) {
decimal [ dotDecimal [ _i3 ] ] = decimal [ 'en-US' ] ;
}
for ( var _i4 = 0 ; _i4 < commaDecimal . length ; _i4 ++ ) {
decimal [ commaDecimal [ _i4 ] ] = ',' ;
}
alpha [ 'fr-CA' ] = alpha [ 'fr-FR' ] ;
alphanumeric [ 'fr-CA' ] = alphanumeric [ 'fr-FR' ] ;
alpha [ 'pt-BR' ] = alpha [ 'pt-PT' ] ;
alphanumeric [ 'pt-BR' ] = alphanumeric [ 'pt-PT' ] ;
decimal [ 'pt-BR' ] = decimal [ 'pt-PT' ] ; // see #862
alpha [ 'pl-Pl' ] = alpha [ 'pl-PL' ] ;
alphanumeric [ 'pl-Pl' ] = alphanumeric [ 'pl-PL' ] ;
decimal [ 'pl-Pl' ] = decimal [ 'pl-PL' ] ; // see #1455
alpha [ 'fa-AF' ] = alpha . fa ;
2021-04-30 04:30:50 -06:00
} , { } ] , 16 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = blacklist ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function blacklist ( str , chars ) {
( 0 , _assertString . default ) ( str ) ;
return str . replace ( new RegExp ( "[" . concat ( chars , "]+" ) , 'g' ) , '' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 17 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = contains ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _toString = _interopRequireDefault ( require ( "./util/toString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var defaulContainsOptions = {
ignoreCase : false
} ;
function contains ( str , elem , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , defaulContainsOptions ) ;
return options . ignoreCase ? str . toLowerCase ( ) . indexOf ( ( 0 , _toString . default ) ( elem ) . toLowerCase ( ) ) >= 0 : str . indexOf ( ( 0 , _toString . default ) ( elem ) ) >= 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 , "./util/toString" : 111 } ] , 18 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = equals ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function equals ( str , comparison ) {
( 0 , _assertString . default ) ( str ) ;
return str === comparison ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 19 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = escape ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function escape ( str ) {
( 0 , _assertString . default ) ( str ) ;
return str . replace ( /&/g , '&' ) . replace ( /"/g , '"' ) . replace ( /'/g , ''' ) . replace ( /</g , '<' ) . replace ( />/g , '>' ) . replace ( /\//g , '/' ) . replace ( /\\/g , '\' ) . replace ( /`/g , '`' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 20 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isAfter ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _toDate = _interopRequireDefault ( require ( "./toDate" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isAfter ( str ) {
var date = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : String ( new Date ( ) ) ;
( 0 , _assertString . default ) ( str ) ;
var comparison = ( 0 , _toDate . default ) ( date ) ;
var original = ( 0 , _toDate . default ) ( str ) ;
return ! ! ( original && comparison && original > comparison ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./toDate" : 101 , "./util/assertString" : 107 } ] , 21 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isAlpha ;
exports . locales = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _alpha = require ( "./alpha" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isAlpha ( _str ) {
var locale = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 'en-US' ;
var options = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
( 0 , _assertString . default ) ( _str ) ;
var str = _str ;
var ignore = options . ignore ;
if ( ignore ) {
if ( ignore instanceof RegExp ) {
str = str . replace ( ignore , '' ) ;
} else if ( typeof ignore === 'string' ) {
str = str . replace ( new RegExp ( "[" . concat ( ignore . replace ( /[-[\]{}()*+?.,\\^$|#\\s]/g , '\\$&' ) , "]" ) , 'g' ) , '' ) ; // escape regex for ignore
} else {
throw new Error ( 'ignore should be instance of a String or RegExp' ) ;
2021-03-05 09:13:08 -07:00
}
2021-04-22 07:52:25 -06:00
}
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
if ( locale in _alpha . alpha ) {
return _alpha . alpha [ locale ] . test ( str ) ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
var locales = Object . keys ( _alpha . alpha ) ;
exports . locales = locales ;
2021-04-30 04:30:50 -06:00
} , { "./alpha" : 15 , "./util/assertString" : 107 } ] , 22 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isAlphanumeric ;
exports . locales = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _alpha = require ( "./alpha" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isAlphanumeric ( str ) {
var locale = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 'en-US' ;
( 0 , _assertString . default ) ( str ) ;
if ( locale in _alpha . alphanumeric ) {
return _alpha . alphanumeric [ locale ] . test ( str ) ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
var locales = Object . keys ( _alpha . alphanumeric ) ;
exports . locales = locales ;
2021-04-30 04:30:50 -06:00
} , { "./alpha" : 15 , "./util/assertString" : 107 } ] , 23 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isAscii ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* eslint-disable no-control-regex */
var ascii = /^[\x00-\x7F]+$/ ;
/* eslint-enable no-control-regex */
function isAscii ( str ) {
( 0 , _assertString . default ) ( str ) ;
return ascii . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 24 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBIC ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var isBICReg = /^[A-z]{4}[A-z]{2}\w{2}(\w{3})?$/ ;
function isBIC ( str ) {
( 0 , _assertString . default ) ( str ) ;
return isBICReg . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 25 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBase32 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var base32 = /^[A-Z2-7]+=*$/ ;
function isBase32 ( str ) {
( 0 , _assertString . default ) ( str ) ;
var len = str . length ;
if ( len % 8 === 0 && base32 . test ( str ) ) {
return true ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 26 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBase58 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz
var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/ ;
function isBase58 ( str ) {
( 0 , _assertString . default ) ( str ) ;
if ( base58Reg . test ( str ) ) {
return true ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 27 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBase64 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var notBase64 = /[^A-Z0-9+\/=]/i ;
var urlSafeBase64 = /^[A-Z0-9_\-]*$/i ;
var defaultBase64Options = {
urlSafe : false
} ;
function isBase64 ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , defaultBase64Options ) ;
var len = str . length ;
if ( options . urlSafe ) {
return urlSafeBase64 . test ( str ) ;
}
if ( len % 4 !== 0 || notBase64 . test ( str ) ) {
return false ;
}
var firstPaddingChar = str . indexOf ( '=' ) ;
return firstPaddingChar === - 1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str [ len - 1 ] === '=' ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 28 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBefore ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _toDate = _interopRequireDefault ( require ( "./toDate" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isBefore ( str ) {
var date = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : String ( new Date ( ) ) ;
( 0 , _assertString . default ) ( str ) ;
var comparison = ( 0 , _toDate . default ) ( date ) ;
var original = ( 0 , _toDate . default ) ( str ) ;
return ! ! ( original && comparison && original < comparison ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./toDate" : 101 , "./util/assertString" : 107 } ] , 29 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBoolean ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isBoolean ( str ) {
( 0 , _assertString . default ) ( str ) ;
return [ 'true' , 'false' , '1' , '0' ] . indexOf ( str ) >= 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 30 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBtcAddress ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// supports Bech32 addresses
var btc = /^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/ ;
function isBtcAddress ( str ) {
( 0 , _assertString . default ) ( str ) ;
return btc . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 31 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isByteLength ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
/* eslint-disable prefer-rest-params */
function isByteLength ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
var min ;
var max ;
if ( _typeof ( options ) === 'object' ) {
min = options . min || 0 ;
max = options . max ;
} else {
// backwards compatibility: isByteLength(str, min [, max])
min = arguments [ 1 ] ;
max = arguments [ 2 ] ;
}
var len = encodeURI ( str ) . split ( /%..|./ ) . length - 1 ;
return len >= min && ( typeof max === 'undefined' || len <= max ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 32 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isCreditCard ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* eslint-disable max-len */
var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14})$/ ;
/* eslint-enable max-len */
function isCreditCard ( str ) {
( 0 , _assertString . default ) ( str ) ;
var sanitized = str . replace ( /[- ]+/g , '' ) ;
if ( ! creditCard . test ( sanitized ) ) {
return false ;
}
var sum = 0 ;
var digit ;
var tmpNum ;
var shouldDouble ;
for ( var i = sanitized . length - 1 ; i >= 0 ; i -- ) {
digit = sanitized . substring ( i , i + 1 ) ;
tmpNum = parseInt ( digit , 10 ) ;
if ( shouldDouble ) {
tmpNum *= 2 ;
if ( tmpNum >= 10 ) {
sum += tmpNum % 10 + 1 ;
} else {
sum += tmpNum ;
}
} else {
sum += tmpNum ;
2020-12-05 15:17:54 -07:00
}
2021-04-22 07:52:25 -06:00
shouldDouble = ! shouldDouble ;
}
return ! ! ( sum % 10 === 0 ? sanitized : false ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 33 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isCurrency ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function currencyRegex ( options ) {
var decimal _digits = "\\d{" . concat ( options . digits _after _decimal [ 0 ] , "}" ) ;
options . digits _after _decimal . forEach ( function ( digit , index ) {
if ( index !== 0 ) decimal _digits = "" . concat ( decimal _digits , "|\\d{" ) . concat ( digit , "}" ) ;
} ) ;
var symbol = "(" . concat ( options . symbol . replace ( /\W/ , function ( m ) {
return "\\" . concat ( m ) ;
} ) , ")" ) . concat ( options . require _symbol ? '' : '?' ) ,
negative = '-?' ,
whole _dollar _amount _without _sep = '[1-9]\\d*' ,
whole _dollar _amount _with _sep = "[1-9]\\d{0,2}(\\" . concat ( options . thousands _separator , "\\d{3})*" ) ,
valid _whole _dollar _amounts = [ '0' , whole _dollar _amount _without _sep , whole _dollar _amount _with _sep ] ,
whole _dollar _amount = "(" . concat ( valid _whole _dollar _amounts . join ( '|' ) , ")?" ) ,
decimal _amount = "(\\" . concat ( options . decimal _separator , "(" ) . concat ( decimal _digits , "))" ) . concat ( options . require _decimal ? '' : '?' ) ;
var pattern = whole _dollar _amount + ( options . allow _decimal || options . require _decimal ? decimal _amount : '' ) ; // default is negative sign before symbol, but there are two other options (besides parens)
if ( options . allow _negatives && ! options . parens _for _negatives ) {
if ( options . negative _sign _after _digits ) {
pattern += negative ;
} else if ( options . negative _sign _before _digits ) {
pattern = negative + pattern ;
}
} // South African Rand, for example, uses R 123 (space) and R-123 (no space)
if ( options . allow _negative _sign _placeholder ) {
pattern = "( (?!\\-))?" . concat ( pattern ) ;
} else if ( options . allow _space _after _symbol ) {
pattern = " ?" . concat ( pattern ) ;
} else if ( options . allow _space _after _digits ) {
pattern += '( (?!$))?' ;
}
if ( options . symbol _after _digits ) {
pattern += symbol ;
} else {
pattern = symbol + pattern ;
}
if ( options . allow _negatives ) {
if ( options . parens _for _negatives ) {
pattern = "(\\(" . concat ( pattern , "\\)|" ) . concat ( pattern , ")" ) ;
} else if ( ! ( options . negative _sign _before _digits || options . negative _sign _after _digits ) ) {
pattern = negative + pattern ;
}
} // ensure there's a dollar and/or decimal amount, and that
// it doesn't start with a space or a negative sign followed by a space
return new RegExp ( "^(?!-? )(?=.*\\d)" . concat ( pattern , "$" ) ) ;
}
var default _currency _options = {
symbol : '$' ,
require _symbol : false ,
allow _space _after _symbol : false ,
symbol _after _digits : false ,
allow _negatives : true ,
parens _for _negatives : false ,
negative _sign _before _digits : false ,
negative _sign _after _digits : false ,
allow _negative _sign _placeholder : false ,
thousands _separator : ',' ,
decimal _separator : '.' ,
allow _decimal : true ,
require _decimal : false ,
digits _after _decimal : [ 2 ] ,
allow _space _after _digits : false
} ;
function isCurrency ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , default _currency _options ) ;
return currencyRegex ( options ) . test ( str ) ;
2020-10-26 16:02:22 -06:00
}
2021-04-22 07:52:25 -06:00
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 34 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isDataURI ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i ;
var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i ;
var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i ;
function isDataURI ( str ) {
( 0 , _assertString . default ) ( str ) ;
var data = str . split ( ',' ) ;
if ( data . length < 2 ) {
return false ;
}
var attributes = data . shift ( ) . trim ( ) . split ( ';' ) ;
var schemeAndMediaType = attributes . shift ( ) ;
if ( schemeAndMediaType . substr ( 0 , 5 ) !== 'data:' ) {
return false ;
}
var mediaType = schemeAndMediaType . substr ( 5 ) ;
if ( mediaType !== '' && ! validMediaType . test ( mediaType ) ) {
return false ;
}
for ( var i = 0 ; i < attributes . length ; i ++ ) {
if ( i === attributes . length - 1 && attributes [ i ] . toLowerCase ( ) === 'base64' ) { // ok
} else if ( ! validAttribute . test ( attributes [ i ] ) ) {
return false ;
}
}
for ( var _i = 0 ; _i < data . length ; _i ++ ) {
if ( ! validData . test ( data [ _i ] ) ) {
return false ;
}
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 35 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isDate ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _iterableToArrayLimit ( arr , i ) { if ( typeof Symbol === "undefined" || ! ( Symbol . iterator in Object ( arr ) ) ) return ; var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; }
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
function _createForOfIteratorHelper ( o , allowArrayLike ) { var it ; if ( typeof Symbol === "undefined" || o [ Symbol . iterator ] == null ) { if ( Array . isArray ( o ) || ( it = _unsupportedIterableToArray ( o ) ) || allowArrayLike && o && typeof o . length === "number" ) { if ( it ) o = it ; var i = 0 ; var F = function F ( ) { } ; return { s : F , n : function n ( ) { if ( i >= o . length ) return { done : true } ; return { done : false , value : o [ i ++ ] } ; } , e : function e ( _e2 ) { throw _e2 ; } , f : F } ; } throw new TypeError ( "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } var normalCompletion = true , didErr = false , err ; return { s : function s ( ) { it = o [ Symbol . iterator ] ( ) ; } , n : function n ( ) { var step = it . next ( ) ; normalCompletion = step . done ; return step ; } , e : function e ( _e3 ) { didErr = true ; err = _e3 ; } , f : function f ( ) { try { if ( ! normalCompletion && it . return != null ) it . return ( ) ; } finally { if ( didErr ) throw err ; } } } ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; }
var default _date _options = {
format : 'YYYY/MM/DD' ,
delimiters : [ '/' , '-' ] ,
strictMode : false
} ;
function isValidFormat ( format ) {
return /(^(y{4}|y{2})[\/-](m{1,2})[\/-](d{1,2})$)|(^(m{1,2})[\/-](d{1,2})[\/-]((y{4}|y{2})$))|(^(d{1,2})[\/-](m{1,2})[\/-]((y{4}|y{2})$))/gi . test ( format ) ;
}
function zip ( date , format ) {
var zippedArr = [ ] ,
len = Math . min ( date . length , format . length ) ;
for ( var i = 0 ; i < len ; i ++ ) {
zippedArr . push ( [ date [ i ] , format [ i ] ] ) ;
}
return zippedArr ;
}
function isDate ( input , options ) {
if ( typeof options === 'string' ) {
// Allow backward compatbility for old format isDate(input [, format])
options = ( 0 , _merge . default ) ( {
format : options
} , default _date _options ) ;
} else {
options = ( 0 , _merge . default ) ( options , default _date _options ) ;
}
if ( typeof input === 'string' && isValidFormat ( options . format ) ) {
var formatDelimiter = options . delimiters . find ( function ( delimiter ) {
return options . format . indexOf ( delimiter ) !== - 1 ;
} ) ;
var dateDelimiter = options . strictMode ? formatDelimiter : options . delimiters . find ( function ( delimiter ) {
return input . indexOf ( delimiter ) !== - 1 ;
} ) ;
var dateAndFormat = zip ( input . split ( dateDelimiter ) , options . format . toLowerCase ( ) . split ( formatDelimiter ) ) ;
var dateObj = { } ;
var _iterator = _createForOfIteratorHelper ( dateAndFormat ) ,
_step ;
try {
for ( _iterator . s ( ) ; ! ( _step = _iterator . n ( ) ) . done ; ) {
var _step$value = _slicedToArray ( _step . value , 2 ) ,
dateWord = _step$value [ 0 ] ,
formatWord = _step$value [ 1 ] ;
if ( dateWord . length !== formatWord . length ) {
return false ;
}
dateObj [ formatWord . charAt ( 0 ) ] = dateWord ;
}
} catch ( err ) {
_iterator . e ( err ) ;
} finally {
_iterator . f ( ) ;
}
return new Date ( "" . concat ( dateObj . m , "/" ) . concat ( dateObj . d , "/" ) . concat ( dateObj . y ) ) . getDate ( ) === + dateObj . d ;
}
if ( ! options . strictMode ) {
return Object . prototype . toString . call ( input ) === '[object Date]' && isFinite ( input ) ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/merge" : 109 } ] , 36 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isDecimal ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _includes = _interopRequireDefault ( require ( "./util/includes" ) ) ;
var _alpha = require ( "./alpha" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function decimalRegExp ( options ) {
var regExp = new RegExp ( "^[-+]?([0-9]+)?(\\" . concat ( _alpha . decimal [ options . locale ] , "[0-9]{" ) . concat ( options . decimal _digits , "})" ) . concat ( options . force _decimal ? '' : '?' , "$" ) ) ;
return regExp ;
}
var default _decimal _options = {
force _decimal : false ,
decimal _digits : '1,' ,
locale : 'en-US'
} ;
var blacklist = [ '' , '-' , '+' ] ;
function isDecimal ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , default _decimal _options ) ;
if ( options . locale in _alpha . decimal ) {
return ! ( 0 , _includes . default ) ( blacklist , str . replace ( / /g , '' ) ) && decimalRegExp ( options ) . test ( str ) ;
}
throw new Error ( "Invalid locale '" . concat ( options . locale , "'" ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./alpha" : 15 , "./util/assertString" : 107 , "./util/includes" : 108 , "./util/merge" : 109 } ] , 37 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isDivisibleBy ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _toFloat = _interopRequireDefault ( require ( "./toFloat" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isDivisibleBy ( str , num ) {
( 0 , _assertString . default ) ( str ) ;
return ( 0 , _toFloat . default ) ( str ) % parseInt ( num , 10 ) === 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./toFloat" : 102 , "./util/assertString" : 107 } ] , 38 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isEAN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ * *
* The most commonly used EAN standard is
* the thirteen - digit EAN - 13 , while the
* less commonly used 8 - digit EAN - 8 barcode was
* introduced for use on small packages .
* EAN consists of :
* GS1 prefix , manufacturer code , product code and check digit
* Reference : https : //en.wikipedia.org/wiki/International_Article_Number
* /
/ * *
* Define EAN Lenghts ; 8 for EAN - 8 ; 13 for EAN - 13
* and Regular Expression for valid EANs ( EAN - 8 , EAN - 13 ) ,
* with exact numberic matching of 8 or 13 digits [ 0 - 9 ]
* /
var LENGTH _EAN _8 = 8 ;
var validEanRegex = /^(\d{8}|\d{13})$/ ;
/ * *
* Get position weight given :
* EAN length and digit index / position
*
* @ param { number } length
* @ param { number } index
* @ return { number }
* /
function getPositionWeightThroughLengthAndIndex ( length , index ) {
if ( length === LENGTH _EAN _8 ) {
return index % 2 === 0 ? 3 : 1 ;
}
return index % 2 === 0 ? 1 : 3 ;
}
/ * *
* Calculate EAN Check Digit
* Reference : https : //en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit
*
* @ param { string } ean
* @ return { number }
* /
function calculateCheckDigit ( ean ) {
var checksum = ean . slice ( 0 , - 1 ) . split ( '' ) . map ( function ( char , index ) {
return Number ( char ) * getPositionWeightThroughLengthAndIndex ( ean . length , index ) ;
} ) . reduce ( function ( acc , partialSum ) {
return acc + partialSum ;
} , 0 ) ;
var remainder = 10 - checksum % 10 ;
return remainder < 10 ? remainder : 0 ;
}
/ * *
* Check if string is valid EAN :
* Matches EAN - 8 / EAN - 13 regex
* Has valid check digit .
*
* @ param { string } str
* @ return { boolean }
* /
function isEAN ( str ) {
( 0 , _assertString . default ) ( str ) ;
var actualCheckDigit = Number ( str . slice ( - 1 ) ) ;
return validEanRegex . test ( str ) && actualCheckDigit === calculateCheckDigit ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 39 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isEmail ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
var _isByteLength = _interopRequireDefault ( require ( "./isByteLength" ) ) ;
var _isFQDN = _interopRequireDefault ( require ( "./isFQDN" ) ) ;
var _isIP = _interopRequireDefault ( require ( "./isIP" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; }
function _iterableToArrayLimit ( arr , i ) { if ( typeof Symbol === "undefined" || ! ( Symbol . iterator in Object ( arr ) ) ) return ; var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; }
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
var default _email _options = {
allow _display _name : false ,
require _display _name : false ,
allow _utf8 _local _part : true ,
require _tld : true ,
blacklisted _chars : '' ,
ignore _max _length : false
} ;
/* eslint-disable max-len */
/* eslint-disable no-control-regex */
var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)<(.+)>$/i ;
var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i ;
var gmailUserPart = /^[a-z\d]+$/ ;
var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i ;
var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i ;
var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i ;
var defaultMaxEmailLength = 254 ;
/* eslint-enable max-len */
/* eslint-enable no-control-regex */
/ * *
* Validate display name according to the RFC2822 : https : //tools.ietf.org/html/rfc2822#appendix-A.1.2
* @ param { String } display _name
* /
function validateDisplayName ( display _name ) {
var trim _quotes = display _name . match ( /^"(.+)"$/i ) ;
var display _name _without _quotes = trim _quotes ? trim _quotes [ 1 ] : display _name ; // display name with only spaces is not valid
if ( ! display _name _without _quotes . trim ( ) ) {
return false ;
} // check whether display name contains illegal character
var contains _illegal = /[\.";<>]/ . test ( display _name _without _quotes ) ;
if ( contains _illegal ) {
// if contains illegal characters,
// must to be enclosed in double-quotes, otherwise it's not a valid display name
if ( ! trim _quotes ) {
return false ;
} // the quotes in display name must start with character symbol \
var all _start _with _back _slash = display _name _without _quotes . split ( '"' ) . length === display _name _without _quotes . split ( '\\"' ) . length ;
if ( ! all _start _with _back _slash ) {
return false ;
}
}
return true ;
}
function isEmail ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , default _email _options ) ;
if ( options . require _display _name || options . allow _display _name ) {
var display _email = str . match ( splitNameAddress ) ;
if ( display _email ) {
var display _name ;
var _display _email = _slicedToArray ( display _email , 3 ) ;
display _name = _display _email [ 1 ] ;
str = _display _email [ 2 ] ;
// sometimes need to trim the last space to get the display name
// because there may be a space between display name and email address
// eg. myname <address@gmail.com>
// the display name is `myname` instead of `myname `, so need to trim the last space
if ( display _name . endsWith ( ' ' ) ) {
display _name = display _name . substr ( 0 , display _name . length - 1 ) ;
}
if ( ! validateDisplayName ( display _name ) ) {
return false ;
}
} else if ( options . require _display _name ) {
return false ;
}
}
if ( ! options . ignore _max _length && str . length > defaultMaxEmailLength ) {
return false ;
}
var parts = str . split ( '@' ) ;
var domain = parts . pop ( ) ;
var user = parts . join ( '@' ) ;
var lower _domain = domain . toLowerCase ( ) ;
if ( options . domain _specific _validation && ( lower _domain === 'gmail.com' || lower _domain === 'googlemail.com' ) ) {
/ *
Previously we removed dots for gmail addresses before validating .
This was removed because it allows ` multiple..dots@gmail.com `
to be reported as valid , but it is not .
Gmail only normalizes single dots , removing them from here is pointless ,
should be done in normalizeEmail
* /
user = user . toLowerCase ( ) ; // Removing sub-address from username before gmail validation
var username = user . split ( '+' ) [ 0 ] ; // Dots are not included in gmail length restriction
if ( ! ( 0 , _isByteLength . default ) ( username . replace ( '.' , '' ) , {
min : 6 ,
max : 30
} ) ) {
return false ;
}
var _user _parts = username . split ( '.' ) ;
for ( var i = 0 ; i < _user _parts . length ; i ++ ) {
if ( ! gmailUserPart . test ( _user _parts [ i ] ) ) {
return false ;
}
}
}
if ( options . ignore _max _length === false && ( ! ( 0 , _isByteLength . default ) ( user , {
max : 64
} ) || ! ( 0 , _isByteLength . default ) ( domain , {
max : 254
} ) ) ) {
return false ;
}
if ( ! ( 0 , _isFQDN . default ) ( domain , {
require _tld : options . require _tld
} ) ) {
if ( ! options . allow _ip _domain ) {
return false ;
}
if ( ! ( 0 , _isIP . default ) ( domain ) ) {
if ( ! domain . startsWith ( '[' ) || ! domain . endsWith ( ']' ) ) {
return false ;
}
var noBracketdomain = domain . substr ( 1 , domain . length - 2 ) ;
if ( noBracketdomain . length === 0 || ! ( 0 , _isIP . default ) ( noBracketdomain ) ) {
return false ;
}
}
}
if ( user [ 0 ] === '"' ) {
user = user . slice ( 1 , user . length - 1 ) ;
return options . allow _utf8 _local _part ? quotedEmailUserUtf8 . test ( user ) : quotedEmailUser . test ( user ) ;
}
var pattern = options . allow _utf8 _local _part ? emailUserUtf8Part : emailUserPart ;
var user _parts = user . split ( '.' ) ;
for ( var _i2 = 0 ; _i2 < user _parts . length ; _i2 ++ ) {
if ( ! pattern . test ( user _parts [ _i2 ] ) ) {
return false ;
}
}
if ( options . blacklisted _chars ) {
if ( user . search ( new RegExp ( "[" . concat ( options . blacklisted _chars , "]+" ) , 'g' ) ) !== - 1 ) return false ;
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isByteLength" : 31 , "./isFQDN" : 42 , "./isIP" : 52 , "./util/assertString" : 107 , "./util/merge" : 109 } ] , 40 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isEmpty ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var default _is _empty _options = {
ignore _whitespace : false
} ;
function isEmpty ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , default _is _empty _options ) ;
return ( options . ignore _whitespace ? str . trim ( ) . length : str . length ) === 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 41 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isEthereumAddress ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var eth = /^(0x)[0-9a-f]{40}$/i ;
function isEthereumAddress ( str ) {
( 0 , _assertString . default ) ( str ) ;
return eth . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 42 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isFQDN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var default _fqdn _options = {
require _tld : true ,
allow _underscores : false ,
allow _trailing _dot : false ,
allow _numeric _tld : false
} ;
function isFQDN ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , default _fqdn _options ) ;
/* Remove the optional trailing dot before checking validity */
if ( options . allow _trailing _dot && str [ str . length - 1 ] === '.' ) {
str = str . substring ( 0 , str . length - 1 ) ;
}
var parts = str . split ( '.' ) ;
var tld = parts [ parts . length - 1 ] ;
if ( options . require _tld ) {
// disallow fqdns without tld
if ( parts . length < 2 ) {
return false ;
}
if ( ! /^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i . test ( tld ) ) {
return false ;
} // disallow spaces && special characers
if ( /[\s\u2002-\u200B\u202F\u205F\u3000\uFEFF\uDB40\uDC20\u00A9\uFFFD]/ . test ( tld ) ) {
return false ;
}
} // reject numeric TLDs
if ( ! options . allow _numeric _tld && /^\d+$/ . test ( tld ) ) {
return false ;
}
return parts . every ( function ( part ) {
if ( part . length > 63 ) {
return false ;
}
if ( ! /^[a-z_\u00a1-\uffff0-9-]+$/i . test ( part ) ) {
return false ;
} // disallow full-width chars
if ( /[\uff01-\uff5e]/ . test ( part ) ) {
return false ;
} // disallow parts starting or ending with hyphen
if ( /^-|-$/ . test ( part ) ) {
return false ;
}
if ( ! options . allow _underscores && /_/ . test ( part ) ) {
return false ;
}
return true ;
} ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 43 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isFloat ;
exports . locales = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _alpha = require ( "./alpha" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isFloat ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = options || { } ;
var float = new RegExp ( "^(?:[-+])?(?:[0-9]+)?(?:\\" . concat ( options . locale ? _alpha . decimal [ options . locale ] : '.' , "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$" ) ) ;
if ( str === '' || str === '.' || str === '-' || str === '+' ) {
return false ;
}
var value = parseFloat ( str . replace ( ',' , '.' ) ) ;
return float . test ( str ) && ( ! options . hasOwnProperty ( 'min' ) || value >= options . min ) && ( ! options . hasOwnProperty ( 'max' ) || value <= options . max ) && ( ! options . hasOwnProperty ( 'lt' ) || value < options . lt ) && ( ! options . hasOwnProperty ( 'gt' ) || value > options . gt ) ;
}
var locales = Object . keys ( _alpha . decimal ) ;
exports . locales = locales ;
2021-04-30 04:30:50 -06:00
} , { "./alpha" : 15 , "./util/assertString" : 107 } ] , 44 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isFullWidth ;
exports . fullWidth = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/ ;
exports . fullWidth = fullWidth ;
function isFullWidth ( str ) {
( 0 , _assertString . default ) ( str ) ;
return fullWidth . test ( str ) ;
}
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 45 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isHSL ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var hslcomma = /^(hsl)a?\(\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn|\s*)(\s*,\s*(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s*(,\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s*)?\)$/i ;
var hslspace = /^(hsl)a?\(\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn|\s)(\s*(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s*(\/\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s*)?\)$/i ;
function isHSL ( str ) {
( 0 , _assertString . default ) ( str ) ;
return hslcomma . test ( str ) || hslspace . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 46 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isHalfWidth ;
exports . halfWidth = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/ ;
exports . halfWidth = halfWidth ;
function isHalfWidth ( str ) {
( 0 , _assertString . default ) ( str ) ;
return halfWidth . test ( str ) ;
}
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 47 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isHash ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var lengths = {
md5 : 32 ,
md4 : 32 ,
sha1 : 40 ,
sha256 : 64 ,
sha384 : 96 ,
sha512 : 128 ,
ripemd128 : 32 ,
ripemd160 : 40 ,
tiger128 : 32 ,
tiger160 : 40 ,
tiger192 : 48 ,
crc32 : 8 ,
crc32b : 8
} ;
function isHash ( str , algorithm ) {
( 0 , _assertString . default ) ( str ) ;
var hash = new RegExp ( "^[a-fA-F0-9]{" . concat ( lengths [ algorithm ] , "}$" ) ) ;
return hash . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 48 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isHexColor ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i ;
function isHexColor ( str ) {
( 0 , _assertString . default ) ( str ) ;
return hexcolor . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 49 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isHexadecimal ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i ;
function isHexadecimal ( str ) {
( 0 , _assertString . default ) ( str ) ;
return hexadecimal . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 50 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIBAN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ * *
* List of country codes with
* corresponding IBAN regular expression
* Reference : https : //en.wikipedia.org/wiki/International_Bank_Account_Number
* /
var ibanRegexThroughCountryCode = {
AD : /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/ ,
AE : /^(AE[0-9]{2})\d{3}\d{16}$/ ,
AL : /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/ ,
AT : /^(AT[0-9]{2})\d{16}$/ ,
AZ : /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/ ,
BA : /^(BA[0-9]{2})\d{16}$/ ,
BE : /^(BE[0-9]{2})\d{12}$/ ,
BG : /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/ ,
BH : /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/ ,
BR : /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/ ,
BY : /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/ ,
CH : /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/ ,
CR : /^(CR[0-9]{2})\d{18}$/ ,
CY : /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/ ,
CZ : /^(CZ[0-9]{2})\d{20}$/ ,
DE : /^(DE[0-9]{2})\d{18}$/ ,
DK : /^(DK[0-9]{2})\d{14}$/ ,
DO : /^(DO[0-9]{2})[A-Z]{4}\d{20}$/ ,
EE : /^(EE[0-9]{2})\d{16}$/ ,
EG : /^(EG[0-9]{2})\d{25}$/ ,
ES : /^(ES[0-9]{2})\d{20}$/ ,
FI : /^(FI[0-9]{2})\d{14}$/ ,
FO : /^(FO[0-9]{2})\d{14}$/ ,
FR : /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/ ,
GB : /^(GB[0-9]{2})[A-Z]{4}\d{14}$/ ,
GE : /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/ ,
GI : /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/ ,
GL : /^(GL[0-9]{2})\d{14}$/ ,
GR : /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/ ,
GT : /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/ ,
HR : /^(HR[0-9]{2})\d{17}$/ ,
HU : /^(HU[0-9]{2})\d{24}$/ ,
IE : /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/ ,
IL : /^(IL[0-9]{2})\d{19}$/ ,
IQ : /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/ ,
IR : /^(IR[0-9]{2})0\d{2}0\d{18}$/ ,
IS : /^(IS[0-9]{2})\d{22}$/ ,
IT : /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/ ,
JO : /^(JO[0-9]{2})[A-Z]{4}\d{22}$/ ,
KW : /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/ ,
KZ : /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/ ,
LB : /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/ ,
LC : /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/ ,
LI : /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/ ,
LT : /^(LT[0-9]{2})\d{16}$/ ,
LU : /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/ ,
LV : /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/ ,
MC : /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/ ,
MD : /^(MD[0-9]{2})[A-Z0-9]{20}$/ ,
ME : /^(ME[0-9]{2})\d{18}$/ ,
MK : /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/ ,
MR : /^(MR[0-9]{2})\d{23}$/ ,
MT : /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/ ,
MU : /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/ ,
NL : /^(NL[0-9]{2})[A-Z]{4}\d{10}$/ ,
NO : /^(NO[0-9]{2})\d{11}$/ ,
PK : /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/ ,
PL : /^(PL[0-9]{2})\d{24}$/ ,
PS : /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/ ,
PT : /^(PT[0-9]{2})\d{21}$/ ,
QA : /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/ ,
RO : /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/ ,
RS : /^(RS[0-9]{2})\d{18}$/ ,
SA : /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/ ,
SC : /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/ ,
SE : /^(SE[0-9]{2})\d{20}$/ ,
SI : /^(SI[0-9]{2})\d{15}$/ ,
SK : /^(SK[0-9]{2})\d{20}$/ ,
SM : /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/ ,
SV : /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/ ,
TL : /^(TL[0-9]{2})\d{19}$/ ,
TN : /^(TN[0-9]{2})\d{20}$/ ,
TR : /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/ ,
UA : /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/ ,
VA : /^(VA[0-9]{2})\d{18}$/ ,
VG : /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/ ,
XK : /^(XK[0-9]{2})\d{16}$/
} ;
/ * *
* Check whether string has correct universal IBAN format
* The IBAN consists of up to 34 alphanumeric characters , as follows :
* Country Code using ISO 3166 - 1 alpha - 2 , two letters
* check digits , two digits and
* Basic Bank Account Number ( BBAN ) , up to 30 alphanumeric characters .
* NOTE : Permitted IBAN characters are : digits [ 0 - 9 ] and the 26 latin alphabetic [ A - Z ]
*
* @ param { string } str - string under validation
* @ return { boolean }
* /
function hasValidIbanFormat ( str ) {
// Strip white spaces and hyphens
var strippedStr = str . replace ( /[\s\-]+/gi , '' ) . toUpperCase ( ) ;
var isoCountryCode = strippedStr . slice ( 0 , 2 ) . toUpperCase ( ) ;
return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode [ isoCountryCode ] . test ( strippedStr ) ;
}
/ * *
* Check whether string has valid IBAN Checksum
* by performing basic mod - 97 operation and
* the remainder should equal 1
* -- Start by rearranging the IBAN by moving the four initial characters to the end of the string
* -- Replace each letter in the string with two digits , A - > 10 , B = 11 , Z = 35
* -- Interpret the string as a decimal integer and
* -- compute the remainder on division by 97 ( mod 97 )
* Reference : https : //en.wikipedia.org/wiki/International_Bank_Account_Number
*
* @ param { string } str
* @ return { boolean }
* /
function hasValidIbanChecksum ( str ) {
var strippedStr = str . replace ( /[^A-Z0-9]+/gi , '' ) . toUpperCase ( ) ; // Keep only digits and A-Z latin alphabetic
var rearranged = strippedStr . slice ( 4 ) + strippedStr . slice ( 0 , 4 ) ;
var alphaCapsReplacedWithDigits = rearranged . replace ( /[A-Z]/g , function ( char ) {
return char . charCodeAt ( 0 ) - 55 ;
} ) ;
var remainder = alphaCapsReplacedWithDigits . match ( /\d{1,7}/g ) . reduce ( function ( acc , value ) {
return Number ( acc + value ) % 97 ;
} , '' ) ;
return remainder === 1 ;
}
function isIBAN ( str ) {
( 0 , _assertString . default ) ( str ) ;
return hasValidIbanFormat ( str ) && hasValidIbanChecksum ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 51 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIMEI ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var imeiRegexWithoutHypens = /^[0-9]{15}$/ ;
var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/ ;
function isIMEI ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = options || { } ; // default regex for checking imei is the one without hyphens
var imeiRegex = imeiRegexWithoutHypens ;
if ( options . allow _hyphens ) {
imeiRegex = imeiRegexWithHypens ;
}
if ( ! imeiRegex . test ( str ) ) {
return false ;
}
str = str . replace ( /-/g , '' ) ;
var sum = 0 ,
mul = 2 ,
l = 14 ;
for ( var i = 0 ; i < l ; i ++ ) {
var digit = str . substring ( l - i - 1 , l - i ) ;
var tp = parseInt ( digit , 10 ) * mul ;
if ( tp >= 10 ) {
sum += tp % 10 + 1 ;
} else {
sum += tp ;
}
if ( mul === 1 ) {
mul += 1 ;
} else {
mul -= 1 ;
}
}
var chk = ( 10 - sum % 10 ) % 10 ;
if ( chk !== parseInt ( str . substring ( 14 , 15 ) , 10 ) ) {
return false ;
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 52 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIP ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ * *
11.3 . Examples
The following addresses
fe80 : : 1234 ( on the 1 st link of the node )
ff02 : : 5678 ( on the 5 th link of the node )
ff08 : : 9 abc ( on the 10 th organization of the node )
would be represented as follows :
fe80 : : 1234 % 1
ff02 : : 5678 % 5
ff08 : : 9 abc % 10
( Here we assume a natural translation from a zone index to the
< zone _id > part , where the Nth zone of any scope is translated into
"N" . )
If we use interface names as < zone _id > , those addresses could also be
represented as follows :
fe80 : : 1234 % ne0
ff02 : : 5678 % pvc1 . 3
ff08 : : 9 abc % interface10
where the interface "ne0" belongs to the 1 st link , "pvc1.3" belongs
to the 5 th link , and "interface10" belongs to the 10 th organization .
* * * /
var ipv4Maybe = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/ ;
var ipv6Block = /^[0-9A-F]{1,4}$/i ;
function isIP ( str ) {
var version = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : '' ;
( 0 , _assertString . default ) ( str ) ;
version = String ( version ) ;
if ( ! version ) {
return isIP ( str , 4 ) || isIP ( str , 6 ) ;
} else if ( version === '4' ) {
if ( ! ipv4Maybe . test ( str ) ) {
return false ;
}
var parts = str . split ( '.' ) . sort ( function ( a , b ) {
return a - b ;
} ) ;
return parts [ 3 ] <= 255 ;
} else if ( version === '6' ) {
var addressAndZone = [ str ] ; // ipv6 addresses could have scoped architecture
// according to https://tools.ietf.org/html/rfc4007#section-11
if ( str . includes ( '%' ) ) {
addressAndZone = str . split ( '%' ) ;
if ( addressAndZone . length !== 2 ) {
// it must be just two parts
return false ;
}
if ( ! addressAndZone [ 0 ] . includes ( ':' ) ) {
// the first part must be the address
return false ;
}
if ( addressAndZone [ 1 ] === '' ) {
// the second part must not be empty
return false ;
}
}
var blocks = addressAndZone [ 0 ] . split ( ':' ) ;
var foundOmissionBlock = false ; // marker to indicate ::
// At least some OS accept the last 32 bits of an IPv6 address
// (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says
// that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,
// and '::a.b.c.d' is deprecated, but also valid.
var foundIPv4TransitionBlock = isIP ( blocks [ blocks . length - 1 ] , 4 ) ;
var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8 ;
if ( blocks . length > expectedNumberOfBlocks ) {
return false ;
} // initial or final ::
if ( str === '::' ) {
return true ;
} else if ( str . substr ( 0 , 2 ) === '::' ) {
blocks . shift ( ) ;
blocks . shift ( ) ;
foundOmissionBlock = true ;
} else if ( str . substr ( str . length - 2 ) === '::' ) {
blocks . pop ( ) ;
blocks . pop ( ) ;
foundOmissionBlock = true ;
}
for ( var i = 0 ; i < blocks . length ; ++ i ) {
// test for a :: which can not be at the string start/end
// since those cases have been handled above
if ( blocks [ i ] === '' && i > 0 && i < blocks . length - 1 ) {
if ( foundOmissionBlock ) {
return false ; // multiple :: in address
}
foundOmissionBlock = true ;
} else if ( foundIPv4TransitionBlock && i === blocks . length - 1 ) { // it has been checked before that the last
// block is a valid IPv4 address
} else if ( ! ipv6Block . test ( blocks [ i ] ) ) {
return false ;
}
}
if ( foundOmissionBlock ) {
return blocks . length >= 1 ;
}
return blocks . length === expectedNumberOfBlocks ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 53 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIPRange ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isIP = _interopRequireDefault ( require ( "./isIP" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var subnetMaybe = /^\d{1,2}$/ ;
function isIPRange ( str ) {
( 0 , _assertString . default ) ( str ) ;
var parts = str . split ( '/' ) ; // parts[0] -> ip, parts[1] -> subnet
if ( parts . length !== 2 ) {
return false ;
}
if ( ! subnetMaybe . test ( parts [ 1 ] ) ) {
return false ;
} // Disallow preceding 0 i.e. 01, 02, ...
if ( parts [ 1 ] . length > 1 && parts [ 1 ] . startsWith ( '0' ) ) {
return false ;
}
return ( 0 , _isIP . default ) ( parts [ 0 ] , 4 ) && parts [ 1 ] <= 32 && parts [ 1 ] >= 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isIP" : 52 , "./util/assertString" : 107 } ] , 54 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISBN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/ ;
var isbn13Maybe = /^(?:[0-9]{13})$/ ;
var factor = [ 1 , 3 ] ;
function isISBN ( str ) {
var version = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : '' ;
( 0 , _assertString . default ) ( str ) ;
version = String ( version ) ;
if ( ! version ) {
return isISBN ( str , 10 ) || isISBN ( str , 13 ) ;
}
var sanitized = str . replace ( /[\s-]+/g , '' ) ;
var checksum = 0 ;
var i ;
if ( version === '10' ) {
if ( ! isbn10Maybe . test ( sanitized ) ) {
return false ;
}
for ( i = 0 ; i < 9 ; i ++ ) {
checksum += ( i + 1 ) * sanitized . charAt ( i ) ;
}
if ( sanitized . charAt ( 9 ) === 'X' ) {
checksum += 10 * 10 ;
} else {
checksum += 10 * sanitized . charAt ( 9 ) ;
}
if ( checksum % 11 === 0 ) {
return ! ! sanitized ;
}
} else if ( version === '13' ) {
if ( ! isbn13Maybe . test ( sanitized ) ) {
return false ;
}
for ( i = 0 ; i < 12 ; i ++ ) {
checksum += factor [ i % 2 ] * sanitized . charAt ( i ) ;
}
if ( sanitized . charAt ( 12 ) - ( 10 - checksum % 10 ) % 10 === 0 ) {
return ! ! sanitized ;
}
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 55 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISIN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/ ;
function isISIN ( str ) {
( 0 , _assertString . default ) ( str ) ;
if ( ! isin . test ( str ) ) {
return false ;
}
var checksumStr = str . replace ( /[A-Z]/g , function ( character ) {
return parseInt ( character , 36 ) ;
} ) ;
var sum = 0 ;
var digit ;
var tmpNum ;
var shouldDouble = true ;
for ( var i = checksumStr . length - 2 ; i >= 0 ; i -- ) {
digit = checksumStr . substring ( i , i + 1 ) ;
tmpNum = parseInt ( digit , 10 ) ;
if ( shouldDouble ) {
tmpNum *= 2 ;
if ( tmpNum >= 10 ) {
sum += tmpNum + 1 ;
} else {
sum += tmpNum ;
}
} else {
sum += tmpNum ;
}
shouldDouble = ! shouldDouble ;
}
return parseInt ( str . substr ( str . length - 1 ) , 10 ) === ( 10000 - sum ) % 10 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 56 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO31661Alpha2 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _includes = _interopRequireDefault ( require ( "./util/includes" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
var validISO31661Alpha2CountriesCodes = [ 'AD' , 'AE' , 'AF' , 'AG' , 'AI' , 'AL' , 'AM' , 'AO' , 'AQ' , 'AR' , 'AS' , 'AT' , 'AU' , 'AW' , 'AX' , 'AZ' , 'BA' , 'BB' , 'BD' , 'BE' , 'BF' , 'BG' , 'BH' , 'BI' , 'BJ' , 'BL' , 'BM' , 'BN' , 'BO' , 'BQ' , 'BR' , 'BS' , 'BT' , 'BV' , 'BW' , 'BY' , 'BZ' , 'CA' , 'CC' , 'CD' , 'CF' , 'CG' , 'CH' , 'CI' , 'CK' , 'CL' , 'CM' , 'CN' , 'CO' , 'CR' , 'CU' , 'CV' , 'CW' , 'CX' , 'CY' , 'CZ' , 'DE' , 'DJ' , 'DK' , 'DM' , 'DO' , 'DZ' , 'EC' , 'EE' , 'EG' , 'EH' , 'ER' , 'ES' , 'ET' , 'FI' , 'FJ' , 'FK' , 'FM' , 'FO' , 'FR' , 'GA' , 'GB' , 'GD' , 'GE' , 'GF' , 'GG' , 'GH' , 'GI' , 'GL' , 'GM' , 'GN' , 'GP' , 'GQ' , 'GR' , 'GS' , 'GT' , 'GU' , 'GW' , 'GY' , 'HK' , 'HM' , 'HN' , 'HR' , 'HT' , 'HU' , 'ID' , 'IE' , 'IL' , 'IM' , 'IN' , 'IO' , 'IQ' , 'IR' , 'IS' , 'IT' , 'JE' , 'JM' , 'JO' , 'JP' , 'KE' , 'KG' , 'KH' , 'KI' , 'KM' , 'KN' , 'KP' , 'KR' , 'KW' , 'KY' , 'KZ' , 'LA' , 'LB' , 'LC' , 'LI' , 'LK' , 'LR' , 'LS' , 'LT' , 'LU' , 'LV' , 'LY' , 'MA' , 'MC' , 'MD' , 'ME' , 'MF' , 'MG' , 'MH' , 'MK' , 'ML' , 'MM' , 'MN' , 'MO' , 'MP' , 'MQ' , 'MR' , 'MS' , 'MT' , 'MU' , 'MV' , 'MW' , 'MX' , 'MY' , 'MZ' , 'NA' , 'NC' , 'NE' , 'NF' , 'NG' , 'NI' , 'NL' , 'NO' , 'NP' , 'NR' , 'NU' , 'NZ' , 'OM' , 'PA' , 'PE' , 'PF' , 'PG' , 'PH' , 'PK' , 'PL' , 'PM' , 'PN' , 'PR' , 'PS' , 'PT' , 'PW' , 'PY' , 'QA' , 'RE' , 'RO' , 'RS' , 'RU' , 'RW' , 'SA' , 'SB' , 'SC' , 'SD' , 'SE' , 'SG' , 'SH' , 'SI' , 'SJ' , 'SK' , 'SL' , 'SM' , 'SN' , 'SO' , 'SR' , 'SS' , 'ST' , 'SV' , 'SX' , 'SY' , 'SZ' , 'TC' , 'TD' , 'TF' , 'TG' , 'TH' , 'TJ' , 'TK' , 'TL' , 'TM' , 'TN' , 'TO' , 'TR' , 'TT' , 'TV' , 'TW' , 'TZ' , 'UA' , 'UG' , 'UM' , 'US' , 'UY' , 'UZ' , 'VA' , 'VC' , 'VE' , 'VG' , 'VI' , 'VN' , 'VU' , 'WF' , 'WS' , 'YE' , 'YT' , 'ZA' , 'ZM' , 'ZW' ] ;
function isISO31661Alpha2 ( str ) {
( 0 , _assertString . default ) ( str ) ;
return ( 0 , _includes . default ) ( validISO31661Alpha2CountriesCodes , str . toUpperCase ( ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/includes" : 108 } ] , 57 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO31661Alpha3 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _includes = _interopRequireDefault ( require ( "./util/includes" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
var validISO31661Alpha3CountriesCodes = [ 'AFG' , 'ALA' , 'ALB' , 'DZA' , 'ASM' , 'AND' , 'AGO' , 'AIA' , 'ATA' , 'ATG' , 'ARG' , 'ARM' , 'ABW' , 'AUS' , 'AUT' , 'AZE' , 'BHS' , 'BHR' , 'BGD' , 'BRB' , 'BLR' , 'BEL' , 'BLZ' , 'BEN' , 'BMU' , 'BTN' , 'BOL' , 'BES' , 'BIH' , 'BWA' , 'BVT' , 'BRA' , 'IOT' , 'BRN' , 'BGR' , 'BFA' , 'BDI' , 'KHM' , 'CMR' , 'CAN' , 'CPV' , 'CYM' , 'CAF' , 'TCD' , 'CHL' , 'CHN' , 'CXR' , 'CCK' , 'COL' , 'COM' , 'COG' , 'COD' , 'COK' , 'CRI' , 'CIV' , 'HRV' , 'CUB' , 'CUW' , 'CYP' , 'CZE' , 'DNK' , 'DJI' , 'DMA' , 'DOM' , 'ECU' , 'EGY' , 'SLV' , 'GNQ' , 'ERI' , 'EST' , 'ETH' , 'FLK' , 'FRO' , 'FJI' , 'FIN' , 'FRA' , 'GUF' , 'PYF' , 'ATF' , 'GAB' , 'GMB' , 'GEO' , 'DEU' , 'GHA' , 'GIB' , 'GRC' , 'GRL' , 'GRD' , 'GLP' , 'GUM' , 'GTM' , 'GGY' , 'GIN' , 'GNB' , 'GUY' , 'HTI' , 'HMD' , 'VAT' , 'HND' , 'HKG' , 'HUN' , 'ISL' , 'IND' , 'IDN' , 'IRN' , 'IRQ' , 'IRL' , 'IMN' , 'ISR' , 'ITA' , 'JAM' , 'JPN' , 'JEY' , 'JOR' , 'KAZ' , 'KEN' , 'KIR' , 'PRK' , 'KOR' , 'KWT' , 'KGZ' , 'LAO' , 'LVA' , 'LBN' , 'LSO' , 'LBR' , 'LBY' , 'LIE' , 'LTU' , 'LUX' , 'MAC' , 'MKD' , 'MDG' , 'MWI' , 'MYS' , 'MDV' , 'MLI' , 'MLT' , 'MHL' , 'MTQ' , 'MRT' , 'MUS' , 'MYT' , 'MEX' , 'FSM' , 'MDA' , 'MCO' , 'MNG' , 'MNE' , 'MSR' , 'MAR' , 'MOZ' , 'MMR' , 'NAM' , 'NRU' , 'NPL' , 'NLD' , 'NCL' , 'NZL' , 'NIC' , 'NER' , 'NGA' , 'NIU' , 'NFK' , 'MNP' , 'NOR' , 'OMN' , 'PAK' , 'PLW' , 'PSE' , 'PAN' , 'PNG' , 'PRY' , 'PER' , 'PHL' , 'PCN' , 'POL' , 'PRT' , 'PRI' , 'QAT' , 'REU' , 'ROU' , 'RUS' , 'RWA' , 'BLM' , 'SHN' , 'KNA' , 'LCA' , 'MAF' , 'SPM' , 'VCT' , 'WSM' , 'SMR' , 'STP' , 'SAU' , 'SEN' , 'SRB' , 'SYC' , 'SLE' , 'SGP' , 'SXM' , 'SVK' , 'SVN' , 'SLB' , 'SOM' , 'ZAF' , 'SGS' , 'SSD' , 'ESP' , 'LKA' , 'SDN' , 'SUR' , 'SJM' , 'SWZ' , 'SWE' , 'CHE' , 'SYR' , 'TWN' , 'TJK' , 'TZA' , 'THA' , 'TLS' , 'TGO' , 'TKL' , 'TON' , 'TTO' , 'TUN' , 'TUR' , 'TKM' , 'TCA' , 'TUV' , 'UGA' , 'UKR' , 'ARE' , 'GBR' , 'USA' , 'UMI' , 'URY' , 'UZB' , 'VUT' , 'VEN' , 'VNM' , 'VGB' , 'VIR' , 'WLF' , 'ESH' , 'YEM' , 'ZMB' , 'ZWE' ] ;
function isISO31661Alpha3 ( str ) {
( 0 , _assertString . default ) ( str ) ;
return ( 0 , _includes . default ) ( validISO31661Alpha3CountriesCodes , str . toUpperCase ( ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/includes" : 108 } ] , 58 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO8601 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* eslint-disable max-len */
// from http://goo.gl/0ejHHW
var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/ ; // same as above, except with a strict 'T' separator between date and time
var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/ ;
/* eslint-enable max-len */
var isValidDate = function isValidDate ( str ) {
// str must have passed the ISO8601 check
// this check is meant to catch invalid dates
// like 2009-02-31
// first check for ordinal dates
var ordinalMatch = str . match ( /^(\d{4})-?(\d{3})([ T]{1}\.*|$)/ ) ;
if ( ordinalMatch ) {
var oYear = Number ( ordinalMatch [ 1 ] ) ;
var oDay = Number ( ordinalMatch [ 2 ] ) ; // if is leap year
if ( oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0 ) return oDay <= 366 ;
return oDay <= 365 ;
}
var match = str . match ( /(\d{4})-?(\d{0,2})-?(\d*)/ ) . map ( Number ) ;
var year = match [ 1 ] ;
var month = match [ 2 ] ;
var day = match [ 3 ] ;
var monthString = month ? "0" . concat ( month ) . slice ( - 2 ) : month ;
var dayString = day ? "0" . concat ( day ) . slice ( - 2 ) : day ; // create a date object and compare
var d = new Date ( "" . concat ( year , "-" ) . concat ( monthString || '01' , "-" ) . concat ( dayString || '01' ) ) ;
if ( month && day ) {
return d . getUTCFullYear ( ) === year && d . getUTCMonth ( ) + 1 === month && d . getUTCDate ( ) === day ;
}
return true ;
} ;
function isISO8601 ( str ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
( 0 , _assertString . default ) ( str ) ;
var check = options . strictSeparator ? iso8601StrictSeparator . test ( str ) : iso8601 . test ( str ) ;
if ( check && options . strict ) return isValidDate ( str ) ;
return check ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 59 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISRC ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// see http://isrc.ifpi.org/en/isrc-standard/code-syntax
var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/ ;
function isISRC ( str ) {
( 0 , _assertString . default ) ( str ) ;
return isrc . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 60 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISSN ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var issn = '^\\d{4}-?\\d{3}[\\dX]$' ;
function isISSN ( str ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
( 0 , _assertString . default ) ( str ) ;
var testIssn = issn ;
testIssn = options . require _hyphen ? testIssn . replace ( '?' , '' ) : testIssn ;
testIssn = options . case _sensitive ? new RegExp ( testIssn ) : new RegExp ( testIssn , 'i' ) ;
if ( ! testIssn . test ( str ) ) {
return false ;
}
var digits = str . replace ( '-' , '' ) . toUpperCase ( ) ;
var checksum = 0 ;
for ( var i = 0 ; i < digits . length ; i ++ ) {
var digit = digits [ i ] ;
checksum += ( digit === 'X' ? 10 : + digit ) * ( 8 - i ) ;
}
return checksum % 11 === 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 61 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIdentityCard ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var validators = {
ES : function ES ( str ) {
( 0 , _assertString . default ) ( str ) ;
var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/ ;
var charsValue = {
X : 0 ,
Y : 1 ,
Z : 2
} ;
var controlDigits = [ 'T' , 'R' , 'W' , 'A' , 'G' , 'M' , 'Y' , 'F' , 'P' , 'D' , 'X' , 'B' , 'N' , 'J' , 'Z' , 'S' , 'Q' , 'V' , 'H' , 'L' , 'C' , 'K' , 'E' ] ; // sanitize user input
var sanitized = str . trim ( ) . toUpperCase ( ) ; // validate the data structure
if ( ! DNI . test ( sanitized ) ) {
return false ;
} // validate the control digit
var number = sanitized . slice ( 0 , - 1 ) . replace ( /[X,Y,Z]/g , function ( char ) {
return charsValue [ char ] ;
} ) ;
return sanitized . endsWith ( controlDigits [ number % 23 ] ) ;
} ,
IN : function IN ( str ) {
var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/ ; // multiplication table
var d = [ [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 2 , 3 , 4 , 0 , 6 , 7 , 8 , 9 , 5 ] , [ 2 , 3 , 4 , 0 , 1 , 7 , 8 , 9 , 5 , 6 ] , [ 3 , 4 , 0 , 1 , 2 , 8 , 9 , 5 , 6 , 7 ] , [ 4 , 0 , 1 , 2 , 3 , 9 , 5 , 6 , 7 , 8 ] , [ 5 , 9 , 8 , 7 , 6 , 0 , 4 , 3 , 2 , 1 ] , [ 6 , 5 , 9 , 8 , 7 , 1 , 0 , 4 , 3 , 2 ] , [ 7 , 6 , 5 , 9 , 8 , 2 , 1 , 0 , 4 , 3 ] , [ 8 , 7 , 6 , 5 , 9 , 3 , 2 , 1 , 0 , 4 ] , [ 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 ] ] ; // permutation table
var p = [ [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 5 , 7 , 6 , 2 , 8 , 3 , 0 , 9 , 4 ] , [ 5 , 8 , 0 , 3 , 7 , 9 , 6 , 1 , 4 , 2 ] , [ 8 , 9 , 1 , 6 , 0 , 4 , 3 , 5 , 2 , 7 ] , [ 9 , 4 , 5 , 3 , 1 , 2 , 6 , 8 , 7 , 0 ] , [ 4 , 2 , 8 , 6 , 5 , 7 , 3 , 9 , 0 , 1 ] , [ 2 , 7 , 9 , 3 , 8 , 0 , 6 , 4 , 1 , 5 ] , [ 7 , 0 , 4 , 6 , 9 , 1 , 3 , 2 , 5 , 8 ] ] ; // sanitize user input
var sanitized = str . trim ( ) ; // validate the data structure
if ( ! DNI . test ( sanitized ) ) {
return false ;
}
var c = 0 ;
var invertedArray = sanitized . replace ( /\s/g , '' ) . split ( '' ) . map ( Number ) . reverse ( ) ;
invertedArray . forEach ( function ( val , i ) {
c = d [ c ] [ p [ i % 8 ] [ val ] ] ;
} ) ;
return c === 0 ;
} ,
IT : function IT ( str ) {
if ( str . length !== 9 ) return false ;
if ( str === 'CA00000AA' ) return false ; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana
return str . search ( /C[A-Z][0-9]{5}[A-Z]{2}/i ) > - 1 ;
} ,
NO : function NO ( str ) {
var sanitized = str . trim ( ) ;
if ( isNaN ( Number ( sanitized ) ) ) return false ;
if ( sanitized . length !== 11 ) return false ;
if ( sanitized === '00000000000' ) return false ; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer
var f = sanitized . split ( '' ) . map ( Number ) ;
var k1 = ( 11 - ( 3 * f [ 0 ] + 7 * f [ 1 ] + 6 * f [ 2 ] + 1 * f [ 3 ] + 8 * f [ 4 ] + 9 * f [ 5 ] + 4 * f [ 6 ] + 5 * f [ 7 ] + 2 * f [ 8 ] ) % 11 ) % 11 ;
var k2 = ( 11 - ( 5 * f [ 0 ] + 4 * f [ 1 ] + 3 * f [ 2 ] + 2 * f [ 3 ] + 7 * f [ 4 ] + 6 * f [ 5 ] + 5 * f [ 6 ] + 4 * f [ 7 ] + 3 * f [ 8 ] + 2 * k1 ) % 11 ) % 11 ;
if ( k1 !== f [ 9 ] || k2 !== f [ 10 ] ) return false ;
return true ;
} ,
'he-IL' : function heIL ( str ) {
var DNI = /^\d{9}$/ ; // sanitize user input
var sanitized = str . trim ( ) ; // validate the data structure
if ( ! DNI . test ( sanitized ) ) {
return false ;
}
var id = sanitized ;
var sum = 0 ,
incNum ;
for ( var i = 0 ; i < id . length ; i ++ ) {
incNum = Number ( id [ i ] ) * ( i % 2 + 1 ) ; // Multiply number by 1 or 2
sum += incNum > 9 ? incNum - 9 : incNum ; // Sum the digits up and add to total
}
return sum % 10 === 0 ;
} ,
'ar-TN' : function arTN ( str ) {
var DNI = /^\d{8}$/ ; // sanitize user input
var sanitized = str . trim ( ) ; // validate the data structure
if ( ! DNI . test ( sanitized ) ) {
return false ;
}
return true ;
} ,
'zh-CN' : function zhCN ( str ) {
var provincesAndCities = [ '11' , // 北京
'12' , // 天津
'13' , // 河北
'14' , // 山西
'15' , // 内蒙古
'21' , // 辽宁
'22' , // 吉林
'23' , // 黑龙江
'31' , // 上海
'32' , // 江苏
'33' , // 浙江
'34' , // 安徽
'35' , // 福建
'36' , // 江西
'37' , // 山东
'41' , // 河南
'42' , // 湖北
'43' , // 湖南
'44' , // 广东
'45' , // 广西
'46' , // 海南
'50' , // 重庆
'51' , // 四川
'52' , // 贵州
'53' , // 云南
'54' , // 西藏
'61' , // 陕西
'62' , // 甘肃
'63' , // 青海
'64' , // 宁夏
'65' , // 新疆
'71' , // 台湾
'81' , // 香港
'82' , // 澳门
'91' // 国外
] ;
var powers = [ '7' , '9' , '10' , '5' , '8' , '4' , '2' , '1' , '6' , '3' , '7' , '9' , '10' , '5' , '8' , '4' , '2' ] ;
var parityBit = [ '1' , '0' , 'X' , '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' ] ;
var checkAddressCode = function checkAddressCode ( addressCode ) {
return provincesAndCities . includes ( addressCode ) ;
} ;
var checkBirthDayCode = function checkBirthDayCode ( birDayCode ) {
var yyyy = parseInt ( birDayCode . substring ( 0 , 4 ) , 10 ) ;
var mm = parseInt ( birDayCode . substring ( 4 , 6 ) , 10 ) ;
var dd = parseInt ( birDayCode . substring ( 6 ) , 10 ) ;
var xdata = new Date ( yyyy , mm - 1 , dd ) ;
if ( xdata > new Date ( ) ) {
return false ; // eslint-disable-next-line max-len
} else if ( xdata . getFullYear ( ) === yyyy && xdata . getMonth ( ) === mm - 1 && xdata . getDate ( ) === dd ) {
return true ;
}
return false ;
} ;
var getParityBit = function getParityBit ( idCardNo ) {
var id17 = idCardNo . substring ( 0 , 17 ) ;
var power = 0 ;
for ( var i = 0 ; i < 17 ; i ++ ) {
power += parseInt ( id17 . charAt ( i ) , 10 ) * parseInt ( powers [ i ] , 10 ) ;
}
var mod = power % 11 ;
return parityBit [ mod ] ;
} ;
var checkParityBit = function checkParityBit ( idCardNo ) {
return getParityBit ( idCardNo ) === idCardNo . charAt ( 17 ) . toUpperCase ( ) ;
} ;
var check15IdCardNo = function check15IdCardNo ( idCardNo ) {
var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/ . test ( idCardNo ) ;
if ( ! check ) return false ;
var addressCode = idCardNo . substring ( 0 , 2 ) ;
check = checkAddressCode ( addressCode ) ;
if ( ! check ) return false ;
var birDayCode = "19" . concat ( idCardNo . substring ( 6 , 12 ) ) ;
check = checkBirthDayCode ( birDayCode ) ;
if ( ! check ) return false ;
return true ;
} ;
var check18IdCardNo = function check18IdCardNo ( idCardNo ) {
var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/ . test ( idCardNo ) ;
if ( ! check ) return false ;
var addressCode = idCardNo . substring ( 0 , 2 ) ;
check = checkAddressCode ( addressCode ) ;
if ( ! check ) return false ;
var birDayCode = idCardNo . substring ( 6 , 14 ) ;
check = checkBirthDayCode ( birDayCode ) ;
if ( ! check ) return false ;
return checkParityBit ( idCardNo ) ;
} ;
var checkIdCardNo = function checkIdCardNo ( idCardNo ) {
var check = /^\d{15}|(\d{17}(\d|x|X))$/ . test ( idCardNo ) ;
if ( ! check ) return false ;
if ( idCardNo . length === 15 ) {
return check15IdCardNo ( idCardNo ) ;
}
return check18IdCardNo ( idCardNo ) ;
} ;
return checkIdCardNo ( str ) ;
} ,
'zh-TW' : function zhTW ( str ) {
var ALPHABET _CODES = {
A : 10 ,
B : 11 ,
C : 12 ,
D : 13 ,
E : 14 ,
F : 15 ,
G : 16 ,
H : 17 ,
I : 34 ,
J : 18 ,
K : 19 ,
L : 20 ,
M : 21 ,
N : 22 ,
O : 35 ,
P : 23 ,
Q : 24 ,
R : 25 ,
S : 26 ,
T : 27 ,
U : 28 ,
V : 29 ,
W : 32 ,
X : 30 ,
Y : 31 ,
Z : 33
} ;
var sanitized = str . trim ( ) . toUpperCase ( ) ;
if ( ! /^[A-Z][0-9]{9}$/ . test ( sanitized ) ) return false ;
return Array . from ( sanitized ) . reduce ( function ( sum , number , index ) {
if ( index === 0 ) {
var code = ALPHABET _CODES [ number ] ;
return code % 10 * 9 + Math . floor ( code / 10 ) ;
}
if ( index === 9 ) {
return ( 10 - sum % 10 - Number ( number ) ) % 10 === 0 ;
}
return sum + Number ( number ) * ( 9 - index ) ;
} , 0 ) ;
}
} ;
function isIdentityCard ( str , locale ) {
( 0 , _assertString . default ) ( str ) ;
if ( locale in validators ) {
return validators [ locale ] ( str ) ;
} else if ( locale === 'any' ) {
for ( var key in validators ) {
// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
// istanbul ignore else
if ( validators . hasOwnProperty ( key ) ) {
var validator = validators [ key ] ;
if ( validator ( str ) ) {
return true ;
}
}
}
return false ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 62 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIn ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _toString = _interopRequireDefault ( require ( "./util/toString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
function isIn ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
var i ;
if ( Object . prototype . toString . call ( options ) === '[object Array]' ) {
var array = [ ] ;
for ( i in options ) {
// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
// istanbul ignore else
if ( { } . hasOwnProperty . call ( options , i ) ) {
array [ i ] = ( 0 , _toString . default ) ( options [ i ] ) ;
}
}
return array . indexOf ( str ) >= 0 ;
} else if ( _typeof ( options ) === 'object' ) {
return options . hasOwnProperty ( str ) ;
} else if ( options && typeof options . indexOf === 'function' ) {
return options . indexOf ( str ) >= 0 ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/toString" : 111 } ] , 63 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isInt ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/ ;
var intLeadingZeroes = /^[-+]?[0-9]+$/ ;
function isInt ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = options || { } ; // Get the regex to use for testing, based on whether
// leading zeroes are allowed or not.
var regex = options . hasOwnProperty ( 'allow_leading_zeroes' ) && ! options . allow _leading _zeroes ? int : intLeadingZeroes ; // Check min/max/lt/gt
var minCheckPassed = ! options . hasOwnProperty ( 'min' ) || str >= options . min ;
var maxCheckPassed = ! options . hasOwnProperty ( 'max' ) || str <= options . max ;
var ltCheckPassed = ! options . hasOwnProperty ( 'lt' ) || str < options . lt ;
var gtCheckPassed = ! options . hasOwnProperty ( 'gt' ) || str > options . gt ;
return regex . test ( str ) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 64 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isJSON ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
var default _json _options = {
allow _primitives : false
} ;
function isJSON ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
try {
options = ( 0 , _merge . default ) ( options , default _json _options ) ;
var primitives = [ ] ;
if ( options . allow _primitives ) {
primitives = [ null , false , true ] ;
}
var obj = JSON . parse ( str ) ;
return primitives . includes ( obj ) || ! ! obj && _typeof ( obj ) === 'object' ;
} catch ( e ) {
/* ignore */
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 65 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isJWT ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isBase = _interopRequireDefault ( require ( "./isBase64" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isJWT ( str ) {
( 0 , _assertString . default ) ( str ) ;
var dotSplit = str . split ( '.' ) ;
var len = dotSplit . length ;
if ( len > 3 || len < 2 ) {
return false ;
}
return dotSplit . reduce ( function ( acc , currElem ) {
return acc && ( 0 , _isBase . default ) ( currElem , {
urlSafe : true
} ) ;
} , true ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isBase64" : 27 , "./util/assertString" : 107 } ] , 66 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isLatLong ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/ ;
var long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/ ;
var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i ;
var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i ;
var defaultLatLongOptions = {
checkDMS : false
} ;
function isLatLong ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , defaultLatLongOptions ) ;
if ( ! str . includes ( ',' ) ) return false ;
var pair = str . split ( ',' ) ;
if ( pair [ 0 ] . startsWith ( '(' ) && ! pair [ 1 ] . endsWith ( ')' ) || pair [ 1 ] . endsWith ( ')' ) && ! pair [ 0 ] . startsWith ( '(' ) ) return false ;
if ( options . checkDMS ) {
return latDMS . test ( pair [ 0 ] ) && longDMS . test ( pair [ 1 ] ) ;
}
return lat . test ( pair [ 0 ] ) && long . test ( pair [ 1 ] ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 67 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isLength ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
/* eslint-disable prefer-rest-params */
function isLength ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
var min ;
var max ;
if ( _typeof ( options ) === 'object' ) {
min = options . min || 0 ;
max = options . max ;
} else {
// backwards compatibility: isLength(str, min [, max])
min = arguments [ 1 ] || 0 ;
max = arguments [ 2 ] ;
}
var surrogatePairs = str . match ( /[\uD800-\uDBFF][\uDC00-\uDFFF]/g ) || [ ] ;
var len = str . length - surrogatePairs . length ;
return len >= min && ( typeof max === 'undefined' || len <= max ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 68 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isLocale ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var localeReg = /^[A-z]{2,4}([_-]([A-z]{4}|[\d]{3}))?([_-]([A-z]{2}|[\d]{3}))?$/ ;
function isLocale ( str ) {
( 0 , _assertString . default ) ( str ) ;
if ( str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA' ) {
return true ;
}
return localeReg . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 69 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isLowercase ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isLowercase ( str ) {
( 0 , _assertString . default ) ( str ) ;
return str === str . toLowerCase ( ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 70 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMACAddress ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var macAddress = /^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/ ;
var macAddressNoColons = /^([0-9a-fA-F]){12}$/ ;
var macAddressWithHyphen = /^([0-9a-fA-F][0-9a-fA-F]-){5}([0-9a-fA-F][0-9a-fA-F])$/ ;
var macAddressWithSpaces = /^([0-9a-fA-F][0-9a-fA-F]\s){5}([0-9a-fA-F][0-9a-fA-F])$/ ;
var macAddressWithDots = /^([0-9a-fA-F]{4}).([0-9a-fA-F]{4}).([0-9a-fA-F]{4})$/ ;
function isMACAddress ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
if ( options && options . no _colons ) {
return macAddressNoColons . test ( str ) ;
}
return macAddress . test ( str ) || macAddressWithHyphen . test ( str ) || macAddressWithSpaces . test ( str ) || macAddressWithDots . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 71 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMD5 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var md5 = /^[a-f0-9]{32}$/ ;
function isMD5 ( str ) {
( 0 , _assertString . default ) ( str ) ;
return md5 . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 72 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMagnetURI ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var magnetURI = /^magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32,40}&dn=.+&tr=.+$/i ;
function isMagnetURI ( url ) {
( 0 , _assertString . default ) ( url ) ;
return magnetURI . test ( url . trim ( ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 73 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMimeType ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ *
Checks if the provided string matches to a correct Media type format ( MIME type )
This function only checks is the string format follows the
etablished rules by the according RFC specifications .
This function supports 'charset' in textual media types
( https : //tools.ietf.org/html/rfc6657).
This function does not check against all the media types listed
by the IANA ( https : //www.iana.org/assignments/media-types/media-types.xhtml)
because of lightness purposes : it would require to include
all these MIME types in this librairy , which would weigh it
significantly . This kind of effort maybe is not worth for the use that
this function has in this entire librairy .
More informations in the RFC specifications :
- https : //tools.ietf.org/html/rfc2045
- https : //tools.ietf.org/html/rfc2046
- https : //tools.ietf.org/html/rfc7231#section-3.1.1.1
- https : //tools.ietf.org/html/rfc7231#section-3.1.1.5
* /
// Match simple MIME types
// NB :
// Subtype length must not exceed 100 characters.
// This rule does not comply to the RFC specs (what is the max length ?).
var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i ; // eslint-disable-line max-len
// Handle "charset" in "text/*"
var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i ; // eslint-disable-line max-len
// Handle "boundary" in "multipart/*"
var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i ; // eslint-disable-line max-len
function isMimeType ( str ) {
( 0 , _assertString . default ) ( str ) ;
return mimeTypeSimple . test ( str ) || mimeTypeText . test ( str ) || mimeTypeMultipart . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 74 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMobilePhone ;
exports . locales = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* eslint-disable max-len */
var phones = {
'am-AM' : /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/ ,
'ar-AE' : /^((\+?971)|0)?5[024568]\d{7}$/ ,
'ar-BH' : /^(\+?973)?(3|6)\d{7}$/ ,
'ar-DZ' : /^(\+?213|0)(5|6|7)\d{8}$/ ,
'ar-LB' : /^(\+?961)?((3|81)\d{6}|7\d{7})$/ ,
'ar-EG' : /^((\+?20)|0)?1[0125]\d{8}$/ ,
'ar-IQ' : /^(\+?964|0)?7[0-9]\d{8}$/ ,
'ar-JO' : /^(\+?962|0)?7[789]\d{7}$/ ,
'ar-KW' : /^(\+?965)[569]\d{7}$/ ,
'ar-LY' : /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/ ,
'ar-MA' : /^(?:(?:\+|00)212|0)[5-7]\d{8}$/ ,
'ar-SA' : /^(!?(\+?966)|0)?5\d{8}$/ ,
'ar-SY' : /^(!?(\+?963)|0)?9\d{8}$/ ,
'ar-TN' : /^(\+?216)?[2459]\d{7}$/ ,
'az-AZ' : /^(\+994|0)(5[015]|7[07]|99)\d{7}$/ ,
'bs-BA' : /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/ ,
'be-BY' : /^(\+?375)?(24|25|29|33|44)\d{7}$/ ,
'bg-BG' : /^(\+?359|0)?8[789]\d{7}$/ ,
'bn-BD' : /^(\+?880|0)1[13456789][0-9]{8}$/ ,
'ca-AD' : /^(\+376)?[346]\d{5}$/ ,
'cs-CZ' : /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/ ,
'da-DK' : /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/ ,
'de-DE' : /^(\+49)?0?[1|3]([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7}$/ ,
'de-AT' : /^(\+43|0)\d{1,4}\d{3,12}$/ ,
'de-CH' : /^(\+41|0)(7[5-9])\d{1,7}$/ ,
'de-LU' : /^(\+352)?((6\d1)\d{6})$/ ,
'el-GR' : /^(\+?30|0)?(69\d{8})$/ ,
'en-AU' : /^(\+?61|0)4\d{8}$/ ,
'en-GB' : /^(\+?44|0)7\d{9}$/ ,
'en-GG' : /^(\+?44|0)1481\d{6}$/ ,
'en-GH' : /^(\+233|0)(20|50|24|54|27|57|26|56|23|28)\d{7}$/ ,
'en-HK' : /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/ ,
'en-MO' : /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/ ,
'en-IE' : /^(\+?353|0)8[356789]\d{7}$/ ,
'en-IN' : /^(\+?91|0)?[6789]\d{9}$/ ,
'en-KE' : /^(\+?254|0)(7|1)\d{8}$/ ,
'en-MT' : /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/ ,
'en-MU' : /^(\+?230|0)?\d{8}$/ ,
'en-NG' : /^(\+?234|0)?[789]\d{9}$/ ,
'en-NZ' : /^(\+?64|0)[28]\d{7,9}$/ ,
'en-PK' : /^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$|^\d{11}$|^\d{4}-\d{7}$/ ,
'en-PH' : /^(09|\+639)\d{9}$/ ,
'en-RW' : /^(\+?250|0)?[7]\d{8}$/ ,
'en-SG' : /^(\+65)?[689]\d{7}$/ ,
'en-SL' : /^(?:0|94|\+94)?(7(0|1|2|5|6|7|8)( |-)?\d)\d{6}$/ ,
'en-TZ' : /^(\+?255|0)?[67]\d{8}$/ ,
'en-UG' : /^(\+?256|0)?[7]\d{8}$/ ,
'en-US' : /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/ ,
'en-ZA' : /^(\+?27|0)\d{9}$/ ,
'en-ZM' : /^(\+?26)?09[567]\d{7}$/ ,
'en-ZW' : /^(\+263)[0-9]{9}$/ ,
'es-AR' : /^\+?549(11|[2368]\d)\d{8}$/ ,
'es-BO' : /^(\+?591)?(6|7)\d{7}$/ ,
'es-CO' : /^(\+?57)?([1-8]{1}|3[0-9]{2})?[2-9]{1}\d{6}$/ ,
'es-CL' : /^(\+?56|0)[2-9]\d{1}\d{7}$/ ,
'es-CR' : /^(\+506)?[2-8]\d{7}$/ ,
'es-DO' : /^(\+?1)?8[024]9\d{7}$/ ,
'es-HN' : /^(\+?504)?[9|8]\d{7}$/ ,
'es-EC' : /^(\+?593|0)([2-7]|9[2-9])\d{7}$/ ,
'es-ES' : /^(\+?34)?[6|7]\d{8}$/ ,
'es-PE' : /^(\+?51)?9\d{8}$/ ,
'es-MX' : /^(\+?52)?(1|01)?\d{10,11}$/ ,
'es-PA' : /^(\+?507)\d{7,8}$/ ,
'es-PY' : /^(\+?595|0)9[9876]\d{7}$/ ,
'es-UY' : /^(\+598|0)9[1-9][\d]{6}$/ ,
'et-EE' : /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/ ,
'fa-IR' : /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/ ,
'fi-FI' : /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/ ,
'fj-FJ' : /^(\+?679)?\s?\d{3}\s?\d{4}$/ ,
'fo-FO' : /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/ ,
'fr-FR' : /^(\+?33|0)[67]\d{8}$/ ,
'fr-GF' : /^(\+?594|0|00594)[67]\d{8}$/ ,
'fr-GP' : /^(\+?590|0|00590)[67]\d{8}$/ ,
'fr-MQ' : /^(\+?596|0|00596)[67]\d{8}$/ ,
'fr-RE' : /^(\+?262|0|00262)[67]\d{8}$/ ,
'he-IL' : /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/ ,
'hu-HU' : /^(\+?36)(20|30|70)\d{7}$/ ,
'id-ID' : /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/ ,
'it-IT' : /^(\+?39)?\s?3\d{2} ?\d{6,7}$/ ,
'it-SM' : /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/ ,
'ja-JP' : /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/ ,
'ka-GE' : /^(\+?995)?(5|79)\d{7}$/ ,
'kk-KZ' : /^(\+?7|8)?7\d{9}$/ ,
'kl-GL' : /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/ ,
'ko-KR' : /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/ ,
'lt-LT' : /^(\+370|8)\d{8}$/ ,
'ms-MY' : /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/ ,
'nb-NO' : /^(\+?47)?[49]\d{7}$/ ,
'ne-NP' : /^(\+?977)?9[78]\d{8}$/ ,
'nl-BE' : /^(\+?32|0)4?\d{8}$/ ,
'nl-NL' : /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/ ,
'nn-NO' : /^(\+?47)?[49]\d{7}$/ ,
'pl-PL' : /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/ ,
'pt-BR' : /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/ ,
'pt-PT' : /^(\+?351)?9[1236]\d{7}$/ ,
'ro-RO' : /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/ ,
'ru-RU' : /^(\+?7|8)?9\d{9}$/ ,
'sl-SI' : /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/ ,
'sk-SK' : /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/ ,
'sq-AL' : /^(\+355|0)6[789]\d{6}$/ ,
'sr-RS' : /^(\+3816|06)[- \d]{5,9}$/ ,
'sv-SE' : /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/ ,
'th-TH' : /^(\+66|66|0)\d{9}$/ ,
'tr-TR' : /^(\+?90|0)?5\d{9}$/ ,
'uk-UA' : /^(\+?38|8)?0\d{9}$/ ,
'uz-UZ' : /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/ ,
'vi-VN' : /^(\+?84|0)((3([2-9]))|(5([2689]))|(7([0|6-9]))|(8([1-6|89]))|(9([0-9])))([0-9]{7})$/ ,
'zh-CN' : /^((\+|00)86)?1([3568][0-9]|4[579]|6[67]|7[01235678]|9[012356789])[0-9]{8}$/ ,
'zh-TW' : /^(\+?886\-?|0)?9\d{8}$/
} ;
/* eslint-enable max-len */
// aliases
phones [ 'en-CA' ] = phones [ 'en-US' ] ;
phones [ 'fr-CA' ] = phones [ 'en-CA' ] ;
phones [ 'fr-BE' ] = phones [ 'nl-BE' ] ;
phones [ 'zh-HK' ] = phones [ 'en-HK' ] ;
phones [ 'zh-MO' ] = phones [ 'en-MO' ] ;
phones [ 'ga-IE' ] = phones [ 'en-IE' ] ;
function isMobilePhone ( str , locale , options ) {
( 0 , _assertString . default ) ( str ) ;
if ( options && options . strictMode && ! str . startsWith ( '+' ) ) {
return false ;
}
if ( Array . isArray ( locale ) ) {
return locale . some ( function ( key ) {
// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
// istanbul ignore else
if ( phones . hasOwnProperty ( key ) ) {
var phone = phones [ key ] ;
if ( phone . test ( str ) ) {
return true ;
}
}
return false ;
} ) ;
} else if ( locale in phones ) {
return phones [ locale ] . test ( str ) ; // alias falsey locale as 'any'
} else if ( ! locale || locale === 'any' ) {
for ( var key in phones ) {
// istanbul ignore else
if ( phones . hasOwnProperty ( key ) ) {
var phone = phones [ key ] ;
if ( phone . test ( str ) ) {
return true ;
}
}
}
return false ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
var locales = Object . keys ( phones ) ;
exports . locales = locales ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 75 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMongoId ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isHexadecimal = _interopRequireDefault ( require ( "./isHexadecimal" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isMongoId ( str ) {
( 0 , _assertString . default ) ( str ) ;
return ( 0 , _isHexadecimal . default ) ( str ) && str . length === 24 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isHexadecimal" : 49 , "./util/assertString" : 107 } ] , 76 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isMultibyte ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* eslint-disable no-control-regex */
var multibyte = /[^\x00-\x7F]/ ;
/* eslint-enable no-control-regex */
function isMultibyte ( str ) {
( 0 , _assertString . default ) ( str ) ;
return multibyte . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 77 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isNumeric ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _alpha = require ( "./alpha" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var numericNoSymbols = /^[0-9]+$/ ;
function isNumeric ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
if ( options && options . no _symbols ) {
return numericNoSymbols . test ( str ) ;
}
return new RegExp ( "^[+-]?([0-9]*[" . concat ( ( options || { } ) . locale ? _alpha . decimal [ options . locale ] : '.' , "])?[0-9]+$" ) ) . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./alpha" : 15 , "./util/assertString" : 107 } ] , 78 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isOctal ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var octal = /^(0o)?[0-7]+$/i ;
function isOctal ( str ) {
( 0 , _assertString . default ) ( str ) ;
return octal . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 79 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isPassportNumber ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ * *
* Reference :
* https : //en.wikipedia.org/ -- Wikipedia
* https : //docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number
* https : //countrycode.org/ -- Country Codes
* /
var passportRegexByCountryCode = {
AM : /^[A-Z]{2}\d{7}$/ ,
// ARMENIA
AR : /^[A-Z]{3}\d{6}$/ ,
// ARGENTINA
AT : /^[A-Z]\d{7}$/ ,
// AUSTRIA
AU : /^[A-Z]\d{7}$/ ,
// AUSTRALIA
BE : /^[A-Z]{2}\d{6}$/ ,
// BELGIUM
BG : /^\d{9}$/ ,
// BULGARIA
BY : /^[A-Z]{2}\d{7}$/ ,
// BELARUS
CA : /^[A-Z]{2}\d{6}$/ ,
// CANADA
CH : /^[A-Z]\d{7}$/ ,
// SWITZERLAND
CN : /^[GE]\d{8}$/ ,
// CHINA [G=Ordinary, E=Electronic] followed by 8-digits
CY : /^[A-Z](\d{6}|\d{8})$/ ,
// CYPRUS
CZ : /^\d{8}$/ ,
// CZECH REPUBLIC
DE : /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/ ,
// GERMANY
DK : /^\d{9}$/ ,
// DENMARK
DZ : /^\d{9}$/ ,
// ALGERIA
EE : /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/ ,
// ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits
ES : /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/ ,
// SPAIN
FI : /^[A-Z]{2}\d{7}$/ ,
// FINLAND
FR : /^\d{2}[A-Z]{2}\d{5}$/ ,
// FRANCE
GB : /^\d{9}$/ ,
// UNITED KINGDOM
GR : /^[A-Z]{2}\d{7}$/ ,
// GREECE
HR : /^\d{9}$/ ,
// CROATIA
HU : /^[A-Z]{2}(\d{6}|\d{7})$/ ,
// HUNGARY
IE : /^[A-Z0-9]{2}\d{7}$/ ,
// IRELAND
IN : /^[A-Z]{1}-?\d{7}$/ ,
// INDIA
IS : /^(A)\d{7}$/ ,
// ICELAND
IT : /^[A-Z0-9]{2}\d{7}$/ ,
// ITALY
JP : /^[A-Z]{2}\d{7}$/ ,
// JAPAN
KR : /^[MS]\d{8}$/ ,
// SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]
LT : /^[A-Z0-9]{8}$/ ,
// LITHUANIA
LU : /^[A-Z0-9]{8}$/ ,
// LUXEMBURG
LV : /^[A-Z0-9]{2}\d{7}$/ ,
// LATVIA
MT : /^\d{7}$/ ,
// MALTA
NL : /^[A-Z]{2}[A-Z0-9]{6}\d$/ ,
// NETHERLANDS
PO : /^[A-Z]{2}\d{7}$/ ,
// POLAND
PT : /^[A-Z]\d{6}$/ ,
// PORTUGAL
RO : /^\d{8,9}$/ ,
// ROMANIA
RU : /^\d{2}\d{2}\d{6}$/ ,
// RUSSIAN FEDERATION
SE : /^\d{8}$/ ,
// SWEDEN
SL : /^(P)[A-Z]\d{7}$/ ,
// SLOVANIA
SK : /^[0-9A-Z]\d{7}$/ ,
// SLOVAKIA
TR : /^[A-Z]\d{8}$/ ,
// TURKEY
UA : /^[A-Z]{2}\d{6}$/ ,
// UKRAINE
US : /^\d{9}$/ // UNITED STATES
} ;
/ * *
* Check if str is a valid passport number
* relative to provided ISO Country Code .
*
* @ param { string } str
* @ param { string } countryCode
* @ return { boolean }
* /
function isPassportNumber ( str , countryCode ) {
( 0 , _assertString . default ) ( str ) ;
/** Remove All Whitespaces, Convert to UPPERCASE */
var normalizedStr = str . replace ( /\s/g , '' ) . toUpperCase ( ) ;
return countryCode . toUpperCase ( ) in passportRegexByCountryCode && passportRegexByCountryCode [ countryCode ] . test ( normalizedStr ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 80 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isPort ;
var _isInt = _interopRequireDefault ( require ( "./isInt" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isPort ( str ) {
return ( 0 , _isInt . default ) ( str , {
min : 0 ,
max : 65535
} ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isInt" : 63 } ] , 81 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isPostalCode ;
exports . locales = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// common patterns
var threeDigit = /^\d{3}$/ ;
var fourDigit = /^\d{4}$/ ;
var fiveDigit = /^\d{5}$/ ;
var sixDigit = /^\d{6}$/ ;
var patterns = {
AD : /^AD\d{3}$/ ,
AT : fourDigit ,
AU : fourDigit ,
AZ : /^AZ\d{4}$/ ,
BE : fourDigit ,
BG : fourDigit ,
BR : /^\d{5}-\d{3}$/ ,
BY : /2[1-4]{1}\d{4}$/ ,
CA : /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i ,
CH : fourDigit ,
CN : /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/ ,
CZ : /^\d{3}\s?\d{2}$/ ,
DE : fiveDigit ,
DK : fourDigit ,
DO : fiveDigit ,
DZ : fiveDigit ,
EE : fiveDigit ,
ES : /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/ ,
FI : fiveDigit ,
FR : /^\d{2}\s?\d{3}$/ ,
GB : /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i ,
GR : /^\d{3}\s?\d{2}$/ ,
HR : /^([1-5]\d{4}$)/ ,
HT : /^HT\d{4}$/ ,
HU : fourDigit ,
ID : fiveDigit ,
IE : /^(?!.*(?:o))[A-z]\d[\dw]\s\w{4}$/i ,
IL : /^(\d{5}|\d{7})$/ ,
IN : /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/ ,
IR : /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/ ,
IS : threeDigit ,
IT : fiveDigit ,
JP : /^\d{3}\-\d{4}$/ ,
KE : fiveDigit ,
LI : /^(948[5-9]|949[0-7])$/ ,
LT : /^LT\-\d{5}$/ ,
LU : fourDigit ,
LV : /^LV\-\d{4}$/ ,
MX : fiveDigit ,
MT : /^[A-Za-z]{3}\s{0,1}\d{4}$/ ,
MY : fiveDigit ,
NL : /^\d{4}\s?[a-z]{2}$/i ,
NO : fourDigit ,
NP : /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i ,
NZ : fourDigit ,
PL : /^\d{2}\-\d{3}$/ ,
PR : /^00[679]\d{2}([ -]\d{4})?$/ ,
PT : /^\d{4}\-\d{3}?$/ ,
RO : sixDigit ,
RU : sixDigit ,
SA : fiveDigit ,
SE : /^[1-9]\d{2}\s?\d{2}$/ ,
SG : sixDigit ,
SI : fourDigit ,
SK : /^\d{3}\s?\d{2}$/ ,
TH : fiveDigit ,
TN : fourDigit ,
TW : /^\d{3}(\d{2})?$/ ,
UA : fiveDigit ,
US : /^\d{5}(-\d{4})?$/ ,
ZA : fourDigit ,
ZM : fiveDigit
} ;
var locales = Object . keys ( patterns ) ;
exports . locales = locales ;
function isPostalCode ( str , locale ) {
( 0 , _assertString . default ) ( str ) ;
if ( locale in patterns ) {
return patterns [ locale ] . test ( str ) ;
} else if ( locale === 'any' ) {
for ( var key in patterns ) {
// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
// istanbul ignore else
if ( patterns . hasOwnProperty ( key ) ) {
var pattern = patterns [ key ] ;
if ( pattern . test ( str ) ) {
return true ;
}
}
}
return false ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 82 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isRFC3339 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */
var dateFullYear = /[0-9]{4}/ ;
var dateMonth = /(0[1-9]|1[0-2])/ ;
var dateMDay = /([12]\d|0[1-9]|3[01])/ ;
var timeHour = /([01][0-9]|2[0-3])/ ;
var timeMinute = /[0-5][0-9]/ ;
var timeSecond = /([0-5][0-9]|60)/ ;
var timeSecFrac = /(\.[0-9]+)?/ ;
var timeNumOffset = new RegExp ( "[-+]" . concat ( timeHour . source , ":" ) . concat ( timeMinute . source ) ) ;
var timeOffset = new RegExp ( "([zZ]|" . concat ( timeNumOffset . source , ")" ) ) ;
var partialTime = new RegExp ( "" . concat ( timeHour . source , ":" ) . concat ( timeMinute . source , ":" ) . concat ( timeSecond . source ) . concat ( timeSecFrac . source ) ) ;
var fullDate = new RegExp ( "" . concat ( dateFullYear . source , "-" ) . concat ( dateMonth . source , "-" ) . concat ( dateMDay . source ) ) ;
var fullTime = new RegExp ( "" . concat ( partialTime . source ) . concat ( timeOffset . source ) ) ;
var rfc3339 = new RegExp ( "" . concat ( fullDate . source , "[ tT]" ) . concat ( fullTime . source ) ) ;
function isRFC3339 ( str ) {
( 0 , _assertString . default ) ( str ) ;
return rfc3339 . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 83 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isRgbColor ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/ ;
var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/ ;
var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/ ;
var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/ ;
function isRgbColor ( str ) {
var includePercentValues = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : true ;
( 0 , _assertString . default ) ( str ) ;
if ( ! includePercentValues ) {
return rgbColor . test ( str ) || rgbaColor . test ( str ) ;
}
return rgbColor . test ( str ) || rgbaColor . test ( str ) || rgbColorPercent . test ( str ) || rgbaColorPercent . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 84 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isSemVer ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _multilineRegex = _interopRequireDefault ( require ( "./util/multilineRegex" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ * *
* Regular Expression to match
* semantic versioning ( SemVer )
* built from multi - line , multi - parts regexp
* Reference : https : //semver.org/
* /
var semanticVersioningRegex = ( 0 , _multilineRegex . default ) ( [ '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)' , '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))' , '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$' ] , 'i' ) ;
function isSemVer ( str ) {
( 0 , _assertString . default ) ( str ) ;
return semanticVersioningRegex . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/multilineRegex" : 110 } ] , 85 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isSlug ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})([a-z0-9-\\]{1,})[^\s]*[^-_\s]$/ ;
function isSlug ( str ) {
( 0 , _assertString . default ) ( str ) ;
return charsetRegex . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 86 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isStrongPassword ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var upperCaseRegex = /^[A-Z]$/ ;
var lowerCaseRegex = /^[a-z]$/ ;
var numberRegex = /^[0-9]$/ ;
var symbolRegex = /^[-#!$%^&*()_+|~=`{}\[\]:";'<>?,.\/ ]$/ ;
var defaultOptions = {
minLength : 8 ,
minLowercase : 1 ,
minUppercase : 1 ,
minNumbers : 1 ,
minSymbols : 1 ,
returnScore : false ,
pointsPerUnique : 1 ,
pointsPerRepeat : 0.5 ,
pointsForContainingLower : 10 ,
pointsForContainingUpper : 10 ,
pointsForContainingNumber : 10 ,
pointsForContainingSymbol : 10
} ;
/ * C o u n t s n u m b e r o f o c c u r r e n c e s o f e a c h c h a r i n a s t r i n g
* could be moved to util / ?
* /
function countChars ( str ) {
var result = { } ;
Array . from ( str ) . forEach ( function ( char ) {
var curVal = result [ char ] ;
if ( curVal ) {
result [ char ] += 1 ;
} else {
result [ char ] = 1 ;
}
} ) ;
return result ;
}
/* Return information about a password */
function analyzePassword ( password ) {
var charMap = countChars ( password ) ;
var analysis = {
length : password . length ,
uniqueChars : Object . keys ( charMap ) . length ,
uppercaseCount : 0 ,
lowercaseCount : 0 ,
numberCount : 0 ,
symbolCount : 0
} ;
Object . keys ( charMap ) . forEach ( function ( char ) {
if ( upperCaseRegex . test ( char ) ) {
analysis . uppercaseCount += charMap [ char ] ;
} else if ( lowerCaseRegex . test ( char ) ) {
analysis . lowercaseCount += charMap [ char ] ;
} else if ( numberRegex . test ( char ) ) {
analysis . numberCount += charMap [ char ] ;
} else if ( symbolRegex . test ( char ) ) {
analysis . symbolCount += charMap [ char ] ;
}
} ) ;
return analysis ;
}
function scorePassword ( analysis , scoringOptions ) {
var points = 0 ;
points += analysis . uniqueChars * scoringOptions . pointsPerUnique ;
points += ( analysis . length - analysis . uniqueChars ) * scoringOptions . pointsPerRepeat ;
if ( analysis . lowercaseCount > 0 ) {
points += scoringOptions . pointsForContainingLower ;
}
if ( analysis . uppercaseCount > 0 ) {
points += scoringOptions . pointsForContainingUpper ;
}
if ( analysis . numberCount > 0 ) {
points += scoringOptions . pointsForContainingNumber ;
}
if ( analysis . symbolCount > 0 ) {
points += scoringOptions . pointsForContainingSymbol ;
}
return points ;
}
function isStrongPassword ( str ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : null ;
( 0 , _assertString . default ) ( str ) ;
var analysis = analyzePassword ( str ) ;
options = ( 0 , _merge . default ) ( options || { } , defaultOptions ) ;
if ( options . returnScore ) {
return scorePassword ( analysis , options ) ;
}
return analysis . length >= options . minLength && analysis . lowercaseCount >= options . minLowercase && analysis . uppercaseCount >= options . minUppercase && analysis . numberCount >= options . minNumbers && analysis . symbolCount >= options . minSymbols ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 , "./util/merge" : 109 } ] , 87 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isSurrogatePair ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/ ;
function isSurrogatePair ( str ) {
( 0 , _assertString . default ) ( str ) ;
return surrogatePair . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 88 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isTaxID ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var algorithms = _interopRequireWildcard ( require ( "./util/algorithms" ) ) ;
var _isDate = _interopRequireDefault ( require ( "./isDate" ) ) ;
function _getRequireWildcardCache ( ) { if ( typeof WeakMap !== "function" ) return null ; var cache = new WeakMap ( ) ; _getRequireWildcardCache = function _getRequireWildcardCache ( ) { return cache ; } ; return cache ; }
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } if ( obj === null || _typeof ( obj ) !== "object" && typeof obj !== "function" ) { return { default : obj } ; } var cache = _getRequireWildcardCache ( ) ; if ( cache && cache . has ( obj ) ) { return cache . get ( obj ) ; } var newObj = { } ; var hasPropertyDescriptor = Object . defineProperty && Object . getOwnPropertyDescriptor ; for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = hasPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : null ; if ( desc && ( desc . get || desc . set ) ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } newObj . default = obj ; if ( cache ) { cache . set ( obj , newObj ) ; } return newObj ; }
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/ . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
function _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && Symbol . iterator in Object ( iter ) ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; }
function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; }
/ * *
* TIN Validation
* Validates Tax Identification Numbers ( TINs ) from the US , EU member states and the United Kingdom .
*
* EU - UK :
* National TIN validity is calculated using public algorithms as made available by DG TAXUD .
*
* See ` https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx ` for more information .
*
* US :
* An Employer Identification Number ( EIN ) , also known as a Federal Tax Identification Number ,
* is used to identify a business entity .
*
* NOTES :
* - Prefix 47 is being reserved for future use
* - Prefixes 26 , 27 , 45 , 46 and 47 were previously assigned by the Philadelphia campus .
*
* See ` http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes `
* for more information .
* /
// Locale functions
/ *
* bg - BG validation function
* ( Edinen graždanski nomer ( EGN / ЕГН ) , persons only )
* Checks if birth date ( first six digits ) is valid and calculates check ( last ) digit
* /
function bgBgCheck ( tin ) {
// Extract full year, normalize month and check birth date validity
var century _year = tin . slice ( 0 , 2 ) ;
var month = parseInt ( tin . slice ( 2 , 4 ) , 10 ) ;
if ( month > 40 ) {
month -= 40 ;
century _year = "20" . concat ( century _year ) ;
} else if ( month > 20 ) {
month -= 20 ;
century _year = "18" . concat ( century _year ) ;
} else {
century _year = "19" . concat ( century _year ) ;
}
if ( month < 10 ) {
month = "0" . concat ( month ) ;
}
var date = "" . concat ( century _year , "/" ) . concat ( month , "/" ) . concat ( tin . slice ( 4 , 6 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ; // Calculate checksum by multiplying digits with fixed values
var multip _lookup = [ 2 , 4 , 8 , 5 , 10 , 9 , 7 , 3 , 6 ] ;
var checksum = 0 ;
for ( var i = 0 ; i < multip _lookup . length ; i ++ ) {
checksum += digits [ i ] * multip _lookup [ i ] ;
}
checksum = checksum % 11 === 10 ? 0 : checksum % 11 ;
return checksum === digits [ 9 ] ;
}
/ *
* cs - CZ validation function
* ( Rodné číslo ( RČ ) , persons only )
* Checks if birth date ( first six digits ) is valid and divisibility by 11
* Material not in DG TAXUD document sourced from :
* - ` https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm `
* - ` https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx `
* /
function csCzCheck ( tin ) {
tin = tin . replace ( /\W/ , '' ) ; // Extract full year from TIN length
var full _year = parseInt ( tin . slice ( 0 , 2 ) , 10 ) ;
if ( tin . length === 10 ) {
if ( full _year < 54 ) {
full _year = "20" . concat ( full _year ) ;
} else {
full _year = "19" . concat ( full _year ) ;
}
} else {
if ( tin . slice ( 6 ) === '000' ) {
return false ;
} // Three-zero serial not assigned before 1954
if ( full _year < 54 ) {
full _year = "19" . concat ( full _year ) ;
} else {
return false ; // No 18XX years seen in any of the resources
}
} // Add missing zero if needed
if ( full _year . length === 3 ) {
full _year = [ full _year . slice ( 0 , 2 ) , '0' , full _year . slice ( 2 ) ] . join ( '' ) ;
} // Extract month from TIN and normalize
var month = parseInt ( tin . slice ( 2 , 4 ) , 10 ) ;
if ( month > 50 ) {
month -= 50 ;
}
if ( month > 20 ) {
// Month-plus-twenty was only introduced in 2004
if ( parseInt ( full _year , 10 ) < 2004 ) {
return false ;
}
month -= 20 ;
}
if ( month < 10 ) {
month = "0" . concat ( month ) ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( month , "/" ) . concat ( tin . slice ( 4 , 6 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Verify divisibility by 11
if ( tin . length === 10 ) {
if ( parseInt ( tin , 10 ) % 11 !== 0 ) {
// Some numbers up to and including 1985 are still valid if
// check (last) digit equals 0 and modulo of first 9 digits equals 10
var checkdigit = parseInt ( tin . slice ( 0 , 9 ) , 10 ) % 11 ;
if ( parseInt ( full _year , 10 ) < 1986 && checkdigit === 10 ) {
if ( parseInt ( tin . slice ( 9 ) , 10 ) !== 0 ) {
return false ;
}
} else {
return false ;
}
}
}
return true ;
}
/ *
* de - AT validation function
* ( Abgabenkontonummer , persons / entities )
* Verify TIN validity by calling luhnCheck ( )
* /
function deAtCheck ( tin ) {
return algorithms . luhnCheck ( tin ) ;
}
/ *
* de - DE validation function
* ( Steueridentifikationsnummer ( Steuer - IdNr . ) , persons only )
* Tests for single duplicate / triplicate value , then calculates ISO 7064 check ( last ) digit
* Partial implementation of spec ( same result with both algorithms always )
* /
function deDeCheck ( tin ) {
// Split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ; // Fill array with strings of number positions
var occurences = [ ] ;
for ( var i = 0 ; i < digits . length - 1 ; i ++ ) {
occurences . push ( '' ) ;
for ( var j = 0 ; j < digits . length - 1 ; j ++ ) {
if ( digits [ i ] === digits [ j ] ) {
occurences [ i ] += j ;
}
}
} // Remove digits with one occurence and test for only one duplicate/triplicate
occurences = occurences . filter ( function ( a ) {
return a . length > 1 ;
} ) ;
if ( occurences . length !== 2 && occurences . length !== 3 ) {
return false ;
} // In case of triplicate value only two digits are allowed next to each other
if ( occurences [ 0 ] . length === 3 ) {
var trip _locations = occurences [ 0 ] . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var recurrent = 0 ; // Amount of neighbour occurences
for ( var _i = 0 ; _i < trip _locations . length - 1 ; _i ++ ) {
if ( trip _locations [ _i ] + 1 === trip _locations [ _i + 1 ] ) {
recurrent += 1 ;
}
}
if ( recurrent === 2 ) {
return false ;
}
}
return algorithms . iso7064Check ( tin ) ;
}
/ *
* dk - DK validation function
* ( CPR - nummer ( personnummer ) , persons only )
* Checks if birth date ( first six digits ) is valid and assigned to century ( seventh ) digit ,
* and calculates check ( last ) digit
* /
function dkDkCheck ( tin ) {
tin = tin . replace ( /\W/ , '' ) ; // Extract year, check if valid for given century digit and add century
var year = parseInt ( tin . slice ( 4 , 6 ) , 10 ) ;
var century _digit = tin . slice ( 6 , 7 ) ;
switch ( century _digit ) {
case '0' :
case '1' :
case '2' :
case '3' :
year = "19" . concat ( year ) ;
break ;
case '4' :
case '9' :
if ( year < 37 ) {
year = "20" . concat ( year ) ;
} else {
year = "19" . concat ( year ) ;
}
break ;
default :
if ( year < 37 ) {
year = "20" . concat ( year ) ;
} else if ( year > 58 ) {
year = "18" . concat ( year ) ;
} else {
return false ;
}
break ;
} // Add missing zero if needed
if ( year . length === 3 ) {
year = [ year . slice ( 0 , 2 ) , '0' , year . slice ( 2 ) ] . join ( '' ) ;
} // Check date validity
var date = "" . concat ( year , "/" ) . concat ( tin . slice ( 2 , 4 ) , "/" ) . concat ( tin . slice ( 0 , 2 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var checksum = 0 ;
var weight = 4 ; // Multiply by weight and add to checksum
for ( var i = 0 ; i < 9 ; i ++ ) {
checksum += digits [ i ] * weight ;
weight -= 1 ;
if ( weight === 1 ) {
weight = 7 ;
}
}
checksum %= 11 ;
if ( checksum === 1 ) {
return false ;
}
return checksum === 0 ? digits [ 9 ] === 0 : digits [ 9 ] === 11 - checksum ;
}
/ *
* el - CY validation function
* ( Arithmos Forologikou Mitroou ( AFM / ΑΦΜ ) , persons only )
* Verify TIN validity by calculating ASCII value of check ( last ) character
* /
function elCyCheck ( tin ) {
// split digits into an array for further processing
var digits = tin . slice ( 0 , 8 ) . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var checksum = 0 ; // add digits in even places
for ( var i = 1 ; i < digits . length ; i += 2 ) {
checksum += digits [ i ] ;
} // add digits in odd places
for ( var _i2 = 0 ; _i2 < digits . length ; _i2 += 2 ) {
if ( digits [ _i2 ] < 2 ) {
checksum += 1 - digits [ _i2 ] ;
} else {
checksum += 2 * ( digits [ _i2 ] - 2 ) + 5 ;
if ( digits [ _i2 ] > 4 ) {
checksum += 2 ;
}
}
}
return String . fromCharCode ( checksum % 26 + 65 ) === tin . charAt ( 8 ) ;
}
/ *
* el - GR validation function
* ( Arithmos Forologikou Mitroou ( AFM / ΑΦΜ ) , persons / entities )
* Verify TIN validity by calculating check ( last ) digit
* Algorithm not in DG TAXUD document - sourced from :
* - ` http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85 `
* /
function elGrCheck ( tin ) {
// split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var checksum = 0 ;
for ( var i = 0 ; i < 8 ; i ++ ) {
checksum += digits [ i ] * Math . pow ( 2 , 8 - i ) ;
}
return checksum % 11 === digits [ 8 ] ;
}
/ *
* en - GB validation function ( should go here if needed )
* ( National Insurance Number ( NINO ) or Unique Taxpayer Reference ( UTR ) ,
* persons / entities respectively )
* /
/ *
* en - IE validation function
* ( Personal Public Service Number ( PPS No ) , persons only )
* Verify TIN validity by calculating check ( second to last ) character
* /
function enIeCheck ( tin ) {
var checksum = algorithms . reverseMultiplyAndSum ( tin . split ( '' ) . slice ( 0 , 7 ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) , 8 ) ;
if ( tin . length === 9 && tin [ 8 ] !== 'W' ) {
checksum += ( tin [ 8 ] . charCodeAt ( 0 ) - 64 ) * 9 ;
}
checksum %= 23 ;
if ( checksum === 0 ) {
return tin [ 7 ] . toUpperCase ( ) === 'W' ;
}
return tin [ 7 ] . toUpperCase ( ) === String . fromCharCode ( 64 + checksum ) ;
} // Valid US IRS campus prefixes
var enUsCampusPrefix = {
andover : [ '10' , '12' ] ,
atlanta : [ '60' , '67' ] ,
austin : [ '50' , '53' ] ,
brookhaven : [ '01' , '02' , '03' , '04' , '05' , '06' , '11' , '13' , '14' , '16' , '21' , '22' , '23' , '25' , '34' , '51' , '52' , '54' , '55' , '56' , '57' , '58' , '59' , '65' ] ,
cincinnati : [ '30' , '32' , '35' , '36' , '37' , '38' , '61' ] ,
fresno : [ '15' , '24' ] ,
internet : [ '20' , '26' , '27' , '45' , '46' , '47' ] ,
kansas : [ '40' , '44' ] ,
memphis : [ '94' , '95' ] ,
ogden : [ '80' , '90' ] ,
philadelphia : [ '33' , '39' , '41' , '42' , '43' , '46' , '48' , '62' , '63' , '64' , '66' , '68' , '71' , '72' , '73' , '74' , '75' , '76' , '77' , '81' , '82' , '83' , '84' , '85' , '86' , '87' , '88' , '91' , '92' , '93' , '98' , '99' ] ,
sba : [ '31' ]
} ; // Return an array of all US IRS campus prefixes
function enUsGetPrefixes ( ) {
var prefixes = [ ] ;
for ( var location in enUsCampusPrefix ) {
// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
// istanbul ignore else
if ( enUsCampusPrefix . hasOwnProperty ( location ) ) {
prefixes . push . apply ( prefixes , _toConsumableArray ( enUsCampusPrefix [ location ] ) ) ;
}
}
return prefixes ;
}
/ *
* en - US validation function
* Verify that the TIN starts with a valid IRS campus prefix
* /
function enUsCheck ( tin ) {
return enUsGetPrefixes ( ) . indexOf ( tin . substr ( 0 , 2 ) ) !== - 1 ;
}
/ *
* es - ES validation function
* ( Documento Nacional de Identidad ( DNI )
* or Número de Identificación de Extranjero ( NIE ) , persons only )
* Verify TIN validity by calculating check ( last ) character
* /
function esEsCheck ( tin ) {
// Split characters into an array for further processing
var chars = tin . toUpperCase ( ) . split ( '' ) ; // Replace initial letter if needed
if ( isNaN ( parseInt ( chars [ 0 ] , 10 ) ) && chars . length > 1 ) {
var lead _replace = 0 ;
switch ( chars [ 0 ] ) {
case 'Y' :
lead _replace = 1 ;
break ;
case 'Z' :
lead _replace = 2 ;
break ;
default :
}
chars . splice ( 0 , 1 , lead _replace ) ; // Fill with zeros if smaller than proper
} else {
while ( chars . length < 9 ) {
chars . unshift ( 0 ) ;
}
} // Calculate checksum and check according to lookup
var lookup = [ 'T' , 'R' , 'W' , 'A' , 'G' , 'M' , 'Y' , 'F' , 'P' , 'D' , 'X' , 'B' , 'N' , 'J' , 'Z' , 'S' , 'Q' , 'V' , 'H' , 'L' , 'C' , 'K' , 'E' ] ;
chars = chars . join ( '' ) ;
var checksum = parseInt ( chars . slice ( 0 , 8 ) , 10 ) % 23 ;
return chars [ 8 ] === lookup [ checksum ] ;
}
/ *
* et - EE validation function
* ( Isikukood ( IK ) , persons only )
* Checks if birth date ( century digit and six following ) is valid and calculates check ( last ) digit
* Material not in DG TAXUD document sourced from :
* - ` https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf `
* /
function etEeCheck ( tin ) {
// Extract year and add century
var full _year = tin . slice ( 1 , 3 ) ;
var century _digit = tin . slice ( 0 , 1 ) ;
switch ( century _digit ) {
case '1' :
case '2' :
full _year = "18" . concat ( full _year ) ;
break ;
case '3' :
case '4' :
full _year = "19" . concat ( full _year ) ;
break ;
default :
full _year = "20" . concat ( full _year ) ;
break ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( tin . slice ( 3 , 5 ) , "/" ) . concat ( tin . slice ( 5 , 7 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var checksum = 0 ;
var weight = 1 ; // Multiply by weight and add to checksum
for ( var i = 0 ; i < 10 ; i ++ ) {
checksum += digits [ i ] * weight ;
weight += 1 ;
if ( weight === 10 ) {
weight = 1 ;
}
} // Do again if modulo 11 of checksum is 10
if ( checksum % 11 === 10 ) {
checksum = 0 ;
weight = 3 ;
for ( var _i3 = 0 ; _i3 < 10 ; _i3 ++ ) {
checksum += digits [ _i3 ] * weight ;
weight += 1 ;
if ( weight === 10 ) {
weight = 1 ;
}
}
if ( checksum % 11 === 10 ) {
return digits [ 10 ] === 0 ;
}
}
return checksum % 11 === digits [ 10 ] ;
}
/ *
* fi - FI validation function
* ( Henkilötunnus ( HETU ) , persons only )
* Checks if birth date ( first six digits plus century symbol ) is valid
* and calculates check ( last ) digit
* /
function fiFiCheck ( tin ) {
// Extract year and add century
var full _year = tin . slice ( 4 , 6 ) ;
var century _symbol = tin . slice ( 6 , 7 ) ;
switch ( century _symbol ) {
case '+' :
full _year = "18" . concat ( full _year ) ;
break ;
case '-' :
full _year = "19" . concat ( full _year ) ;
break ;
default :
full _year = "20" . concat ( full _year ) ;
break ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( tin . slice ( 2 , 4 ) , "/" ) . concat ( tin . slice ( 0 , 2 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Calculate check character
var checksum = parseInt ( tin . slice ( 0 , 6 ) + tin . slice ( 7 , 10 ) , 10 ) % 31 ;
if ( checksum < 10 ) {
return checksum === parseInt ( tin . slice ( 10 ) , 10 ) ;
}
checksum -= 10 ;
var letters _lookup = [ 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'H' , 'J' , 'K' , 'L' , 'M' , 'N' , 'P' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' ] ;
return letters _lookup [ checksum ] === tin . slice ( 10 ) ;
}
/ *
* fr / nl - BE validation function
* ( Numéro national ( N . N . ) , persons only )
* Checks if birth date ( first six digits ) is valid and calculates check ( last two ) digits
* /
function frBeCheck ( tin ) {
// Zero month/day value is acceptable
if ( tin . slice ( 2 , 4 ) !== '00' || tin . slice ( 4 , 6 ) !== '00' ) {
// Extract date from first six digits of TIN
var date = "" . concat ( tin . slice ( 0 , 2 ) , "/" ) . concat ( tin . slice ( 2 , 4 ) , "/" ) . concat ( tin . slice ( 4 , 6 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YY/MM/DD' ) ) {
return false ;
}
}
var checksum = 97 - parseInt ( tin . slice ( 0 , 9 ) , 10 ) % 97 ;
var checkdigits = parseInt ( tin . slice ( 9 , 11 ) , 10 ) ;
if ( checksum !== checkdigits ) {
checksum = 97 - parseInt ( "2" . concat ( tin . slice ( 0 , 9 ) ) , 10 ) % 97 ;
if ( checksum !== checkdigits ) {
return false ;
}
}
return true ;
}
/ *
* fr - FR validation function
* ( Numéro fiscal de référence ( numéro SPI ) , persons only )
* Verify TIN validity by calculating check ( last three ) digits
* /
function frFrCheck ( tin ) {
tin = tin . replace ( /\s/g , '' ) ;
var checksum = parseInt ( tin . slice ( 0 , 10 ) , 10 ) % 511 ;
var checkdigits = parseInt ( tin . slice ( 10 , 13 ) , 10 ) ;
return checksum === checkdigits ;
}
/ *
* fr / lb - LU validation function
* ( numéro d ’ identification personnelle , persons only )
* Verify birth date validity and run Luhn and Verhoeff checks
* /
function frLuCheck ( tin ) {
// Extract date and check validity
var date = "" . concat ( tin . slice ( 0 , 4 ) , "/" ) . concat ( tin . slice ( 4 , 6 ) , "/" ) . concat ( tin . slice ( 6 , 8 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Run Luhn check
if ( ! algorithms . luhnCheck ( tin . slice ( 0 , 12 ) ) ) {
return false ;
} // Remove Luhn check digit and run Verhoeff check
return algorithms . verhoeffCheck ( "" . concat ( tin . slice ( 0 , 11 ) ) . concat ( tin [ 12 ] ) ) ;
}
/ *
* hr - HR validation function
* ( Osobni identifikacijski broj ( OIB ) , persons / entities )
* Verify TIN validity by calling iso7064Check ( digits )
* /
function hrHrCheck ( tin ) {
return algorithms . iso7064Check ( tin ) ;
}
/ *
* hu - HU validation function
* ( Adóazonosító jel , persons only )
* Verify TIN validity by calculating check ( last ) digit
* /
function huHuCheck ( tin ) {
// split digits into an array for further processing
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var checksum = 8 ;
for ( var i = 1 ; i < 9 ; i ++ ) {
checksum += digits [ i ] * ( i + 1 ) ;
}
return checksum % 11 === digits [ 9 ] ;
}
/ *
* lt - LT validation function ( should go here if needed )
* ( Asmens kodas , persons / entities respectively )
* Current validation check is alias of etEeCheck - same format applies
* /
/ *
* it - IT first / last name validity check
* Accepts it - IT TIN - encoded names as a three - element character array and checks their validity
* Due to lack of clarity between resources ( " Are only Italian consonants used ?
* What happens if a person has X in their name ? " etc . ) only two test conditions
* have been implemented :
* Vowels may only be followed by other vowels or an X character
* and X characters after vowels may only be followed by other X characters .
* /
function itItNameCheck ( name ) {
// true at the first occurence of a vowel
var vowelflag = false ; // true at the first occurence of an X AFTER vowel
// (to properly handle last names with X as consonant)
var xflag = false ;
for ( var i = 0 ; i < 3 ; i ++ ) {
if ( ! vowelflag && /[AEIOU]/ . test ( name [ i ] ) ) {
vowelflag = true ;
} else if ( ! xflag && vowelflag && name [ i ] === 'X' ) {
xflag = true ;
} else if ( i > 0 ) {
if ( vowelflag && ! xflag ) {
if ( ! /[AEIOU]/ . test ( name [ i ] ) ) {
return false ;
}
}
if ( xflag ) {
if ( ! /X/ . test ( name [ i ] ) ) {
return false ;
}
}
}
}
return true ;
}
/ *
* it - IT validation function
* ( Codice fiscale ( TIN - IT ) , persons only )
* Verify name , birth date and codice catastale validity
* and calculate check character .
* Material not in DG - TAXUD document sourced from :
* ` https://en.wikipedia.org/wiki/Italian_fiscal_code `
* /
function itItCheck ( tin ) {
// Capitalize and split characters into an array for further processing
var chars = tin . toUpperCase ( ) . split ( '' ) ; // Check first and last name validity calling itItNameCheck()
if ( ! itItNameCheck ( chars . slice ( 0 , 3 ) ) ) {
return false ;
}
if ( ! itItNameCheck ( chars . slice ( 3 , 6 ) ) ) {
return false ;
} // Convert letters in number spaces back to numbers if any
var number _locations = [ 6 , 7 , 9 , 10 , 12 , 13 , 14 ] ;
var number _replace = {
L : '0' ,
M : '1' ,
N : '2' ,
P : '3' ,
Q : '4' ,
R : '5' ,
S : '6' ,
T : '7' ,
U : '8' ,
V : '9'
} ;
for ( var _i4 = 0 , _number _locations = number _locations ; _i4 < _number _locations . length ; _i4 ++ ) {
var i = _number _locations [ _i4 ] ;
if ( chars [ i ] in number _replace ) {
chars . splice ( i , 1 , number _replace [ chars [ i ] ] ) ;
}
} // Extract month and day, and check date validity
var month _replace = {
A : '01' ,
B : '02' ,
C : '03' ,
D : '04' ,
E : '05' ,
H : '06' ,
L : '07' ,
M : '08' ,
P : '09' ,
R : '10' ,
S : '11' ,
T : '12'
} ;
var month = month _replace [ chars [ 8 ] ] ;
var day = parseInt ( chars [ 9 ] + chars [ 10 ] , 10 ) ;
if ( day > 40 ) {
day -= 40 ;
}
if ( day < 10 ) {
day = "0" . concat ( day ) ;
}
var date = "" . concat ( chars [ 6 ] ) . concat ( chars [ 7 ] , "/" ) . concat ( month , "/" ) . concat ( day ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YY/MM/DD' ) ) {
return false ;
} // Calculate check character by adding up even and odd characters as numbers
var checksum = 0 ;
for ( var _i5 = 1 ; _i5 < chars . length - 1 ; _i5 += 2 ) {
var char _to _int = parseInt ( chars [ _i5 ] , 10 ) ;
if ( isNaN ( char _to _int ) ) {
char _to _int = chars [ _i5 ] . charCodeAt ( 0 ) - 65 ;
}
checksum += char _to _int ;
}
var odd _convert = {
// Maps of characters at odd places
A : 1 ,
B : 0 ,
C : 5 ,
D : 7 ,
E : 9 ,
F : 13 ,
G : 15 ,
H : 17 ,
I : 19 ,
J : 21 ,
K : 2 ,
L : 4 ,
M : 18 ,
N : 20 ,
O : 11 ,
P : 3 ,
Q : 6 ,
R : 8 ,
S : 12 ,
T : 14 ,
U : 16 ,
V : 10 ,
W : 22 ,
X : 25 ,
Y : 24 ,
Z : 23 ,
0 : 1 ,
1 : 0
} ;
for ( var _i6 = 0 ; _i6 < chars . length - 1 ; _i6 += 2 ) {
var _char _to _int = 0 ;
if ( chars [ _i6 ] in odd _convert ) {
_char _to _int = odd _convert [ chars [ _i6 ] ] ;
} else {
var multiplier = parseInt ( chars [ _i6 ] , 10 ) ;
_char _to _int = 2 * multiplier + 1 ;
if ( multiplier > 4 ) {
_char _to _int += 2 ;
}
}
checksum += _char _to _int ;
}
if ( String . fromCharCode ( 65 + checksum % 26 ) !== chars [ 15 ] ) {
return false ;
}
return true ;
}
/ *
* lv - LV validation function
* ( Personas kods ( PK ) , persons only )
* Check validity of birth date and calculate check ( last ) digit
* Support only for old format numbers ( not starting with '32' , issued before 2017 / 07 / 01 )
* Material not in DG TAXUD document sourced from :
* ` https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/ `
* /
function lvLvCheck ( tin ) {
tin = tin . replace ( /\W/ , '' ) ; // Extract date from TIN
var day = tin . slice ( 0 , 2 ) ;
if ( day !== '32' ) {
// No date/checksum check if new format
var month = tin . slice ( 2 , 4 ) ;
if ( month !== '00' ) {
// No date check if unknown month
var full _year = tin . slice ( 4 , 6 ) ;
switch ( tin [ 6 ] ) {
case '0' :
full _year = "18" . concat ( full _year ) ;
break ;
case '1' :
full _year = "19" . concat ( full _year ) ;
break ;
default :
full _year = "20" . concat ( full _year ) ;
break ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( tin . slice ( 2 , 4 ) , "/" ) . concat ( day ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
}
} // Calculate check digit
var checksum = 1101 ;
var multip _lookup = [ 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 ] ;
for ( var i = 0 ; i < tin . length - 1 ; i ++ ) {
checksum -= parseInt ( tin [ i ] , 10 ) * multip _lookup [ i ] ;
}
return parseInt ( tin [ 10 ] , 10 ) === checksum % 11 ;
}
return true ;
}
/ *
* mt - MT validation function
* ( Identity Card Number or Unique Taxpayer Reference , persons / entities )
* Verify Identity Card Number structure ( no other tests found )
* /
function mtMtCheck ( tin ) {
if ( tin . length !== 9 ) {
// No tests for UTR
var chars = tin . toUpperCase ( ) . split ( '' ) ; // Fill with zeros if smaller than proper
while ( chars . length < 8 ) {
chars . unshift ( 0 ) ;
} // Validate format according to last character
switch ( tin [ 7 ] ) {
case 'A' :
case 'P' :
if ( parseInt ( chars [ 6 ] , 10 ) === 0 ) {
return false ;
}
break ;
default :
{
var first _part = parseInt ( chars . join ( '' ) . slice ( 0 , 5 ) , 10 ) ;
if ( first _part > 32000 ) {
return false ;
}
var second _part = parseInt ( chars . join ( '' ) . slice ( 5 , 7 ) , 10 ) ;
if ( first _part === second _part ) {
return false ;
}
}
}
}
return true ;
}
/ *
* nl - NL validation function
* ( Burgerservicenummer ( BSN ) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer ( RSIN ) ,
* persons / entities respectively )
* Verify TIN validity by calculating check ( last ) digit ( variant of MOD 11 )
* /
function nlNlCheck ( tin ) {
return algorithms . reverseMultiplyAndSum ( tin . split ( '' ) . slice ( 0 , 8 ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) , 9 ) % 11 === parseInt ( tin [ 8 ] , 10 ) ;
}
/ *
* pl - PL validation function
* ( Powszechny Elektroniczny System Ewidencji Ludności ( PESEL )
* or Numer identyfikacji podatkowej ( NIP ) , persons / entities )
* Verify TIN validity by validating birth date ( PESEL ) and calculating check ( last ) digit
* /
function plPlCheck ( tin ) {
// NIP
if ( tin . length === 10 ) {
// Calculate last digit by multiplying with lookup
var lookup = [ 6 , 5 , 7 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
var _checksum = 0 ;
for ( var i = 0 ; i < lookup . length ; i ++ ) {
_checksum += parseInt ( tin [ i ] , 10 ) * lookup [ i ] ;
}
_checksum %= 11 ;
if ( _checksum === 10 ) {
return false ;
}
return _checksum === parseInt ( tin [ 9 ] , 10 ) ;
} // PESEL
// Extract full year using month
var full _year = tin . slice ( 0 , 2 ) ;
var month = parseInt ( tin . slice ( 2 , 4 ) , 10 ) ;
if ( month > 80 ) {
full _year = "18" . concat ( full _year ) ;
month -= 80 ;
} else if ( month > 60 ) {
full _year = "22" . concat ( full _year ) ;
month -= 60 ;
} else if ( month > 40 ) {
full _year = "21" . concat ( full _year ) ;
month -= 40 ;
} else if ( month > 20 ) {
full _year = "20" . concat ( full _year ) ;
month -= 20 ;
} else {
full _year = "19" . concat ( full _year ) ;
} // Add leading zero to month if needed
if ( month < 10 ) {
month = "0" . concat ( month ) ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( month , "/" ) . concat ( tin . slice ( 4 , 6 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Calculate last digit by mulitplying with odd one-digit numbers except 5
var checksum = 0 ;
var multiplier = 1 ;
for ( var _i7 = 0 ; _i7 < tin . length - 1 ; _i7 ++ ) {
checksum += parseInt ( tin [ _i7 ] , 10 ) * multiplier % 10 ;
multiplier += 2 ;
if ( multiplier > 10 ) {
multiplier = 1 ;
} else if ( multiplier === 5 ) {
multiplier += 2 ;
}
}
checksum = 10 - checksum % 10 ;
return checksum === parseInt ( tin [ 10 ] , 10 ) ;
}
/ *
* pt - PT validation function
* ( Número de identificação fiscal ( NIF ) , persons / entities )
* Verify TIN validity by calculating check ( last ) digit ( variant of MOD 11 )
* /
function ptPtCheck ( tin ) {
var checksum = 11 - algorithms . reverseMultiplyAndSum ( tin . split ( '' ) . slice ( 0 , 8 ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) , 9 ) % 11 ;
if ( checksum > 9 ) {
return parseInt ( tin [ 8 ] , 10 ) === 0 ;
}
return checksum === parseInt ( tin [ 8 ] , 10 ) ;
}
/ *
* ro - RO validation function
* ( Cod Numeric Personal ( CNP ) or Cod de înregistrare fiscală ( CIF ) ,
* persons only )
* Verify CNP validity by calculating check ( last ) digit ( test not found for CIF )
* Material not in DG TAXUD document sourced from :
* ` https://en.wikipedia.org/wiki/National_identification_number#Romania `
* /
function roRoCheck ( tin ) {
if ( tin . slice ( 0 , 4 ) !== '9000' ) {
// No test found for this format
// Extract full year using century digit if possible
var full _year = tin . slice ( 1 , 3 ) ;
switch ( tin [ 0 ] ) {
case '1' :
case '2' :
full _year = "19" . concat ( full _year ) ;
break ;
case '3' :
case '4' :
full _year = "18" . concat ( full _year ) ;
break ;
case '5' :
case '6' :
full _year = "20" . concat ( full _year ) ;
break ;
default :
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( tin . slice ( 3 , 5 ) , "/" ) . concat ( tin . slice ( 5 , 7 ) ) ;
if ( date . length === 8 ) {
if ( ! ( 0 , _isDate . default ) ( date , 'YY/MM/DD' ) ) {
return false ;
}
} else if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
} // Calculate check digit
var digits = tin . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) ;
var multipliers = [ 2 , 7 , 9 , 1 , 4 , 6 , 3 , 5 , 8 , 2 , 7 , 9 ] ;
var checksum = 0 ;
for ( var i = 0 ; i < multipliers . length ; i ++ ) {
checksum += digits [ i ] * multipliers [ i ] ;
}
if ( checksum % 11 === 10 ) {
return digits [ 12 ] === 1 ;
}
return digits [ 12 ] === checksum % 11 ;
}
return true ;
}
/ *
* sk - SK validation function
* ( Rodné číslo ( RČ ) or bezvýznamové identifikačné číslo ( BIČ ) , persons only )
* Checks validity of pre - 1954 birth numbers ( rodné číslo ) only
* Due to the introduction of the pseudo - random BIČ it is not possible to test
* post - 1954 birth numbers without knowing whether they are BIČ or RČ beforehand
* /
function skSkCheck ( tin ) {
if ( tin . length === 9 ) {
tin = tin . replace ( /\W/ , '' ) ;
if ( tin . slice ( 6 ) === '000' ) {
return false ;
} // Three-zero serial not assigned before 1954
// Extract full year from TIN length
var full _year = parseInt ( tin . slice ( 0 , 2 ) , 10 ) ;
if ( full _year > 53 ) {
return false ;
}
if ( full _year < 10 ) {
full _year = "190" . concat ( full _year ) ;
} else {
full _year = "19" . concat ( full _year ) ;
} // Extract month from TIN and normalize
var month = parseInt ( tin . slice ( 2 , 4 ) , 10 ) ;
if ( month > 50 ) {
month -= 50 ;
}
if ( month < 10 ) {
month = "0" . concat ( month ) ;
} // Check date validity
var date = "" . concat ( full _year , "/" ) . concat ( month , "/" ) . concat ( tin . slice ( 4 , 6 ) ) ;
if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
}
}
return true ;
}
/ *
* sl - SI validation function
* ( Davčna številka , persons / entities )
* Verify TIN validity by calculating check ( last ) digit ( variant of MOD 11 )
* /
function slSiCheck ( tin ) {
var checksum = 11 - algorithms . reverseMultiplyAndSum ( tin . split ( '' ) . slice ( 0 , 7 ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) , 8 ) % 11 ;
if ( checksum === 10 ) {
return parseInt ( tin [ 7 ] , 10 ) === 0 ;
}
return checksum === parseInt ( tin [ 7 ] , 10 ) ;
}
/ *
* sv - SE validation function
* ( Personnummer or samordningsnummer , persons only )
* Checks validity of birth date and calls luhnCheck ( ) to validate check ( last ) digit
* /
function svSeCheck ( tin ) {
// Make copy of TIN and normalize to two-digit year form
var tin _copy = tin . slice ( 0 ) ;
if ( tin . length > 11 ) {
tin _copy = tin _copy . slice ( 2 ) ;
} // Extract date of birth
var full _year = '' ;
var month = tin _copy . slice ( 2 , 4 ) ;
var day = parseInt ( tin _copy . slice ( 4 , 6 ) , 10 ) ;
if ( tin . length > 11 ) {
full _year = tin . slice ( 0 , 4 ) ;
} else {
full _year = tin . slice ( 0 , 2 ) ;
if ( tin . length === 11 && day < 60 ) {
// Extract full year from centenarian symbol
// Should work just fine until year 10000 or so
var current _year = new Date ( ) . getFullYear ( ) . toString ( ) ;
var current _century = parseInt ( current _year . slice ( 0 , 2 ) , 10 ) ;
current _year = parseInt ( current _year , 10 ) ;
if ( tin [ 6 ] === '-' ) {
if ( parseInt ( "" . concat ( current _century ) . concat ( full _year ) , 10 ) > current _year ) {
full _year = "" . concat ( current _century - 1 ) . concat ( full _year ) ;
} else {
full _year = "" . concat ( current _century ) . concat ( full _year ) ;
}
} else {
full _year = "" . concat ( current _century - 1 ) . concat ( full _year ) ;
if ( current _year - parseInt ( full _year , 10 ) < 100 ) {
return false ;
}
}
}
} // Normalize day and check date validity
if ( day > 60 ) {
day -= 60 ;
}
if ( day < 10 ) {
day = "0" . concat ( day ) ;
}
var date = "" . concat ( full _year , "/" ) . concat ( month , "/" ) . concat ( day ) ;
if ( date . length === 8 ) {
if ( ! ( 0 , _isDate . default ) ( date , 'YY/MM/DD' ) ) {
return false ;
}
} else if ( ! ( 0 , _isDate . default ) ( date , 'YYYY/MM/DD' ) ) {
return false ;
}
return algorithms . luhnCheck ( tin . replace ( /\W/ , '' ) ) ;
} // Locale lookup objects
/ *
* Tax id regex formats for various locales
*
* Where not explicitly specified in DG - TAXUD document both
* uppercase and lowercase letters are acceptable .
* /
var taxIdFormat = {
'bg-BG' : /^\d{10}$/ ,
'cs-CZ' : /^\d{6}\/{0,1}\d{3,4}$/ ,
'de-AT' : /^\d{9}$/ ,
'de-DE' : /^[1-9]\d{10}$/ ,
'dk-DK' : /^\d{6}-{0,1}\d{4}$/ ,
'el-CY' : /^[09]\d{7}[A-Z]$/ ,
'el-GR' : /^([0-4]|[7-9])\d{8}$/ ,
'en-GB' : /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i ,
'en-IE' : /^\d{7}[A-W][A-IW]{0,1}$/i ,
'en-US' : /^\d{2}[- ]{0,1}\d{7}$/ ,
'es-ES' : /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i ,
'et-EE' : /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/ ,
'fi-FI' : /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i ,
'fr-BE' : /^\d{11}$/ ,
'fr-FR' : /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/ ,
// Conforms both to official spec and provided example
'fr-LU' : /^\d{13}$/ ,
'hr-HR' : /^\d{11}$/ ,
'hu-HU' : /^8\d{9}$/ ,
'it-IT' : /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i ,
'lv-LV' : /^\d{6}-{0,1}\d{5}$/ ,
// Conforms both to DG TAXUD spec and original research
'mt-MT' : /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i ,
'nl-NL' : /^\d{9}$/ ,
'pl-PL' : /^\d{10,11}$/ ,
'pt-PT' : /^\d{9}$/ ,
'ro-RO' : /^\d{13}$/ ,
'sk-SK' : /^\d{6}\/{0,1}\d{3,4}$/ ,
'sl-SI' : /^[1-9]\d{7}$/ ,
'sv-SE' : /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/
} ; // taxIdFormat locale aliases
taxIdFormat [ 'lb-LU' ] = taxIdFormat [ 'fr-LU' ] ;
taxIdFormat [ 'lt-LT' ] = taxIdFormat [ 'et-EE' ] ;
taxIdFormat [ 'nl-BE' ] = taxIdFormat [ 'fr-BE' ] ; // Algorithmic tax id check functions for various locales
var taxIdCheck = {
'bg-BG' : bgBgCheck ,
'cs-CZ' : csCzCheck ,
'de-AT' : deAtCheck ,
'de-DE' : deDeCheck ,
'dk-DK' : dkDkCheck ,
'el-CY' : elCyCheck ,
'el-GR' : elGrCheck ,
'en-IE' : enIeCheck ,
'en-US' : enUsCheck ,
'es-ES' : esEsCheck ,
'et-EE' : etEeCheck ,
'fi-FI' : fiFiCheck ,
'fr-BE' : frBeCheck ,
'fr-FR' : frFrCheck ,
'fr-LU' : frLuCheck ,
'hr-HR' : hrHrCheck ,
'hu-HU' : huHuCheck ,
'it-IT' : itItCheck ,
'lv-LV' : lvLvCheck ,
'mt-MT' : mtMtCheck ,
'nl-NL' : nlNlCheck ,
'pl-PL' : plPlCheck ,
'pt-PT' : ptPtCheck ,
'ro-RO' : roRoCheck ,
'sk-SK' : skSkCheck ,
'sl-SI' : slSiCheck ,
'sv-SE' : svSeCheck
} ; // taxIdCheck locale aliases
taxIdCheck [ 'lb-LU' ] = taxIdCheck [ 'fr-LU' ] ;
taxIdCheck [ 'lt-LT' ] = taxIdCheck [ 'et-EE' ] ;
taxIdCheck [ 'nl-BE' ] = taxIdCheck [ 'fr-BE' ] ; // Regexes for locales where characters should be omitted before checking format
var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g ;
var sanitizeRegexes = {
'de-AT' : allsymbols ,
'de-DE' : /[\/\\]/g ,
'fr-BE' : allsymbols
} ; // sanitizeRegexes locale aliases
sanitizeRegexes [ 'nl-BE' ] = sanitizeRegexes [ 'fr-BE' ] ;
/ *
* Validator function
* Return true if the passed string is a valid tax identification number
* for the specified locale .
* Throw an error exception if the locale is not supported .
* /
function isTaxID ( str ) {
var locale = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 'en-US' ;
( 0 , _assertString . default ) ( str ) ; // Copy TIN to avoid replacement if sanitized
var strcopy = str . slice ( 0 ) ;
if ( locale in taxIdFormat ) {
if ( locale in sanitizeRegexes ) {
strcopy = strcopy . replace ( sanitizeRegexes [ locale ] , '' ) ;
}
if ( ! taxIdFormat [ locale ] . test ( strcopy ) ) {
return false ;
}
if ( locale in taxIdCheck ) {
return taxIdCheck [ locale ] ( strcopy ) ;
} // Fallthrough; not all locales have algorithmic checks
return true ;
}
throw new Error ( "Invalid locale '" . concat ( locale , "'" ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isDate" : 35 , "./util/algorithms" : 106 , "./util/assertString" : 107 } ] , 89 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isURL ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isFQDN = _interopRequireDefault ( require ( "./isFQDN" ) ) ;
var _isIP = _interopRequireDefault ( require ( "./isIP" ) ) ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
/ *
options for isURL method
require _protocol - if set as true isURL will return false if protocol is not present in the URL
require _valid _protocol - isURL will check if the URL ' s protocol is present in the protocols option
protocols - valid protocols can be modified with this option
require _host - if set as false isURL will not check if host is present in the URL
require _port - if set as true isURL will check if port is present in the URL
allow _protocol _relative _urls - if set as true protocol relative URLs will be allowed
validate _length - if set as false isURL will skip string length validation ( IE maximum is 2083 )
* /
var default _url _options = {
protocols : [ 'http' , 'https' , 'ftp' ] ,
require _tld : true ,
require _protocol : false ,
require _host : true ,
require _port : false ,
require _valid _protocol : true ,
allow _underscores : false ,
allow _trailing _dot : false ,
allow _protocol _relative _urls : false ,
validate _length : true
} ;
var wrapped _ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/ ;
function isRegExp ( obj ) {
return Object . prototype . toString . call ( obj ) === '[object RegExp]' ;
}
function checkHost ( host , matches ) {
for ( var i = 0 ; i < matches . length ; i ++ ) {
var match = matches [ i ] ;
if ( host === match || isRegExp ( match ) && match . test ( host ) ) {
return true ;
}
}
return false ;
}
function isURL ( url , options ) {
( 0 , _assertString . default ) ( url ) ;
if ( ! url || /[\s<>]/ . test ( url ) ) {
return false ;
}
if ( url . indexOf ( 'mailto:' ) === 0 ) {
return false ;
}
options = ( 0 , _merge . default ) ( options , default _url _options ) ;
if ( options . validate _length && url . length >= 2083 ) {
return false ;
}
var protocol , auth , host , hostname , port , port _str , split , ipv6 ;
split = url . split ( '#' ) ;
url = split . shift ( ) ;
split = url . split ( '?' ) ;
url = split . shift ( ) ;
split = url . split ( '://' ) ;
if ( split . length > 1 ) {
protocol = split . shift ( ) . toLowerCase ( ) ;
if ( options . require _valid _protocol && options . protocols . indexOf ( protocol ) === - 1 ) {
return false ;
}
} else if ( options . require _protocol ) {
return false ;
} else if ( url . substr ( 0 , 2 ) === '//' ) {
if ( ! options . allow _protocol _relative _urls ) {
return false ;
}
split [ 0 ] = url . substr ( 2 ) ;
}
url = split . join ( '://' ) ;
if ( url === '' ) {
return false ;
}
split = url . split ( '/' ) ;
url = split . shift ( ) ;
if ( url === '' && ! options . require _host ) {
return true ;
}
split = url . split ( '@' ) ;
if ( split . length > 1 ) {
if ( options . disallow _auth ) {
return false ;
}
auth = split . shift ( ) ;
if ( auth . indexOf ( ':' ) === - 1 || auth . indexOf ( ':' ) >= 0 && auth . split ( ':' ) . length > 2 ) {
return false ;
}
}
hostname = split . join ( '@' ) ;
port _str = null ;
ipv6 = null ;
var ipv6 _match = hostname . match ( wrapped _ipv6 ) ;
if ( ipv6 _match ) {
host = '' ;
ipv6 = ipv6 _match [ 1 ] ;
port _str = ipv6 _match [ 2 ] || null ;
} else {
split = hostname . split ( ':' ) ;
host = split . shift ( ) ;
if ( split . length ) {
port _str = split . join ( ':' ) ;
}
}
if ( port _str !== null ) {
port = parseInt ( port _str , 10 ) ;
if ( ! /^[0-9]+$/ . test ( port _str ) || port <= 0 || port > 65535 ) {
return false ;
}
} else if ( options . require _port ) {
return false ;
}
if ( ! ( 0 , _isIP . default ) ( host ) && ! ( 0 , _isFQDN . default ) ( host , options ) && ( ! ipv6 || ! ( 0 , _isIP . default ) ( ipv6 , 6 ) ) ) {
return false ;
}
host = host || ipv6 ;
if ( options . host _whitelist && ! checkHost ( host , options . host _whitelist ) ) {
return false ;
}
if ( options . host _blacklist && checkHost ( host , options . host _blacklist ) ) {
return false ;
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isFQDN" : 42 , "./isIP" : 52 , "./util/assertString" : 107 , "./util/merge" : 109 } ] , 90 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isUUID ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var uuid = {
3 : /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i ,
4 : /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i ,
5 : /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i ,
all : /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
} ;
function isUUID ( str ) {
var version = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 'all' ;
( 0 , _assertString . default ) ( str ) ;
var pattern = uuid [ version ] ;
return pattern && pattern . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 91 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isUppercase ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isUppercase ( str ) {
( 0 , _assertString . default ) ( str ) ;
return str === str . toUpperCase ( ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 92 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isVAT ;
exports . vatMatchers = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var vatMatchers = {
GB : /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/
} ;
exports . vatMatchers = vatMatchers ;
function isVAT ( str , countryCode ) {
( 0 , _assertString . default ) ( str ) ;
( 0 , _assertString . default ) ( countryCode ) ;
if ( countryCode in vatMatchers ) {
return vatMatchers [ countryCode ] . test ( str ) ;
}
throw new Error ( "Invalid country code: '" . concat ( countryCode , "'" ) ) ;
}
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 93 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isVariableWidth ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isFullWidth = require ( "./isFullWidth" ) ;
var _isHalfWidth = require ( "./isHalfWidth" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isVariableWidth ( str ) {
( 0 , _assertString . default ) ( str ) ;
return _isFullWidth . fullWidth . test ( str ) && _isHalfWidth . halfWidth . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isFullWidth" : 44 , "./isHalfWidth" : 46 , "./util/assertString" : 107 } ] , 94 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isWhitelisted ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isWhitelisted ( str , chars ) {
( 0 , _assertString . default ) ( str ) ;
for ( var i = str . length - 1 ; i >= 0 ; i -- ) {
if ( chars . indexOf ( str [ i ] ) === - 1 ) {
return false ;
}
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 95 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = ltrim ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function ltrim ( str , chars ) {
( 0 , _assertString . default ) ( str ) ; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
var pattern = chars ? new RegExp ( "^[" . concat ( chars . replace ( /[.*+?^${}()|[\]\\]/g , '\\$&' ) , "]+" ) , 'g' ) : /^\s+/g ;
return str . replace ( pattern , '' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 96 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = matches ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function matches ( str , pattern , modifiers ) {
( 0 , _assertString . default ) ( str ) ;
if ( Object . prototype . toString . call ( pattern ) !== '[object RegExp]' ) {
pattern = new RegExp ( pattern , modifiers ) ;
}
return pattern . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 97 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = normalizeEmail ;
var _merge = _interopRequireDefault ( require ( "./util/merge" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var default _normalize _email _options = {
// The following options apply to all email addresses
// Lowercases the local part of the email address.
// Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).
// The domain is always lowercased, as per RFC 1035
all _lowercase : true ,
// The following conversions are specific to GMail
// Lowercases the local part of the GMail address (known to be case-insensitive)
gmail _lowercase : true ,
// Removes dots from the local part of the email address, as that's ignored by GMail
gmail _remove _dots : true ,
// Removes the subaddress (e.g. "+foo") from the email address
gmail _remove _subaddress : true ,
// Conversts the googlemail.com domain to gmail.com
gmail _convert _googlemaildotcom : true ,
// The following conversions are specific to Outlook.com / Windows Live / Hotmail
// Lowercases the local part of the Outlook.com address (known to be case-insensitive)
outlookdotcom _lowercase : true ,
// Removes the subaddress (e.g. "+foo") from the email address
outlookdotcom _remove _subaddress : true ,
// The following conversions are specific to Yahoo
// Lowercases the local part of the Yahoo address (known to be case-insensitive)
yahoo _lowercase : true ,
// Removes the subaddress (e.g. "-foo") from the email address
yahoo _remove _subaddress : true ,
// The following conversions are specific to Yandex
// Lowercases the local part of the Yandex address (known to be case-insensitive)
yandex _lowercase : true ,
// The following conversions are specific to iCloud
// Lowercases the local part of the iCloud address (known to be case-insensitive)
icloud _lowercase : true ,
// Removes the subaddress (e.g. "+foo") from the email address
icloud _remove _subaddress : true
} ; // List of domains used by iCloud
var icloud _domains = [ 'icloud.com' , 'me.com' ] ; // List of domains used by Outlook.com and its predecessors
// This list is likely incomplete.
// Partial reference:
// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/
var outlookdotcom _domains = [ 'hotmail.at' , 'hotmail.be' , 'hotmail.ca' , 'hotmail.cl' , 'hotmail.co.il' , 'hotmail.co.nz' , 'hotmail.co.th' , 'hotmail.co.uk' , 'hotmail.com' , 'hotmail.com.ar' , 'hotmail.com.au' , 'hotmail.com.br' , 'hotmail.com.gr' , 'hotmail.com.mx' , 'hotmail.com.pe' , 'hotmail.com.tr' , 'hotmail.com.vn' , 'hotmail.cz' , 'hotmail.de' , 'hotmail.dk' , 'hotmail.es' , 'hotmail.fr' , 'hotmail.hu' , 'hotmail.id' , 'hotmail.ie' , 'hotmail.in' , 'hotmail.it' , 'hotmail.jp' , 'hotmail.kr' , 'hotmail.lv' , 'hotmail.my' , 'hotmail.ph' , 'hotmail.pt' , 'hotmail.sa' , 'hotmail.sg' , 'hotmail.sk' , 'live.be' , 'live.co.uk' , 'live.com' , 'live.com.ar' , 'live.com.mx' , 'live.de' , 'live.es' , 'live.eu' , 'live.fr' , 'live.it' , 'live.nl' , 'msn.com' , 'outlook.at' , 'outlook.be' , 'outlook.cl' , 'outlook.co.il' , 'outlook.co.nz' , 'outlook.co.th' , 'outlook.com' , 'outlook.com.ar' , 'outlook.com.au' , 'outlook.com.br' , 'outlook.com.gr' , 'outlook.com.pe' , 'outlook.com.tr' , 'outlook.com.vn' , 'outlook.cz' , 'outlook.de' , 'outlook.dk' , 'outlook.es' , 'outlook.fr' , 'outlook.hu' , 'outlook.id' , 'outlook.ie' , 'outlook.in' , 'outlook.it' , 'outlook.jp' , 'outlook.kr' , 'outlook.lv' , 'outlook.my' , 'outlook.ph' , 'outlook.pt' , 'outlook.sa' , 'outlook.sg' , 'outlook.sk' , 'passport.com' ] ; // List of domains used by Yahoo Mail
// This list is likely incomplete
var yahoo _domains = [ 'rocketmail.com' , 'yahoo.ca' , 'yahoo.co.uk' , 'yahoo.com' , 'yahoo.de' , 'yahoo.fr' , 'yahoo.in' , 'yahoo.it' , 'ymail.com' ] ; // List of domains used by yandex.ru
var yandex _domains = [ 'yandex.ru' , 'yandex.ua' , 'yandex.kz' , 'yandex.com' , 'yandex.by' , 'ya.ru' ] ; // replace single dots, but not multiple consecutive dots
function dotsReplacer ( match ) {
if ( match . length > 1 ) {
return match ;
}
return '' ;
}
function normalizeEmail ( email , options ) {
options = ( 0 , _merge . default ) ( options , default _normalize _email _options ) ;
var raw _parts = email . split ( '@' ) ;
var domain = raw _parts . pop ( ) ;
var user = raw _parts . join ( '@' ) ;
var parts = [ user , domain ] ; // The domain is always lowercased, as it's case-insensitive per RFC 1035
parts [ 1 ] = parts [ 1 ] . toLowerCase ( ) ;
if ( parts [ 1 ] === 'gmail.com' || parts [ 1 ] === 'googlemail.com' ) {
// Address is GMail
if ( options . gmail _remove _subaddress ) {
parts [ 0 ] = parts [ 0 ] . split ( '+' ) [ 0 ] ;
}
if ( options . gmail _remove _dots ) {
// this does not replace consecutive dots like example..email@gmail.com
parts [ 0 ] = parts [ 0 ] . replace ( /\.+/g , dotsReplacer ) ;
}
if ( ! parts [ 0 ] . length ) {
return false ;
}
if ( options . all _lowercase || options . gmail _lowercase ) {
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
parts [ 1 ] = options . gmail _convert _googlemaildotcom ? 'gmail.com' : parts [ 1 ] ;
} else if ( icloud _domains . indexOf ( parts [ 1 ] ) >= 0 ) {
// Address is iCloud
if ( options . icloud _remove _subaddress ) {
parts [ 0 ] = parts [ 0 ] . split ( '+' ) [ 0 ] ;
}
if ( ! parts [ 0 ] . length ) {
return false ;
}
if ( options . all _lowercase || options . icloud _lowercase ) {
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
} else if ( outlookdotcom _domains . indexOf ( parts [ 1 ] ) >= 0 ) {
// Address is Outlook.com
if ( options . outlookdotcom _remove _subaddress ) {
parts [ 0 ] = parts [ 0 ] . split ( '+' ) [ 0 ] ;
}
if ( ! parts [ 0 ] . length ) {
return false ;
}
if ( options . all _lowercase || options . outlookdotcom _lowercase ) {
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
} else if ( yahoo _domains . indexOf ( parts [ 1 ] ) >= 0 ) {
// Address is Yahoo
if ( options . yahoo _remove _subaddress ) {
var components = parts [ 0 ] . split ( '-' ) ;
parts [ 0 ] = components . length > 1 ? components . slice ( 0 , - 1 ) . join ( '-' ) : components [ 0 ] ;
}
if ( ! parts [ 0 ] . length ) {
return false ;
}
if ( options . all _lowercase || options . yahoo _lowercase ) {
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
} else if ( yandex _domains . indexOf ( parts [ 1 ] ) >= 0 ) {
if ( options . all _lowercase || options . yandex _lowercase ) {
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
parts [ 1 ] = 'yandex.ru' ; // all yandex domains are equal, 1st preferred
} else if ( options . all _lowercase ) {
// Any other address
parts [ 0 ] = parts [ 0 ] . toLowerCase ( ) ;
}
return parts . join ( '@' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/merge" : 109 } ] , 98 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = rtrim ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function rtrim ( str , chars ) {
( 0 , _assertString . default ) ( str ) ; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
var pattern = chars ? new RegExp ( "[" . concat ( chars . replace ( /[.*+?^${}()|[\]\\]/g , '\\$&' ) , "]+$" ) , 'g' ) : /\s+$/g ;
return str . replace ( pattern , '' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 99 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = stripLow ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _blacklist = _interopRequireDefault ( require ( "./blacklist" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function stripLow ( str , keep _new _lines ) {
( 0 , _assertString . default ) ( str ) ;
var chars = keep _new _lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F' ;
return ( 0 , _blacklist . default ) ( str , chars ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./blacklist" : 16 , "./util/assertString" : 107 } ] , 100 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = toBoolean ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function toBoolean ( str , strict ) {
( 0 , _assertString . default ) ( str ) ;
if ( strict ) {
return str === '1' || /^true$/i . test ( str ) ;
}
return str !== '0' && ! /^false$/i . test ( str ) && str !== '' ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 101 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = toDate ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function toDate ( date ) {
( 0 , _assertString . default ) ( date ) ;
date = Date . parse ( date ) ;
return ! isNaN ( date ) ? new Date ( date ) : null ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 102 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = toFloat ;
var _isFloat = _interopRequireDefault ( require ( "./isFloat" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function toFloat ( str ) {
if ( ! ( 0 , _isFloat . default ) ( str ) ) return NaN ;
return parseFloat ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./isFloat" : 43 } ] , 103 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = toInt ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function toInt ( str , radix ) {
( 0 , _assertString . default ) ( str ) ;
return parseInt ( str , radix || 10 ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 104 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = trim ;
var _rtrim = _interopRequireDefault ( require ( "./rtrim" ) ) ;
var _ltrim = _interopRequireDefault ( require ( "./ltrim" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function trim ( str , chars ) {
return ( 0 , _rtrim . default ) ( ( 0 , _ltrim . default ) ( str , chars ) , chars ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./ltrim" : 95 , "./rtrim" : 98 } ] , 105 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = unescape ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function unescape ( str ) {
( 0 , _assertString . default ) ( str ) ;
return str . replace ( /&/g , '&' ) . replace ( /"/g , '"' ) . replace ( /'/g , "'" ) . replace ( /</g , '<' ) . replace ( />/g , '>' ) . replace ( ///g , '/' ) . replace ( /\/g , '\\' ) . replace ( /`/g , '`' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 106 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . iso7064Check = iso7064Check ;
exports . luhnCheck = luhnCheck ;
exports . reverseMultiplyAndSum = reverseMultiplyAndSum ;
exports . verhoeffCheck = verhoeffCheck ;
/ * *
* Algorithmic validation functions
* May be used as is or implemented in the workflow of other validators .
* /
/ *
* ISO 7064 validation function
* Called with a string of numbers ( incl . check digit )
* to validate according to ISO 7064 ( MOD 11 , 10 ) .
* /
function iso7064Check ( str ) {
var checkvalue = 10 ;
for ( var i = 0 ; i < str . length - 1 ; i ++ ) {
checkvalue = ( parseInt ( str [ i ] , 10 ) + checkvalue ) % 10 === 0 ? 10 * 2 % 11 : ( parseInt ( str [ i ] , 10 ) + checkvalue ) % 10 * 2 % 11 ;
}
checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue ;
return checkvalue === parseInt ( str [ 10 ] , 10 ) ;
}
/ *
* Luhn ( mod 10 ) validation function
* Called with a string of numbers ( incl . check digit )
* to validate according to the Luhn algorithm .
* /
function luhnCheck ( str ) {
var checksum = 0 ;
var second = false ;
for ( var i = str . length - 1 ; i >= 0 ; i -- ) {
if ( second ) {
var product = parseInt ( str [ i ] , 10 ) * 2 ;
if ( product > 9 ) {
// sum digits of product and add to checksum
checksum += product . toString ( ) . split ( '' ) . map ( function ( a ) {
return parseInt ( a , 10 ) ;
} ) . reduce ( function ( a , b ) {
return a + b ;
} , 0 ) ;
} else {
checksum += product ;
}
} else {
checksum += parseInt ( str [ i ] , 10 ) ;
}
second = ! second ;
}
return checksum % 10 === 0 ;
}
/ *
* Reverse TIN multiplication and summation helper function
* Called with an array of single - digit integers and a base multiplier
* to calculate the sum of the digits multiplied in reverse .
* Normally used in variations of MOD 11 algorithmic checks .
* /
function reverseMultiplyAndSum ( digits , base ) {
var total = 0 ;
for ( var i = 0 ; i < digits . length ; i ++ ) {
total += digits [ i ] * ( base - i ) ;
}
return total ;
}
/ *
* Verhoeff validation helper function
* Called with a string of numbers
* to validate according to the Verhoeff algorithm .
* /
function verhoeffCheck ( str ) {
var d _table = [ [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 2 , 3 , 4 , 0 , 6 , 7 , 8 , 9 , 5 ] , [ 2 , 3 , 4 , 0 , 1 , 7 , 8 , 9 , 5 , 6 ] , [ 3 , 4 , 0 , 1 , 2 , 8 , 9 , 5 , 6 , 7 ] , [ 4 , 0 , 1 , 2 , 3 , 9 , 5 , 6 , 7 , 8 ] , [ 5 , 9 , 8 , 7 , 6 , 0 , 4 , 3 , 2 , 1 ] , [ 6 , 5 , 9 , 8 , 7 , 1 , 0 , 4 , 3 , 2 ] , [ 7 , 6 , 5 , 9 , 8 , 2 , 1 , 0 , 4 , 3 ] , [ 8 , 7 , 6 , 5 , 9 , 3 , 2 , 1 , 0 , 4 ] , [ 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 ] ] ;
var p _table = [ [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 5 , 7 , 6 , 2 , 8 , 3 , 0 , 9 , 4 ] , [ 5 , 8 , 0 , 3 , 7 , 9 , 6 , 1 , 4 , 2 ] , [ 8 , 9 , 1 , 6 , 0 , 4 , 3 , 5 , 2 , 7 ] , [ 9 , 4 , 5 , 3 , 1 , 2 , 6 , 8 , 7 , 0 ] , [ 4 , 2 , 8 , 6 , 5 , 7 , 3 , 9 , 0 , 1 ] , [ 2 , 7 , 9 , 3 , 8 , 0 , 6 , 4 , 1 , 5 ] , [ 7 , 0 , 4 , 6 , 9 , 1 , 3 , 2 , 5 , 8 ] ] ; // Copy (to prevent replacement) and reverse
var str _copy = str . split ( '' ) . reverse ( ) . join ( '' ) ;
var checksum = 0 ;
for ( var i = 0 ; i < str _copy . length ; i ++ ) {
checksum = d _table [ checksum ] [ p _table [ i % 8 ] [ parseInt ( str _copy [ i ] , 10 ) ] ] ;
}
return checksum === 0 ;
}
2021-04-30 04:30:50 -06:00
} , { } ] , 107 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = assertString ;
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
function assertString ( input ) {
var isString = typeof input === 'string' || input instanceof String ;
if ( ! isString ) {
var invalidType = _typeof ( input ) ;
if ( input === null ) invalidType = 'null' ; else if ( invalidType === 'object' ) invalidType = input . constructor . name ;
throw new TypeError ( "Expected a string but received a " . concat ( invalidType ) ) ;
}
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { } ] , 108 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = void 0 ;
var includes = function includes ( arr , val ) {
return arr . some ( function ( arrVal ) {
return val === arrVal ;
} ) ;
} ;
var _default = includes ;
exports . default = _default ;
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { } ] , 109 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = merge ;
function merge ( ) {
var obj = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ;
var defaults = arguments . length > 1 ? arguments [ 1 ] : undefined ;
for ( var key in defaults ) {
if ( typeof obj [ key ] === 'undefined' ) {
obj [ key ] = defaults [ key ] ;
}
}
return obj ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { } ] , 110 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = multilineRegexp ;
/ * *
* Build RegExp object from an array
* of multiple / multi - line regexp parts
*
* @ param { string [ ] } parts
* @ param { string } flags
* @ return { object } - RegExp object
* /
function multilineRegexp ( parts , flags ) {
var regexpAsStringLiteral = parts . join ( '' ) ;
return new RegExp ( regexpAsStringLiteral , flags ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { } ] , 111 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = toString ;
function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
function toString ( input ) {
if ( _typeof ( input ) === 'object' && input !== null ) {
if ( typeof input . toString === 'function' ) {
input = input . toString ( ) ;
} else {
input = '[object Object]' ;
}
} else if ( input === null || typeof input === 'undefined' || isNaN ( input ) && ! input . length ) {
input = '' ;
}
return String ( input ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { } ] , 112 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = whitelist ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function whitelist ( str , chars ) {
( 0 , _assertString . default ) ( str ) ;
return str . replace ( new RegExp ( "[^" . concat ( chars , "]+" ) , 'g' ) , '' ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
2021-04-30 04:30:50 -06:00
} , { "./util/assertString" : 107 } ] , 113 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
module . exports = {
"name" : "doipjs" ,
2021-06-03 02:01:05 -06:00
"version" : "0.12.7" ,
2021-04-22 07:52:25 -06:00
"description" : "Decentralized OpenPGP Identity Proofs library in Node.js" ,
"main" : "src/index.js" ,
"dependencies" : {
"@xmpp/client" : "^0.12.0" ,
"@xmpp/debug" : "^0.12.0" ,
"bent" : "^7.3.12" ,
"browser-or-node" : "^1.3.0" ,
"cors" : "^2.8.5" ,
"dotenv" : "^8.2.0" ,
"express" : "^4.17.1" ,
"express-validator" : "^6.10.0" ,
"irc-upd" : "^0.11.0" ,
"jsdom" : "^16.5.1" ,
"merge-options" : "^3.0.3" ,
"openpgp" : "^4.10.9" ,
"query-string" : "^6.14.1" ,
"valid-url" : "^1.0.9" ,
"validator" : "^13.5.2"
} ,
"devDependencies" : {
"browserify" : "^17.0.0" ,
"browserify-shim" : "^3.8.14" ,
"chai" : "^4.2.0" ,
"chai-as-promised" : "^7.1.1" ,
"chai-match-pattern" : "^1.2.0" ,
2021-04-26 08:01:40 -06:00
"clean-jsdoc-theme" : "^3.2.4" ,
2021-04-22 07:52:25 -06:00
"jsdoc" : "^3.6.6" ,
"license-check-and-add" : "^3.0.4" ,
"minify" : "^6.0.1" ,
"mocha" : "^8.2.0" ,
"nodemon" : "^2.0.7" ,
"prettier" : "^2.1.2"
} ,
"scripts" : {
2021-04-30 04:30:50 -06:00
"release:bundle" : "./node_modules/.bin/browserify ./src/index.js --standalone doip -x openpgp -x jsdom -x @xmpp/client -x @xmpp/debug -x irc-upd -o ./dist/doip.js" ,
2021-04-22 07:52:25 -06:00
"release:minify" : "./node_modules/.bin/minify ./dist/doip.js > ./dist/doip.min.js" ,
"prettier:check" : "./node_modules/.bin/prettier --check ." ,
"prettier:write" : "./node_modules/.bin/prettier --write ." ,
"license:check" : "./node_modules/.bin/license-check-and-add check" ,
"license:add" : "./node_modules/.bin/license-check-and-add add" ,
"license:remove" : "./node_modules/.bin/license-check-and-add remove" ,
"docs:lib" : "./node_modules/.bin/jsdoc -c jsdoc-lib.json -r -d ./docs" ,
"test" : "./node_modules/.bin/mocha" ,
"proxy" : "NODE_ENV=production node ./src/proxy/" ,
"proxy:dev" : "NODE_ENV=development ./node_modules/.bin/nodemon ./src/proxy/"
} ,
"repository" : {
"type" : "git" ,
"url" : "https://codeberg.org/keyoxide/doipjs"
} ,
"homepage" : "https://js.doip.rocks" ,
"keywords" : [
"pgp" ,
"gpg" ,
"openpgp" ,
"encryption" ,
"decentralized" ,
"identity"
] ,
"author" : "Yarmo Mackenbach <yarmo@yarmo.eu> (https://yarmo.eu)" ,
"license" : "Apache-2.0" ,
"browserify" : {
"transform" : [
"browserify-shim"
]
} ,
"browserify-shim" : {
"openpgp" : "global:openpgp"
}
}
2021-04-30 04:30:50 -06:00
} , { } ] , 114 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const validator = require ( 'validator' )
const validUrl = require ( 'valid-url' )
const mergeOptions = require ( 'merge-options' )
const proofs = require ( './proofs' )
const verifications = require ( './verifications' )
const claimDefinitions = require ( './claimDefinitions' )
const defaults = require ( './defaults' )
const E = require ( './enums' )
/ * *
* @ class
* @ classdesc OpenPGP - based identity claim
* @ property { string } uri - The claim ' s URI
* @ property { string } fingerprint - The fingerprint to verify the claim against
* @ property { string } status - The current status of the claim
* @ property { Array < object > } matches - The claim definitions matched against the URI
2021-04-30 07:41:40 -06:00
* @ property { object } verification - The result of the verification process
2021-04-22 07:52:25 -06:00
* /
class Claim {
/ * *
* Initialize a Claim object
* @ constructor
2021-04-30 04:30:50 -06:00
* @ param { string | object } [ uri ] - The URI of the identity claim or a JSONified Claim instance
2021-04-22 07:52:25 -06:00
* @ param { string } [ fingerprint ] - The fingerprint of the OpenPGP key
* @ example
* const claim = doip . Claim ( ) ;
* const claim = doip . Claim ( 'dns:domain.tld?type=TXT' ) ;
* const claim = doip . Claim ( 'dns:domain.tld?type=TXT' , '123abc123abc' ) ;
2021-04-30 07:41:40 -06:00
* const claimAlt = doip . Claim ( JSON . stringify ( claim ) ) ;
2021-04-22 07:52:25 -06:00
* /
constructor ( uri , fingerprint ) {
// Import JSON
if ( typeof uri === 'object' && 'claimVersion' in uri ) {
2021-04-30 04:30:50 -06:00
const data = uri
2021-04-22 07:52:25 -06:00
switch ( data . claimVersion ) {
case 1 :
this . _uri = data . uri
this . _fingerprint = data . fingerprint
this . _status = data . status
2021-04-30 04:30:50 -06:00
this . _matches = data . matches
2021-04-30 07:41:40 -06:00
this . _verification = data . verification
2021-04-22 07:52:25 -06:00
break
default :
throw new Error ( 'Invalid claim version' )
break
}
return
}
// Verify validity of URI
if ( uri && ! validUrl . isUri ( uri ) ) {
throw new Error ( 'Invalid URI' )
}
2021-04-23 02:25:25 -06:00
2021-04-22 07:52:25 -06:00
// Verify validity of fingerprint
if ( fingerprint ) {
try {
validator . isAlphanumeric ( fingerprint )
} catch ( err ) {
throw new Error ( ` Invalid fingerprint ` )
}
}
this . _uri = uri ? uri : null
this . _fingerprint = fingerprint ? fingerprint : null
this . _status = E . ClaimStatus . INIT
2021-04-30 04:30:50 -06:00
this . _matches = null
2021-04-30 07:41:40 -06:00
this . _verification = null
2021-04-22 07:52:25 -06:00
}
get uri ( ) {
return this . _uri
}
get fingerprint ( ) {
return this . _fingerprint
}
get status ( ) {
return this . _status
}
get matches ( ) {
if ( this . _status === E . ClaimStatus . INIT ) {
throw new Error ( 'This claim has not yet been matched' )
}
2021-04-30 04:30:50 -06:00
return this . _matches
2021-04-22 07:52:25 -06:00
}
2021-04-30 07:41:40 -06:00
get verification ( ) {
2021-04-22 07:52:25 -06:00
if ( this . _status !== E . ClaimStatus . VERIFIED ) {
throw new Error ( 'This claim has not yet been verified' )
}
2021-04-30 07:41:40 -06:00
return this . _verification
2021-04-22 07:52:25 -06:00
}
set uri ( uri ) {
if ( this . _status !== E . ClaimStatus . INIT ) {
throw new Error (
'Cannot change the URI, this claim has already been matched'
)
}
// Verify validity of URI
if ( uri && ! validUrl . isUri ( uri ) ) {
throw new Error ( 'The URI was invalid' )
}
// Remove leading and trailing spaces
uri = uri . replace ( /^\s+|\s+$/g , '' )
this . _uri = uri
}
set fingerprint ( fingerprint ) {
if ( this . _status === E . ClaimStatus . VERIFIED ) {
throw new Error (
'Cannot change the fingerprint, this claim has already been verified'
)
}
this . _fingerprint = fingerprint
}
set status ( anything ) {
throw new Error ( "Cannot change a claim's status" )
}
2021-04-30 04:30:50 -06:00
set matches ( anything ) {
throw new Error ( "Cannot change a claim's matches" )
2021-04-22 07:52:25 -06:00
}
2021-04-30 07:41:40 -06:00
set verification ( anything ) {
2021-04-30 04:30:50 -06:00
throw new Error ( "Cannot change a claim's verification result" )
2021-04-22 07:52:25 -06:00
}
/ * *
* Match the claim ' s URI to candidate definitions
* @ function
* /
match ( ) {
if ( this . _status !== E . ClaimStatus . INIT ) {
throw new Error ( 'This claim was already matched' )
}
if ( this . _uri === null ) {
throw new Error ( 'This claim has no URI' )
}
2021-04-30 04:30:50 -06:00
this . _matches = [ ]
2021-04-22 07:52:25 -06:00
claimDefinitions . list . every ( ( name , i ) => {
const def = claimDefinitions . data [ name ]
// If the candidate is invalid, continue matching
if ( ! def . reURI . test ( this . _uri ) ) {
return true
}
const candidate = def . processURI ( this . _uri )
if ( candidate . match . isAmbiguous ) {
// Add to the possible candidates
2021-04-30 04:30:50 -06:00
this . _matches . push ( candidate )
2021-04-22 07:52:25 -06:00
} else {
// Set a single candidate and stop
2021-04-30 04:30:50 -06:00
this . _matches = [ candidate ]
2021-04-22 07:52:25 -06:00
return false
}
// Continue matching
return true
} )
this . _status = E . ClaimStatus . MATCHED
}
/ * *
* Verify the claim . The proof for each candidate is sequentially fetched and
* checked for the fingerprint . The verification stops when either a positive
* result was obtained , or an unambiguous claim definition was processed
* regardless of the result .
* @ async
* @ function
* @ param { object } [ opts ] - Options for proxy , fetchers
* /
async verify ( opts ) {
if ( this . _status === E . ClaimStatus . INIT ) {
throw new Error ( 'This claim has not yet been matched' )
}
if ( this . _status === E . ClaimStatus . VERIFIED ) {
throw new Error ( 'This claim has already been verified' )
}
if ( this . _fingerprint === null ) {
throw new Error ( 'This claim has no fingerprint' )
}
// Handle options
opts = mergeOptions ( defaults . opts , opts ? opts : { } )
// For each match
2021-04-30 04:30:50 -06:00
for ( let index = 0 ; index < this . _matches . length ; index ++ ) {
const claimData = this . _matches [ index ]
2021-04-22 07:52:25 -06:00
2021-04-30 07:41:40 -06:00
let verificationResult = null ,
2021-04-22 07:52:25 -06:00
proofData = null ,
proofFetchError
try {
proofData = await proofs . fetch ( claimData , opts )
} catch ( err ) {
proofFetchError = err
}
if ( proofData ) {
// Run the verification process
verificationResult = verifications . run (
proofData . result ,
claimData ,
this . _fingerprint
)
verificationResult . proof = {
fetcher : proofData . fetcher ,
viaProxy : proofData . viaProxy ,
}
} else {
// Consider the proof completed but with a negative result
2021-04-30 07:41:40 -06:00
verificationResult = verificationResult ? verificationResult : {
2021-04-22 07:52:25 -06:00
result : false ,
completed : true ,
proof : { } ,
errors : [ proofFetchError ] ,
}
2021-04-30 07:41:40 -06:00
if ( this . isAmbiguous ( ) ) {
// Assume a wrong match and continue
continue
}
2021-04-22 07:52:25 -06:00
}
if ( verificationResult . completed ) {
// Store the result, keep a single match and stop verifying
2021-04-30 07:41:40 -06:00
this . _verification = verificationResult
2021-04-30 04:30:50 -06:00
this . _matches = [ claimData ]
index = this . _matches . length
2021-04-22 07:52:25 -06:00
}
}
2021-04-30 07:41:40 -06:00
// Fail safe verification result
2021-04-30 08:20:56 -06:00
this . _verification = this . _verification ? this . _verification : {
2021-04-30 07:41:40 -06:00
result : false ,
completed : true ,
proof : { } ,
errors : [ 'Unknown error' ] ,
}
2021-04-22 07:52:25 -06:00
this . _status = E . ClaimStatus . VERIFIED
}
/ * *
* Determine the ambiguity of the claim . A claim is only unambiguous if any
* of the candidates is unambiguous . An ambiguous claim should never be
* displayed in an user interface when its result is negative .
* @ function
* @ returns { boolean }
* /
isAmbiguous ( ) {
if ( this . _status === E . ClaimStatus . INIT ) {
throw new Error ( 'The claim has not been matched yet' )
}
2021-04-30 04:30:50 -06:00
if ( this . _matches . length === 0 ) {
2021-04-22 07:52:25 -06:00
throw new Error ( 'The claim has no matches' )
}
return (
2021-04-30 04:30:50 -06:00
this . _matches . length > 1 || this . _matches [ 0 ] . match . isAmbiguous
2021-04-22 07:52:25 -06:00
)
}
/ * *
* Get a JSON representation of the Claim object . Useful when transferring
* data between instances / machines .
* @ function
* @ returns { object }
* /
toJSON ( ) {
return {
claimVersion : 1 ,
uri : this . _uri ,
fingerprint : this . _fingerprint ,
status : this . _status ,
2021-04-30 04:30:50 -06:00
matches : this . _matches ,
2021-04-30 07:41:40 -06:00
verification : this . _verification ,
2021-04-22 07:52:25 -06:00
}
}
}
module . exports = Claim
2021-04-30 04:30:50 -06:00
} , { "./claimDefinitions" : 123 , "./defaults" : 133 , "./enums" : 134 , "./proofs" : 145 , "./verifications" : 148 , "merge-options" : 8 , "valid-url" : 13 , "validator" : 14 } ] , 115 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/dev\.to\/(.*)\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'devto' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
} ,
profile : {
display : match [ 1 ] ,
uri : ` https://dev.to/ ${ match [ 1 ] } ` ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://dev.to/api/articles/ ${ match [ 1 ] } / ${ match [ 2 ] } ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'body_markdown' ] ,
} ,
}
}
const tests = [
{
uri : 'https://dev.to/alice/post' ,
shouldMatch : true ,
} ,
{
uri : 'https://dev.to/alice/post/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice/post' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 116 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/(.*)\/u\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'discourse' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
} ,
profile : {
display : ` ${ match [ 2 ] } @ ${ match [ 1 ] } ` ,
uri : uri ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https:// ${ match [ 1 ] } /u/ ${ match [ 2 ] } .json ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'user' , 'bio_raw' ] ,
} ,
}
}
const tests = [
{
uri : 'https://domain.org/u/alice' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/u/alice/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 117 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^dns:([a-zA-Z0-9\.\-\_]*)(?:\?(.*))?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'dns' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
} ,
profile : {
display : match [ 1 ] ,
uri : ` https:// ${ match [ 1 ] } ` ,
qr : null ,
} ,
proof : {
uri : null ,
request : {
fetcher : E . Fetcher . DNS ,
access : E . ProofAccess . SERVER ,
format : E . ProofFormat . JSON ,
data : {
domain : match [ 1 ] ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . URI ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'records' , 'txt' ] ,
} ,
}
}
const tests = [
{
uri : 'dns:domain.org' ,
shouldMatch : true ,
} ,
{
uri : 'dns:domain.org?type=TXT' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 118 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/(.*)\/users\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'fediverse' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
} ,
profile : {
display : ` @ ${ match [ 2 ] } @ ${ match [ 1 ] } ` ,
uri : uri ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : uri ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . FINGERPRINT ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'summary' ] ,
} ,
}
}
const tests = [
{
uri : 'https://domain.org/users/alice' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/users/alice/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 119 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/(.*)\/(.*)\/gitea_proof\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'gitea' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
} ,
profile : {
display : ` ${ match [ 2 ] } @ ${ match [ 1 ] } ` ,
uri : ` https:// ${ match [ 1 ] } / ${ match [ 2 ] } ` ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https:// ${ match [ 1 ] } /api/v1/repos/ ${ match [ 2 ] } /gitea_proof ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . EQUALS ,
path : [ 'description' ] ,
} ,
}
}
const tests = [
{
uri : 'https://domain.org/alice/gitea_proof' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice/gitea_proof/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice/other_proof' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 120 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/gist\.github\.com\/(.*)\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'github' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
} ,
profile : {
display : match [ 1 ] ,
uri : ` https://github.com/ ${ match [ 1 ] } ` ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://api.github.com/gists/ ${ match [ 2 ] } ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'files' , 'openpgp.md' , 'content' ] ,
} ,
}
}
const tests = [
{
uri : 'https://gist.github.com/Alice/123456789' ,
shouldMatch : true ,
} ,
{
uri : 'https://gist.github.com/Alice/123456789/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/Alice/123456789' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 121 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/(.*)\/(.*)\/gitlab_proof\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'gitlab' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
} ,
profile : {
display : ` ${ match [ 2 ] } @ ${ match [ 1 ] } ` ,
uri : ` https:// ${ match [ 1 ] } / ${ match [ 2 ] } ` ,
qr : null ,
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . GITLAB ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
domain : match [ 1 ] ,
username : match [ 2 ] ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . EQUALS ,
path : [ 'description' ] ,
} ,
}
}
const tests = [
{
uri : 'https://gitlab.domain.org/alice/gitlab_proof' ,
shouldMatch : true ,
} ,
{
uri : 'https://gitlab.domain.org/alice/gitlab_proof/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/alice/other_proof' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 122 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const E = require ( '../enums' )
const reURI = /^https:\/\/news\.ycombinator\.com\/user\?id=(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'hackernews' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
} ,
profile : {
display : match [ 1 ] ,
uri : uri ,
qr : null ,
} ,
proof : {
uri : ` https://hacker-news.firebaseio.com/v0/user/ ${ match [ 1 ] } .json ` ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://hacker-news.firebaseio.com/v0/user/ ${ match [ 1 ] } .json ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
} ,
claim : {
format : E . ClaimFormat . URI ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'about' ] ,
} ,
}
}
const tests = [
{
uri : 'https://news.ycombinator.com/user?id=Alice' ,
shouldMatch : true ,
} ,
{
uri : 'https://news.ycombinator.com/user?id=Alice/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/user?id=Alice' ,
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 123 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const list = [
'dns' ,
'irc' ,
'xmpp' ,
'matrix' ,
'twitter' ,
'reddit' ,
'liberapay' ,
'hackernews' ,
'lobsters' ,
'devto' ,
'gitea' ,
'gitlab' ,
'github' ,
'mastodon' ,
'fediverse' ,
'discourse' ,
'owncast' ,
]
const data = {
dns : require ( './dns' ) ,
irc : require ( './irc' ) ,
xmpp : require ( './xmpp' ) ,
matrix : require ( './matrix' ) ,
twitter : require ( './twitter' ) ,
reddit : require ( './reddit' ) ,
liberapay : require ( './liberapay' ) ,
hackernews : require ( './hackernews' ) ,
lobsters : require ( './lobsters' ) ,
devto : require ( './devto' ) ,
gitea : require ( './gitea' ) ,
gitlab : require ( './gitlab' ) ,
github : require ( './github' ) ,
mastodon : require ( './mastodon' ) ,
fediverse : require ( './fediverse' ) ,
discourse : require ( './discourse' ) ,
owncast : require ( './owncast' ) ,
2020-10-26 16:02:22 -06:00
}
2020-10-24 17:22:54 -06:00
exports . list = list
exports . data = data
2021-04-30 04:30:50 -06:00
} , { "./devto" : 115 , "./discourse" : 116 , "./dns" : 117 , "./fediverse" : 118 , "./gitea" : 119 , "./github" : 120 , "./gitlab" : 121 , "./hackernews" : 122 , "./irc" : 124 , "./liberapay" : 125 , "./lobsters" : 126 , "./mastodon" : 127 , "./matrix" : 128 , "./owncast" : 129 , "./reddit" : 130 , "./twitter" : 131 , "./xmpp" : 132 } ] , 124 : [ function ( require , module , exports ) {
2020-10-26 05:24:30 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-26 05:24:30 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-10-26 05:24:30 -06:00
2021-06-03 02:01:05 -06:00
const reURI = /^irc\:\/\/(.*)\/([a-zA-Z0-9\-\[\]\\\`\_\^\{\|\}]*)/
2021-04-22 07:52:25 -06:00
const processURI = ( uri ) => {
2020-10-26 05:24:30 -06:00
const match = uri . match ( reURI )
return {
serviceprovider : {
2021-04-22 07:52:25 -06:00
type : 'communication' ,
name : 'irc' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-10-26 05:24:30 -06:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : ` irc:// ${ match [ 1 ] } / ${ match [ 2 ] } ` ,
uri : uri ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-26 05:24:30 -06:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : null ,
request : {
fetcher : E . Fetcher . IRC ,
access : E . ProofAccess . SERVER ,
format : E . ProofFormat . JSON ,
data : {
domain : match [ 1 ] ,
nick : match [ 2 ] ,
} ,
} ,
2020-10-26 05:24:30 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . URI ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ] ,
2020-10-26 05:24:30 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'irc://chat.ircserver.org/Alice1' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'irc://chat.ircserver.org/alice?param=123' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
2021-06-03 02:01:05 -06:00
{
uri : 'irc://chat.ircserver.org/alice_bob' ,
shouldMatch : true ,
} ,
2020-10-26 05:24:30 -06:00
{
2021-04-22 07:52:25 -06:00
uri : 'https://chat.ircserver.org/alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-10-26 05:24:30 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 125 : [ function ( require , module , exports ) {
2020-10-24 17:55:32 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-24 17:55:32 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2020-11-03 14:53:04 -07:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/liberapay\.com\/(.*)\/?/
const processURI = ( uri ) => {
2020-11-03 14:53:04 -07:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'liberapay' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-11-03 14:53:04 -07:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : match [ 1 ] ,
2020-11-06 10:39:06 -07:00
uri : uri ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-11-03 14:53:04 -07:00
} ,
proof : {
uri : uri ,
2021-04-22 07:52:25 -06:00
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://liberapay.com/ ${ match [ 1 ] } /public.json ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
2020-11-03 14:53:04 -07:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'statements' , 'content' ] ,
2020-11-03 14:53:04 -07:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://liberapay.com/alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-11-03 14:53:04 -07:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://liberapay.com/alice/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-11-03 14:53:04 -07:00
} ,
{
uri : 'https://domain.org/alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-11-03 14:53:04 -07:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 126 : [ function ( require , module , exports ) {
2020-11-03 14:53:04 -07:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-11-03 14:53:04 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2020-10-24 17:55:32 -06:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/lobste\.rs\/u\/(.*)\/?/
2020-11-06 10:39:06 -07:00
2021-04-22 07:52:25 -06:00
const processURI = ( uri ) => {
2020-10-24 17:55:32 -06:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'lobsters' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-10-24 17:55:32 -06:00
} ,
profile : {
display : match [ 1 ] ,
2021-04-22 07:52:25 -06:00
uri : uri ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-24 17:55:32 -06:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : ` https://lobste.rs/u/ ${ match [ 1 ] } .json ` ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://lobste.rs/u/ ${ match [ 1 ] } .json ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
2020-10-24 17:55:32 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'about' ] ,
2020-10-24 17:55:32 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://lobste.rs/u/Alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-24 17:55:32 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://lobste.rs/u/Alice/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-24 17:55:32 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org/u/Alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-10-24 17:55:32 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 127 : [ function ( require , module , exports ) {
2020-11-03 14:53:04 -07:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-11-03 14:53:04 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/(.*)\/@(.*)\/?/
const processURI = ( uri ) => {
2020-11-03 14:53:04 -07:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'mastodon' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
2020-11-03 14:53:04 -07:00
} ,
profile : {
display : ` @ ${ match [ 2 ] } @ ${ match [ 1 ] } ` ,
2020-11-06 10:39:06 -07:00
uri : uri ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-11-03 14:53:04 -07:00
} ,
proof : {
uri : uri ,
2021-04-22 07:52:25 -06:00
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : uri ,
format : E . ProofFormat . JSON ,
} ,
} ,
2020-11-03 14:53:04 -07:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . FINGERPRINT ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'attachment' , 'value' ] ,
2020-11-03 14:53:04 -07:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org/@alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-11-03 14:53:04 -07:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org/@alice/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-11-03 14:53:04 -07:00
} ,
{
uri : 'https://domain.org/alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-11-03 14:53:04 -07:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 128 : [ function ( require , module , exports ) {
2020-10-26 05:24:30 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-26 05:24:30 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
const queryString = require ( 'query-string' )
2020-10-26 05:24:30 -06:00
2021-04-22 07:52:25 -06:00
const reURI = /^matrix\:u\/(?:\@)?([^@:]*\:[^?]*)(\?.*)?/
const processURI = ( uri ) => {
2020-10-26 05:24:30 -06:00
const match = uri . match ( reURI )
2021-04-22 07:52:25 -06:00
if ( ! match [ 2 ] ) {
return null
}
const params = queryString . parse ( match [ 2 ] )
if ( ! ( 'org.keyoxide.e' in params && 'org.keyoxide.r' in params ) ) {
return null
}
const profileUrl = ` https://matrix.to/#/@ ${ match [ 1 ] } `
const eventUrl = ` https://matrix.to/#/ ${ params [ 'org.keyoxide.r' ] } / ${ params [ 'org.keyoxide.e' ] } `
2020-10-26 05:24:30 -06:00
return {
serviceprovider : {
2021-04-22 07:52:25 -06:00
type : 'communication' ,
name : 'matrix' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-10-26 05:24:30 -06:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : ` @ ${ match [ 1 ] } ` ,
uri : profileUrl ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-26 05:24:30 -06:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : eventUrl ,
request : {
fetcher : E . Fetcher . MATRIX ,
access : E . ProofAccess . GRANTED ,
format : E . ProofFormat . JSON ,
data : {
eventId : params [ 'org.keyoxide.e' ] ,
roomId : params [ 'org.keyoxide.r' ] ,
} ,
} ,
2020-10-26 05:24:30 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'content' , 'body' ] ,
2020-10-26 05:24:30 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri :
'matrix:u/alice:matrix.domain.org?org.keyoxide.r=!123:domain.org&org.keyoxide.e=$123' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'matrix:u/alice:matrix.domain.org' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'xmpp:alice@domain.org' ,
shouldMatch : false ,
} ,
{
uri : 'https://domain.org/@alice' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-10-26 05:24:30 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 , "query-string" : 10 } ] , 129 : [ function ( require , module , exports ) {
2020-10-26 05:24:30 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-26 05:24:30 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-10-26 05:24:30 -06:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/(.*)/
const processURI = ( uri ) => {
2020-10-26 05:24:30 -06:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'owncast' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true ,
2020-10-26 05:24:30 -06:00
} ,
profile : {
display : match [ 1 ] ,
2021-04-22 07:52:25 -06:00
uri : uri ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-26 05:24:30 -06:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : ` ${ uri } /api/config ` ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : ` ${ uri } /api/config ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
2020-10-26 05:24:30 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . FINGERPRINT ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'socialHandles' , 'url' ] ,
2020-10-26 05:24:30 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://live.domain.org' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://live.domain.org/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 05:24:30 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org/live' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/live/' ,
shouldMatch : true ,
2020-11-18 13:51:53 -07:00
} ,
2020-10-26 05:24:30 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 130 : [ function ( require , module , exports ) {
2020-10-24 17:55:32 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-24 17:55:32 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2020-10-26 16:02:22 -06:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-10-26 16:02:22 -06:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/(?:www\.)?reddit\.com\/user\/(.*)\/comments\/(.*)\/(.*)\/?/
2020-10-26 16:02:22 -06:00
2021-04-22 07:52:25 -06:00
const processURI = ( uri ) => {
2020-10-26 16:02:22 -06:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'reddit' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-10-26 16:02:22 -06:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : match [ 1 ] ,
uri : ` https://www.reddit.com/user/ ${ match [ 1 ] } ` ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-26 16:02:22 -06:00
} ,
proof : {
uri : uri ,
2021-04-22 07:52:25 -06:00
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . NOCORS ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://www.reddit.com/user/ ${ match [ 1 ] } /comments/ ${ match [ 2 ] } .json ` ,
format : E . ProofFormat . JSON ,
} ,
} ,
2020-10-26 16:02:22 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'data' , 'children' , 'data' , 'selftext' ] ,
2020-10-26 16:02:22 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://www.reddit.com/user/Alice/comments/123456/post' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 16:02:22 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://www.reddit.com/user/Alice/comments/123456/post/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-26 16:02:22 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://reddit.com/user/Alice/comments/123456/post' ,
shouldMatch : true ,
} ,
{
uri : 'https://reddit.com/user/Alice/comments/123456/post/' ,
shouldMatch : true ,
} ,
{
uri : 'https://domain.org/user/Alice/comments/123456/post' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-10-26 16:02:22 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 131 : [ function ( require , module , exports ) {
2020-10-26 16:02:22 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-26 16:02:22 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2020-10-24 17:55:32 -06:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
const reURI = /^https:\/\/twitter\.com\/(.*)\/status\/([0-9]*)(?:\?.*)?/
const processURI = ( uri ) => {
2020-10-24 17:55:32 -06:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
2021-04-22 07:52:25 -06:00
name : 'twitter' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2020-10-24 17:55:32 -06:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : ` @ ${ match [ 1 ] } ` ,
uri : ` https://twitter.com/ ${ match [ 1 ] } ` ,
2020-11-18 13:51:53 -07:00
qr : null ,
2020-10-24 17:55:32 -06:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : uri ,
request : {
fetcher : E . Fetcher . TWITTER ,
access : E . ProofAccess . GRANTED ,
format : E . ProofFormat . TEXT ,
data : {
tweetId : match [ 2 ] ,
} ,
} ,
2020-10-24 17:55:32 -06:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ] ,
2020-10-24 17:55:32 -06:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'https://twitter.com/alice/status/1234567890123456789' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-24 17:55:32 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://twitter.com/alice/status/1234567890123456789/' ,
2020-11-18 13:51:53 -07:00
shouldMatch : true ,
2020-10-24 17:55:32 -06:00
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org/alice/status/1234567890123456789' ,
2020-11-18 13:51:53 -07:00
shouldMatch : false ,
} ,
2020-10-24 17:55:32 -06:00
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 132 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( '../enums' )
2021-03-05 09:13:08 -07:00
2021-04-22 07:52:25 -06:00
const reURI = /^xmpp:([a-zA-Z0-9\.\-\_]*)@([a-zA-Z0-9\.\-\_]*)(?:\?(.*))?/
const processURI = ( uri ) => {
2021-03-05 09:13:08 -07:00
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'communication' ,
2021-04-22 07:52:25 -06:00
name : 'xmpp' ,
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false ,
2021-03-05 09:13:08 -07:00
} ,
profile : {
2021-04-22 07:52:25 -06:00
display : ` ${ match [ 1 ] } @ ${ match [ 2 ] } ` ,
2021-03-05 09:13:08 -07:00
uri : uri ,
2021-04-22 07:52:25 -06:00
qr : uri ,
2021-03-05 09:13:08 -07:00
} ,
proof : {
2021-04-22 07:52:25 -06:00
uri : null ,
request : {
fetcher : E . Fetcher . XMPP ,
access : E . ProofAccess . SERVER ,
format : E . ProofFormat . TEXT ,
data : {
id : ` ${ match [ 1 ] } @ ${ match [ 2 ] } ` ,
field : 'note' ,
} ,
} ,
2021-03-05 09:13:08 -07:00
} ,
claim : {
2021-04-22 07:52:25 -06:00
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ] ,
2021-03-05 09:13:08 -07:00
} ,
}
}
const tests = [
{
2021-04-22 07:52:25 -06:00
uri : 'xmpp:alice@domain.org' ,
2021-03-05 09:13:08 -07:00
shouldMatch : true ,
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'xmpp:alice@domain.org?omemo-sid-123456789=A1B2C3D4E5F6G7H8I9' ,
2021-03-05 09:13:08 -07:00
shouldMatch : true ,
} ,
{
2021-04-22 07:52:25 -06:00
uri : 'https://domain.org' ,
2021-03-05 09:13:08 -07:00
shouldMatch : false ,
} ,
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
2021-04-30 04:30:50 -06:00
} , { "../enums" : 134 } ] , 133 : [ function ( require , module , exports ) {
2020-11-05 04:14:26 -07:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-11-05 04:14:26 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const E = require ( './enums' )
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* Contains default values
* @ module defaults
* /
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* The default options used throughout the library
* @ constant { object }
* @ property { object } proxy - Options related to the proxy
* @ property { string | null } proxy . hostname - The hostname of the proxy
* @ property { string } proxy . policy - The policy that defines when to use a proxy ( { @ link module : enums ~ ProxyPolicy | here } )
* @ property { object } claims - Options related to claim verification
* @ property { object } claims . irc - Options related to the verification of IRC claims
* @ property { string | null } claims . irc . nick - The nick that the library uses to connect to the IRC server
* @ property { object } claims . matrix - Options related to the verification of Matrix claims
* @ property { string | null } claims . matrix . instance - The server hostname on which the library can log in
* @ property { string | null } claims . matrix . accessToken - The access token required to identify the library ( { @ link https : //www.matrix.org/docs/guides/client-server-api|Matrix docs})
* @ property { object } claims . xmpp - Options related to the verification of XMPP claims
* @ property { string | null } claims . xmpp . service - The server hostname on which the library can log in
* @ property { string | null } claims . xmpp . username - The username used to log in
* @ property { string | null } claims . xmpp . password - The password used to log in
* @ property { object } claims . twitter - Options related to the verification of Twitter claims
* @ property { string | null } claims . twitter . bearerToken - The Twitter API ' s bearer token ( { @ link https : //developer.twitter.com/en/docs/authentication/oauth-2-0/bearer-tokens|Twitter docs})
* /
const opts = {
proxy : {
hostname : null ,
policy : E . ProxyPolicy . NEVER ,
} ,
claims : {
irc : {
nick : null ,
2020-11-05 04:14:26 -07:00
} ,
2021-04-22 07:52:25 -06:00
matrix : {
instance : null ,
accessToken : null ,
2020-11-05 04:14:26 -07:00
} ,
2021-04-22 07:52:25 -06:00
xmpp : {
service : null ,
username : null ,
password : null ,
2020-11-05 04:14:26 -07:00
} ,
2021-04-22 07:52:25 -06:00
twitter : {
bearerToken : null ,
2020-11-05 04:14:26 -07:00
} ,
2021-04-22 07:52:25 -06:00
} ,
2020-11-05 04:14:26 -07:00
}
2021-04-22 07:52:25 -06:00
exports . opts = opts
2021-04-30 04:30:50 -06:00
} , { "./enums" : 134 } ] , 134 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
/ * *
* Contains enums
* @ module enums
* /
/ * *
* The proxy policy that decides how to fetch a proof
* @ readonly
* @ enum { string }
* /
const ProxyPolicy = {
/** Proxy usage decision depends on environment and service provider */
ADAPTIVE : 'adaptive' ,
/** Always use a proxy */
ALWAYS : 'always' ,
/** Never use a proxy, skip a verification if a proxy is inevitable */
NEVER : 'never' ,
}
Object . freeze ( ProxyPolicy )
/ * *
* Methods for fetching proofs
* @ readonly
* @ enum { string }
* /
const Fetcher = {
/** Basic HTTP requests */
HTTP : 'http' ,
/** DNS module from Node.js */
DNS : 'dns' ,
/** IRC module from Node.js */
IRC : 'irc' ,
/** XMPP module from Node.js */
XMPP : 'xmpp' ,
/** HTTP request to Matrix API */
MATRIX : 'matrix' ,
/** HTTP request to Gitlab API */
GITLAB : 'gitlab' ,
/** HTTP request to Twitter API */
TWITTER : 'twitter' ,
}
Object . freeze ( Fetcher )
/ * *
* Levels of access restriction for proof fetching
* @ readonly
* @ enum { number }
* /
const ProofAccess = {
/** Any HTTP request will work */
GENERIC : 0 ,
/** CORS requests are denied */
NOCORS : 1 ,
/** HTTP requests must contain API or access tokens */
GRANTED : 2 ,
/** Not accessible by HTTP request, needs server software */
SERVER : 3 ,
}
Object . freeze ( ProofAccess )
/ * *
* Format of proof
* @ readonly
* @ enum { string }
* /
const ProofFormat = {
/** JSON format */
JSON : 'json' ,
/** Plaintext format */
TEXT : 'text' ,
}
Object . freeze ( ProofFormat )
/ * *
* Format of claim
* @ readonly
* @ enum { number }
* /
const ClaimFormat = {
/** `openpgp4fpr:123123123` */
URI : 0 ,
/** `123123123` */
FINGERPRINT : 1 ,
/** `[Verifying my OpenPGP key: openpgp4fpr:123123123]` */
MESSAGE : 2 ,
}
Object . freeze ( ClaimFormat )
/ * *
* How to find the claim inside the proof ' s JSON data
* @ readonly
* @ enum { number }
* /
const ClaimRelation = {
/** Claim is somewhere in the JSON field's textual content */
CONTAINS : 0 ,
/** Claim is equal to the JSON field's textual content */
EQUALS : 1 ,
/** Claim is equal to an element of the JSON field's array of strings */
ONEOF : 2 ,
}
Object . freeze ( ClaimRelation )
/ * *
* Status of the Claim instance
* @ readonly
* @ enum { string }
* /
const ClaimStatus = {
/** Claim has been initialized */
INIT : 'init' ,
/** Claim has matched its URI to candidate claim definitions */
MATCHED : 'matched' ,
/** Claim has verified one or multiple candidate claim definitions */
VERIFIED : 'verified' ,
}
Object . freeze ( ClaimStatus )
exports . ProxyPolicy = ProxyPolicy
exports . Fetcher = Fetcher
exports . ProofAccess = ProofAccess
exports . ProofFormat = ProofFormat
exports . ClaimFormat = ClaimFormat
exports . ClaimRelation = ClaimRelation
exports . ClaimStatus = ClaimStatus
2021-04-30 04:30:50 -06:00
} , { } ] , 135 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-26 08:01:40 -06:00
const jsEnv = require ( "browser-or-node" )
2021-04-22 07:52:25 -06:00
/ * *
* @ module fetcher / dns
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
2021-05-22 02:22:49 -06:00
if ( jsEnv . isNode ) {
2021-04-26 08:01:40 -06:00
const dns = require ( 'dns' )
2021-04-22 07:52:25 -06:00
2021-04-26 08:01:40 -06:00
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . domain - The targeted domain
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
2021-04-22 07:52:25 -06:00
2021-04-26 08:01:40 -06:00
const fetchPromise = new Promise ( ( resolve , reject ) => {
dns . resolveTxt ( data . domain , ( err , records ) => {
if ( err ) {
reject ( err )
return
}
resolve ( {
domain : data . domain ,
records : {
txt : records ,
} ,
} )
2021-04-22 07:52:25 -06:00
} )
} )
2021-04-26 08:01:40 -06:00
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} else {
module . exports . fn = null
2021-04-22 07:52:25 -06:00
}
2021-04-30 04:30:50 -06:00
} , { "browser-or-node" : 3 , "dns" : 4 } ] , 136 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const bent = require ( 'bent' )
const req = bent ( 'GET' )
/ * *
* @ module fetcher / gitlab
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . username - The username of the targeted account
* @ param { string } data . domain - The domain on which the targeted account is registered
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
const fetchPromise = new Promise ( async ( resolve , reject ) => {
const urlUser = ` https:// ${ data . domain } /api/v4/users?username= ${ data . username } `
const resUser = await req ( urlUser , null , { Accept : 'application/json' } )
const jsonUser = await resUser . json ( )
const user = jsonUser . find ( ( user ) => user . username === data . username )
if ( ! user ) {
reject ( ` No user with username ${ data . username } ` )
}
const urlProject = ` https:// ${ data . domain } /api/v4/users/ ${ user . id } /projects `
const resProject = await req ( urlProject , null , {
Accept : 'application/json' ,
} )
const jsonProject = await resProject . json ( )
const project = jsonProject . find ( ( proj ) => proj . path === 'gitlab_proof' )
if ( ! project ) {
reject ( ` No project found ` )
}
resolve ( project )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
2021-04-30 04:30:50 -06:00
} , { "bent" : 1 } ] , 137 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const bent = require ( 'bent' )
const req = bent ( 'GET' )
const E = require ( '../enums' )
/ * *
* @ module fetcher / http
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . url - The URL pointing at targeted content
* @ param { string } data . format - The format of the targeted content
* @ returns { object | string }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
const fetchPromise = new Promise ( ( resolve , reject ) => {
if ( ! data . url ) {
reject ( 'No valid URI provided' )
return
}
switch ( data . format ) {
case E . ProofFormat . JSON :
req ( data . url , null , {
Accept : 'application/json' ,
'User-Agent' : ` doipjs/ ${ require ( '../../package.json' ) . version } ` ,
} )
. then ( async ( res ) => {
return await res . json ( )
} )
. then ( ( res ) => {
resolve ( res )
} )
. catch ( ( e ) => {
reject ( e )
} )
break
case E . ProofFormat . TEXT :
req ( data . url )
. then ( async ( res ) => {
return await res . text ( )
} )
. then ( ( res ) => {
resolve ( res )
} )
. catch ( ( e ) => {
reject ( e )
} )
break
default :
reject ( 'No specified data format' )
break
}
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
2021-04-30 04:30:50 -06:00
} , { "../../package.json" : 113 , "../enums" : 134 , "bent" : 1 } ] , 138 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2020-11-05 04:14:26 -07:00
2021-04-22 07:52:25 -06:00
exports . dns = require ( './dns' )
exports . gitlab = require ( './gitlab' )
exports . http = require ( './http' )
exports . irc = require ( './irc' )
exports . matrix = require ( './matrix' )
exports . twitter = require ( './twitter' )
exports . xmpp = require ( './xmpp' )
2021-04-23 02:25:25 -06:00
2021-04-30 04:30:50 -06:00
} , { "./dns" : 135 , "./gitlab" : 136 , "./http" : 137 , "./irc" : 139 , "./matrix" : 140 , "./twitter" : 141 , "./xmpp" : 142 } ] , 139 : [ function ( require , module , exports ) {
2020-10-24 17:55:32 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-24 17:55:32 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-26 08:01:40 -06:00
const jsEnv = require ( "browser-or-node" )
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
/ * *
* @ module fetcher / irc
* /
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 20000
2020-10-24 17:55:32 -06:00
2021-04-26 08:01:40 -06:00
if ( jsEnv . isNode ) {
const irc = require ( 'irc-upd' )
const validator = require ( 'validator' )
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . nick - The nick of the targeted account
* @ param { string } data . domain - The domain on which the targeted account is registered
* @ param { object } opts - Options used to enable the request
* @ param { string } opts . claims . irc . nick - The nick to be used by the library to log in
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
const fetchPromise = new Promise ( ( resolve , reject ) => {
try {
validator . isAscii ( opts . claims . irc . nick )
} catch ( err ) {
throw new Error ( ` IRC fetcher was not set up properly ( ${ err . message } ) ` )
}
try {
const client = new irc . Client ( data . domain , opts . claims . irc . nick , {
port : 6697 ,
secure : true ,
channels : [ ] ,
2021-05-21 07:29:44 -06:00
showErrors : false ,
debug : false
2021-04-26 08:01:40 -06:00
} )
const reKey = /[a-zA-Z0-9\-\_]+\s+:\s(openpgp4fpr\:.*)/
const reEnd = /End\sof\s.*\staxonomy./
let keys = [ ]
client . addListener ( 'registered' , ( message ) => {
2021-05-21 07:29:44 -06:00
client . send ( ` PRIVMSG NickServ TAXONOMY ${ data . nick } ` )
2021-04-26 08:01:40 -06:00
} )
client . addListener ( 'notice' , ( nick , to , text , message ) => {
if ( reKey . test ( text ) ) {
const match = text . match ( reKey )
keys . push ( match [ 1 ] )
}
if ( reEnd . test ( text ) ) {
client . disconnect ( )
resolve ( keys )
}
} )
} catch ( error ) {
reject ( error )
}
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} else {
module . exports . fn = null
2021-04-22 07:52:25 -06:00
}
2020-10-24 17:55:32 -06:00
2021-04-30 04:30:50 -06:00
} , { "browser-or-node" : 3 , "irc-upd" : "irc-upd" , "validator" : 14 } ] , 140 : [ function ( require , module , exports ) {
2020-11-03 14:53:04 -07:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-11-03 14:53:04 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const bent = require ( 'bent' )
const bentReq = bent ( 'GET' )
const validator = require ( 'validator' )
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* @ module fetcher / matrix
* /
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . eventId - The identifier of the targeted post
* @ param { string } data . roomId - The identifier of the room containing the targeted post
* @ param { object } opts - Options used to enable the request
* @ param { string } opts . claims . matrix . instance - The server hostname on which the library can log in
* @ param { string } opts . claims . matrix . accessToken - The access token required to identify the library ( { @ link https : //www.matrix.org/docs/guides/client-server-api|Matrix docs})
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
2020-11-03 14:53:04 -07:00
2021-04-22 07:52:25 -06:00
const fetchPromise = new Promise ( ( resolve , reject ) => {
try {
validator . isFQDN ( opts . claims . matrix . instance )
validator . isAscii ( opts . claims . matrix . accessToken )
} catch ( err ) {
throw new Error ( ` Matrix fetcher was not set up properly ( ${ err . message } ) ` )
}
const url = ` https:// ${ opts . claims . matrix . instance } /_matrix/client/r0/rooms/ ${ data . roomId } /event/ ${ data . eventId } ?access_token= ${ opts . claims . matrix . accessToken } `
bentReq ( url , null , {
Accept : 'application/json' ,
} )
. then ( async ( res ) => {
return await res . json ( )
} )
. then ( ( res ) => {
resolve ( res )
} )
. catch ( ( error ) => {
reject ( error )
} )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
2020-11-03 14:53:04 -07:00
2021-04-30 04:30:50 -06:00
} , { "bent" : 1 , "validator" : 14 } ] , 141 : [ function ( require , module , exports ) {
2021-03-05 09:13:08 -07:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const bent = require ( 'bent' )
2021-04-22 07:52:25 -06:00
const bentReq = bent ( 'GET' )
const validator = require ( 'validator' )
2021-03-05 09:13:08 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* @ module fetcher / twitter
* /
2021-03-06 15:34:20 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { number | string } data . tweetId - Identifier of the tweet
* @ param { object } opts - Options used to enable the request
* @ param { string } opts . claims . twitter . bearerToken - The Twitter API ' s bearer token
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
} )
const fetchPromise = new Promise ( ( resolve , reject ) => {
try {
validator . isAscii ( opts . claims . twitter . bearerToken )
} catch ( err ) {
throw new Error (
` Twitter fetcher was not set up properly ( ${ err . message } ) `
2021-03-05 16:06:46 -07:00
)
2021-03-05 09:13:08 -07:00
}
2021-04-22 07:52:25 -06:00
bentReq (
` https://api.twitter.com/1.1/statuses/show.json?id= ${ data . tweetId } &tweet_mode=extended ` ,
null ,
{
Accept : 'application/json' ,
Authorization : ` Bearer ${ opts . claims . twitter . bearerToken } ` ,
}
)
. then ( async ( data ) => {
return await data . json ( )
} )
. then ( ( data ) => {
resolve ( data . full _text )
} )
. catch ( ( error ) => {
reject ( error )
} )
} )
2021-03-05 09:13:08 -07:00
2021-04-22 07:52:25 -06:00
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
2021-03-05 09:13:08 -07:00
2021-04-30 04:30:50 -06:00
} , { "bent" : 1 , "validator" : 14 } ] , 142 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
( function ( process ) { ( function ( ) {
2020-10-26 05:24:30 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-26 05:24:30 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2021-01-13 05:27:58 -07:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-26 08:01:40 -06:00
const jsEnv = require ( "browser-or-node" )
2021-01-13 05:27:58 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* @ module fetcher / xmpp
* /
2021-01-13 05:27:58 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
2021-01-13 05:27:58 -07:00
2021-04-26 08:01:40 -06:00
if ( jsEnv . isNode ) {
const jsdom = require ( 'jsdom' )
const { client , xml } = require ( '@xmpp/client' )
const debug = require ( '@xmpp/debug' )
const validator = require ( 'validator' )
let xmpp = null ,
iqCaller = null
const xmppStart = async ( service , username , password ) => {
return new Promise ( ( resolve , reject ) => {
const xmpp = client ( {
service : service ,
username : username ,
password : password ,
} )
if ( process . env . NODE _ENV !== 'production' ) {
debug ( xmpp , true )
}
const { iqCaller } = xmpp
xmpp . start ( )
xmpp . on ( 'online' , ( address ) => {
resolve ( { xmpp : xmpp , iqCaller : iqCaller } )
} )
xmpp . on ( 'error' , ( error ) => {
reject ( error )
} )
2021-04-22 07:52:25 -06:00
} )
2021-04-26 08:01:40 -06:00
}
/ * *
* Execute a fetch request
* @ function
* @ async
* @ param { object } data - Data used in the request
* @ param { string } data . id - The identifier of the targeted account
* @ param { string } data . field - The vCard field to return ( should be "note" )
* @ param { object } opts - Options used to enable the request
* @ param { string } opts . claims . xmpp . service - The server hostname on which the library can log in
* @ param { string } opts . claims . xmpp . username - The username used to log in
* @ param { string } opts . claims . xmpp . password - The password used to log in
* @ returns { object }
* /
module . exports . fn = async ( data , opts ) => {
let timeoutHandle
const timeoutPromise = new Promise ( ( resolve , reject ) => {
timeoutHandle = setTimeout (
( ) => reject ( new Error ( 'Request was timed out' ) ) ,
data . fetcherTimeout ? data . fetcherTimeout : module . exports . timeout
)
2021-04-22 07:52:25 -06:00
} )
2021-04-26 08:01:40 -06:00
const fetchPromise = new Promise ( async ( resolve , reject ) => {
try {
validator . isFQDN ( opts . claims . xmpp . service )
validator . isAscii ( opts . claims . xmpp . username )
validator . isAscii ( opts . claims . xmpp . password )
} catch ( err ) {
throw new Error ( ` XMPP fetcher was not set up properly ( ${ err . message } ) ` )
}
if ( ! xmpp || xmpp . status !== 'online' ) {
const xmppStartRes = await xmppStart (
opts . claims . xmpp . service ,
opts . claims . xmpp . username ,
opts . claims . xmpp . password
)
xmpp = xmppStartRes . xmpp
iqCaller = xmppStartRes . iqCaller
}
const response = await iqCaller . request (
xml ( 'iq' , { type : 'get' , to : data . id } , xml ( 'vCard' , 'vcard-temp' ) ) ,
30 * 1000
2021-04-22 07:52:25 -06:00
)
2021-04-26 08:01:40 -06:00
const vcardRow = response . getChild ( 'vCard' , 'vcard-temp' ) . toString ( )
const dom = new jsdom . JSDOM ( vcardRow )
try {
let vcard
switch ( data . field . toLowerCase ( ) ) {
case 'desc' :
case 'note' :
vcard = dom . window . document . querySelector ( 'note text' )
if ( ! vcard ) {
vcard = dom . window . document . querySelector ( 'DESC' )
}
if ( vcard ) {
vcard = vcard . textContent
} else {
throw new Error ( 'No DESC or NOTE field found in vCard' )
}
break
default :
vcard = dom . window . document . querySelector ( data ) . textContent
break
}
xmpp . stop ( )
resolve ( vcard )
} catch ( error ) {
reject ( error )
2021-04-22 07:52:25 -06:00
}
2021-04-26 08:01:40 -06:00
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} else {
module . exports . fn = null
2021-04-22 07:52:25 -06:00
}
} ) . call ( this ) } ) . call ( this , require ( '_process' ) )
2021-04-30 04:30:50 -06:00
} , { "@xmpp/client" : "@xmpp/client" , "@xmpp/debug" : "@xmpp/debug" , "_process" : 9 , "browser-or-node" : 3 , "jsdom" : "jsdom" , "validator" : 14 } ] , 143 : [ function ( require , module , exports ) {
2021-01-13 05:27:58 -07:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
2020-10-26 05:24:30 -06:00
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const Claim = require ( './claim' )
const claimDefinitions = require ( './claimDefinitions' )
const proofs = require ( './proofs' )
const keys = require ( './keys' )
const signatures = require ( './signatures' )
const enums = require ( './enums' )
const defaults = require ( './defaults' )
const utils = require ( './utils' )
2020-10-26 05:24:30 -06:00
2021-04-22 07:52:25 -06:00
exports . Claim = Claim
exports . claimDefinitions = claimDefinitions
exports . proofs = proofs
exports . keys = keys
exports . signatures = signatures
exports . enums = enums
exports . defaults = defaults
exports . utils = utils
2020-10-26 05:24:30 -06:00
2021-04-30 04:30:50 -06:00
} , { "./claim" : 114 , "./claimDefinitions" : 123 , "./defaults" : 133 , "./enums" : 134 , "./keys" : 144 , "./proofs" : 145 , "./signatures" : 146 , "./utils" : 147 } ] , 144 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
( function ( global ) { ( function ( ) {
2020-10-24 17:55:32 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-24 17:55:32 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-03-02 02:48:52 -07:00
const bent = require ( 'bent' )
const req = bent ( 'GET' )
2021-04-22 07:52:25 -06:00
const validUrl = require ( 'valid-url' )
const openpgp = ( typeof window !== "undefined" ? window [ 'openpgp' ] : typeof global !== "undefined" ? global [ 'openpgp' ] : null )
const Claim = require ( './claim' )
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
/ * *
* Functions related to the fetching and handling of keys
* @ module keys
* /
2021-03-02 07:13:44 -07:00
2021-04-22 07:52:25 -06:00
/ * *
* Fetch a public key using keyservers
* @ function
* @ param { string } identifier - Fingerprint or email address
* @ param { string } [ keyserverDomain = keys . openpgp . org ] - Domain of the keyserver
* @ returns { openpgp . key . Key }
* @ example
* const key1 = doip . keys . fetchHKP ( 'alice@domain.tld' ) ;
* const key2 = doip . keys . fetchHKP ( '123abc123abc' ) ;
* /
2021-04-23 02:25:25 -06:00
exports . fetchHKP = ( identifier , keyserverDomain ) => {
2021-04-22 07:52:25 -06:00
return new Promise ( async ( resolve , reject ) => {
const keyserverBaseUrl = keyserverDomain
? ` https:// ${ keyserverDomain } `
: 'https://keys.openpgp.org'
const hkp = new openpgp . HKP ( keyserverBaseUrl )
const lookupOpts = {
query : identifier ,
2021-03-02 07:13:44 -07:00
}
2021-04-22 07:52:25 -06:00
let publicKey = await hkp . lookup ( lookupOpts ) . catch ( ( error ) => {
reject ( 'Key does not exist or could not be fetched' )
2021-03-01 10:35:59 -07:00
} )
2021-04-22 07:52:25 -06:00
publicKey = await openpgp . key
. readArmored ( publicKey )
. then ( ( result ) => {
return result . keys [ 0 ]
2021-03-05 16:06:46 -07:00
} )
2021-04-22 07:52:25 -06:00
. catch ( ( error ) => {
return null
} )
if ( publicKey ) {
resolve ( publicKey )
} else {
reject ( 'Key does not exist or could not be fetched' )
}
} )
}
/ * *
* Fetch a public key using Web Key Directory
* @ function
* @ param { string } identifier - Identifier of format ' username @ domain . tld `
* @ returns { openpgp . key . Key }
* @ example
* const key = doip . keys . fetchWKD ( 'alice@domain.tld' ) ;
* /
exports . fetchWKD = ( identifier ) => {
return new Promise ( async ( resolve , reject ) => {
const wkd = new openpgp . WKD ( )
const lookupOpts = {
email : identifier ,
}
const publicKey = await wkd
. lookup ( lookupOpts )
. then ( ( result ) => {
return result . keys [ 0 ]
2021-03-05 16:06:46 -07:00
} )
2021-04-22 07:52:25 -06:00
. catch ( ( error ) => {
return null
2021-03-05 16:06:46 -07:00
} )
2021-03-02 07:13:44 -07:00
2021-04-22 07:52:25 -06:00
if ( publicKey ) {
resolve ( publicKey )
} else {
reject ( 'Key does not exist or could not be fetched' )
}
} )
2021-03-01 10:35:59 -07:00
}
2021-04-22 07:52:25 -06:00
/ * *
* Fetch a public key from Keybase
* @ function
* @ param { string } username - Keybase username
* @ param { string } fingerprint - Fingerprint of key
* @ returns { openpgp . key . Key }
* @ example
* const key = doip . keys . fetchKeybase ( 'alice' , '123abc123abc' ) ;
* /
exports . fetchKeybase = ( username , fingerprint ) => {
return new Promise ( async ( resolve , reject ) => {
const keyLink = ` https://keybase.io/ ${ username } /pgp_keys.asc?fingerprint= ${ fingerprint } `
2021-05-21 07:29:44 -06:00
let rawKeyContent
2021-04-22 07:52:25 -06:00
try {
2021-05-21 07:29:44 -06:00
rawKeyContent = await req ( keyLink )
2021-04-22 07:52:25 -06:00
. then ( ( response ) => {
if ( response . status === 200 ) {
return response
}
} )
. then ( ( response ) => response . text ( ) )
} catch ( e ) {
reject ( ` Error fetching Keybase key: ${ e . message } ` )
}
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
const publicKey = await openpgp . key
. readArmored ( rawKeyContent )
. then ( ( result ) => {
return result . keys [ 0 ]
} )
. catch ( ( error ) => {
return null
} )
if ( publicKey ) {
resolve ( publicKey )
} else {
reject ( 'Key does not exist or could not be fetched' )
}
} )
2020-10-24 17:55:32 -06:00
}
2021-04-22 07:52:25 -06:00
/ * *
* Get a public key from plaintext data
* @ function
* @ param { string } rawKeyContent - Plaintext ASCII - formatted public key data
* @ returns { openpgp . key . Key }
* @ example
* const plainkey = ` -----BEGIN PGP PUBLIC KEY BLOCK-----
2021-04-23 02:25:25 -06:00
*
2021-04-22 07:52:25 -06:00
* mQINBF0mIsIBEADacleiyiV + z6FIunvLWrO6ZETxGNVpqM + WbBQKdW1BVrJBBolg
* [ ... ]
* = 6 lib
* -- -- - END PGP PUBLIC KEY BLOCK -- -- - `
* const key = doip . keys . fetchPlaintext ( plainkey ) ;
* /
exports . fetchPlaintext = ( rawKeyContent ) => {
return new Promise ( async ( resolve , reject ) => {
const publicKey = ( await openpgp . key . readArmored ( rawKeyContent ) ) . keys [ 0 ]
resolve ( publicKey )
} )
}
/ * *
* Fetch a public key using an URI
* @ function
* @ param { string } uri - URI that defines the location of the key
* @ returns { openpgp . key . Key }
* @ example
* const key1 = doip . keys . fetchURI ( 'hkp:alice@domain.tld' ) ;
* const key2 = doip . keys . fetchURI ( 'hkp:123abc123abc' ) ;
* const key3 = doip . keys . fetchURI ( 'wkd:alice@domain.tld' ) ;
* /
exports . fetchURI = ( uri ) => {
return new Promise ( async ( resolve , reject ) => {
if ( ! validUrl . isUri ( uri ) ) {
reject ( 'Invalid URI' )
}
const re = /([a-zA-Z0-9]*):([a-zA-Z0-9@._=+\-]*)(?:\:([a-zA-Z0-9@._=+\-]*))?/
const match = uri . match ( re )
if ( ! match [ 1 ] ) {
reject ( 'Invalid URI' )
}
switch ( match [ 1 ] ) {
case 'hkp' :
resolve (
2021-04-23 02:25:25 -06:00
exports . fetchHKP (
match [ 3 ] ? match [ 3 ] : match [ 2 ] ,
match [ 3 ] ? match [ 2 ] : null
)
2021-04-22 07:52:25 -06:00
)
break
case 'wkd' :
resolve ( exports . fetchWKD ( match [ 2 ] ) )
break
case 'kb' :
2021-04-23 02:25:25 -06:00
resolve (
exports . fetchKeybase ( match [ 2 ] , match . length >= 4 ? match [ 3 ] : null )
)
2021-04-22 07:52:25 -06:00
break
default :
reject ( 'Invalid URI protocol' )
break
}
} )
}
/ * *
* Process a public key to get user data and claims
* @ function
* @ param { openpgp . key . Key } publicKey - The public key to process
* @ returns { object }
* @ example
* const key = doip . keys . fetchURI ( 'hkp:alice@domain.tld' ) ;
* const data = doip . keys . process ( key ) ;
* data . users [ 0 ] . claims . forEach ( claim => {
* console . log ( claim . uri ) ;
* } ) ;
* /
exports . process = ( publicKey ) => {
return new Promise ( async ( resolve , reject ) => {
if ( ! publicKey || ! ( publicKey instanceof openpgp . key . Key ) ) {
reject ( 'Invalid public key' )
}
const fingerprint = await publicKey . primaryKey . getFingerprint ( )
const primaryUser = await publicKey . getPrimaryUser ( )
const users = publicKey . users
let usersOutput = [ ]
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
users . forEach ( ( user , i ) => {
usersOutput [ i ] = {
userData : {
id : user . userId ? user . userId . userid : null ,
name : user . userId ? user . userId . name : null ,
email : user . userId ? user . userId . email : null ,
comment : user . userId ? user . userId . comment : null ,
isPrimary : primaryUser . index === i ,
} ,
claims : [ ] ,
}
if ( 'selfCertifications' in user && user . selfCertifications . length > 0 ) {
const notations = user . selfCertifications [ 0 ] . rawNotations
usersOutput [ i ] . claims = notations . map (
( { name , value , humanReadable } ) => {
if ( humanReadable && name === 'proof@metacode.biz' ) {
const notation = openpgp . util . decode _utf8 ( value )
return new Claim ( notation , fingerprint )
}
}
)
}
} )
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
resolve ( {
fingerprint : fingerprint ,
users : usersOutput ,
primaryUserIndex : primaryUser . index ,
key : {
data : publicKey ,
fetchMethod : null ,
uri : null ,
} ,
} )
} )
}
2021-04-23 02:25:25 -06:00
2021-04-22 07:52:25 -06:00
} ) . call ( this ) } ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
2021-04-30 04:30:50 -06:00
} , { "./claim" : 114 , "bent" : 1 , "valid-url" : 13 } ] , 145 : [ function ( require , module , exports ) {
2020-10-24 17:55:32 -06:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-10-24 17:55:32 -06:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const jsEnv = require ( 'browser-or-node' )
const fetcher = require ( './fetcher' )
const utils = require ( './utils' )
const E = require ( './enums' )
/ * *
2021-04-23 02:25:25 -06:00
* @ module proofs
2021-04-22 07:52:25 -06:00
* /
/ * *
* Delegate the proof request to the correct fetcher .
* This method uses the current environment ( browser / node ) , certain values from
* the ` data ` parameter and the proxy policy set in the ` opts ` parameter to
* choose the right approach to fetch the proof . An error will be thrown if no
* approach is possible .
* @ async
* @ param { object } data - Data from a claim definition
* @ param { object } opts - Options to enable the request
* @ returns { Promise < object | string > }
* /
const fetch = ( data , opts ) => {
switch ( data . proof . request . fetcher ) {
case E . Fetcher . HTTP :
data . proof . request . data . format = data . proof . request . format
break
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
default :
break
2020-11-18 13:51:53 -07:00
}
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
if ( jsEnv . isNode ) {
return handleNodeRequests ( data , opts )
2020-10-24 17:55:32 -06:00
}
2021-04-22 07:52:25 -06:00
return handleBrowserRequests ( data , opts )
2020-10-24 17:55:32 -06:00
}
2021-04-22 07:52:25 -06:00
const handleBrowserRequests = ( data , opts ) => {
switch ( opts . proxy . policy ) {
case E . ProxyPolicy . ALWAYS :
return createProxyRequestPromise ( data , opts )
break
2020-10-24 17:55:32 -06:00
2021-04-22 07:52:25 -06:00
case E . ProxyPolicy . NEVER :
switch ( data . proof . request . access ) {
case E . ProofAccess . GENERIC :
case E . ProofAccess . GRANTED :
return createDefaultRequestPromise ( data , opts )
break
case E . ProofAccess . NOCORS :
case E . ProofAccess . SERVER :
throw new Error (
'Impossible to fetch proof (bad combination of service access and proxy policy)'
)
break
default :
throw new Error ( 'Invalid proof access value' )
break
}
break
case E . ProxyPolicy . ADAPTIVE :
switch ( data . proof . request . access ) {
case E . ProofAccess . GENERIC :
2021-04-30 07:41:40 -06:00
return createFallbackRequestPromise ( data , opts )
2021-04-22 07:52:25 -06:00
break
case E . ProofAccess . NOCORS :
return createProxyRequestPromise ( data , opts )
break
case E . ProofAccess . GRANTED :
return createFallbackRequestPromise ( data , opts )
break
case E . ProofAccess . SERVER :
2021-04-26 08:01:40 -06:00
return createProxyRequestPromise ( data , opts )
2021-04-22 07:52:25 -06:00
break
default :
throw new Error ( 'Invalid proof access value' )
break
}
break
default :
throw new Error ( 'Invalid proxy policy' )
break
}
}
const handleNodeRequests = ( data , opts ) => {
switch ( opts . proxy . policy ) {
case E . ProxyPolicy . ALWAYS :
return createProxyRequestPromise ( data , opts )
break
case E . ProxyPolicy . NEVER :
return createDefaultRequestPromise ( data , opts )
break
case E . ProxyPolicy . ADAPTIVE :
return createFallbackRequestPromise ( data , opts )
break
default :
throw new Error ( 'Invalid proxy policy' )
break
}
}
const createDefaultRequestPromise = ( data , opts ) => {
return new Promise ( ( resolve , reject ) => {
fetcher [ data . proof . request . fetcher ]
. fn ( data . proof . request . data , opts )
. then ( ( res ) => {
return resolve ( {
fetcher : data . proof . request . fetcher ,
data : data ,
viaProxy : false ,
result : res ,
} )
} )
. catch ( ( err ) => {
return reject ( err )
} )
} )
}
const createProxyRequestPromise = ( data , opts ) => {
return new Promise ( ( resolve , reject ) => {
let proxyUrl
try {
proxyUrl = utils . generateProxyURL (
data . proof . request . fetcher ,
data . proof . request . data ,
opts
)
} catch ( err ) {
reject ( err )
}
const requestData = {
url : proxyUrl ,
format : data . proof . request . format ,
fetcherTimeout : fetcher [ data . proof . request . fetcher ] . timeout ,
}
fetcher . http
. fn ( requestData , opts )
. then ( ( res ) => {
return resolve ( {
fetcher : 'http' ,
data : data ,
viaProxy : true ,
result : res ,
} )
} )
. catch ( ( err ) => {
return reject ( err )
} )
} )
}
const createFallbackRequestPromise = ( data , opts ) => {
return new Promise ( ( resolve , reject ) => {
createDefaultRequestPromise ( data , opts )
. then ( ( res ) => {
return resolve ( res )
} )
. catch ( ( err1 ) => {
createProxyRequestPromise ( data , opts )
. then ( ( res ) => {
return resolve ( res )
} )
. catch ( ( err2 ) => {
return reject ( [ err1 , err2 ] )
} )
} )
} )
}
exports . fetch = fetch
2020-10-24 17:55:32 -06:00
2021-04-30 04:30:50 -06:00
} , { "./enums" : 134 , "./fetcher" : 138 , "./utils" : 147 , "browser-or-node" : 3 } ] , 146 : [ function ( require , module , exports ) {
2021-01-07 08:26:31 -07:00
( function ( global ) { ( function ( ) {
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2021-01-07 08:26:31 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const openpgp = ( typeof window !== "undefined" ? window [ 'openpgp' ] : typeof global !== "undefined" ? global [ 'openpgp' ] : null )
2021-04-22 07:52:25 -06:00
const Claim = require ( './claim' )
2021-01-07 08:26:31 -07:00
const keys = require ( './keys' )
2021-04-22 07:52:25 -06:00
/ * *
2021-04-23 02:25:25 -06:00
* @ module signatures
2021-04-22 07:52:25 -06:00
* /
/ * *
* Extract data from a signature and fetch the associated key
* @ async
* @ param { string } signature - The plaintext signature to process
* @ returns { Promise < object > }
* /
const process = ( signature ) => {
2021-01-07 08:26:31 -07:00
return new Promise ( async ( resolve , reject ) => {
2021-04-22 07:52:25 -06:00
let sigData ,
result = {
fingerprint : null ,
users : [
{
userData : { } ,
claims : [ ] ,
} ,
] ,
primaryUserIndex : null ,
key : {
data : null ,
fetchMethod : null ,
uri : null ,
} ,
}
2021-01-09 07:22:59 -07:00
2021-01-07 08:26:31 -07:00
try {
sigData = await openpgp . cleartext . readArmored ( signature )
} catch ( error ) {
2021-04-22 07:52:25 -06:00
reject ( new Error ( 'invalid_signature' ) )
2021-01-09 07:22:59 -07:00
return
2021-01-07 08:26:31 -07:00
}
2021-01-09 07:22:59 -07:00
const issuerKeyId = sigData . signature . packets [ 0 ] . issuerKeyId . toHex ( )
const signersUserId = sigData . signature . packets [ 0 ] . signersUserId
const preferredKeyServer =
sigData . signature . packets [ 0 ] . preferredKeyServer ||
2021-01-10 09:59:24 -07:00
'https://keys.openpgp.org/'
2021-01-07 08:26:31 -07:00
const text = sigData . getText ( )
let sigKeys = [ ]
2021-01-09 07:22:59 -07:00
2021-01-07 08:26:31 -07:00
text . split ( '\n' ) . forEach ( ( line , i ) => {
2021-01-10 04:34:47 -07:00
const match = line . match ( /^([a-zA-Z0-9]*)\=(.*)$/i )
2021-01-07 08:26:31 -07:00
if ( ! match ) {
return
}
switch ( match [ 1 ] . toLowerCase ( ) ) {
case 'key' :
sigKeys . push ( match [ 2 ] )
break
case 'proof' :
2021-04-22 07:52:25 -06:00
result . users [ 0 ] . claims . push ( new Claim ( match [ 2 ] ) )
2021-01-07 08:26:31 -07:00
break
default :
break
}
} )
2021-01-09 07:22:59 -07:00
// Try overruling key
if ( sigKeys . length > 0 ) {
try {
2021-04-22 07:52:25 -06:00
result . key . uri = sigKeys [ 0 ]
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = result . key . uri . split ( ':' ) [ 0 ]
2021-03-01 10:35:59 -07:00
} catch ( e ) { }
2021-01-09 07:22:59 -07:00
}
// Try WKD
2021-04-22 07:52:25 -06:00
if ( ! result . key . data && signersUserId ) {
2021-01-09 07:22:59 -07:00
try {
2021-04-22 07:52:25 -06:00
result . key . uri = ` wkd: ${ signersUserId } `
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = 'wkd'
2021-03-01 10:35:59 -07:00
} catch ( e ) { }
2021-01-09 07:22:59 -07:00
}
// Try HKP
2021-04-22 07:52:25 -06:00
if ( ! result . key . data ) {
2021-01-09 07:22:59 -07:00
try {
const match = preferredKeyServer . match ( /^(.*\:\/\/)?([^/]*)(?:\/)?$/i )
2021-04-22 07:52:25 -06:00
result . key . uri = ` hkp: ${ match [ 2 ] } : ${
issuerKeyId ? issuerKeyId : signersUserId
} `
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = 'hkp'
2021-03-01 10:35:59 -07:00
} catch ( e ) {
2021-04-22 07:52:25 -06:00
reject ( new Error ( 'key_not_found' ) )
2021-01-09 07:22:59 -07:00
return
}
2021-01-07 08:26:31 -07:00
}
2021-04-22 07:52:25 -06:00
result . fingerprint = result . key . data . keyPacket . getFingerprint ( )
2021-01-07 08:26:31 -07:00
2021-04-22 07:52:25 -06:00
result . users [ 0 ] . claims . forEach ( ( claim ) => {
claim . fingerprint = result . fingerprint
} )
const primaryUserData = await result . key . data . getPrimaryUser ( )
let userData
if ( signersUserId ) {
result . key . data . users . forEach ( ( user ) => {
if ( user . userId . email == signersUserId ) {
userData = user
}
} )
}
if ( ! userData ) {
userData = primaryUserData . user
2021-01-07 08:26:31 -07:00
}
2021-04-22 07:52:25 -06:00
result . users [ 0 ] . userData = {
id : userData . userId ? userData . userId . userid : null ,
name : userData . userId ? userData . userId . name : null ,
email : userData . userId ? userData . userId . email : null ,
comment : userData . userId ? userData . userId . comment : null ,
isPrimary : primaryUserData . user . userId . userid === userData . userId . userid ,
}
2021-01-07 08:26:31 -07:00
2021-04-22 07:52:25 -06:00
result . primaryUserIndex = result . users [ 0 ] . userData . isPrimary ? 0 : null
resolve ( result )
2021-01-07 08:26:31 -07:00
} )
}
2021-04-22 07:52:25 -06:00
exports . process = process
2021-01-07 08:26:31 -07:00
} ) . call ( this ) } ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
2021-04-30 04:30:50 -06:00
} , { "./claim" : 114 , "./keys" : 144 } ] , 147 : [ function ( require , module , exports ) {
2020-11-18 13:51:53 -07:00
/ *
2021-01-13 05:20:33 -07:00
Copyright 2021 Yarmo Mackenbach
2020-11-18 13:51:53 -07:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2021-04-22 07:52:25 -06:00
const validator = require ( 'validator' )
const E = require ( './enums' )
2021-03-05 09:13:08 -07:00
2021-04-22 07:52:25 -06:00
/ * *
2021-04-23 02:25:25 -06:00
* @ module utils
2021-04-22 07:52:25 -06:00
* /
/ * *
* Generate an URL to request data from a proxy server
* @ param { string } type - The name of the fetcher the proxy must use
* @ param { object } data - The data the proxy must provide to the fetcher
* @ param { object } opts - Options to enable the request
* @ param { object } opts . proxy . hostname - The hostname of the proxy server
* @ returns { string }
* /
const generateProxyURL = ( type , data , opts ) => {
try {
validator . isFQDN ( opts . proxy . hostname )
} catch ( err ) {
throw new Error ( ` Invalid proxy hostname ` )
2021-03-05 09:13:08 -07:00
}
2021-04-22 07:52:25 -06:00
let queryStrings = [ ]
Object . keys ( data ) . forEach ( ( key ) => {
queryStrings . push ( ` ${ key } = ${ encodeURIComponent ( data [ key ] ) } ` )
2021-03-05 16:06:46 -07:00
} )
2021-03-05 09:13:08 -07:00
2021-04-26 08:01:40 -06:00
return ` https:// ${ opts . proxy . hostname } /api/2/get/ ${ type } ? ${ queryStrings . join (
2021-04-22 07:52:25 -06:00
'&'
) } `
2020-11-05 04:14:26 -07:00
}
2021-04-22 07:52:25 -06:00
/ * *
* Generate the string that must be found in the proof to verify a claim
* @ param { string } fingerprint - The fingerprint of the claim
* @ param { number } format - The claim ' s format ( see { @ link module : enums ~ ClaimFormat | enums . ClaimFormat } )
* @ returns { string }
* /
2020-10-24 17:22:54 -06:00
const generateClaim = ( fingerprint , format ) => {
switch ( format ) {
2021-04-22 07:52:25 -06:00
case E . ClaimFormat . URI :
2020-10-24 17:22:54 -06:00
return ` openpgp4fpr: ${ fingerprint } `
2020-11-18 13:51:53 -07:00
break
2021-04-22 07:52:25 -06:00
case E . ClaimFormat . MESSAGE :
2020-10-24 17:22:54 -06:00
return ` [Verifying my OpenPGP key: openpgp4fpr: ${ fingerprint } ] `
2020-11-18 13:51:53 -07:00
break
2021-04-22 07:52:25 -06:00
case E . ClaimFormat . FINGERPRINT :
2020-10-24 17:22:54 -06:00
return fingerprint
2020-11-18 13:51:53 -07:00
break
2020-10-24 17:22:54 -06:00
default :
throw new Error ( 'No valid claim format' )
2020-10-24 06:38:10 -06:00
}
2020-10-24 17:22:54 -06:00
}
2020-10-24 06:38:10 -06:00
2020-11-05 04:14:26 -07:00
exports . generateProxyURL = generateProxyURL
2020-10-24 17:22:54 -06:00
exports . generateClaim = generateClaim
2020-10-24 06:38:10 -06:00
2021-04-30 04:30:50 -06:00
} , { "./enums" : 134 , "validator" : 14 } ] , 148 : [ function ( require , module , exports ) {
2021-04-22 07:52:25 -06:00
/ *
Copyright 2021 Yarmo Mackenbach
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
const utils = require ( './utils' )
const E = require ( './enums' )
/ * *
* @ module verifications
* @ ignore
* /
const runJSON = ( proofData , checkPath , checkClaim , checkRelation ) => {
let re
if ( ! proofData ) {
return false
}
if ( Array . isArray ( proofData ) ) {
let result = false
proofData . forEach ( ( item , i ) => {
if ( result ) {
return
}
result = runJSON ( item , checkPath , checkClaim , checkRelation )
} )
return result
}
if ( checkPath . length == 0 ) {
switch ( checkRelation ) {
default :
case E . ClaimRelation . CONTAINS :
re = new RegExp ( checkClaim , 'gi' )
return re . test ( proofData . replace ( /\r?\n|\r|\\/g , '' ) )
break
case E . ClaimRelation . EQUALS :
return (
proofData . replace ( /\r?\n|\r|\\/g , '' ) . toLowerCase ( ) ==
checkClaim . toLowerCase ( )
)
break
case E . ClaimRelation . ONEOF :
re = new RegExp ( checkClaim , 'gi' )
return re . test ( proofData . join ( '|' ) )
break
}
}
try {
checkPath [ 0 ] in proofData
} catch ( e ) {
throw new Error ( 'err_json_structure_incorrect' )
}
return runJSON (
proofData [ checkPath [ 0 ] ] ,
checkPath . slice ( 1 ) ,
checkClaim ,
checkRelation
)
}
/ * *
* Run the verification by finding the formatted fingerprint in the proof
* @ param { object } proofData - The proof data
* @ param { object } claimData - The claim data
* @ param { string } fingerprint - The fingerprint
* @ returns { object }
* /
const run = ( proofData , claimData , fingerprint ) => {
let res = {
result : false ,
completed : false ,
errors : [ ] ,
}
switch ( claimData . proof . request . format ) {
case E . ProofFormat . JSON :
try {
res . result = runJSON (
proofData ,
claimData . claim . path ,
utils . generateClaim ( fingerprint , claimData . claim . format ) ,
claimData . claim . relation
)
res . completed = true
} catch ( error ) {
res . errors . push ( error . message ? error . message : error )
}
break
case E . ProofFormat . TEXT :
try {
const re = new RegExp (
utils
. generateClaim ( fingerprint , claimData . claim . format )
. replace ( '[' , '\\[' )
. replace ( ']' , '\\]' ) ,
'gi'
)
res . result = re . test ( proofData . replace ( /\r?\n|\r/ , '' ) )
res . completed = true
} catch ( error ) {
res . errors . push ( 'err_unknown_text_verification' )
}
break
}
return res
}
exports . run = run
2021-04-30 04:30:50 -06:00
} , { "./enums" : 134 , "./utils" : 147 } ] } , { } , [ 143 ] ) ( 143 )
2020-10-24 06:38:10 -06:00
} ) ;