UNPKG

my-uniapp-tools

Version:

一个简洁稳定的 uni-app 开发工具库,提供剪贴板、本地存储、导航、系统信息等常用功能

2 lines (1 loc) 2.55 kB
"use strict";var r=require("./core.cjs");const t=r.ErrorHandler.getInstance();function e(e){if(null===e||"object"!=typeof e)return e;try{return"undefined"!=typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){const n=e instanceof Error?e.message:String(e);throw t.handleError(new r.UniAppToolsError("DEEP_CLONE_ERROR",`深拷贝失败: ${n}`,"utils"),"utils"),new Error(`深拷贝失败: ${n}`)}}exports.debounce=function(r,t,e=!1){let n,o=null;const c=function(...c){const s=e&&!o;return o&&clearTimeout(o),o=setTimeout(()=>{o=null,e||(n=r.apply(this,c))},t),s&&(n=r.apply(this,c)),n};return c.cancel=()=>{o&&(clearTimeout(o),o=null)},c},exports.deepClone=e,exports.deepMerge=function(r,t){if(!r||"object"!=typeof r||Array.isArray(r))return e(t||{});if(!t||"object"!=typeof t||Array.isArray(t))return e(r);const n=e(r);return function r(t,n){for(const o in n)if(Object.prototype.hasOwnProperty.call(n,o)){const c=n[o],s=t[o];c&&"object"==typeof c&&!Array.isArray(c)&&s&&"object"==typeof s&&!Array.isArray(s)?r(s,c):t[o]=e(c)}}(n,t),n},exports.extractUrlParts=function(e){try{if("string"!=typeof e||!e.trim())throw new Error("URL不能为空");const r=new URL(e,"http://localhost"),t=r.pathname,n={};return r.searchParams.forEach((r,t)=>{n[t]=r}),{path:t,params:n}}catch(n){return t.handleError(new r.UniAppToolsError("EXTRACT_URL_PARTS_ERROR",`无效的URL: ${e}`,"utils"),"utils"),{path:"",params:{}}}},exports.getH5UrlParams=e=>{try{if("undefined"==typeof window||!window.location)throw new Error("不在 H5 浏览器环境中");const r=new URLSearchParams(window.location.search),t={};return r.forEach((r,e)=>{try{t[e]=decodeURIComponent(r)}catch(n){t[e]=r}}),e?Object.prototype.hasOwnProperty.call(t,e)?t[e]:null:t}catch(n){return t.handleError(new r.UniAppToolsError("GET_H5_URL_PARAMS_ERROR",`获取H5 URL参数失败: ${n instanceof Error?n.message:String(n)}`,"utils"),"utils"),e?null:{}}},exports.mergeObjects=function(r,t){if(!r||"object"!=typeof r||Array.isArray(r))return r;if(!t||0===Object.keys(t).length)return r;const e={...r};for(const n of Object.keys(r))t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},exports.throttle=function(r,t,e={}){let n,o=null,c=0;const{leading:s=!0,trailing:a=!0}=e,l=function(...e){const l=Date.now();c||s||(c=l);const i=t-(l-c);return i<=0||i>t?(o&&(clearTimeout(o),o=null),c=l,n=r.apply(this,e)):!o&&a&&(o=setTimeout(()=>{c=s?Date.now():0,o=null,n=r.apply(this,e)},i)),n};return l.cancel=()=>{o&&(clearTimeout(o),o=null),c=0},l};