New static network filter option urlskip= · gorhill/uBlock@266ec48 (original) (raw)

`@@ -191,6 +191,7 @@ export const NODE_TYPE_NET_OPTION_NAME_REPLACE = iota++;

`

191

191

`export const NODE_TYPE_NET_OPTION_NAME_SCRIPT = iota++;

`

192

192

`export const NODE_TYPE_NET_OPTION_NAME_SHIDE = iota++;

`

193

193

`export const NODE_TYPE_NET_OPTION_NAME_TO = iota++;

`

``

194

`+

export const NODE_TYPE_NET_OPTION_NAME_URLSKIP = iota++;

`

194

195

`export const NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM = iota++;

`

195

196

`export const NODE_TYPE_NET_OPTION_NAME_XHR = iota++;

`

196

197

`export const NODE_TYPE_NET_OPTION_NAME_WEBRTC = iota++;

`

`@@ -274,6 +275,7 @@ export const nodeTypeFromOptionName = new Map([

`

274

275

`[ 'shide', NODE_TYPE_NET_OPTION_NAME_SHIDE ],

`

275

276

`/* synonym */ [ 'specifichide', NODE_TYPE_NET_OPTION_NAME_SHIDE ],

`

276

277

`[ 'to', NODE_TYPE_NET_OPTION_NAME_TO ],

`

``

278

`+

[ 'urlskip', NODE_TYPE_NET_OPTION_NAME_URLSKIP ],

`

277

279

`[ 'uritransform', NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM ],

`

278

280

`[ 'xhr', NODE_TYPE_NET_OPTION_NAME_XHR ],

`

279

281

`/* synonym */ [ 'xmlhttprequest', NODE_TYPE_NET_OPTION_NAME_XHR ],

`

`@@ -1441,6 +1443,7 @@ export class AstFilterParser {

`

1441

1443

`case NODE_TYPE_NET_OPTION_NAME_REDIRECT:

`

1442

1444

`case NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE:

`

1443

1445

`case NODE_TYPE_NET_OPTION_NAME_REPLACE:

`

``

1446

`+

case NODE_TYPE_NET_OPTION_NAME_URLSKIP:

`

1444

1447

`case NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM:

`

1445

1448

`realBad = isNegated || (isException || hasValue) === false ||

`

1446

1449

`modifierType !== 0;

`

`@@ -1519,6 +1522,21 @@ export class AstFilterParser {

`

1519

1522

`}

`

1520

1523

`break;

`

1521

1524

`}

`

``

1525

`+

case NODE_TYPE_NET_OPTION_NAME_URLSKIP: {

`

``

1526

`+

realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;

`

``

1527

`+

if ( realBad ) { break; }

`

``

1528

`+

if ( requiresTrustedSource() ) {

`

``

1529

`+

this.astError = AST_ERROR_UNTRUSTED_SOURCE;

`

``

1530

`+

realBad = true;

`

``

1531

`+

break;

`

``

1532

`+

}

`

``

1533

`+

const value = this.getNetOptionValue(NODE_TYPE_NET_OPTION_NAME_URLSKIP);

`

``

1534

`+

if ( value.startsWith('?') === false || value.length < 2 ) {

`

``

1535

`+

this.astError = AST_ERROR_OPTION_BADVALUE;

`

``

1536

`+

realBad = true;

`

``

1537

`+

}

`

``

1538

`+

break;

`

``

1539

`+

}

`

1522

1540

`case NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: {

`

1523

1541

`realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;

`

1524

1542

`if ( realBad ) { break; }

`

`@@ -3139,6 +3157,7 @@ export const netOptionTokenDescriptors = new Map([

`

3139

3157

`[ 'shide', { } ],

`

3140

3158

`/* synonym */ [ 'specifichide', { } ],

`

3141

3159

`[ 'to', { mustAssign: true } ],

`

``

3160

`+

[ 'urlskip', { mustAssign: true } ],

`

3142

3161

`[ 'uritransform', { mustAssign: true } ],

`

3143

3162

`[ 'xhr', { canNegate: true } ],

`

3144

3163

`/* synonym */ [ 'xmlhttprequest', { canNegate: true } ],

`