107 changed files with 287 additions and 275 deletions
@ -0,0 +1 @@ |
|||
v18 |
|||
@ -0,0 +1 @@ |
|||
export * from './types'; |
|||
@ -0,0 +1,75 @@ |
|||
import { isArray, isFunction, isObject, isString } from '@vue/shared'; |
|||
import { isBoolean, isNumber } from '@vueuse/core'; |
|||
|
|||
const toString = Object.prototype.toString; |
|||
|
|||
function is(val: unknown, type: string) { |
|||
return toString.call(val) === `[object ${type}]`; |
|||
} |
|||
|
|||
function isUndefined(val: unknown): val is undefined { |
|||
return val === undefined; |
|||
} |
|||
|
|||
function isNull(val: unknown): val is null { |
|||
return val === null; |
|||
} |
|||
|
|||
function isNullOrUndefined(val: unknown): val is undefined | null { |
|||
return isUndefined(val) || isNull(val); |
|||
} |
|||
|
|||
function isEmpty<T = unknown>(val: T): val is T { |
|||
if (!val && val !== 0) { |
|||
return true; |
|||
} |
|||
|
|||
if (isArray(val) || isString(val)) { |
|||
return val.length === 0; |
|||
} |
|||
|
|||
if (val instanceof Map || val instanceof Set) { |
|||
return val.size === 0; |
|||
} |
|||
|
|||
if (isObject(val)) { |
|||
return Object.keys(val).length === 0; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
/** |
|||
* 判断所给字符串是否为url类型,这里只判断是否 http/http,其他格式不支持 |
|||
* @param pathname |
|||
* @returns |
|||
*/ |
|||
function isHttpUrl(pathname: string): boolean { |
|||
const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/; |
|||
return reg.test(pathname); |
|||
} |
|||
|
|||
function isMap(val: unknown): val is Map<any, any> { |
|||
return is(val, 'Map'); |
|||
} |
|||
|
|||
function isWindow(val: any): val is Window { |
|||
return typeof window !== 'undefined' && is(val, 'Window'); |
|||
} |
|||
|
|||
export { |
|||
is, |
|||
isArray, |
|||
isBoolean, |
|||
isEmpty, |
|||
isFunction, |
|||
isHttpUrl, |
|||
isMap, |
|||
isNull, |
|||
isNullOrUndefined, |
|||
isNumber, |
|||
isObject, |
|||
isString, |
|||
isUndefined, |
|||
isWindow, |
|||
}; |
|||
@ -1,98 +0,0 @@ |
|||
const toString = Object.prototype.toString; |
|||
|
|||
export function is(val: unknown, type: string) { |
|||
return toString.call(val) === `[object ${type}]`; |
|||
} |
|||
|
|||
export function isDef<T = unknown>(val?: T): val is T { |
|||
return typeof val !== 'undefined'; |
|||
} |
|||
|
|||
export function isUnDef<T = unknown>(val?: T): val is T { |
|||
return !isDef(val); |
|||
} |
|||
|
|||
export function isObject(val: any): val is Record<any, any> { |
|||
return val !== null && is(val, 'Object'); |
|||
} |
|||
|
|||
export function isEmpty<T = unknown>(val: T): val is T { |
|||
if (isArray(val) || isString(val)) { |
|||
return val.length === 0; |
|||
} |
|||
|
|||
if (val instanceof Map || val instanceof Set) { |
|||
return val.size === 0; |
|||
} |
|||
|
|||
if (isObject(val)) { |
|||
return Object.keys(val).length === 0; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
export function isDate(val: unknown): val is Date { |
|||
return is(val, 'Date'); |
|||
} |
|||
|
|||
export function isNull(val: unknown): val is null { |
|||
return val === null; |
|||
} |
|||
|
|||
export function isNullAndUnDef(val: unknown): val is null | undefined { |
|||
return isUnDef(val) && isNull(val); |
|||
} |
|||
|
|||
export function isNullOrUnDef(val: unknown): val is null | undefined { |
|||
return isUnDef(val) || isNull(val); |
|||
} |
|||
|
|||
export function isNumber(val: unknown): val is number { |
|||
return is(val, 'Number'); |
|||
} |
|||
|
|||
export function isPromise<T = any>(val: unknown): val is Promise<T> { |
|||
return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch); |
|||
} |
|||
|
|||
export function isString(val: unknown): val is string { |
|||
return is(val, 'String'); |
|||
} |
|||
|
|||
export function isFunction(val: unknown): val is Function { |
|||
return typeof val === 'function'; |
|||
} |
|||
|
|||
export function isBoolean(val: unknown): val is boolean { |
|||
return is(val, 'Boolean'); |
|||
} |
|||
|
|||
export function isRegExp(val: unknown): val is RegExp { |
|||
return is(val, 'RegExp'); |
|||
} |
|||
|
|||
export function isArray(val: any): val is Array<any> { |
|||
return val && Array.isArray(val); |
|||
} |
|||
|
|||
export function isWindow(val: any): val is Window { |
|||
return typeof window !== 'undefined' && is(val, 'Window'); |
|||
} |
|||
|
|||
export function isElement(val: unknown): val is Element { |
|||
return isObject(val) && !!val.tagName; |
|||
} |
|||
|
|||
export function isMap(val: unknown): val is Map<any, any> { |
|||
return is(val, 'Map'); |
|||
} |
|||
|
|||
export const isServer = typeof window === 'undefined'; |
|||
|
|||
export const isClient = !isServer; |
|||
|
|||
export function isUrl(path: string): boolean { |
|||
const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/; |
|||
return reg.test(path); |
|||
} |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue