@nickyzj2023/utils 1.0.49 → 1.0.50
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.js +1 -1
- package/dist/network/fetcher.d.ts +1 -2
- package/dist/network/index.d.ts +1 -1
- package/docs/assets/highlight.css +92 -99
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/functions/camelToSnake.html +178 -178
- package/docs/functions/capitalize.html +178 -178
- package/docs/functions/compactStr.html +182 -182
- package/docs/functions/debounce.html +187 -187
- package/docs/functions/decapitalize.html +178 -178
- package/docs/functions/fetcher.html +189 -189
- package/docs/functions/getRealURL.html +175 -175
- package/docs/functions/imageUrlToBase64.html +191 -187
- package/docs/functions/isFalsy.html +178 -178
- package/docs/functions/isNil.html +178 -178
- package/docs/functions/isObject.html +178 -178
- package/docs/functions/isPrimitive.html +178 -178
- package/docs/functions/isTruthy.html +178 -178
- package/docs/functions/loopUntil.html +180 -180
- package/docs/functions/mapKeys.html +180 -180
- package/docs/functions/mapValues.html +182 -182
- package/docs/functions/mergeObjects.html +184 -184
- package/docs/functions/randomInt.html +178 -178
- package/docs/functions/sleep.html +179 -179
- package/docs/functions/snakeToCamel.html +178 -178
- package/docs/functions/throttle.html +187 -187
- package/docs/functions/timeLog.html +178 -178
- package/docs/functions/to.html +180 -180
- package/docs/functions/withCache.html +185 -185
- package/docs/modules.html +174 -174
- package/docs/types/BunFetchOptions.html +176 -0
- package/docs/types/CamelToSnake.html +174 -174
- package/docs/types/Capitalize.html +174 -174
- package/docs/types/Decapitalize.html +174 -174
- package/docs/types/DeepMapKeys.html +174 -174
- package/docs/types/DeepMapValues.html +174 -174
- package/docs/types/Falsy.html +174 -174
- package/docs/types/ImageCompressionOptions.html +188 -184
- package/docs/types/Primitive.html +174 -174
- package/docs/types/RequestInit.html +174 -174
- package/docs/types/SetTtl.html +174 -174
- package/docs/types/SnakeToCamel.html +174 -174
- package/package.json +2 -2
- package/src/network/fetcher.ts +1 -1
- package/src/network/index.ts +1 -1
- package/dist/is/types.d.ts +0 -2
- package/dist/network.d.ts +0 -68
- package/dist/object/types.d.ts +0 -6
- package/dist/string/image.d.ts +0 -59
- package/dist/string.d.ts +0 -13
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var m=(...x)=>{console.log(`${new Date().toLocaleTimeString()}`,...x)};var
|
|
2
|
+
var m=(...x)=>{console.log(`${new Date().toLocaleTimeString()}`,...x)};var O=async(x,z)=>{let{maxRetries:T=5,shouldStop:E=()=>!0}=z??{};for(let P=0;P<T;P++){let C=await x(P);if(E(C))return C}throw Error(`\u8D85\u8FC7\u4E86\u6700\u5927\u5FAA\u73AF\u6B21\u6570\uFF08${T}\uFF09\u4E14\u672A\u6EE1\u8DB3\u505C\u6B62\u6267\u884C\u6761\u4EF6`)};var R=(x,z=-1)=>{let T=new Map,E=(...P)=>{let C=JSON.stringify(P),D=Date.now(),G=T.get(C);if(G&&D<G.expiresAt)return G.value;let M=z===-1?1/0:D+z*1000,J={setTtl:(H)=>{M=D+H*1000}},Y=x.apply(J,P);if(Y instanceof Promise){let H=Y.then((Q)=>{return T.set(C,{value:Q,expiresAt:M}),Q});return T.set(C,{value:H,expiresAt:M}),H}return T.set(C,{value:Y,expiresAt:M}),Y};return E.clear=()=>T.clear(),E.updateTtl=(P)=>{z=P;let C=Date.now(),D=C+P*1000;for(let[G,M]of T.entries())if(M.expiresAt>C)M.expiresAt=D,T.set(G,M)},E};var q=(x)=>{return!x};var _=(x)=>{return x===null||x===void 0};var $=(x)=>{return x?.constructor===Object};var X=(x)=>{return x===null||x===void 0||typeof x!=="object"&&typeof x!=="function"};var K=(x)=>{return!!x};var d=(x,z)=>{if(Array.isArray(x))return x.map((T)=>d(T,z));if($(x))return Object.keys(x).reduce((E,P)=>{let C=z(P),D=x[P];return E[C]=d(D,z),E},{});return x};var o=(x,z,T)=>{let{filter:E}=T??{};if(Array.isArray(x)){let P=x.map((C,D)=>{if($(C))return o(C,z,T);return z(C,D)});if(E)return P.filter((C,D)=>E(C,D));return P}if($(x))return Object.keys(x).reduce((C,D)=>{let G=x[D],M;if($(G)||Array.isArray(G))M=o(G,z,T);else M=z(G,D);if(!E||E(M,D))C[D]=M;return C},{});return x};var Z=(x,z)=>{let T={...x};for(let E of Object.keys(z)){let P=T[E],C=z[E];if(X(P)&&X(C)){T[E]=C;continue}if(Array.isArray(P)&&Array.isArray(C)){T[E]=P.concat(C);continue}if($(P)&&$(C)){T[E]=Z(P,C);continue}T[E]=C}return T};var c=(x="",z={})=>{let T=async(E,P={})=>{let C=new URL(x?`${x}${E}`:E),{params:D,parser:G,...M}=Z(z,P);if($(D))Object.entries(D).forEach(([H,Q])=>{if(_(Q))return;C.searchParams.append(H,Q.toString())});if($(M.body))M.body=JSON.stringify(M.body),M.headers={...M.headers,"Content-Type":"application/json"};let J=await fetch(C,M);if(!J.ok){if(J.headers.get("Content-Type")?.startsWith("application/json"))throw await J.json();throw Error(J.statusText)}return await(G?.(J)??J.json())};return{get:(E,P)=>T(E,{...P,method:"GET"}),post:(E,P,C)=>T(E,{...C,method:"POST",body:P}),put:(E,P,C)=>T(E,{...C,method:"PUT",body:P}),delete:(E,P)=>T(E,{...P,method:"DELETE"})}};var I=async(x)=>{try{return[null,await x]}catch(z){return[z,void 0]}};var A=async(x)=>{let[z,T]=await I(fetch(x,{method:"HEAD",redirect:"manual"}));if(z)return x;return T.headers.get("location")||x};var W=(x)=>{let z=new Uint8Array(x),T="";for(let E=0;E<z.byteLength;E++)T+=String.fromCharCode(z[E]);return btoa(T)},L=async()=>{try{let z=await Function("modulePath","return import(modulePath)")("sharp");return z.default||z}catch{return null}},n=async(x,z,T,E)=>{let P=Buffer.from(z),C=x(P);if(T==="image/jpeg")C=C.jpeg({quality:Math.round(E*100)});else if(T==="image/png"){let G=Math.round((1-E)*9);C=C.png({compressionLevel:G})}let D=await C.toBuffer();return`data:${T};base64,${D.toString("base64")}`},U=async(x,z={})=>{let{quality:T=0.92,compressor:E,fetcher:P=fetch}=z;if(!x.startsWith("http"))throw Error("\u56FE\u7247\u5730\u5740\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934");let C=await P(x);if(!C.ok)throw Error(`\u83B7\u53D6\u56FE\u7247\u5931\u8D25: ${C.statusText}`);let D=C.headers.get("Content-Type")||"image/jpeg",G=await C.arrayBuffer();if(D!=="image/jpeg"&&D!=="image/png"){let Y=W(G);return`data:${D};base64,${Y}`}if(E)return await E(G,D,T);if(typeof OffscreenCanvas<"u"){let Y=null;try{let H=new Blob([G],{type:D});Y=await createImageBitmap(H);let Q=new OffscreenCanvas(Y.width,Y.height),S=Q.getContext("2d");if(!S)throw Error("\u65E0\u6CD5\u83B7\u53D6 OffscreenCanvas context");S.drawImage(Y,0,0),Y.close(),Y=null;let f=await(await Q.convertToBlob({type:D,quality:T})).arrayBuffer(),F=W(f);return`data:${D};base64,${F}`}catch{Y?.close();let H=W(G);return`data:${D};base64,${H}`}}let M=await L();if(M)try{return await n(M,G,D,T)}catch{let Y=W(G);return`data:${D};base64,${Y}`}let J=W(G);return`data:${D};base64,${J}`};var V=(x,z)=>{return Math.floor(Math.random()*(z-x+1))+x};var h=(x)=>{return x.replace(/_([a-zA-Z])/g,(z,T)=>T.toUpperCase())},N=(x)=>{return x.replace(/([A-Z])/g,(z,T)=>`_${T.toLowerCase()}`)},w=(x)=>{return x.charAt(0).toUpperCase()+x.slice(1)},g=(x)=>{return x.charAt(0).toLowerCase()+x.slice(1)};var B=(x="",z)=>{if(!x)return"";let{maxLength:T=1/0,disableNewLineReplace:E=!1,disableWhitespaceCollapse:P=!1,omission:C="..."}=z??{},D=x;if(!E)D=D.replace(/\r?\n/g,"\\n");else D=D.replace(/\r?\n/g," ");if(!P)D=D.replace(/\s+/g," ");if(D=D.trim(),T>0&&D.length>T)return D.slice(0,T)+C;return D};var p=(x,z=300)=>{let T=null;return(...E)=>{if(T)clearTimeout(T);T=setTimeout(()=>{x(...E)},z)}};var k=async(x=150)=>{return new Promise((z)=>{setTimeout(z,x)})};var r=(x,z=300)=>{let T=null;return function(...E){if(!T)T=setTimeout(()=>{T=null,x.apply(this,E)},z)}};export{R as withCache,I as to,m as timeLog,r as throttle,h as snakeToCamel,k as sleep,V as randomInt,Z as mergeObjects,o as mapValues,d as mapKeys,O as loopUntil,K as isTruthy,X as isPrimitive,$ as isObject,_ as isNil,q as isFalsy,U as imageUrlToBase64,A as getRealURL,c as fetcher,g as decapitalize,p as debounce,B as compactStr,w as capitalize,N as camelToSnake};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type BunFetchOptions = {
|
|
1
|
+
export type BunFetchOptions = {
|
|
2
2
|
/** 代理服务器配置(仅 Bun 支持) */
|
|
3
3
|
proxy?: string;
|
|
4
4
|
};
|
|
@@ -54,4 +54,3 @@ export declare const fetcher: (baseURL?: string, baseOptions?: RequestInit) => {
|
|
|
54
54
|
put: <T>(url: string, body: any, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
|
|
55
55
|
delete: <T>(url: string, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
|
|
56
56
|
};
|
|
57
|
-
export {};
|
package/dist/network/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { fetcher, type RequestInit } from "./fetcher";
|
|
1
|
+
export { type BunFetchOptions, fetcher, type RequestInit } from "./fetcher";
|
|
2
2
|
export { getRealURL } from "./getRealURL";
|
|
3
3
|
export { type ImageCompressionOptions, imageUrlToBase64 } from "./image";
|
|
4
4
|
export { to } from "./to";
|
|
@@ -1,99 +1,92 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--light-hl-0: #008000;
|
|
3
|
-
--dark-hl-0: #6A9955;
|
|
4
|
-
--light-hl-1: #795E26;
|
|
5
|
-
--dark-hl-1: #DCDCAA;
|
|
6
|
-
--light-hl-2: #000000;
|
|
7
|
-
--dark-hl-2: #D4D4D4;
|
|
8
|
-
--light-hl-3: #A31515;
|
|
9
|
-
--dark-hl-3: #CE9178;
|
|
10
|
-
--light-hl-4: #AF00DB;
|
|
11
|
-
--dark-hl-4: #C586C0;
|
|
12
|
-
--light-hl-5: #001080;
|
|
13
|
-
--dark-hl-5: #9CDCFE;
|
|
14
|
-
--light-hl-6: #0000FF;
|
|
15
|
-
--dark-hl-6: #569CD6;
|
|
16
|
-
--light-hl-7: #0070C1;
|
|
17
|
-
--dark-hl-7: #4FC1FF;
|
|
18
|
-
--light-hl-8: #267F99;
|
|
19
|
-
--dark-hl-8: #4EC9B0;
|
|
20
|
-
--light-hl-9: #098658;
|
|
21
|
-
--dark-hl-9: #B5CEA8;
|
|
22
|
-
--light-
|
|
23
|
-
--dark-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
--hl-
|
|
30
|
-
--hl-
|
|
31
|
-
--hl-
|
|
32
|
-
--hl-
|
|
33
|
-
--hl-
|
|
34
|
-
--hl-
|
|
35
|
-
--hl-
|
|
36
|
-
--hl-
|
|
37
|
-
--
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
--hl-
|
|
45
|
-
--hl-
|
|
46
|
-
--hl-
|
|
47
|
-
--hl-
|
|
48
|
-
--hl-
|
|
49
|
-
--hl-
|
|
50
|
-
--hl-
|
|
51
|
-
--
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
--
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
:
|
|
59
|
-
--hl-
|
|
60
|
-
--hl-
|
|
61
|
-
--hl-
|
|
62
|
-
--hl-
|
|
63
|
-
--hl-
|
|
64
|
-
--hl-
|
|
65
|
-
--
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
--hl-
|
|
70
|
-
--
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
:
|
|
74
|
-
--hl-
|
|
75
|
-
--hl-
|
|
76
|
-
--hl-
|
|
77
|
-
--hl-
|
|
78
|
-
--hl-
|
|
79
|
-
--
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.hl-
|
|
89
|
-
.hl-
|
|
90
|
-
.hl-
|
|
91
|
-
.hl-
|
|
92
|
-
|
|
93
|
-
.hl-5 { color: var(--hl-5); }
|
|
94
|
-
.hl-6 { color: var(--hl-6); }
|
|
95
|
-
.hl-7 { color: var(--hl-7); }
|
|
96
|
-
.hl-8 { color: var(--hl-8); }
|
|
97
|
-
.hl-9 { color: var(--hl-9); }
|
|
98
|
-
.hl-10 { color: var(--hl-10); }
|
|
99
|
-
pre, code { background: var(--code-background); }
|
|
1
|
+
:root {
|
|
2
|
+
--light-hl-0: #008000;
|
|
3
|
+
--dark-hl-0: #6A9955;
|
|
4
|
+
--light-hl-1: #795E26;
|
|
5
|
+
--dark-hl-1: #DCDCAA;
|
|
6
|
+
--light-hl-2: #000000;
|
|
7
|
+
--dark-hl-2: #D4D4D4;
|
|
8
|
+
--light-hl-3: #A31515;
|
|
9
|
+
--dark-hl-3: #CE9178;
|
|
10
|
+
--light-hl-4: #AF00DB;
|
|
11
|
+
--dark-hl-4: #C586C0;
|
|
12
|
+
--light-hl-5: #001080;
|
|
13
|
+
--dark-hl-5: #9CDCFE;
|
|
14
|
+
--light-hl-6: #0000FF;
|
|
15
|
+
--dark-hl-6: #569CD6;
|
|
16
|
+
--light-hl-7: #0070C1;
|
|
17
|
+
--dark-hl-7: #4FC1FF;
|
|
18
|
+
--light-hl-8: #267F99;
|
|
19
|
+
--dark-hl-8: #4EC9B0;
|
|
20
|
+
--light-hl-9: #098658;
|
|
21
|
+
--dark-hl-9: #B5CEA8;
|
|
22
|
+
--light-code-background: #FFFFFF;
|
|
23
|
+
--dark-code-background: #1E1E1E;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@media (prefers-color-scheme: light) { :root {
|
|
27
|
+
--hl-0: var(--light-hl-0);
|
|
28
|
+
--hl-1: var(--light-hl-1);
|
|
29
|
+
--hl-2: var(--light-hl-2);
|
|
30
|
+
--hl-3: var(--light-hl-3);
|
|
31
|
+
--hl-4: var(--light-hl-4);
|
|
32
|
+
--hl-5: var(--light-hl-5);
|
|
33
|
+
--hl-6: var(--light-hl-6);
|
|
34
|
+
--hl-7: var(--light-hl-7);
|
|
35
|
+
--hl-8: var(--light-hl-8);
|
|
36
|
+
--hl-9: var(--light-hl-9);
|
|
37
|
+
--code-background: var(--light-code-background);
|
|
38
|
+
} }
|
|
39
|
+
|
|
40
|
+
@media (prefers-color-scheme: dark) { :root {
|
|
41
|
+
--hl-0: var(--dark-hl-0);
|
|
42
|
+
--hl-1: var(--dark-hl-1);
|
|
43
|
+
--hl-2: var(--dark-hl-2);
|
|
44
|
+
--hl-3: var(--dark-hl-3);
|
|
45
|
+
--hl-4: var(--dark-hl-4);
|
|
46
|
+
--hl-5: var(--dark-hl-5);
|
|
47
|
+
--hl-6: var(--dark-hl-6);
|
|
48
|
+
--hl-7: var(--dark-hl-7);
|
|
49
|
+
--hl-8: var(--dark-hl-8);
|
|
50
|
+
--hl-9: var(--dark-hl-9);
|
|
51
|
+
--code-background: var(--dark-code-background);
|
|
52
|
+
} }
|
|
53
|
+
|
|
54
|
+
:root[data-theme='light'] {
|
|
55
|
+
--hl-0: var(--light-hl-0);
|
|
56
|
+
--hl-1: var(--light-hl-1);
|
|
57
|
+
--hl-2: var(--light-hl-2);
|
|
58
|
+
--hl-3: var(--light-hl-3);
|
|
59
|
+
--hl-4: var(--light-hl-4);
|
|
60
|
+
--hl-5: var(--light-hl-5);
|
|
61
|
+
--hl-6: var(--light-hl-6);
|
|
62
|
+
--hl-7: var(--light-hl-7);
|
|
63
|
+
--hl-8: var(--light-hl-8);
|
|
64
|
+
--hl-9: var(--light-hl-9);
|
|
65
|
+
--code-background: var(--light-code-background);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:root[data-theme='dark'] {
|
|
69
|
+
--hl-0: var(--dark-hl-0);
|
|
70
|
+
--hl-1: var(--dark-hl-1);
|
|
71
|
+
--hl-2: var(--dark-hl-2);
|
|
72
|
+
--hl-3: var(--dark-hl-3);
|
|
73
|
+
--hl-4: var(--dark-hl-4);
|
|
74
|
+
--hl-5: var(--dark-hl-5);
|
|
75
|
+
--hl-6: var(--dark-hl-6);
|
|
76
|
+
--hl-7: var(--dark-hl-7);
|
|
77
|
+
--hl-8: var(--dark-hl-8);
|
|
78
|
+
--hl-9: var(--dark-hl-9);
|
|
79
|
+
--code-background: var(--dark-code-background);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.hl-0 { color: var(--hl-0); }
|
|
83
|
+
.hl-1 { color: var(--hl-1); }
|
|
84
|
+
.hl-2 { color: var(--hl-2); }
|
|
85
|
+
.hl-3 { color: var(--hl-3); }
|
|
86
|
+
.hl-4 { color: var(--hl-4); }
|
|
87
|
+
.hl-5 { color: var(--hl-5); }
|
|
88
|
+
.hl-6 { color: var(--hl-6); }
|
|
89
|
+
.hl-7 { color: var(--hl-7); }
|
|
90
|
+
.hl-8 { color: var(--hl-8); }
|
|
91
|
+
.hl-9 { color: var(--hl-9); }
|
|
92
|
+
pre, code { background: var(--code-background); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "
|
|
1
|
+
window.navigationData = "eJyFlE1v2zAMhv8Lz8G8FVmH+dgUBYJm7ZA4uww7qAoba9WHZ9Hb0qH/fahdAbFASVc/fh9IFMnv/4DwL0ENV4O9QZLtfUfKWQ8L6AS1UAOdOvRVhN+1ZDQs4EnZA9QX7z9/+vDx4mURbLASBnXjdlY8Yaw6ZyXPSnSKhFbPsaUK5LnkgGuUKUt1zkqea8Tui+hu8RRXpwoIT6XKBMs3oQdMeSZYMt0I7U+xYfxYSq6NOOLKma5H75WziTdP/Fayf+2VUaR+x8WuAihVGrb4a0BPa6sodgRkFZUsO6SGdCyYvpayY3M2bmzV2HDOSh7JzsHjYOVYykqmZqG+XM40cQPPJXwLzxXOdELSjnpWEWifUkANB3xwg5XsGQLLxvPXOKRmca55fF1DyN7iDaXCUMMRaYtC77cbLh/odpNSQA3qdSr2vW7clfB4ueRE8T85nY/mOFh89Yay4Tul+eid0tng/cNPlMRnJ5aNx0MeGRKjHkmafqA2cfWJpeJQg3au21vi7x9grgYm3uUh7ivD7fI4HK/wWZxb4XMB9kecCs07ApeU0/TCHpxZW/YlA8w9pdeIHRceQS7IrsiQ95VPrcm5htreEWm2jwLLxZXBjTuy6Qnlwo7NuVQEavijqF0J2bLnDTA+8PLlx38s7iys"
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "
|
|
1
|
+
window.searchData = "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";
|