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 } ],
`