{"version":3,"sources":["../src/arr.ts","../src/cst.ts","../src/fn.ts","../src/is.ts","../src/log.ts","../src/num.ts","../src/obj.ts","../src/private.ts"],"sourcesContent":["import type { Fn, NumStrSymbol } from '@helux/types';\n\nexport function nodupPush(list: NumStrSymbol[], toPush: NumStrSymbol) {\n  if (!list.includes(toPush)) list.push(toPush);\n}\n\nexport function delListItem(list: NumStrSymbol[], toDel: NumStrSymbol) {\n  const idx = list.indexOf(toDel);\n  if (idx >= 0) {\n    list.splice(idx, 1);\n  }\n}\n\nexport function dedupList(list: Array<any>) {\n  return Array.from(new Set(list));\n}\n\nexport function includeOne(loopList: any[], judgeList: any[]) {\n  let ret = false;\n  for (const item of loopList) {\n    if (judgeList.includes(item)) {\n      // 包含有外层list的一项，就结束循环\n      ret = true;\n      break;\n    }\n  }\n  return ret;\n}\n\n/**\n * 获得list所有元素里第一个是 fullStr 子串的项\n * @example\n * matchListItem(['12','33'], '333'); // out: '33'\n * // 可加 itemSuffix 来做特殊判定，内部遍历时会统一个 item 加后缀\n * matchListItem(['a|b|1','a|b|2'], 'a|b|22'); // out: 'a|b|2'\n * matchListItem(['a|b|1','a|b|2'], 'a|b|22', '|'); // out: ''\n */\nexport function matchListItem(list: string[], fullStr: string, itemSuffix?: string) {\n  let matchKey = '';\n  const suffix = itemSuffix || '';\n  const len = list.length;\n  for (let i = 0; i < len; i++) {\n    const item = list[i];\n    const toMatch = `${item}${suffix}`;\n    if (fullStr.startsWith(toMatch)) {\n      matchKey = item;\n      break;\n    }\n  }\n  return matchKey;\n}\n\nexport function enureReturnArr(fn?: Fn, arg1?: any, arg2?: any) {\n  if (!fn) return [];\n  const result = fn(arg1, arg2);\n  return Array.isArray(result) ? result : [result];\n}\n","import type { Dict } from '@helux/types';\n\nfunction getGlobalThis() {\n  if (typeof globalThis !== 'undefined') return globalThis;\n  if (typeof global !== 'undefined') return global;\n  if (typeof window !== 'undefined') return window;\n  // @ts-ignore\n  if (typeof this !== 'undefined') return this;\n  throw new Error('no globalThis');\n}\n\n// 直接写 window 导致 vitest 报错，改为 getGlobalThis 写法\n// export const GLOBAL_REF: Dict & Window & typeof globalThis = window || global;\n\nexport const GLOBAL_REF: Dict & Window & typeof globalThis = getGlobalThis();\n\nexport const DEV_FLAG = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';\n","// @ts-nocheck\n\nexport function noop(...args: any[]): undefined {}\n\nexport const noopVoid: (...args: any[]) => void = noop;\n\nexport function noopArgs<T extends any[] = any[]>(...args: T): T {\n  return args;\n}\n\nexport function noopArr(...args: any[]): any[] {\n  return [];\n}\n\nexport function noopAny(...args: any[]): any {}\n","import type { Dict, Fn } from '@helux/types';\nimport { DEV_FLAG, GLOBAL_REF } from './cst';\nimport { noop } from './fn';\n\nconst toString = Object.prototype.toString;\nconst MAP_DESC = '[object Map]';\nconst OBJ_DESC = '[object Object]';\n\nexport function isServer() {\n  if (GLOBAL_REF.process && GLOBAL_REF.global && !GLOBAL_REF.document) {\n    // running at server\n    return true;\n  }\n  return false;\n}\n\nexport function isMap(mayMap: any) {\n  return toString.call(mayMap) === MAP_DESC;\n}\n\nexport function isMax(input: number) {\n  return input === Number.MAX_SAFE_INTEGER;\n}\n\nexport function isDebug() {\n  if (\n    DEV_FLAG\n    || GLOBAL_REF.name === 'previewFrame' // for stackblitz\n    || GLOBAL_REF.BrowserFS // for codesandbox\n  ) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * 是否是普通json对象，仅传入字典 {} 时才返回 true\n */\nexport function isPlainObj(mayPlainObj: any) {\n  return toString.call(mayPlainObj) === OBJ_DESC;\n}\n\nexport function isObj(mayObj: any): mayObj is Dict {\n  return mayObj && typeof mayObj === 'object' && !Array.isArray(mayObj);\n}\n\nexport function isJsObj(mayObj: any): mayObj is Dict {\n  return mayObj && typeof mayObj === 'object';\n}\n\nexport function isFn(mayFn: any): mayFn is Fn {\n  return typeof mayFn === 'function';\n}\n\nexport function isAsyncFn(mayFn: any): mayFn is Fn {\n  // 仅开发模式的包做检查\n  if (!DEV_FLAG) return true;\n  const str = Object.prototype.toString.call(mayFn);\n  return str === '[object AsyncFunction]';\n}\n\nexport function isSymbol(maySymbol: any): maySymbol is symbol {\n  return typeof maySymbol === 'symbol';\n}\n\nexport function isPromise(mayObj: any) {\n  if (!mayObj) {\n    return false;\n  }\n  const objType = typeof mayObj;\n  return (objType === 'object' || objType === 'function') && isFn(mayObj.then);\n}\n\nexport function isProxyRevoked(proxy: Dict) {\n  try {\n    noop(proxy['test']);\n    return false;\n  } catch (err: any) {\n    return true;\n  }\n}\n\nexport function isProxyAvailable() {\n  return typeof Proxy === 'function';\n}\n","import { GLOBAL_REF } from './cst';\nimport { isDebug } from './is';\n\ninterface IAlertOpts {\n  /** default: false，是否抛出错误 */\n  throwErr?: boolean;\n  /** default: ''，定制的提示信息前缀 */\n  prefixLabel?: string;\n  /** default: ''，定制的提示信息后缀 */\n  suffixLabel?: string;\n  /** default: true，是否打印错误，*/\n  logErr?: boolean;\n  /** default: undefined，是否弹层显示错误，未指定时走内置规则：开发环境弹，生成环境不弹 */\n  alertErr?: boolean;\n}\n\nexport function tryAlert(err: any, options?: IAlertOpts) {\n  const { throwErr = false, prefixLabel = '', suffixLabel = ', see details in console.', logErr = true, alertErr } = options || {};\n  let errMsg = err;\n  let isErr = false;\n  if (err instanceof Error) {\n    isErr = true;\n    errMsg = err.message;\n  }\n\n  // 还原为老写法（ 无 ?? 和 ?. ），防止某些版本 babel 编译报错\n  const canAlert = typeof alertErr === 'boolean' ? alertErr : isDebug();\n  if (canAlert && GLOBAL_REF.alert) {\n    err && GLOBAL_REF.alert(`${prefixLabel}${errMsg}${suffixLabel}`);\n  }\n  logErr && console.error(err);\n  if (throwErr) {\n    throw isErr ? err : new Error(String(err));\n  }\n}\n\nexport function warn(msg: string, level = 0) {\n  if (level === 0) {\n    console.error(msg);\n    isDebug() && console.trace(msg);\n  } else if (level === 1) {\n    console.error(msg);\n  } else {\n    console.warn(msg);\n  }\n}\n","import { isMax } from './is';\n\nexport function getSafeNext(input: number) {\n  const num = isMax(input) ? 1 : input + 1;\n  return num;\n}\n","import type { Dict, NumStrSymbol } from '@helux/types';\nimport { isMap } from './is';\n\n// @ts-ignore\nconst canUseReflect = !!Reflect;\nconst hasProp = Object.prototype.hasOwnProperty;\n\nexport function has(obj: any, key: any) {\n  if (canUseReflect) {\n    return Reflect.has(obj, key);\n  }\n  return hasProp.call(obj, key);\n}\n\n/** safe obj get */\nexport function safeObjGet<T = any>(obj: Dict, key: NumStrSymbol, defaultValue: T): T {\n  let item = obj[key];\n  if (!item) {\n    item = obj[key] = defaultValue;\n  }\n  return item;\n}\n\n/** safe map get */\nexport function safeMapGet<T = any>(map: Map<any, any>, key: any, defaultValue: T): T {\n  let item = map.get(key);\n  if (!item) {\n    map.set(key, defaultValue);\n    item = defaultValue;\n  }\n  return item;\n}\n\n/**\n * 获得object所有key里第一个是 fullStr 子串的key\n * @example\n * matchListItem({'12':1, '33':1}, '333'); // out: '33'\n * // 可加 itemSuffix 来做特殊判定，内部遍历时会统一给 key 加后缀\n * matchListItem({'a|b|1':1,'a|b|2':1}, 'a|b|22'); // out: 'a|b|2'\n * matchListItem({'a|b|1':1,'a|b|2':1}, 'a|b|22', '|'); // out: ''\n */\nexport function matchDictKey(dict: Dict, fullStr: string, itemSuffix?: string) {\n  let matchKey = '';\n  const suffix = itemSuffix || '';\n  for (const key in dict) {\n    // test if calling matchListItem(fullStr, Object.keys(dict)) is faster\n    const toMatch = `${key}${suffix}`;\n    if (fullStr.startsWith(toMatch)) {\n      matchKey = key;\n      break;\n    }\n  }\n  return matchKey;\n}\n\n/**\n * string 获取不到，尝试转为 number 获取\n */\nexport function getMapVal(map: Map<any, any>, key: string) {\n  const strKeyVal = map.get(key);\n  if (strKeyVal !== undefined) {\n    return strKeyVal;\n  }\n  const numKeyVal = map.get(Number(key) || key);\n  if (numKeyVal !== undefined) {\n    return numKeyVal;\n  }\n  return undefined;\n}\n\nexport function getVal(obj: any, keyPath: string[]): any {\n  let val;\n  let parent = obj;\n  keyPath.forEach((key) => {\n    val = isMap(parent) ? getMapVal(parent, key) : parent[key];\n    parent = val;\n  });\n  return val;\n}\n\nexport function setVal(obj: any, keyPath: string[], val: any) {\n  let parent = obj;\n  const lastIdx = keyPath.length - 1;\n  keyPath.forEach((key, idx) => {\n    const isMapObj = isMap(parent);\n    if (idx === lastIdx) {\n      isMapObj ? parent.set(key, val) : (parent[key] = val);\n      return;\n    }\n    const subVal = isMapObj ? getMapVal(parent, key) : parent[key];\n    parent = subVal; // for next forEach scb\n  });\n}\n","import { isProxyAvailable } from './is';\nimport { warn } from './log';\n\nexport function setNoop() {\n  warn('changing shared state is invalid');\n  return true;\n}\n\nexport function asType<T extends any = any>(val: any) {\n  // return val as unknown as T;\n  const typedVal: any = val;\n  return typedVal as unknown as T;\n}\n\nexport function prefixValKey(valKey: string, sharedKey: number) {\n  return `${sharedKey}/${valKey}`;\n}\n\nexport function canUseDeep(isDeep: boolean) {\n  return isDeep && isProxyAvailable();\n}\n"],"mappings":"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","names":[]}