@zhin.js/plugin-short-url 3.0.4 → 3.0.6
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/commands/expand/[url:string].js +18 -0
- package/commands/shorten/[url:string].js +18 -0
- package/lib/short-url-lib.d.ts.map +1 -1
- package/lib/short-url-lib.js +5 -4
- package/lib/short-url-lib.js.map +1 -1
- package/package.json +7 -7
- package/plugin.js +8 -0
- package/src/short-url-lib.ts +4 -3
- package/plugin.ts +0 -8
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { defineCommand } from '@zhin.js/command';
|
|
3
|
+
import { expandUrl, isValidUrl } from "../../lib/short-url-lib.js";
|
|
4
|
+
export default defineCommand({
|
|
5
|
+
description: '展开一个短链接,显示原始地址',
|
|
6
|
+
async execute({ params }) {
|
|
7
|
+
const url = String(params.url ?? '');
|
|
8
|
+
if (!isValidUrl(url))
|
|
9
|
+
return '请提供有效的 HTTP/HTTPS 链接';
|
|
10
|
+
try {
|
|
11
|
+
const original = await expandUrl(url);
|
|
12
|
+
return `原始链接: ${original}`;
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return `展开失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { defineCommand } from '@zhin.js/command';
|
|
3
|
+
import { isValidUrl, shortenUrl } from "../../lib/short-url-lib.js";
|
|
4
|
+
export default defineCommand({
|
|
5
|
+
description: '缩短一个 URL',
|
|
6
|
+
async execute({ params }) {
|
|
7
|
+
const url = String(params.url ?? '');
|
|
8
|
+
if (!isValidUrl(url))
|
|
9
|
+
return '请提供有效的 HTTP/HTTPS 链接';
|
|
10
|
+
try {
|
|
11
|
+
const short = await shortenUrl(url);
|
|
12
|
+
return `短链接: ${short}`;
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return `缩短失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"short-url-lib.d.ts","sourceRoot":"","sources":["../src/short-url-lib.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO7D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"short-url-lib.d.ts","sourceRoot":"","sources":["../src/short-url-lib.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO7D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5D"}
|
package/lib/short-url-lib.js
CHANGED
|
@@ -18,10 +18,11 @@ export async function shortenUrl(url) {
|
|
|
18
18
|
return data.shorturl;
|
|
19
19
|
}
|
|
20
20
|
export async function expandUrl(url) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
// 不能用 redirect:'manual':undici 下返回 opaqueredirect(status 0、headers 空),
|
|
22
|
+
// 拿不到 location。改为跟随重定向后比较最终 URL。
|
|
23
|
+
const res = await fetch(url, { redirect: 'follow' });
|
|
24
|
+
if (res.url && res.url !== url)
|
|
25
|
+
return res.url;
|
|
25
26
|
if (res.ok)
|
|
26
27
|
return url;
|
|
27
28
|
throw new Error(`无法展开链接 (${res.status})`);
|
package/lib/short-url-lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"short-url-lib.js","sourceRoot":"","sources":["../src/short-url-lib.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,4CAA4C,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqE,CAAC;IACpG,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"short-url-lib.js","sourceRoot":"","sources":["../src/short-url-lib.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,4CAA4C,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqE,CAAC;IACpG,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,uEAAuE;IACvE,iCAAiC;IACjC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IAC/C,IAAI,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IACvB,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/plugin-short-url",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.6",
|
|
4
4
|
"description": "URL shortener plugin for Zhin.js — shorten & expand URLs (Plugin Runtime)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"./package.json": "./package.json"
|
|
15
15
|
},
|
|
16
16
|
"files": [
|
|
17
|
-
"plugin.
|
|
17
|
+
"plugin.js",
|
|
18
18
|
"schema.json",
|
|
19
19
|
"commands",
|
|
20
20
|
"src",
|
|
@@ -37,18 +37,18 @@
|
|
|
37
37
|
},
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@zhin.js/
|
|
41
|
-
"@zhin.js/
|
|
40
|
+
"@zhin.js/command": "1.0.4",
|
|
41
|
+
"@zhin.js/plugin-runtime": "1.1.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"typescript": "^6.0.3",
|
|
45
45
|
"vitest": "^4.1.10",
|
|
46
46
|
"zod": "^4.4.3",
|
|
47
|
-
"@zhin.js/agent": "1.0.
|
|
47
|
+
"@zhin.js/agent": "1.0.7"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"zod": "^4.0.0",
|
|
51
|
-
"@zhin.js/agent": "1.0.
|
|
51
|
+
"@zhin.js/agent": "1.0.7"
|
|
52
52
|
},
|
|
53
53
|
"peerDependenciesMeta": {
|
|
54
54
|
"@zhin.js/agent": {
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"zhin": {
|
|
74
74
|
"protocol": 1,
|
|
75
75
|
"type": "plugin",
|
|
76
|
-
"entry": "./plugin.
|
|
76
|
+
"entry": "./plugin.js",
|
|
77
77
|
"engine": "^1.0.0",
|
|
78
78
|
"runtime": "trusted",
|
|
79
79
|
"features": [
|
package/plugin.js
ADDED
package/src/short-url-lib.ts
CHANGED
|
@@ -17,9 +17,10 @@ export async function shortenUrl(url: string): Promise<string> {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export async function expandUrl(url: string): Promise<string> {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
// 不能用 redirect:'manual':undici 下返回 opaqueredirect(status 0、headers 空),
|
|
21
|
+
// 拿不到 location。改为跟随重定向后比较最终 URL。
|
|
22
|
+
const res = await fetch(url, { redirect: 'follow' });
|
|
23
|
+
if (res.url && res.url !== url) return res.url;
|
|
23
24
|
if (res.ok) return url;
|
|
24
25
|
throw new Error(`无法展开链接 (${res.status})`);
|
|
25
26
|
}
|