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

Function scriptURLPatternResults

src/app/service/service_worker/utils.ts:253–290  ·  view source on GitHub ↗
(scriptRes: {
  metadata: SCMetadata;
  originalMetadata: SCMetadata;
  selfMetadata?: SCMetadata;
})

Source from the content-addressed store, hash-verified

251}
252
253export function scriptURLPatternResults(scriptRes: {
254 metadata: SCMetadata;
255 originalMetadata: SCMetadata;
256 selfMetadata?: SCMetadata;
257}): {
258 scriptUrlPatterns: URLRuleEntry[];
259 originalUrlPatterns: URLRuleEntry[];
260} | null {
261 const { metadata, originalMetadata } = scriptRes;
262 const metaMatch = metadata.match;
263 const metaInclude = metadata.include;
264 const metaExclude = metadata.exclude;
265 if ((metaMatch?.length ?? 0) + (metaInclude?.length ?? 0) === 0) {
266 return null;
267 }
268
269 // 黑名单排除 统一在脚本注册时添加
270 const scriptUrlPatterns = extractUrlPatterns([
271 ...(metaMatch || []).map((e) => `@match ${e}`),
272 ...(metaInclude || []).map((e) => `@include ${e}`),
273 ...(metaExclude || []).map((e) => `@exclude ${e}`),
274 ]);
275
276 // 如果使用了自定义排除,无法在脚本原有的网域看到匹配情况
277 // 所有统一把原本的pattern都解析一下
278
279 const selfMetadata = scriptRes.selfMetadata;
280 const originalUrlPatterns: URLRuleEntry[] | null =
281 selfMetadata?.match || selfMetadata?.include || selfMetadata?.exclude
282 ? extractUrlPatterns([
283 ...(originalMetadata.match || []).map((e) => `@match ${e}`),
284 ...(originalMetadata.include || []).map((e) => `@include ${e}`),
285 ...(originalMetadata.exclude || []).map((e) => `@exclude ${e}`),
286 ])
287 : scriptUrlPatterns;
288
289 return { scriptUrlPatterns, originalUrlPatterns };
290}
291
292export const getFaviconRootFolder = (): Promise<FileSystemDirectoryHandle> => {
293 return navigator.storage

Callers 1

applyScriptMatchInfoMethod · 0.90

Calls 1

extractUrlPatternsFunction · 0.90

Tested by

no test coverage detected