Skip to content

Commit e5a0887

Browse files
committed
Keep moving related scriptlets into separate files
1 parent ce4908b commit e5a0887

File tree

8 files changed

+351
-340
lines changed

8 files changed

+351
-340
lines changed

assets/resources/attribute.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
web page context.
2323
*/
2424

25+
import { registerScriptlet } from './base.js';
2526
import { runAt } from './run-at.js';
2627
import { safeSelf } from './safe-self.js';
2728

@@ -95,13 +96,13 @@ export function setAttrFn(
9596
};
9697
runAt(( ) => { start(); }, 'idle');
9798
}
98-
setAttrFn.details = {
99+
registerScriptlet(setAttrFn, {
99100
name: 'set-attr.fn',
100101
dependencies: [
101102
runAt,
102103
safeSelf,
103104
],
104-
};
105+
});
105106

106107
/**
107108
* @scriptlet set-attr
@@ -149,14 +150,14 @@ export function setAttr(
149150

150151
setAttrFn(logPrefix, selector, attr, value);
151152
}
152-
setAttr.details = {
153+
registerScriptlet(setAttr, {
153154
name: 'set-attr.js',
154155
dependencies: [
155156
safeSelf,
156157
setAttrFn,
157158
],
158159
world: 'ISOLATED',
159-
};
160+
});
160161

161162
/**
162163
* @trustedScriptlet trusted-set-attr
@@ -188,15 +189,15 @@ export function trustedSetAttr(
188189
const logPrefix = safe.makeLogPrefix('trusted-set-attr', selector, attr, value);
189190
setAttrFn(logPrefix, selector, attr, value);
190191
}
191-
trustedSetAttr.details = {
192+
registerScriptlet(trustedSetAttr, {
192193
name: 'trusted-set-attr.js',
193194
requiresTrust: true,
194195
dependencies: [
195196
safeSelf,
196197
setAttrFn,
197198
],
198199
world: 'ISOLATED',
199-
};
200+
});
200201

201202
/**
202203
* @scriptlet remove-attr
@@ -291,7 +292,7 @@ export function removeAttr(
291292
};
292293
runAt(( ) => { start(); }, behavior.split(/\s+/));
293294
}
294-
removeAttr.details = {
295+
registerScriptlet(removeAttr, {
295296
name: 'remove-attr.js',
296297
aliases: [
297298
'ra.js',
@@ -300,6 +301,6 @@ removeAttr.details = {
300301
runAt,
301302
safeSelf,
302303
],
303-
};
304+
});
304305

305306
/******************************************************************************/

assets/resources/base.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*******************************************************************************
2+
3+
uBlock Origin - a comprehensive, efficient content blocker
4+
Copyright (C) 2019-present Raymond Hill
5+
6+
This program is free software: you can redistribute it and/or modify
7+
it under the terms of the GNU General Public License as published by
8+
the Free Software Foundation, either version 3 of the License, or
9+
(at your option) any later version.
10+
11+
This program is distributed in the hope that it will be useful,
12+
but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
GNU General Public License for more details.
15+
16+
You should have received a copy of the GNU General Public License
17+
along with this program. If not, see {http://www.gnu.org/licenses/}.
18+
19+
Home: https://github.com/gorhill/uBlock
20+
21+
The scriptlets below are meant to be injected only into a
22+
web page context.
23+
*/
24+
25+
export const registeredScriptlets = [];
26+
27+
export const registerScriptlet = (fn, details) => {
28+
if ( typeof details !== 'object' ) {
29+
throw new ReferenceError('Missing scriptlet details');
30+
}
31+
details.fn = fn;
32+
fn.details = details;
33+
if ( Array.isArray(details.dependencies) ) {
34+
details.dependencies.forEach((fn, i, array) => {
35+
if ( typeof fn !== 'function' ) { return; }
36+
array[i] = fn.details.name;
37+
});
38+
}
39+
registeredScriptlets.push(details);
40+
};

assets/resources/cookie.js

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
web page context.
2323
*/
2424

25+
import { registerScriptlet } from './base.js';
2526
import { safeSelf } from './safe-self.js';
2627

2728
/******************************************************************************/
@@ -47,9 +48,9 @@ export function getSafeCookieValuesFn() {
4748
'yes', 'y', 'no', 'n',
4849
];
4950
}
50-
getSafeCookieValuesFn.details = {
51+
registerScriptlet(getSafeCookieValuesFn, {
5152
name: 'get-safe-cookie-values.fn',
52-
};
53+
});
5354

5455
/******************************************************************************/
5556

@@ -63,9 +64,9 @@ export function getAllCookiesFn() {
6364
return { key, value };
6465
}).filter(s => s !== undefined);
6566
}
66-
getAllCookiesFn.details = {
67+
registerScriptlet(getAllCookiesFn, {
6768
name: 'get-all-cookies.fn',
68-
};
69+
});
6970

7071
/******************************************************************************/
7172

@@ -79,9 +80,9 @@ export function getCookieFn(
7980
return s.slice(pos+1).trim();
8081
}
8182
}
82-
getCookieFn.details = {
83+
registerScriptlet(getCookieFn, {
8384
name: 'get-cookie.fn',
84-
};
85+
});
8586

8687
/******************************************************************************/
8788

@@ -142,12 +143,12 @@ export function setCookieFn(
142143

143144
return done;
144145
}
145-
setCookieFn.details = {
146+
registerScriptlet(setCookieFn, {
146147
name: 'set-cookie.fn',
147148
dependencies: [
148-
'get-cookie.fn',
149+
getCookieFn,
149150
],
150-
};
151+
});
151152

152153
/**
153154
* @scriptlet set-cookie
@@ -200,27 +201,27 @@ export function setCookie(
200201
safe.uboLog(logPrefix, 'Done');
201202
}
202203
}
203-
setCookie.details = {
204+
registerScriptlet(setCookie, {
204205
name: 'set-cookie.js',
205206
world: 'ISOLATED',
206207
dependencies: [
207-
'get-safe-cookie-values.fn',
208-
'safe-self.fn',
209-
'set-cookie.fn',
208+
getSafeCookieValuesFn,
209+
safeSelf,
210+
setCookieFn,
210211
],
211-
};
212+
});
212213

213214
// For compatibility with AdGuard
214215
export function setCookieReload(name, value, path, ...args) {
215216
setCookie(name, value, path, 'reload', '1', ...args);
216217
}
217-
setCookieReload.details = {
218+
registerScriptlet(setCookieReload, {
218219
name: 'set-cookie-reload.js',
219220
world: 'ISOLATED',
220221
dependencies: [
221-
'set-cookie.js',
222+
setCookie,
222223
],
223-
};
224+
});
224225

225226
/**
226227
* @trustedScriptlet trusted-set-cookie
@@ -294,28 +295,28 @@ export function trustedSetCookie(
294295
safe.uboLog(logPrefix, 'Done');
295296
}
296297
}
297-
trustedSetCookie.details = {
298+
registerScriptlet(trustedSetCookie, {
298299
name: 'trusted-set-cookie.js',
299300
requiresTrust: true,
300301
world: 'ISOLATED',
301302
dependencies: [
302-
'safe-self.fn',
303-
'set-cookie.fn',
303+
safeSelf,
304+
setCookieFn,
304305
],
305-
};
306+
});
306307

307308
// For compatibility with AdGuard
308309
export function trustedSetCookieReload(name, value, offsetExpiresSec, path, ...args) {
309310
trustedSetCookie(name, value, offsetExpiresSec, path, 'reload', '1', ...args);
310311
}
311-
trustedSetCookieReload.details = {
312+
registerScriptlet(trustedSetCookieReload, {
312313
name: 'trusted-set-cookie-reload.js',
313314
requiresTrust: true,
314315
world: 'ISOLATED',
315316
dependencies: [
316-
'trusted-set-cookie.js',
317+
trustedSetCookie,
317318
],
318-
};
319+
});
319320

320321
/**
321322
* @scriptlet remove-cookie
@@ -396,15 +397,15 @@ export function removeCookie(
396397
}, { passive: true });
397398
}
398399
}
399-
removeCookie.details = {
400+
registerScriptlet(removeCookie, {
400401
name: 'remove-cookie.js',
401402
aliases: [
402403
'cookie-remover.js',
403404
],
404405
world: 'ISOLATED',
405406
dependencies: [
406-
'safe-self.fn',
407+
safeSelf,
407408
],
408-
};
409+
});
409410

410411
/******************************************************************************/

0 commit comments

Comments
 (0)