wjk-util 0.0.11 → 0.0.12

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.
@@ -1 +1 @@
1
- function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e){return Array.isArray(e)}function n(t){return"object"===e(t)}function r(e){return"function"==typeof e}function o(e){return"string"==typeof e}function c(e){return"number"==typeof e&&!isNaN(e)}function i(e){return"boolean"==typeof e}function u(e){return null===e}function a(e){return void 0===e}function s(e){return!(!u(e)&&!a(e))||(o(e)||t(e)?0===e.length:!!n(e)&&0===Object.keys(e).length)}function l(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]}function f(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");return t<=0?e.slice():e.reduce((e,n)=>e.concat(Array.isArray(n)?f(n,t-1):[n]),[])}function y(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function h(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)}function p(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)}function g(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}function d(e){if(Array.isArray(e)&&0!==e.length)return g(e)/e.length}function m(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array)return e.map(e=>m(e));if(e instanceof Object){const t={};for(let n in e)e.hasOwnProperty(n)&&(t[n]=m(e[n]));return t}return e}function v(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t}function b(e){return"object"!=typeof e||null===e?[]:Object.keys(e)}function w(e){return"object"!=typeof e||null===e?[]:Object.values(e)}function A(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)}function E(e,t){return Math.floor(Math.random()*(t-e+1))+e}function j(e,t,n){return Math.min(Math.max(e,t),n)}function O(e){return e*(Math.PI/180)}function S(e){return e*(180/Math.PI)}function x(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function L(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)}function M(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}}function k(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}}function P(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}}function I(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}}function N(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function R(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function U(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function C(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)}function D(e,t,n){return e*Math.pow(1+t,n)}console.log(D(1e4,.025,208));export{d as average,y as chunk,j as clamp,I as clearStorage,D as compoundInterest,m as deepClone,O as degreesToRadians,x as distance,C as downloadFile,f as flatten,k as getStorage,e as getType,A as hasKey,t as isArray,i as isBoolean,s as isEmpty,r as isFunction,u as isNull,c as isNumber,n as isObject,o as isString,a as isUndefined,b as keys,h as max,v as merge,p as min,S as radiansToDegrees,E as randomInt,P as removeStorage,L as round,M as setStorage,g as sum,l as unique,N as uploadExcelFile,R as uploadImageFile,U as uploadModelFile,w as values};
1
+ function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e){return Array.isArray(e)}function n(t){return"object"===e(t)}function r(e){return"function"==typeof e}function o(e){return"string"==typeof e}function c(e){return"number"==typeof e&&!isNaN(e)}function i(e){return"boolean"==typeof e}function u(e){return null===e}function a(e){return void 0===e}function s(e){return!(!u(e)&&!a(e))||(o(e)||t(e)?0===e.length:!!n(e)&&0===Object.keys(e).length)}function l(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]}function f(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");return t<=0?e.slice():e.reduce((e,n)=>e.concat(Array.isArray(n)?f(n,t-1):[n]),[])}function y(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function h(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)}function p(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)}function g(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}function d(e){if(Array.isArray(e)&&0!==e.length)return g(e)/e.length}function m(e,t=/* @__PURE__ */new WeakMap){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof HTMLElement)return e.cloneNode(!0);if(t.has(e))return t.get(e);if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach((e,r)=>{n[r]=m(e,t)}),n}const n={};return t.set(e,n),Object.keys(e).forEach(r=>{n[r]=m(e[r],t)}),n}function v(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t}function E(e){return"object"!=typeof e||null===e?[]:Object.keys(e)}function b(e){return"object"!=typeof e||null===e?[]:Object.values(e)}function w(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)}function A(e,t){return Math.floor(Math.random()*(t-e+1))+e}function j(e,t,n){return Math.min(Math.max(e,t),n)}function x(e){return e*(Math.PI/180)}function M(e){return e*(180/Math.PI)}function L(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function S(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)}function O(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}}function k(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}}function N(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}}function P(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}}function R(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function I(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function U(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function C(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)}function D(e,t,n){return e*Math.pow(1+t,n)}export{d as average,y as chunk,j as clamp,P as clearStorage,D as compoundInterest,m as deepClone,x as degreesToRadians,L as distance,C as downloadFile,f as flatten,k as getStorage,e as getType,w as hasKey,t as isArray,i as isBoolean,s as isEmpty,r as isFunction,u as isNull,c as isNumber,n as isObject,o as isString,a as isUndefined,E as keys,h as max,v as merge,p as min,M as radiansToDegrees,A as randomInt,N as removeStorage,S as round,O as setStorage,g as sum,l as unique,R as uploadExcelFile,I as uploadImageFile,U as uploadModelFile,b as values};
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WJKUtil={})}(this,function(e){"use strict";function t(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function n(e){return Array.isArray(e)}function r(e){return"object"===t(e)}function o(e){return"string"==typeof e}function c(e){return null===e}function i(e){return void 0===e}function a(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}function u(e,t,n){return e*Math.pow(1+t,n)}console.log(u(1e4,.025,208)),e.average=function(e){if(Array.isArray(e)&&0!==e.length)return a(e)/e.length},e.chunk=function(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},e.clamp=function(e,t,n){return Math.min(Math.max(e,t),n)},e.clearStorage=function(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}},e.compoundInterest=u,e.deepClone=function e(t){if(null===t||"object"!=typeof t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof Array)return t.map(t=>e(t));if(t instanceof Object){const n={};for(let r in t)t.hasOwnProperty(r)&&(n[r]=e(t[r]));return n}return t},e.degreesToRadians=function(e){return e*(Math.PI/180)},e.distance=function(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)},e.downloadFile=function(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)},e.flatten=function e(t,n=1){if(!Array.isArray(t))throw new Error("参数必须是数组");return n<=0?t.slice():t.reduce((t,r)=>t.concat(Array.isArray(r)?e(r,n-1):[r]),[])},e.getStorage=function(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}},e.getType=t,e.hasKey=function(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)},e.isArray=n,e.isBoolean=function(e){return"boolean"==typeof e},e.isEmpty=function(e){return!(!c(e)&&!i(e))||(o(e)||n(e)?0===e.length:!!r(e)&&0===Object.keys(e).length)},e.isFunction=function(e){return"function"==typeof e},e.isNull=c,e.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},e.isObject=r,e.isString=o,e.isUndefined=i,e.keys=function(e){return"object"!=typeof e||null===e?[]:Object.keys(e)},e.max=function(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)},e.merge=function(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t},e.min=function(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)},e.radiansToDegrees=function(e){return e*(180/Math.PI)},e.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1))+e},e.removeStorage=function(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}},e.round=function(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)},e.setStorage=function(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}},e.sum=a,e.unique=function(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]},e.uploadExcelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadImageFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadModelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.values=function(e){return"object"!=typeof e||null===e?[]:Object.values(e)},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WJKUtil={})}(this,function(e){"use strict";function t(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function n(e){return Array.isArray(e)}function r(e){return"object"===t(e)}function o(e){return"string"==typeof e}function c(e){return null===e}function i(e){return void 0===e}function a(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}e.average=function(e){if(Array.isArray(e)&&0!==e.length)return a(e)/e.length},e.chunk=function(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},e.clamp=function(e,t,n){return Math.min(Math.max(e,t),n)},e.clearStorage=function(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}},e.compoundInterest=function(e,t,n){return e*Math.pow(1+t,n)},e.deepClone=function e(t,n=new WeakMap){if(null===t||"object"!=typeof t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(t instanceof HTMLElement)return t.cloneNode(!0);if(n.has(t))return n.get(t);if(Array.isArray(t)){const r=[];return n.set(t,r),t.forEach((t,o)=>{r[o]=e(t,n)}),r}const r={};return n.set(t,r),Object.keys(t).forEach(o=>{r[o]=e(t[o],n)}),r},e.degreesToRadians=function(e){return e*(Math.PI/180)},e.distance=function(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)},e.downloadFile=function(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)},e.flatten=function e(t,n=1){if(!Array.isArray(t))throw new Error("参数必须是数组");return n<=0?t.slice():t.reduce((t,r)=>t.concat(Array.isArray(r)?e(r,n-1):[r]),[])},e.getStorage=function(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}},e.getType=t,e.hasKey=function(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)},e.isArray=n,e.isBoolean=function(e){return"boolean"==typeof e},e.isEmpty=function(e){return!(!c(e)&&!i(e))||(o(e)||n(e)?0===e.length:!!r(e)&&0===Object.keys(e).length)},e.isFunction=function(e){return"function"==typeof e},e.isNull=c,e.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},e.isObject=r,e.isString=o,e.isUndefined=i,e.keys=function(e){return"object"!=typeof e||null===e?[]:Object.keys(e)},e.max=function(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)},e.merge=function(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t},e.min=function(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)},e.radiansToDegrees=function(e){return e*(180/Math.PI)},e.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1))+e},e.removeStorage=function(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}},e.round=function(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)},e.setStorage=function(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}},e.sum=a,e.unique=function(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]},e.uploadExcelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadImageFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadModelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.values=function(e){return"object"!=typeof e||null===e?[]:Object.values(e)},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,43 +1,46 @@
1
- {
2
- "name": "wjk-util",
3
- "version": "0.0.11",
4
- "type": "module",
5
- "description": "一个包含常见 JavaScript 函数的实用库",
6
- "author": "wjk",
7
- "license": "MIT",
8
- "repository": {
9
- "type": "gitee",
10
- "url": "https://gitee.com/wjkfree/wjk-util.git"
11
- },
12
- "homepage": "https://gitee.com/wjkfree/wjk-util#readme",
13
- "keywords": [
14
- "utility",
15
- "functions",
16
- "typescript"
17
- ],
18
- "files": [
19
- "dist",
20
- "types"
21
- ],
22
- "main": "./dist/wjk-util.umd.js",
23
- "module": "./dist/wjk-util.es.js",
24
- "types": "./types/index.d.ts",
25
- "exports": {
26
- "types": "./types/index.d.ts",
27
- "import": "./dist/wjk-util.es.js",
28
- "require": "./dist/wjk-util.umd.js"
29
- },
30
- "sideEffects": false,
31
- "scripts": {
32
- "dev": "vite",
33
- "build": "vite build",
34
- "patch": "npm version patch",
35
- "publish": "npm publish"
36
- },
37
- "devDependencies": {
38
- "terser": "^5.46.0",
39
- "typescript": "~5.9.3",
40
- "vite": "^7.3.1",
41
- "vite-plugin-dts": "^4.5.4"
42
- }
43
- }
1
+ {
2
+ "name": "wjk-util",
3
+ "version": "0.0.12",
4
+ "type": "module",
5
+ "description": "一个包含常见 JavaScript 函数的实用库",
6
+ "author": "wjk",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "gitee",
10
+ "url": "https://gitee.com/wjkfree/wjk-util.git"
11
+ },
12
+ "homepage": "https://gitee.com/wjkfree/wjk-util#readme",
13
+ "keywords": [
14
+ "utility",
15
+ "functions",
16
+ "typescript"
17
+ ],
18
+ "files": [
19
+ "dist",
20
+ "types"
21
+ ],
22
+ "main": "./dist/wjk-util.umd.js",
23
+ "module": "./dist/wjk-util.es.js",
24
+ "types": "./types/index.d.ts",
25
+ "exports": {
26
+ "types": "./types/index.d.ts",
27
+ "import": "./dist/wjk-util.es.js",
28
+ "require": "./dist/wjk-util.umd.js"
29
+ },
30
+ "sideEffects": false,
31
+ "scripts": {
32
+ "dev": "vite",
33
+ "build": "vite build",
34
+ "patch": "npm version patch",
35
+ "publish": "npm publish",
36
+ "docs": "typedoc"
37
+ },
38
+ "devDependencies": {
39
+ "terser": "^5.46.0",
40
+ "typedoc": "^0.28.17",
41
+ "typedoc-plugin-markdown": "^4.10.0",
42
+ "typescript": "~5.9.3",
43
+ "vite": "^7.3.1",
44
+ "vite-plugin-dts": "^4.5.4"
45
+ }
46
+ }
@@ -4,6 +4,7 @@
4
4
  * @returns 去重后的数组
5
5
  * @example
6
6
  * unique([1, 2, 2, 3, 4, 4, 5]) // [1, 2, 3, 4, 5]
7
+ * @group Array
7
8
  */
8
9
  export declare function unique<T>(array: T[]): T[];
9
10
  /**
@@ -13,6 +14,7 @@ export declare function unique<T>(array: T[]): T[];
13
14
  * @returns 扁平化后的数组
14
15
  * @example
15
16
  * flatten([1, [2, [3, [4, [5]]]]]) // [1, 2, [3, [4, [5]]]]
17
+ * @group Array
16
18
  */
17
19
  export declare function flatten<T>(array: (T | T[])[], depth?: number): T[];
18
20
  /**
@@ -20,29 +22,42 @@ export declare function flatten<T>(array: (T | T[])[], depth?: number): T[];
20
22
  * @param array 待分块数组
21
23
  * @param size 每块大小
22
24
  * @returns 分块后的二维数组
25
+ * @example
26
+ * chunk([1, 2, 3, 4, 5, 6, 7, 8], 3) // [[1, 2, 3], [4, 5, 6], [7, 8]]
27
+ * @group Array
23
28
  */
24
29
  export declare function chunk<T>(array: T[], size?: number): T[][];
25
30
  /**
26
31
  * 获取数组中的最大值
27
32
  * @param array 数字数组
28
33
  * @returns 最大值
34
+ * @example
35
+ * max([1, 2, 3, 4, 5]) // 5
36
+ * @group Array
29
37
  */
30
38
  export declare function max(array: number[]): number | undefined;
31
39
  /**
32
40
  * 获取数组中的最小值
33
41
  * @param array 数字数组
34
42
  * @returns 最小值
43
+ * @group Array
35
44
  */
36
45
  export declare function min(array: number[]): number | undefined;
37
46
  /**
38
47
  * 数组求和
39
48
  * @param array 数字数组
40
49
  * @returns 求和结果
50
+ * @example
51
+ * sum([1, 2, 3, 4, 5]) // 15
52
+ * @group Array
41
53
  */
42
54
  export declare function sum(array: number[]): number;
43
55
  /**
44
56
  * 数组平均值
45
57
  * @param array 数字数组
46
58
  * @returns 平均值
59
+ * @example
60
+ * average([1, 2, 3, 4, 5]) // 3
61
+ * @group Array
47
62
  */
48
63
  export declare function average(array: number[]): number | undefined;
@@ -1,4 +1,52 @@
1
+ /**
2
+ * 上传Excel文件
3
+ * @returns 上传的Excel文件对象
4
+ * @example
5
+ * uploadExcelFile().then(file => {
6
+ * if (file) {
7
+ * console.log('上传成功', file);
8
+ * } else {
9
+ * console.log('上传失败');
10
+ * }
11
+ * });
12
+ * @group File
13
+ */
1
14
  export declare function uploadExcelFile(): Promise<File | undefined>;
15
+ /**
16
+ * 上传图片文件
17
+ * @returns 上传的图片文件对象
18
+ * @example
19
+ * uploadImageFile().then(file => {
20
+ * if (file) {
21
+ * console.log('上传成功', file);
22
+ * } else {
23
+ * console.log('上传失败');
24
+ * }
25
+ * });
26
+ * @group File
27
+ */
2
28
  export declare function uploadImageFile(): Promise<File | undefined>;
29
+ /**
30
+ * 上传模型文件
31
+ * @returns 上传的模型文件对象
32
+ * @example
33
+ * uploadModelFile().then(file => {
34
+ * if (file) {
35
+ * console.log('上传成功', file);
36
+ * } else {
37
+ * console.log('上传失败');
38
+ * }
39
+ * });
40
+ * @group File
41
+ */
3
42
  export declare function uploadModelFile(): Promise<File | undefined>;
43
+ /**
44
+ * 下载文件
45
+ * @param data 文件数据
46
+ * @param name 文件名
47
+ * @param mimeType 文件MIME类型,默认为Excel文件类型
48
+ * @example
49
+ * downloadFile('文件内容', 'example.xlsx');
50
+ * @group File
51
+ */
4
52
  export declare function downloadFile(data: string | Blob | ArrayBuffer, name: string, mimeType?: string): void;
@@ -5,5 +5,8 @@
5
5
  * @param rate 年利率
6
6
  * @param times 复利次数
7
7
  * @returns 复利金额
8
+ * @example
9
+ * compoundInterest(10000, 0.05, 5) // 12833.03
10
+ * @group Finance
8
11
  */
9
12
  export declare function compoundInterest(principal: number, rate: number, times: number): number;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 将 URL 参数转换为 JSON 对象
3
+ * @param url 包含参数的 URL 字符串
4
+ * @returns 转换后的 JSON 对象
5
+ * @example
6
+ * paramToJson('https://example.com?name=John&age=30') // { name: 'John', age: '30' }
7
+ * @group Link
8
+ */
9
+ export declare function paramToJson(url: string): Record<string, string>;
10
+ /**
11
+ * 将 JSON 对象转换为 URL 参数字符串
12
+ * @param json JSON 对象
13
+ * @returns 转换后的 URL 参数字符串
14
+ * @example
15
+ * jsonToParam({ name: 'John', age: 30 }) // 'name=John&age=30'
16
+ * @group Link
17
+ */
18
+ export declare function jsonToParam(json: Record<string, any>): string;
@@ -3,6 +3,9 @@
3
3
  * @param min 最小值
4
4
  * @param max 最大值
5
5
  * @returns 随机整数
6
+ * @example
7
+ * randomInt(1, 10) // 5
8
+ * @group Math
6
9
  */
7
10
  export declare function randomInt(min: number, max: number): number;
8
11
  /**
@@ -11,18 +14,27 @@ export declare function randomInt(min: number, max: number): number;
11
14
  * @param min 最小值
12
15
  * @param max 最大值
13
16
  * @returns 限制后的数值
17
+ * @example
18
+ * clamp(5, 1, 10) // 5
19
+ * @group Math
14
20
  */
15
21
  export declare function clamp(value: number, min: number, max: number): number;
16
22
  /**
17
23
  * 将角度转换为弧度
18
24
  * @param degrees 角度
19
25
  * @returns 弧度
26
+ * @example
27
+ * degreesToRadians(180) // 3.141592653589793
28
+ * @group Math
20
29
  */
21
30
  export declare function degreesToRadians(degrees: number): number;
22
31
  /**
23
32
  * 将弧度转换为角度
24
33
  * @param radians 弧度
25
34
  * @returns 角度
35
+ * @example
36
+ * radiansToDegrees(Math.PI) // 180
37
+ * @group Math
26
38
  */
27
39
  export declare function radiansToDegrees(radians: number): number;
28
40
  /**
@@ -30,6 +42,9 @@ export declare function radiansToDegrees(radians: number): number;
30
42
  * @param point1 点1 {x, y}
31
43
  * @param point2 点2 {x, y}
32
44
  * @returns 距离
45
+ * @example
46
+ * distance({ x: 0, y: 0 }, { x: 3, y: 4 }) // 5
47
+ * @group Math
33
48
  */
34
49
  export declare function distance(point1: {
35
50
  x: number;
@@ -43,5 +58,8 @@ export declare function distance(point1: {
43
58
  * @param value 数值
44
59
  * @param decimals 小数位数
45
60
  * @returns 四舍五入后的数值
61
+ * @example
62
+ * round(1.2345, 2) // 1.23
63
+ * @group Math
46
64
  */
47
65
  export declare function round(value: number, decimals: number): number;
@@ -1,31 +1,47 @@
1
1
  /**
2
2
  * 深拷贝对象
3
- * @param obj 待拷贝对象
4
- * @returns 拷贝后的对象
3
+ * @param obj - 需要深拷贝的对象
4
+ * @param hash - 用于处理循环引用的哈希表
5
+ * @returns 深拷贝后的对象
6
+ * @example
7
+ * deepClone({ a: 1, b: { c: 2 } }) // { a: 1, b: { c: 2 } }
8
+ * @group Object
5
9
  */
6
- export declare function deepClone<T>(obj: T): T;
10
+ export declare function deepClone<T>(obj: T, hash?: WeakMap<object, any>): T;
7
11
  /**
8
12
  * 合并对象
9
13
  * @param objects 待合并的对象
10
14
  * @returns 合并后的对象
15
+ * @example
16
+ * merge({ a: 1, b: 2 }, { b: 3, c: 4 }) // { a: 1, b: 3, c: 4 }
17
+ * @group Object
11
18
  */
12
19
  export declare function merge<T extends Record<string, any>>(...objects: Partial<T>[]): T;
13
20
  /**
14
21
  * 获取对象的所有键
15
22
  * @param obj 对象
16
23
  * @returns 键数组
24
+ * @example
25
+ * keys({ a: 1, b: 2 }) // ['a', 'b']
26
+ * @group Object
17
27
  */
18
28
  export declare function keys<T extends Record<string, any>>(obj: T): (keyof T)[];
19
29
  /**
20
30
  * 获取对象的所有值
21
31
  * @param obj 对象
22
32
  * @returns 值数组
33
+ * @example
34
+ * values({ a: 1, b: 2 }) // [1, 2]
35
+ * @group Object
23
36
  */
24
37
  export declare function values<T extends Record<string, any>>(obj: T): T[keyof T][];
25
38
  /**
26
39
  * 检查对象是否包含某个键
27
40
  * @param obj 对象
28
41
  * @param key 键名
29
- * @returns
42
+ * @returns 是否包含该键
43
+ * @example
44
+ * hasKey({ a: 1, b: 2 }, 'a') // true
45
+ * @group Object
30
46
  */
31
47
  export declare function hasKey<T extends Record<string, any>>(obj: T, key: PropertyKey): key is keyof T;
@@ -3,6 +3,10 @@
3
3
  * @param key 键
4
4
  * @param value 值
5
5
  * @param isSession 是否使用sessionStorage,默认false
6
+ * @example
7
+ * setStorage('token', '123456') // 存储token到localStorage
8
+ * setStorage('user', { id: 1, name: '张三' }, true) // 存储用户信息到sessionStorage
9
+ * @group Storage
6
10
  */
7
11
  export declare function setStorage<T>(key: string, value: T, isSession?: boolean): void;
8
12
  /**
@@ -10,16 +14,28 @@ export declare function setStorage<T>(key: string, value: T, isSession?: boolean
10
14
  * @param key 键
11
15
  * @param isSession 是否使用sessionStorage,默认false
12
16
  * @returns 存储的值
17
+ * @example
18
+ * getStorage('token') // '123456'
19
+ * getStorage('user', true) // { id: 1, name: '张三' }
20
+ * @group Storage
13
21
  */
14
22
  export declare function getStorage<T>(key: string, isSession?: boolean): T | null;
15
23
  /**
16
24
  * 删除本地存储
17
25
  * @param key 键
18
26
  * @param isSession 是否使用sessionStorage,默认false
27
+ * @example
28
+ * removeStorage('token') // 删除localStorage中的token
29
+ * removeStorage('user', true) // 删除sessionStorage中的user
30
+ * @group Storage
19
31
  */
20
32
  export declare function removeStorage(key: string, isSession?: boolean): void;
21
33
  /**
22
34
  * 清空本地存储
23
35
  * @param isSession 是否使用sessionStorage,默认false
36
+ * @example
37
+ * clearStorage() // 清空localStorage
38
+ * clearStorage(true) // 清空sessionStorage
39
+ * @group Storage
24
40
  */
25
41
  export declare function clearStorage(isSession?: boolean): void;
@@ -2,59 +2,154 @@
2
2
  * 检测变量类型
3
3
  * @param value 待检测的值
4
4
  * @returns 类型字符串
5
+ * @example
6
+ * getType({}) // 'object'
7
+ * getType([]) // 'array'
8
+ * getType('') // 'string'
9
+ * getType(0) // 'number'
10
+ * getType(true) // 'boolean'
11
+ * getType(null) // 'null'
12
+ * getType(undefined) // 'undefined'
13
+ * @group Type
5
14
  */
6
15
  export declare function getType(value: unknown): string;
7
16
  /**
8
17
  * 判断是否为数组
9
18
  * @param value 待检测的值
10
19
  * @returns
20
+ * @example
21
+ * isArray([]) // true
22
+ * isArray([1, 2, 3]) // true
23
+ * isArray({}) // false
24
+ * isArray('') // false
25
+ * isArray(0) // false
26
+ * isArray(true) // false
27
+ * isArray(null) // false
28
+ * isArray(undefined) // false
29
+ * @group Type
11
30
  */
12
31
  export declare function isArray(value: unknown): value is unknown[];
13
32
  /**
14
33
  * 判断是否为对象
15
34
  * @param value 待检测的值
16
35
  * @returns
36
+ * @example
37
+ * isObject({}) // true
38
+ * isObject({ a: 1, b: 2 }) // true
39
+ * isObject([]) // false
40
+ * isObject('') // false
41
+ * isObject(0) // false
42
+ * isObject(true) // false
43
+ * isObject(null) // false
44
+ * isObject(undefined) // false
45
+ * @group Type
17
46
  */
18
47
  export declare function isObject(value: unknown): value is Record<string, unknown>;
19
48
  /**
20
49
  * 判断是否为函数
21
50
  * @param value 待检测的值
22
51
  * @returns
52
+ * @example
53
+ * isFunction(() => {}) // true
54
+ * isFunction(function () {}) // true
55
+ * isFunction(class {}) // true
56
+ * isFunction({}) // false
57
+ * isFunction([]) // false
58
+ * isFunction('') // false
59
+ * isFunction(0) // false
60
+ * isFunction(true) // false
61
+ * isFunction(null) // false
62
+ * isFunction(undefined) // false
63
+ * @group Type
23
64
  */
24
65
  export declare function isFunction(value: unknown): value is Function;
25
66
  /**
26
67
  * 判断是否为字符串
27
68
  * @param value 待检测的值
28
69
  * @returns
70
+ * @example
71
+ * isString('') // true
72
+ * isString('hello') // true
73
+ * isString(0) // false
74
+ * isString(true) // false
75
+ * isString(null) // false
76
+ * isString(undefined) // false
77
+ * @group Type
29
78
  */
30
79
  export declare function isString(value: unknown): value is string;
31
80
  /**
32
81
  * 判断是否为数字
33
82
  * @param value 待检测的值
34
83
  * @returns
84
+ * @example
85
+ * isNumber(0) // true
86
+ * isNumber(123) // true
87
+ * isNumber(-123) // true
88
+ * isNumber(123.456) // true
89
+ * isNumber(-123.456) // true
90
+ * isNumber('123') // false
91
+ * isNumber('123.456') // false
92
+ * isNumber(true) // false
93
+ * isNumber(null) // false
94
+ * isNumber(undefined) // false
95
+ * @group Type
35
96
  */
36
97
  export declare function isNumber(value: unknown): value is number;
37
98
  /**
38
99
  * 判断是否为布尔值
39
100
  * @param value 待检测的值
40
101
  * @returns
102
+ * @example
103
+ * isBoolean(true) // true
104
+ * isBoolean(false) // true
105
+ * isBoolean(0) // false
106
+ * isBoolean(1) // false
107
+ * isBoolean('true') // false
108
+ * isBoolean('false') // false
109
+ * isBoolean(null) // false
110
+ * isBoolean(undefined) // false
111
+ * @group Type
41
112
  */
42
113
  export declare function isBoolean(value: unknown): value is boolean;
43
114
  /**
44
115
  * 判断是否为null
45
116
  * @param value 待检测的值
46
117
  * @returns
118
+ * @example
119
+ * isNull(null) // true
120
+ * isNull(undefined) // false
121
+ * isNull('') // false
122
+ * isNull(0) // false
123
+ * isNull(true) // false
124
+ * @group Type
47
125
  */
48
126
  export declare function isNull(value: unknown): value is null;
49
127
  /**
50
128
  * 判断是否为undefined
51
129
  * @param value 待检测的值
52
130
  * @returns
131
+ * @example
132
+ * isUndefined(undefined) // true
133
+ * isUndefined(null) // false
134
+ * isUndefined('') // false
135
+ * isUndefined(0) // false
136
+ * isUndefined(true) // false
137
+ * @group Type
53
138
  */
54
139
  export declare function isUndefined(value: unknown): value is undefined;
55
140
  /**
56
141
  * 判断是否为空(null, undefined, 空字符串, 空数组, 空对象)
57
142
  * @param value 待检测的值
58
143
  * @returns
144
+ * @example
145
+ * isEmpty(null) // true
146
+ * isEmpty(undefined) // true
147
+ * isEmpty('') // true
148
+ * isEmpty([]) // true
149
+ * isEmpty({}) // true
150
+ * isEmpty('hello') // false
151
+ * isEmpty([1, 2, 3]) // false
152
+ * isEmpty({ a: 1, b: 2 }) // false
153
+ * @group Type
59
154
  */
60
155
  export declare function isEmpty(value: unknown): boolean;