@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.
Files changed (51) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/network/fetcher.d.ts +1 -2
  3. package/dist/network/index.d.ts +1 -1
  4. package/docs/assets/highlight.css +92 -99
  5. package/docs/assets/navigation.js +1 -1
  6. package/docs/assets/search.js +1 -1
  7. package/docs/functions/camelToSnake.html +178 -178
  8. package/docs/functions/capitalize.html +178 -178
  9. package/docs/functions/compactStr.html +182 -182
  10. package/docs/functions/debounce.html +187 -187
  11. package/docs/functions/decapitalize.html +178 -178
  12. package/docs/functions/fetcher.html +189 -189
  13. package/docs/functions/getRealURL.html +175 -175
  14. package/docs/functions/imageUrlToBase64.html +191 -187
  15. package/docs/functions/isFalsy.html +178 -178
  16. package/docs/functions/isNil.html +178 -178
  17. package/docs/functions/isObject.html +178 -178
  18. package/docs/functions/isPrimitive.html +178 -178
  19. package/docs/functions/isTruthy.html +178 -178
  20. package/docs/functions/loopUntil.html +180 -180
  21. package/docs/functions/mapKeys.html +180 -180
  22. package/docs/functions/mapValues.html +182 -182
  23. package/docs/functions/mergeObjects.html +184 -184
  24. package/docs/functions/randomInt.html +178 -178
  25. package/docs/functions/sleep.html +179 -179
  26. package/docs/functions/snakeToCamel.html +178 -178
  27. package/docs/functions/throttle.html +187 -187
  28. package/docs/functions/timeLog.html +178 -178
  29. package/docs/functions/to.html +180 -180
  30. package/docs/functions/withCache.html +185 -185
  31. package/docs/modules.html +174 -174
  32. package/docs/types/BunFetchOptions.html +176 -0
  33. package/docs/types/CamelToSnake.html +174 -174
  34. package/docs/types/Capitalize.html +174 -174
  35. package/docs/types/Decapitalize.html +174 -174
  36. package/docs/types/DeepMapKeys.html +174 -174
  37. package/docs/types/DeepMapValues.html +174 -174
  38. package/docs/types/Falsy.html +174 -174
  39. package/docs/types/ImageCompressionOptions.html +188 -184
  40. package/docs/types/Primitive.html +174 -174
  41. package/docs/types/RequestInit.html +174 -174
  42. package/docs/types/SetTtl.html +174 -174
  43. package/docs/types/SnakeToCamel.html +174 -174
  44. package/package.json +2 -2
  45. package/src/network/fetcher.ts +1 -1
  46. package/src/network/index.ts +1 -1
  47. package/dist/is/types.d.ts +0 -2
  48. package/dist/network.d.ts +0 -68
  49. package/dist/object/types.d.ts +0 -6
  50. package/dist/string/image.d.ts +0 -59
  51. 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 R=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 q=(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 K=(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 O=(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 I=(x,z,T)=>{let{filter:E}=T??{};if(Array.isArray(x)){let P=x.map((C,D)=>{if($(C))return I(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=I(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 S=async(x)=>{try{return[null,await x]}catch(z){return[z,void 0]}};var A=async(x)=>{let[z,T]=await S(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}},U=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")}`},V=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),o=Q.getContext("2d");if(!o)throw Error("\u65E0\u6CD5\u83B7\u53D6 OffscreenCanvas context");o.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 U(M,G,D,T)}catch{let Y=W(G);return`data:${D};base64,${Y}`}let J=W(G);return`data:${D};base64,${J}`};var N=(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 k=(x,z=300)=>{let T=null;return(...E)=>{if(T)clearTimeout(T);T=setTimeout(()=>{x(...E)},z)}};var p=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{q as withCache,S as to,m as timeLog,r as throttle,h as snakeToCamel,p as sleep,N as randomInt,Z as mergeObjects,I as mapValues,d as mapKeys,R as loopUntil,O as isTruthy,X as isPrimitive,$ as isObject,_ as isNil,K as isFalsy,V as imageUrlToBase64,A as getRealURL,c as fetcher,g as decapitalize,k as debounce,B as compactStr,w as capitalize,n as camelToSnake};
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 {};
@@ -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-hl-10: #000000FF;
23
- --dark-hl-10: #D4D4D4;
24
- --light-code-background: #FFFFFF;
25
- --dark-code-background: #1E1E1E;
26
- }
27
-
28
- @media (prefers-color-scheme: light) { :root {
29
- --hl-0: var(--light-hl-0);
30
- --hl-1: var(--light-hl-1);
31
- --hl-2: var(--light-hl-2);
32
- --hl-3: var(--light-hl-3);
33
- --hl-4: var(--light-hl-4);
34
- --hl-5: var(--light-hl-5);
35
- --hl-6: var(--light-hl-6);
36
- --hl-7: var(--light-hl-7);
37
- --hl-8: var(--light-hl-8);
38
- --hl-9: var(--light-hl-9);
39
- --hl-10: var(--light-hl-10);
40
- --code-background: var(--light-code-background);
41
- } }
42
-
43
- @media (prefers-color-scheme: dark) { :root {
44
- --hl-0: var(--dark-hl-0);
45
- --hl-1: var(--dark-hl-1);
46
- --hl-2: var(--dark-hl-2);
47
- --hl-3: var(--dark-hl-3);
48
- --hl-4: var(--dark-hl-4);
49
- --hl-5: var(--dark-hl-5);
50
- --hl-6: var(--dark-hl-6);
51
- --hl-7: var(--dark-hl-7);
52
- --hl-8: var(--dark-hl-8);
53
- --hl-9: var(--dark-hl-9);
54
- --hl-10: var(--dark-hl-10);
55
- --code-background: var(--dark-code-background);
56
- } }
57
-
58
- :root[data-theme='light'] {
59
- --hl-0: var(--light-hl-0);
60
- --hl-1: var(--light-hl-1);
61
- --hl-2: var(--light-hl-2);
62
- --hl-3: var(--light-hl-3);
63
- --hl-4: var(--light-hl-4);
64
- --hl-5: var(--light-hl-5);
65
- --hl-6: var(--light-hl-6);
66
- --hl-7: var(--light-hl-7);
67
- --hl-8: var(--light-hl-8);
68
- --hl-9: var(--light-hl-9);
69
- --hl-10: var(--light-hl-10);
70
- --code-background: var(--light-code-background);
71
- }
72
-
73
- :root[data-theme='dark'] {
74
- --hl-0: var(--dark-hl-0);
75
- --hl-1: var(--dark-hl-1);
76
- --hl-2: var(--dark-hl-2);
77
- --hl-3: var(--dark-hl-3);
78
- --hl-4: var(--dark-hl-4);
79
- --hl-5: var(--dark-hl-5);
80
- --hl-6: var(--dark-hl-6);
81
- --hl-7: var(--dark-hl-7);
82
- --hl-8: var(--dark-hl-8);
83
- --hl-9: var(--dark-hl-9);
84
- --hl-10: var(--dark-hl-10);
85
- --code-background: var(--dark-code-background);
86
- }
87
-
88
- .hl-0 { color: var(--hl-0); }
89
- .hl-1 { color: var(--hl-1); }
90
- .hl-2 { color: var(--hl-2); }
91
- .hl-3 { color: var(--hl-3); }
92
- .hl-4 { color: var(--hl-4); }
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 = "eJyNlF1v2jAUQP+Ln9HaoX5oPJZqEiqDCkJfpj245pZ49Vfjm21s2n+fICU4zo2915yco9jx9dc/DOEXsgmbcg2qsGvDX4GNmONYsgnDvQN/EbIPJWrFRuxVmi2bjC8/3X68Hv8dBR0nkSv5m6icSK5xD2KwErJ8B9wX7h5g7/uZFv1n5YmrGoY6DcyVPnPl93Hh+DBnzjTfwdRqV4H30pqlQ2lN72sGXsvVHyupJcofvc1uQa6wgrcaPM6MxLgRoFxlDVigigPN06x7OJyFPR7VXiFguY4g5+ClNuK4lRdicBZurjqZ/gEOI/QR7iasdlzgGisy0dJEYgvPtjaC/IYTS+rpZWwHZ7GTeQEUJZCreEcJeQe4Aq42qznln2kiIQ9TsalUYe+4h5srKhS/k8r5aI6DiiemOZIXUtHqQqqkuHz+DgJpt2FJnRjysDAw6lGkqGosB5besISurHUbg/T6W5gI6PguP+uaustjOb7COzp1hXcDUO2g2Wi6EfBEpuJma/XMkH+yhYmAVwCOko8gJZJXZOAPXpOdDJaVRVTkOTqxlC41zO2OtBuUki3p2YTyU2I55aIkv7eFvcC3f/16Em8="
1
+ window.navigationData = "eJyFlE1v2zAMhv8Lz8G8FVmH+dgUBYJm7ZA4uww7qAoba9WHZ9Hb0qH/fahdAbFASVc/fh9IFMnv/4DwL0ENV4O9QZLtfUfKWQ8L6AS1UAOdOvRVhN+1ZDQs4EnZA9QX7z9/+vDx4mURbLASBnXjdlY8Yaw6ZyXPSnSKhFbPsaUK5LnkgGuUKUt1zkqea8Tui+hu8RRXpwoIT6XKBMs3oQdMeSZYMt0I7U+xYfxYSq6NOOLKma5H75WziTdP/Fayf+2VUaR+x8WuAihVGrb4a0BPa6sodgRkFZUsO6SGdCyYvpayY3M2bmzV2HDOSh7JzsHjYOVYykqmZqG+XM40cQPPJXwLzxXOdELSjnpWEWifUkANB3xwg5XsGQLLxvPXOKRmca55fF1DyN7iDaXCUMMRaYtC77cbLh/odpNSQA3qdSr2vW7clfB4ueRE8T85nY/mOFh89Yay4Tul+eid0tng/cNPlMRnJ5aNx0MeGRKjHkmafqA2cfWJpeJQg3au21vi7x9grgYm3uUh7ivD7fI4HK/wWZxb4XMB9kecCs07ApeU0/TCHpxZW/YlA8w9pdeIHRceQS7IrsiQ95VPrcm5htreEWm2jwLLxZXBjTuy6Qnlwo7NuVQEavijqF0J2bLnDTA+8PLlx38s7iys"
@@ -1 +1 @@
1
- window.searchData = "eJydmdtu4zYQQP+FfRUSc+j7Y1MUCLrdLZLsvghGochMzEa3lehs0yD/vqAkW0NxnI7zlECjOaKoM6Q0fhV1+aMR6/hVPJliK9YwWS3kDCJRJLkWa3GV5Dq7K2+L5EmLSOzrTKyFfal0c4lDFzubZyISaZY0jW7EWoi36DSzMjbJzH8h8RA4i/ebTk8RcehMpq7+TKo/9EsTII+RjxC/Jdlen2B2sbOovydZ8zKitcfOolznyaO+KvOq1k1jyuJLZU1ZjEd54qx3ryQnMD1eJu1zy/oM8i9eFrpIJKqk1oV9Z/wnxvF9n2TGjqft3UEMKR8dwXjO/6pNbqx5Hit7PH7WE7zR3/e6sdeFsSMeipxFvNX2zmYjWHfwPI5bH+7KdrUY01DoXeYcOUQtSA/7Im3n+zLlLkoeMlg9MJC1fsx9y5PU3tqawh2DXNxW35f7IqXGdgjxUe/e6pa7WCLkg7bpTlN32ke4oEdtb3SSfb35RLCGIBdnXD1+rbO78tek0fMpAR2fwkY3/qKLiM3/L70e6LPJSMxnw64H03y5/0enluR0IT4qXJMwjbcyecC7em939FR1IS4qK8vqa2HJ+TrGuLB8tLEPqJyxsfug0X7uoRj7OYbp+lF3T4zkoTAXWSfFtsyvC8qOY4wLazKtKwLUHmdDqN0AsT6wI9hdXVqbUc4eQmyUyfWn8pEidRE2qKQYJTf9h7G7qyTdUfd0jFGwTSRMsdX/ivWreNa1exMRawEX6mIlIvFgdLZ1b/vddSK3VeW6tWNbpvv2301/2jed2rJ2J3dnX05EFE8iWFyAVJtNFB+S20B74MAYjrSJUkSxpBJlkCi9RBBRDFQiBIngJSoRxSpScKFAeokqSFRe4lRE8ZRKnAaJUy9xJqJ4RiXOgsSZlzgXUTynEudB4txLXIgoXlCJiyBx4SUuRRQvqcRlkLj0ElciildU4ipIXPkCOB/khEqVoTxyZE+rjySTCYF8g6TzQpIOyVAi6Vsk1SnjZeiR9EWS05PShypJ3yXpDJGkvzLUSfo+SWeJJB2WoVLSd0ouTlWcDK2SvlbSySLJGpChWdJXSzphJFkHMrRL+npBqxdZCxDqBb5e0OpF1gOEesFogWr1ImsCiDXK1wucMUBWBYR+ge8XOGWArAoIBQNfMHDKAJDJoWDgCwZOGSDthFAw8AWDVjDSTggNA98wcM4AaRiEhoFvGDhngDQMQsPAN0w5Z4A0TIWGKd8w5ZwB0jAVGqZ8w9TpBUyFhqnRNtgaRuqpiJ3QN0w5ZxSppwoNU75hyjmjSD1VaJjyDVPOGUXqqULD+kPti8+zrq3eXncvQHHc9Qps2XS9glfxd/9uNDm8aL2KiVi/vkVCKvf3bXgjao8eX4pcrB0H+nwecHLAyR435eG6ZkDjOgUIpxBvxgYdWmQDaDFwFizM0GpAo5mi0cyZGHqeYCBBP0/ccekqT6qn9ptt4KF54j2+nvPcf7INJHSPvCf30HUABsJsIPAe2bFxgqYaQeSSRXnUttZJ5r4RMGiOQCsWqG2GpEP/sjx0gAcqgvI8aJn7OrPlfd+DQUNEcsKEh2uCWZdLRJFMSmH8yVohBjAZZd9zQXKjRQV4OpqmGvotiITWE+DpaBrbN1oQBpcbz0nXSNl3TRbEQWUGvAdP1CqgEgNe1ZOVCqhGgFcjbeOkPPRVEAoJDbwqIZ8X8odHOf6WMDCQx7yb6ro3pvAdREWleEVVd78OmPZ3A1QUyGbJIzXaWutXFt4YedXZ95jQLaGZUUyG2+5tmXYtJjQcVBCy34AUr+CHFhMaGXruilfwromUufYS2sPQRCtesbveEgKgSVa8MncdpLTrLiEOmh3FKPNNJCpT6cwUWqzjzdvbT3XIt20=";
1
+ window.searchData = "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";