(scriptRes: {
metadata: SCMetadata;
originalMetadata: SCMetadata;
selfMetadata?: SCMetadata;
})
| 251 | } |
| 252 | |
| 253 | export 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 | |
| 292 | export const getFaviconRootFolder = (): Promise<FileSystemDirectoryHandle> => { |
| 293 | return navigator.storage |
no test coverage detected