(script: ScriptLoadInfo)
| 189 | * 脚本加载信息。(Inject/Content环境用,避免过多不必要信息公开,减少页面加载信息存储量) |
| 190 | */ |
| 191 | export const trimScriptInfo = (script: ScriptLoadInfo): TScriptInfo => { |
| 192 | // --- 处理 resource --- |
| 193 | // 由于不需要 complie code, resource 只用在 GM_getResourceURL 和 GM_getResourceText |
| 194 | const resource = {} as Record<string, { base64?: string; content: string; contentType: string }>; |
| 195 | if (script.resource) { |
| 196 | for (const [url, { base64, content, contentType }] of Object.entries(script.resource || {})) { |
| 197 | resource[url] = { base64, content, contentType }; |
| 198 | } |
| 199 | } |
| 200 | // --- 处理 resource --- |
| 201 | // --- 处理 scriptInfo --- |
| 202 | const scriptInfo = { ...script, resource, code: "" } as TScriptInfo; |
| 203 | // 删除其他不需要注入的 script 信息 |
| 204 | delete scriptInfo.originalMetadata; |
| 205 | delete scriptInfo.selfMetadata; |
| 206 | delete scriptInfo.lastruntime; |
| 207 | delete scriptInfo.nextruntime; |
| 208 | delete scriptInfo.ignoreVersion; // UserScript 里面不需要知道用户有没有在更新时忽略 |
| 209 | delete scriptInfo.sort; // UserScript 里面不需要知道用户如何 sort |
| 210 | delete scriptInfo.error; |
| 211 | delete scriptInfo.subscribeUrl; // UserScript 里面不需要知道用户从何处订阅 |
| 212 | delete scriptInfo.originDomain; // 脚本来源域名 |
| 213 | delete scriptInfo.origin; // 脚本来源 |
| 214 | delete scriptInfo.runStatus; // 前台脚本不用 |
| 215 | delete scriptInfo.type; // 脚本类型总是普通脚本 |
| 216 | delete scriptInfo.status; // 脚本状态总是启用 |
| 217 | // --- 处理 scriptInfo --- |
| 218 | return scriptInfo; |
| 219 | }; |
| 220 | |
| 221 | /** |
| 222 | * 将脚本函数编译为预注入脚本代码 |
no test coverage detected