@darkwolf/validator
Version:
64 lines (61 loc) • 2.52 kB
JavaScript
import Protocol from './Protocol.mjs'
export {
Protocol
}
export default class Constants {
static BASE58_ALPHABET = 'AveDarkwo1f23456789BCEFGHJKLMNPQRSTUVWXYZbcdghijmnpqstuxyz'
static TIMESTAMP_PATTERN = '^[1-9]\\d{11,12}$'
static UNIX_TIMESTAMP_PATTERN = '^[1-9]\\d{8,9}$'
static MILLIS_UNIX_TIMESTAMP_PATTERN = `${
this.UNIX_TIMESTAMP_PATTERN.slice(0, -1)
}(\\.\\d{1,3})?$`
static UUID_PATTERN = '^[A-Fa-f\\d]{8}-([A-Fa-f\\d]{4}-){3}[A-Fa-f\\d]{12}$'
static PROTOCOL_PATTERN = `^(${
Object.values(Protocol).map(protocol => `(${protocol})`).join('|')
})$`
static DNS_PATTERN = '^(([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+([a-z]{2,})$'
static IPV4_PATTERN = '^((\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$'
static HOSTNAME_PATTERN = `^((${
this.DNS_PATTERN.slice(1, -1)
})|(${
this.IPV4_PATTERN.slice(1, -1)
}))$`
static PORT_PATTERN = '^([1-9]\\d{0,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d{1}|6553[0-5])$'
static HOST_PATTERN = `^${
this.HOSTNAME_PATTERN.slice(1, -1)
}(:${
this.PORT_PATTERN.slice(1, -1)
})?$`
static ORIGIN_PATTERN = `^${
this.PROTOCOL_PATTERN.slice(1, -1)
}://${
this.HOST_PATTERN.slice(1, -1)
}$`
static URL_PATHNAME_PATTERN = '^(/[\\w-.%+@&:~]*)*$'
static URL_QUERY_PATTERN = '^[\\w-.%+@&=:;,~]*$'
static URL_SEARCH_PATTERN = `^\\?(${this.URL_QUERY_PATTERN.slice(1, -1)})$`
static URL_FRAGMENT_PATTERN = '^[\\w-]*$'
static URL_HASH_PATTERN = `^#(${this.URL_FRAGMENT_PATTERN.slice(1, -1)})$`
static URL_PATH_PATTERN = `^(${
this.URL_PATHNAME_PATTERN.slice(1, -1)
})?(${
this.URL_SEARCH_PATTERN.slice(1, -1)
})?(${
this.URL_HASH_PATTERN.slice(1, -1)
})?$`
static URL_PATTERN = `^(${
this.ORIGIN_PATTERN.slice(1, -1)
})(${
this.URL_PATH_PATTERN.slice(1, -1)
})?$`
static EMAIL_PATTERN = `^([\\w-.]+)@(${this.DNS_PATTERN.slice(1, -1)})$`
static PHONE_NUMBER_PATTERN = '^\\+[1-9]\\d{6,14}$'
static ASCII_PATTERN = '^[ -~]+$'
static BASE64_PATTERN = '^([A-Za-z\\d+/]{4}|([A-Za-z\\d+/]{3}=|[A-Za-z\\d+/]{2}==)|([A-Za-z\\d+/]{4})+([A-Za-z\\d+/]{3}=|[A-Za-z\\d+/]{2}==)?)$'
static BASE64URL_PATTERN = '^[\\w-]+$'
static BASE58_PATTERN = `^[${this.BASE58_ALPHABET}]+$`
static JWT_PATTERN = '^([\\w-]+\\.){2}[\\w-]*$'
static HASH_PATTERN = `^[${this.BASE58_ALPHABET}]{64}$`
static UID_PATTERN = `^[${this.BASE58_ALPHABET}]{20}$`
static Protocol = Protocol
}