UNPKG

@devmn/cloud-cli

Version:

CLI tool for Intelligo Cloud.

84 lines (72 loc) 2.71 kB
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