Skip to content

Commit 001f5a6

Browse files
committed
Add any-delay to timeout/interval boosters
Using `*` as delay argument will match any delay. As per internal feedback from filter list maintainers.
1 parent 5657bc4 commit 001f5a6

File tree

1 file changed

+50
-50
lines changed

1 file changed

+50
-50
lines changed

assets/resources/scriptlets.js

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -468,40 +468,40 @@
468468
// to match all.
469469
// delayMatcher
470470
// The delay matcher, an integer, defaults to 1000.
471+
// Use `*` to match any delay.
471472
// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by
472473
// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up
473474
// 20 times. Speed up and down both cap at 50 times.
474475
/// nano-setInterval-booster.js
475476
/// alias nano-sib.js
476477
(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);
484488
} 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, '\\$&');
493490
}
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, {
501499
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+
) {
505505
args[1] = b * boost;
506506
}
507507
return target.apply(thisArg, args);
@@ -519,40 +519,40 @@
519519
// to match all.
520520
// delayMatcher
521521
// The delay matcher, an integer, defaults to 1000.
522+
// Use `*` to match any delay.
522523
// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by
523524
// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up
524525
// 20 times. Speed up and down both cap at 50 times.
525526
/// nano-setTimeout-booster.js
526527
/// alias nano-stb.js
527528
(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);
535539
} 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, '\\$&');
544541
}
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, {
552550
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+
) {
556556
args[1] = b * boost;
557557
}
558558
return target.apply(thisArg, args);

0 commit comments

Comments
 (0)