@devmn/cloud-cli
Version:
CLI tool for Intelligo Cloud.
84 lines (72 loc) • 2.71 kB
text/typescript
import * as url from 'url'
import Constants from './Constants'
// const ADMIN_DOMAIN = Constants.ADMIN_DOMAIN
const util = {
extendCommonKeys<T extends { [key: string]: string }>(
keys: T
): typeof Constants.COMMON_KEYS & T {
return Object.assign({}, Constants.COMMON_KEYS, keys)
},
copyObject<T>(obj: T): T {
return JSON.parse(JSON.stringify(obj)) as T
},
generateUuidV4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(
c
) {
const r = (Math.random() * 16) | 0
const v = c === 'x' ? r : (r & 0x3) | 0x8
return v.toString(16)
})
},
getAnsiColorRegex() {
const pattern = [
'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\\u0007)',
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
].join('|')
return new RegExp(pattern, 'g')
},
cleanDomain(urlInput: string): string | undefined {
if (!urlInput || !urlInput.length) {
return undefined
}
try {
let u = url.parse(urlInput)
if (!u.protocol) {
u = url.parse(`//${urlInput}`, false, true)
}
return u.hostname
} catch (e) {
return undefined
}
},
cleanAdminDomainUrl(urlInput: string, https?: boolean): string | undefined {
if (!urlInput || !urlInput.length) {
return undefined
}
const http = urlInput.toLowerCase().startsWith('http://') // If no protocol, defaults to https
const cleanedUrl = util.cleanDomain(urlInput)
if (!cleanedUrl) {
return undefined
}
// if (!cleanedUrl.startsWith(`${ADMIN_DOMAIN}.`)) {
// cleanedUrl = `${ADMIN_DOMAIN}.${cleanedUrl}`
// }
return (
(https || (https === undefined && !http) ? 'https://' : 'http://') +
cleanedUrl
)
},
isIpAddress(ipaddress: string): boolean {
// tslint:disable-next-line: max-line-length
return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(
ipaddress
)
},
isValidEmail(email: string): boolean {
// tslint:disable-next-line: max-line-length
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return re.test(String(email).toLowerCase())
}
}
export default util