@wyfex/iutils 0.35.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  万有前端 X 体系下基于 Vite8 + TypeScript6 构建的 iUtils 工具库
4
4
 
5
5
  ## 文档地址
6
- > https://wyfe.top/idocs/iutils
6
+ > https://wyfex.top/idocs/iutils
7
7
 
8
8
  ## npm下载(支持pnpm/yarn/cnpm/npm)
9
9
  ```shell
@@ -12,7 +12,7 @@ $ pnpm i @wyfex/iutils
12
12
 
13
13
  ## 版本号规则
14
14
  + 仅升级工具库依赖(vite版本满足如下要求),修改第1位。eg:1.x.x;
15
- > @wyfex/iutils0.x.x对应于vite8.0.x,当vite升级到8.1.x时@wyfex/iutils升级为1.x.x,以此类推。
15
+ > @wyfex/iutils0.x对应于vite8.x,当vite升级到9.x时@wyfex/iutils升级为1.x,以此类推。
16
16
  + 仅新增工具函数,修改第2位。eg:x.6.x;
17
17
  + 仅修复、优化现有工具函数,修改第3位。eg:x.x.1;
18
18
  + 以上3项都有变更或部分有变更则按照对应变更修改对应版本号位置;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},t=e=>Array.isArray(e),n=e=>e==null,r=e=>!n(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,i=e=>typeof e==`boolean`,a=e=>i(e)||e===`true`||e===`false`,o=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},s=e=>n(e)?!1:u(e)?e.trim().length>0:l(e)?!0:t(e)?e.length>0:f(e)?Object.keys(e).length>0:!1,c=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,l=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),u=e=>Object.prototype.toString.call(e)===`[object String]`,d=e=>l(e)||u(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),f=e=>Object.prototype.toString.call(e)===`[object Object]`,p=e=>!t(e)||e.length===0?!1:e.every(e=>f(e)),m=e=>u(e)||l(e)||i(e)||n(e),h=(e,n)=>{if(!p(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=n;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>m(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(p(t)){let n=s(e,t);if(n)return n}}};return t(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},g=(e,n)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(n)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return t(i)?i.map(a):a(i)},_=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},v=(e,n,r)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=t(r)?r:[r];return s.splice(o+1,0,...c),s},y=(e,n,r=1)=>{if(!t(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},b=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},x=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},S=(e,n=!0)=>{if(!e||!f(e)||t(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>`${n?r(e):e}:${t}`).join(`;`)},C=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:w(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:w(r,t,n)};function w(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var T=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],E=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of T)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},D=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},O=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},k=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),A=e=>f(e)?Object.fromEntries(Object.entries(e).filter(([e,t])=>t!=null)):{},j=e=>{if(!f(e))return{};let n={...e};for(let e in n){let r=n[e];if(e.includes(`,`)&&t(r)){let t=e.split(`,`),i=r;t.forEach((e,t)=>{n[e]=i[t]}),delete n[e]}}return n},M=(e,n)=>{if(!f(e))return{};let r=t(n)?n:[n],i={...e};return r.forEach(e=>{delete i[e]}),i},N=(e,n=`_`)=>{if(e==null)return e;if(t(e))return e.map(e=>N(e,n)).filter(e=>typeof e==`string`?!e.startsWith(n):typeof e==`number`?!String(e).startsWith(n):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];t.startsWith(n)||(r[t]=N(i,n))}return r},P=(e,t=[])=>{if(!f(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},F=(e,n=[])=>{if(!f(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];n.includes(e)&&t(i)&&(r[e]=i.join(`,`))}),r},I=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e;exports.buildTree=e,exports.cleanObjectEmptyValues=A,exports.debounce=O,exports.desensitizePhone=D,exports.expandCommaKeyObject=j,exports.findBy=h,exports.findIndexBy=g,exports.flatTree=_,exports.formatThousand=k,exports.formatTime=C,exports.insertAfter=v,exports.isArray=t,exports.isArrayLike=r,exports.isBoolean=i,exports.isBooleanLike=a,exports.isDefaultFn=o,exports.isEffectiveData=s,exports.isFlatPrimArray=c,exports.isNil=n,exports.isNumber=l,exports.isNumberLike=d,exports.isObject=f,exports.isObjectArray=p,exports.isPrimitive=m,exports.isString=u,exports.objectToStyleString=S,exports.omitObjectProps=M,exports.omitStartWithKeys=N,exports.parseStringFieldsToArray=P,exports.parseValue=I,exports.randomRgb=b,exports.randomRgba=x,exports.removeAfter=y,exports.stringifyArrayFields=F,exports.timeGreetings=E;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},t=e=>Array.isArray(e),n=e=>e==null,r=e=>!n(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,i=e=>typeof e==`boolean`,a=e=>i(e)||e===`true`||e===`false`,o=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},s=e=>n(e)?!1:b(e)?e.trim().length>0:y(e)?!0:t(e)?e.length>0:l(e)?Object.keys(e).length>0:!1,c=e=>{if(!l(e))return{};let n=e=>{if(e!=null)return t(e)?e.map(e=>n(e)).filter(e=>e!==void 0):l(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t)]).filter(([e,t])=>t!==void 0)):e};return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t)]).filter(([e,t])=>t!==void 0))},l=e=>Object.prototype.toString.call(e)===`[object Object]`,u=e=>{if(!l(e))return{};let n={...e},r=e=>{let n=Object.keys(e);for(let r of n){let n=e[r];if(r.includes(`,`)&&t(n)){let t=r.split(`,`),i=n;t.forEach((t,n)=>{e[t]=i[n]}),delete e[r]}}Object.values(e).forEach(e=>{l(e)&&r(e)})};return r(n),n},d=(e,t)=>l(e)?Object.prototype.hasOwnProperty.call(e,t):!1,f=(e,n)=>{if(!l(e))return{};let r=e,i=t(n)?n:[n],a={...r};return i.forEach(e=>{delete a[e]}),a},p=(e,n=`_`)=>{if(e==null)return e;if(t(e))return e.map(e=>p(e,n)).filter(e=>typeof e==`string`?!e.startsWith(n):typeof e==`number`?!String(e).startsWith(n):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];t.startsWith(n)||(r[t]=p(i,n))}return r},m=(e,t=[])=>{if(!l(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},h=(e,n=[])=>{if(!l(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];n.includes(e)&&t(i)&&(r[e]=i.join(`,`))}),r},g=e=>{if(!l(e))return!1;for(let t in e)if(d(e,t))return!1;return!0},_=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,v=e=>typeof e==`function`,y=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),b=e=>Object.prototype.toString.call(e)===`[object String]`,x=e=>y(e)||b(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),S=e=>!t(e)||e.length===0?!1:e.every(e=>l(e)),C=e=>b(e)||y(e)||i(e)||n(e),w=(e,n)=>{if(!S(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=n;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>C(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(S(t)){let n=s(e,t);if(n)return n}}};return t(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},T=(e,n)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(n)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return t(i)?i.map(a):a(i)},E=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},D=(e,n,r)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=t(r)?r:[r];return s.splice(o+1,0,...c),s},O=(e,n,r=1)=>{if(!t(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},k=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},A=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},j=(e,t=2,n=1024)=>{let r=Number(e)||0,i=Math.max(r,0),a=[{val:n**5,label:`PB`},{val:n**4,label:`TB`},{val:n**3,label:`GB`},{val:n**2,label:`MB`},{val:n,label:`KB`},{val:1,label:`B`}];for(let e of a)if(i>=e.val)return`${(i/e.val).toFixed(t).replace(/\.00$/,``)}${e.label}`;return`${i}B`},M=(e,n=!0)=>{if(!e||!l(e)||t(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>`${n?r(e):e}:${t}`).join(`;`)},N=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:P(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:P(r,t,n)};function P(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var F=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],I=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of F)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},L=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},R=Object.freeze({EMPTY_CONTENT:`复制内容不能为空`,EXEC_COMMAND_FAIL:`execCommand 复制失败`,UNKNOWN:`未知复制错误`,NO_BROWSER_ENV:`当前非浏览器环境,剪贴板不可用`}),z=async(e,t={},n,r)=>{let{trimEmpty:i=!0,logger:a=console}=t;if(typeof document>`u`||typeof navigator>`u`){let e=Error(R.NO_BROWSER_ENV);return a.error(e.message),r?.(e),Promise.reject(e)}let o=i?e.trim():e;if(!o){let e=Error(R.EMPTY_CONTENT);return a.error(e.message),r?.(e),Promise.reject(e)}let s=()=>{n?.()},c=e=>{let t=e instanceof Error?e:Error(R.UNKNOWN);return a.error(`复制剪贴板失败:`,t),r?.(t),Promise.reject(t)};return navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(o).then(s).catch(async()=>{try{await B(o),s()}catch(e){return c(e)}}):B(o).then(s).catch(c)},B=e=>new Promise((t,n)=>{let r=document.createElement(`textarea`);r.value=e,Object.assign(r.style,{position:`absolute`,top:`-9999px`,left:`-9999px`,width:`1px`,height:`1px`,opacity:`0`,pointerEvents:`none`}),document.body.appendChild(r);try{if(r.focus(),r.select(),!document.execCommand(`copy`))throw Error(R.EXEC_COMMAND_FAIL);t()}catch(e){n(e)}finally{r.remove()}}),V=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},H=null,U=(e,t)=>{let n=n=>{t(e),n.preventDefault(),n.stopPropagation()},r=n=>{let{code:r,ctrlKey:i,shiftKey:a,metaKey:o}=n;if(r===`F12`){t(e),n.preventDefault(),n.stopPropagation();return}(i||o)&&a&&[`KeyI`,`KeyJ`,`KeyK`].includes(r)&&(t(e),n.preventDefault(),n.stopPropagation())},i=!1,a=t=>{i||(console.warn(e),(``+t/t).length!==1||t%20,(function(){}).constructor(`debugger`)(),a(++t))};H&&H(),document.addEventListener(`contextmenu`,n),document.addEventListener(`keydown`,r),Promise.resolve().then(()=>a(0));let o=()=>{i=!0,document.removeEventListener(`contextmenu`,n),document.removeEventListener(`keydown`,r),H=null};return H=o,o},W=(e,n)=>{if(!t(e))return 0;let r=0;for(let t of e){let e;e=n?t?.[n]:t;let i=Number(e);r+=Number.isFinite(i)?i:0}let i=10**12;return Math.round(r*i)/i},G=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),K=e=>{if(typeof e!=`string`||e.trim()===``)return{name:``,ext:``};let t=e.trim(),n=t.lastIndexOf(`.`);return n<=0||n===t.length-1?{name:t,ext:``}:{name:t.slice(0,n),ext:t.slice(n)}},q=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e,J=e=>{let t=String(e??``);return t?t.charAt(0).toLowerCase()+t.slice(1):``},Y=e=>{let t=String(e??``);return t?t.charAt(0).toUpperCase()+t.slice(1):``};exports.buildTree=e,exports.calcSum=W,exports.cleanObjectEmptyValues=c,exports.copyToClipboard=z,exports.debounce=V,exports.desensitizePhone=L,exports.disableDebug=U,exports.expandCommaKeyObject=u,exports.findBy=w,exports.findIndexBy=T,exports.flatTree=E,exports.formatBytes=j,exports.formatThousand=G,exports.formatTime=N,exports.hasOwnProp=d,exports.insertAfter=D,exports.isArray=t,exports.isArrayLike=r,exports.isBoolean=i,exports.isBooleanLike=a,exports.isDefaultFn=o,exports.isEffectiveData=s,exports.isEmptyObject=g,exports.isFlatPrimArray=_,exports.isFunction=v,exports.isNil=n,exports.isNumber=y,exports.isNumberLike=x,exports.isObject=l,exports.isObjectArray=S,exports.isPrimitive=C,exports.isString=b,exports.lowerFirst=J,exports.objectToStyleString=M,exports.omitObjectProps=f,exports.omitStartWithKeys=p,exports.parseFileName=K,exports.parseStringFieldsToArray=m,exports.parseValue=q,exports.randomRgb=k,exports.randomRgba=A,exports.removeAfter=O,exports.stringifyArrayFields=h,exports.timeGreetings=I,exports.upperFirst=Y;
@@ -1 +1 @@
1
- var WyfeX_IUtils=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},n=e=>Array.isArray(e),r=e=>e==null,i=e=>!r(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,a=e=>typeof e==`boolean`,o=e=>a(e)||e===`true`||e===`false`,s=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},c=e=>r(e)?!1:d(e)?e.trim().length>0:u(e)?!0:n(e)?e.length>0:p(e)?Object.keys(e).length>0:!1,l=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,u=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),d=e=>Object.prototype.toString.call(e)===`[object String]`,f=e=>u(e)||d(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),p=e=>Object.prototype.toString.call(e)===`[object Object]`,m=e=>!n(e)||e.length===0?!1:e.every(e=>p(e)),h=e=>d(e)||u(e)||a(e)||r(e),g=(e,t)=>{if(!m(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=t;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>h(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(m(t)){let n=s(e,t);if(n)return n}}};return n(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},_=(e,t)=>{if(!n(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(t)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return n(i)?i.map(a):a(i)},v=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},y=(e,t,r)=>{if(!n(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(t)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=n(r)?r:[r];return s.splice(o+1,0,...c),s},b=(e,t,r=1)=>{if(!n(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(t)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},x=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},S=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},C=(e,t=!0)=>{if(!e||!p(e)||n(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,n])=>`${t?r(e):e}:${n}`).join(`;`)},w=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:T(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:T(r,t,n)};function T(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var E=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],D=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of E)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},O=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},k=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},A=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),j=e=>p(e)?Object.fromEntries(Object.entries(e).filter(([e,t])=>t!=null)):{},M=e=>{if(!p(e))return{};let t={...e};for(let e in t){let r=t[e];if(e.includes(`,`)&&n(r)){let n=e.split(`,`),i=r;n.forEach((e,n)=>{t[e]=i[n]}),delete t[e]}}return t},N=(e,t)=>{if(!p(e))return{};let r=n(t)?t:[t],i={...e};return r.forEach(e=>{delete i[e]}),i},P=(e,t=`_`)=>{if(e==null)return e;if(n(e))return e.map(e=>P(e,t)).filter(e=>typeof e==`string`?!e.startsWith(t):typeof e==`number`?!String(e).startsWith(t):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n];n.startsWith(t)||(r[n]=P(i,t))}return r};return e.buildTree=t,e.cleanObjectEmptyValues=j,e.debounce=k,e.desensitizePhone=O,e.expandCommaKeyObject=M,e.findBy=g,e.findIndexBy=_,e.flatTree=v,e.formatThousand=A,e.formatTime=w,e.insertAfter=y,e.isArray=n,e.isArrayLike=i,e.isBoolean=a,e.isBooleanLike=o,e.isDefaultFn=s,e.isEffectiveData=c,e.isFlatPrimArray=l,e.isNil=r,e.isNumber=u,e.isNumberLike=f,e.isObject=p,e.isObjectArray=m,e.isPrimitive=h,e.isString=d,e.objectToStyleString=C,e.omitObjectProps=N,e.omitStartWithKeys=P,e.parseStringFieldsToArray=(e,t=[])=>{if(!p(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},e.parseValue=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e,e.randomRgb=x,e.randomRgba=S,e.removeAfter=b,e.stringifyArrayFields=(e,t=[])=>{if(!p(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];t.includes(e)&&n(i)&&(r[e]=i.join(`,`))}),r},e.timeGreetings=D,e})({});
1
+ var WyfeX_IUtils=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},n=e=>Array.isArray(e),r=e=>e==null,i=e=>!r(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,a=e=>typeof e==`boolean`,o=e=>a(e)||e===`true`||e===`false`,s=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},c=e=>r(e)?!1:x(e)?e.trim().length>0:b(e)?!0:n(e)?e.length>0:u(e)?Object.keys(e).length>0:!1,l=e=>{if(!u(e))return{};let t=e=>{if(e!=null)return n(e)?e.map(e=>t(e)).filter(e=>e!==void 0):u(e)?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,t(n)]).filter(([e,t])=>t!==void 0)):e};return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,t(n)]).filter(([e,t])=>t!==void 0))},u=e=>Object.prototype.toString.call(e)===`[object Object]`,d=e=>{if(!u(e))return{};let t={...e},r=e=>{let t=Object.keys(e);for(let r of t){let t=e[r];if(r.includes(`,`)&&n(t)){let n=r.split(`,`),i=t;n.forEach((t,n)=>{e[t]=i[n]}),delete e[r]}}Object.values(e).forEach(e=>{u(e)&&r(e)})};return r(t),t},f=(e,t)=>u(e)?Object.prototype.hasOwnProperty.call(e,t):!1,p=(e,t)=>{if(!u(e))return{};let r=e,i=n(t)?t:[t],a={...r};return i.forEach(e=>{delete a[e]}),a},m=(e,t=`_`)=>{if(e==null)return e;if(n(e))return e.map(e=>m(e,t)).filter(e=>typeof e==`string`?!e.startsWith(t):typeof e==`number`?!String(e).startsWith(t):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n];n.startsWith(t)||(r[n]=m(i,t))}return r},h=(e,t=[])=>{if(!u(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},g=(e,t=[])=>{if(!u(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];t.includes(e)&&n(i)&&(r[e]=i.join(`,`))}),r},_=e=>{if(!u(e))return!1;for(let t in e)if(f(e,t))return!1;return!0},v=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,y=e=>typeof e==`function`,b=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),x=e=>Object.prototype.toString.call(e)===`[object String]`,S=e=>b(e)||x(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),C=e=>!n(e)||e.length===0?!1:e.every(e=>u(e)),w=e=>x(e)||b(e)||a(e)||r(e),T=(e,t)=>{if(!C(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=t;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>w(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(C(t)){let n=s(e,t);if(n)return n}}};return n(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},E=(e,t)=>{if(!n(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(t)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return n(i)?i.map(a):a(i)},D=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},O=(e,t,r)=>{if(!n(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(t)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=n(r)?r:[r];return s.splice(o+1,0,...c),s},k=(e,t,r=1)=>{if(!n(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(t)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},A=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},j=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},M=(e,t=2,n=1024)=>{let r=Number(e)||0,i=Math.max(r,0),a=[{val:n**5,label:`PB`},{val:n**4,label:`TB`},{val:n**3,label:`GB`},{val:n**2,label:`MB`},{val:n,label:`KB`},{val:1,label:`B`}];for(let e of a)if(i>=e.val)return`${(i/e.val).toFixed(t).replace(/\.00$/,``)}${e.label}`;return`${i}B`},N=(e,t=!0)=>{if(!e||!u(e)||n(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,n])=>`${t?r(e):e}:${n}`).join(`;`)},P=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:F(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:F(r,t,n)};function F(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var I=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],L=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of I)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},R=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},z=Object.freeze({EMPTY_CONTENT:`复制内容不能为空`,EXEC_COMMAND_FAIL:`execCommand 复制失败`,UNKNOWN:`未知复制错误`,NO_BROWSER_ENV:`当前非浏览器环境,剪贴板不可用`}),B=async(e,t={},n,r)=>{let{trimEmpty:i=!0,logger:a=console}=t;if(typeof document>`u`||typeof navigator>`u`){let e=Error(z.NO_BROWSER_ENV);return a.error(e.message),r?.(e),Promise.reject(e)}let o=i?e.trim():e;if(!o){let e=Error(z.EMPTY_CONTENT);return a.error(e.message),r?.(e),Promise.reject(e)}let s=()=>{n?.()},c=e=>{let t=e instanceof Error?e:Error(z.UNKNOWN);return a.error(`复制剪贴板失败:`,t),r?.(t),Promise.reject(t)};return navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(o).then(s).catch(async()=>{try{await V(o),s()}catch(e){return c(e)}}):V(o).then(s).catch(c)},V=e=>new Promise((t,n)=>{let r=document.createElement(`textarea`);r.value=e,Object.assign(r.style,{position:`absolute`,top:`-9999px`,left:`-9999px`,width:`1px`,height:`1px`,opacity:`0`,pointerEvents:`none`}),document.body.appendChild(r);try{if(r.focus(),r.select(),!document.execCommand(`copy`))throw Error(z.EXEC_COMMAND_FAIL);t()}catch(e){n(e)}finally{r.remove()}}),H=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},U=null;return e.buildTree=t,e.calcSum=(e,t)=>{if(!n(e))return 0;let r=0;for(let n of e){let e;e=t?n?.[t]:n;let i=Number(e);r+=Number.isFinite(i)?i:0}let i=10**12;return Math.round(r*i)/i},e.cleanObjectEmptyValues=l,e.copyToClipboard=B,e.debounce=H,e.desensitizePhone=R,e.disableDebug=(e,t)=>{let n=n=>{t(e),n.preventDefault(),n.stopPropagation()},r=n=>{let{code:r,ctrlKey:i,shiftKey:a,metaKey:o}=n;if(r===`F12`){t(e),n.preventDefault(),n.stopPropagation();return}(i||o)&&a&&[`KeyI`,`KeyJ`,`KeyK`].includes(r)&&(t(e),n.preventDefault(),n.stopPropagation())},i=!1,a=t=>{i||(console.warn(e),(``+t/t).length!==1||t%20,(function(){}).constructor(`debugger`)(),a(++t))};U&&U(),document.addEventListener(`contextmenu`,n),document.addEventListener(`keydown`,r),Promise.resolve().then(()=>a(0));let o=()=>{i=!0,document.removeEventListener(`contextmenu`,n),document.removeEventListener(`keydown`,r),U=null};return U=o,o},e.expandCommaKeyObject=d,e.findBy=T,e.findIndexBy=E,e.flatTree=D,e.formatBytes=M,e.formatThousand=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),e.formatTime=P,e.hasOwnProp=f,e.insertAfter=O,e.isArray=n,e.isArrayLike=i,e.isBoolean=a,e.isBooleanLike=o,e.isDefaultFn=s,e.isEffectiveData=c,e.isEmptyObject=_,e.isFlatPrimArray=v,e.isFunction=y,e.isNil=r,e.isNumber=b,e.isNumberLike=S,e.isObject=u,e.isObjectArray=C,e.isPrimitive=w,e.isString=x,e.lowerFirst=e=>{let t=String(e??``);return t?t.charAt(0).toLowerCase()+t.slice(1):``},e.objectToStyleString=N,e.omitObjectProps=p,e.omitStartWithKeys=m,e.parseFileName=e=>{if(typeof e!=`string`||e.trim()===``)return{name:``,ext:``};let t=e.trim(),n=t.lastIndexOf(`.`);return n<=0||n===t.length-1?{name:t,ext:``}:{name:t.slice(0,n),ext:t.slice(n)}},e.parseStringFieldsToArray=h,e.parseValue=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e,e.randomRgb=A,e.randomRgba=j,e.removeAfter=k,e.stringifyArrayFields=g,e.timeGreetings=L,e.upperFirst=e=>{let t=String(e??``);return t?t.charAt(0).toUpperCase()+t.slice(1):``},e})({});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var e=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},t=e=>Array.isArray(e),n=e=>e==null,r=e=>!n(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,i=e=>typeof e==`boolean`,a=e=>i(e)||e===`true`||e===`false`,o=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},s=e=>n(e)?!1:u(e)?e.trim().length>0:l(e)?!0:t(e)?e.length>0:f(e)?Object.keys(e).length>0:!1,c=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,l=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),u=e=>Object.prototype.toString.call(e)===`[object String]`,d=e=>l(e)||u(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),f=e=>Object.prototype.toString.call(e)===`[object Object]`,p=e=>!t(e)||e.length===0?!1:e.every(e=>f(e)),m=e=>u(e)||l(e)||i(e)||n(e),h=(e,n)=>{if(!p(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=n;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>m(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(p(t)){let n=s(e,t);if(n)return n}}};return t(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},g=(e,n)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(n)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return t(i)?i.map(a):a(i)},_=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},v=(e,n,r)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=t(r)?r:[r];return s.splice(o+1,0,...c),s},y=(e,n,r=1)=>{if(!t(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},b=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},x=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},S=(e,n=!0)=>{if(!e||!f(e)||t(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>`${n?r(e):e}:${t}`).join(`;`)},C=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:w(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:w(r,t,n)};function w(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var T=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],E=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of T)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},D=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},O=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},k=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),A=e=>f(e)?Object.fromEntries(Object.entries(e).filter(([e,t])=>t!=null)):{},j=e=>{if(!f(e))return{};let n={...e};for(let e in n){let r=n[e];if(e.includes(`,`)&&t(r)){let t=e.split(`,`),i=r;t.forEach((e,t)=>{n[e]=i[t]}),delete n[e]}}return n},M=(e,n)=>{if(!f(e))return{};let r=t(n)?n:[n],i={...e};return r.forEach(e=>{delete i[e]}),i},N=(e,n=`_`)=>{if(e==null)return e;if(t(e))return e.map(e=>N(e,n)).filter(e=>typeof e==`string`?!e.startsWith(n):typeof e==`number`?!String(e).startsWith(n):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];t.startsWith(n)||(r[t]=N(i,n))}return r},P=(e,t=[])=>{if(!f(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},F=(e,n=[])=>{if(!f(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];n.includes(e)&&t(i)&&(r[e]=i.join(`,`))}),r},I=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e;export{e as buildTree,A as cleanObjectEmptyValues,O as debounce,D as desensitizePhone,j as expandCommaKeyObject,h as findBy,g as findIndexBy,_ as flatTree,k as formatThousand,C as formatTime,v as insertAfter,t as isArray,r as isArrayLike,i as isBoolean,a as isBooleanLike,o as isDefaultFn,s as isEffectiveData,c as isFlatPrimArray,n as isNil,l as isNumber,d as isNumberLike,f as isObject,p as isObjectArray,m as isPrimitive,u as isString,S as objectToStyleString,M as omitObjectProps,N as omitStartWithKeys,P as parseStringFieldsToArray,I as parseValue,b as randomRgb,x as randomRgba,y as removeAfter,F as stringifyArrayFields,E as timeGreetings};
1
+ var e=(e,t={})=>{let{mode:n=`level`,idKey:r=`id`,parentIdKey:i=`parentId`,levelKey:a=`level`,childrenKey:o=`children`}=t;if(!Array.isArray(e)||e.length===0)return[];let s=e.map(e=>({...e})),c=[];if(n===`level`){let e=new Map;return s.forEach(t=>{let n=t[a];if(typeof n!=`number`)return;if(n===0){c.push(t),e.set(n,t);return}let r=e.get(n-1);r&&(r[o]||=[],r[o].push(t),e.set(n,t))}),c}if(n===`parentId`){let e=new Map;return s.forEach(t=>e.set(t[r],t)),s.forEach(t=>{let n=t[i];if(n==null||n===0){c.push(t);return}let r=e.get(n);r&&(r[o]||=[],r[o].push(t))}),c}return c},t=e=>Array.isArray(e),n=e=>e==null,r=e=>!n(e)&&typeof e==`object`&&typeof e.length==`number`&&typeof e!=`function`,i=e=>typeof e==`boolean`,a=e=>i(e)||e===`true`||e===`false`,o=e=>{if(typeof e!=`function`)return!1;let t=e.toString().replace(/\s/g,``);return[`()=>{}`,`function(){}`,`async()=>{}`,`asyncfunction(){}`].includes(t)},s=e=>n(e)?!1:b(e)?e.trim().length>0:y(e)?!0:t(e)?e.length>0:l(e)?Object.keys(e).length>0:!1,c=e=>{if(!l(e))return{};let n=e=>{if(e!=null)return t(e)?e.map(e=>n(e)).filter(e=>e!==void 0):l(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t)]).filter(([e,t])=>t!==void 0)):e};return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t)]).filter(([e,t])=>t!==void 0))},l=e=>Object.prototype.toString.call(e)===`[object Object]`,u=e=>{if(!l(e))return{};let n={...e},r=e=>{let n=Object.keys(e);for(let r of n){let n=e[r];if(r.includes(`,`)&&t(n)){let t=r.split(`,`),i=n;t.forEach((t,n)=>{e[t]=i[n]}),delete e[r]}}Object.values(e).forEach(e=>{l(e)&&r(e)})};return r(n),n},d=(e,t)=>l(e)?Object.prototype.hasOwnProperty.call(e,t):!1,f=(e,n)=>{if(!l(e))return{};let r=e,i=t(n)?n:[n],a={...r};return i.forEach(e=>{delete a[e]}),a},p=(e,n=`_`)=>{if(e==null)return e;if(t(e))return e.map(e=>p(e,n)).filter(e=>typeof e==`string`?!e.startsWith(n):typeof e==`number`?!String(e).startsWith(n):!0);if(typeof e!=`object`||e instanceof Date||e instanceof RegExp)return e;let r={};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];t.startsWith(n)||(r[t]=p(i,n))}return r},m=(e,t=[])=>{if(!l(e))return e;let n={...e};return t.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(n,e))return;let t=n[e];if(typeof t==`string`){n[e]=t.split(`,`).map(e=>e.trim()).filter(Boolean);return}n[e]=t==null?[]:[t]}),n},h=(e,n=[])=>{if(!l(e))return e;let r={...e};return Object.keys(r).forEach(e=>{let i=r[e];n.includes(e)&&t(i)&&(r[e]=i.join(`,`))}),r},g=e=>{if(!l(e))return!1;for(let t in e)if(d(e,t))return!1;return!0},_=(e,t=!0)=>Array.isArray(e)?e.length?e.every(e=>{let t=typeof e;return!!([`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`].includes(t)||e===null)}):t:!1,v=e=>typeof e==`function`,y=e=>Object.prototype.toString.call(e)===`[object Number]`&&Number.isFinite(e),b=e=>Object.prototype.toString.call(e)===`[object String]`,x=e=>y(e)||b(e)&&e.trim()!==``&&!Number.isNaN(Number(e)),S=e=>!t(e)||e.length===0?!1:e.every(e=>l(e)),C=e=>b(e)||y(e)||i(e)||n(e),w=(e,n)=>{if(!S(e))throw TypeError(`array 必须是一个对象数组`);let{key:r,value:i,childrenKey:a=`children`}=n;if(!r){console.error(`findBy:key 不能为空`);return}let o=e=>C(e)?String(e):e,s=(e,t)=>{let n=o(e);for(let i of t){if(o(i[r])===n)return i;let t=i[a];if(S(t)){let n=s(e,t);if(n)return n}}};return t(i)?i.map(t=>s(t,e)).filter(Boolean):s(i,e)},T=(e,n)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[r,i]=Object.entries(n)[0]??[];if(!r||i===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let a=t=>e.findIndex(e=>e[r]===t);return t(i)?i.map(a):a(i)},E=(e,t={})=>{let{childrenKey:n=`children`,keepChildren:r=!1}=t,i=[],a=e=>{let t={...e},o=t[n]||[];r||delete t[n],i.push(t),Array.isArray(o)&&o.length&&o.forEach(e=>a(e))};return e.forEach(e=>a(e)),i},D=(e,n,r)=>{if(!t(e))throw TypeError(`array 必须是一个数组`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效的键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=[...e],c=t(r)?r:[r];return s.splice(o+1,0,...c),s},O=(e,n,r=1)=>{if(!t(e))throw TypeError(`array must be an array`);let[i,a]=Object.entries(n)[0]??[];if(!i||a===void 0)return console.error(`target 必须传入有效键值对,格式示例:{ id: 1 }`),[...e];let o=e.findIndex(e=>e[i]===a);if(o===-1)return console.error(`在数组中未找到匹配的目标元素`),[...e];let s=o+1;if(s>=e.length)return console.error(`目标元素已是数组最后一项,无后续数据可删除`),[...e];let c=[...e];return c.splice(s,r),c},k=()=>{let e=()=>Math.floor(Math.random()*255);return`rgb(${e()}, ${e()}, ${e()})`},A=(e=1)=>{let t=()=>Math.floor(Math.random()*255);return`rgba(${t()}, ${t()}, ${t()}, ${e})`},j=(e,t=2,n=1024)=>{let r=Number(e)||0,i=Math.max(r,0),a=[{val:n**5,label:`PB`},{val:n**4,label:`TB`},{val:n**3,label:`GB`},{val:n**2,label:`MB`},{val:n,label:`KB`},{val:1,label:`B`}];for(let e of a)if(i>=e.val)return`${(i/e.val).toFixed(t).replace(/\.00$/,``)}${e.label}`;return`${i}B`},M=(e,n=!0)=>{if(!e||!l(e)||t(e))return``;let r=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>`${n?r(e):e}:${t}`).join(`;`)},N=(e,t=`{y}-{m}-{d} {h}:{i}:{s}`,n=!0)=>{if(e==null||e===``)return null;let r;if(e instanceof Date)r=e;else{let i;if(typeof e==`string`){let a=e.trim();if(/^\d+$/.test(a))i=parseInt(a,10);else{let e=a.replace(/-/g,`/`);return r=new Date(e),isNaN(r.getTime())?null:P(r,t,n)}}else i=e;i.toString().length===10&&(i*=1e3),r=new Date(i)}return isNaN(r.getTime())?null:P(r,t,n)};function P(e,t,n){let r=e.getFullYear(),i=e.getMonth()+1,a=e.getDate(),o=e.getHours(),s=e.getMinutes(),c=e.getSeconds(),l=e.getDay(),u={y:r.toString(),m:n?i.toString().padStart(2,`0`):i.toString(),d:n?a.toString().padStart(2,`0`):a.toString(),h:n?o.toString().padStart(2,`0`):o.toString(),i:n?s.toString().padStart(2,`0`):s.toString(),s:n?c.toString().padStart(2,`0`):c.toString(),a:[`日`,`一`,`二`,`三`,`四`,`五`,`六`][l]};return t.replace(/{([ymdhisa])}/g,(e,t)=>u[t])}var F=[{start:0,end:5,greeting:`凌晨好`},{start:6,end:8,greeting:`早上好`},{start:9,end:10,greeting:`上午好`},{start:11,end:12,greeting:`中午好`},{start:13,end:16,greeting:`下午好`},{start:17,end:18,greeting:`傍晚好`},{start:19,end:23,greeting:`晚上好`}],I=e=>{let t;if(e===void 0)t=new Date().getHours();else if(e instanceof Date)t=e.getHours();else{let n=e;t=n>=0&&n<=23?n:new Date(n).getHours()}for(let e of F)if(t>=e.start&&t<=e.end)return e.greeting;return`您好`},L=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(/^\d{11}$/.test(t))return t.slice(0,3)+`****`+t.slice(7);let n=t.match(/^(\d+)-(\d+)$/);if(n){let[,e,r]=n;if(r.length<=2)return t;let i=r[0],a=r.at(-1);return`${e}-${i}${`*`.repeat(r.length-2)}${a}`}return t},R=Object.freeze({EMPTY_CONTENT:`复制内容不能为空`,EXEC_COMMAND_FAIL:`execCommand 复制失败`,UNKNOWN:`未知复制错误`,NO_BROWSER_ENV:`当前非浏览器环境,剪贴板不可用`}),z=async(e,t={},n,r)=>{let{trimEmpty:i=!0,logger:a=console}=t;if(typeof document>`u`||typeof navigator>`u`){let e=Error(R.NO_BROWSER_ENV);return a.error(e.message),r?.(e),Promise.reject(e)}let o=i?e.trim():e;if(!o){let e=Error(R.EMPTY_CONTENT);return a.error(e.message),r?.(e),Promise.reject(e)}let s=()=>{n?.()},c=e=>{let t=e instanceof Error?e:Error(R.UNKNOWN);return a.error(`复制剪贴板失败:`,t),r?.(t),Promise.reject(t)};return navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(o).then(s).catch(async()=>{try{await B(o),s()}catch(e){return c(e)}}):B(o).then(s).catch(c)},B=e=>new Promise((t,n)=>{let r=document.createElement(`textarea`);r.value=e,Object.assign(r.style,{position:`absolute`,top:`-9999px`,left:`-9999px`,width:`1px`,height:`1px`,opacity:`0`,pointerEvents:`none`}),document.body.appendChild(r);try{if(r.focus(),r.select(),!document.execCommand(`copy`))throw Error(R.EXEC_COMMAND_FAIL);t()}catch(e){n(e)}finally{r.remove()}}),V=(e,t=300,n=!1)=>{let r=null,i,a=function(...a){return r&&clearTimeout(r),n&&!r&&(i=e.apply(this,a)),r=setTimeout(()=>{n||e.apply(this,a),r=null},t),i};return a.cancel=()=>{r&&=(clearTimeout(r),null)},a.flush=()=>(a.cancel(),i),a.isPending=()=>r!==null,a},H=null,U=(e,t)=>{let n=n=>{t(e),n.preventDefault(),n.stopPropagation()},r=n=>{let{code:r,ctrlKey:i,shiftKey:a,metaKey:o}=n;if(r===`F12`){t(e),n.preventDefault(),n.stopPropagation();return}(i||o)&&a&&[`KeyI`,`KeyJ`,`KeyK`].includes(r)&&(t(e),n.preventDefault(),n.stopPropagation())},i=!1,a=t=>{i||(console.warn(e),(``+t/t).length!==1||t%20,(function(){}).constructor(`debugger`)(),a(++t))};H&&H(),document.addEventListener(`contextmenu`,n),document.addEventListener(`keydown`,r),Promise.resolve().then(()=>a(0));let o=()=>{i=!0,document.removeEventListener(`contextmenu`,n),document.removeEventListener(`keydown`,r),H=null};return H=o,o},W=(e,n)=>{if(!t(e))return 0;let r=0;for(let t of e){let e;e=n?t?.[n]:t;let i=Number(e);r+=Number.isFinite(i)?i:0}let i=10**12;return Math.round(r*i)/i},G=e=>e==null||Number.isNaN(e)?``:String(e).trim().replace(/^(-?\d+)(\.\d+)?$/,(e,t,n=``)=>t.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)+n),K=e=>{if(typeof e!=`string`||e.trim()===``)return{name:``,ext:``};let t=e.trim(),n=t.lastIndexOf(`.`);return n<=0||n===t.length-1?{name:t,ext:``}:{name:t.slice(0,n),ext:t.slice(n)}},q=e=>e===`null`||e===`undefined`||e===``?null:e===`true`?!0:e===`false`?!1:typeof e==`string`&&/^-?(0|[1-9]\d*)(\.\d+)?$/.test(e)?Number(e):e,J=e=>{let t=String(e??``);return t?t.charAt(0).toLowerCase()+t.slice(1):``},Y=e=>{let t=String(e??``);return t?t.charAt(0).toUpperCase()+t.slice(1):``};export{e as buildTree,W as calcSum,c as cleanObjectEmptyValues,z as copyToClipboard,V as debounce,L as desensitizePhone,U as disableDebug,u as expandCommaKeyObject,w as findBy,T as findIndexBy,E as flatTree,j as formatBytes,G as formatThousand,N as formatTime,d as hasOwnProp,D as insertAfter,t as isArray,r as isArrayLike,i as isBoolean,a as isBooleanLike,o as isDefaultFn,s as isEffectiveData,g as isEmptyObject,_ as isFlatPrimArray,v as isFunction,n as isNil,y as isNumber,x as isNumberLike,l as isObject,S as isObjectArray,C as isPrimitive,b as isString,J as lowerFirst,M as objectToStyleString,f as omitObjectProps,p as omitStartWithKeys,K as parseFileName,m as parseStringFieldsToArray,q as parseValue,k as randomRgb,A as randomRgba,O as removeAfter,h as stringifyArrayFields,I as timeGreetings,Y as upperFirst};
@@ -7,4 +7,5 @@ export * from './modules/function';
7
7
  export * from './modules/number';
8
8
  export * from './modules/object';
9
9
  export * from './modules/parse';
10
+ export * from './modules/string';
10
11
  export * from './modules/type';
@@ -0,0 +1 @@
1
+ export declare const formatBytes: (size: unknown, decimals?: number, base?: number) => string;
@@ -1 +1,2 @@
1
+ export * from './formatBytes';
1
2
  export * from './objectToStyleString';
@@ -0,0 +1,7 @@
1
+ export type CopyToClipboardOptions = {
2
+ trimEmpty?: boolean;
3
+ logger?: {
4
+ error: (...args: any[]) => void;
5
+ };
6
+ };
7
+ export declare const copyToClipboard: (text: string, options?: CopyToClipboardOptions, successCb?: () => void, errorCb?: (err: Error) => void) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const disableDebug: (tipMsg: string, onWarn: (msg: string) => void | Promise<void>) => () => void;
@@ -1 +1,3 @@
1
+ export * from './copyToClipboard';
1
2
  export * from './debounce';
3
+ export * from './disableDebug';
@@ -0,0 +1 @@
1
+ export declare const calcSum: <T extends Record<string, unknown>>(list: unknown, field?: keyof T) => number;
@@ -1 +1,2 @@
1
+ export * from './calcSum';
1
2
  export * from './formatThousand';
@@ -1 +1 @@
1
- export declare const cleanObjectEmptyValues: <T extends Record<string, unknown>>(obj: T) => Partial<T>;
1
+ export declare const cleanObjectEmptyValues: <T extends Record<string, unknown>>(obj: unknown) => Partial<T>;
@@ -1 +1 @@
1
- export declare const expandCommaKeyObject: (obj: Record<string, unknown>) => Record<string, unknown>;
1
+ export declare const expandCommaKeyObject: (obj: unknown) => Record<string, unknown>;
@@ -0,0 +1 @@
1
+ export declare const hasOwnProp: (target: unknown, key: string | symbol) => boolean;
@@ -1,5 +1,6 @@
1
1
  export * from './cleanObjectEmptyValues';
2
2
  export * from './expandCommaKeyObject';
3
+ export * from './hasOwnProp';
3
4
  export * from './omitObjectProps';
4
5
  export * from './omitStartWithKeys';
5
6
  export * from './parseStringFieldsToArray';
@@ -1 +1 @@
1
- export declare const omitObjectProps: <T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K | K[]) => Omit<T, K>;
1
+ export declare const omitObjectProps: <T extends Record<string, unknown>, K extends keyof T>(obj: unknown, keys: (K | string) | (K | string)[]) => Omit<T, K>;
@@ -1 +1 @@
1
- export declare const parseStringFieldsToArray: (obj: Record<string, unknown>, fields?: string[]) => Record<string, unknown>;
1
+ export declare const parseStringFieldsToArray: (obj: unknown, fields?: string[]) => Record<string, unknown>;
@@ -1 +1 @@
1
- export declare const stringifyArrayFields: (obj: Record<string, unknown>, includes?: string[]) => Record<string, unknown>;
1
+ export declare const stringifyArrayFields: (obj: unknown, includes?: string[]) => Record<string, unknown>;
@@ -1 +1,2 @@
1
+ export * from './parseFileName';
1
2
  export * from './parseValue';
@@ -0,0 +1,4 @@
1
+ export declare const parseFileName: (filename: unknown) => {
2
+ name: string;
3
+ ext: string;
4
+ };
@@ -0,0 +1,2 @@
1
+ export * from './lowerFirst';
2
+ export * from './upperFirst';
@@ -0,0 +1 @@
1
+ export declare const lowerFirst: (str: unknown) => string;
@@ -0,0 +1 @@
1
+ export declare const upperFirst: (str: unknown) => string;
@@ -4,7 +4,9 @@ export * from './isBoolean';
4
4
  export * from './isBooleanLike';
5
5
  export * from './isDefaultFn';
6
6
  export * from './isEffectiveData';
7
+ export * from './isEmptyObject';
7
8
  export * from './isFlatPrimArray';
9
+ export * from './isFunction';
8
10
  export * from './isNil';
9
11
  export * from './isNumber';
10
12
  export * from './isNumberLike';
@@ -0,0 +1 @@
1
+ export declare const isEmptyObject: (v: unknown) => v is Record<string, never>;
@@ -0,0 +1 @@
1
+ export declare const isFunction: (v: unknown) => v is Function;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@wyfex/iutils",
3
- "version": "0.35.0",
3
+ "version": "0.45.0",
4
4
  "description": "万有前端 X 体系下基于 Vite8 + TypeScript6 构建的 iUtils 工具库",
5
- "homepage": "https://wyfe.top/idocs/iutils",
5
+ "homepage": "https://wyfex.top/idocs/iutils",
6
6
  "type": "module",
7
7
  "main": "dist/index.cjs",
8
8
  "module": "dist/index.js",
@@ -15,7 +15,8 @@
15
15
  "import": "./dist/index.js",
16
16
  "require": "./dist/index.cjs",
17
17
  "types": "./dist/types/index.d.ts"
18
- }
18
+ },
19
+ "./*": "./*"
19
20
  },
20
21
  "sideEffects": false,
21
22
  "scripts": {
@@ -25,9 +26,7 @@
25
26
  "tgz": "pnpm build && pnpm pack"
26
27
  },
27
28
  "keywords": [
28
- "万有前端",
29
29
  "万有前端 X",
30
- "万有前端 · iUtils",
31
30
  "万有前端 X ·iUtils",
32
31
  "wyfex",
33
32
  "wyfex-iutils"
@@ -38,8 +37,8 @@
38
37
  "author": "Symbol(王独秀) <963569210@qq.com>",
39
38
  "license": "MIT",
40
39
  "devDependencies": {
41
- "@types/node": "^25.9.1",
40
+ "@types/node": "^26.1.0",
42
41
  "typescript": "^6.0.3",
43
- "vite": "^8.0.16"
42
+ "vite": "^8.1.3"
44
43
  }
45
44
  }