Skip to content

Commit 9569736

Browse files
committed
🐛 处理*开头的特殊情况 #123
1 parent 1073de3 commit 9569736

File tree

6 files changed

+56
-23
lines changed

6 files changed

+56
-23
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "scriptcat",
3-
"version": "0.11.0-beta.2",
3+
"version": "0.11.0-beta.3",
44
"description": "脚本猫,一个可以执行用户脚本的浏览器扩展,万物皆可脚本化,让你的浏览器可以做更多的事情!",
55
"author": "CodFrm",
66
"license": "GPLv3",

pkg/filesystem/auth.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,23 @@ export async function AuthVerify(netDiskType: NetDiskType, reapply?: boolean) {
8383
}
8484
if (Date.now() > token.createtime + 3600000) {
8585
// 大于一小时刷新token
86-
const resp = await RefreshToken(netDiskType, token.refreshToken);
87-
if (resp.code !== 0) {
88-
// 刷新失败删除token
89-
localStorage.removeItem(`netdisk:token:${netDiskType}`);
90-
return Promise.reject(new Error(resp.msg));
86+
try {
87+
const resp = await RefreshToken(netDiskType, token.refreshToken);
88+
if (resp.code !== 0) {
89+
// 刷新失败删除token
90+
localStorage.removeItem(`netdisk:token:${netDiskType}`);
91+
return Promise.reject(new Error(resp.msg));
92+
}
93+
token = {
94+
accessToken: resp.data.token.access_token,
95+
refreshToken: resp.data.token.refresh_token,
96+
createtime: Date.now(),
97+
};
98+
localStorage[`netdisk:token:${netDiskType}`] = JSON.stringify(token);
99+
} catch (e) {
100+
// 报错返回原token
101+
return Promise.resolve(token.accessToken);
91102
}
92-
token = {
93-
accessToken: resp.data.token.access_token,
94-
refreshToken: resp.data.token.refresh_token,
95-
createtime: Date.now(),
96-
};
97-
localStorage[`netdisk:token:${netDiskType}`] = JSON.stringify(token);
98103
} else {
99104
return Promise.resolve(token.accessToken);
100105
}

src/app/const.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const ExtVersion = "0.11.0-beta";
1+
export const ExtVersion = "0.11.0-beta.3";
22

33
export const ExtServer = "https://ext.scriptcat.org/";
44

src/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 2,
33
"name": "ScriptCat",
4-
"version": "0.11.0.1010",
4+
"version": "0.11.0.1040",
55
"author": "CodFrm",
66
"description": "脚本猫,一个用户脚本管理器,支持后台脚本、定时脚本、页面脚本,可编写脚本每天帮你自动处理事务.",
77
"options_ui": {

src/pkg/utils/match.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,20 @@ describe("UrlMatch-port2", () => {
135135
});
136136
});
137137

138+
describe("特殊情况", () => {
139+
it("**", () => {
140+
const url = new UrlMatch<string>();
141+
url.add("*://**/*", "ok1");
142+
expect(url.match("http://www.example.com/")).toEqual(["ok1"]);
143+
});
144+
145+
it("prefix *",()=>{
146+
const url=new UrlMatch<string>();
147+
url.add("*https://www.baidu.com*","ok1");
148+
expect(url.match("https://www.baidu.com")).toEqual(["ok1"]);
149+
})
150+
});
151+
138152
// --- include
139153
describe("UrlInclude-1", () => {
140154
const url = new UrlInclude<string>();

src/pkg/utils/match.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
// eslint-disable-next-line max-classes-per-file
1+
/* eslint-disable max-classes-per-file */
2+
3+
import Logger from "@App/app/logger/logger";
4+
25
export default class Match<T> {
36
protected cache = new Map<string, T[]>();
47

58
protected rule = new Map<string, T[]>();
69

7-
// eslint-disable-next-line class-methods-use-this
810
protected parseURL(url: string): Url | undefined {
11+
if (url.indexOf("*http") === 0) {
12+
url = url.substring(1);
13+
}
914
const match = /^(.+?):\/\/(.*?)((\/.*?)(\?.*?|)|)$/.exec(url);
1015
if (match) {
1116
return {
@@ -44,7 +49,7 @@ export default class Match<T> {
4449
default:
4550
}
4651
let pos = u.host.indexOf("*");
47-
if (u.host === "*") {
52+
if (u.host === "*" || u.host === "**") {
4853
pos = -1;
4954
} else if (u.host.endsWith("*")) {
5055
// 处理*结尾
@@ -104,12 +109,21 @@ export default class Match<T> {
104109
return ret;
105110
}
106111
ret = [];
107-
this.rule.forEach((val, key) => {
108-
const re = new RegExp(key);
109-
if (re.test(url) && ret) {
110-
ret.push(...val);
111-
}
112-
});
112+
try {
113+
this.rule.forEach((val, key) => {
114+
const re = new RegExp(key);
115+
if (re.test(url) && ret) {
116+
ret.push(...val);
117+
}
118+
});
119+
} catch (e) {
120+
// eslint-disable-next-line no-console
121+
console.warn("bad match rule", Logger.E(e));
122+
// LoggerCore.getLogger({ component: "match" }).warn(
123+
// "bad match rule",
124+
// Logger.E(e)
125+
// );
126+
}
113127
this.cache.set(url, ret);
114128
return ret;
115129
}

0 commit comments

Comments
 (0)