@lntvow/utils 2.1.16 → 2.1.17

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/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function S(t){return Array.isArray(t)?t:[t]}function C(t=0,e=1e6){return Math.random()*(e-t)+t}function P(t=0,e=1e6){return Math.floor(Math.random()*(e-t+1))+Math.floor(t)}function A(t,e={}){const{lowerCase:r=!0,upperCase:n=!0,number:i=!0}=e;r||n||i||w("getRandomString","lowerCase upperCase number 至少需要一个参数为true");let o="";r&&(o+="abcdefghijklmnopqrstuvwxyz"),n&&(o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),i&&(o+="0123456789");let g="";for(let p=0;p<t;p++){const N=Math.floor(Math.random()*o.length);g+=o.charAt(N)}return g}const h=Object.prototype.toString,c=t=>h.call(t);let f=null;function F(t){d(t)&&(f=t)}const I=(t,...e)=>{const r=e.length===0?"":e.length===1?e[0]:e;console.log(`%c ${t} `,"padding: 2px; border-radius: 3px; color: #fff; background: #000; font-weight: bold;",r),f&&f(t,r)},M=(...t)=>console.warn(...t),Z=(...t)=>console.error(...t),j=t=>c(t)==="[object Map]",R=t=>c(t)==="[object Set]",b=t=>c(t)==="[object Date]",m=t=>c(t)==="[object RegExp]",d=t=>typeof t=="function",U=t=>typeof t=="number",O=t=>typeof t=="string",D=t=>typeof t=="symbol",u=t=>t!==null&&typeof t=="object",L=t=>u(t)&&d(t.then)&&d(t.catch),s=t=>t==null,x=t=>t===void 0,T=t=>t===null,z=t=>t!=null,W=t=>typeof t=="boolean",l=Array.isArray,v=(t,e)=>Object.hasOwn(t,e),_=(t,e)=>t!==e;class $ extends Error{constructor(e){super(e),this.name="LntvowError"}}function w(t,e){throw new $(`[${t}] ${e}`)}function B(t,e){if(process.env.NODE_ENV!=="production"){const r=O(t)?new $(`[${t}] ${e}`):t;console.warn(r)}}function y(t){const e=new WeakMap;function r(n){if(b(n))return new Date(n);if(m(n))return new RegExp(n);if(u(n)){if(e.has(n))return e.get(n);let i={};if(l(n)){i=[],e.set(n,i);for(let o=0;o<n.length;o++)i[o]=r(n[o]);return i}e.set(n,i);for(const o in n)v(n,o)&&(i[o]=r(n[o]));return i}else return n}return r(t)}function E(t,e,r){return l(t)?V(t,e,r):K(t,e,r)}function K(t,e,r){const n=a(e,r);return Object.keys(t).forEach(o=>{s(e[o])?n[o]=a(t[o],r):n[o]=u(t[o])&&u(e[o])?E(t[o],e[o],r):a(e[o],r)}),n}function V(t,e,r){if(l(e)){const n=a(e,r);return n.push(...a(t,r)),n}else return a(t,r)}function a(t,e){const{isDeepClone:r=!0}=e||{};return r?y(t):t}function q(t,e=500){let r=null;return function(...n){r&&clearTimeout(r),r=setTimeout(()=>{t.apply(this,n)},e)}}function G(t,e=500){let r=null;return function(...n){if(s(r))return r=Date.now(),t.apply(this,n);{const i=Date.now();if(i-r>=e)return r=i,t.apply(this,n)}}}function H(...t){return t.reduce((e,r)=>function(...n){return r(e(...n))})}function J(...t){return t.reduce((e,r)=>function(...n){return e(r(...n))})}function Q(t){return/^(?:(?:\+|00)86)?1(?:(?:3\d)|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8\d)|(?:9[1589]))\d{8}$/.test(t)}function X(t){return/^([\w-])+@([\w-])+(\.[\w-])+/.test(t)}function Y(t){return/^[A-Z]+$/.test(t)}function k(t){return!s(t)&&/^[a-z]+$/.test(t)}function tt(t){return/^\d+$/.test(t)}function et(t){return/^-?\d{1,3}\.\d{6}$/.test(t)}function rt(t){return t===""}function nt(t){return!s(t)&&/^[\dA-Za-z\u4E00-\u9FA5]+$/.test(t)}function ot(t){return!s(t)&&/^[A-Za-z\u4E00-\u9FA5]+$/.test(t)}function it(t){return!s(t)&&/^[\d!"#$%&'()*+,./:;<=>?@A-Z[\\\]^_`{|}~]+$/.test(t)}function st(t){return/^[\dA-Z_]+$/.test(t)}function at(t){return/^[1-9]\d*$/.test(t)}function ut(t){return/^\d+$/.test(t)}function ct(t){return/^(0*[1-9]+\d*\.?\d*|0+\.\d*[1-9]+\d*)$/.test(t)}function dt(t){return/^-?(0|[1-9]\d*)$/.test(t)}function lt(t){return/^[1-9]\d*$/.test(t)}function ft(t){return/^(0|[1-9]\d*)$/.test(t)}function gt(t){return/^-([1-9]\d*)$/.test(t)}function pt(t){return/^(0|-(0|[1-9]\d*))$/.test(t)}function ht(t){return/^-?\d+(\.\d+)?$/.test(t)}function bt(t){return/^(0\.\d+|[1-9]\d*(\.\d+)?)$/.test(t)}function mt(t){return/^-\d+(\.\d+)?$/.test(t)}function Ot(t){return/^\d+(\.\d+)?$/.test(t)}function vt(t){return/^(-\d+(\.\d+)?$)|(0(\.0+)?)$/.test(t)}exports.castArray=S;exports.compose=H;exports.composeRight=J;exports.debounce=q;exports.debugWarn=B;exports.deepClone=y;exports.deepMerge=E;exports.error=Z;exports.getRandomFloat=C;exports.getRandomInteger=P;exports.getRandomString=A;exports.hasChanged=_;exports.hasOwn=v;exports.initLog=F;exports.isArray=l;exports.isBoolean=W;exports.isDate=b;exports.isDef=z;exports.isEmptyString=rt;exports.isFloat=ht;exports.isFunction=d;exports.isInteger=dt;exports.isMap=j;exports.isNegativeFloat=mt;exports.isNegativeFloatOrZero=vt;exports.isNegativeInteger=gt;exports.isNegativeIntegerOrZero=pt;exports.isNull=T;exports.isNumber=U;exports.isObject=u;exports.isPositiveFloat=bt;exports.isPositiveFloatOrZero=Ot;exports.isPositiveInteger=lt;exports.isPositiveIntegerOrZero=ft;exports.isPromise=L;exports.isRegExp=m;exports.isSet=R;exports.isString=O;exports.isSymbol=D;exports.isUndef=s;exports.isUndefined=x;exports.log=I;exports.objectToString=h;exports.throttle=G;exports.throwError=w;exports.toTypeString=c;exports.validatorChineseOrEnglish=ot;exports.validatorChineseOrEnglishOrNumber=nt;exports.validatorEmail=X;exports.validatorLatitudeOrLongitude=et;exports.validatorLowerCase=k;exports.validatorMobilePhone=Q;exports.validatorNumber=tt;exports.validatorPositiveFloat=ct;exports.validatorPositiveInt=at;exports.validatorPositiveIntAndZero=ut;exports.validatorUpperCase=Y;exports.validatorUppercaseOrNumbersOrSpecial=it;exports.validatorUppercaseOrNumbersOrUnderline=st;exports.warn=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function P(...t){return t.reduce((e,n)=>function(...r){return n(e(...r))})}function I(...t){return t.reduce((e,n)=>function(...r){return e(n(...r))})}function F(t,e=500){let n=null;return function(...r){n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,r)},e)}}const O=Object.prototype.toString,d=t=>O.call(t);let h=null;function M(t){p(t)&&(h=t)}const R=(t,...e)=>{const n=e.length===0?"":e.length===1?e[0]:e;console.log(`%c ${t} `,"padding: 2px; border-radius: 3px; color: #fff; background: #000; font-weight: bold;",n),h&&h(t,n)},A=(...t)=>console.warn(...t),Z=(...t)=>console.error(...t),j=t=>d(t)==="[object Map]",U=t=>d(t)==="[object Set]",$=t=>d(t)==="[object Date]",v=t=>d(t)==="[object RegExp]",p=t=>typeof t=="function",x=t=>typeof t=="number",w=t=>typeof t=="string",D=t=>typeof t=="symbol",u=t=>t!==null&&typeof t=="object",L=t=>u(t)&&p(t.then)&&p(t.catch),s=t=>t==null,T=t=>t===void 0,W=t=>t===null,q=t=>t!=null,z=t=>typeof t=="boolean",l=Array.isArray,m=(t,e)=>Object.hasOwn(t,e),B=(t,e)=>t!==e;function b(t){const e=new WeakMap;function n(r){if($(r))return new Date(r);if(v(r))return new RegExp(r);if(u(r)){if(e.has(r))return e.get(r);let i={};if(l(r)){i=[],e.set(r,i);for(let o=0;o<r.length;o++)i[o]=n(r[o]);return i}e.set(r,i);for(const o in r)m(r,o)&&(i[o]=n(r[o]));return i}else return r}return n(t)}function f(t,e,n){return l(t)?K(t,e,n):_(t,e,n)}function _(t,e,n){const r=c(e,n);return Object.keys(t).forEach(o=>{s(e[o])?r[o]=c(t[o],n):r[o]=u(t[o])&&u(e[o])?f(t[o],e[o],n):c(e[o],n)}),r}function K(t,e,n){if(l(e)){const r=c(e,n);return r.push(...c(t,n)),r}else return c(t,n)}function c(t,e){const{isDeepClone:n=!0}=e||{};return n?b(t):t}class y extends Error{constructor(e){super(e),this.name="LntvowError"}}function E(t,e){throw new y(`[${t}] ${e}`)}function Q(t,e){if(process.env.NODE_ENV!=="production"){const n=w(t)?new y(`[${t}] ${e}`):t;console.warn(n)}}function V(t,e){const n=b(t);return S(e).forEach(i=>{m(n,i)&&delete n[i]}),n}function G(t,e){const{decode:n}=f({decode:!0},e||{}),r={};t.startsWith("?")&&(t=t.slice(1)),t.includes("?")&&(t=t.slice(t.indexOf("?")+1));const i=t.split("&").filter(Boolean);for(const o of i){const[g,a]=o.split("=");r[g]=n?decodeURIComponent(a):a}return r}function C(t,e){const{encode:n}=f({encode:!0},e||{}),r=[];for(const i in t){const o=t[i];r.push(`${i}=${n?encodeURIComponent(o):o}`)}return r.join("&")}function H(t,e,n){const r=f({encode:!0},n||{}),i=C(e,r);return t.includes("?")?t.endsWith("?")||t.endsWith("&")?`${t}${i}`:`${t}&${i}`:`${t}?${i}`}const J={parse:G,stringify:C,appendQueryString:H};function X(t,e=500){let n=null;return function(...r){if(s(n))return n=Date.now(),t.apply(this,r);{const i=Date.now();if(i-n>=e)return n=i,t.apply(this,r)}}}function Y(t){return/^(?:(?:\+|00)86)?1(?:(?:3\d)|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8\d)|(?:9[1589]))\d{8}$/.test(t)}function k(t){return/^([\w-])+@([\w-])+(\.[\w-])+/.test(t)}function tt(t){return/^[A-Z]+$/.test(t)}function et(t){return!s(t)&&/^[a-z]+$/.test(t)}function nt(t){return/^\d+$/.test(t)}function rt(t){return/^-?\d{1,3}\.\d{6}$/.test(t)}function ot(t){return t===""}function it(t){return!s(t)&&/^[\dA-Za-z\u4E00-\u9FA5]+$/.test(t)}function st(t){return!s(t)&&/^[A-Za-z\u4E00-\u9FA5]+$/.test(t)}function ct(t){return!s(t)&&/^[\d!"#$%&'()*+,./:;<=>?@A-Z[\\\]^_`{|}~]+$/.test(t)}function at(t){return/^[\dA-Z_]+$/.test(t)}function ut(t){return/^[1-9]\d*$/.test(t)}function dt(t){return/^\d+$/.test(t)}function lt(t){return/^(0*[1-9]+\d*\.?\d*|0+\.\d*[1-9]+\d*)$/.test(t)}function S(t){return l(t)?t:[t]}function ft(){return`#${Math.random().toString(16).slice(2,8).padEnd(6,"0")}`}function gt(t=0,e=1e6){return Math.random()*(e-t)+t}function pt(t=0,e=1e6){return Math.floor(Math.random()*(e-t+1))+Math.floor(t)}function ht(t,e={}){const{lowerCase:n=!0,upperCase:r=!0,number:i=!0}=e;n||r||i||E("getRandomString","lowerCase upperCase number 至少需要一个参数为true");let o="";n&&(o+="abcdefghijklmnopqrstuvwxyz"),r&&(o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),i&&(o+="0123456789");let g="";for(let a=0;a<t;a++){const N=Math.floor(Math.random()*o.length);g+=o.charAt(N)}return g}function mt(t){return/^-?(0|[1-9]\d*)$/.test(t)}function bt(t){return/^[1-9]\d*$/.test(t)}function Ot(t){return/^(0|[1-9]\d*)$/.test(t)}function $t(t){return/^-([1-9]\d*)$/.test(t)}function vt(t){return/^(0|-(0|[1-9]\d*))$/.test(t)}function wt(t,e){return/^-?\d+(\.\d+)?$/.test(t)}function yt(t){return/^(0\.\d+|[1-9]\d*(\.\d+)?)$/.test(t)}function Et(t){return/^-\d+(\.\d+)?$/.test(t)}function Ct(t){return/^\d+(\.\d+)?$/.test(t)}function St(t){return/^(-\d+(\.\d+)?$)|(0(\.0+)?)$/.test(t)}exports.castArray=S;exports.compose=P;exports.composeRight=I;exports.debounce=F;exports.debugWarn=Q;exports.deepClone=b;exports.deepMerge=f;exports.error=Z;exports.excludeProperties=V;exports.getRandomColor=ft;exports.getRandomFloat=gt;exports.getRandomInteger=pt;exports.getRandomString=ht;exports.hasChanged=B;exports.hasOwn=m;exports.initLog=M;exports.isArray=l;exports.isBoolean=z;exports.isDate=$;exports.isDef=q;exports.isEmptyString=ot;exports.isFloat=wt;exports.isFunction=p;exports.isInteger=mt;exports.isMap=j;exports.isNegativeFloat=Et;exports.isNegativeFloatOrZero=St;exports.isNegativeInteger=$t;exports.isNegativeIntegerOrZero=vt;exports.isNull=W;exports.isNumber=x;exports.isObject=u;exports.isPositiveFloat=yt;exports.isPositiveFloatOrZero=Ct;exports.isPositiveInteger=bt;exports.isPositiveIntegerOrZero=Ot;exports.isPromise=L;exports.isRegExp=v;exports.isSet=U;exports.isString=w;exports.isSymbol=D;exports.isUndef=s;exports.isUndefined=T;exports.log=R;exports.objectToString=O;exports.qs=J;exports.throttle=X;exports.throwError=E;exports.toTypeString=d;exports.validatorChineseOrEnglish=st;exports.validatorChineseOrEnglishOrNumber=it;exports.validatorEmail=k;exports.validatorLatitudeOrLongitude=rt;exports.validatorLowerCase=et;exports.validatorMobilePhone=Y;exports.validatorNumber=nt;exports.validatorPositiveFloat=lt;exports.validatorPositiveInt=ut;exports.validatorPositiveIntAndZero=dt;exports.validatorUpperCase=tt;exports.validatorUppercaseOrNumbersOrSpecial=ct;exports.validatorUppercaseOrNumbersOrUnderline=at;exports.warn=A;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,18 @@
1
1
  export declare type AnyObj = Record<string, any>;
2
2
 
3
+ /**
4
+ * @description url追加查询字符串
5
+ * @param url url
6
+ * @param obj 查询字符串对象
7
+ * @return 追加后的url
8
+ * @example
9
+ * appendQueryString('https://www.baidu.com', { a: '1', b: '2' }) => 'https://www.baidu.com?a=1&b=2'
10
+ * appendQueryString('/pages/index?id=10', { test:'23' }) => '/pages/index?id=10&test=23'
11
+ */
12
+ declare function appendQueryString(url: string, obj: AnyObj, options?: StringifyOptions): string;
13
+
14
+ export declare type Arrayable<T> = T | T[];
15
+
3
16
  export declare function castArray<T = unknown>(target: T): (T & any[]) | T[];
4
17
 
5
18
  /**
@@ -46,6 +59,23 @@ export declare function deepMerge(template: AnyObj, source: AnyObj, options?: Op
46
59
 
47
60
  export declare const error: (...arg: unknown[]) => void;
48
61
 
62
+ /**
63
+ * @description 排除对象中的某些属性
64
+ * @param obj 目标对象
65
+ * @param propertiesToExclude 要排除的属性
66
+ * @return 排除后的对象
67
+ * @example excludeProperties({ a: 1, b: 2, c: 3 }, ['a', 'b']) => { c: 3 }
68
+ */
69
+ export declare function excludeProperties(obj: AnyObj, propertiesToExclude: Arrayable<string>): AnyObj;
70
+
71
+ export declare interface FloatOptions {
72
+ /**
73
+ * @description 是否包括整数
74
+ * @default false
75
+ */
76
+ integer?: boolean;
77
+ }
78
+
49
79
  /**
50
80
  * @description 获取随机颜色
51
81
  * @return 随机颜色
@@ -122,9 +152,8 @@ export declare function isEmptyString(value: string): boolean;
122
152
 
123
153
  /**
124
154
  * @description 校验是否为浮点数
125
- * @returns 如果是浮点数包括整数返回 true,否则返回 false
126
155
  */
127
- export declare function isFloat(val: string): boolean;
156
+ export declare function isFloat(val: string, floatOptions?: FloatOptions): boolean;
128
157
 
129
158
  export declare const isFunction: (val: unknown) => val is Function;
130
159
 
@@ -163,7 +192,6 @@ export declare const isObject: (val: unknown) => val is Record<any, any>;
163
192
 
164
193
  /**
165
194
  * @description 校验是否为大于零的浮点数
166
- * @returns 如果是大于零的浮点数返回 true,否则返回 false
167
195
  */
168
196
  export declare function isPositiveFloat(val: string): boolean;
169
197
 
@@ -208,6 +236,51 @@ declare interface Options {
208
236
  isDeepClone: boolean;
209
237
  }
210
238
 
239
+ /**
240
+ * @description 解析查询字符串
241
+ * @param str 转换的字符串
242
+ * @return 转换后的对象
243
+ * @example
244
+ * parse('a=1&b=2') => { a: '1', b: '2' }
245
+ * parse('?a=1&b=2') => { a: '1', b: '2' }
246
+ * parse('&a=1&b=2') => { a: '1', b: '2' }
247
+ * parse('from=%E4%B8%AD%E5%9B%BD') => { from: '中国' }
248
+ * parse('from=%E4%B8%AD%E5%9B%BD', { decode: false }) => { from: '%E4%B8%AD%E5%9B%BD' }
249
+ */
250
+ declare function parse(str: string, options?: ParseOptions): Record<string, string>;
251
+
252
+ export declare interface ParseOptions {
253
+ /**
254
+ * @description 是否解码
255
+ * @default true
256
+ */
257
+ decode?: boolean;
258
+ }
259
+
260
+ export declare const qs: {
261
+ parse: typeof parse;
262
+ stringify: typeof stringify;
263
+ appendQueryString: typeof appendQueryString;
264
+ };
265
+
266
+ /**
267
+ *@description 转换对象为查询字符串
268
+ * @param obj 转换的对象
269
+ * @return 转换后的字符串
270
+ * @example
271
+ * stringify({ a: '1', b: '2' }) => 'a=1&b=2'
272
+ * stringify({ from: '中国' }) => 'from=%E4%B8%AD%E5%9B%BD'
273
+ */
274
+ declare function stringify(obj: Record<string, any>, options?: StringifyOptions): string;
275
+
276
+ export declare interface StringifyOptions {
277
+ /**
278
+ * @description 是否编码
279
+ * @default true
280
+ */
281
+ encode?: boolean;
282
+ }
283
+
211
284
  /**
212
285
  * @description 节流函数
213
286
  * @param target 目标函数
package/dist/index.mjs CHANGED
@@ -1,260 +1,299 @@
1
- function j(t) {
2
- return Array.isArray(t) ? t : [t];
3
- }
4
- function S(t = 0, n = 1e6) {
5
- return Math.random() * (n - t) + t;
1
+ function R(...t) {
2
+ return t.reduce((n, e) => function(...r) {
3
+ return e(n(...r));
4
+ });
6
5
  }
7
- function F(t = 0, n = 1e6) {
8
- return Math.floor(Math.random() * (n - t + 1)) + Math.floor(t);
6
+ function F(...t) {
7
+ return t.reduce((n, e) => function(...r) {
8
+ return n(e(...r));
9
+ });
9
10
  }
10
- function Z(t, n = {}) {
11
- const { lowerCase: r = !0, upperCase: e = !0, number: i = !0 } = n;
12
- r || e || i || E("getRandomString", "lowerCase upperCase number 至少需要一个参数为true");
13
- let o = "";
14
- r && (o += "abcdefghijklmnopqrstuvwxyz"), e && (o += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), i && (o += "0123456789");
15
- let g = "";
16
- for (let p = 0; p < t; p++) {
17
- const $ = Math.floor(Math.random() * o.length);
18
- g += o.charAt($);
19
- }
20
- return g;
11
+ function P(t, n = 500) {
12
+ let e = null;
13
+ return function(...r) {
14
+ e && clearTimeout(e), e = setTimeout(() => {
15
+ t.apply(this, r);
16
+ }, n);
17
+ };
21
18
  }
22
- const b = Object.prototype.toString, f = (t) => b.call(t);
23
- let d = null;
24
- function x(t) {
25
- a(t) && (d = t);
19
+ const y = Object.prototype.toString, a = (t) => y.call(t);
20
+ let g = null;
21
+ function Z(t) {
22
+ h(t) && (g = t);
26
23
  }
27
- const I = (t, ...n) => {
28
- const r = n.length === 0 ? "" : n.length === 1 ? n[0] : n;
24
+ const v = (t, ...n) => {
25
+ const e = n.length === 0 ? "" : n.length === 1 ? n[0] : n;
29
26
  console.log(
30
27
  `%c ${t} `,
31
28
  "padding: 2px; border-radius: 3px; color: #fff; background: #000; font-weight: bold;",
32
- r
33
- ), d && d(t, r);
34
- }, P = (...t) => console.warn(...t), D = (...t) => console.error(...t), R = (t) => f(t) === "[object Map]", v = (t) => f(t) === "[object Set]", w = (t) => f(t) === "[object Date]", m = (t) => f(t) === "[object RegExp]", a = (t) => typeof t == "function", L = (t) => typeof t == "number", O = (t) => typeof t == "string", U = (t) => typeof t == "symbol", u = (t) => t !== null && typeof t == "object", T = (t) => u(t) && a(t.then) && a(t.catch), c = (t) => t == null, z = (t) => t === void 0, _ = (t) => t === null, K = (t) => t != null, W = (t) => typeof t == "boolean", l = Array.isArray, y = (t, n) => Object.hasOwn(t, n), B = (t, n) => t !== n;
35
- class h extends Error {
36
- constructor(n) {
37
- super(n), this.name = "LntvowError";
38
- }
39
- }
40
- function E(t, n) {
41
- throw new h(`[${t}] ${n}`);
42
- }
43
- function V(t, n) {
44
- if (process.env.NODE_ENV !== "production") {
45
- const r = O(t) ? new h(`[${t}] ${n}`) : t;
46
- console.warn(r);
47
- }
48
- }
49
- function A(t) {
29
+ e
30
+ ), g && g(t, e);
31
+ }, D = (...t) => console.warn(...t), U = (...t) => console.error(...t), L = (t) => a(t) === "[object Map]", W = (t) => a(t) === "[object Set]", E = (t) => a(t) === "[object Date]", C = (t) => a(t) === "[object RegExp]", h = (t) => typeof t == "function", T = (t) => typeof t == "number", A = (t) => typeof t == "string", z = (t) => typeof t == "symbol", f = (t) => t !== null && typeof t == "object", _ = (t) => f(t) && h(t.then) && h(t.catch), c = (t) => t == null, q = (t) => t === void 0, B = (t) => t === null, K = (t) => t != null, Q = (t) => typeof t == "boolean", l = Array.isArray, $ = (t, n) => Object.hasOwn(t, n), V = (t, n) => t !== n;
32
+ function b(t) {
50
33
  const n = /* @__PURE__ */ new WeakMap();
51
- function r(e) {
52
- if (w(e))
53
- return new Date(e);
54
- if (m(e))
55
- return new RegExp(e);
56
- if (u(e)) {
57
- if (n.has(e))
58
- return n.get(e);
34
+ function e(r) {
35
+ if (E(r))
36
+ return new Date(r);
37
+ if (C(r))
38
+ return new RegExp(r);
39
+ if (f(r)) {
40
+ if (n.has(r))
41
+ return n.get(r);
59
42
  let i = {};
60
- if (l(e)) {
61
- i = [], n.set(e, i);
62
- for (let o = 0; o < e.length; o++)
63
- i[o] = r(e[o]);
43
+ if (l(r)) {
44
+ i = [], n.set(r, i);
45
+ for (let o = 0; o < r.length; o++)
46
+ i[o] = e(r[o]);
64
47
  return i;
65
48
  }
66
- n.set(e, i);
67
- for (const o in e)
68
- y(e, o) && (i[o] = r(e[o]));
49
+ n.set(r, i);
50
+ for (const o in r)
51
+ $(r, o) && (i[o] = e(r[o]));
69
52
  return i;
70
53
  } else
71
- return e;
54
+ return r;
72
55
  }
73
- return r(t);
56
+ return e(t);
74
57
  }
75
- function C(t, n, r) {
76
- return l(t) ? N(t, n, r) : M(t, n, r);
58
+ function p(t, n, e) {
59
+ return l(t) ? S(t, n, e) : M(t, n, e);
77
60
  }
78
- function M(t, n, r) {
79
- const e = s(n, r);
61
+ function M(t, n, e) {
62
+ const r = s(n, e);
80
63
  return Object.keys(t).forEach((o) => {
81
- c(n[o]) ? e[o] = s(t[o], r) : e[o] = u(t[o]) && u(n[o]) ? C(t[o], n[o], r) : s(n[o], r);
82
- }), e;
64
+ c(n[o]) ? r[o] = s(t[o], e) : r[o] = f(t[o]) && f(n[o]) ? p(t[o], n[o], e) : s(n[o], e);
65
+ }), r;
83
66
  }
84
- function N(t, n, r) {
67
+ function S(t, n, e) {
85
68
  if (l(n)) {
86
- const e = s(n, r);
87
- return e.push(...s(t, r)), e;
69
+ const r = s(n, e);
70
+ return r.push(...s(t, e)), r;
88
71
  } else
89
- return s(t, r);
72
+ return s(t, e);
90
73
  }
91
74
  function s(t, n) {
92
- const { isDeepClone: r = !0 } = n || {};
93
- return r ? A(t) : t;
94
- }
95
- function q(t, n = 500) {
96
- let r = null;
97
- return function(...e) {
98
- r && clearTimeout(r), r = setTimeout(() => {
99
- t.apply(this, e);
100
- }, n);
101
- };
75
+ const { isDeepClone: e = !0 } = n || {};
76
+ return e ? b(t) : t;
102
77
  }
103
- function G(t, n = 500) {
104
- let r = null;
105
- return function(...e) {
106
- if (c(r))
107
- return r = Date.now(), t.apply(this, e);
78
+ class m extends Error {
79
+ constructor(n) {
80
+ super(n), this.name = "LntvowError";
81
+ }
82
+ }
83
+ function N(t, n) {
84
+ throw new m(`[${t}] ${n}`);
85
+ }
86
+ function G(t, n) {
87
+ if (process.env.NODE_ENV !== "production") {
88
+ const e = A(t) ? new m(`[${t}] ${n}`) : t;
89
+ console.warn(e);
90
+ }
91
+ }
92
+ function H(t, n) {
93
+ const e = b(t);
94
+ return I(n).forEach((i) => {
95
+ $(e, i) && delete e[i];
96
+ }), e;
97
+ }
98
+ function j(t, n) {
99
+ const { decode: e } = p({ decode: !0 }, n || {}), r = {};
100
+ t.startsWith("?") && (t = t.slice(1)), t.includes("?") && (t = t.slice(t.indexOf("?") + 1));
101
+ const i = t.split("&").filter(Boolean);
102
+ for (const o of i) {
103
+ const [d, u] = o.split("=");
104
+ r[d] = e ? decodeURIComponent(u) : u;
105
+ }
106
+ return r;
107
+ }
108
+ function w(t, n) {
109
+ const { encode: e } = p({ encode: !0 }, n || {}), r = [];
110
+ for (const i in t) {
111
+ const o = t[i];
112
+ r.push(`${i}=${e ? encodeURIComponent(o) : o}`);
113
+ }
114
+ return r.join("&");
115
+ }
116
+ function x(t, n, e) {
117
+ const r = p({ encode: !0 }, e || {}), i = w(n, r);
118
+ return t.includes("?") ? t.endsWith("?") || t.endsWith("&") ? `${t}${i}` : `${t}&${i}` : `${t}?${i}`;
119
+ }
120
+ const J = {
121
+ parse: j,
122
+ stringify: w,
123
+ appendQueryString: x
124
+ };
125
+ function X(t, n = 500) {
126
+ let e = null;
127
+ return function(...r) {
128
+ if (c(e))
129
+ return e = Date.now(), t.apply(this, r);
108
130
  {
109
131
  const i = Date.now();
110
- if (i - r >= n)
111
- return r = i, t.apply(this, e);
132
+ if (i - e >= n)
133
+ return e = i, t.apply(this, r);
112
134
  }
113
135
  };
114
136
  }
115
- function H(...t) {
116
- return t.reduce((n, r) => function(...e) {
117
- return r(n(...e));
118
- });
119
- }
120
- function J(...t) {
121
- return t.reduce((n, r) => function(...e) {
122
- return n(r(...e));
123
- });
124
- }
125
- function Q(t) {
137
+ function Y(t) {
126
138
  return /^(?:(?:\+|00)86)?1(?:(?:3\d)|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8\d)|(?:9[1589]))\d{8}$/.test(
127
139
  t
128
140
  );
129
141
  }
130
- function X(t) {
142
+ function k(t) {
131
143
  return /^([\w-])+@([\w-])+(\.[\w-])+/.test(t);
132
144
  }
133
- function Y(t) {
145
+ function tt(t) {
134
146
  return /^[A-Z]+$/.test(t);
135
147
  }
136
- function k(t) {
148
+ function nt(t) {
137
149
  return !c(t) && /^[a-z]+$/.test(t);
138
150
  }
139
- function tt(t) {
151
+ function et(t) {
140
152
  return /^\d+$/.test(t);
141
153
  }
142
- function nt(t) {
154
+ function rt(t) {
143
155
  return /^-?\d{1,3}\.\d{6}$/.test(t);
144
156
  }
145
- function rt(t) {
157
+ function ot(t) {
146
158
  return t === "";
147
159
  }
148
- function et(t) {
160
+ function it(t) {
149
161
  return !c(t) && /^[\dA-Za-z\u4E00-\u9FA5]+$/.test(t);
150
162
  }
151
- function ot(t) {
163
+ function st(t) {
152
164
  return !c(t) && /^[A-Za-z\u4E00-\u9FA5]+$/.test(t);
153
165
  }
154
- function it(t) {
166
+ function ct(t) {
155
167
  return !c(t) && /^[\d!"#$%&'()*+,./:;<=>?@A-Z[\\\]^_`{|}~]+$/.test(t);
156
168
  }
157
- function st(t) {
169
+ function ut(t) {
158
170
  return /^[\dA-Z_]+$/.test(t);
159
171
  }
160
- function ct(t) {
172
+ function dt(t) {
161
173
  return /^[1-9]\d*$/.test(t);
162
174
  }
163
- function ut(t) {
175
+ function ft(t) {
164
176
  return /^\d+$/.test(t);
165
177
  }
166
- function ft(t) {
178
+ function at(t) {
167
179
  return /^(0*[1-9]+\d*\.?\d*|0+\.\d*[1-9]+\d*)$/.test(t);
168
180
  }
169
- function dt(t) {
181
+ function I(t) {
182
+ return l(t) ? t : [t];
183
+ }
184
+ function lt() {
185
+ return `#${Math.random().toString(16).slice(2, 8).padEnd(6, "0")}`;
186
+ }
187
+ function pt(t = 0, n = 1e6) {
188
+ return Math.random() * (n - t) + t;
189
+ }
190
+ function gt(t = 0, n = 1e6) {
191
+ return Math.floor(Math.random() * (n - t + 1)) + Math.floor(t);
192
+ }
193
+ function ht(t, n = {}) {
194
+ const { lowerCase: e = !0, upperCase: r = !0, number: i = !0 } = n;
195
+ e || r || i || N("getRandomString", "lowerCase upperCase number 至少需要一个参数为true");
196
+ let o = "";
197
+ e && (o += "abcdefghijklmnopqrstuvwxyz"), r && (o += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), i && (o += "0123456789");
198
+ let d = "";
199
+ for (let u = 0; u < t; u++) {
200
+ const O = Math.floor(Math.random() * o.length);
201
+ d += o.charAt(O);
202
+ }
203
+ return d;
204
+ }
205
+ function $t(t) {
170
206
  return /^-?(0|[1-9]\d*)$/.test(t);
171
207
  }
172
- function at(t) {
208
+ function bt(t) {
173
209
  return /^[1-9]\d*$/.test(t);
174
210
  }
175
- function lt(t) {
211
+ function mt(t) {
176
212
  return /^(0|[1-9]\d*)$/.test(t);
177
213
  }
178
- function gt(t) {
214
+ function wt(t) {
179
215
  return /^-([1-9]\d*)$/.test(t);
180
216
  }
181
- function pt(t) {
217
+ function Ot(t) {
182
218
  return /^(0|-(0|[1-9]\d*))$/.test(t);
183
219
  }
184
- function ht(t) {
220
+ function yt(t, n) {
185
221
  return /^-?\d+(\.\d+)?$/.test(t);
186
222
  }
187
- function $t(t) {
223
+ function Et(t) {
188
224
  return /^(0\.\d+|[1-9]\d*(\.\d+)?)$/.test(t);
189
225
  }
190
- function bt(t) {
226
+ function Ct(t) {
191
227
  return /^-\d+(\.\d+)?$/.test(t);
192
228
  }
193
- function wt(t) {
229
+ function At(t) {
194
230
  return /^\d+(\.\d+)?$/.test(t);
195
231
  }
196
- function mt(t) {
232
+ function Mt(t) {
197
233
  return /^(-\d+(\.\d+)?$)|(0(\.0+)?)$/.test(t);
198
234
  }
199
235
  export {
200
- j as castArray,
201
- H as compose,
202
- J as composeRight,
203
- q as debounce,
204
- V as debugWarn,
205
- A as deepClone,
206
- C as deepMerge,
207
- D as error,
208
- S as getRandomFloat,
209
- F as getRandomInteger,
210
- Z as getRandomString,
211
- B as hasChanged,
212
- y as hasOwn,
213
- x as initLog,
236
+ I as castArray,
237
+ R as compose,
238
+ F as composeRight,
239
+ P as debounce,
240
+ G as debugWarn,
241
+ b as deepClone,
242
+ p as deepMerge,
243
+ U as error,
244
+ H as excludeProperties,
245
+ lt as getRandomColor,
246
+ pt as getRandomFloat,
247
+ gt as getRandomInteger,
248
+ ht as getRandomString,
249
+ V as hasChanged,
250
+ $ as hasOwn,
251
+ Z as initLog,
214
252
  l as isArray,
215
- W as isBoolean,
216
- w as isDate,
253
+ Q as isBoolean,
254
+ E as isDate,
217
255
  K as isDef,
218
- rt as isEmptyString,
219
- ht as isFloat,
220
- a as isFunction,
221
- dt as isInteger,
222
- R as isMap,
223
- bt as isNegativeFloat,
224
- mt as isNegativeFloatOrZero,
225
- gt as isNegativeInteger,
226
- pt as isNegativeIntegerOrZero,
227
- _ as isNull,
228
- L as isNumber,
229
- u as isObject,
230
- $t as isPositiveFloat,
231
- wt as isPositiveFloatOrZero,
232
- at as isPositiveInteger,
233
- lt as isPositiveIntegerOrZero,
234
- T as isPromise,
235
- m as isRegExp,
236
- v as isSet,
237
- O as isString,
238
- U as isSymbol,
256
+ ot as isEmptyString,
257
+ yt as isFloat,
258
+ h as isFunction,
259
+ $t as isInteger,
260
+ L as isMap,
261
+ Ct as isNegativeFloat,
262
+ Mt as isNegativeFloatOrZero,
263
+ wt as isNegativeInteger,
264
+ Ot as isNegativeIntegerOrZero,
265
+ B as isNull,
266
+ T as isNumber,
267
+ f as isObject,
268
+ Et as isPositiveFloat,
269
+ At as isPositiveFloatOrZero,
270
+ bt as isPositiveInteger,
271
+ mt as isPositiveIntegerOrZero,
272
+ _ as isPromise,
273
+ C as isRegExp,
274
+ W as isSet,
275
+ A as isString,
276
+ z as isSymbol,
239
277
  c as isUndef,
240
- z as isUndefined,
241
- I as log,
242
- b as objectToString,
243
- G as throttle,
244
- E as throwError,
245
- f as toTypeString,
246
- ot as validatorChineseOrEnglish,
247
- et as validatorChineseOrEnglishOrNumber,
248
- X as validatorEmail,
249
- nt as validatorLatitudeOrLongitude,
250
- k as validatorLowerCase,
251
- Q as validatorMobilePhone,
252
- tt as validatorNumber,
253
- ft as validatorPositiveFloat,
254
- ct as validatorPositiveInt,
255
- ut as validatorPositiveIntAndZero,
256
- Y as validatorUpperCase,
257
- it as validatorUppercaseOrNumbersOrSpecial,
258
- st as validatorUppercaseOrNumbersOrUnderline,
259
- P as warn
278
+ q as isUndefined,
279
+ v as log,
280
+ y as objectToString,
281
+ J as qs,
282
+ X as throttle,
283
+ N as throwError,
284
+ a as toTypeString,
285
+ st as validatorChineseOrEnglish,
286
+ it as validatorChineseOrEnglishOrNumber,
287
+ k as validatorEmail,
288
+ rt as validatorLatitudeOrLongitude,
289
+ nt as validatorLowerCase,
290
+ Y as validatorMobilePhone,
291
+ et as validatorNumber,
292
+ at as validatorPositiveFloat,
293
+ dt as validatorPositiveInt,
294
+ ft as validatorPositiveIntAndZero,
295
+ tt as validatorUpperCase,
296
+ ct as validatorUppercaseOrNumbersOrSpecial,
297
+ ut as validatorUppercaseOrNumbersOrUnderline,
298
+ D as warn
260
299
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lntvow/utils",
3
- "version": "2.1.16",
3
+ "version": "2.1.17",
4
4
  "description": "工具库",
5
5
  "type": "module",
6
6
  "license": "MIT",