Skip to content

Commit 3f57e8f

Browse files
committed
🐛 修复端口导致注册userScript失败的问题 #390
1 parent 178e77d commit 3f57e8f

6 files changed

Lines changed: 32 additions & 4 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,6 @@ CHANGELOG.md
2929
tailwind.config.js
3030

3131
.env
32+
33+
package-lock.json
34+
yarn.lock

src/app/logger/core.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ export default class LoggerCore {
3232
// 日志级别, 会记录在日志文件中
3333
level: LogLevel = "info";
3434

35-
// 日志debug等级, 会在控制台输出
36-
debug: LogLevel | "none" = "none";
35+
// 打印在console的等级, 会在控制台输出
36+
consoleLevel: LogLevel = "warn";
3737

3838
labels: LogLabel;
3939

@@ -43,7 +43,7 @@ export default class LoggerCore {
4343
this.labels = config.labels || {};
4444
// 获取日志debug等级, 如果是开发环境, 则默认为debug
4545
if (process.env.NODE_ENV === "development") {
46-
this.debug = "debug";
46+
this.consoleLevel = "debug";
4747
}
4848
if (!LoggerCore.instance) {
4949
LoggerCore.instance = this;

src/app/logger/logger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default class Logger {
3636
if (levelNumber[level] >= levelNumber[this.core.level]) {
3737
this.core.writer.write(level, message, newLabel);
3838
}
39-
if (this.core.debug !== "none" && levelNumber[level] >= levelNumber[this.core.debug]) {
39+
if (this.core.consoleLevel !== "none" && levelNumber[level] >= levelNumber[this.core.consoleLevel]) {
4040
if (typeof message === "object") {
4141
message = JSON.stringify(message);
4242
}

src/app/service/service_worker/runtime.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,18 @@ export class RuntimeService {
219219
await chrome.userScripts.register(registerScripts);
220220
} catch (e: any) {
221221
this.logger.error("registerScript error", Logger.E(e));
222+
// 批量注册失败则退回单个注册
223+
registerScripts.forEach(async (script) => {
224+
try {
225+
await chrome.userScripts.register([script]);
226+
} catch (e: any) {
227+
this.logger.error(
228+
"registerScript single error",
229+
{ id: script.id, matches: script.matches, excludeMatches: script.excludeMatches },
230+
Logger.E(e)
231+
);
232+
}
233+
});
222234
}
223235
const batchData: { [key: string]: any } = {};
224236
registerScripts.forEach((script) => {

src/pkg/utils/match.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,14 @@ describe("parsePatternMatchesURL", () => {
211211
path: "*",
212212
});
213213
});
214+
it("端口", () => {
215+
const matches = parsePatternMatchesURL("http://examle:80/search");
216+
expect(matches).toEqual({
217+
scheme: "http",
218+
host: "examle:*",
219+
path: "search",
220+
});
221+
});
214222
it("一些怪异的情况", () => {
215223
let matches = parsePatternMatchesURL("*://*./*");
216224
expect(matches).toEqual({

src/pkg/utils/match.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,11 @@ export function parsePatternMatchesURL(
280280
}
281281
}
282282
}
283+
// 如果host存在端口, 则将端口换成通配符
284+
const pos = result?.host.indexOf(":");
285+
if (pos !== undefined && pos !== -1) {
286+
result!.host = `${result!.host.substring(0, pos)}:*`;
287+
}
283288
return result;
284289
}
285290

0 commit comments

Comments
 (0)