MCPcopy Create free account
hub / github.com/scriptscat/scriptcat / main

Function main

src/service_worker.ts:63–95  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

61}
62
63function main() {
64 cleanInvalidKeys();
65 // 初始化管理器
66 const message = new ExtensionMessage(true);
67 // 初始化日志组件
68 const loggerCore = new LoggerCore({
69 writer: new DBWriter(new LoggerDAO()),
70 labels: { env: "service_worker" },
71 });
72 loggerCore.logger().debug("service worker start");
73 const swMessage = new ServiceWorkerMessageSend();
74 // 同时接收ExtensionMessage(chrome.runtime)和ServiceWorkerMessageSend(postMessage)的消息
75 const server = new Server("serviceWorker", [message, swMessage]);
76 const messageQueue = new MessageQueue();
77 const hasOffscreenDocument = typeof chrome.offscreen?.createDocument === "function";
78 // Chrome needs a real offscreen document. Firefox MV3 uses EventPageOffscreenManager instead.
79 if (hasOffscreenDocument) {
80 const offscreen = new ServiceWorkerMessageSend();
81 const manager = new ServiceWorkerManager(server, messageQueue, offscreen);
82 manager.initManager();
83 setupOffscreenDocument();
84 } else {
85 const offscreen = new EventPageOffscreenManager(message);
86 const manager = new ServiceWorkerManager(server, messageQueue, offscreen);
87 manager.initManager();
88 // ServiceWorkerManager installs its preparationOffscreen subscribers after .initManager().
89 // In Firefox MV3 there is no real offscreen document, so the background event page
90 // itself is already the DOM-capable offscreen environment.
91 setTimeout(() => {
92 messageQueue.emit("preparationOffscreen", {});
93 }, 0);
94 }
95}
96
97main();

Callers 1

service_worker.tsFile · 0.70

Calls 6

loggerMethod · 0.95
initManagerMethod · 0.95
emitMethod · 0.95
cleanInvalidKeysFunction · 0.90
setupOffscreenDocumentFunction · 0.85
debugMethod · 0.80

Tested by

no test coverage detected