Add any-delay to timeout/interval boosters · gorhill/uBlock@001f5a6 (original) (raw)

`@@ -468,40 +468,40 @@

`

468

468

`// to match all.

`

469

469

`// delayMatcher

`

470

470

`// The delay matcher, an integer, defaults to 1000.

`

``

471

`` +

// Use * to match any delay.

``

471

472

`// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by

`

472

473

`// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up

`

473

474

`// 20 times. Speed up and down both cap at 50 times.

`

474

475

`/// nano-setInterval-booster.js

`

475

476

`/// alias nano-sib.js

`

476

477

`(function() {

`

477

``

`-

let needle = '{{1}}';

`

478

``

`-

let delay = parseInt('{{2}}', 10);

`

479

``

`-

let boost = parseFloat('{{3}}');

`

480

``

`-

if ( needle === '' || needle === '{{1}}' ) {

`

481

``

`-

needle = '.?';

`

482

``

`-

} else if ( needle.charAt(0) === '/' && needle.slice(-1) === '/' ) {

`

483

``

`-

needle = needle.slice(1, -1);

`

``

478

`+

let needleArg = '{{1}}';

`

``

479

`+

if ( needleArg === '{{1}}' ) { needleArg = ''; }

`

``

480

`+

let delayArg = '{{2}}';

`

``

481

`+

if ( delayArg === '{{2}}' ) { delayArg = ''; }

`

``

482

`+

let boostArg = '{{3}}';

`

``

483

`+

if ( boostArg === '{{3}}' ) { boostArg = ''; }

`

``

484

`+

if ( needleArg === '' ) {

`

``

485

`+

needleArg = '.?';

`

``

486

`+

} else if ( needleArg.charAt(0) === '/' && needleArg.slice(-1) === '/' ) {

`

``

487

`+

needleArg = needleArg.slice(1, -1);

`

484

488

`} else {

`

485

``

`-

needle = needle.replace(/[.*+?^${}()|[]\]/g, '\$&');

`

486

``

`-

}

`

487

``

`-

needle = new RegExp(needle);

`

488

``

`-

if ( isNaN(delay) || !isFinite(delay) ) {

`

489

``

`-

delay = 1000;

`

490

``

`-

}

`

491

``

`-

if ( isNaN(boost) || !isFinite(boost) ) {

`

492

``

`-

boost = 0.05;

`

``

489

`+

needleArg = needleArg.replace(/[.*+?^${}()|[]\]/g, '\$&');

`

493

490

`}

`

494

``

`-

if ( boost < 0.02 ) {

`

495

``

`-

boost = 0.02;

`

496

``

`-

}

`

497

``

`-

if ( boost > 50 ) {

`

498

``

`-

boost = 50;

`

499

``

`-

}

`

500

``

`-

window.setInterval = new Proxy(window.setInterval, {

`

``

491

`+

const reNeedle = new RegExp(needleArg);

`

``

492

`+

let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1;

`

``

493

`+

if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; }

`

``

494

`+

let boost = parseFloat(boostArg);

`

``

495

`+

boost = isNaN(boost) === false && isFinite(boost)

`

``

496

`+

? Math.min(Math.max(boost, 0.02), 50)

`

``

497

`+

: 0.05;

`

``

498

`+

self.setInterval = new Proxy(self.setInterval, {

`

501

499

`apply: function(target, thisArg, args) {

`

502

``

`-

const a = args[0];

`

503

``

`-

const b = args[1];

`

504

``

`-

if ( b === delay && needle.test(a.toString()) ) {

`

``

500

`+

const [ a, b ] = args;

`

``

501

`+

if (

`

``

502

`+

(delay === -1 || b === delay) &&

`

``

503

`+

reNeedle.test(a.toString())

`

``

504

`+

) {

`

505

505

`args[1] = b * boost;

`

506

506

`}

`

507

507

`return target.apply(thisArg, args);

`

`@@ -519,40 +519,40 @@

`

519

519

`// to match all.

`

520

520

`// delayMatcher

`

521

521

`// The delay matcher, an integer, defaults to 1000.

`

``

522

`` +

// Use * to match any delay.

``

522

523

`// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by

`

523

524

`// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up

`

524

525

`// 20 times. Speed up and down both cap at 50 times.

`

525

526

`/// nano-setTimeout-booster.js

`

526

527

`/// alias nano-stb.js

`

527

528

`(function() {

`

528

``

`-

let needle = '{{1}}';

`

529

``

`-

let delay = parseInt('{{2}}', 10);

`

530

``

`-

let boost = parseFloat('{{3}}');

`

531

``

`-

if ( needle === '' || needle === '{{1}}' ) {

`

532

``

`-

needle = '.?';

`

533

``

`-

} else if ( needle.startsWith('/') && needle.endsWith('/') ) {

`

534

``

`-

needle = needle.slice(1, -1);

`

``

529

`+

let needleArg = '{{1}}';

`

``

530

`+

if ( needleArg === '{{1}}' ) { needleArg = ''; }

`

``

531

`+

let delayArg = '{{2}}';

`

``

532

`+

if ( delayArg === '{{2}}' ) { delayArg = ''; }

`

``

533

`+

let boostArg = '{{3}}';

`

``

534

`+

if ( boostArg === '{{3}}' ) { boostArg = ''; }

`

``

535

`+

if ( needleArg === '' ) {

`

``

536

`+

needleArg = '.?';

`

``

537

`+

} else if ( needleArg.charAt(0) === '/' && needleArg.slice(-1) === '/' ) {

`

``

538

`+

needleArg = needleArg.slice(1, -1);

`

535

539

`} else {

`

536

``

`-

needle = needle.replace(/[.*+?^${}()|[]\]/g, '\$&');

`

537

``

`-

}

`

538

``

`-

needle = new RegExp(needle);

`

539

``

`-

if ( isNaN(delay) || !isFinite(delay) ) {

`

540

``

`-

delay = 1000;

`

541

``

`-

}

`

542

``

`-

if ( isNaN(boost) || !isFinite(boost) ) {

`

543

``

`-

boost = 0.05;

`

``

540

`+

needleArg = needleArg.replace(/[.*+?^${}()|[]\]/g, '\$&');

`

544

541

`}

`

545

``

`-

if ( boost < 0.02 ) {

`

546

``

`-

boost = 0.02;

`

547

``

`-

}

`

548

``

`-

if ( boost > 50 ) {

`

549

``

`-

boost = 50;

`

550

``

`-

}

`

551

``

`-

window.setTimeout = new Proxy(window.setTimeout, {

`

``

542

`+

const reNeedle = new RegExp(needleArg);

`

``

543

`+

let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1;

`

``

544

`+

if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; }

`

``

545

`+

let boost = parseFloat(boostArg);

`

``

546

`+

boost = isNaN(boost) === false && isFinite(boost)

`

``

547

`+

? Math.min(Math.max(boost, 0.02), 50)

`

``

548

`+

: 0.05;

`

``

549

`+

self.setTimeout = new Proxy(self.setTimeout, {

`

552

550

`apply: function(target, thisArg, args) {

`

553

``

`-

const a = args[0];

`

554

``

`-

const b = args[1];

`

555

``

`-

if ( b === delay && needle.test(a.toString()) ) {

`

``

551

`+

const [ a, b ] = args;

`

``

552

`+

if (

`

``

553

`+

(delay === -1 || b === delay) &&

`

``

554

`+

reNeedle.test(a.toString())

`

``

555

`+

) {

`

556

556

`args[1] = b * boost;

`

557

557

`}

`

558

558

`return target.apply(thisArg, args);

`