@nickyzj2023/utils 1.0.8 → 1.0.10

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/README.md CHANGED
@@ -1,35 +1,35 @@
1
- 男生自用全新前端工具库
2
-
3
- 安装到你的前端项目里:
4
-
5
- ```bash
6
- # npm
7
- npm install @nickyzj2023/utils
8
-
9
- # yarn
10
- yarn add @nickyzj2023/utils
11
-
12
- # pnpm
13
- pnpm add @nickyzj2023/utils
14
-
15
- # bun
16
- bun add @nickyzj2023/utils
17
- ```
18
-
19
- 使用方式:
20
-
21
- ```typescript
22
- import { fetcher, to } from "@nickyzj2023/utils";
23
-
24
- const api = fetcher("https://api.example.com");
25
-
26
- const [error, data] = await to(api.get<Blog>("/blogs/hello-world"));
27
- if (error) {
28
- console.error(error);
29
- return;
30
- }
31
-
32
- console.log(data);
33
- ```
34
-
35
- This project was created using `bun init` in bun v1.3.2. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
1
+ 男生自用全新前端工具库
2
+
3
+ 安装到你的前端项目里:
4
+
5
+ ```bash
6
+ # npm
7
+ npm install @nickyzj2023/utils
8
+
9
+ # yarn
10
+ yarn add @nickyzj2023/utils
11
+
12
+ # pnpm
13
+ pnpm add @nickyzj2023/utils
14
+
15
+ # bun
16
+ bun add @nickyzj2023/utils
17
+ ```
18
+
19
+ 使用方式:
20
+
21
+ ```typescript
22
+ import { fetcher, to } from "@nickyzj2023/utils";
23
+
24
+ const api = fetcher("https://api.example.com");
25
+
26
+ const [error, data] = await to(api.get<Blog>("/blogs/hello-world"));
27
+ if (error) {
28
+ console.error(error);
29
+ return;
30
+ }
31
+
32
+ console.log(data);
33
+ ```
34
+
35
+ This project was created using `bun init` in bun v1.3.2. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
package/bun.lock CHANGED
@@ -1,73 +1,73 @@
1
- {
2
- "lockfileVersion": 1,
3
- "configVersion": 1,
4
- "workspaces": {
5
- "": {
6
- "name": "@nickyzj2023/utils",
7
- "devDependencies": {
8
- "@types/bun": "latest",
9
- "typedoc": "^0.28.14",
10
- },
11
- "peerDependencies": {
12
- "typescript": "^5",
13
- },
14
- },
15
- },
16
- "packages": {
17
- "@gerrit0/mini-shiki": ["@gerrit0/mini-shiki@3.15.0", "", { "dependencies": { "@shikijs/engine-oniguruma": "^3.15.0", "@shikijs/langs": "^3.15.0", "@shikijs/themes": "^3.15.0", "@shikijs/types": "^3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-L5IHdZIDa4bG4yJaOzfasOH/o22MCesY0mx+n6VATbaiCtMeR59pdRqYk4bEiQkIHfxsHPNgdi7VJlZb2FhdMQ=="],
18
-
19
- "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA=="],
20
-
21
- "@shikijs/langs": ["@shikijs/langs@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A=="],
22
-
23
- "@shikijs/themes": ["@shikijs/themes@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ=="],
24
-
25
- "@shikijs/types": ["@shikijs/types@3.15.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw=="],
26
-
27
- "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
28
-
29
- "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="],
30
-
31
- "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
32
-
33
- "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
34
-
35
- "@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="],
36
-
37
- "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
38
-
39
- "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
40
-
41
- "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
42
-
43
- "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
44
-
45
- "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="],
46
-
47
- "csstype": ["csstype@3.2.2", "", {}, "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g=="],
48
-
49
- "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
50
-
51
- "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="],
52
-
53
- "lunr": ["lunr@2.3.9", "", {}, "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="],
54
-
55
- "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="],
56
-
57
- "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="],
58
-
59
- "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
60
-
61
- "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="],
62
-
63
- "typedoc": ["typedoc@0.28.14", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "yaml": "^2.8.1" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA=="],
64
-
65
- "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="],
66
-
67
- "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="],
68
-
69
- "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
70
-
71
- "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="],
72
- }
73
- }
1
+ {
2
+ "lockfileVersion": 1,
3
+ "configVersion": 1,
4
+ "workspaces": {
5
+ "": {
6
+ "name": "@nickyzj2023/utils",
7
+ "devDependencies": {
8
+ "@types/bun": "latest",
9
+ "typedoc": "^0.28.14",
10
+ },
11
+ "peerDependencies": {
12
+ "typescript": "^5",
13
+ },
14
+ },
15
+ },
16
+ "packages": {
17
+ "@gerrit0/mini-shiki": ["@gerrit0/mini-shiki@3.15.0", "", { "dependencies": { "@shikijs/engine-oniguruma": "^3.15.0", "@shikijs/langs": "^3.15.0", "@shikijs/themes": "^3.15.0", "@shikijs/types": "^3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-L5IHdZIDa4bG4yJaOzfasOH/o22MCesY0mx+n6VATbaiCtMeR59pdRqYk4bEiQkIHfxsHPNgdi7VJlZb2FhdMQ=="],
18
+
19
+ "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA=="],
20
+
21
+ "@shikijs/langs": ["@shikijs/langs@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A=="],
22
+
23
+ "@shikijs/themes": ["@shikijs/themes@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ=="],
24
+
25
+ "@shikijs/types": ["@shikijs/types@3.15.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw=="],
26
+
27
+ "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
28
+
29
+ "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="],
30
+
31
+ "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
32
+
33
+ "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
34
+
35
+ "@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="],
36
+
37
+ "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
38
+
39
+ "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
40
+
41
+ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
42
+
43
+ "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
44
+
45
+ "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="],
46
+
47
+ "csstype": ["csstype@3.2.2", "", {}, "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g=="],
48
+
49
+ "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
50
+
51
+ "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="],
52
+
53
+ "lunr": ["lunr@2.3.9", "", {}, "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="],
54
+
55
+ "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="],
56
+
57
+ "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="],
58
+
59
+ "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
60
+
61
+ "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="],
62
+
63
+ "typedoc": ["typedoc@0.28.14", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "yaml": "^2.8.1" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA=="],
64
+
65
+ "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="],
66
+
67
+ "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="],
68
+
69
+ "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
70
+
71
+ "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="],
72
+ }
73
+ }
package/dist/dom.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- /**
2
- * 附带时间的 console.log
3
- * @param args
4
- *
5
- * @example
6
- * timeLog("Hello", "World"); // 14:30:00 Hello World
7
- */
8
- export declare const timeLog: (...args: any[]) => void;
1
+ /**
2
+ * 附带时间的 console.log
3
+ * @param args
4
+ *
5
+ * @example
6
+ * timeLog("Hello", "World"); // 14:30:00 Hello World
7
+ */
8
+ export declare const timeLog: (...args: any[]) => void;
package/dist/hoc.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ type SetTtl = (seconds: number) => void;
2
+ /**
3
+ * 创建一个带缓存的高阶函数
4
+ *
5
+ * @template Args 被包装函数的参数类型数组
6
+ * @template Result 被包装函数的返回类型
7
+ *
8
+ * @param fn 需要被缓存的函数,参数里附带的 setTtl 方法用于根据具体情况改写过期时间
9
+ * @param ttlSeconds 以秒为单位的过期时间,-1 表示永不过期,默认 -1,会被回调函数里的 setTtl() 覆盖
10
+ *
11
+ * @returns 返回包装后的函数,以及缓存相关的额外方法
12
+ *
13
+ * @example
14
+ * // 异步函数示例
15
+ * const fetchData = withCache(async (setTtl, url: string) => {
16
+ * const data = await fetch(url).then((res) => res.json());
17
+ * setTtl(data.expiresIn); // 根据实际情况调整过期时间
18
+ * return data;
19
+ * });
20
+ *
21
+ * await fetchData(urlA);
22
+ * await fetchData(urlA); // 使用缓存结果
23
+
24
+ * await fetchData(urlB);
25
+ * await fetchData(urlB); // 使用缓存结果
26
+ *
27
+ * fetchData.clear(); // urlA 和 urlB 的缓存都被清除
28
+ * await fetchData(urlA); // 重新请求数据
29
+ * await fetchData(urlB); // 重新请求数据
30
+ *
31
+ * // 缓存过期前
32
+ * fetchData.updateTtl(180); // 更新 ttl 并为所有未过期缓存续期
33
+ * await fetchData(urlA); // 使用缓存结果
34
+ * await fetchData(urlB); // 使用缓存结果
35
+ */
36
+ export declare const withCache: <Args extends any[], Result>(fn: (setTtl: SetTtl, ...args: Args) => Result, ttlSeconds?: number) => {
37
+ (...args: Args): Result;
38
+ clear(): void;
39
+ updateTtl(seconds: number): void;
40
+ };
41
+ export {};
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- export * from "./dom";
2
- export * from "./is";
3
- export * from "./network";
1
+ export * from "./dom";
2
+ export * from "./hoc";
3
+ export * from "./is";
4
+ export * from "./network";
package/dist/index.js CHANGED
@@ -1,2 +1,6 @@
1
- // @bun
2
- var j=(...c)=>{console.log(`${new Date().toLocaleTimeString()}`,...c)};var l=(c)=>{return c?.constructor===Object};class v{cache;maxSize;constructor(c=10){this.cache=new Map,this.maxSize=c}get(c){let h=this.cache.get(c);if(!h)return;return this.cache.delete(c),this.cache.set(c,h),h}set(c,h){if(this.cache.has(c))this.cache.delete(c);else if(this.cache.size>=this.maxSize){let e=[...this.cache.keys()][0];if(e)this.cache.delete(e)}this.cache.set(c,h)}has(c){return this.cache.has(c)}}var d=v;var z=new d,T=(c="")=>{let h=async(e,a={})=>{let f=c?`${c}${e}`:e;if(l(a.body))a.body=JSON.stringify(a.body),a.headers={...a.headers,"Content-Type":"application/json"};let K=()=>fetch(f,a),g;if(!(a.method==="GET"||!a.method))g=K();else{let x=z.get(f);if(!x)x=K(),z.set(f,x);g=x}let t=(await g).clone();if(!t.ok)throw Error(t.statusText);return await t.json()};return{get:(e,a={})=>h(e,{...a,method:"GET"}),post:(e,a,f={})=>h(e,{...f,method:"POST",body:a}),put:(e,a,f={})=>h(e,{...f,method:"PUT",body:a}),delete:(e,a={})=>h(e,{...a,method:"DELETE"})}},$=async(c)=>{try{return[null,await c]}catch(h){return[h,void 0]}};export{$ as to,j as timeLog,l as isObject,T as fetcher};
1
+ // @bun
2
+ <<<<<<< Updated upstream
3
+ var $=(...h)=>{console.log(`${new Date().toLocaleTimeString()}`,...h)};var C=(h,f=-1)=>{let a=new Map,x=(...c)=>{let K=JSON.stringify(c),z=Date.now(),j=a.get(K);if(j&&z<j.expiresAt)return j.value;let H=h((V)=>f=V,...c);if(H instanceof Promise){let V=H.then((M)=>{return a.set(K,{value:M,expiresAt:Date.now()+f*1000}),M});return a.set(K,{value:V,expiresAt:z+f*1000}),V}return a.set(K,{value:H,expiresAt:z+f*1000}),H};return x.clear=()=>a.clear(),x.updateTtl=(c)=>{f=c;let K=Date.now(),z=K+c*1000;for(let[j,g]of a.entries())if(g.expiresAt>K)g.expiresAt=z,a.set(j,g)},x};var W=(h)=>{return h?.constructor===Object};class v{cache;maxSize;constructor(h=10){this.cache=new Map,this.maxSize=h}get(h){let f=this.cache.get(h);if(!f)return;return this.cache.delete(h),this.cache.set(h,f),f}set(h,f){if(this.cache.has(h))this.cache.delete(h);else if(this.cache.size>=this.maxSize){let a=[...this.cache.keys()][0];if(a)this.cache.delete(a)}this.cache.set(h,f)}has(h){return this.cache.has(h)}}var D=v;var O=new D,X=(h="")=>{let f=async(a,x={})=>{let c=h?`${h}${a}`:a;if(W(x.body))x.body=JSON.stringify(x.body),x.headers={...x.headers,"Content-Type":"application/json"};let K=()=>fetch(c,x),z;if(!(x.method==="GET"||!x.method))z=K();else{let V=O.get(c);if(!V)V=K(),O.set(c,V);z=V}let g=(await z).clone();if(!g.ok)throw Error(g.statusText);return await g.json()};return{get:(a,x={})=>f(a,{...x,method:"GET"}),post:(a,x,c={})=>f(a,{...c,method:"POST",body:x}),put:(a,x,c={})=>f(a,{...c,method:"PUT",body:x}),delete:(a,x={})=>f(a,{...x,method:"DELETE"})}},Y=async(h)=>{try{return[null,await h]}catch(f){return[f,void 0]}};export{C as withCache,Y as to,$ as timeLog,W as isObject,X as fetcher};
4
+ =======
5
+ var S=(c)=>{return c?.constructor===Object};class j{cache;maxSize;constructor(c=10){this.cache=new Map,this.maxSize=c}get(c){let a=this.cache.get(c);if(!a)return;return this.cache.delete(c),this.cache.set(c,a),a}set(c,a){if(this.cache.has(c))this.cache.delete(c);else if(this.cache.size>=this.maxSize){let x=[...this.cache.keys()][0];if(x)this.cache.delete(x)}this.cache.set(c,a)}has(c){return this.cache.has(c)}}var M=j;var g=new M,I=(c="",a={})=>{let x=async(f,h={})=>{let K=c?`${c}${f}`:f;if(S(h.body))h.body=JSON.stringify(h.body),h.headers={...a.headers,...h.headers,"Content-Type":"application/json"};let V=()=>fetch(K,h),d=h.method==="GET"||!h.method,v;if(!d)v=V();else{let e=g.get(K);if(!e)e=V(),g.set(K,e);v=e}let z=(await v).clone();if(!z.ok)throw Error(z.statusText);return await z.json()};return{get:(f,h={})=>x(f,{...h,method:"GET"}),post:(f,h,K={})=>x(f,{...K,method:"POST",body:h}),put:(f,h,K={})=>x(f,{...K,method:"PUT",body:h}),delete:(f,h={})=>x(f,{...h,method:"DELETE"})}},J=async(c)=>{try{return[null,await c]}catch(a){return[a,void 0]}};export{J as to,S as isObject,I as fetcher};
6
+ >>>>>>> Stashed changes
package/dist/is.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- /**
2
- * 检测传入的值是否为**普通对象**
3
- * @param value
4
- * @returns {Boolean} 如果是普通对象,返回 true,否则返回 false
5
- */
6
- export declare const isObject: (value: any) => value is object;
1
+ /**
2
+ * 检测传入的值是否为**普通对象**
3
+ * @param value
4
+ * @returns {Boolean} 如果是普通对象,返回 true,否则返回 false
5
+ */
6
+ export declare const isObject: (value: any) => value is object;
package/dist/network.d.ts CHANGED
@@ -1,32 +1,40 @@
1
- /**
2
- * 基于 Fetch API 的请求客户端
3
- * @param baseURL 接口前缀,如 https://nickyzj.run:3030,也可以不填
4
- *
5
- * @remarks
6
- * 特性:
7
- * - 在 body 里直接传递对象
8
- * - 能够缓存 GET 请求
9
- *
10
- * @example
11
- * // 用法1:创建客户端
12
- * const api = fetcher("https://nickyzj.run:3030");
13
- * const res = await api.get<Blog>("/blogs/hello-world");
14
- *
15
- * // 用法2:直接发送请求
16
- * const res = await fetcher().get<Blog>("https://nickyzj.run:3030/blogs/hello-world");
17
- */
18
- export declare const fetcher: (baseURL?: string) => {
19
- get: <T>(url: string, options?: Omit<RequestInit, "method">) => Promise<T>;
20
- post: <T>(url: string, body?: any, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
21
- put: <T>(url: string, body?: any, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
22
- delete: <T>(url: string, options?: Omit<RequestInit, "method">) => Promise<T>;
23
- };
24
- /**
25
- * Go 语言风格的异步处理方式
26
- * @param promise 一个能被 await 的异步函数
27
- * @returns 如果成功,返回 [null, 异步函数结果],否则返回 [Error, undefined]
28
- *
29
- * @example
30
- * const [error, response] = await to(fetcher().get<Blog>("/blogs/hello-world"));
31
- */
32
- export declare const to: <T, U = Error>(promise: Promise<T>) => Promise<[null, T] | [U, undefined]>;
1
+ /**
2
+ * 基于 Fetch API 的请求客户端
3
+ * @param baseURL 接口前缀,如 https://nickyzj.run:3030,也可以不填
4
+ <<<<<<< Updated upstream
5
+ =======
6
+ * @param defaultOptions 客户端级别的请求选项,方法级别的选项会覆盖这里的相同值
7
+ >>>>>>> Stashed changes
8
+ *
9
+ * @remarks
10
+ * 特性:
11
+ * - 在 body 里直接传递对象
12
+ * - 能够缓存 GET 请求
13
+ *
14
+ * @example
15
+ * // 用法1:创建客户端
16
+ <<<<<<< Updated upstream
17
+ * const api = fetcher("https://nickyzj.run:3030");
18
+ =======
19
+ * const api = fetcher("https://nickyzj.run:3030", { headers: { Authorization: "Bearer token" } });
20
+ >>>>>>> Stashed changes
21
+ * const res = await api.get<Blog>("/blogs/hello-world");
22
+ *
23
+ * // 用法2:直接发送请求
24
+ * const res = await fetcher().get<Blog>("https://nickyzj.run:3030/blogs/hello-world");
25
+ */
26
+ export declare const fetcher: (baseURL?: string, defaultOptions?: RequestInit) => {
27
+ get: <T>(url: string, options?: Omit<RequestInit, "method">) => Promise<T>;
28
+ post: <T>(url: string, body?: any, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
29
+ put: <T>(url: string, body?: any, options?: Omit<RequestInit, "method" | "body">) => Promise<T>;
30
+ delete: <T>(url: string, options?: Omit<RequestInit, "method">) => Promise<T>;
31
+ };
32
+ /**
33
+ * Go 语言风格的异步处理方式
34
+ * @param promise 一个能被 await 的异步函数
35
+ * @returns 如果成功,返回 [null, 异步函数结果],否则返回 [Error, undefined]
36
+ *
37
+ * @example
38
+ * const [error, response] = await to(fetcher().get<Blog>("/blogs/hello-world"));
39
+ */
40
+ export declare const to: <T, Error>(promise: Promise<T>) => Promise<[null, T] | [Error, undefined]>;
@@ -1,85 +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: #CE92A4;
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-code-background: #FFFFFF;
21
- --dark-code-background: #1E1E1E;
22
- }
23
-
24
- @media (prefers-color-scheme: light) { :root {
25
- --hl-0: var(--light-hl-0);
26
- --hl-1: var(--light-hl-1);
27
- --hl-2: var(--light-hl-2);
28
- --hl-3: var(--light-hl-3);
29
- --hl-4: var(--light-hl-4);
30
- --hl-5: var(--light-hl-5);
31
- --hl-6: var(--light-hl-6);
32
- --hl-7: var(--light-hl-7);
33
- --hl-8: var(--light-hl-8);
34
- --code-background: var(--light-code-background);
35
- } }
36
-
37
- @media (prefers-color-scheme: dark) { :root {
38
- --hl-0: var(--dark-hl-0);
39
- --hl-1: var(--dark-hl-1);
40
- --hl-2: var(--dark-hl-2);
41
- --hl-3: var(--dark-hl-3);
42
- --hl-4: var(--dark-hl-4);
43
- --hl-5: var(--dark-hl-5);
44
- --hl-6: var(--dark-hl-6);
45
- --hl-7: var(--dark-hl-7);
46
- --hl-8: var(--dark-hl-8);
47
- --code-background: var(--dark-code-background);
48
- } }
49
-
50
- :root[data-theme='light'] {
51
- --hl-0: var(--light-hl-0);
52
- --hl-1: var(--light-hl-1);
53
- --hl-2: var(--light-hl-2);
54
- --hl-3: var(--light-hl-3);
55
- --hl-4: var(--light-hl-4);
56
- --hl-5: var(--light-hl-5);
57
- --hl-6: var(--light-hl-6);
58
- --hl-7: var(--light-hl-7);
59
- --hl-8: var(--light-hl-8);
60
- --code-background: var(--light-code-background);
61
- }
62
-
63
- :root[data-theme='dark'] {
64
- --hl-0: var(--dark-hl-0);
65
- --hl-1: var(--dark-hl-1);
66
- --hl-2: var(--dark-hl-2);
67
- --hl-3: var(--dark-hl-3);
68
- --hl-4: var(--dark-hl-4);
69
- --hl-5: var(--dark-hl-5);
70
- --hl-6: var(--dark-hl-6);
71
- --hl-7: var(--dark-hl-7);
72
- --hl-8: var(--dark-hl-8);
73
- --code-background: var(--dark-code-background);
74
- }
75
-
76
- .hl-0 { color: var(--hl-0); }
77
- .hl-1 { color: var(--hl-1); }
78
- .hl-2 { color: var(--hl-2); }
79
- .hl-3 { color: var(--hl-3); }
80
- .hl-4 { color: var(--hl-4); }
81
- .hl-5 { color: var(--hl-5); }
82
- .hl-6 { color: var(--hl-6); }
83
- .hl-7 { color: var(--hl-7); }
84
- .hl-8 { color: var(--hl-8); }
85
- 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: #CE92A4;
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 = "eJyLrlYqSa0oUbJSSkstSc5ILVLSUSpILMkACZTmJZdk5ucV60Ol9DJKcnOUdJSyM/NSlKzMTGp14Jozi/2TslKTS7Dphsnh0V6SmZvqk5+OTTdUCp/mfKz68jG0xAIAaQxPyQ=="
1
+ window.navigationData = "eJyLrlYqSa0oUbJSSkstSc5ILVLSUSpILMkACZTmJZdk5ucV60Ol9DJKcnOUdJSyM/NSlKzMTGp14Jozi/2TslKTS7Dphsnh0V6SmZvqk5+OTTdUCp/mfKz68vFoKc8syXBOTM5IxaYTLolhQCwAhStl1A=="
@@ -1 +1 @@
1
- window.searchData = "eJyNkstqwzAQRf/lroVjyaFQ/UGh0F03wpRUnrRqbSlYTloQ/vciP1BCBPVOmplzhK8noHc/HlIFfBvbQD7sGeyhI0gcadCf1IPh3LfxfrZ6MM763dIpPoeuBYNuD96ThwRGlhEZ//L+RXrImNbWVtVgOnp2HxnT0tkscjmHy+E1g7EN/UIGXKj3xllIiKIqHsFwNNQ2McHZzKBd15GNH9s4fZ6O9TL2SnpwfRyep3clmCoZF0W5r2umVnaqT4VVkSoTx8EUz3D8juM3nABTIsOJO07ccBWYqjJcdcfNlSmyC/UDNU9zdEqlfQp4WwIt1/8RUEKGcUzxyTBeJRh78R3j3bJKScKThG+SxFVp4xIlh0gOsc3hrvEq4dX/eM1wMidqjSVIVY/jH5EQI2Q=";
1
+ window.searchData = "eJyNkk1rhDAQhv/Lew6uGlnaXHsqFHrrJUjZxmxNq8lisrsF8b+X+NHsYqDedN55nsDM9OjM1YLxHt9KV2D7gkAfWgmGo3Silh0Izl3j/89aOGW03c1JUru2AYFoDtZKCwYMJCJS9vXjSwoXMS3RVpVTrXwxnxHTnGwWmZjDbMWvytVPB1HLiOUvi8lKAqUr+QPW4yI7q4wGQ57Q5BEERyWbyq9jeodAmLaV2k+uMuI8fpZz25sUznS+eerepSA8JRlNHva0LAlf4DEYC4sjVEYwA+FZDMxWYHYH5iA8j4H5CszvQArCaQykK5DegQUIL2JgsQKnyjjvi+ycrJ6nuXMeLrvH+7yNdFltjxSsH4Ywe9YPN+P3mX9HWTMfdZBkQZJtkvijbfw5B0ceHPk2h7nFacDpJtxfq5guOViKYCn+t5QEJ3WSjdISjJfD8AtbSmZA";