1
- import { type CosmeticResult , type CosmeticRule } from '@adguard/tsurlfilter' ;
1
+ import { type ScriptletData , type CosmeticResult , type CosmeticRule } from '@adguard/tsurlfilter' ;
2
2
import { CosmeticRuleType } from '@adguard/agtree' ;
3
3
4
4
import { appContext } from './app-context' ;
@@ -13,7 +13,6 @@ import { defaultFilteringLog, FilteringEventType } from '../../common/filtering-
13
13
import { getDomain } from '../../common/utils/url' ;
14
14
import { type ContentType } from '../../common/request-type' ;
15
15
import { nanoid } from '../nanoid' ;
16
- import { type ScriptletRuleData } from '../tabs/frame' ;
17
16
import { localScriptRulesService } from './services/local-script-rules-service' ;
18
17
19
18
export type ContentScriptCosmeticData = {
@@ -45,7 +44,7 @@ type ScriptsAndScriptletsData = {
45
44
/**
46
45
* List of scriptlet data objects.
47
46
*/
48
- scriptletDataList : ScriptletRuleData [ ] ,
47
+ scriptletDataList : ScriptletData [ ] ,
49
48
} ;
50
49
51
50
/**
@@ -198,16 +197,12 @@ export class CosmeticApi extends CosmeticApiCommon {
198
197
for ( let i = 0 ; i < rules . length ; i += 1 ) {
199
198
const rule = rules [ i ] ;
200
199
if ( rule . isScriptlet ) {
201
- const scriptletRunData = rule . getScriptletData ( ) ;
200
+ const scriptletData = rule . getScriptletData ( ) ;
202
201
203
- // it looks like `//scriptlet...` so it will be easily matched against localScriptletRules
204
- const scriptletRuleText = rule . getContent ( ) ;
205
-
206
- if ( scriptletRunData && scriptletRuleText ) {
207
- scriptletDataList . push ( {
208
- scriptletRunData,
209
- scriptletRuleText,
210
- } ) ;
202
+ if ( scriptletData ) {
203
+ scriptletDataList . push (
204
+ scriptletData ,
205
+ ) ;
211
206
}
212
207
} else {
213
208
// TODO: Optimize script injection by checking if common scripts (e.g., AG_)
@@ -349,27 +344,11 @@ export class CosmeticApi extends CosmeticApiCommon {
349
344
350
345
try {
351
346
await Promise . all ( scriptletDataList . map ( ( scriptletData ) => {
352
- /**
353
- * It is possible to follow all places using this logic by searching JS_RULES_EXECUTION.
354
- *
355
- * This is STEP 4.2: Selecting only local scriptlet rules which were pre-built into the extension.
356
- */
357
-
358
- const { scriptletRunData, scriptletRuleText } = scriptletData ;
359
-
360
- /**
361
- * Here we check if the scriptlet rule is local to guarantee that we do not execute remote code.
362
- */
363
- const isLocalScriptlet = localScriptRulesService . isLocalScriptlet ( scriptletRuleText ) ;
364
- if ( ! isLocalScriptlet ) {
365
- return ;
366
- }
367
-
368
347
// eslint-disable-next-line consistent-return
369
348
return ScriptingApi . executeScriptlet ( {
370
349
tabId,
371
350
frameId,
372
- scriptletRunData ,
351
+ scriptletData ,
373
352
domainName : getDomain ( frameContext . url ) ,
374
353
} ) ;
375
354
} ) ) ;
@@ -511,10 +490,7 @@ export class CosmeticApi extends CosmeticApiCommon {
511
490
512
491
// do not log rules if they are not local
513
492
// which means that will not be applied
514
- if (
515
- ! localScriptRulesService . isLocalScript ( ruleText )
516
- && ! localScriptRulesService . isLocalScriptlet ( ruleText )
517
- ) {
493
+ if ( ! localScriptRulesService . isLocalScript ( ruleText ) ) {
518
494
continue ;
519
495
}
520
496
0 commit comments