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

Function compileScriptletCode

src/app/service/content/utils.ts:78–94  ·  view source on GitHub ↗
(
  scriptRes: ScriptRunResource,
  scriptCode: string,
  scriptUrlPatterns: URLRuleEntry[]
)

Source from the content-addressed store, hash-verified

76 * @returns
77 */
78export function compileScriptletCode(
79 scriptRes: ScriptRunResource,
80 scriptCode: string,
81 scriptUrlPatterns: URLRuleEntry[]
82): string {
83 scriptCode = scriptCode ?? scriptRes.code;
84 const requireArray = getScriptRequire(scriptRes);
85 const requireCode = requireArray.map((r) => r.content).join("\n;");
86 // 在window[flag]注册一个空脚本让原本的脚本管理器知道并记录脚本成功执行
87 const reducedPatterns = scriptUrlPatterns.map(({ ruleType, ruleContent }) => ({
88 ruleType,
89 ruleContent,
90 })) satisfies EmbeddedURLRuleEntry[];
91 const urlCondition = embeddedPatternCheckerString("location.href", JSON.stringify(reducedPatterns));
92 const codeBody = `if(${urlCondition}){\n${requireCode}\n${scriptCode}\nwindow['${scriptRes.flag}']=function(){};\n}`;
93 return `${codeBody}${sourceMapTo(`${scriptRes.name}.user.js`)}\n`;
94}
95
96/**
97 * 构建脚本运行代码

Callers 3

compileInjectionCodeFunction · 0.90
utils.test.tsFile · 0.90

Calls 3

sourceMapToFunction · 0.90
getScriptRequireFunction · 0.85

Tested by

no test coverage detected