UNPKG

better-mock

Version:

Forked from Mockjs. Generate random data & Intercept ajax request. Support miniprogram.

97 lines (83 loc) 2.75 kB
/* type-coverage:ignore-next-line */ export const type = function (value: any): string { return isDef(value) ? Object.prototype.toString.call(value).match(/\[object (\w+)\]/)![1].toLowerCase() : String(value) } export const isDef = function (value: unknown): boolean { return value !== undefined && value !== null } export const isString = function (value: unknown): value is string { return type(value) === 'string' } export const isNumber = function (value: unknown): value is number { return type(value) === 'number' } export const isObject = function (value: unknown): value is object { return type(value) === 'object' } export const isArray = function<T = any> (value: unknown): value is Array<T> { return type(value) === 'array' } export const isRegExp = function (value: unknown): value is RegExp { return type(value) === 'regexp' } export const isFunction = function (value: unknown): value is Function { return type(value) === 'function' } export const keys = function (obj: object): string[] { const keys: string[] = [] for (const key in obj) { if (obj.hasOwnProperty(key)) { keys.push(key) } } return keys } export const values = function (obj: object) { const values: any[] = [] for (const key in obj) { if (obj.hasOwnProperty(key)) { values.push(obj[key]) } } return values } /** * Mock.heredoc(fn) * 以直观、安全的方式书写(多行)HTML 模板。 * http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript */ export const heredoc = function (fn: Function) { // 1. 移除起始的 function(){ /*! // 2. 移除末尾的 */ } // 3. 移除起始和末尾的空格 return fn .toString() .replace(/^[^\/]+\/\*!?/, '') .replace(/\*\/[^\/]+$/, '') .replace(/^[\s\xA0]+/, '') .replace(/[\s\xA0]+$/, '') // .trim() } export const noop = function () {} export const assert = function (condition: any, error: string) { if (!condition) { throw new Error('[better-mock] ' + error) } } /** * 创建一个自定义事件,兼容 IE * @param type 一个字符串,表示事件名称。 * @param bubbles 一个布尔值,表示该事件能否冒泡。 * @param cancelable 一个布尔值,表示该事件是否可以取消。 * @param detail 一个任意类型,传递给事件的自定义数据。 */ export const createCustomEvent = function<T = any> (type: string, bubbles = false, cancelable = false, detail?: T): CustomEvent<T> { try { return new CustomEvent<T>(type, { bubbles, cancelable, detail }) } catch (e) { const event: CustomEvent<T> = document.createEvent('CustomEvent') event.initCustomEvent(type, bubbles, cancelable, detail!) return event } }