export const isUrl = (url: string): boolean => (url.startsWith('http://') || url.startsWith('https://')) export const isUrlEncode = (url: string): boolean => { url = url || '' try { return url !== decodeURIComponent(url) } catch (e) { // if some error caught, try to let it go return true } } export const handleUrlEncode = (url: string): string => { if (!isUrlEncode(url)) { url = encodeURIComponent(url) } return url } /** * streamline the full plugin name to a simple one * for example: * 1. picgo-plugin-xxx -> xxx * 2. @xxx/picgo-plugin-yyy -> yyy * @param name pluginFullName */ export const handleStreamlinePluginName = (name: string) => { if (/^@[^/]+\/picgo-plugin-/.test(name)) { return name.replace(/^@[^/]+\/picgo-plugin-/, '') } else { return name.replace(/picgo-plugin-/, '') } } /** * for just simple clone an object */ export const simpleClone = (obj: any) => { return JSON.parse(JSON.stringify(obj)) } export const enforceNumber = (num: number | string) => { return isNaN(Number(num)) ? 0 : Number(num) }