Skip to content

Commit 505fbc7

Browse files
committed
Revisit scriptlets' getExtraArgs implementation
1 parent ac55a03 commit 505fbc7

15 files changed

Lines changed: 95 additions & 75 deletions

src/js/resources/attribute.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ registerScriptlet(setAttrFn, {
132132
export function setAttr(
133133
selector = '',
134134
attr = '',
135-
value = ''
135+
value = '',
136+
...varargs
136137
) {
137138
const safe = safeSelf();
138139
const logPrefix = safe.makeLogPrefix('set-attr', selector, attr, value);
@@ -146,7 +147,7 @@ export function setAttr(
146147
return;
147148
}
148149
}
149-
const options = safe.getExtraArgs(Array.from(arguments), 3);
150+
const options = safe.parseVarargs(varargs);
150151
setAttrFn(false, logPrefix, selector, attr, value, options);
151152
}
152153
registerScriptlet(setAttr, {
@@ -182,11 +183,12 @@ registerScriptlet(setAttr, {
182183
export function trustedSetAttr(
183184
selector = '',
184185
attr = '',
185-
value = ''
186+
value = '',
187+
...varargs
186188
) {
187189
const safe = safeSelf();
188190
const logPrefix = safe.makeLogPrefix('trusted-set-attr', selector, attr, value);
189-
const options = safe.getExtraArgs(Array.from(arguments), 3);
191+
const options = safe.parseVarargs(varargs);
190192
setAttrFn(true, logPrefix, selector, attr, value, options);
191193
}
192194
registerScriptlet(trustedSetAttr, {

src/js/resources/cookie.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ registerScriptlet(setCookieFn, {
193193
export function setCookie(
194194
name = '',
195195
value = '',
196-
path = ''
196+
path = '',
197+
...varargs
197198
) {
198199
if ( name === '' ) { return; }
199200
const safe = safeSelf();
@@ -214,7 +215,7 @@ export function setCookie(
214215
value,
215216
'',
216217
path,
217-
safe.getExtraArgs(Array.from(arguments), 3)
218+
safe.parseVarargs(varargs)
218219
);
219220

220221
if ( done ) {
@@ -271,7 +272,8 @@ export function trustedSetCookie(
271272
name = '',
272273
value = '',
273274
offsetExpiresSec = '',
274-
path = ''
275+
path = '',
276+
...varargs
275277
) {
276278
if ( name === '' ) { return; }
277279

@@ -308,7 +310,7 @@ export function trustedSetCookie(
308310
value,
309311
expires,
310312
path,
311-
safeSelf().getExtraArgs(Array.from(arguments), 4)
313+
safe.parseVarargs(varargs)
312314
);
313315

314316
if ( done ) {
@@ -357,12 +359,13 @@ registerScriptlet(trustedSetCookieReload, {
357359
* */
358360

359361
export function removeCookie(
360-
needle = ''
362+
needle = '',
363+
...varargs
361364
) {
362365
if ( typeof needle !== 'string' ) { return; }
363366
const safe = safeSelf();
364367
const reName = safe.patternToRegex(needle);
365-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 1);
368+
const extraArgs = safe.parseVarargs(varargs);
366369
const throttle = (fn, ms = 500) => {
367370
if ( throttle.timer !== undefined ) { return; }
368371
throttle.timer = setTimeout(( ) => {

src/js/resources/create-html.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,14 @@ import { safeSelf } from './safe-self.js';
5050
function trustedCreateHTML(
5151
parentSelector,
5252
htmlStr = '',
53-
durationStr = ''
53+
durationStr = '',
54+
...varargs
5455
) {
5556
if ( parentSelector === '' ) { return; }
5657
if ( htmlStr === '' ) { return; }
5758
const safe = safeSelf();
5859
const logPrefix = safe.makeLogPrefix('trusted-create-html', parentSelector, htmlStr, durationStr);
59-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
60+
const extraArgs = safe.parseVarargs(varargs);
6061
// We do not want to recursively create elements
6162
self.trustedCreateHTML = true;
6263
let ancestor = self.frameElement;

src/js/resources/json-edit.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ registerScriptlet(trustedEditElementObject, {
732732
/******************************************************************************/
733733
/******************************************************************************/
734734

735-
function jsonEditXhrResponseFn(trusted, jsonq = '') {
735+
function jsonEditXhrResponseFn(trusted, jsonq = '', ...varargs) {
736736
const safe = safeSelf();
737737
const logPrefix = safe.makeLogPrefix(
738738
`${trusted ? 'trusted-' : ''}json-edit-xhr-response`,
@@ -743,7 +743,7 @@ function jsonEditXhrResponseFn(trusted, jsonq = '') {
743743
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
744744
return safe.uboLog(logPrefix, 'Bad JSONPath query');
745745
}
746-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
746+
const extraArgs = safe.parseVarargs(varargs);
747747
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
748748
self.XMLHttpRequest = class extends self.XMLHttpRequest {
749749
open(method, url, ...args) {
@@ -867,7 +867,7 @@ registerScriptlet(trustedJsonEditXhrResponse, {
867867
/******************************************************************************/
868868
/******************************************************************************/
869869

870-
function jsonEditXhrRequestFn(trusted, jsonq = '') {
870+
function jsonEditXhrRequestFn(trusted, jsonq = '', ...varargs) {
871871
const safe = safeSelf();
872872
const logPrefix = safe.makeLogPrefix(
873873
`${trusted ? 'trusted-' : ''}json-edit-xhr-request`,
@@ -878,7 +878,7 @@ function jsonEditXhrRequestFn(trusted, jsonq = '') {
878878
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
879879
return safe.uboLog(logPrefix, 'Bad JSONPath query');
880880
}
881-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
881+
const extraArgs = safe.parseVarargs(varargs);
882882
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
883883
self.XMLHttpRequest = class extends self.XMLHttpRequest {
884884
open(method, url, ...args) {
@@ -985,7 +985,7 @@ registerScriptlet(trustedJsonEditXhrRequest, {
985985
/******************************************************************************/
986986
/******************************************************************************/
987987

988-
function jsonEditFetchResponseFn(trusted, jsonq = '') {
988+
function jsonEditFetchResponseFn(trusted, jsonq = '', ...varargs) {
989989
const safe = safeSelf();
990990
const logPrefix = safe.makeLogPrefix(
991991
`${trusted ? 'trusted-' : ''}json-edit-fetch-response`,
@@ -995,7 +995,7 @@ function jsonEditFetchResponseFn(trusted, jsonq = '') {
995995
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
996996
return safe.uboLog(logPrefix, 'Bad JSONPath query');
997997
}
998-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
998+
const extraArgs = safe.parseVarargs(varargs);
999999
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
10001000
proxyApplyFn('fetch', function(context) {
10011001
const args = context.callArgs;
@@ -1107,7 +1107,7 @@ registerScriptlet(trustedJsonEditFetchResponse, {
11071107
/******************************************************************************/
11081108
/******************************************************************************/
11091109

1110-
function jsonEditFetchRequestFn(trusted, jsonq = '') {
1110+
function jsonEditFetchRequestFn(trusted, jsonq = '', ...varargs) {
11111111
const safe = safeSelf();
11121112
const logPrefix = safe.makeLogPrefix(
11131113
`${trusted ? 'trusted-' : ''}json-edit-fetch-request`,
@@ -1117,7 +1117,7 @@ function jsonEditFetchRequestFn(trusted, jsonq = '') {
11171117
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
11181118
return safe.uboLog(logPrefix, 'Bad JSONPath query');
11191119
}
1120-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
1120+
const extraArgs = safe.parseVarargs(varargs);
11211121
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
11221122
const filterBody = body => {
11231123
if ( typeof body !== 'string' ) { return; }
@@ -1256,7 +1256,7 @@ registerScriptlet(jsonlEditFn, {
12561256

12571257
/******************************************************************************/
12581258

1259-
function jsonlEditXhrResponseFn(trusted, jsonq = '') {
1259+
function jsonlEditXhrResponseFn(trusted, jsonq = '', ...varargs) {
12601260
const safe = safeSelf();
12611261
const logPrefix = safe.makeLogPrefix(
12621262
`${trusted ? 'trusted-' : ''}jsonl-edit-xhr-response`,
@@ -1267,7 +1267,7 @@ function jsonlEditXhrResponseFn(trusted, jsonq = '') {
12671267
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
12681268
return safe.uboLog(logPrefix, 'Bad JSONPath query');
12691269
}
1270-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
1270+
const extraArgs = safe.parseVarargs(varargs);
12711271
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
12721272
self.XMLHttpRequest = class extends self.XMLHttpRequest {
12731273
open(method, url, ...args) {
@@ -1384,7 +1384,7 @@ registerScriptlet(trustedJsonlEditXhrResponse, {
13841384
/******************************************************************************/
13851385
/******************************************************************************/
13861386

1387-
function jsonlEditFetchResponseFn(trusted, jsonq = '') {
1387+
function jsonlEditFetchResponseFn(trusted, jsonq = '', ...varargs) {
13881388
const safe = safeSelf();
13891389
const logPrefix = safe.makeLogPrefix(
13901390
`${trusted ? 'trusted-' : ''}jsonl-edit-fetch-response`,
@@ -1394,7 +1394,7 @@ function jsonlEditFetchResponseFn(trusted, jsonq = '') {
13941394
if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) {
13951395
return safe.uboLog(logPrefix, 'Bad JSONPath query');
13961396
}
1397-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
1397+
const extraArgs = safe.parseVarargs(varargs);
13981398
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
13991399
const logall = jsonq === '';
14001400
proxyApplyFn('fetch', function(context) {

src/js/resources/json-prune.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ import { safeSelf } from './safe-self.js';
3636
function jsonPrune(
3737
rawPrunePaths = '',
3838
rawNeedlePaths = '',
39-
stackNeedle = ''
39+
stackNeedle = '',
40+
...varargs
4041
) {
4142
const safe = safeSelf();
4243
const logPrefix = safe.makeLogPrefix('json-prune', rawPrunePaths, rawNeedlePaths, stackNeedle);
4344
const stackNeedleDetails = safe.initPattern(stackNeedle, { canNegate: true });
44-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
45+
const extraArgs = safe.parseVarargs(varargs);
4546
proxyApplyFn('JSON.parse', function(context) {
4647
const objBefore = context.reflect();
4748
if ( rawPrunePaths === '' ) {
@@ -75,11 +76,12 @@ registerScriptlet(jsonPrune, {
7576

7677
function jsonPruneFetchResponse(
7778
rawPrunePaths = '',
78-
rawNeedlePaths = ''
79+
rawNeedlePaths = '',
80+
...varargs
7981
) {
8082
const safe = safeSelf();
8183
const logPrefix = safe.makeLogPrefix('json-prune-fetch-response', rawPrunePaths, rawNeedlePaths);
82-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
84+
const extraArgs = safe.parseVarargs(varargs);
8385
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
8486
const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true });
8587
const logall = rawPrunePaths === '';
@@ -150,12 +152,13 @@ registerScriptlet(jsonPruneFetchResponse, {
150152

151153
function jsonPruneXhrResponse(
152154
rawPrunePaths = '',
153-
rawNeedlePaths = ''
155+
rawNeedlePaths = '',
156+
...varargs
154157
) {
155158
const safe = safeSelf();
156159
const logPrefix = safe.makeLogPrefix('json-prune-xhr-response', rawPrunePaths, rawNeedlePaths);
157160
const xhrInstances = new WeakMap();
158-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
161+
const extraArgs = safe.parseVarargs(varargs);
159162
const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
160163
const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true });
161164
self.XMLHttpRequest = class extends self.XMLHttpRequest {

src/js/resources/localstorage.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ registerScriptlet(removeCacheStorageItem, {
191191
*
192192
**/
193193

194-
export function setLocalStorageItem(key = '', value = '') {
194+
export function setLocalStorageItem(key = '', value = '', ...varargs) {
195195
const safe = safeSelf();
196-
const options = safe.getExtraArgs(Array.from(arguments), 2)
196+
const options = safe.parseVarargs(varargs)
197197
setLocalStorageItemFn('local', false, key, value, options);
198198
}
199199
registerScriptlet(setLocalStorageItem, {
@@ -205,9 +205,9 @@ registerScriptlet(setLocalStorageItem, {
205205
],
206206
});
207207

208-
export function setSessionStorageItem(key = '', value = '') {
208+
export function setSessionStorageItem(key = '', value = '', ...varargs) {
209209
const safe = safeSelf();
210-
const options = safe.getExtraArgs(Array.from(arguments), 2)
210+
const options = safe.parseVarargs(varargs)
211211
setLocalStorageItemFn('session', false, key, value, options);
212212
}
213213
registerScriptlet(setSessionStorageItem, {
@@ -230,9 +230,9 @@ registerScriptlet(setSessionStorageItem, {
230230
*
231231
**/
232232

233-
export function trustedSetLocalStorageItem(key = '', value = '') {
233+
export function trustedSetLocalStorageItem(key = '', value = '', ...varargs) {
234234
const safe = safeSelf();
235-
const options = safe.getExtraArgs(Array.from(arguments), 2)
235+
const options = safe.parseVarargs(varargs)
236236
setLocalStorageItemFn('local', true, key, value, options);
237237
}
238238
registerScriptlet(trustedSetLocalStorageItem, {
@@ -245,9 +245,9 @@ registerScriptlet(trustedSetLocalStorageItem, {
245245
],
246246
});
247247

248-
export function trustedSetSessionStorageItem(key = '', value = '') {
248+
export function trustedSetSessionStorageItem(key = '', value = '', ...varargs) {
249249
const safe = safeSelf();
250-
const options = safe.getExtraArgs(Array.from(arguments), 2)
250+
const options = safe.parseVarargs(varargs)
251251
setLocalStorageItemFn('session', true, key, value, options);
252252
}
253253
registerScriptlet(trustedSetSessionStorageItem, {

src/js/resources/object-prune.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ function trustedPruneInboundObject(
163163
entryPoint = '',
164164
argPos = '',
165165
rawPrunePaths = '',
166-
rawNeedlePaths = ''
166+
rawNeedlePaths = '',
167+
...varargs
167168
) {
168169
if ( entryPoint === '' ) { return; }
169170
let context = globalThis;
@@ -180,7 +181,7 @@ function trustedPruneInboundObject(
180181
if ( isNaN(argIndex) ) { return; }
181182
if ( argIndex < 1 ) { return; }
182183
const safe = safeSelf();
183-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 4);
184+
const extraArgs = safe.parseVarargs(varargs);
184185
const needlePaths = [];
185186
if ( rawPrunePaths !== '' ) {
186187
needlePaths.push(...safe.String_split.call(rawPrunePaths, / +/));
@@ -241,11 +242,12 @@ registerScriptlet(trustedPruneInboundObject, {
241242
function trustedPruneOutboundObject(
242243
propChain = '',
243244
rawPrunePaths = '',
244-
rawNeedlePaths = ''
245+
rawNeedlePaths = '',
246+
...varargs
245247
) {
246248
if ( propChain === '' ) { return; }
247249
const safe = safeSelf();
248-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
250+
const extraArgs = safe.parseVarargs(varargs);
249251
proxyApplyFn(propChain, function(context) {
250252
const objBefore = context.reflect();
251253
if ( objBefore instanceof Object === false ) { return objBefore; }

src/js/resources/prevent-addeventlistener.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ import { safeSelf } from './safe-self.js';
5555

5656
function preventAddEventListener(
5757
type = '',
58-
pattern = ''
58+
pattern = '',
59+
...varargs
5960
) {
6061
const safe = safeSelf();
61-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
62+
const extraArgs = safe.parseVarargs(varargs);
6263
const logPrefix = safe.makeLogPrefix('prevent-addEventListener', type, pattern);
6364
const reType = safe.patternToRegex(type, undefined, true);
6465
const rePattern = safe.patternToRegex(pattern);

src/js/resources/prevent-clipboard-write.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ import { safeSelf } from './safe-self.js';
4747
*
4848
* */
4949

50-
function preventClipboardWrite(matches = '') {
50+
function preventClipboardWrite(matches = '', ...varargs) {
5151
const safe = safeSelf();
5252
const logPrefix = safe.makeLogPrefix('prevent-clipboard-write');
5353
const pattern = safe.initPattern(matches);
54-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 1);
54+
const extraArgs = safe.parseVarargs(varargs);
5555
const excludePattern = extraArgs.excludeMatches &&
5656
safe.initPattern(extraArgs.excludeMatches);
5757
const domAlert = clipboardText => {

src/js/resources/prevent-fetch.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ function preventFetchFn(
3636
trusted = false,
3737
propsToMatch = '',
3838
responseBody = '',
39-
responseType = ''
39+
responseType = '',
40+
...varargs
4041
) {
4142
const safe = safeSelf();
4243
const setTimeout = self.setTimeout;
@@ -47,7 +48,7 @@ function preventFetchFn(
4748
responseBody,
4849
responseType
4950
);
50-
const extraArgs = safe.getExtraArgs(Array.from(arguments), 4);
51+
const extraArgs = safe.parseVarargs(varargs);
5152
const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url');
5253
const validResponseProps = {
5354
ok: [ false, true ],

0 commit comments

Comments
 (0)