消息
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 18s

This commit is contained in:
王一之 2025-02-06 17:34:55 +08:00
parent 65b231911e
commit 116f614852
18 changed files with 182 additions and 157 deletions

View File

@ -1,9 +1,10 @@
import LoggerCore from "@App/app/logger/core"; import LoggerCore from "@App/app/logger/core";
import { Message, MessageConnect } from "./server"; import { Message, MessageConnect, MessageSend } from "./server";
import { ExtensionMessageSend } from "./extension_message";
export async function sendMessage(msg: Message, action: string, data?: any): Promise<any> { export async function sendMessage(msg: MessageSend, action: string, data?: any): Promise<any> {
const res = await msg.sendMessage({ action, data }); const res = await msg.sendMessage({ action, data });
LoggerCore.getInstance().logger().debug("sendMessage", { action, data, response: res }); LoggerCore.getInstance().logger().trace("sendMessage", { action, data, response: res });
if (res && res.code) { if (res && res.code) {
console.error(res); console.error(res);
return Promise.reject(res.message); return Promise.reject(res.message);
@ -18,7 +19,7 @@ export function connect(msg: Message, action: string, data?: any): Promise<Messa
export class Client { export class Client {
constructor( constructor(
private msg: Message, private msg: ExtensionMessageSend,
private prefix: string private prefix: string
) { ) {
if (!this.prefix.endsWith("/")) { if (!this.prefix.endsWith("/")) {

View File

@ -1,6 +1,25 @@
import { Message, MessageConnect } from "./server"; import { Message, MessageConnect, MessageSend } from "./server";
export class ExtensionMessage implements Message { export class ExtensionMessageSend implements MessageSend {
connect(data: any): Promise<MessageConnect> {
return new Promise((resolve) => {
const con = chrome.runtime.connect();
con.postMessage(data);
resolve(new ExtensionMessageConnect(con));
});
}
// 发送消息 注意不进行回调的内存泄漏
sendMessage(data: any): Promise<any> {
return new Promise((resolve) => {
chrome.runtime.sendMessage(data, (resp) => {
resolve(resp);
});
});
}
}
export class ExtensionMessage extends ExtensionMessageSend implements Message {
onConnect(callback: (data: any, con: MessageConnect) => void) { onConnect(callback: (data: any, con: MessageConnect) => void) {
chrome.runtime.onConnect.addListener((port) => { chrome.runtime.onConnect.addListener((port) => {
const handler = (msg: any) => { const handler = (msg: any) => {
@ -11,29 +30,12 @@ export class ExtensionMessage implements Message {
}); });
} }
connect(data: any): Promise<MessageConnect> {
return new Promise((resolve) => {
const con = chrome.runtime.connect();
con.postMessage(data);
resolve(new ExtensionMessageConnect(con));
});
}
// 注意chrome.runtime.onMessage.addListener的回调函数需要返回true才能处理异步请求 // 注意chrome.runtime.onMessage.addListener的回调函数需要返回true才能处理异步请求
onMessage(callback: (data: any, sendResponse: (data: any) => void) => void) { onMessage(callback: (data: any, sendResponse: (data: any) => void) => void) {
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
return callback(msg, sendResponse); return callback(msg, sendResponse);
}); });
} }
// 发送消息 注意不进行回调的内存泄漏
sendMessage(data: any): Promise<any> {
return new Promise((resolve) => {
chrome.runtime.sendMessage(data, (resp) => {
resolve(resp);
});
});
}
} }
export class ExtensionMessageConnect implements MessageConnect { export class ExtensionMessageConnect implements MessageConnect {

View File

@ -1,10 +1,13 @@
import EventEmitter from "eventemitter3"; import EventEmitter from "eventemitter3";
import { ApiFunction, Message, MessageConnect, Server } from "./server"; import { ApiFunction, MessageConnect, MessageSend, Server } from "./server";
import { sendMessage } from "./client";
import Logger from "@App/app/logger/logger";
import LoggerCore from "@App/app/logger/core";
export type SubscribeCallback = (message: any) => void; export type SubscribeCallback = (message: any) => void;
export class Broker { export class Broker {
constructor(private msg: Message) {} constructor(private msg: MessageSend) {}
// 订阅 // 订阅
async subscribe(topic: string, handler: SubscribeCallback): Promise<MessageConnect> { async subscribe(topic: string, handler: SubscribeCallback): Promise<MessageConnect> {
@ -19,7 +22,7 @@ export class Broker {
// 发布 // 发布
publish(topic: string, message: any) { publish(topic: string, message: any) {
chrome.runtime.sendMessage({ action: "publish", topic, message }); sendMessage(this.msg, "messageQueue", { action: "publish", topic, message });
} }
} }
@ -29,12 +32,15 @@ export class MessageQueue {
private EE: EventEmitter = new EventEmitter(); private EE: EventEmitter = new EventEmitter();
logger: Logger;
constructor(api: Server) { constructor(api: Server) {
api.on("messageQueue", this.handler()); api.on("messageQueue", this.handler());
this.logger = LoggerCore.getInstance().logger({ service: "messageQueue" });
} }
handler(): ApiFunction { handler(): ApiFunction {
return ({ action, topic, message }: { action: string; topic: string; message: any }, con) => { return ({ action, topic, message }: { action: string; topic: string; message: any }, con) => {
this.logger.trace("messageQueueHandler", { action, topic, message });
if (!con) { if (!con) {
throw new Error("con is required"); throw new Error("con is required");
} }
@ -66,6 +72,7 @@ export class MessageQueue {
// 移除断开连接的con // 移除断开连接的con
list = list!.filter((item) => item.con !== con); list = list!.filter((item) => item.con !== con);
this.topicConMap.set(topic, list); this.topicConMap.set(topic, list);
this.logger.debug("disconnect", { topic });
}); });
} }
@ -75,6 +82,7 @@ export class MessageQueue {
item.con.sendMessage({ action: "message", topic, message }); item.con.sendMessage({ action: "message", topic, message });
}); });
this.EE.emit(topic, message); this.EE.emit(topic, message);
this.logger.trace("publish", { topic, message, list: list?.length });
} }
// 只发布给当前环境 // 只发布给当前环境

View File

@ -1,8 +1,12 @@
import LoggerCore from "@App/app/logger/core"; import LoggerCore from "@App/app/logger/core";
import { ExtensionMessageSend } from "./extension_message";
export interface Message { export interface Message extends MessageSend {
onConnect(callback: (data: any, con: MessageConnect) => void): void; onConnect(callback: (data: any, con: MessageConnect) => void): void;
onMessage(callback: (data: any, sendResponse: (data: any) => void) => void): void; onMessage(callback: (data: any, sendResponse: (data: any) => void) => void): void;
}
export interface MessageSend {
connect(data: any): Promise<MessageConnect>; connect(data: any): Promise<MessageConnect>;
sendMessage(data: any): Promise<any>; sendMessage(data: any): Promise<any>;
} }
@ -53,7 +57,7 @@ export class Server {
private messageHandle(msg: string, params: any, sendResponse: (response: any) => void) { private messageHandle(msg: string, params: any, sendResponse: (response: any) => void) {
const logger = LoggerCore.getInstance().logger({ env: this.env, msg }); const logger = LoggerCore.getInstance().logger({ env: this.env, msg });
logger.debug("messageHandle", { params }); logger.trace("messageHandle", { params });
const func = this.apiFunctionMap.get(msg); const func = this.apiFunctionMap.get(msg);
if (func) { if (func) {
try { try {
@ -96,7 +100,7 @@ export class Group {
} }
// 转发消息 // 转发消息
export function forwardMessage(path: string, from: Server, to: Message) { export function forwardMessage(path: string, from: Server, to: ExtensionMessageSend) {
from.on(path, (params, fromCon) => { from.on(path, (params, fromCon) => {
if (fromCon) { if (fromCon) {
to.connect({ action: path, data: params }).then((toCon) => { to.connect({ action: path, data: params }).then((toCon) => {

View File

@ -1,6 +1,6 @@
import Logger from "./logger"; import Logger from "./logger";
export type LogLevel = "debug" | "info" | "warn" | "error"; export type LogLevel = "trace" | "debug" | "info" | "warn" | "error";
export interface LogLabel { export interface LogLabel {
[key: string]: string | string[] | boolean | number | undefined; [key: string]: string | string[] | boolean | number | undefined;
@ -25,17 +25,22 @@ export default class LoggerCore {
writer: Writer; writer: Writer;
// 日志级别, 会记录在日志文件中
level: LogLevel = "info"; level: LogLevel = "info";
debug: boolean = false; // 日志debug等级, 会在控制台输出
debug: LogLevel | "none" = "none";
labels: LogLabel; labels: LogLabel;
constructor(config: { level?: LogLevel; debug?: boolean; writer: Writer; labels: LogLabel }) { constructor(config: { level?: LogLevel; writer: Writer; labels: LogLabel }) {
this.writer = config.writer; this.writer = config.writer;
this.level = config.level || this.level; this.level = config.level || this.level;
this.debug = config.debug || this.debug;
this.labels = config.labels || {}; this.labels = config.labels || {};
// 获取日志debug等级, 如果是开发环境, 则默认为trace
if (process.env.NODE_ENV === "development") {
this.debug = "trace";
}
if (!LoggerCore.instance) { if (!LoggerCore.instance) {
LoggerCore.instance = this; LoggerCore.instance = this;
} }

View File

@ -2,10 +2,11 @@ import dayjs from "dayjs";
import LoggerCore, { LogLabel, LogLevel } from "./core"; import LoggerCore, { LogLabel, LogLevel } from "./core";
const levelNumber = { const levelNumber = {
debug: 10, trace: 10,
info: 100, debug: 100,
warn: 1000, info: 1000,
error: 10000, warn: 10000,
error: 100000,
}; };
function buildLabel(...label: LogLabel[][]): LogLabel { function buildLabel(...label: LogLabel[][]): LogLabel {
@ -34,7 +35,7 @@ export default class Logger {
if (levelNumber[level] >= levelNumber[this.core.level]) { if (levelNumber[level] >= levelNumber[this.core.level]) {
this.core.writer.write(level, message, buildLabel(this.label, label)); this.core.writer.write(level, message, buildLabel(this.label, label));
} }
if (this.core.debug) { if (this.core.debug !== "none" && levelNumber[level] >= levelNumber[this.core.debug]) {
if (typeof message === "object") { if (typeof message === "object") {
message = JSON.stringify(message); message = JSON.stringify(message);
} }
@ -48,6 +49,9 @@ export default class Logger {
case "warn": case "warn":
console.warn(msg); console.warn(msg);
break; break;
case "trace":
console.trace(msg);
break;
default: default:
console.info(msg); console.info(msg);
break; break;
@ -59,6 +63,10 @@ export default class Logger {
return new Logger(this.core, ...this.label, ...label); return new Logger(this.core, ...this.label, ...label);
} }
trace(message: string, ...label: LogLabel[]) {
this.log("trace", message, ...label);
}
debug(message: string, ...label: LogLabel[]) { debug(message: string, ...label: LogLabel[]) {
this.log("debug", message, ...label); this.log("debug", message, ...label);
} }

View File

@ -9,7 +9,7 @@ export abstract class Repo<T> {
return this.prefix + key; return this.prefix + key;
} }
protected async _save(key: string, val: T) { protected async _save(key: string, val: T):Promise<T> {
return new Promise((resolve) => { return new Promise((resolve) => {
const data = { const data = {
[this.joinKey(key)]: val, [this.joinKey(key)]: val,

View File

@ -1,24 +1,20 @@
import { forwardMessage, Server } from "@Packages/message/server"; import { forwardMessage, Server } from "@Packages/message/server";
import { ScriptService } from "./script"; import { ScriptService } from "./script";
import { Broker, MessageQueue } from "@Packages/message/message_queue"; import { Broker } from "@Packages/message/message_queue";
import { Logger, LoggerDAO } from "@App/app/repo/logger"; import { Logger, LoggerDAO } from "@App/app/repo/logger";
import { WindowMessage } from "@Packages/message/window_message"; import { WindowMessage } from "@Packages/message/window_message";
import { ExtensionMessage } from "@Packages/message/extension_message"; import { ExtensionMessageSend } from "@Packages/message/extension_message";
import { ServiceWorkerClient } from "../service_worker/client"; import { ServiceWorkerClient } from "../service_worker/client";
import { sendMessage } from "@Packages/message/client"; import { sendMessage } from "@Packages/message/client";
// offscreen环境的管理器 // offscreen环境的管理器
export class OffscreenManager { export class OffscreenManager {
private extensionMessage = new ExtensionMessage(); private extensionMessage = new ExtensionMessageSend();
private api: Server = new Server("offscreen", this.extensionMessage);
private windowMessage = new WindowMessage(window, sandbox); private windowMessage = new WindowMessage(window, sandbox);
private windowApi: Server = new Server("offscreen-window", this.windowMessage); private windowApi: Server = new Server("offscreen-window", this.windowMessage);
private mq: MessageQueue = new MessageQueue(this.api);
private broker: Broker = new Broker(this.extensionMessage); private broker: Broker = new Broker(this.extensionMessage);
private serviceWorker = new ServiceWorkerClient(this.extensionMessage); private serviceWorker = new ServiceWorkerClient(this.extensionMessage);
@ -39,33 +35,27 @@ export class OffscreenManager {
async initManager() { async initManager() {
// 监听消息 // 监听消息
const group = this.api.group("offscreen");
this.windowApi.on("logger", this.logger.bind(this)); this.windowApi.on("logger", this.logger.bind(this));
this.windowApi.on("preparationSandbox", this.preparationSandbox.bind(this)); this.windowApi.on("preparationSandbox", this.preparationSandbox.bind(this));
this.windowApi.on("sendMessageToServiceWorker", this.sendMessageToServiceWorker.bind(this)); this.windowApi.on("sendMessageToServiceWorker", this.sendMessageToServiceWorker.bind(this));
const script = new ScriptService( const script = new ScriptService(this.extensionMessage, this.windowMessage, this.broker);
group.group("script"),
this.mq,
this.extensionMessage,
this.windowMessage,
this.broker
);
script.init(); script.init();
// 转发gm api请求 // 转发gm api请求
forwardMessage("serviceWorker/runtime/gmApi", this.windowApi, this.extensionMessage); forwardMessage("serviceWorker/runtime/gmApi", this.windowApi, this.extensionMessage);
// 处理gm xhr请求
this.api.on("gmXhr", (data) => {
console.log("123");
});
// 测试xhr
const ret = await sendMessage(this.extensionMessage, "serviceWorker/testGmApi");
console.log("test xhr", ret);
const xhr = new XMLHttpRequest();
xhr.onload = () => {
console.log(xhr);
};
xhr.open("GET", "https://scriptcat.org/zh-CN");
xhr.send(); // // 处理gm xhr请求
// this.api.on("gmXhr", (data) => {
// console.log("123");
// });
// // 测试xhr
// const ret = await sendMessage(this.extensionMessage, "serviceWorker/testGmApi");
// console.log("test xhr", ret);
// const xhr = new XMLHttpRequest();
// xhr.onload = () => {
// console.log(xhr);
// };
// xhr.open("GET", "https://scriptcat.org/zh-CN");
// xhr.send();
} }
} }

View File

@ -1,7 +1,6 @@
import LoggerCore from "@App/app/logger/core"; import LoggerCore from "@App/app/logger/core";
import Logger from "@App/app/logger/logger"; import Logger from "@App/app/logger/logger";
import { Broker, MessageQueue } from "@Packages/message/message_queue"; import { Broker } from "@Packages/message/message_queue";
import { Group, Message } from "@Packages/message/server";
import { WindowMessage } from "@Packages/message/window_message"; import { WindowMessage } from "@Packages/message/window_message";
import { import {
ResourceClient, ResourceClient,
@ -12,6 +11,7 @@ import {
} from "../service_worker/client"; } from "../service_worker/client";
import { SCRIPT_STATUS_ENABLE, SCRIPT_TYPE_NORMAL } from "@App/app/repo/scripts"; import { SCRIPT_STATUS_ENABLE, SCRIPT_TYPE_NORMAL } from "@App/app/repo/scripts";
import { disableScript, enableScript } from "../sandbox/client"; import { disableScript, enableScript } from "../sandbox/client";
import { ExtensionMessageSend } from "@Packages/message/extension_message";
export class ScriptService { export class ScriptService {
logger: Logger; logger: Logger;
@ -21,9 +21,7 @@ export class ScriptService {
valueClient: ValueClient = new ValueClient(this.extensionMessage); valueClient: ValueClient = new ValueClient(this.extensionMessage);
constructor( constructor(
private group: Group, private extensionMessage: ExtensionMessageSend,
private mq: MessageQueue,
private extensionMessage: Message,
private windowMessage: WindowMessage, private windowMessage: WindowMessage,
private broker: Broker private broker: Broker
) { ) {
@ -46,7 +44,6 @@ export class ScriptService {
}); });
subscribeScriptInstall(this.broker, async (data) => { subscribeScriptInstall(this.broker, async (data) => {
// 判断是开启还是关闭 // 判断是开启还是关闭
console.log("1dd23", data);
if (data.script.status === SCRIPT_STATUS_ENABLE) { if (data.script.status === SCRIPT_STATUS_ENABLE) {
// 构造脚本运行资源,发送给沙盒运行 // 构造脚本运行资源,发送给沙盒运行
enableScript(this.windowMessage, await this.scriptClient.getScriptRunResource(data.script)); enableScript(this.windowMessage, await this.scriptClient.getScriptRunResource(data.script));

View File

@ -3,10 +3,10 @@ import { Client } from "@Packages/message/client";
import { InstallSource } from "."; import { InstallSource } from ".";
import { Broker } from "@Packages/message/message_queue"; import { Broker } from "@Packages/message/message_queue";
import { Resource } from "@App/app/repo/resource"; import { Resource } from "@App/app/repo/resource";
import { Message } from "@Packages/message/server"; import { ExtensionMessageSend } from "@Packages/message/extension_message";
export class ServiceWorkerClient extends Client { export class ServiceWorkerClient extends Client {
constructor(msg: Message) { constructor(msg: ExtensionMessageSend) {
super(msg, "serviceWorker"); super(msg, "serviceWorker");
} }
@ -16,7 +16,7 @@ export class ServiceWorkerClient extends Client {
} }
export class ScriptClient extends Client { export class ScriptClient extends Client {
constructor(msg: Message) { constructor(msg: ExtensionMessageSend) {
super(msg, "serviceWorker/script"); super(msg, "serviceWorker/script");
} }
@ -51,7 +51,7 @@ export class ScriptClient extends Client {
} }
export class ResourceClient extends Client { export class ResourceClient extends Client {
constructor(msg: Message) { constructor(msg: ExtensionMessageSend) {
super(msg, "serviceWorker/resource"); super(msg, "serviceWorker/resource");
} }
@ -61,7 +61,7 @@ export class ResourceClient extends Client {
} }
export class ValueClient extends Client { export class ValueClient extends Client {
constructor(msg: Message) { constructor(msg: ExtensionMessageSend) {
super(msg, "serviceWorker/value"); super(msg, "serviceWorker/value");
} }

View File

@ -33,77 +33,77 @@ export default class ServiceWorkerManager {
runtime.init(); runtime.init();
// 测试xhr // 测试xhr
setTimeout(() => { // setTimeout(() => {
chrome.tabs.query( // chrome.tabs.query(
{ // {
url: chrome.runtime.getURL("src/offscreen.html"), // url: chrome.runtime.getURL("src/offscreen.html"),
}, // },
(result) => { // (result) => {
console.log(result); // console.log(result);
} // }
); // );
}, 2000); // }, 2000);
group.on("testGmApi", () => { // group.on("testGmApi", () => {
console.log(chrome.runtime.getURL("src/offscreen.html")); // console.log(chrome.runtime.getURL("src/offscreen.html"));
return new Promise((resolve) => { // return new Promise((resolve) => {
chrome.tabs.query({}, (tabs) => { // chrome.tabs.query({}, (tabs) => {
const excludedTabIds: number[] = []; // const excludedTabIds: number[] = [];
tabs.forEach((tab) => { // tabs.forEach((tab) => {
if (tab.id) { // if (tab.id) {
excludedTabIds.push(tab.id); // excludedTabIds.push(tab.id);
} // }
}); // });
chrome.declarativeNetRequest.updateSessionRules( // chrome.declarativeNetRequest.updateSessionRules(
{ // {
removeRuleIds: [100], // removeRuleIds: [100],
addRules: [ // addRules: [
{ // {
id: 100, // id: 100,
priority: 1, // priority: 1,
action: { // action: {
type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS, // type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
requestHeaders: [ // requestHeaders: [
{ // {
header: "cookie", // header: "cookie",
operation: chrome.declarativeNetRequest.HeaderOperation.SET, // operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "test=1234314", // value: "test=1234314",
}, // },
{ // {
header: "origin", // header: "origin",
operation: chrome.declarativeNetRequest.HeaderOperation.SET, // operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "https://learn.scriptcat.org", // value: "https://learn.scriptcat.org",
}, // },
{ // {
header: "user-agent", // header: "user-agent",
operation: chrome.declarativeNetRequest.HeaderOperation.SET, // operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "test", // value: "test",
}, // },
], // ],
}, // },
condition: { // condition: {
resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST], // resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST],
urlFilter: "https://scriptcat.org/zh-CN", // urlFilter: "https://scriptcat.org/zh-CN",
excludedTabIds: excludedTabIds, // excludedTabIds: excludedTabIds,
}, // },
}, // },
], // ],
}, // },
() => { // () => {
resolve(1); // resolve(1);
} // }
); // );
}); // });
}); // });
}); // });
chrome.webRequest.onHeadersReceived.addListener( // chrome.webRequest.onHeadersReceived.addListener(
(details) => { // (details) => {
console.log(details); // console.log(details);
}, // },
{ // {
urls: ["<all_urls>"], // urls: ["<all_urls>"],
types: ["xmlhttprequest"], // types: ["xmlhttprequest"],
}, // },
["responseHeaders", "extraHeaders"] // ["responseHeaders", "extraHeaders"]
); // );
} }
} }

View File

@ -178,7 +178,7 @@ export class ScriptService {
logger.info("install success"); logger.info("install success");
// 广播一下 // 广播一下
this.mq.publish("installScript", { script, update }); this.mq.publish("installScript", { script, update });
return {}; return Promise.resolve(true);
}) })
.catch((e: any) => { .catch((e: any) => {
logger.error("install error", Logger.E(e)); logger.error("install error", Logger.E(e));

View File

@ -9,7 +9,6 @@ function main() {
migrate(); migrate();
// 初始化日志组件 // 初始化日志组件
const loggerCore = new LoggerCore({ const loggerCore = new LoggerCore({
debug: process.env.NODE_ENV === "development",
writer: new DBWriter(new LoggerDAO()), writer: new DBWriter(new LoggerDAO()),
labels: { env: "offscreen" }, labels: { env: "offscreen" },
}); });

View File

@ -16,7 +16,6 @@ import DBWriter from "@App/app/logger/db_writer.ts";
migrate(); migrate();
// 初始化日志组件 // 初始化日志组件
const loggerCore = new LoggerCore({ const loggerCore = new LoggerCore({
debug: process.env.NODE_ENV === "development",
writer: new DBWriter(new LoggerDAO()), writer: new DBWriter(new LoggerDAO()),
labels: { env: "install" }, labels: { env: "install" },
}); });

View File

@ -8,6 +8,20 @@ import "@arco-design/web-react/dist/css/arco.css";
import "@App/locales/locales"; import "@App/locales/locales";
import "@App/index.css"; import "@App/index.css";
import "./index.css"; import "./index.css";
import migrate from "@App/app/migrate.ts";
import LoggerCore from "@App/app/logger/core.ts";
import { LoggerDAO } from "@App/app/repo/logger.ts";
import DBWriter from "@App/app/logger/db_writer.ts";
// 初始化数据库
migrate();
// 初始化日志组件
const loggerCore = new LoggerCore({
writer: new DBWriter(new LoggerDAO()),
labels: { env: "options" },
});
loggerCore.logger().debug("page start");
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<React.StrictMode> <React.StrictMode>

View File

@ -83,7 +83,7 @@ import {
import { selectScriptListColumnWidth } from "@App/pages/store/features/setting"; import { selectScriptListColumnWidth } from "@App/pages/store/features/setting";
import { Broker } from "@Packages/message/message_queue"; import { Broker } from "@Packages/message/message_queue";
import { subscribeScriptDelete, subscribeScriptInstall } from "@App/app/service/service_worker/client"; import { subscribeScriptDelete, subscribeScriptInstall } from "@App/app/service/service_worker/client";
import { ExtensionMessage } from "@Packages/message/extension_message"; import { ExtensionMessageSend } from "@Packages/message/extension_message";
import { MessageConnect } from "@Packages/message/server"; import { MessageConnect } from "@Packages/message/server";
type ListType = Script & { loading?: boolean }; type ListType = Script & { loading?: boolean };
@ -111,7 +111,7 @@ function ScriptList() {
useEffect(() => { useEffect(() => {
dispatch(fetchAndSortScriptList()); dispatch(fetchAndSortScriptList());
// 监听脚本安装/运行 // 监听脚本安装/运行
const msg = new ExtensionMessage(); const msg = new ExtensionMessageSend();
const border = new Broker(msg); const border = new Broker(msg);
const subCon: MessageConnect[] = []; const subCon: MessageConnect[] = [];

View File

@ -9,7 +9,6 @@ function main() {
// 初始化日志组件 // 初始化日志组件
const loggerCore = new LoggerCore({ const loggerCore = new LoggerCore({
debug: process.env.NODE_ENV === "development",
writer: new MessageWriter(msg), writer: new MessageWriter(msg),
labels: { env: "sandbox" }, labels: { env: "sandbox" },
}); });

View File

@ -46,7 +46,6 @@ async function main() {
migrate(); migrate();
// 初始化日志组件 // 初始化日志组件
const loggerCore = new LoggerCore({ const loggerCore = new LoggerCore({
debug: process.env.NODE_ENV === "development",
writer: new DBWriter(new LoggerDAO()), writer: new DBWriter(new LoggerDAO()),
labels: { env: "service_worker" }, labels: { env: "service_worker" },
}); });