Skip to content

Commit 2240a62

Browse files
committed
🐛 修复后台脚本读取userConfig的问题
1 parent e765476 commit 2240a62

5 files changed

Lines changed: 28 additions & 21 deletions

File tree

src/app/service/content/exec_script.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import LoggerCore from "@App/app/logger/core";
22
import Logger from "@App/app/logger/logger";
3-
import { ScriptRunResouce } from "@App/app/repo/scripts";
43
import GMApi from "./gm_api";
54
import { compileScript, createContext, proxyContext, ScriptFunc } from "./utils";
65
import { Message } from "@Packages/message/server";
7-
import { PageLoadScript, ScriptMatchInfo } from "../service_worker/runtime";
6+
import { ScriptLoadInfo } from "../service_worker/runtime";
87

98
export type ValueUpdateSender = {
109
runFlag: string;
@@ -24,7 +23,7 @@ export class RuntimeMessage {}
2423

2524
// 执行脚本,控制脚本执行与停止
2625
export default class ExecScript {
27-
scriptRes: PageLoadScript;
26+
scriptRes: ScriptLoadInfo;
2827

2928
scriptFunc: ScriptFunc;
3029

@@ -37,7 +36,7 @@ export default class ExecScript {
3736
GM_info: any;
3837

3938
constructor(
40-
scriptRes: PageLoadScript,
39+
scriptRes: ScriptLoadInfo,
4140
envPrefix: "content" | "offscreen",
4241
message: Message,
4342
code: string | ScriptFunc,

src/app/service/content/exec_warp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ScriptRunResouce } from "@App/app/repo/scripts";
22
import ExecScript from "./exec_script";
33
import { Message } from "@Packages/message/server";
4-
import { PageLoadScript } from "../service_worker/runtime";
4+
import { ScriptLoadInfo } from "../service_worker/runtime";
55

66
export class CATRetryError {
77
msg: string;
@@ -23,7 +23,7 @@ export class BgExecScriptWarp extends ExecScript {
2323

2424
setInterval: Map<number, boolean>;
2525

26-
constructor(scriptRes: PageLoadScript, message: Message) {
26+
constructor(scriptRes: ScriptLoadInfo, message: Message) {
2727
const thisContext: { [key: string]: any } = {};
2828
const setTimeout = new Map<number, any>();
2929
const setInterval = new Map<number, any>();

src/app/service/content/gm_api.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ScriptRunResouce } from "@App/app/repo/scripts";
2-
import { base64ToBlob, getMetadataStr, getUserConfigStr, parseUserConfig } from "@App/pkg/utils/script";
2+
import { base64ToBlob, parseUserConfig } from "@App/pkg/utils/script";
33
import { ValueUpdateData } from "./exec_script";
44
import { ExtVersion } from "@App/app/const";
55
import { Message, MessageConnect } from "@Packages/message/server";
@@ -9,7 +9,7 @@ import { connect, sendMessage } from "@Packages/message/client";
99
import EventEmitter from "eventemitter3";
1010
import { getStorageName } from "@App/pkg/utils/utils";
1111
import { MessageRequest } from "../service_worker/gm_api";
12-
import { PageLoadScript, ScriptMatchInfo } from "../service_worker/runtime";
12+
import { ScriptLoadInfo } from "../service_worker/runtime";
1313

1414
interface ApiParam {
1515
depend?: string[];
@@ -113,7 +113,7 @@ export default class GMApi {
113113
}
114114

115115
// 获取脚本信息和管理器信息
116-
static GM_info(script: PageLoadScript) {
116+
static GM_info(script: ScriptLoadInfo) {
117117
const options = {
118118
description: script.metadata.description?.[0] || null,
119119
matches: script.metadata.match || [],

src/app/service/sandbox/runtime.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ import { proxyUpdateRunStatus } from "../offscreen/client";
1414
import { BgExecScriptWarp } from "../content/exec_warp";
1515
import ExecScript, { ValueUpdateData } from "../content/exec_script";
1616
import { getStorageName } from "@App/pkg/utils/utils";
17-
import { EmitEventRequest } from "../service_worker/runtime";
17+
import { EmitEventRequest, ScriptLoadInfo } from "../service_worker/runtime";
18+
import { CATRetryError } from "../content/exec_warp";
19+
import { getMetadataStr, getUserConfigStr } from "@App/pkg/utils/script";
1820

1921
export class Runtime {
2022
cronJob: Map<string, Array<CronJob>> = new Map();
@@ -24,7 +26,7 @@ export class Runtime {
2426
logger: Logger;
2527

2628
retryList: {
27-
script: ScriptRunResouce;
29+
script: ScriptLoadInfo;
2830
retryTime: number;
2931
}[] = [];
3032

@@ -55,7 +57,7 @@ export class Runtime {
5557
}, 5000);
5658
}
5759

58-
joinRetryList(script: ScriptRunResouce) {
60+
joinRetryList(script: ScriptLoadInfo) {
5961
if (script.nextruntime) {
6062
this.retryList.push({
6163
script,
@@ -80,13 +82,16 @@ export class Runtime {
8082
if (this.execScripts.has(script.uuid)) {
8183
await this.disableScript(script.uuid);
8284
}
85+
const loadScript = script as ScriptLoadInfo;
86+
loadScript.metadataStr = getMetadataStr(script.code) || "";
87+
loadScript.userConfigStr = getUserConfigStr(script.code) || "";
8388
if (script.type === SCRIPT_TYPE_BACKGROUND) {
8489
// 后台脚本直接运行起来
85-
return this.execScript(script);
90+
return this.execScript(loadScript);
8691
} else {
8792
// 定时脚本加入定时任务
8893
await this.stopCronJob(script.uuid);
89-
return this.crontabScript(script);
94+
return this.crontabScript(loadScript);
9095
}
9196
}
9297

@@ -103,7 +108,7 @@ export class Runtime {
103108
}
104109

105110
// 执行脚本
106-
async execScript(script: ScriptRunResouce, execOnce?: boolean) {
111+
async execScript(script: ScriptLoadInfo, execOnce?: boolean) {
107112
const logger = this.logger.with({ script: script.uuid, name: script.name });
108113
if (this.execScripts.has(script.uuid)) {
109114
// 释放掉资源
@@ -158,7 +163,7 @@ export class Runtime {
158163
return ret;
159164
}
160165

161-
crontabScript(script: ScriptRunResouce) {
166+
crontabScript(script: ScriptLoadInfo) {
162167
// 执行定时脚本 运行表达式
163168
if (!script.metadata.crontab) {
164169
throw new Error(script.name + " - 错误的crontab表达式");
@@ -209,7 +214,7 @@ export class Runtime {
209214
return !flag;
210215
}
211216

212-
crontabExec(script: ScriptRunResouce, oncePos: number) {
217+
crontabExec(script: ScriptLoadInfo, oncePos: number) {
213218
if (oncePos) {
214219
return () => {
215220
// 没有最后一次执行时间表示之前都没执行过,直接执行
@@ -289,7 +294,10 @@ export class Runtime {
289294
if (exec) {
290295
await this.stopScript(script.uuid);
291296
}
292-
return this.execScript(script, true);
297+
const loadScript = script as ScriptLoadInfo;
298+
loadScript.metadataStr = getMetadataStr(script.code) || "";
299+
loadScript.userConfigStr = getUserConfigStr(script.code) || "";
300+
return this.execScript(loadScript, true);
293301
}
294302

295303
valueUpdate(data: ValueUpdateData) {

src/app/service/service_worker/runtime.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export interface ScriptMatchInfo extends ScriptRunResouce {
3636
customizeExcludeMatches: string[];
3737
}
3838

39-
export interface PageLoadScript extends ScriptMatchInfo {
39+
export interface ScriptLoadInfo extends ScriptMatchInfo {
4040
metadataStr: string; // 脚本元数据字符串
4141
userConfigStr: string; // 用户配置字符串
4242
}
@@ -352,9 +352,9 @@ export class RuntimeService {
352352
return arr;
353353
}
354354
}
355-
arr.push(scriptRes as PageLoadScript);
355+
arr.push(scriptRes as ScriptLoadInfo);
356356
return arr;
357-
}, [] as PageLoadScript[]);
357+
}, [] as ScriptLoadInfo[]);
358358

359359
await Promise.all([
360360
// 加载value

0 commit comments

Comments
 (0)