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 ) {
2022-03-27 16:37:33 -06:00
module . exports = require ( './lib/axios' ) ;
} , { "./lib/axios" : 3 } ] , 2 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
var settle = require ( './../core/settle' ) ;
var cookies = require ( './../helpers/cookies' ) ;
var buildURL = require ( './../helpers/buildURL' ) ;
var buildFullPath = require ( '../core/buildFullPath' ) ;
var parseHeaders = require ( './../helpers/parseHeaders' ) ;
var isURLSameOrigin = require ( './../helpers/isURLSameOrigin' ) ;
var createError = require ( '../core/createError' ) ;
var defaults = require ( '../defaults' ) ;
var Cancel = require ( '../cancel/Cancel' ) ;
module . exports = function xhrAdapter ( config ) {
return new Promise ( function dispatchXhrRequest ( resolve , reject ) {
var requestData = config . data ;
var requestHeaders = config . headers ;
var responseType = config . responseType ;
var onCanceled ;
function done ( ) {
if ( config . cancelToken ) {
config . cancelToken . unsubscribe ( onCanceled ) ;
}
if ( config . signal ) {
config . signal . removeEventListener ( 'abort' , onCanceled ) ;
}
}
if ( utils . isFormData ( requestData ) ) {
delete requestHeaders [ 'Content-Type' ] ; // Let the browser set it
}
var request = new XMLHttpRequest ( ) ;
// HTTP basic authentication
if ( config . auth ) {
var username = config . auth . username || '' ;
var password = config . auth . password ? unescape ( encodeURIComponent ( config . auth . password ) ) : '' ;
requestHeaders . Authorization = 'Basic ' + btoa ( username + ':' + password ) ;
}
var fullPath = buildFullPath ( config . baseURL , config . url ) ;
request . open ( config . method . toUpperCase ( ) , buildURL ( fullPath , config . params , config . paramsSerializer ) , true ) ;
// Set the request timeout in MS
request . timeout = config . timeout ;
function onloadend ( ) {
if ( ! request ) {
return ;
}
// Prepare the response
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders ( request . getAllResponseHeaders ( ) ) : null ;
var responseData = ! responseType || responseType === 'text' || responseType === 'json' ?
request . responseText : request . response ;
var response = {
data : responseData ,
status : request . status ,
statusText : request . statusText ,
headers : responseHeaders ,
config : config ,
request : request
} ;
settle ( function _resolve ( value ) {
resolve ( value ) ;
done ( ) ;
} , function _reject ( err ) {
reject ( err ) ;
done ( ) ;
} , response ) ;
// Clean up request
request = null ;
}
if ( 'onloadend' in request ) {
// Use onloadend if available
request . onloadend = onloadend ;
} else {
// Listen for ready state to emulate onloadend
request . onreadystatechange = function handleLoad ( ) {
if ( ! request || request . readyState !== 4 ) {
return ;
}
// The request errored out and we didn't get a response, this will be
// handled by onerror instead
// With one exception: request that using file: protocol, most browsers
// will return status as 0 even though it's a successful request
if ( request . status === 0 && ! ( request . responseURL && request . responseURL . indexOf ( 'file:' ) === 0 ) ) {
return ;
}
// readystate handler is calling before onerror or ontimeout handlers,
// so we should call onloadend on the next 'tick'
setTimeout ( onloadend ) ;
} ;
}
// Handle browser request cancellation (as opposed to a manual cancellation)
request . onabort = function handleAbort ( ) {
if ( ! request ) {
return ;
}
reject ( createError ( 'Request aborted' , config , 'ECONNABORTED' , request ) ) ;
// Clean up request
request = null ;
} ;
// Handle low level network errors
request . onerror = function handleError ( ) {
// Real errors are hidden from us by the browser
// onerror should only fire if it's a network error
reject ( createError ( 'Network Error' , config , null , request ) ) ;
// Clean up request
request = null ;
} ;
// Handle timeout
request . ontimeout = function handleTimeout ( ) {
var timeoutErrorMessage = config . timeout ? 'timeout of ' + config . timeout + 'ms exceeded' : 'timeout exceeded' ;
var transitional = config . transitional || defaults . transitional ;
if ( config . timeoutErrorMessage ) {
timeoutErrorMessage = config . timeoutErrorMessage ;
}
reject ( createError (
timeoutErrorMessage ,
config ,
transitional . clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED' ,
request ) ) ;
// Clean up request
request = null ;
} ;
// Add xsrf header
// This is only done if running in a standard browser environment.
// Specifically not if we're in a web worker, or react-native.
if ( utils . isStandardBrowserEnv ( ) ) {
// Add xsrf header
var xsrfValue = ( config . withCredentials || isURLSameOrigin ( fullPath ) ) && config . xsrfCookieName ?
cookies . read ( config . xsrfCookieName ) :
undefined ;
if ( xsrfValue ) {
requestHeaders [ config . xsrfHeaderName ] = xsrfValue ;
}
}
// Add headers to the request
if ( 'setRequestHeader' in request ) {
utils . forEach ( requestHeaders , function setRequestHeader ( val , key ) {
if ( typeof requestData === 'undefined' && key . toLowerCase ( ) === 'content-type' ) {
// Remove Content-Type if data is undefined
delete requestHeaders [ key ] ;
} else {
// Otherwise add header to the request
request . setRequestHeader ( key , val ) ;
}
} ) ;
}
// Add withCredentials to request if needed
if ( ! utils . isUndefined ( config . withCredentials ) ) {
request . withCredentials = ! ! config . withCredentials ;
}
// Add responseType to request if needed
if ( responseType && responseType !== 'json' ) {
request . responseType = config . responseType ;
}
// Handle progress if needed
if ( typeof config . onDownloadProgress === 'function' ) {
request . addEventListener ( 'progress' , config . onDownloadProgress ) ;
}
// Not all browsers support upload events
if ( typeof config . onUploadProgress === 'function' && request . upload ) {
request . upload . addEventListener ( 'progress' , config . onUploadProgress ) ;
}
if ( config . cancelToken || config . signal ) {
// Handle cancellation
// eslint-disable-next-line func-names
onCanceled = function ( cancel ) {
if ( ! request ) {
return ;
}
reject ( ! cancel || ( cancel && cancel . type ) ? new Cancel ( 'canceled' ) : cancel ) ;
request . abort ( ) ;
request = null ;
} ;
config . cancelToken && config . cancelToken . subscribe ( onCanceled ) ;
if ( config . signal ) {
config . signal . aborted ? onCanceled ( ) : config . signal . addEventListener ( 'abort' , onCanceled ) ;
}
}
if ( ! requestData ) {
requestData = null ;
}
// Send the request
request . send ( requestData ) ;
} ) ;
} ;
} , { "../cancel/Cancel" : 4 , "../core/buildFullPath" : 9 , "../core/createError" : 10 , "../defaults" : 16 , "./../core/settle" : 14 , "./../helpers/buildURL" : 19 , "./../helpers/cookies" : 21 , "./../helpers/isURLSameOrigin" : 24 , "./../helpers/parseHeaders" : 26 , "./../utils" : 29 } ] , 3 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './utils' ) ;
var bind = require ( './helpers/bind' ) ;
var Axios = require ( './core/Axios' ) ;
var mergeConfig = require ( './core/mergeConfig' ) ;
var defaults = require ( './defaults' ) ;
/ * *
* Create an instance of Axios
*
* @ param { Object } defaultConfig The default config for the instance
* @ return { Axios } A new instance of Axios
* /
function createInstance ( defaultConfig ) {
var context = new Axios ( defaultConfig ) ;
var instance = bind ( Axios . prototype . request , context ) ;
// Copy axios.prototype to instance
utils . extend ( instance , Axios . prototype , context ) ;
// Copy context to instance
utils . extend ( instance , context ) ;
// Factory for creating new instances
instance . create = function create ( instanceConfig ) {
return createInstance ( mergeConfig ( defaultConfig , instanceConfig ) ) ;
} ;
return instance ;
}
// Create the default instance to be exported
var axios = createInstance ( defaults ) ;
// Expose Axios class to allow class inheritance
axios . Axios = Axios ;
// Expose Cancel & CancelToken
axios . Cancel = require ( './cancel/Cancel' ) ;
axios . CancelToken = require ( './cancel/CancelToken' ) ;
axios . isCancel = require ( './cancel/isCancel' ) ;
axios . VERSION = require ( './env/data' ) . version ;
// Expose all/spread
axios . all = function all ( promises ) {
return Promise . all ( promises ) ;
} ;
axios . spread = require ( './helpers/spread' ) ;
// Expose isAxiosError
axios . isAxiosError = require ( './helpers/isAxiosError' ) ;
module . exports = axios ;
// Allow use of default import syntax in TypeScript
module . exports . default = axios ;
} , { "./cancel/Cancel" : 4 , "./cancel/CancelToken" : 5 , "./cancel/isCancel" : 6 , "./core/Axios" : 7 , "./core/mergeConfig" : 13 , "./defaults" : 16 , "./env/data" : 17 , "./helpers/bind" : 18 , "./helpers/isAxiosError" : 23 , "./helpers/spread" : 27 , "./utils" : 29 } ] , 4 : [ function ( require , module , exports ) {
'use strict' ;
/ * *
* A ` Cancel ` is an object that is thrown when an operation is canceled .
*
* @ class
* @ param { string = } message The message .
* /
function Cancel ( message ) {
this . message = message ;
}
Cancel . prototype . toString = function toString ( ) {
return 'Cancel' + ( this . message ? ': ' + this . message : '' ) ;
} ;
Cancel . prototype . _ _CANCEL _ _ = true ;
module . exports = Cancel ;
} , { } ] , 5 : [ function ( require , module , exports ) {
'use strict' ;
var Cancel = require ( './Cancel' ) ;
/ * *
* A ` CancelToken ` is an object that can be used to request cancellation of an operation .
*
* @ class
* @ param { Function } executor The executor function .
* /
function CancelToken ( executor ) {
if ( typeof executor !== 'function' ) {
throw new TypeError ( 'executor must be a function.' ) ;
}
var resolvePromise ;
this . promise = new Promise ( function promiseExecutor ( resolve ) {
resolvePromise = resolve ;
} ) ;
var token = this ;
// eslint-disable-next-line func-names
this . promise . then ( function ( cancel ) {
if ( ! token . _listeners ) return ;
var i ;
var l = token . _listeners . length ;
for ( i = 0 ; i < l ; i ++ ) {
token . _listeners [ i ] ( cancel ) ;
}
token . _listeners = null ;
} ) ;
// eslint-disable-next-line func-names
this . promise . then = function ( onfulfilled ) {
var _resolve ;
// eslint-disable-next-line func-names
var promise = new Promise ( function ( resolve ) {
token . subscribe ( resolve ) ;
_resolve = resolve ;
} ) . then ( onfulfilled ) ;
promise . cancel = function reject ( ) {
token . unsubscribe ( _resolve ) ;
} ;
return promise ;
} ;
executor ( function cancel ( message ) {
if ( token . reason ) {
// Cancellation has already been requested
return ;
}
token . reason = new Cancel ( message ) ;
resolvePromise ( token . reason ) ;
} ) ;
}
/ * *
* Throws a ` Cancel ` if cancellation has been requested .
* /
CancelToken . prototype . throwIfRequested = function throwIfRequested ( ) {
if ( this . reason ) {
throw this . reason ;
}
} ;
/ * *
* Subscribe to the cancel signal
* /
CancelToken . prototype . subscribe = function subscribe ( listener ) {
if ( this . reason ) {
listener ( this . reason ) ;
return ;
}
if ( this . _listeners ) {
this . _listeners . push ( listener ) ;
} else {
this . _listeners = [ listener ] ;
}
} ;
/ * *
* Unsubscribe from the cancel signal
* /
CancelToken . prototype . unsubscribe = function unsubscribe ( listener ) {
if ( ! this . _listeners ) {
return ;
}
var index = this . _listeners . indexOf ( listener ) ;
if ( index !== - 1 ) {
this . _listeners . splice ( index , 1 ) ;
}
} ;
/ * *
* Returns an object that contains a new ` CancelToken ` and a function that , when called ,
* cancels the ` CancelToken ` .
* /
CancelToken . source = function source ( ) {
var cancel ;
var token = new CancelToken ( function executor ( c ) {
cancel = c ;
} ) ;
return {
token : token ,
cancel : cancel
} ;
} ;
module . exports = CancelToken ;
} , { "./Cancel" : 4 } ] , 6 : [ function ( require , module , exports ) {
'use strict' ;
module . exports = function isCancel ( value ) {
return ! ! ( value && value . _ _CANCEL _ _ ) ;
} ;
} , { } ] , 7 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
var buildURL = require ( '../helpers/buildURL' ) ;
var InterceptorManager = require ( './InterceptorManager' ) ;
var dispatchRequest = require ( './dispatchRequest' ) ;
var mergeConfig = require ( './mergeConfig' ) ;
var validator = require ( '../helpers/validator' ) ;
var validators = validator . validators ;
/ * *
* Create a new instance of Axios
*
* @ param { Object } instanceConfig The default config for the instance
* /
function Axios ( instanceConfig ) {
this . defaults = instanceConfig ;
this . interceptors = {
request : new InterceptorManager ( ) ,
response : new InterceptorManager ( )
} ;
}
/ * *
* Dispatch a request
*
* @ param { Object } config The config specific for this request ( merged with this . defaults )
* /
Axios . prototype . request = function request ( configOrUrl , config ) {
/*eslint no-param-reassign:0*/
// Allow for axios('example/url'[, config]) a la fetch API
if ( typeof configOrUrl === 'string' ) {
config = config || { } ;
config . url = configOrUrl ;
} else {
config = configOrUrl || { } ;
}
if ( ! config . url ) {
throw new Error ( 'Provided config url is not valid' ) ;
}
config = mergeConfig ( this . defaults , config ) ;
// Set config.method
if ( config . method ) {
config . method = config . method . toLowerCase ( ) ;
} else if ( this . defaults . method ) {
config . method = this . defaults . method . toLowerCase ( ) ;
} else {
config . method = 'get' ;
}
var transitional = config . transitional ;
if ( transitional !== undefined ) {
validator . assertOptions ( transitional , {
silentJSONParsing : validators . transitional ( validators . boolean ) ,
forcedJSONParsing : validators . transitional ( validators . boolean ) ,
clarifyTimeoutError : validators . transitional ( validators . boolean )
} , false ) ;
}
// filter out skipped interceptors
var requestInterceptorChain = [ ] ;
var synchronousRequestInterceptors = true ;
this . interceptors . request . forEach ( function unshiftRequestInterceptors ( interceptor ) {
if ( typeof interceptor . runWhen === 'function' && interceptor . runWhen ( config ) === false ) {
return ;
}
synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor . synchronous ;
requestInterceptorChain . unshift ( interceptor . fulfilled , interceptor . rejected ) ;
} ) ;
var responseInterceptorChain = [ ] ;
this . interceptors . response . forEach ( function pushResponseInterceptors ( interceptor ) {
responseInterceptorChain . push ( interceptor . fulfilled , interceptor . rejected ) ;
} ) ;
var promise ;
if ( ! synchronousRequestInterceptors ) {
var chain = [ dispatchRequest , undefined ] ;
Array . prototype . unshift . apply ( chain , requestInterceptorChain ) ;
chain = chain . concat ( responseInterceptorChain ) ;
promise = Promise . resolve ( config ) ;
while ( chain . length ) {
promise = promise . then ( chain . shift ( ) , chain . shift ( ) ) ;
}
return promise ;
}
var newConfig = config ;
while ( requestInterceptorChain . length ) {
var onFulfilled = requestInterceptorChain . shift ( ) ;
var onRejected = requestInterceptorChain . shift ( ) ;
try {
newConfig = onFulfilled ( newConfig ) ;
} catch ( error ) {
onRejected ( error ) ;
break ;
}
}
try {
promise = dispatchRequest ( newConfig ) ;
} catch ( error ) {
return Promise . reject ( error ) ;
}
while ( responseInterceptorChain . length ) {
promise = promise . then ( responseInterceptorChain . shift ( ) , responseInterceptorChain . shift ( ) ) ;
}
return promise ;
} ;
Axios . prototype . getUri = function getUri ( config ) {
if ( ! config . url ) {
throw new Error ( 'Provided config url is not valid' ) ;
}
config = mergeConfig ( this . defaults , config ) ;
return buildURL ( config . url , config . params , config . paramsSerializer ) . replace ( /^\?/ , '' ) ;
} ;
// Provide aliases for supported request methods
utils . forEach ( [ 'delete' , 'get' , 'head' , 'options' ] , function forEachMethodNoData ( method ) {
/*eslint func-names:0*/
Axios . prototype [ method ] = function ( url , config ) {
return this . request ( mergeConfig ( config || { } , {
method : method ,
url : url ,
data : ( config || { } ) . data
} ) ) ;
} ;
} ) ;
utils . forEach ( [ 'post' , 'put' , 'patch' ] , function forEachMethodWithData ( method ) {
/*eslint func-names:0*/
Axios . prototype [ method ] = function ( url , data , config ) {
return this . request ( mergeConfig ( config || { } , {
method : method ,
url : url ,
data : data
} ) ) ;
} ;
} ) ;
module . exports = Axios ;
} , { "../helpers/buildURL" : 19 , "../helpers/validator" : 28 , "./../utils" : 29 , "./InterceptorManager" : 8 , "./dispatchRequest" : 11 , "./mergeConfig" : 13 } ] , 8 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
function InterceptorManager ( ) {
this . handlers = [ ] ;
}
/ * *
* Add a new interceptor to the stack
*
* @ param { Function } fulfilled The function to handle ` then ` for a ` Promise `
* @ param { Function } rejected The function to handle ` reject ` for a ` Promise `
*
* @ return { Number } An ID used to remove interceptor later
* /
InterceptorManager . prototype . use = function use ( fulfilled , rejected , options ) {
this . handlers . push ( {
fulfilled : fulfilled ,
rejected : rejected ,
synchronous : options ? options . synchronous : false ,
runWhen : options ? options . runWhen : null
} ) ;
return this . handlers . length - 1 ;
} ;
/ * *
* Remove an interceptor from the stack
*
* @ param { Number } id The ID that was returned by ` use `
* /
InterceptorManager . prototype . eject = function eject ( id ) {
if ( this . handlers [ id ] ) {
this . handlers [ id ] = null ;
}
} ;
/ * *
* Iterate over all the registered interceptors
*
* This method is particularly useful for skipping over any
* interceptors that may have become ` null ` calling ` eject ` .
*
* @ param { Function } fn The function to call for each interceptor
* /
InterceptorManager . prototype . forEach = function forEach ( fn ) {
utils . forEach ( this . handlers , function forEachHandler ( h ) {
if ( h !== null ) {
fn ( h ) ;
}
} ) ;
} ;
module . exports = InterceptorManager ;
} , { "./../utils" : 29 } ] , 9 : [ function ( require , module , exports ) {
'use strict' ;
var isAbsoluteURL = require ( '../helpers/isAbsoluteURL' ) ;
var combineURLs = require ( '../helpers/combineURLs' ) ;
/ * *
* Creates a new URL by combining the baseURL with the requestedURL ,
* only when the requestedURL is not already an absolute URL .
* If the requestURL is absolute , this function returns the requestedURL untouched .
*
* @ param { string } baseURL The base URL
* @ param { string } requestedURL Absolute or relative URL to combine
* @ returns { string } The combined full path
* /
module . exports = function buildFullPath ( baseURL , requestedURL ) {
if ( baseURL && ! isAbsoluteURL ( requestedURL ) ) {
return combineURLs ( baseURL , requestedURL ) ;
}
return requestedURL ;
} ;
} , { "../helpers/combineURLs" : 20 , "../helpers/isAbsoluteURL" : 22 } ] , 10 : [ function ( require , module , exports ) {
'use strict' ;
var enhanceError = require ( './enhanceError' ) ;
/ * *
* Create an Error with the specified message , config , error code , request and response .
*
* @ param { string } message The error message .
* @ param { Object } config The config .
* @ param { string } [ code ] The error code ( for example , 'ECONNABORTED' ) .
* @ param { Object } [ request ] The request .
* @ param { Object } [ response ] The response .
* @ returns { Error } The created error .
* /
module . exports = function createError ( message , config , code , request , response ) {
var error = new Error ( message ) ;
return enhanceError ( error , config , code , request , response ) ;
} ;
} , { "./enhanceError" : 12 } ] , 11 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
var transformData = require ( './transformData' ) ;
var isCancel = require ( '../cancel/isCancel' ) ;
var defaults = require ( '../defaults' ) ;
var Cancel = require ( '../cancel/Cancel' ) ;
/ * *
* Throws a ` Cancel ` if cancellation has been requested .
* /
function throwIfCancellationRequested ( config ) {
if ( config . cancelToken ) {
config . cancelToken . throwIfRequested ( ) ;
}
if ( config . signal && config . signal . aborted ) {
throw new Cancel ( 'canceled' ) ;
}
}
/ * *
* Dispatch a request to the server using the configured adapter .
*
* @ param { object } config The config that is to be used for the request
* @ returns { Promise } The Promise to be fulfilled
* /
module . exports = function dispatchRequest ( config ) {
throwIfCancellationRequested ( config ) ;
// Ensure headers exist
config . headers = config . headers || { } ;
// Transform request data
config . data = transformData . call (
config ,
config . data ,
config . headers ,
config . transformRequest
) ;
// Flatten headers
config . headers = utils . merge (
config . headers . common || { } ,
config . headers [ config . method ] || { } ,
config . headers
) ;
utils . forEach (
[ 'delete' , 'get' , 'head' , 'post' , 'put' , 'patch' , 'common' ] ,
function cleanHeaderConfig ( method ) {
delete config . headers [ method ] ;
}
) ;
var adapter = config . adapter || defaults . adapter ;
return adapter ( config ) . then ( function onAdapterResolution ( response ) {
throwIfCancellationRequested ( config ) ;
// Transform response data
response . data = transformData . call (
config ,
response . data ,
response . headers ,
config . transformResponse
) ;
return response ;
} , function onAdapterRejection ( reason ) {
if ( ! isCancel ( reason ) ) {
throwIfCancellationRequested ( config ) ;
// Transform response data
if ( reason && reason . response ) {
reason . response . data = transformData . call (
config ,
reason . response . data ,
reason . response . headers ,
config . transformResponse
) ;
}
}
return Promise . reject ( reason ) ;
} ) ;
} ;
} , { "../cancel/Cancel" : 4 , "../cancel/isCancel" : 6 , "../defaults" : 16 , "./../utils" : 29 , "./transformData" : 15 } ] , 12 : [ function ( require , module , exports ) {
'use strict' ;
/ * *
* Update an Error with the specified config , error code , and response .
*
* @ param { Error } error The error to update .
* @ param { Object } config The config .
* @ param { string } [ code ] The error code ( for example , 'ECONNABORTED' ) .
* @ param { Object } [ request ] The request .
* @ param { Object } [ response ] The response .
* @ returns { Error } The error .
* /
module . exports = function enhanceError ( error , config , code , request , response ) {
error . config = config ;
if ( code ) {
error . code = code ;
}
error . request = request ;
error . response = response ;
error . isAxiosError = true ;
error . toJSON = function toJSON ( ) {
return {
// Standard
message : this . message ,
name : this . name ,
// Microsoft
description : this . description ,
number : this . number ,
// Mozilla
fileName : this . fileName ,
lineNumber : this . lineNumber ,
columnNumber : this . columnNumber ,
stack : this . stack ,
// Axios
config : this . config ,
code : this . code ,
status : this . response && this . response . status ? this . response . status : null
} ;
} ;
return error ;
} ;
} , { } ] , 13 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( '../utils' ) ;
/ * *
* Config - specific merge - function which creates a new config - object
* by merging two configuration objects together .
*
* @ param { Object } config1
* @ param { Object } config2
* @ returns { Object } New object resulting from merging config2 to config1
* /
module . exports = function mergeConfig ( config1 , config2 ) {
// eslint-disable-next-line no-param-reassign
config2 = config2 || { } ;
var config = { } ;
function getMergedValue ( target , source ) {
if ( utils . isPlainObject ( target ) && utils . isPlainObject ( source ) ) {
return utils . merge ( target , source ) ;
} else if ( utils . isPlainObject ( source ) ) {
return utils . merge ( { } , source ) ;
} else if ( utils . isArray ( source ) ) {
return source . slice ( ) ;
}
return source ;
}
// eslint-disable-next-line consistent-return
function mergeDeepProperties ( prop ) {
if ( ! utils . isUndefined ( config2 [ prop ] ) ) {
return getMergedValue ( config1 [ prop ] , config2 [ prop ] ) ;
} else if ( ! utils . isUndefined ( config1 [ prop ] ) ) {
return getMergedValue ( undefined , config1 [ prop ] ) ;
}
}
// eslint-disable-next-line consistent-return
function valueFromConfig2 ( prop ) {
if ( ! utils . isUndefined ( config2 [ prop ] ) ) {
return getMergedValue ( undefined , config2 [ prop ] ) ;
}
}
// eslint-disable-next-line consistent-return
function defaultToConfig2 ( prop ) {
if ( ! utils . isUndefined ( config2 [ prop ] ) ) {
return getMergedValue ( undefined , config2 [ prop ] ) ;
} else if ( ! utils . isUndefined ( config1 [ prop ] ) ) {
return getMergedValue ( undefined , config1 [ prop ] ) ;
}
}
// eslint-disable-next-line consistent-return
function mergeDirectKeys ( prop ) {
if ( prop in config2 ) {
return getMergedValue ( config1 [ prop ] , config2 [ prop ] ) ;
} else if ( prop in config1 ) {
return getMergedValue ( undefined , config1 [ prop ] ) ;
}
}
var mergeMap = {
'url' : valueFromConfig2 ,
'method' : valueFromConfig2 ,
'data' : valueFromConfig2 ,
'baseURL' : defaultToConfig2 ,
'transformRequest' : defaultToConfig2 ,
'transformResponse' : defaultToConfig2 ,
'paramsSerializer' : defaultToConfig2 ,
'timeout' : defaultToConfig2 ,
'timeoutMessage' : defaultToConfig2 ,
'withCredentials' : defaultToConfig2 ,
'adapter' : defaultToConfig2 ,
'responseType' : defaultToConfig2 ,
'xsrfCookieName' : defaultToConfig2 ,
'xsrfHeaderName' : defaultToConfig2 ,
'onUploadProgress' : defaultToConfig2 ,
'onDownloadProgress' : defaultToConfig2 ,
'decompress' : defaultToConfig2 ,
'maxContentLength' : defaultToConfig2 ,
'maxBodyLength' : defaultToConfig2 ,
'transport' : defaultToConfig2 ,
'httpAgent' : defaultToConfig2 ,
'httpsAgent' : defaultToConfig2 ,
'cancelToken' : defaultToConfig2 ,
'socketPath' : defaultToConfig2 ,
'responseEncoding' : defaultToConfig2 ,
'validateStatus' : mergeDirectKeys
} ;
utils . forEach ( Object . keys ( config1 ) . concat ( Object . keys ( config2 ) ) , function computeConfigValue ( prop ) {
var merge = mergeMap [ prop ] || mergeDeepProperties ;
var configValue = merge ( prop ) ;
( utils . isUndefined ( configValue ) && merge !== mergeDirectKeys ) || ( config [ prop ] = configValue ) ;
} ) ;
return config ;
} ;
} , { "../utils" : 29 } ] , 14 : [ function ( require , module , exports ) {
'use strict' ;
var createError = require ( './createError' ) ;
/ * *
* Resolve or reject a Promise based on response status .
*
* @ param { Function } resolve A function that resolves the promise .
* @ param { Function } reject A function that rejects the promise .
* @ param { object } response The response .
* /
module . exports = function settle ( resolve , reject , response ) {
var validateStatus = response . config . validateStatus ;
if ( ! response . status || ! validateStatus || validateStatus ( response . status ) ) {
resolve ( response ) ;
} else {
reject ( createError (
'Request failed with status code ' + response . status ,
response . config ,
null ,
response . request ,
response
) ) ;
}
} ;
} , { "./createError" : 10 } ] , 15 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
var defaults = require ( './../defaults' ) ;
/ * *
* Transform the data for a request or a response
*
* @ param { Object | String } data The data to be transformed
* @ param { Array } headers The headers for the request or response
* @ param { Array | Function } fns A single function or Array of functions
* @ returns { * } The resulting transformed data
* /
module . exports = function transformData ( data , headers , fns ) {
var context = this || defaults ;
/*eslint no-param-reassign:0*/
utils . forEach ( fns , function transform ( fn ) {
data = fn . call ( context , data , headers ) ;
} ) ;
return data ;
} ;
} , { "./../defaults" : 16 , "./../utils" : 29 } ] , 16 : [ function ( require , module , exports ) {
( function ( process ) { ( function ( ) {
'use strict' ;
var utils = require ( './utils' ) ;
var normalizeHeaderName = require ( './helpers/normalizeHeaderName' ) ;
var enhanceError = require ( './core/enhanceError' ) ;
var DEFAULT _CONTENT _TYPE = {
'Content-Type' : 'application/x-www-form-urlencoded'
} ;
function setContentTypeIfUnset ( headers , value ) {
if ( ! utils . isUndefined ( headers ) && utils . isUndefined ( headers [ 'Content-Type' ] ) ) {
headers [ 'Content-Type' ] = value ;
}
}
function getDefaultAdapter ( ) {
var adapter ;
if ( typeof XMLHttpRequest !== 'undefined' ) {
// For browsers use XHR adapter
adapter = require ( './adapters/xhr' ) ;
} else if ( typeof process !== 'undefined' && Object . prototype . toString . call ( process ) === '[object process]' ) {
// For node use HTTP adapter
adapter = require ( './adapters/http' ) ;
}
return adapter ;
}
function stringifySafely ( rawValue , parser , encoder ) {
if ( utils . isString ( rawValue ) ) {
try {
( parser || JSON . parse ) ( rawValue ) ;
return utils . trim ( rawValue ) ;
} catch ( e ) {
if ( e . name !== 'SyntaxError' ) {
throw e ;
}
}
}
return ( encoder || JSON . stringify ) ( rawValue ) ;
}
var defaults = {
transitional : {
silentJSONParsing : true ,
forcedJSONParsing : true ,
clarifyTimeoutError : false
} ,
adapter : getDefaultAdapter ( ) ,
transformRequest : [ function transformRequest ( data , headers ) {
normalizeHeaderName ( headers , 'Accept' ) ;
normalizeHeaderName ( headers , 'Content-Type' ) ;
if ( utils . isFormData ( data ) ||
utils . isArrayBuffer ( data ) ||
utils . isBuffer ( data ) ||
utils . isStream ( data ) ||
utils . isFile ( data ) ||
utils . isBlob ( data )
) {
return data ;
}
if ( utils . isArrayBufferView ( data ) ) {
return data . buffer ;
}
if ( utils . isURLSearchParams ( data ) ) {
setContentTypeIfUnset ( headers , 'application/x-www-form-urlencoded;charset=utf-8' ) ;
return data . toString ( ) ;
}
if ( utils . isObject ( data ) || ( headers && headers [ 'Content-Type' ] === 'application/json' ) ) {
setContentTypeIfUnset ( headers , 'application/json' ) ;
return stringifySafely ( data ) ;
}
return data ;
} ] ,
transformResponse : [ function transformResponse ( data ) {
var transitional = this . transitional || defaults . transitional ;
var silentJSONParsing = transitional && transitional . silentJSONParsing ;
var forcedJSONParsing = transitional && transitional . forcedJSONParsing ;
var strictJSONParsing = ! silentJSONParsing && this . responseType === 'json' ;
if ( strictJSONParsing || ( forcedJSONParsing && utils . isString ( data ) && data . length ) ) {
try {
return JSON . parse ( data ) ;
} catch ( e ) {
if ( strictJSONParsing ) {
if ( e . name === 'SyntaxError' ) {
throw enhanceError ( e , this , 'E_JSON_PARSE' ) ;
}
throw e ;
}
}
}
return data ;
} ] ,
/ * *
* A timeout in milliseconds to abort a request . If set to 0 ( default ) a
* timeout is not created .
* /
timeout : 0 ,
xsrfCookieName : 'XSRF-TOKEN' ,
xsrfHeaderName : 'X-XSRF-TOKEN' ,
maxContentLength : - 1 ,
maxBodyLength : - 1 ,
validateStatus : function validateStatus ( status ) {
return status >= 200 && status < 300 ;
} ,
headers : {
common : {
'Accept' : 'application/json, text/plain, */*'
}
}
} ;
utils . forEach ( [ 'delete' , 'get' , 'head' ] , function forEachMethodNoData ( method ) {
defaults . headers [ method ] = { } ;
} ) ;
utils . forEach ( [ 'post' , 'put' , 'patch' ] , function forEachMethodWithData ( method ) {
defaults . headers [ method ] = utils . merge ( DEFAULT _CONTENT _TYPE ) ;
} ) ;
module . exports = defaults ;
} ) . call ( this ) } ) . call ( this , require ( '_process' ) )
} , { "./adapters/http" : 2 , "./adapters/xhr" : 2 , "./core/enhanceError" : 12 , "./helpers/normalizeHeaderName" : 25 , "./utils" : 29 , "_process" : 36 } ] , 17 : [ function ( require , module , exports ) {
module . exports = {
"version" : "0.25.0"
} ;
} , { } ] , 18 : [ function ( require , module , exports ) {
'use strict' ;
module . exports = function bind ( fn , thisArg ) {
return function wrap ( ) {
var args = new Array ( arguments . length ) ;
for ( var i = 0 ; i < args . length ; i ++ ) {
args [ i ] = arguments [ i ] ;
}
return fn . apply ( thisArg , args ) ;
} ;
} ;
} , { } ] , 19 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
function encode ( val ) {
return encodeURIComponent ( val ) .
replace ( /%3A/gi , ':' ) .
replace ( /%24/g , '$' ) .
replace ( /%2C/gi , ',' ) .
replace ( /%20/g , '+' ) .
replace ( /%5B/gi , '[' ) .
replace ( /%5D/gi , ']' ) ;
}
/ * *
* Build a URL by appending params to the end
*
* @ param { string } url The base of the url ( e . g . , http : //www.google.com)
* @ param { object } [ params ] The params to be appended
* @ returns { string } The formatted url
* /
module . exports = function buildURL ( url , params , paramsSerializer ) {
/*eslint no-param-reassign:0*/
if ( ! params ) {
return url ;
}
var serializedParams ;
if ( paramsSerializer ) {
serializedParams = paramsSerializer ( params ) ;
} else if ( utils . isURLSearchParams ( params ) ) {
serializedParams = params . toString ( ) ;
} else {
var parts = [ ] ;
utils . forEach ( params , function serialize ( val , key ) {
if ( val === null || typeof val === 'undefined' ) {
return ;
}
if ( utils . isArray ( val ) ) {
key = key + '[]' ;
} else {
val = [ val ] ;
}
utils . forEach ( val , function parseValue ( v ) {
if ( utils . isDate ( v ) ) {
v = v . toISOString ( ) ;
} else if ( utils . isObject ( v ) ) {
v = JSON . stringify ( v ) ;
}
parts . push ( encode ( key ) + '=' + encode ( v ) ) ;
} ) ;
} ) ;
serializedParams = parts . join ( '&' ) ;
}
if ( serializedParams ) {
var hashmarkIndex = url . indexOf ( '#' ) ;
if ( hashmarkIndex !== - 1 ) {
url = url . slice ( 0 , hashmarkIndex ) ;
}
url += ( url . indexOf ( '?' ) === - 1 ? '?' : '&' ) + serializedParams ;
}
return url ;
} ;
} , { "./../utils" : 29 } ] , 20 : [ function ( require , module , exports ) {
'use strict' ;
/ * *
* Creates a new URL by combining the specified URLs
*
* @ param { string } baseURL The base URL
* @ param { string } relativeURL The relative URL
* @ returns { string } The combined URL
* /
module . exports = function combineURLs ( baseURL , relativeURL ) {
return relativeURL
? baseURL . replace ( /\/+$/ , '' ) + '/' + relativeURL . replace ( /^\/+/ , '' )
: baseURL ;
} ;
} , { } ] , 21 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
module . exports = (
utils . isStandardBrowserEnv ( ) ?
// Standard browser envs support document.cookie
( function standardBrowserEnv ( ) {
return {
write : function write ( name , value , expires , path , domain , secure ) {
var cookie = [ ] ;
cookie . push ( name + '=' + encodeURIComponent ( value ) ) ;
if ( utils . isNumber ( expires ) ) {
cookie . push ( 'expires=' + new Date ( expires ) . toGMTString ( ) ) ;
}
if ( utils . isString ( path ) ) {
cookie . push ( 'path=' + path ) ;
}
if ( utils . isString ( domain ) ) {
cookie . push ( 'domain=' + domain ) ;
}
if ( secure === true ) {
cookie . push ( 'secure' ) ;
}
document . cookie = cookie . join ( '; ' ) ;
} ,
read : function read ( name ) {
var match = document . cookie . match ( new RegExp ( '(^|;\\s*)(' + name + ')=([^;]*)' ) ) ;
return ( match ? decodeURIComponent ( match [ 3 ] ) : null ) ;
} ,
remove : function remove ( name ) {
this . write ( name , '' , Date . now ( ) - 86400000 ) ;
}
} ;
} ) ( ) :
// Non standard browser env (web workers, react-native) lack needed support.
( function nonStandardBrowserEnv ( ) {
return {
write : function write ( ) { } ,
read : function read ( ) { return null ; } ,
remove : function remove ( ) { }
} ;
} ) ( )
) ;
} , { "./../utils" : 29 } ] , 22 : [ function ( require , module , exports ) {
'use strict' ;
/ * *
* Determines whether the specified URL is absolute
*
* @ param { string } url The URL to test
* @ returns { boolean } True if the specified URL is absolute , otherwise false
* /
module . exports = function isAbsoluteURL ( url ) {
// A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
// RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
// by any combination of letters, digits, plus, period, or hyphen.
return /^([a-z][a-z\d+\-.]*:)?\/\//i . test ( url ) ;
} ;
} , { } ] , 23 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
/ * *
* Determines whether the payload is an error thrown by Axios
*
* @ param { * } payload The value to test
* @ returns { boolean } True if the payload is an error thrown by Axios , otherwise false
* /
module . exports = function isAxiosError ( payload ) {
return utils . isObject ( payload ) && ( payload . isAxiosError === true ) ;
} ;
} , { "./../utils" : 29 } ] , 24 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
module . exports = (
utils . isStandardBrowserEnv ( ) ?
// Standard browser envs have full support of the APIs needed to test
// whether the request URL is of the same origin as current location.
( function standardBrowserEnv ( ) {
var msie = /(msie|trident)/i . test ( navigator . userAgent ) ;
var urlParsingNode = document . createElement ( 'a' ) ;
var originURL ;
/ * *
* Parse a URL to discover it ' s components
*
* @ param { String } url The URL to be parsed
* @ returns { Object }
* /
function resolveURL ( url ) {
var href = url ;
if ( msie ) {
// IE needs attribute set twice to normalize properties
urlParsingNode . setAttribute ( 'href' , href ) ;
href = urlParsingNode . href ;
}
urlParsingNode . setAttribute ( 'href' , href ) ;
// urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
return {
href : urlParsingNode . href ,
protocol : urlParsingNode . protocol ? urlParsingNode . protocol . replace ( /:$/ , '' ) : '' ,
host : urlParsingNode . host ,
search : urlParsingNode . search ? urlParsingNode . search . replace ( /^\?/ , '' ) : '' ,
hash : urlParsingNode . hash ? urlParsingNode . hash . replace ( /^#/ , '' ) : '' ,
hostname : urlParsingNode . hostname ,
port : urlParsingNode . port ,
pathname : ( urlParsingNode . pathname . charAt ( 0 ) === '/' ) ?
urlParsingNode . pathname :
'/' + urlParsingNode . pathname
} ;
}
originURL = resolveURL ( window . location . href ) ;
/ * *
* Determine if a URL shares the same origin as the current location
*
* @ param { String } requestURL The URL to test
* @ returns { boolean } True if URL shares the same origin , otherwise false
* /
return function isURLSameOrigin ( requestURL ) {
var parsed = ( utils . isString ( requestURL ) ) ? resolveURL ( requestURL ) : requestURL ;
return ( parsed . protocol === originURL . protocol &&
parsed . host === originURL . host ) ;
} ;
} ) ( ) :
// Non standard browser envs (web workers, react-native) lack needed support.
( function nonStandardBrowserEnv ( ) {
return function isURLSameOrigin ( ) {
return true ;
} ;
} ) ( )
) ;
} , { "./../utils" : 29 } ] , 25 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( '../utils' ) ;
module . exports = function normalizeHeaderName ( headers , normalizedName ) {
utils . forEach ( headers , function processHeader ( value , name ) {
if ( name !== normalizedName && name . toUpperCase ( ) === normalizedName . toUpperCase ( ) ) {
headers [ normalizedName ] = value ;
delete headers [ name ] ;
}
} ) ;
} ;
} , { "../utils" : 29 } ] , 26 : [ function ( require , module , exports ) {
'use strict' ;
var utils = require ( './../utils' ) ;
// Headers whose duplicates are ignored by node
// c.f. https://nodejs.org/api/http.html#http_message_headers
var ignoreDuplicateOf = [
'age' , 'authorization' , 'content-length' , 'content-type' , 'etag' ,
'expires' , 'from' , 'host' , 'if-modified-since' , 'if-unmodified-since' ,
'last-modified' , 'location' , 'max-forwards' , 'proxy-authorization' ,
'referer' , 'retry-after' , 'user-agent'
] ;
/ * *
* Parse headers into an object
*
* ` ` `
* Date : Wed , 27 Aug 2014 08 : 58 : 49 GMT
* Content - Type : application / json
* Connection : keep - alive
* Transfer - Encoding : chunked
* ` ` `
*
* @ param { String } headers Headers needing to be parsed
* @ returns { Object } Headers parsed into an object
* /
module . exports = function parseHeaders ( headers ) {
var parsed = { } ;
var key ;
var val ;
var i ;
if ( ! headers ) { return parsed ; }
utils . forEach ( headers . split ( '\n' ) , function parser ( line ) {
i = line . indexOf ( ':' ) ;
key = utils . trim ( line . substr ( 0 , i ) ) . toLowerCase ( ) ;
val = utils . trim ( line . substr ( i + 1 ) ) ;
if ( key ) {
if ( parsed [ key ] && ignoreDuplicateOf . indexOf ( key ) >= 0 ) {
return ;
}
if ( key === 'set-cookie' ) {
parsed [ key ] = ( parsed [ key ] ? parsed [ key ] : [ ] ) . concat ( [ val ] ) ;
} else {
parsed [ key ] = parsed [ key ] ? parsed [ key ] + ', ' + val : val ;
}
}
} ) ;
return parsed ;
} ;
} , { "./../utils" : 29 } ] , 27 : [ function ( require , module , exports ) {
'use strict' ;
/ * *
* Syntactic sugar for invoking a function and expanding an array for arguments .
*
* Common use case would be to use ` Function.prototype.apply ` .
*
* ` ` ` js
* function f ( x , y , z ) { }
* var args = [ 1 , 2 , 3 ] ;
* f . apply ( null , args ) ;
* ` ` `
*
* With ` spread ` this example can be re - written .
*
* ` ` ` js
* spread ( function ( x , y , z ) { } ) ( [ 1 , 2 , 3 ] ) ;
* ` ` `
*
* @ param { Function } callback
* @ returns { Function }
* /
module . exports = function spread ( callback ) {
return function wrap ( arr ) {
return callback . apply ( null , arr ) ;
} ;
} ;
} , { } ] , 28 : [ function ( require , module , exports ) {
'use strict' ;
var VERSION = require ( '../env/data' ) . version ;
var validators = { } ;
// eslint-disable-next-line func-names
[ 'object' , 'boolean' , 'number' , 'function' , 'string' , 'symbol' ] . forEach ( function ( type , i ) {
validators [ type ] = function validator ( thing ) {
return typeof thing === type || 'a' + ( i < 1 ? 'n ' : ' ' ) + type ;
} ;
} ) ;
var deprecatedWarnings = { } ;
/ * *
* Transitional option validator
* @ param { function | boolean ? } validator - set to false if the transitional option has been removed
* @ param { string ? } version - deprecated version / removed since version
* @ param { string ? } message - some message with additional info
* @ returns { function }
* /
validators . transitional = function transitional ( validator , version , message ) {
function formatMessage ( opt , desc ) {
return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + ( message ? '. ' + message : '' ) ;
}
// eslint-disable-next-line func-names
return function ( value , opt , opts ) {
if ( validator === false ) {
throw new Error ( formatMessage ( opt , ' has been removed' + ( version ? ' in ' + version : '' ) ) ) ;
}
if ( version && ! deprecatedWarnings [ opt ] ) {
deprecatedWarnings [ opt ] = true ;
// eslint-disable-next-line no-console
console . warn (
formatMessage (
opt ,
' has been deprecated since v' + version + ' and will be removed in the near future'
)
) ;
}
return validator ? validator ( value , opt , opts ) : true ;
} ;
} ;
/ * *
* Assert object ' s properties type
* @ param { object } options
* @ param { object } schema
* @ param { boolean ? } allowUnknown
* /
function assertOptions ( options , schema , allowUnknown ) {
if ( typeof options !== 'object' ) {
throw new TypeError ( 'options must be an object' ) ;
}
var keys = Object . keys ( options ) ;
var i = keys . length ;
while ( i -- > 0 ) {
var opt = keys [ i ] ;
var validator = schema [ opt ] ;
if ( validator ) {
var value = options [ opt ] ;
var result = value === undefined || validator ( value , opt , options ) ;
if ( result !== true ) {
throw new TypeError ( 'option ' + opt + ' must be ' + result ) ;
}
continue ;
}
if ( allowUnknown !== true ) {
throw Error ( 'Unknown option ' + opt ) ;
}
}
}
module . exports = {
assertOptions : assertOptions ,
validators : validators
} ;
} , { "../env/data" : 17 } ] , 29 : [ function ( require , module , exports ) {
'use strict' ;
var bind = require ( './helpers/bind' ) ;
// utils is a library of generic helper functions non-specific to axios
var toString = Object . prototype . toString ;
/ * *
* Determine if a value is an Array
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is an Array , otherwise false
* /
function isArray ( val ) {
return Array . isArray ( val ) ;
}
/ * *
* Determine if a value is undefined
*
* @ param { Object } val The value to test
* @ returns { boolean } True if the value is undefined , otherwise false
* /
function isUndefined ( val ) {
return typeof val === 'undefined' ;
}
/ * *
* Determine if a value is a Buffer
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Buffer , otherwise false
* /
function isBuffer ( val ) {
return val !== null && ! isUndefined ( val ) && val . constructor !== null && ! isUndefined ( val . constructor )
&& typeof val . constructor . isBuffer === 'function' && val . constructor . isBuffer ( val ) ;
}
/ * *
* Determine if a value is an ArrayBuffer
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is an ArrayBuffer , otherwise false
* /
function isArrayBuffer ( val ) {
return toString . call ( val ) === '[object ArrayBuffer]' ;
}
/ * *
* Determine if a value is a FormData
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is an FormData , otherwise false
* /
function isFormData ( val ) {
return toString . call ( val ) === '[object FormData]' ;
}
/ * *
* Determine if a value is a view on an ArrayBuffer
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a view on an ArrayBuffer , otherwise false
* /
function isArrayBufferView ( val ) {
var result ;
if ( ( typeof ArrayBuffer !== 'undefined' ) && ( ArrayBuffer . isView ) ) {
result = ArrayBuffer . isView ( val ) ;
} else {
result = ( val ) && ( val . buffer ) && ( isArrayBuffer ( val . buffer ) ) ;
}
return result ;
}
/ * *
* Determine if a value is a String
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a String , otherwise false
* /
function isString ( val ) {
return typeof val === 'string' ;
}
/ * *
* Determine if a value is a Number
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Number , otherwise false
* /
function isNumber ( val ) {
return typeof val === 'number' ;
}
/ * *
* Determine if a value is an Object
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is an Object , otherwise false
* /
function isObject ( val ) {
return val !== null && typeof val === 'object' ;
}
/ * *
* Determine if a value is a plain Object
*
* @ param { Object } val The value to test
* @ return { boolean } True if value is a plain Object , otherwise false
* /
function isPlainObject ( val ) {
if ( toString . call ( val ) !== '[object Object]' ) {
return false ;
}
var prototype = Object . getPrototypeOf ( val ) ;
return prototype === null || prototype === Object . prototype ;
}
/ * *
* Determine if a value is a Date
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Date , otherwise false
* /
function isDate ( val ) {
return toString . call ( val ) === '[object Date]' ;
}
/ * *
* Determine if a value is a File
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a File , otherwise false
* /
function isFile ( val ) {
return toString . call ( val ) === '[object File]' ;
}
/ * *
* Determine if a value is a Blob
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Blob , otherwise false
* /
function isBlob ( val ) {
return toString . call ( val ) === '[object Blob]' ;
}
/ * *
* Determine if a value is a Function
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Function , otherwise false
* /
function isFunction ( val ) {
return toString . call ( val ) === '[object Function]' ;
}
/ * *
* Determine if a value is a Stream
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a Stream , otherwise false
* /
function isStream ( val ) {
return isObject ( val ) && isFunction ( val . pipe ) ;
}
/ * *
* Determine if a value is a URLSearchParams object
*
* @ param { Object } val The value to test
* @ returns { boolean } True if value is a URLSearchParams object , otherwise false
* /
function isURLSearchParams ( val ) {
return toString . call ( val ) === '[object URLSearchParams]' ;
}
/ * *
* Trim excess whitespace off the beginning and end of a string
*
* @ param { String } str The String to trim
* @ returns { String } The String freed of excess whitespace
* /
function trim ( str ) {
return str . trim ? str . trim ( ) : str . replace ( /^\s+|\s+$/g , '' ) ;
}
/ * *
* Determine if we ' re running in a standard browser environment
*
* This allows axios to run in a web worker , and react - native .
* Both environments support XMLHttpRequest , but not fully standard globals .
*
* web workers :
* typeof window - > undefined
* typeof document - > undefined
*
* react - native :
* navigator . product - > 'ReactNative'
* nativescript
* navigator . product - > 'NativeScript' or 'NS'
* /
function isStandardBrowserEnv ( ) {
if ( typeof navigator !== 'undefined' && ( navigator . product === 'ReactNative' ||
navigator . product === 'NativeScript' ||
navigator . product === 'NS' ) ) {
return false ;
}
return (
typeof window !== 'undefined' &&
typeof document !== 'undefined'
) ;
}
/ * *
* Iterate over an Array or an Object invoking a function for each item .
*
* If ` obj ` is an Array callback will be called passing
* the value , index , and complete array for each item .
*
* If 'obj' is an Object callback will be called passing
* the value , key , and complete object for each property .
*
* @ param { Object | Array } obj The object to iterate
* @ param { Function } fn The callback to invoke for each item
* /
function forEach ( obj , fn ) {
// Don't bother if no value provided
if ( obj === null || typeof obj === 'undefined' ) {
return ;
}
// Force an array if not already something iterable
if ( typeof obj !== 'object' ) {
/*eslint no-param-reassign:0*/
obj = [ obj ] ;
}
if ( isArray ( obj ) ) {
// Iterate over array values
for ( var i = 0 , l = obj . length ; i < l ; i ++ ) {
fn . call ( null , obj [ i ] , i , obj ) ;
}
} else {
// Iterate over object keys
for ( var key in obj ) {
if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
fn . call ( null , obj [ key ] , key , obj ) ;
}
}
}
}
/ * *
* Accepts varargs expecting each argument to be an object , then
* immutably merges the properties of each object and returns result .
*
* When multiple objects contain the same key the later object in
* the arguments list will take precedence .
*
* Example :
*
* ` ` ` js
* var result = merge ( { foo : 123 } , { foo : 456 } ) ;
* console . log ( result . foo ) ; // outputs 456
* ` ` `
*
* @ param { Object } obj1 Object to merge
* @ returns { Object } Result of all merge properties
* /
function merge ( /* obj1, obj2, obj3, ... */ ) {
var result = { } ;
function assignValue ( val , key ) {
if ( isPlainObject ( result [ key ] ) && isPlainObject ( val ) ) {
result [ key ] = merge ( result [ key ] , val ) ;
} else if ( isPlainObject ( val ) ) {
result [ key ] = merge ( { } , val ) ;
} else if ( isArray ( val ) ) {
result [ key ] = val . slice ( ) ;
} else {
result [ key ] = val ;
}
}
for ( var i = 0 , l = arguments . length ; i < l ; i ++ ) {
forEach ( arguments [ i ] , assignValue ) ;
}
return result ;
}
/ * *
* Extends object a by mutably adding to it the properties of object b .
*
* @ param { Object } a The object to be extended
* @ param { Object } b The object to copy properties from
* @ param { Object } thisArg The object to bind function to
* @ return { Object } The resulting value of object a
* /
function extend ( a , b , thisArg ) {
forEach ( b , function assignValue ( val , key ) {
if ( thisArg && typeof val === 'function' ) {
a [ key ] = bind ( val , thisArg ) ;
} else {
a [ key ] = val ;
}
} ) ;
return a ;
}
/ * *
* Remove byte order marker . This catches EF BB BF ( the UTF - 8 BOM )
*
* @ param { string } content with BOM
* @ return { string } content value without BOM
* /
function stripBOM ( content ) {
if ( content . charCodeAt ( 0 ) === 0xFEFF ) {
content = content . slice ( 1 ) ;
}
return content ;
}
module . exports = {
isArray : isArray ,
isArrayBuffer : isArrayBuffer ,
isBuffer : isBuffer ,
isFormData : isFormData ,
isArrayBufferView : isArrayBufferView ,
isString : isString ,
isNumber : isNumber ,
isObject : isObject ,
isPlainObject : isPlainObject ,
isUndefined : isUndefined ,
isDate : isDate ,
isFile : isFile ,
isBlob : isBlob ,
isFunction : isFunction ,
isStream : isStream ,
isURLSearchParams : isURLSearchParams ,
isStandardBrowserEnv : isStandardBrowserEnv ,
forEach : forEach ,
merge : merge ,
extend : extend ,
trim : trim ,
stripBOM : stripBOM
} ;
} , { "./helpers/bind" : 18 } ] , 30 : [ function ( require , module , exports ) {
( 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 */
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' ) )
} , { "_process" : 36 } ] , 31 : [ function ( require , module , exports ) {
} , { } ] , 32 : [ function ( require , module , exports ) {
'use strict' ;
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 ) ;
}
} ;
} , { } ] , 33 : [ function ( require , module , exports ) {
'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 ;
} ;
} , { } ] , 34 : [ function ( require , module , exports ) {
'use strict' ;
module . exports = value => {
if ( Object . prototype . toString . call ( value ) !== '[object Object]' ) {
return false ;
}
const prototype = Object . getPrototypeOf ( value ) ;
return prototype === null || prototype === Object . prototype ;
} ;
} , { } ] , 35 : [ function ( require , module , exports ) {
'use strict' ;
const isOptionObject = require ( 'is-plain-obj' ) ;
const { hasOwnProperty } = Object . prototype ;
const { propertyIsEnumerable } = Object ;
const defineProperty = ( object , name , value ) => Object . defineProperty ( object , name , {
value ,
writable : true ,
enumerable : true ,
configurable : true
} ) ;
const globalThis = this ;
const defaultMergeOptions = {
concatArrays : false ,
ignoreUndefined : false
} ;
const getEnumerableOwnPropertyKeys = value => {
const keys = [ ] ;
for ( const key in value ) {
if ( hasOwnProperty . call ( value , key ) ) {
keys . push ( key ) ;
}
}
/* istanbul ignore else */
if ( Object . getOwnPropertySymbols ) {
const symbols = Object . getOwnPropertySymbols ( value ) ;
for ( const symbol of symbols ) {
if ( propertyIsEnumerable . call ( value , symbol ) ) {
keys . push ( symbol ) ;
}
}
}
return keys ;
} ;
function clone ( value ) {
if ( Array . isArray ( value ) ) {
return cloneArray ( value ) ;
}
if ( isOptionObject ( value ) ) {
return cloneOptionObject ( value ) ;
}
return value ;
}
function cloneArray ( array ) {
const result = array . slice ( 0 , 0 ) ;
getEnumerableOwnPropertyKeys ( array ) . forEach ( key => {
defineProperty ( result , key , clone ( array [ key ] ) ) ;
} ) ;
return result ;
}
function cloneOptionObject ( object ) {
const result = Object . getPrototypeOf ( object ) === null ? Object . create ( null ) : { } ;
getEnumerableOwnPropertyKeys ( object ) . forEach ( key => {
defineProperty ( result , key , clone ( object [ key ] ) ) ;
} ) ;
return result ;
}
/ * *
* @ param { * } merged already cloned
* @ param { * } source something to merge
* @ param { string [ ] } keys keys to merge
* @ param { Object } config Config Object
* @ returns { * } cloned Object
* /
const mergeKeys = ( merged , source , keys , config ) => {
keys . forEach ( key => {
if ( typeof source [ key ] === 'undefined' && config . ignoreUndefined ) {
return ;
}
// 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 ] ) ) ;
}
} ) ;
return merged ;
} ;
/ * *
* @ 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 ;
[ merged , source ] . forEach ( array => {
const indices = [ ] ;
// `result.concat(array)` with cloning
for ( let k = 0 ; k < array . length ; k ++ ) {
if ( ! hasOwnProperty . call ( array , k ) ) {
continue ;
}
indices . push ( String ( k ) ) ;
if ( array === merged ) {
// Already cloned
defineProperty ( result , resultIndex ++ , array [ k ] ) ;
} else {
defineProperty ( result , resultIndex ++ , clone ( array [ k ] ) ) ;
}
}
// Merge non-index keys
result = mergeKeys ( result , array , getEnumerableOwnPropertyKeys ( array ) . filter ( key => ! indices . includes ( key ) ) , config ) ;
} ) ;
return result ;
} ;
/ * *
* @ 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 ) ;
}
if ( ! isOptionObject ( source ) || ! isOptionObject ( merged ) ) {
return clone ( source ) ;
}
return mergeKeys ( merged , source , getEnumerableOwnPropertyKeys ( source ) , config ) ;
}
module . exports = function ( ... options ) {
const config = merge ( clone ( defaultMergeOptions ) , ( this !== globalThis && this ) || { } , defaultMergeOptions ) ;
let merged = { _ : { } } ;
for ( const option of options ) {
if ( option === undefined ) {
continue ;
}
if ( ! isOptionObject ( option ) ) {
throw new TypeError ( '`' + option + '` is not an Option Object' ) ;
}
merged = merge ( merged , { _ : option } , config ) ;
}
return merged . _ ;
} ;
} , { "is-plain-obj" : 34 } ] , 36 : [ function ( require , module , exports ) {
// shim for using process in browser
var process = module . exports = { } ;
// 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.
var cachedSetTimeout ;
var cachedClearTimeout ;
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 ;
} else {
cachedSetTimeout = defaultSetTimout ;
}
} catch ( e ) {
cachedSetTimeout = defaultSetTimout ;
}
try {
if ( typeof clearTimeout === 'function' ) {
cachedClearTimeout = clearTimeout ;
} else {
cachedClearTimeout = defaultClearTimeout ;
}
} catch ( e ) {
cachedClearTimeout = defaultClearTimeout ;
}
} ( ) )
function runTimeout ( fun ) {
if ( cachedSetTimeout === setTimeout ) {
//normal enviroments in sane situations
return setTimeout ( fun , 0 ) ;
}
// if setTimeout wasn't available but was latter defined
if ( ( cachedSetTimeout === defaultSetTimout || ! cachedSetTimeout ) && setTimeout ) {
cachedSetTimeout = setTimeout ;
return setTimeout ( fun , 0 ) ;
}
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 ) ;
}
}
}
function runClearTimeout ( marker ) {
if ( cachedClearTimeout === clearTimeout ) {
//normal enviroments in sane situations
return clearTimeout ( marker ) ;
}
// if clearTimeout wasn't available but was latter defined
if ( ( cachedClearTimeout === defaultClearTimeout || ! cachedClearTimeout ) && clearTimeout ) {
cachedClearTimeout = clearTimeout ;
return clearTimeout ( marker ) ;
}
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 ) ;
}
}
}
var queue = [ ] ;
var draining = false ;
var currentQueue ;
var queueIndex = - 1 ;
function cleanUpNextTick ( ) {
if ( ! draining || ! currentQueue ) {
return ;
}
draining = false ;
if ( currentQueue . length ) {
queue = currentQueue . concat ( queue ) ;
} else {
queueIndex = - 1 ;
}
if ( queue . length ) {
drainQueue ( ) ;
}
}
function drainQueue ( ) {
if ( draining ) {
return ;
}
var timeout = runTimeout ( cleanUpNextTick ) ;
draining = true ;
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 ) ;
}
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 ) ;
}
} ;
// 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 = { } ;
function noop ( ) { }
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 ;
process . listeners = function ( name ) { return [ ] }
process . binding = function ( name ) {
throw new Error ( 'process.binding is not supported' ) ;
} ;
process . cwd = function ( ) { return '/' } ;
process . chdir = function ( dir ) {
throw new Error ( 'process.chdir is not supported' ) ;
} ;
process . umask = function ( ) { return 0 ; } ;
} , { } ] , 37 : [ function ( require , module , exports ) {
'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 ) ;
} ;
} , { "decode-uri-component" : 32 , "filter-obj" : 33 , "split-on-first" : 38 , "strict-uri-encode" : 39 } ] , 38 : [ function ( require , module , exports ) {
'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 )
] ;
} ;
} , { } ] , 39 : [ function ( require , module , exports ) {
'use strict' ;
module . exports = str => encodeURIComponent ( str ) . replace ( /[!'()*]/g , x => ` % ${ x . charCodeAt ( 0 ) . toString ( 16 ) . toUpperCase ( ) } ` ) ;
} , { } ] , 40 : [ function ( require , module , exports ) {
( function ( module ) {
'use strict' ;
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 ;
// private function
// internal URI spitter method - direct from RFC 3986
var splitUri = function ( uri ) {
var splitted = uri . match ( /(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/ ) ;
return splitted ;
} ;
function is _iri ( value ) {
if ( ! value ) {
return ;
}
// check for illegal characters
if ( /[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i . test ( value ) ) return ;
// 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 ;
var splitted = [ ] ;
var scheme = '' ;
var authority = '' ;
var path = '' ;
var query = '' ;
var fragment = '' ;
var out = '' ;
// from RFC 3986
splitted = splitUri ( value ) ;
scheme = splitted [ 1 ] ;
authority = splitted [ 2 ] ;
path = splitted [ 3 ] ;
query = splitted [ 4 ] ;
fragment = splitted [ 5 ] ;
// scheme and path are required, though the path can be empty
if ( ! ( scheme && scheme . length && path . length >= 0 ) ) return ;
// 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 ;
}
// scheme must begin with a letter, then consist of letters, digits, +, ., or -
if ( ! /^[a-z][a-z0-9\+\-\.]*$/ . test ( scheme . toLowerCase ( ) ) ) return ;
// re-assemble the URL per section 5.3 in RFC 3986
out += scheme + ':' ;
if ( authority && authority . length ) {
out += '//' + authority ;
}
out += path ;
if ( query && query . length ) {
out += '?' + query ;
}
if ( fragment && fragment . length ) {
out += '#' + fragment ;
}
return out ;
}
function is _http _iri ( value , allowHttps ) {
if ( ! is _iri ( value ) ) {
return ;
}
var splitted = [ ] ;
var scheme = '' ;
var authority = '' ;
var path = '' ;
var port = '' ;
var query = '' ;
var fragment = '' ;
var out = '' ;
// from RFC 3986
splitted = splitUri ( value ) ;
scheme = splitted [ 1 ] ;
authority = splitted [ 2 ] ;
path = splitted [ 3 ] ;
query = splitted [ 4 ] ;
fragment = splitted [ 5 ] ;
if ( ! scheme ) return ;
if ( allowHttps ) {
if ( scheme . toLowerCase ( ) != 'https' ) return ;
} else {
if ( scheme . toLowerCase ( ) != 'http' ) return ;
}
// fully-qualified URIs must have an authority section that is
// a valid host
if ( ! authority ) {
return ;
}
// enable port component
if ( /:(\d+)$/ . test ( authority ) ) {
port = authority . match ( /:(\d+)$/ ) [ 0 ] ;
authority = authority . replace ( /:\d+$/ , '' ) ;
}
out += scheme + ':' ;
out += '//' + authority ;
if ( port ) {
out += port ;
}
out += path ;
if ( query && query . length ) {
out += '?' + query ;
}
if ( fragment && fragment . length ) {
out += '#' + fragment ;
}
return out ;
}
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 ) ) ;
}
} ) ( module ) ;
} , { } ] , 41 : [ function ( require , module , exports ) {
"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 = void 0 ;
var _toDate = _interopRequireDefault ( require ( "./lib/toDate" ) ) ;
var _toFloat = _interopRequireDefault ( require ( "./lib/toFloat" ) ) ;
var _toInt = _interopRequireDefault ( require ( "./lib/toInt" ) ) ;
var _toBoolean = _interopRequireDefault ( require ( "./lib/toBoolean" ) ) ;
var _equals = _interopRequireDefault ( require ( "./lib/equals" ) ) ;
var _contains = _interopRequireDefault ( require ( "./lib/contains" ) ) ;
var _matches = _interopRequireDefault ( require ( "./lib/matches" ) ) ;
var _isEmail = _interopRequireDefault ( require ( "./lib/isEmail" ) ) ;
var _isURL = _interopRequireDefault ( require ( "./lib/isURL" ) ) ;
var _isMACAddress = _interopRequireDefault ( require ( "./lib/isMACAddress" ) ) ;
var _isIP = _interopRequireDefault ( require ( "./lib/isIP" ) ) ;
var _isIPRange = _interopRequireDefault ( require ( "./lib/isIPRange" ) ) ;
var _isFQDN = _interopRequireDefault ( require ( "./lib/isFQDN" ) ) ;
var _isDate = _interopRequireDefault ( require ( "./lib/isDate" ) ) ;
var _isBoolean = _interopRequireDefault ( require ( "./lib/isBoolean" ) ) ;
var _isLocale = _interopRequireDefault ( require ( "./lib/isLocale" ) ) ;
var _isAlpha = _interopRequireWildcard ( require ( "./lib/isAlpha" ) ) ;
var _isAlphanumeric = _interopRequireWildcard ( require ( "./lib/isAlphanumeric" ) ) ;
var _isNumeric = _interopRequireDefault ( require ( "./lib/isNumeric" ) ) ;
var _isPassportNumber = _interopRequireDefault ( require ( "./lib/isPassportNumber" ) ) ;
var _isPort = _interopRequireDefault ( require ( "./lib/isPort" ) ) ;
var _isLowercase = _interopRequireDefault ( require ( "./lib/isLowercase" ) ) ;
var _isUppercase = _interopRequireDefault ( require ( "./lib/isUppercase" ) ) ;
var _isIMEI = _interopRequireDefault ( require ( "./lib/isIMEI" ) ) ;
var _isAscii = _interopRequireDefault ( require ( "./lib/isAscii" ) ) ;
var _isFullWidth = _interopRequireDefault ( require ( "./lib/isFullWidth" ) ) ;
var _isHalfWidth = _interopRequireDefault ( require ( "./lib/isHalfWidth" ) ) ;
var _isVariableWidth = _interopRequireDefault ( require ( "./lib/isVariableWidth" ) ) ;
var _isMultibyte = _interopRequireDefault ( require ( "./lib/isMultibyte" ) ) ;
var _isSemVer = _interopRequireDefault ( require ( "./lib/isSemVer" ) ) ;
var _isSurrogatePair = _interopRequireDefault ( require ( "./lib/isSurrogatePair" ) ) ;
var _isInt = _interopRequireDefault ( require ( "./lib/isInt" ) ) ;
var _isFloat = _interopRequireWildcard ( require ( "./lib/isFloat" ) ) ;
var _isDecimal = _interopRequireDefault ( require ( "./lib/isDecimal" ) ) ;
var _isHexadecimal = _interopRequireDefault ( require ( "./lib/isHexadecimal" ) ) ;
var _isOctal = _interopRequireDefault ( require ( "./lib/isOctal" ) ) ;
var _isDivisibleBy = _interopRequireDefault ( require ( "./lib/isDivisibleBy" ) ) ;
var _isHexColor = _interopRequireDefault ( require ( "./lib/isHexColor" ) ) ;
var _isRgbColor = _interopRequireDefault ( require ( "./lib/isRgbColor" ) ) ;
var _isHSL = _interopRequireDefault ( require ( "./lib/isHSL" ) ) ;
var _isISRC = _interopRequireDefault ( require ( "./lib/isISRC" ) ) ;
var _isIBAN = _interopRequireWildcard ( require ( "./lib/isIBAN" ) ) ;
var _isBIC = _interopRequireDefault ( require ( "./lib/isBIC" ) ) ;
var _isMD = _interopRequireDefault ( require ( "./lib/isMD5" ) ) ;
var _isHash = _interopRequireDefault ( require ( "./lib/isHash" ) ) ;
var _isJWT = _interopRequireDefault ( require ( "./lib/isJWT" ) ) ;
var _isJSON = _interopRequireDefault ( require ( "./lib/isJSON" ) ) ;
var _isEmpty = _interopRequireDefault ( require ( "./lib/isEmpty" ) ) ;
var _isLength = _interopRequireDefault ( require ( "./lib/isLength" ) ) ;
var _isByteLength = _interopRequireDefault ( require ( "./lib/isByteLength" ) ) ;
var _isUUID = _interopRequireDefault ( require ( "./lib/isUUID" ) ) ;
var _isMongoId = _interopRequireDefault ( require ( "./lib/isMongoId" ) ) ;
var _isAfter = _interopRequireDefault ( require ( "./lib/isAfter" ) ) ;
var _isBefore = _interopRequireDefault ( require ( "./lib/isBefore" ) ) ;
var _isIn = _interopRequireDefault ( require ( "./lib/isIn" ) ) ;
var _isCreditCard = _interopRequireDefault ( require ( "./lib/isCreditCard" ) ) ;
var _isIdentityCard = _interopRequireDefault ( require ( "./lib/isIdentityCard" ) ) ;
var _isEAN = _interopRequireDefault ( require ( "./lib/isEAN" ) ) ;
var _isISIN = _interopRequireDefault ( require ( "./lib/isISIN" ) ) ;
var _isISBN = _interopRequireDefault ( require ( "./lib/isISBN" ) ) ;
var _isISSN = _interopRequireDefault ( require ( "./lib/isISSN" ) ) ;
var _isTaxID = _interopRequireDefault ( require ( "./lib/isTaxID" ) ) ;
var _isMobilePhone = _interopRequireWildcard ( require ( "./lib/isMobilePhone" ) ) ;
var _isEthereumAddress = _interopRequireDefault ( require ( "./lib/isEthereumAddress" ) ) ;
var _isCurrency = _interopRequireDefault ( require ( "./lib/isCurrency" ) ) ;
var _isBtcAddress = _interopRequireDefault ( require ( "./lib/isBtcAddress" ) ) ;
var _isISO = _interopRequireDefault ( require ( "./lib/isISO8601" ) ) ;
var _isRFC = _interopRequireDefault ( require ( "./lib/isRFC3339" ) ) ;
var _isISO31661Alpha = _interopRequireDefault ( require ( "./lib/isISO31661Alpha2" ) ) ;
var _isISO31661Alpha2 = _interopRequireDefault ( require ( "./lib/isISO31661Alpha3" ) ) ;
var _isISO2 = _interopRequireDefault ( require ( "./lib/isISO4217" ) ) ;
var _isBase = _interopRequireDefault ( require ( "./lib/isBase32" ) ) ;
var _isBase2 = _interopRequireDefault ( require ( "./lib/isBase58" ) ) ;
var _isBase3 = _interopRequireDefault ( require ( "./lib/isBase64" ) ) ;
var _isDataURI = _interopRequireDefault ( require ( "./lib/isDataURI" ) ) ;
var _isMagnetURI = _interopRequireDefault ( require ( "./lib/isMagnetURI" ) ) ;
var _isMimeType = _interopRequireDefault ( require ( "./lib/isMimeType" ) ) ;
var _isLatLong = _interopRequireDefault ( require ( "./lib/isLatLong" ) ) ;
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 _isLicensePlate = _interopRequireDefault ( require ( "./lib/isLicensePlate" ) ) ;
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.7.0' ;
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 ,
isISO4217 : _isISO2 . 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 ,
isLicensePlate : _isLicensePlate . default ,
isVAT : _isVAT . default ,
ibanLocales : _isIBAN . locales
} ;
var _default = validator ;
exports . default = _default ;
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./lib/blacklist" : 43 , "./lib/contains" : 44 , "./lib/equals" : 45 , "./lib/escape" : 46 , "./lib/isAfter" : 47 , "./lib/isAlpha" : 48 , "./lib/isAlphanumeric" : 49 , "./lib/isAscii" : 50 , "./lib/isBIC" : 51 , "./lib/isBase32" : 52 , "./lib/isBase58" : 53 , "./lib/isBase64" : 54 , "./lib/isBefore" : 55 , "./lib/isBoolean" : 56 , "./lib/isBtcAddress" : 57 , "./lib/isByteLength" : 58 , "./lib/isCreditCard" : 59 , "./lib/isCurrency" : 60 , "./lib/isDataURI" : 61 , "./lib/isDate" : 62 , "./lib/isDecimal" : 63 , "./lib/isDivisibleBy" : 64 , "./lib/isEAN" : 65 , "./lib/isEmail" : 66 , "./lib/isEmpty" : 67 , "./lib/isEthereumAddress" : 68 , "./lib/isFQDN" : 69 , "./lib/isFloat" : 70 , "./lib/isFullWidth" : 71 , "./lib/isHSL" : 72 , "./lib/isHalfWidth" : 73 , "./lib/isHash" : 74 , "./lib/isHexColor" : 75 , "./lib/isHexadecimal" : 76 , "./lib/isIBAN" : 77 , "./lib/isIMEI" : 78 , "./lib/isIP" : 79 , "./lib/isIPRange" : 80 , "./lib/isISBN" : 81 , "./lib/isISIN" : 82 , "./lib/isISO31661Alpha2" : 83 , "./lib/isISO31661Alpha3" : 84 , "./lib/isISO4217" : 85 , "./lib/isISO8601" : 86 , "./lib/isISRC" : 87 , "./lib/isISSN" : 88 , "./lib/isIdentityCard" : 89 , "./lib/isIn" : 90 , "./lib/isInt" : 91 , "./lib/isJSON" : 92 , "./lib/isJWT" : 93 , "./lib/isLatLong" : 94 , "./lib/isLength" : 95 , "./lib/isLicensePlate" : 96 , "./lib/isLocale" : 97 , "./lib/isLowercase" : 98 , "./lib/isMACAddress" : 99 , "./lib/isMD5" : 100 , "./lib/isMagnetURI" : 101 , "./lib/isMimeType" : 102 , "./lib/isMobilePhone" : 103 , "./lib/isMongoId" : 104 , "./lib/isMultibyte" : 105 , "./lib/isNumeric" : 106 , "./lib/isOctal" : 107 , "./lib/isPassportNumber" : 108 , "./lib/isPort" : 109 , "./lib/isPostalCode" : 110 , "./lib/isRFC3339" : 111 , "./lib/isRgbColor" : 112 , "./lib/isSemVer" : 113 , "./lib/isSlug" : 114 , "./lib/isStrongPassword" : 115 , "./lib/isSurrogatePair" : 116 , "./lib/isTaxID" : 117 , "./lib/isURL" : 118 , "./lib/isUUID" : 119 , "./lib/isUppercase" : 120 , "./lib/isVAT" : 121 , "./lib/isVariableWidth" : 122 , "./lib/isWhitelisted" : 123 , "./lib/ltrim" : 124 , "./lib/matches" : 125 , "./lib/normalizeEmail" : 126 , "./lib/rtrim" : 127 , "./lib/stripLow" : 128 , "./lib/toBoolean" : 129 , "./lib/toDate" : 130 , "./lib/toFloat" : 131 , "./lib/toInt" : 132 , "./lib/trim" : 133 , "./lib/unescape" : 134 , "./lib/whitelist" : 141 } ] , 42 : [ function ( require , module , exports ) {
"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 ,
'fi-FI' : /^[A-ZÅÄÖ]+$/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 ,
'hi-IN' : /^[\u0900-\u0961]+[\u0972-\u097F]*$/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 ,
'fi-FI' : /^[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 ,
'hi-IN' : /^[\u0900-\u0963]+[\u0966-\u097F]*$/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 ;
}
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' , 'hi-IN' , '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 ;
} , { } ] , 43 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 44 : [ function ( require , module , exports ) {
"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 ,
minOccurrences : 1
} ;
function contains ( str , elem , options ) {
( 0 , _assertString . default ) ( str ) ;
options = ( 0 , _merge . default ) ( options , defaulContainsOptions ) ;
if ( options . ignoreCase ) {
return str . toLowerCase ( ) . split ( ( 0 , _toString . default ) ( elem ) . toLowerCase ( ) ) . length > options . minOccurrences ;
}
return str . split ( ( 0 , _toString . default ) ( elem ) ) . length > options . minOccurrences ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 , "./util/toString" : 140 } ] , 45 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 46 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 47 : [ function ( require , module , exports ) {
"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 ;
} , { "./toDate" : 130 , "./util/assertString" : 136 } ] , 48 : [ function ( require , module , exports ) {
"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' ) ;
}
}
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 ;
} , { "./alpha" : 42 , "./util/assertString" : 136 } ] , 49 : [ function ( require , module , exports ) {
"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' ;
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' ) ;
}
}
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 ;
} , { "./alpha" : 42 , "./util/assertString" : 136 } ] , 50 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 51 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isBIC ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isISO31661Alpha = require ( "./isISO31661Alpha2" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// https://en.wikipedia.org/wiki/ISO_9362
var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/ ;
function isBIC ( str ) {
( 0 , _assertString . default ) ( str ) ; // toUpperCase() should be removed when a new major version goes out that changes
// the regex to [A-Z] (per the spec).
if ( ! _isISO31661Alpha . CountryCodes . has ( str . slice ( 4 , 6 ) . toUpperCase ( ) ) ) {
return false ;
}
return isBICReg . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./isISO31661Alpha2" : 83 , "./util/assertString" : 136 } ] , 52 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 53 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 54 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 55 : [ function ( require , module , exports ) {
"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 ;
} , { "./toDate" : 130 , "./util/assertString" : 136 } ] , 56 : [ function ( require , module , exports ) {
"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 } ; }
var defaultOptions = {
loose : false
} ;
var strictBooleans = [ 'true' , 'false' , '1' , '0' ] ;
var looseBooleans = [ ] . concat ( strictBooleans , [ 'yes' , 'no' ] ) ;
function isBoolean ( str ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : defaultOptions ;
( 0 , _assertString . default ) ( str ) ;
if ( options . loose ) {
return looseBooleans . includes ( str . toLowerCase ( ) ) ;
}
return strictBooleans . includes ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 57 : [ function ( require , module , exports ) {
"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 bech32 = /^(bc1)[a-z0-9]{25,39}$/ ;
var base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/ ;
function isBtcAddress ( str ) {
( 0 , _assertString . default ) ( str ) ; // check for bech32
if ( str . startsWith ( 'bc1' ) ) {
return bech32 . test ( str ) ;
}
return base58 . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 58 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 59 : [ function ( require , module , exports ) {
"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}|^(81[0-9]{14,17}))$/ ;
/* 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 ;
}
shouldDouble = ! shouldDouble ;
}
return ! ! ( sum % 10 === 0 ? sanitized : false ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 60 : [ function ( require , module , exports ) {
"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 ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 61 : [ function ( require , module , exports ) {
"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' ) && ! 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 ;
} , { "./util/assertString" : 136 } ] , 62 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/merge" : 138 } ] , 63 : [ function ( require , module , exports ) {
"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 ;
} , { "./alpha" : 42 , "./util/assertString" : 136 , "./util/includes" : 137 , "./util/merge" : 138 } ] , 64 : [ function ( require , module , exports ) {
"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 ;
} , { "./toFloat" : 131 , "./util/assertString" : 136 } ] , 65 : [ function ( require , module , exports ) {
"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 .
* Also EAN / UCC - 14 is used for Grouping of individual
* trade items above unit level ( Intermediate , Carton or Pallet ) .
* For more info about EAN - 14 checkout : https : //www.gtin.info/itf-14-barcodes/
* EAN consists of :
* GS1 prefix , manufacturer code , product code and check digit
* Reference : https : //en.wikipedia.org/wiki/International_Article_Number
* Reference : https : //www.gtin.info/
* /
/ * *
* Define EAN Lenghts ; 8 for EAN - 8 ; 13 for EAN - 13 ; 14 for EAN - 14
* and Regular Expression for valid EANs ( EAN - 8 , EAN - 13 , EAN - 14 ) ,
* with exact numberic matching of 8 or 13 or 14 digits [ 0 - 9 ]
* /
var LENGTH _EAN _8 = 8 ;
var LENGTH _EAN _14 = 14 ;
var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/ ;
/ * *
* 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 || length === LENGTH _EAN _14 ) {
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 / EAN - 14 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 ;
} , { "./util/assertString" : 136 } ] , 66 : [ function ( require , module , exports ) {
"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 } ; }
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 ,
host _blacklist : [ ]
} ;
/* 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 display _name _without _quotes = display _name . replace ( /^"(.+)"$/ , '$1' ) ; // 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 ( display _name _without _quotes === display _name ) {
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 = display _email [ 1 ] ; // Remove display name and angle brackets to get email address
// Can be done in the regex but will introduce a ReDOS (See #1597 for more info)
str = str . replace ( display _name , '' ) . replace ( /(^<|>$)/g , '' ) ; // 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 lower _domain = domain . toLowerCase ( ) ;
if ( options . host _blacklist . includes ( lower _domain ) ) {
return false ;
}
var user = parts . join ( '@' ) ;
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 ( /\./g , '' ) , {
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 _i = 0 ; _i < user _parts . length ; _i ++ ) {
if ( ! pattern . test ( user _parts [ _i ] ) ) {
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 ;
} , { "./isByteLength" : 58 , "./isFQDN" : 69 , "./isIP" : 79 , "./util/assertString" : 136 , "./util/merge" : 138 } ] , 67 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 68 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 69 : [ function ( require , module , exports ) {
"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 ,
allow _wildcard : 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 ) ;
}
/* Remove the optional wildcard before checking validity */
if ( options . allow _wildcard === true && str . indexOf ( '*.' ) === 0 ) {
str = str . substring ( 2 ) ;
}
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-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i . test ( tld ) ) {
return false ;
} // disallow spaces
if ( /\s/ . 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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 70 : [ function ( require , module , exports ) {
"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 ;
} , { "./alpha" : 42 , "./util/assertString" : 136 } ] , 71 : [ function ( require , module , exports ) {
"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 ) ;
}
} , { "./util/assertString" : 136 } ] , 72 : [ function ( require , module , exports ) {
"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 = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i ;
var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\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 ) ; // Strip duplicate spaces before calling the validation regex (See #1598 for more info)
var strippedStr = str . replace ( /\s+/g , ' ' ) . replace ( /\s?(hsla?\(|\)|,)\s?/ig , '$1' ) ;
if ( strippedStr . indexOf ( ',' ) !== - 1 ) {
return hslComma . test ( strippedStr ) ;
}
return hslSpace . test ( strippedStr ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 73 : [ function ( require , module , exports ) {
"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 ) ;
}
} , { "./util/assertString" : 136 } ] , 74 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 75 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 76 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 77 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIBAN ;
exports . locales = void 0 ;
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}$/ ,
MZ : /^(MZ[0-9]{2})\d{21}$/ ,
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 ) ;
}
var locales = Object . keys ( ibanRegexThroughCountryCode ) ;
exports . locales = locales ;
} , { "./util/assertString" : 136 } ] , 78 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 79 : [ function ( require , module , exports ) {
"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 IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' ;
var IPv4AddressFormat = "(" . concat ( IPv4SegmentFormat , "[.]){3}" ) . concat ( IPv4SegmentFormat ) ;
var IPv4AddressRegExp = new RegExp ( "^" . concat ( IPv4AddressFormat , "$" ) ) ;
var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})' ;
var IPv6AddressRegExp = new RegExp ( '^(' + "(?:" . concat ( IPv6SegmentFormat , ":){7}(?:" ) . concat ( IPv6SegmentFormat , "|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){6}(?:" ) . concat ( IPv4AddressFormat , "|:" ) . concat ( IPv6SegmentFormat , "|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){5}(?::" ) . concat ( IPv4AddressFormat , "|(:" ) . concat ( IPv6SegmentFormat , "){1,2}|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){4}(?:(:" ) . concat ( IPv6SegmentFormat , "){0,1}:" ) . concat ( IPv4AddressFormat , "|(:" ) . concat ( IPv6SegmentFormat , "){1,3}|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){3}(?:(:" ) . concat ( IPv6SegmentFormat , "){0,2}:" ) . concat ( IPv4AddressFormat , "|(:" ) . concat ( IPv6SegmentFormat , "){1,4}|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){2}(?:(:" ) . concat ( IPv6SegmentFormat , "){0,3}:" ) . concat ( IPv4AddressFormat , "|(:" ) . concat ( IPv6SegmentFormat , "){1,5}|:)|" ) + "(?:" . concat ( IPv6SegmentFormat , ":){1}(?:(:" ) . concat ( IPv6SegmentFormat , "){0,4}:" ) . concat ( IPv4AddressFormat , "|(:" ) . concat ( IPv6SegmentFormat , "){1,6}|:)|" ) + "(?::((?::" . concat ( IPv6SegmentFormat , "){0,5}:" ) . concat ( IPv4AddressFormat , "|(?::" ) . concat ( IPv6SegmentFormat , "){1,7}|:))" ) + ')(%[0-9a-zA-Z-.:]{1,})?$' ) ;
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 ) ;
}
if ( version === '4' ) {
if ( ! IPv4AddressRegExp . test ( str ) ) {
return false ;
}
var parts = str . split ( '.' ) . sort ( function ( a , b ) {
return a - b ;
} ) ;
return parts [ 3 ] <= 255 ;
}
if ( version === '6' ) {
return ! ! IPv6AddressRegExp . test ( str ) ;
}
return false ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 80 : [ function ( require , module , exports ) {
"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,3}$/ ;
var v4Subnet = 32 ;
var v6Subnet = 128 ;
function isIPRange ( str ) {
var version = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : '' ;
( 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 ;
}
var isValidIP = ( 0 , _isIP . default ) ( parts [ 0 ] , version ) ;
if ( ! isValidIP ) {
return false ;
} // Define valid subnet according to IP's version
var expectedSubnet = null ;
switch ( String ( version ) ) {
case '4' :
expectedSubnet = v4Subnet ;
break ;
case '6' :
expectedSubnet = v6Subnet ;
break ;
default :
expectedSubnet = ( 0 , _isIP . default ) ( parts [ 0 ] , '6' ) ? v6Subnet : v4Subnet ;
}
return parts [ 1 ] <= expectedSubnet && parts [ 1 ] >= 0 ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./isIP" : 79 , "./util/assertString" : 136 } ] , 81 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 82 : [ function ( require , module , exports ) {
"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]$/ ; // this link details how the check digit is calculated:
// https://www.isin.org/isin-format/. it is a little bit
// odd in that it works with digits, not numbers. in order
// to make only one pass through the ISIN characters, the
// each alpha character is handled as 2 characters within
// the loop.
function isISIN ( str ) {
( 0 , _assertString . default ) ( str ) ;
if ( ! isin . test ( str ) ) {
return false ;
}
var double = true ;
var sum = 0 ; // convert values
for ( var i = str . length - 2 ; i >= 0 ; i -- ) {
if ( str [ i ] >= 'A' && str [ i ] <= 'Z' ) {
var value = str [ i ] . charCodeAt ( 0 ) - 55 ;
var lo = value % 10 ;
var hi = Math . trunc ( value / 10 ) ; // letters have two digits, so handle the low order
// and high order digits separately.
for ( var _i = 0 , _arr = [ lo , hi ] ; _i < _arr . length ; _i ++ ) {
var digit = _arr [ _i ] ;
if ( double ) {
if ( digit >= 5 ) {
sum += 1 + ( digit - 5 ) * 2 ;
} else {
sum += digit * 2 ;
}
} else {
sum += digit ;
}
double = ! double ;
}
} else {
var _digit = str [ i ] . charCodeAt ( 0 ) - '0' . charCodeAt ( 0 ) ;
if ( double ) {
if ( _digit >= 5 ) {
sum += 1 + ( _digit - 5 ) * 2 ;
} else {
sum += _digit * 2 ;
}
} else {
sum += _digit ;
}
double = ! double ;
}
}
var check = Math . trunc ( ( sum + 9 ) / 10 ) * 10 - sum ;
return + str [ str . length - 1 ] === check ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 83 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO31661Alpha2 ;
exports . CountryCodes = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
var validISO31661Alpha2CountriesCodes = new Set ( [ '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 validISO31661Alpha2CountriesCodes . has ( str . toUpperCase ( ) ) ;
}
var CountryCodes = validISO31661Alpha2CountriesCodes ;
exports . CountryCodes = CountryCodes ;
} , { "./util/assertString" : 136 } ] , 84 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO31661Alpha3 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
var validISO31661Alpha3CountriesCodes = new Set ( [ '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 validISO31661Alpha3CountriesCodes . has ( str . toUpperCase ( ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 85 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isISO4217 ;
exports . CurrencyCodes = void 0 ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// from https://en.wikipedia.org/wiki/ISO_4217
var validISO4217CurrencyCodes = new Set ( [ 'AED' , 'AFN' , 'ALL' , 'AMD' , 'ANG' , 'AOA' , 'ARS' , 'AUD' , 'AWG' , 'AZN' , 'BAM' , 'BBD' , 'BDT' , 'BGN' , 'BHD' , 'BIF' , 'BMD' , 'BND' , 'BOB' , 'BOV' , 'BRL' , 'BSD' , 'BTN' , 'BWP' , 'BYN' , 'BZD' , 'CAD' , 'CDF' , 'CHE' , 'CHF' , 'CHW' , 'CLF' , 'CLP' , 'CNY' , 'COP' , 'COU' , 'CRC' , 'CUC' , 'CUP' , 'CVE' , 'CZK' , 'DJF' , 'DKK' , 'DOP' , 'DZD' , 'EGP' , 'ERN' , 'ETB' , 'EUR' , 'FJD' , 'FKP' , 'GBP' , 'GEL' , 'GHS' , 'GIP' , 'GMD' , 'GNF' , 'GTQ' , 'GYD' , 'HKD' , 'HNL' , 'HRK' , 'HTG' , 'HUF' , 'IDR' , 'ILS' , 'INR' , 'IQD' , 'IRR' , 'ISK' , 'JMD' , 'JOD' , 'JPY' , 'KES' , 'KGS' , 'KHR' , 'KMF' , 'KPW' , 'KRW' , 'KWD' , 'KYD' , 'KZT' , 'LAK' , 'LBP' , 'LKR' , 'LRD' , 'LSL' , 'LYD' , 'MAD' , 'MDL' , 'MGA' , 'MKD' , 'MMK' , 'MNT' , 'MOP' , 'MRU' , 'MUR' , 'MVR' , 'MWK' , 'MXN' , 'MXV' , 'MYR' , 'MZN' , 'NAD' , 'NGN' , 'NIO' , 'NOK' , 'NPR' , 'NZD' , 'OMR' , 'PAB' , 'PEN' , 'PGK' , 'PHP' , 'PKR' , 'PLN' , 'PYG' , 'QAR' , 'RON' , 'RSD' , 'RUB' , 'RWF' , 'SAR' , 'SBD' , 'SCR' , 'SDG' , 'SEK' , 'SGD' , 'SHP' , 'SLL' , 'SOS' , 'SRD' , 'SSP' , 'STN' , 'SVC' , 'SYP' , 'SZL' , 'THB' , 'TJS' , 'TMT' , 'TND' , 'TOP' , 'TRY' , 'TTD' , 'TWD' , 'TZS' , 'UAH' , 'UGX' , 'USD' , 'USN' , 'UYI' , 'UYU' , 'UYW' , 'UZS' , 'VES' , 'VND' , 'VUV' , 'WST' , 'XAF' , 'XAG' , 'XAU' , 'XBA' , 'XBB' , 'XBC' , 'XBD' , 'XCD' , 'XDR' , 'XOF' , 'XPD' , 'XPF' , 'XPT' , 'XSU' , 'XTS' , 'XUA' , 'XXX' , 'YER' , 'ZAR' , 'ZMW' , 'ZWL' ] ) ;
function isISO4217 ( str ) {
( 0 , _assertString . default ) ( str ) ;
return validISO4217CurrencyCodes . has ( str . toUpperCase ( ) ) ;
}
var CurrencyCodes = validISO4217CurrencyCodes ;
exports . CurrencyCodes = CurrencyCodes ;
} , { "./util/assertString" : 136 } ] , 86 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 87 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 88 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 89 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isIdentityCard ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
var _isInt = _interopRequireDefault ( require ( "./isInt" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var validators = {
PL : function PL ( str ) {
( 0 , _assertString . default ) ( str ) ;
var weightOfDigits = {
1 : 1 ,
2 : 3 ,
3 : 7 ,
4 : 9 ,
5 : 1 ,
6 : 3 ,
7 : 7 ,
8 : 9 ,
9 : 1 ,
10 : 3 ,
11 : 0
} ;
if ( str != null && str . length === 11 && ( 0 , _isInt . default ) ( str , {
allow _leading _zeroes : true
} ) ) {
var digits = str . split ( '' ) . slice ( 0 , - 1 ) ;
var sum = digits . reduce ( function ( acc , digit , index ) {
return acc + Number ( digit ) * weightOfDigits [ index + 1 ] ;
} , 0 ) ;
var modulo = sum % 10 ;
var lastDigit = Number ( str . charAt ( str . length - 1 ) ) ;
if ( modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo ) {
return true ;
}
}
return false ;
} ,
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 ] ) ;
} ,
FI : function FI ( str ) {
// https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated
( 0 , _assertString . default ) ( str ) ;
if ( str . length !== 11 ) {
return false ;
}
if ( ! str . match ( /^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/ ) ) {
return false ;
}
var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY' ;
var idAsNumber = parseInt ( str . slice ( 0 , 6 ) , 10 ) * 1000 + parseInt ( str . slice ( 7 , 10 ) , 10 ) ;
var remainder = idAsNumber % 31 ;
var checkDigit = checkDigits [ remainder ] ;
return checkDigit === str . slice ( 10 , 11 ) ;
} ,
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 ;
} ,
IR : function IR ( str ) {
if ( ! str . match ( /^\d{10}$/ ) ) return false ;
str = "0000" . concat ( str ) . substr ( str . length - 6 ) ;
if ( parseInt ( str . substr ( 3 , 6 ) , 10 ) === 0 ) return false ;
var lastNumber = parseInt ( str . substr ( 9 , 1 ) , 10 ) ;
var sum = 0 ;
for ( var i = 0 ; i < 9 ; i ++ ) {
sum += parseInt ( str . substr ( i , 1 ) , 10 ) * ( 10 - i ) ;
}
sum %= 11 ;
return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum ;
} ,
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 ;
} ,
TH : function TH ( str ) {
if ( ! str . match ( /^[1-8]\d{12}$/ ) ) return false ; // validate check digit
var sum = 0 ;
for ( var i = 0 ; i < 12 ; i ++ ) {
sum += parseInt ( str [ i ] , 10 ) * ( 13 - i ) ;
}
return str [ 12 ] === ( ( 11 - sum % 11 ) % 10 ) . toString ( ) ;
} ,
LK : function LK ( str ) {
var old _nic = /^[1-9]\d{8}[vx]$/i ;
var new _nic = /^[1-9]\d{11}$/i ;
if ( str . length === 10 && old _nic . test ( str ) ) return true ; else if ( str . length === 12 && new _nic . test ( str ) ) return true ;
return false ;
} ,
'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-LY' : function arLY ( str ) {
// Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2
var NIN = /^(1|2)\d{11}$/ ; // sanitize user input
var sanitized = str . trim ( ) ; // validate the data structure
if ( ! NIN . test ( sanitized ) ) {
return false ;
}
return true ;
} ,
'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 ;
} , { "./isInt" : 91 , "./util/assertString" : 136 } ] , 90 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/toString" : 140 } ] , 91 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 92 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 93 : [ function ( require , module , exports ) {
"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 ;
} , { "./isBase64" : 54 , "./util/assertString" : 136 } ] , 94 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 95 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 96 : [ function ( require , module , exports ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = isLicensePlate ;
var _assertString = _interopRequireDefault ( require ( "./util/assertString" ) ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var validators = {
'cs-CZ' : function csCZ ( str ) {
return /^(([ABCDEFHKIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/ . test ( str ) ;
} ,
'de-DE' : function deDE ( str ) {
return /^((AW|UL|AK|GA|AÖ|LF|AZ|AM|AS|ZE|AN|AB|A|KG|KH|BA|EW|BZ|HY|KM|BT|HP|B|BC|BI|BO|FN|TT|ÜB|BN|AH|BS|FR|HB|ZZ|BB|BK|BÖ|OC|OK|CW|CE|C|CO|LH|CB|KW|LC|LN|DA|DI|DE|DH|SY|NÖ|DO|DD|DU|DN|D|EI|EA|EE|FI|EM|EL|EN|PF|ED|EF|ER|AU|ZP|E|ES|NT|EU|FL|FO|FT|FF|F|FS|FD|FÜ|GE|G|GI|GF|GS|ZR|GG|GP|GR|NY|ZI|GÖ|GZ|GT|HA|HH|HM|HU|WL|HZ|WR|RN|HK|HD|HN|HS|GK|HE|HF|RZ|HI|HG|HO|HX|IK|IL|IN|J|JL|KL|KA|KS|KF|KE|KI|KT|KO|KN|KR|KC|KU|K|LD|LL|LA|L|OP|LM|LI|LB|LU|LÖ|HL|LG|MD|GN|MZ|MA|ML|MR|MY|AT|DM|MC|NZ|RM|RG|MM|ME|MB|MI|FG|DL|HC|MW|RL|MK|MG|MÜ|WS|MH|M|MS|NU|NB|ND|NM|NK|NW|NR|NI|NF|DZ|EB|OZ|TG|TO|N|OA|GM|OB|CA|EH|FW|OF|OL|OE|OG|BH|LR|OS|AA|GD|OH|KY|NP|WK|PB|PA|PE|PI|PS|P|PM|PR|RA|RV|RE|R|H|SB|WN|RS|RD|RT|BM|NE|GV|RP|SU|GL|RO|GÜ|RH|EG|RW|PN|SK|MQ|RU|SZ|RI|SL|SM|SC|HR|FZ|VS|SW|SN|CR|SE|SI|SO|LP|SG|NH|SP|IZ|ST|BF|TE|HV|OD|SR|S|AC|DW|ZW|TF|TS|TR|TÜ|UM|PZ|TP|UE|UN|UH|MN|KK|VB|V|AE|PL|RC|VG|GW|PW|VR|VK|KB|WA|WT|BE|WM|WE|AP|MO|WW|FB|WZ|WI|WB|JE|WF|WO|W|WÜ|BL|Z|GC)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(AIC|FDB|ABG|SLN|SAW|KLZ|BUL|ESB|NAB|SUL|WST|ABI|AZE|BTF|KÖT|DKB|FEU|ROT|ALZ|SMÜ|WER|AUR|NOR|DÜW|BRK|HAB|TÖL|WOR|BAD|BAR|BER|BIW|EBS|KEM|MÜB|PEG|BGL|BGD|REI|WIL|BKS|BIR|WAT|BOR|BOH|BOT|BRB|BLK|HHM|NEB|NMB|WSF|LEO|HDL|WMS|WZL|BÜS|CHA|KÖZ|ROD|WÜM|CLP|NEC|COC|ZEL|COE|CUX|DAH|LDS|DEG|DEL|RSL|DLG|DGF|LAN|HEI|MED|DON|KIB|ROK|JÜL|MON|SLE|EBE|EIC|HIG|WBS|BIT|PRÜ|LIB|EMD|WIT|ERH|HÖS|ERZ|ANA|ASZ|MAB|MEK|STL|SZB|FDS|HCH|HOR|WOL|FRG|GRA|WOS|FRI|FFB|GAP|GER|BRL|CLZ|GTH|NOH|HGW|GRZ|LÖB|NOL|WSW|DUD|HMÜ|OHA|KRU|HAL|HAM|HBS|QLB|HVL|NAU|HAS|EBN|GEO|HOH|HDH|ERK|HER|WAN|HEF|ROF|HBN|ALF|HSK|USI|NAI|REH|SAN|KÜN|ÖHR|HOL|WAR|ARN|BRG|GNT|HOG|WOH|KEH|MAI|PAR|RID|ROL|KLE|GEL|KUS|KYF|ART|SDH|LDK|DIL|MAL|VIB|LER|BNA|GHA|GRM|MTL|WUR|LEV|LIF|STE|WEL|LIP|VAI|LUP|HGN|LBZ|LWL|PCH|STB|DAN|MKK|SLÜ|MSP|TBB|MGH|MTK|BIN|MSH|EIL|HET|SGH|BID|MYK|MSE|MST|MÜR|WRN|MEI|GRH|RIE|MZG|MIL|OBB|BED|FLÖ|MOL|FRW|SEE|SRB|AIB|MOS|BCH|ILL|SOB|NMS|NEA|SEF|UFF|NEW|VOH|NDH|TDO|NWM|GDB|GVM|WIS|NOM|EIN|GAN|LAU|HEB|OHV|OSL|SFB|ERB|LOS|BSK|KEL|BSB|MEL|WTL|OAL|FÜS|MOD|OHZ|OPR|BÜR|PAF|PLÖ|CAS|GLA|REG|VIT|ECK|SIM|GOA|EMS|DIZ|GOH|RÜD|SWA|NES|KÖN|MET|LRO|BÜZ|DBR|ROS|TET|HRO|ROW|BRV|HIP|PAN|GRI|SHK|EIS|SRO|SOK|LBS|SCZ|MER|QFT|SLF|SLS|HOM|SLK|ASL|BBG|SBK|SFT|SHG|MGN|MEG|ZIG|SAD|NEN|OVI|SHA|BLB|SIG|SON|SPN|FOR|GUB|SPB|IGB|WND|STD|STA|SDL|OBG|HST|BOG|SHL|PIR|FTL|SEB|SÖM|SÜW|TIR|SAB|TUT|ANG|SDT|LÜN|LSZ|MHL|VEC|VER|VIE|OVL|ANK|OVP|SBG|UEM|UER|WLG|GMN|NVP|RDG|RÜG|DAU|FKB|WAF|WAK|SLZ|WEN|SOG|APD|WUG|GUN|ESW|WIZ|WES|DIN|BRA|BÜD|WHV|HWI|GHC|WTM|WOB|WUN|MAK|SEL|OCH|HOT|WDA)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/ . test ( str ) ;
} ,
'de-LI' : function deLI ( str ) {
return /^FL[- ]?\d{1,5}[UZ]?$/ . test ( str ) ;
} ,
'fi-FI' : function fiFI ( str ) {
return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/ . test ( str ) ;
} ,
'pt-PT' : function ptPT ( str ) {
return /^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/ . test ( str ) ;
} ,
'sq-AL' : function sqAL ( str ) {
return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/ . test ( str ) ;
} ,
'pt-BR' : function ptBR ( str ) {
return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/ . test ( str ) ;
}
} ;
function isLicensePlate ( str , locale ) {
( 0 , _assertString . default ) ( str ) ;
if ( locale in validators ) {
return validators [ locale ] ( str ) ;
} else if ( locale === 'any' ) {
for ( var key in validators ) {
/* eslint guard-for-in: 0 */
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 ;
} , { "./util/assertString" : 136 } ] , 97 : [ function ( require , module , exports ) {
"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-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-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 ;
} , { "./util/assertString" : 136 } ] , 98 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 99 : [ function ( require , module , exports ) {
"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]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/ ;
var macAddressNoSeparators = /^([0-9a-fA-F]){12}$/ ;
var macAddressWithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/ ;
function isMACAddress ( str , options ) {
( 0 , _assertString . default ) ( str ) ;
/ * *
* @ deprecated ` no_colons ` TODO : remove it in the next major
* /
if ( options && ( options . no _colons || options . no _separators ) ) {
return macAddressNoSeparators . test ( str ) ;
}
return macAddress . test ( str ) || macAddressWithDots . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 100 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 101 : [ function ( require , module , exports ) {
"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(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i ;
function isMagnetURI ( url ) {
( 0 , _assertString . default ) ( url ) ;
return magnetURI . test ( url . trim ( ) ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 102 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 103 : [ function ( require , module , exports ) {
"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-OM' : /^((\+|00)968)?(9[1-9])\d{6}$/ ,
'ar-PS' : /^(\+?970|0)5[6|9](\d{7})$/ ,
'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,9}$/ ,
'de-AT' : /^(\+43|0)\d{1,4}\d{3,12}$/ ,
'de-CH' : /^(\+41|0)([1-9])\d{1,9}$/ ,
'de-LU' : /^(\+352)?((6\d1)\d{6})$/ ,
'dv-MV' : /^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/ ,
'el-GR' : /^(\+?30|0)?(69\d{8})$/ ,
'en-AU' : /^(\+?61|0)4\d{8}$/ ,
'en-BM' : /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/ ,
'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|55|59)\d{7}$/ ,
'en-GY' : /^(\+592|0)6\d{6}$/ ,
'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-KI' : /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/ ,
'en-MT' : /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/ ,
'en-MU' : /^(\+?230|0)?\d{8}$/ ,
'en-NA' : /^(\+?264|0)(6|8)\d{7}$/ ,
'en-NG' : /^(\+?234|0)?[789]\d{9}$/ ,
'en-NZ' : /^(\+?64|0)[28]\d{7,9}$/ ,
'en-PK' : /^((00|\+)?92|0)3[0-6]\d{8}$/ ,
'en-PH' : /^(09|\+639)\d{9}$/ ,
'en-RW' : /^(\+?250|0)?[7]\d{8}$/ ,
'en-SG' : /^(\+65)?[3689]\d{7}$/ ,
'en-SL' : /^(\+?232|0)\d{8}$/ ,
'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}$/ ,
'en-BW' : /^(\+?267)?(7[1-8]{1})\d{6}$/ ,
'es-AR' : /^\+?549(11|[2368]\d)\d{8}$/ ,
'es-BO' : /^(\+?591)?(6|7)\d{7}$/ ,
'es-CO' : /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/ ,
'es-CL' : /^(\+?56|0)[2-9]\d{1}\d{7}$/ ,
'es-CR' : /^(\+506)?[2-8]\d{7}$/ ,
'es-CU' : /^(\+53|0053)?5\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-SV' : /^(\+?503)?[67]\d{7}$/ ,
'es-UY' : /^(\+598|0)9[1-9][\d]{6}$/ ,
'es-VE' : /^(\+?58)?(2|4)\d{9}$/ ,
'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-BF' : /^(\+226|0)[67]\d{7}$/ ,
'fr-CM' : /^(\+?237)6[0-9]{8}$/ ,
'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-PF' : /^(\+?689)?8[789]\d{6}$/ ,
'fr-RE' : /^(\+?262|0|00262)[67]\d{8}$/ ,
'he-IL' : /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/ ,
'hu-HU' : /^(\+?36|06)(20|30|31|50|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}$/ ,
'lv-LV' : /^(\+?371)2\d{7}$/ ,
'ms-MY' : /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/ ,
'mz-MZ' : /^(\+?258)?8[234567]\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}$/ ,
'pt-AO' : /^(\+244)\d{9}$/ ,
'ro-RO' : /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/ ,
'ru-RU' : /^(\+?7|8)?9\d{9}$/ ,
'si-LK' : /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/ ,
'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}$/ ,
'tg-TJ' : /^(\+?992)?[5][5]\d{7}$/ ,
'th-TH' : /^(\+66|66|0)\d{9}$/ ,
'tr-TR' : /^(\+?90|0)?5\d{9}$/ ,
'tk-TM' : /^(\+993|993|8)\d{8}$/ ,
'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([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/ ,
'zh-CN' : /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/ ,
'zh-TW' : /^(\+?886\-?|0)?9\d{8}$/ ,
'dz-BT' : /^(\+?975|0)?(17|16|77|02)\d{6}$/
} ;
/* 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' ] ;
phones [ 'fr-CH' ] = phones [ 'de-CH' ] ;
phones [ 'it-CH' ] = phones [ 'fr-CH' ] ;
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 ;
} , { "./util/assertString" : 136 } ] , 104 : [ function ( require , module , exports ) {
"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 ;
} , { "./isHexadecimal" : 76 , "./util/assertString" : 136 } ] , 105 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 106 : [ function ( require , module , exports ) {
"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 ;
} , { "./alpha" : 42 , "./util/assertString" : 136 } ] , 107 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 108 : [ function ( require , module , exports ) {
"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
BR : /^[A-Z]{2}\d{6}$/ ,
// BRAZIL
BY : /^[A-Z]{2}\d{7}$/ ,
// BELARUS
CA : /^[A-Z]{2}\d{6}$/ ,
// CANADA
CH : /^[A-Z]\d{7}$/ ,
// SWITZERLAND
CN : /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/ ,
// CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 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
ID : /^[A-C]\d{7}$/ ,
// INDONESIA
IR : /^[A-Z]\d{8}$/ ,
// IRAN
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
LY : /^[A-Z0-9]{8}$/ ,
// LIBYA
MT : /^\d{7}$/ ,
// MALTA
MZ : /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/ ,
// MOZAMBIQUE
MY : /^[AHK]\d{8}$/ ,
// MALAYSIA
NL : /^[A-Z]{2}[A-Z0-9]{6}\d$/ ,
// NETHERLANDS
PL : /^[A-Z]{2}\d{7}$/ ,
// POLAND
PT : /^[A-Z]\d{6}$/ ,
// PORTUGAL
RO : /^\d{8,9}$/ ,
// ROMANIA
RU : /^\d{9}$/ ,
// 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 ;
} , { "./util/assertString" : 136 } ] , 109 : [ function ( require , module , exports ) {
"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 ;
} , { "./isInt" : 91 } ] , 110 : [ function ( require , module , exports ) {
"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-Za-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 ,
KR : /^(\d{5}|\d{6})$/ ,
LI : /^(948[5-9]|949[0-7])$/ ,
LT : /^LT\-\d{5}$/ ,
LU : fourDigit ,
LV : /^LV\-\d{4}$/ ,
LK : fiveDigit ,
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 , "'" ) ) ;
}
} , { "./util/assertString" : 136 } ] , 111 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 112 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 113 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 , "./util/multilineRegex" : 139 } ] , 114 : [ function ( require , module , exports ) {
"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-\\][^\s]*[^-_\s]$/ ;
function isSlug ( str ) {
( 0 , _assertString . default ) ( str ) ;
return charsetRegex . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 115 : [ function ( require , module , exports ) {
"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 ) {
/* istanbul ignore else */
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 ;
} , { "./util/assertString" : 136 , "./util/merge" : 138 } ] , 116 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 117 : [ function ( require , module , exports ) {
"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 % 10 === 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 - BR validation function
* ( Cadastro de Pessoas Físicas ( CPF , persons )
* Cadastro Nacional de Pessoas Jurídicas ( CNPJ , entities )
* Both inputs will be validated
* /
function ptBrCheck ( tin ) {
if ( tin . length === 11 ) {
var _sum ;
var remainder ;
_sum = 0 ;
if ( // Reject known invalid CPFs
tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000' ) return false ;
for ( var i = 1 ; i <= 9 ; i ++ ) {
_sum += parseInt ( tin . substring ( i - 1 , i ) , 10 ) * ( 11 - i ) ;
}
remainder = _sum * 10 % 11 ;
if ( remainder === 10 ) remainder = 0 ;
if ( remainder !== parseInt ( tin . substring ( 9 , 10 ) , 10 ) ) return false ;
_sum = 0 ;
for ( var _i8 = 1 ; _i8 <= 10 ; _i8 ++ ) {
_sum += parseInt ( tin . substring ( _i8 - 1 , _i8 ) , 10 ) * ( 12 - _i8 ) ;
}
remainder = _sum * 10 % 11 ;
if ( remainder === 10 ) remainder = 0 ;
if ( remainder !== parseInt ( tin . substring ( 10 , 11 ) , 10 ) ) return false ;
return true ;
}
if ( // Reject know invalid CNPJs
tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999' ) {
return false ;
}
var length = tin . length - 2 ;
var identifiers = tin . substring ( 0 , length ) ;
var verificators = tin . substring ( length ) ;
var sum = 0 ;
var pos = length - 7 ;
for ( var _i9 = length ; _i9 >= 1 ; _i9 -- ) {
sum += identifiers . charAt ( length - _i9 ) * pos ;
pos -= 1 ;
if ( pos < 2 ) {
pos = 9 ;
}
}
var result = sum % 11 < 2 ? 0 : 11 - sum % 11 ;
if ( result !== parseInt ( verificators . charAt ( 0 ) , 10 ) ) {
return false ;
}
length += 1 ;
identifiers = tin . substring ( 0 , length ) ;
sum = 0 ;
pos = length - 7 ;
for ( var _i10 = length ; _i10 >= 1 ; _i10 -- ) {
sum += identifiers . charAt ( length - _i10 ) * pos ;
pos -= 1 ;
if ( pos < 2 ) {
pos = 9 ;
}
}
result = sum % 11 < 2 ? 0 : 11 - sum % 11 ;
if ( result !== parseInt ( verificators . charAt ( 1 ) , 10 ) ) {
return false ;
}
return true ;
}
/ *
* 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-BR' : /(?:^\d{11}$)|(?:^\d{14}$)/ ,
'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-BR' : ptBrCheck ,
'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 ;
} , { "./isDate" : 62 , "./util/algorithms" : 135 , "./util/assertString" : 136 } ] , 118 : [ function ( require , module , exports ) {
"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 } ; }
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 ; }
/ *
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 ,
allow _fragments : true ,
allow _query _components : true ,
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 ;
}
if ( ! options . allow _fragments && url . includes ( '#' ) ) {
return false ;
}
if ( ! options . allow _query _components && ( url . includes ( '?' ) || url . includes ( '&' ) ) ) {
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 ;
}
if ( split [ 0 ] === '' ) {
return false ;
}
auth = split . shift ( ) ;
if ( auth . indexOf ( ':' ) >= 0 && auth . split ( ':' ) . length > 2 ) {
return false ;
}
var _auth$split = auth . split ( ':' ) ,
_auth$split2 = _slicedToArray ( _auth$split , 2 ) ,
user = _auth$split2 [ 0 ] ,
password = _auth$split2 [ 1 ] ;
if ( user === '' && password === '' ) {
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 _str . length > 0 ) {
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 ( options . host _whitelist ) {
return checkHost ( host , options . host _whitelist ) ;
}
if ( ! ( 0 , _isIP . default ) ( host ) && ! ( 0 , _isFQDN . default ) ( host , options ) && ( ! ipv6 || ! ( 0 , _isIP . default ) ( ipv6 , 6 ) ) ) {
return false ;
}
host = host || ipv6 ;
if ( options . host _blacklist && checkHost ( host , options . host _blacklist ) ) {
return false ;
}
return true ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./isFQDN" : 69 , "./isIP" : 79 , "./util/assertString" : 136 , "./util/merge" : 138 } ] , 119 : [ function ( require , module , exports ) {
"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 = {
1 : /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i ,
2 : /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i ,
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 , version ) {
( 0 , _assertString . default ) ( str ) ;
var pattern = uuid [ ! [ undefined , null ] . includes ( version ) ? version : 'all' ] ;
return ! ! pattern && pattern . test ( str ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 120 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 121 : [ function ( require , module , exports ) {
"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}))$/ ,
IT : /^(IT)?[0-9]{11}$/ ,
NL : /^(NL)?[0-9]{9}B[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 , "'" ) ) ;
}
} , { "./util/assertString" : 136 } ] , 122 : [ function ( require , module , exports ) {
"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 ;
} , { "./isFullWidth" : 71 , "./isHalfWidth" : 73 , "./util/assertString" : 136 } ] , 123 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 124 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 125 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 126 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/merge" : 138 } ] , 127 : [ function ( require , module , exports ) {
"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 ) ;
if ( chars ) {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
var pattern = new RegExp ( "[" . concat ( chars . replace ( /[.*+?^${}()|[\]\\]/g , '\\$&' ) , "]+$" ) , 'g' ) ;
return str . replace ( pattern , '' ) ;
} // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript
var strIndex = str . length - 1 ;
while ( /\s/ . test ( str . charAt ( strIndex ) ) ) {
strIndex -= 1 ;
}
return str . slice ( 0 , strIndex + 1 ) ;
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 128 : [ function ( require , module , exports ) {
"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 ;
} , { "./blacklist" : 43 , "./util/assertString" : 136 } ] , 129 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 130 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 131 : [ function ( require , module , exports ) {
"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 ;
} , { "./isFloat" : 70 } ] , 132 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 133 : [ function ( require , module , exports ) {
"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 ;
} , { "./ltrim" : 124 , "./rtrim" : 127 } ] , 134 : [ function ( require , module , exports ) {
"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 , '&' ) ; // & replacement has to be the last one to prevent
// bugs with intermediate strings containing escape sequences
// See: https://github.com/validatorjs/validator.js/issues/1827
}
module . exports = exports . default ;
module . exports . default = exports . default ;
} , { "./util/assertString" : 136 } ] , 135 : [ function ( require , module , exports ) {
"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 ;
}
} , { } ] , 136 : [ function ( require , module , exports ) {
"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 ;
} , { } ] , 137 : [ function ( require , module , exports ) {
"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 ;
} , { } ] , 138 : [ function ( require , module , exports ) {
"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 ;
} , { } ] , 139 : [ function ( require , module , exports ) {
"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 ;
} , { } ] , 140 : [ function ( require , module , exports ) {
"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 ;
} , { } ] , 141 : [ function ( require , module , exports ) {
"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 ;
} , { "./util/assertString" : 136 } ] , 142 : [ function ( require , module , exports ) {
module . exports = {
"name" : "doipjs" ,
"version" : "0.15.6" ,
"description" : "Decentralized OpenPGP Identity Proofs library in Node.js" ,
"main" : "./src/index.js" ,
"dependencies" : {
"@openpgp/hkp-client" : "^0.0.2" ,
"@openpgp/wkd-client" : "^0.0.3" ,
"@xmpp/client" : "^0.13.1" ,
"@xmpp/debug" : "^0.13.0" ,
"axios" : "^0.25.0" ,
"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" : "^5.0" ,
"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" ,
"clean-jsdoc-theme" : "^3.2.4" ,
"husky" : "^7.0.0" ,
"jsdoc" : "^3.6.6" ,
"license-check-and-add" : "^4.0.3" ,
"lint-staged" : "^11.0.0" ,
"minify" : "^6.0.1" ,
"mocha" : "^9.2.0" ,
"nodemon" : "^2.0.15" ,
"standard" : "^16.0.3" ,
"webpack" : "^5.70.0" ,
"webpack-cli" : "^4.9.2"
} ,
"scripts" : {
"release" : "yarn run test && yarn run release:bundle && yarn run release:minify" ,
"release:bundle" : "./node_modules/.bin/browserify ./src/index.js --standalone doip -x openpgp -x @openpgp/hkp-client -x @openpgp/wkd-client -x jsdom -x @xmpp/client -x @xmpp/debug -x irc-upd -o ./dist/doip.js" ,
"release:minify" : "./node_modules/.bin/minify ./dist/doip.js > ./dist/doip.min.js" ,
"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 -P package.json" ,
"standard:check" : "./node_modules/.bin/standard ./src" ,
"standard:fix" : "./node_modules/.bin/standard --fix ./src" ,
"mocha" : "./node_modules/.bin/mocha" ,
"test" : "yarn run standard:check && yarn run license:check && yarn run mocha" ,
"proxy" : "NODE_ENV=production node ./src/proxy/" ,
"proxy:dev" : "NODE_ENV=development ./node_modules/.bin/nodemon ./src/proxy/" ,
"prepare" : "husky install"
} ,
"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"
}
}
} , { } ] , 143 : [ function ( require , module , exports ) {
/ *
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
* @ property { object } verification - The result of the verification process
* /
class Claim {
/ * *
* Initialize a Claim object
* @ constructor
* @ param { string | object } [ uri ] - The URI of the identity claim or a JSONified Claim instance
* @ 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' ) ;
* const claimAlt = doip . Claim ( JSON . stringify ( claim ) ) ;
* /
constructor ( uri , fingerprint ) {
// Import JSON
if ( typeof uri === 'object' && 'claimVersion' in uri ) {
const data = uri
switch ( data . claimVersion ) {
case 1 :
this . _uri = data . uri
this . _fingerprint = data . fingerprint
this . _status = data . status
this . _matches = data . matches
this . _verification = data . verification
break
default :
throw new Error ( 'Invalid claim version' )
}
return
}
// Verify validity of URI
if ( uri && ! validUrl . isUri ( uri ) ) {
throw new Error ( 'Invalid URI' )
}
// Verify validity of fingerprint
if ( fingerprint ) {
try {
validator . isAlphanumeric ( fingerprint )
} catch ( err ) {
throw new Error ( 'Invalid fingerprint' )
}
}
this . _uri = uri || null
this . _fingerprint = fingerprint || null
this . _status = E . ClaimStatus . INIT
this . _matches = null
this . _verification = null
}
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' )
}
return this . _matches
}
get verification ( ) {
if ( this . _status !== E . ClaimStatus . VERIFIED ) {
throw new Error ( 'This claim has not yet been verified' )
}
return this . _verification
}
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" )
}
set matches ( anything ) {
throw new Error ( "Cannot change a claim's matches" )
}
set verification ( anything ) {
throw new Error ( "Cannot change a claim's verification result" )
}
/ * *
* 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' )
}
this . _matches = [ ]
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
this . _matches . push ( candidate )
} else {
// Set a single candidate and stop
this . _matches = [ candidate ]
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 || { } )
// If there are no matches
if ( this . _matches . length === 0 ) {
this . _verification = {
result : false ,
completed : true ,
proof : { } ,
errors : [ 'No matches for claim' ]
}
}
// For each match
for ( let index = 0 ; index < this . _matches . length ; index ++ ) {
const claimData = this . _matches [ index ]
let verificationResult = null
let proofData = null
let 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
verificationResult = verificationResult || {
result : false ,
completed : true ,
proof : { } ,
errors : [ proofFetchError ]
}
if ( this . isAmbiguous ( ) ) {
// Assume a wrong match and continue
continue
}
}
if ( verificationResult . completed ) {
// Store the result, keep a single match and stop verifying
this . _verification = verificationResult
this . _matches = [ claimData ]
index = this . _matches . length
}
}
// Fail safe verification result
this . _verification = this . _verification
? this . _verification
: {
result : false ,
completed : true ,
proof : { } ,
errors : [ 'Unknown error' ]
}
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' )
}
if ( this . _matches . length === 0 ) {
throw new Error ( 'The claim has no matches' )
}
return this . _matches . length > 1 || this . _matches [ 0 ] . match . isAmbiguous
}
/ * *
* 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 ,
matches : this . _matches ,
verification : this . _verification
}
}
}
module . exports = Claim
} , { "./claimDefinitions" : 151 , "./defaults" : 163 , "./enums" : 164 , "./proofs" : 175 , "./verifications" : 178 , "merge-options" : 35 , "valid-url" : 40 , "validator" : 41 } ] , 144 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 145 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 146 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 147 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 148 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 149 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 150 : [ function ( require , module , exports ) {
/ *
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
} , { "../enums" : 164 } ] , 151 : [ function ( require , module , exports ) {
/ *
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' ,
'lichess' ,
'hackernews' ,
'lobsters' ,
'devto' ,
'gitea' ,
'gitlab' ,
'github' ,
'mastodon' ,
'pleroma' ,
'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' ) ,
lichess : require ( './lichess' ) ,
hackernews : require ( './hackernews' ) ,
lobsters : require ( './lobsters' ) ,
devto : require ( './devto' ) ,
gitea : require ( './gitea' ) ,
gitlab : require ( './gitlab' ) ,
github : require ( './github' ) ,
mastodon : require ( './mastodon' ) ,
pleroma : require ( './pleroma' ) ,
discourse : require ( './discourse' ) ,
owncast : require ( './owncast' )
}
exports . list = list
exports . data = data
} , { "./devto" : 144 , "./discourse" : 145 , "./dns" : 146 , "./gitea" : 147 , "./github" : 148 , "./gitlab" : 149 , "./hackernews" : 150 , "./irc" : 152 , "./liberapay" : 153 , "./lichess" : 154 , "./lobsters" : 155 , "./mastodon" : 156 , "./matrix" : 157 , "./owncast" : 158 , "./pleroma" : 159 , "./reddit" : 160 , "./twitter" : 161 , "./xmpp" : 162 } ] , 152 : [ function ( require , module , exports ) {
/ *
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 = /^irc:\/\/(.*)\/([a-zA-Z0-9\-[\]\\`_^{|}]*)/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'communication' ,
name : 'irc'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : ` irc:// ${ match [ 1 ] } / ${ match [ 2 ] } ` ,
uri : uri ,
qr : null
} ,
proof : {
uri : null ,
request : {
fetcher : E . Fetcher . IRC ,
access : E . ProofAccess . SERVER ,
format : E . ProofFormat . JSON ,
data : {
domain : match [ 1 ] ,
nick : match [ 2 ]
}
}
} ,
claim : {
format : E . ClaimFormat . URI ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ]
}
}
}
const tests = [
{
uri : 'irc://chat.ircserver.org/Alice1' ,
shouldMatch : true
} ,
{
uri : 'irc://chat.ircserver.org/alice?param=123' ,
shouldMatch : true
} ,
{
uri : 'irc://chat.ircserver.org/alice_bob' ,
shouldMatch : true
} ,
{
uri : 'https://chat.ircserver.org/alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 153 : [ function ( require , module , exports ) {
/ *
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:\/\/liberapay\.com\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'liberapay'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : match [ 1 ] ,
uri : uri ,
qr : null
} ,
proof : {
uri : uri ,
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
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'statements' , 'content' ]
}
}
}
const tests = [
{
uri : 'https://liberapay.com/alice' ,
shouldMatch : true
} ,
{
uri : 'https://liberapay.com/alice/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 154 : [ function ( require , module , exports ) {
/ *
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:\/\/lichess\.org\/@\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'lichess'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : match [ 1 ] ,
uri : uri ,
qr : null
} ,
proof : {
uri : ` https://lichess.org/api/user/ ${ match [ 1 ] } ` ,
request : {
fetcher : E . Fetcher . HTTP ,
access : E . ProofAccess . GENERIC ,
format : E . ProofFormat . JSON ,
data : {
url : ` https://lichess.org/api/user/ ${ match [ 1 ] } ` ,
format : E . ProofFormat . JSON
}
}
} ,
claim : {
format : E . ClaimFormat . FINGERPRINT ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'profile' , 'links' ]
}
}
}
const tests = [
{
uri : 'https://lichess.org/@/Alice' ,
shouldMatch : true
} ,
{
uri : 'https://lichess.org/@/Alice/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/@/Alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 155 : [ function ( require , module , exports ) {
/ *
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:\/\/lobste\.rs\/u\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'lobsters'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : match [ 1 ] ,
uri : uri ,
qr : null
} ,
proof : {
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
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'about' ]
}
}
}
const tests = [
{
uri : 'https://lobste.rs/u/Alice' ,
shouldMatch : true
} ,
{
uri : 'https://lobste.rs/u/Alice/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/u/Alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 156 : [ function ( require , module , exports ) {
/ *
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:\/\/(.*)\/@(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'mastodon'
} ,
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 : [ 'attachment' , 'value' ]
}
}
}
const tests = [
{
uri : 'https://domain.org/@alice' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/@alice/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 157 : [ function ( require , module , exports ) {
/ *
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 queryString = require ( 'query-string' )
const reURI = /^matrix:u\/(?:@)?([^@:]*:[^?]*)(\?.*)?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
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' ] } `
return {
serviceprovider : {
type : 'communication' ,
name : 'matrix'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : ` @ ${ match [ 1 ] } ` ,
uri : profileUrl ,
qr : null
} ,
proof : {
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' ]
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'content' , 'body' ]
}
}
}
const tests = [
{
uri :
'matrix:u/alice:matrix.domain.org?org.keyoxide.r=!123:domain.org&org.keyoxide.e=$123' ,
shouldMatch : true
} ,
{
uri : 'matrix:u/alice:matrix.domain.org' ,
shouldMatch : true
} ,
{
uri : 'xmpp:alice@domain.org' ,
shouldMatch : false
} ,
{
uri : 'https://domain.org/@alice' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 , "query-string" : 37 } ] , 158 : [ function ( require , module , exports ) {
/ *
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:\/\/(.*)/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'owncast'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : true
} ,
profile : {
display : match [ 1 ] ,
uri : uri ,
qr : null
} ,
proof : {
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
}
}
} ,
claim : {
format : E . ClaimFormat . FINGERPRINT ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'socialHandles' , 'url' ]
}
}
}
const tests = [
{
uri : 'https://live.domain.org' ,
shouldMatch : true
} ,
{
uri : 'https://live.domain.org/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/live' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/live/' ,
shouldMatch : true
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 159 : [ function ( require , module , exports ) {
/ *
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 : 'pleroma'
} ,
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
} , { "../enums" : 164 } ] , 160 : [ function ( require , module , exports ) {
/ *
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:\/\/(?:www\.)?reddit\.com\/user\/(.*)\/comments\/(.*)\/(.*)\/?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'reddit'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : match [ 1 ] ,
uri : ` https://www.reddit.com/user/ ${ match [ 1 ] } ` ,
qr : null
} ,
proof : {
uri : uri ,
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
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ 'data' , 'children' , 'data' , 'selftext' ]
}
}
}
const tests = [
{
uri : 'https://www.reddit.com/user/Alice/comments/123456/post' ,
shouldMatch : true
} ,
{
uri : 'https://www.reddit.com/user/Alice/comments/123456/post/' ,
shouldMatch : true
} ,
{
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' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 161 : [ function ( require , module , exports ) {
/ *
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:\/\/twitter\.com\/(.*)\/status\/([0-9]*)(?:\?.*)?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'web' ,
name : 'twitter'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : ` @ ${ match [ 1 ] } ` ,
uri : ` https://twitter.com/ ${ match [ 1 ] } ` ,
qr : null
} ,
proof : {
uri : uri ,
request : {
fetcher : E . Fetcher . TWITTER ,
access : E . ProofAccess . GRANTED ,
format : E . ProofFormat . TEXT ,
data : {
tweetId : match [ 2 ]
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ]
}
}
}
const tests = [
{
uri : 'https://twitter.com/alice/status/1234567890123456789' ,
shouldMatch : true
} ,
{
uri : 'https://twitter.com/alice/status/1234567890123456789/' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org/alice/status/1234567890123456789' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 162 : [ function ( require , module , exports ) {
/ *
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 = /^xmpp:([a-zA-Z0-9.\-_]*)@([a-zA-Z0-9.\-_]*)(?:\?(.*))?/
const processURI = ( uri ) => {
const match = uri . match ( reURI )
return {
serviceprovider : {
type : 'communication' ,
name : 'xmpp'
} ,
match : {
regularExpression : reURI ,
isAmbiguous : false
} ,
profile : {
display : ` ${ match [ 1 ] } @ ${ match [ 2 ] } ` ,
uri : uri ,
qr : uri
} ,
proof : {
uri : null ,
request : {
fetcher : E . Fetcher . XMPP ,
access : E . ProofAccess . SERVER ,
format : E . ProofFormat . TEXT ,
data : {
id : ` ${ match [ 1 ] } @ ${ match [ 2 ] } ` ,
field : 'note'
}
}
} ,
claim : {
format : E . ClaimFormat . MESSAGE ,
relation : E . ClaimRelation . CONTAINS ,
path : [ ]
}
}
}
const tests = [
{
uri : 'xmpp:alice@domain.org' ,
shouldMatch : true
} ,
{
uri : 'xmpp:alice@domain.org?omemo-sid-123456789=A1B2C3D4E5F6G7H8I9' ,
shouldMatch : true
} ,
{
uri : 'https://domain.org' ,
shouldMatch : false
}
]
exports . reURI = reURI
exports . processURI = processURI
exports . tests = tests
} , { "../enums" : 164 } ] , 163 : [ function ( require , module , exports ) {
/ *
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' )
/ * *
* Contains default values
* @ module defaults
* /
/ * *
* 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
} ,
matrix : {
instance : null ,
accessToken : null
} ,
xmpp : {
service : null ,
username : null ,
password : null
} ,
twitter : {
bearerToken : null
}
}
}
exports . opts = opts
} , { "./enums" : 164 } ] , 164 : [ function ( require , module , exports ) {
/ *
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
} , { } ] , 165 : [ function ( require , module , exports ) {
/ *
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 jsEnv = require ( 'browser-or-node' )
/ * *
* @ module fetcher / dns
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
if ( jsEnv . isNode ) {
const dns = require ( 'dns' )
/ * *
* 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
)
} )
const fetchPromise = new Promise ( ( resolve , reject ) => {
dns . resolveTxt ( data . domain , ( err , records ) => {
if ( err ) {
reject ( err )
return
}
resolve ( {
domain : data . domain ,
records : {
txt : records
}
} )
} )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} else {
module . exports . fn = null
}
} , { "browser-or-node" : 30 , "dns" : 31 } ] , 166 : [ function ( require , module , exports ) {
/ *
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 axios = require ( 'axios' )
/ * *
* @ 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 ( ( resolve , reject ) => {
const urlUser = ` https:// ${ data . domain } /api/v4/users?username= ${ data . username } `
// const resUser = await req(urlUser, null, { Accept: 'application/json' })
const res = axios . get ( urlUser ,
{
headers : { Accept : 'application/json' }
} )
. then ( resUser => {
return resUser . data
} )
. then ( jsonUser => {
return jsonUser . find ( ( user ) => user . username === data . username )
} )
. then ( user => {
if ( ! user ) {
throw new Error ( ` No user with username ${ data . username } ` )
}
return user
} )
. then ( user => {
const urlProject = ` https:// ${ data . domain } /api/v4/users/ ${ user . id } /projects `
return axios . get ( urlProject ,
{
headers : { Accept : 'application/json' }
} )
} )
. then ( resProject => {
return resProject . data
} )
. then ( jsonProject => {
return jsonProject . find ( ( proj ) => proj . path === 'gitlab_proof' )
} )
. then ( project => {
if ( ! project ) {
throw new Error ( 'No project found' )
}
return project
} )
. catch ( error => {
reject ( error )
} )
resolve ( res )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} , { "axios" : 1 } ] , 167 : [ function ( require , module , exports ) {
/ *
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 axios = require ( 'axios' )
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 ( new Error ( 'No valid URI provided' ) )
return
}
switch ( data . format ) {
case E . ProofFormat . JSON :
axios . get ( data . url , {
headers : {
Accept : 'application/json' ,
'User-Agent' : ` doipjs/ ${ require ( '../../package.json' ) . version } `
} ,
validateStatus : function ( status ) {
return status >= 200 && status < 400
}
} )
. then ( res => {
resolve ( res . data )
} )
. catch ( e => {
reject ( e )
} )
break
case E . ProofFormat . TEXT :
axios . get ( data . url , {
validateStatus : function ( status ) {
return status >= 200 && status < 400
} ,
responseType : 'text'
} )
. then ( res => {
resolve ( res . data )
} )
. catch ( e => {
reject ( e )
} )
break
default :
reject ( new Error ( 'No specified data format' ) )
break
}
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} , { "../../package.json" : 142 , "../enums" : 164 , "axios" : 1 } ] , 168 : [ function ( require , module , exports ) {
/ *
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 .
* /
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' )
} , { "./dns" : 165 , "./gitlab" : 166 , "./http" : 167 , "./irc" : 169 , "./matrix" : 170 , "./twitter" : 171 , "./xmpp" : 172 } ] , 169 : [ function ( require , module , exports ) {
/ *
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 jsEnv = require ( 'browser-or-node' )
/ * *
* @ module fetcher / irc
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 20000
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 : [ ] ,
showErrors : false ,
debug : false
} )
const reKey = /[a-zA-Z0-9\-_]+\s+:\s(openpgp4fpr:.*)/
const reEnd = /End\sof\s.*\staxonomy./
const keys = [ ]
client . addListener ( 'registered' , ( message ) => {
client . send ( ` PRIVMSG NickServ TAXONOMY ${ data . nick } ` )
} )
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
}
} , { "browser-or-node" : 30 , "irc-upd" : "irc-upd" , "validator" : 41 } ] , 170 : [ function ( require , module , exports ) {
/ *
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 axios = require ( 'axios' )
const validator = require ( 'validator' )
/ * *
* @ module fetcher / matrix
* /
/ * *
* 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 . 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
)
} )
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 } `
axios . get ( url ,
{
headers : { Accept : 'application/json' }
} )
. then ( res => {
return res . data
} )
. then ( ( res ) => {
resolve ( res )
} )
. catch ( ( error ) => {
reject ( error )
} )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} , { "axios" : 1 , "validator" : 41 } ] , 171 : [ function ( require , module , exports ) {
/ *
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 axios = require ( 'axios' )
const validator = require ( 'validator' )
/ * *
* @ module fetcher / twitter
* /
/ * *
* 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 } ) `
)
}
axios . get (
` https://api.twitter.com/1.1/statuses/show.json?id= ${ data . tweetId } &tweet_mode=extended ` ,
{
headers : {
Accept : 'application/json' ,
Authorization : ` Bearer ${ opts . claims . twitter . bearerToken } `
}
}
)
. then ( data => {
return data . data
} )
. then ( ( data ) => {
resolve ( data . full _text )
} )
. catch ( ( error ) => {
reject ( error )
} )
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} , { "axios" : 1 , "validator" : 41 } ] , 172 : [ function ( require , module , exports ) {
( function ( process ) { ( function ( ) {
/ *
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 jsEnv = require ( 'browser-or-node' )
/ * *
* @ module fetcher / xmpp
* /
/ * *
* The request ' s timeout value in milliseconds
* @ constant { number } timeout
* /
module . exports . timeout = 5000
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
let 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 )
} )
} )
}
/ * *
* 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 ) => {
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
)
const vcardRow = response . getChild ( 'vCard' , 'vcard-temp' ) . toString ( )
const dom = new jsdom . JSDOM ( vcardRow )
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 {
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 )
}
} )
return Promise . race ( [ fetchPromise , timeoutPromise ] ) . then ( ( result ) => {
clearTimeout ( timeoutHandle )
return result
} )
}
} else {
module . exports . fn = null
}
} ) . call ( this ) } ) . call ( this , require ( '_process' ) )
} , { "@xmpp/client" : "@xmpp/client" , "@xmpp/debug" : "@xmpp/debug" , "_process" : 36 , "browser-or-node" : 30 , "jsdom" : "jsdom" , "validator" : 41 } ] , 173 : [ function ( require , module , exports ) {
/ *
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 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' )
exports . Claim = Claim
exports . claimDefinitions = claimDefinitions
exports . proofs = proofs
exports . keys = keys
exports . signatures = signatures
exports . enums = enums
exports . defaults = defaults
exports . utils = utils
} , { "./claim" : 143 , "./claimDefinitions" : 151 , "./defaults" : 163 , "./enums" : 164 , "./keys" : 174 , "./proofs" : 175 , "./signatures" : 176 , "./utils" : 177 } ] , 174 : [ function ( require , module , exports ) {
( function ( global ) { ( function ( ) {
/ *
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 axios = require ( 'axios' )
const validUrl = require ( 'valid-url' )
const openpgp = ( typeof window !== "undefined" ? window [ 'openpgp' ] : typeof global !== "undefined" ? global [ 'openpgp' ] : null )
const HKP = require ( '@openpgp/hkp-client' )
const WKD = require ( '@openpgp/wkd-client' )
const Claim = require ( './claim' )
/ * *
* Functions related to the fetching and handling of keys
* @ module keys
* /
/ * *
* 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 . PublicKey }
* @ example
* const key1 = doip . keys . fetchHKP ( 'alice@domain.tld' ) ;
* const key2 = doip . keys . fetchHKP ( '123abc123abc' ) ;
* /
const fetchHKP = async ( identifier , keyserverDomain ) => {
const keyserverBaseUrl = keyserverDomain
? ` https:// ${ keyserverDomain } `
: 'https://keys.openpgp.org'
const hkp = new HKP ( keyserverBaseUrl )
const lookupOpts = {
query : identifier
}
const publicKey = await hkp
. lookup ( lookupOpts )
. catch ( ( error ) => {
throw new Error ( ` Key does not exist or could not be fetched ( ${ error } ) ` )
} )
if ( ! publicKey ) {
throw new Error ( 'Key does not exist or could not be fetched' )
}
return await openpgp . readKey ( {
armoredKey : publicKey
} )
. catch ( ( error ) => {
throw new Error ( ` Key could not be read ( ${ error } ) ` )
} )
}
/ * *
* Fetch a public key using Web Key Directory
* @ function
* @ param { string } identifier - Identifier of format ' username @ domain . tld `
* @ returns { openpgp . PublicKey }
* @ example
* const key = doip . keys . fetchWKD ( 'alice@domain.tld' ) ;
* /
const fetchWKD = async ( identifier ) => {
const wkd = new WKD ( )
const lookupOpts = {
email : identifier
}
const publicKey = await wkd
. lookup ( lookupOpts )
. catch ( ( error ) => {
throw new Error ( ` Key does not exist or could not be fetched ( ${ error } ) ` )
} )
if ( ! publicKey ) {
throw new Error ( 'Key does not exist or could not be fetched' )
}
return await openpgp . readKey ( {
binaryKey : publicKey
} )
. catch ( ( error ) => {
throw new Error ( ` Key could not be read ( ${ error } ) ` )
} )
}
/ * *
* Fetch a public key from Keybase
* @ function
* @ param { string } username - Keybase username
* @ param { string } fingerprint - Fingerprint of key
* @ returns { openpgp . PublicKey }
* @ example
* const key = doip . keys . fetchKeybase ( 'alice' , '123abc123abc' ) ;
* /
const fetchKeybase = async ( username , fingerprint ) => {
const keyLink = ` https://keybase.io/ ${ username } /pgp_keys.asc?fingerprint= ${ fingerprint } `
let rawKeyContent
try {
rawKeyContent = await axios . get (
keyLink ,
{
responseType : 'text'
}
)
. then ( ( response ) => {
if ( response . status === 200 ) {
return response
}
} )
. then ( ( response ) => response . data )
} catch ( e ) {
throw new Error ( ` Error fetching Keybase key: ${ e . message } ` )
}
return await openpgp . readKey ( {
armoredKey : rawKeyContent
} )
. catch ( ( error ) => {
throw new Error ( ` Key does not exist or could not be fetched ( ${ error } ) ` )
} )
}
/ * *
* Get a public key from plaintext data
* @ function
* @ param { string } rawKeyContent - Plaintext ASCII - formatted public key data
* @ returns { openpgp . PublicKey }
* @ example
* const plainkey = ` -----BEGIN PGP PUBLIC KEY BLOCK-----
*
* mQINBF0mIsIBEADacleiyiV + z6FIunvLWrO6ZETxGNVpqM + WbBQKdW1BVrJBBolg
* [ ... ]
* = 6 lib
* -- -- - END PGP PUBLIC KEY BLOCK -- -- - `
* const key = doip . keys . fetchPlaintext ( plainkey ) ;
* /
const fetchPlaintext = async ( rawKeyContent ) => {
const publicKey = await openpgp . readKey ( {
armoredKey : rawKeyContent
} )
. catch ( ( error ) => {
throw new Error ( ` Key could not be read ( ${ error } ) ` )
} )
return publicKey
}
/ * *
* Fetch a public key using an URI
* @ function
* @ param { string } uri - URI that defines the location of the key
* @ returns { openpgp . PublicKey }
* @ 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' ) ;
* /
const fetchURI = async ( uri ) => {
if ( ! validUrl . isUri ( uri ) ) {
throw new Error ( 'Invalid URI' )
}
const re = /([a-zA-Z0-9]*):([a-zA-Z0-9@._=+-]*)(?::([a-zA-Z0-9@._=+-]*))?/
const match = uri . match ( re )
if ( ! match [ 1 ] ) {
throw new Error ( 'Invalid URI' )
}
switch ( match [ 1 ] ) {
case 'hkp' :
return await fetchHKP (
match [ 3 ] ? match [ 3 ] : match [ 2 ] ,
match [ 3 ] ? match [ 2 ] : null
)
case 'wkd' :
return await fetchWKD ( match [ 2 ] )
case 'kb' :
return await fetchKeybase ( match [ 2 ] , match . length >= 4 ? match [ 3 ] : null )
default :
throw new Error ( 'Invalid URI protocol' )
}
}
/ * *
* Fetch a public key
*
* This function will attempt to detect the identifier and fetch the key
* accordingly . If the identifier is an email address , it will first try and
* fetch the key using WKD and then HKP . Otherwise , it will try HKP only .
*
* This function will also try and parse the input as a plaintext key
* @ function
* @ param { string } identifier - URI that defines the location of the key
* @ returns { openpgp . PublicKey }
* @ example
* const key1 = doip . keys . fetch ( 'alice@domain.tld' ) ;
* const key2 = doip . keys . fetch ( '123abc123abc' ) ;
* /
const fetch = async ( identifier ) => {
const re = /([a-zA-Z0-9@._=+-]*)(?::([a-zA-Z0-9@._=+-]*))?/
const match = identifier . match ( re )
let pubKey = null
// Attempt plaintext
if ( ! pubKey ) {
try {
pubKey = await fetchPlaintext ( identifier )
} catch ( e ) { }
}
// Attempt WKD
if ( ! pubKey && identifier . includes ( '@' ) ) {
try {
pubKey = await fetchWKD ( match [ 1 ] )
} catch ( e ) { }
}
// Attempt HKP
if ( ! pubKey ) {
pubKey = await fetchHKP (
match [ 2 ] ? match [ 2 ] : match [ 1 ] ,
match [ 2 ] ? match [ 1 ] : null
)
}
if ( ! pubKey ) {
throw new Error ( 'Key does not exist or could not be fetched' )
}
return pubKey
}
/ * *
* Process a public key to get user data and claims
* @ function
* @ param { openpgp . PublicKey } 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 ) ;
* } ) ;
* /
const process = async ( publicKey ) => {
if ( ! publicKey || ! ( publicKey instanceof openpgp . PublicKey ) ) {
throw new Error ( 'Invalid public key' )
}
const fingerprint = publicKey . getFingerprint ( )
const primaryUser = await publicKey . getPrimaryUser ( )
const users = publicKey . users
const usersOutput = [ ]
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 ,
isRevoked : false
} ,
claims : [ ]
}
if ( 'selfCertifications' in user && user . selfCertifications . length > 0 ) {
const selfCertification = user . selfCertifications [ 0 ]
const notations = selfCertification . rawNotations
usersOutput [ i ] . claims = notations
. filter (
( { name , humanReadable } ) =>
humanReadable && ( name === 'proof@ariadne.id' || name === 'proof@metacode.biz' )
)
. map (
( { value } ) =>
new Claim ( new TextDecoder ( ) . decode ( value ) , fingerprint )
)
usersOutput [ i ] . userData . isRevoked = selfCertification . revoked
}
} )
return {
fingerprint : fingerprint ,
users : usersOutput ,
primaryUserIndex : primaryUser . index ,
key : {
data : publicKey ,
fetchMethod : null ,
uri : null
}
}
}
exports . fetchHKP = fetchHKP
exports . fetchWKD = fetchWKD
exports . fetchKeybase = fetchKeybase
exports . fetchPlaintext = fetchPlaintext
exports . fetchURI = fetchURI
exports . fetch = fetch
exports . process = process
} ) . call ( this ) } ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { "./claim" : 143 , "@openpgp/hkp-client" : "@openpgp/hkp-client" , "@openpgp/wkd-client" : "@openpgp/wkd-client" , "axios" : 1 , "valid-url" : 40 } ] , 175 : [ function ( require , module , exports ) {
/ *
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 jsEnv = require ( 'browser-or-node' )
const fetcher = require ( './fetcher' )
const utils = require ( './utils' )
const E = require ( './enums' )
/ * *
* @ module proofs
* /
/ * *
* 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
default :
break
}
if ( jsEnv . isNode ) {
return handleNodeRequests ( data , opts )
}
return handleBrowserRequests ( data , opts )
}
const handleBrowserRequests = ( data , opts ) => {
switch ( opts . proxy . policy ) {
case E . ProxyPolicy . ALWAYS :
return createProxyRequestPromise ( data , opts )
case E . ProxyPolicy . NEVER :
switch ( data . proof . request . access ) {
case E . ProofAccess . GENERIC :
case E . ProofAccess . GRANTED :
return createDefaultRequestPromise ( data , opts )
case E . ProofAccess . NOCORS :
case E . ProofAccess . SERVER :
throw new Error (
'Impossible to fetch proof (bad combination of service access and proxy policy)'
)
default :
throw new Error ( 'Invalid proof access value' )
}
case E . ProxyPolicy . ADAPTIVE :
switch ( data . proof . request . access ) {
case E . ProofAccess . GENERIC :
return createFallbackRequestPromise ( data , opts )
case E . ProofAccess . NOCORS :
return createProxyRequestPromise ( data , opts )
case E . ProofAccess . GRANTED :
return createFallbackRequestPromise ( data , opts )
case E . ProofAccess . SERVER :
return createProxyRequestPromise ( data , opts )
default :
throw new Error ( 'Invalid proof access value' )
}
default :
throw new Error ( 'Invalid proxy policy' )
}
}
const handleNodeRequests = ( data , opts ) => {
switch ( opts . proxy . policy ) {
case E . ProxyPolicy . ALWAYS :
return createProxyRequestPromise ( data , opts )
case E . ProxyPolicy . NEVER :
return createDefaultRequestPromise ( data , opts )
case E . ProxyPolicy . ADAPTIVE :
return createFallbackRequestPromise ( data , opts )
default :
throw new Error ( 'Invalid proxy policy' )
}
}
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 ( err2 )
} )
} )
} )
}
exports . fetch = fetch
} , { "./enums" : 164 , "./fetcher" : 168 , "./utils" : 177 , "browser-or-node" : 30 } ] , 176 : [ function ( require , module , exports ) {
2021-01-07 08:26:31 -07:00
( function ( global ) { ( function ( ) {
2022-03-27 16:37:33 -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 openpgp = ( typeof window !== "undefined" ? window [ 'openpgp' ] : typeof global !== "undefined" ? global [ 'openpgp' ] : null )
const Claim = require ( './claim' )
const keys = require ( './keys' )
/ * *
* @ module signatures
* /
/ * *
* Extract data from a signature and fetch the associated key
* @ async
* @ param { string } signature - The plaintext signature to process
* @ returns { Promise < object > }
* /
const process = async ( signature ) => {
let sigData
const result = {
fingerprint : null ,
users : [
{
userData : { } ,
claims : [ ]
}
] ,
primaryUserIndex : null ,
key : {
data : null ,
fetchMethod : null ,
uri : null
}
}
// Read the signature
try {
sigData = await openpgp . readCleartextMessage ( {
cleartextMessage : signature
} )
} catch ( e ) {
throw new Error ( ` Signature could not be read ( ${ e . message } ) ` )
}
const issuerKeyID = sigData . signature . packets [ 0 ] . issuerKeyID . toHex ( )
const signersUserID = sigData . signature . packets [ 0 ] . signersUserID
const preferredKeyServer =
sigData . signature . packets [ 0 ] . preferredKeyServer ||
'https://keys.openpgp.org/'
const text = sigData . getText ( )
const sigKeys = [ ]
text . split ( '\n' ) . forEach ( ( line , i ) => {
const match = line . match ( /^([a-zA-Z0-9]*)=(.*)$/i )
if ( ! match ) {
return
}
switch ( match [ 1 ] . toLowerCase ( ) ) {
case 'key' :
sigKeys . push ( match [ 2 ] )
break
case 'proof' :
result . users [ 0 ] . claims . push ( new Claim ( match [ 2 ] ) )
break
default :
break
}
} )
// Try overruling key
if ( sigKeys . length > 0 ) {
try {
result . key . uri = sigKeys [ 0 ]
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = result . key . uri . split ( ':' ) [ 0 ]
} catch ( e ) { }
}
// Try WKD
if ( ! result . key . data && signersUserID ) {
try {
result . key . uri = ` wkd: ${ signersUserID } `
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = 'wkd'
} catch ( e ) { }
}
// Try HKP
if ( ! result . key . data ) {
try {
const match = preferredKeyServer . match ( /^(.*:\/\/)?([^/]*)(?:\/)?$/i )
result . key . uri = ` hkp: ${ match [ 2 ] } : ${ issuerKeyID || signersUserID } `
result . key . data = await keys . fetchURI ( result . key . uri )
result . key . fetchMethod = 'hkp'
} catch ( e ) {
throw new Error ( 'Public key not found' )
}
}
// Verify the signature
const verificationResult = await openpgp . verify ( {
message : sigData ,
verificationKeys : result . key . data
} )
const { verified } = verificationResult . signatures [ 0 ]
try {
await verified
} catch ( e ) {
throw new Error ( ` Signature could not be verified ( ${ e . message } ) ` )
}
result . fingerprint = result . key . data . keyPacket . getFingerprint ( )
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
}
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
}
result . primaryUserIndex = result . users [ 0 ] . userData . isPrimary ? 0 : null
return result
}
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 : { } )
2022-03-27 16:37:33 -06:00
} , { "./claim" : 143 , "./keys" : 174 } ] , 177 : [ function ( require , module , exports ) {
/ *
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 E = require ( './enums' )
/ * *
* @ module utils
* /
/ * *
* 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' )
}
const queryStrings = [ ]
Object . keys ( data ) . forEach ( ( key ) => {
queryStrings . push ( ` ${ key } = ${ encodeURIComponent ( data [ key ] ) } ` )
} )
return ` https:// ${ opts . proxy . hostname } /api/2/get/ ${ type } ? ${ queryStrings . join (
'&'
) } `
}
/ * *
* 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 }
* /
const generateClaim = ( fingerprint , format ) => {
switch ( format ) {
case E . ClaimFormat . URI :
return ` openpgp4fpr: ${ fingerprint } `
case E . ClaimFormat . MESSAGE :
return ` [Verifying my OpenPGP key: openpgp4fpr: ${ fingerprint } ] `
case E . ClaimFormat . FINGERPRINT :
return fingerprint
default :
throw new Error ( 'No valid claim format' )
}
}
exports . generateProxyURL = generateProxyURL
exports . generateClaim = generateClaim
} , { "./enums" : 164 , "validator" : 41 } ] , 178 : [ function ( require , module , exports ) {
/ *
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 ) {
case E . ClaimRelation . EQUALS :
return (
proofData . replace ( /\r?\n|\r|\\/g , '' ) . toLowerCase ( ) ===
checkClaim . toLowerCase ( )
)
case E . ClaimRelation . ONEOF :
re = new RegExp ( checkClaim , 'gi' )
return re . test ( proofData . join ( '|' ) )
case E . ClaimRelation . CONTAINS :
default :
re = new RegExp ( checkClaim , 'gi' )
return re . test ( proofData . replace ( /\r?\n|\r|\\/g , '' ) )
}
}
if ( ! ( checkPath [ 0 ] in proofData ) ) {
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 ) => {
const 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
} , { "./enums" : 164 , "./utils" : 177 } ] } , { } , [ 173 ] ) ( 173 )
2020-10-24 06:38:10 -06:00
} ) ;