diff --git a/package.json b/package.json index 37327cb44..086a4bfd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scriptcat", - "version": "1.2.0-beta.4", + "version": "1.2.0-beta.5", "description": "脚本猫,一个可以执行用户脚本的浏览器扩展,万物皆可脚本化,让你的浏览器可以做更多的事情!", "author": "CodFrm", "license": "GPLv3", diff --git a/packages/message/custom_event_message.ts b/packages/message/custom_event_message.ts index b12a92ca8..ebdeb094b 100644 --- a/packages/message/custom_event_message.ts +++ b/packages/message/custom_event_message.ts @@ -23,10 +23,9 @@ export class CustomEventMessage implements Message { relatedTarget: Map = new Map(); constructor( - flags: MessageFlags | string, + messageFlag: string, protected readonly isContent: boolean ) { - const messageFlag = typeof flags === "string" ? flags : flags.messageFlag; this.receiveFlag = `evt${messageFlag}${isContent ? DefinedFlags.contentFlag : DefinedFlags.injectFlag}${DefinedFlags.domEvent}`; this.sendFlag = `evt${messageFlag}${isContent ? DefinedFlags.injectFlag : DefinedFlags.contentFlag}${DefinedFlags.domEvent}`; window.addEventListener(this.receiveFlag, (event) => { diff --git a/packages/message/server.test.ts b/packages/message/server.test.ts index bb6eafb27..5347ed823 100644 --- a/packages/message/server.test.ts +++ b/packages/message/server.test.ts @@ -12,7 +12,7 @@ let client: CustomEventMessage; const nextTick = () => Promise.resolve().then(() => {}); const setupGlobal = () => { - const flags = { messageFlag: "-test.server" }; + const flags = "-test.server"; // 创建 content 和 inject 之间的消息通道 contentMessage = new CustomEventMessage(flags, true); // content 端 injectMessage = new CustomEventMessage(flags, false); // inject 端 diff --git a/src/app/repo/scripts.ts b/src/app/repo/scripts.ts index bb4b562cb..de32d2308 100644 --- a/src/app/repo/scripts.ts +++ b/src/app/repo/scripts.ts @@ -1,6 +1,7 @@ import { Repo } from "./repo"; import type { Resource } from "./resource"; import type { SCMetadata } from "./metadata"; +import type { GMInfoEnv } from "../service/content/types"; // 脚本模型 export type SCRIPT_TYPE = 1 | 2 | 3; @@ -101,6 +102,46 @@ export interface ScriptRunResource extends Script { originalMetadata: SCMetadata; // 原本的 Metadata (目前只需要 match, include, exclude) } +/** + * 脚本加载信息。( service_worker / sandbox / popup 环境用 ) + * 包含脚本元数据与用户配置。 + */ +export interface ScriptLoadInfo extends ScriptRunResource { + /** 脚本元数据字符串 */ + metadataStr: string; + /** 用户配置字符串 */ + userConfigStr: string; + /** 用户配置对象(可选) */ + userConfig?: UserConfig; +} + +/** + * 脚本加载信息。( Inject / Content 环境用,避免过多不必要资讯公开,减少页面加载资讯储存量 ) + * 包含脚本元数据与用户配置。 + */ +export type TScriptInfo = Override< + ScriptLoadInfo, + { + originalMetadata?: Partial>; + resource: Record; + code: "" | string; + sort?: number; + flag: string; + runStatus?: SCRIPT_RUN_STATUS; + type?: SCRIPT_TYPE; + status?: SCRIPT_STATUS; + } +>; + +export type TClientPageLoadInfo = + | { + ok: true; + injectScriptList: TScriptInfo[]; + contentScriptList: TScriptInfo[]; + envInfo: GMInfoEnv; + } + | { ok: false }; + export class ScriptDAO extends Repo