Raymond Hill
45e62c939f
Add support for `extraMatch` in `trusted-click-element` scriptlet
...
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/20744#issuecomment-1900710708
Reference documentation:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#-%EF%B8%8F-trusted-click-element
Except that in uBO's implementation, if a regex is given as value
to match, it will be tested against an assembled "key=value"
string.
2024-01-20 10:33:36 -05:00
Raymond Hill
534d877e95
Shield some code paths against potentially tampered global properties
...
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/21895#issuecomment-1887472623
2024-01-11 11:41:37 -05:00
Raymond Hill
060f9d68fc
Add `elements` vararg to `prevent-addEventListener` scriptlet
...
If present, `elements` vararg must be a valid CSS selector, which will
be used to apply the scriptlet to only elements matching the
selector.
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3061
Example of usage:
[...]##+js(aeld, click, return"undefined", elements, a.indirect)
2024-01-10 12:46:23 -05:00
Raymond Hill
e1ae17ed00
Improve `prevent-fetch` scriptlet
...
Related issue:
https://github.com/AdguardTeam/AdguardFilters/issues/153796
2024-01-01 10:24:47 -05:00
Raymond Hill
d7063a052f
Improve `xml-prune` scriptlet
...
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/21532
2023-12-22 10:15:37 -05:00
Raymond Hill
d01ad24291
Improve `no-xhr-if` scriptlet
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2518
2023-12-10 15:21:29 -05:00
Raymond Hill
fddca0b7cb
Log all by default when needle is empty in `aost` scriptlet
...
As discussed with filter list maintainers.
2023-12-06 10:17:19 -05:00
Raymond Hill
a969a672e0
Change official description in source code top comment
2023-12-04 12:10:34 -05:00
Raymond Hill
941077a25c
Support shadow-piercing combinator `>>>` in `trusted-click-element`
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2971
Example usage:
...##+js(trusted-trusted-click-element, #cmpwrapper >>> .cmpboxbtnyes)
The substring before ` >>> ` must select an element with a non-null
shadow root, in which case the substring after ` >>> ` will be used
to find the element in the targeted shadow root. ` >>> ` can be used
recursively when multiple shadow root must be pierced.
2023-12-04 08:02:07 -05:00
Raymond Hill
6aeab2adbc
Improve `prevent-fetch` scriptlet
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2526
Improvements:
Support fulfilling the response with the content of a
`web_accessible_resources` resource, using the syntax already
supported by `prevent-xhr`: `war:[name of resource]`
Support fulfilling the response with randomized text with length
specified using `length:min[-max]` directive.
2023-11-25 11:13:57 -05:00
Raymond Hill
a4f8ec6d54
Support AdGuard's `emptyArr`/`emptyObj` for increased compatibility
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2411
2023-11-17 09:28:23 -05:00
Raymond Hill
c292a90b90
Fix faulty `as` vararg in `set-constant` scriptlet
2023-11-16 13:18:39 -05:00
Raymond Hill
28d92d38f3
Use `trusted-` prefix for `replace-node-text`
...
The official name is `trusted-replace-node-text`.
`replace-node-text` is demoted to alias. `trusted-rpnt` added
asan alias. Aliases not prefixed with `trusted-` are deprecated
and will be removed eventually.
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-7567863
2023-11-14 13:53:29 -05:00
Raymond Hill
f3d6a21e7a
Add `trusted-set-session-storage-item` scriptlet
...
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807390945
2023-11-13 10:36:55 -05:00
Raymond Hill
7c562d0c5c
Allow the use of quotes in `set-cookie` scriptlet
...
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807260357
2023-11-12 19:26:05 -05:00
Raymond Hill
decafc5cbf
Allow the use of quotes in `set-[local|session]-storage-item`
...
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20630#issuecomment-1807260357
2023-11-12 19:05:56 -05:00
Fanboynz
32fb93c525
Add a few more cookie names ( #3907 )
2023-11-12 12:51:58 -05:00
Raymond Hill
3db46c1728
Allow for support of more event types
...
Related commit:
ef311ddbec
2023-11-12 11:44:24 -05:00
Raymond Hill
b3c48fd1ad
Swap canonical name with alias
2023-11-12 10:39:43 -05:00
Raymond Hill
ef311ddbec
Add ability to trigger cookie removal on specific events
...
As discussed with filter list volunteers.
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/834
2023-11-12 10:35:28 -05:00
Raymond Hill
f68683f988
Do not use implicit regex flag when pattern is regex
...
As discussed with filter list volunteers.
2023-11-10 12:31:30 -05:00
Raymond Hill
7dd98258e9
Add `stackToMatch` vararg to `trusted-prune-inbound-object.js`
...
As discussed with filter list maintainers.
2023-11-09 19:57:51 -05:00
Raymond Hill
7823d98070
Harden scriptlets which need to serialize function code into string
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2907
2023-11-06 09:10:21 -05:00
Raymond Hill
cdc3f66a6b
Reset `g` regexes before use in `rmnt`/`rpnt` scriptlets
2023-11-05 20:35:05 -05:00
Fanboynz
4ab1c36ac9
Add t/f to set-cookie ( #3905 )
2023-11-05 16:07:58 -05:00
Raymond Hill
c378d55dfb
Minor
2023-10-29 23:44:43 -04:00
Fanboynz
d51b393fdb
Add additional set-cookie names ( #3902 )
2023-10-29 11:01:32 -04:00
Raymond Hill
5244ad5baf
Do not use `bind` as a way to access native calls
2023-10-29 10:22:54 -04:00
Raymond Hill
fc40393c81
Improve `trusted-prune-inbound-object` scriptlet
...
Trap incoming argument only if it matches the properties to
prune and matches. If there is no match, the inbound object
is passed through untouched.
2023-10-28 07:35:38 -04:00
Raymond Hill
d32204f984
Match `type` exactly in `prevent-addEventListener` scriptlet
...
Unless `type` is a regex of course.
Related feedback:
https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-7362212
2023-10-23 21:15:00 -04:00
Raymond Hill
82c59b4b6e
Add `domain` vararg to `trusted-set-cookie`
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2893
2023-10-22 18:19:18 -04:00
Raymond Hill
86f0d6dd97
Add `trusted-prune-outbound-object.js` scriptlet
...
Essentially a complement of `trusted-prune-inbound-object.js` added in
1c9da227d7
To perform object pruning on any object returned synchronously by
any given call.
The arguments for `trusted-prune-outbound-object` in order are:
- The name of the property to trap. Must be a function, and must
exist when the scriptlet tries to install the trap.
- The properties to prune (as with `json-prune`)
- The properties which must all be present for pruning to occur
(as with `json-prune`)
The scriptlets `json-prune.js` and `evaldata-prune.js` essentially
perform the same function, and will eventually be rewritten to
internally delegate to generic `trusted-prune-outbound-object.js`.
2023-10-22 12:35:49 -04:00
Raymond Hill
1c9da227d7
Add `trusted-prune-inbound-object` scriptlet
...
As per discussion with filter list maintainers.
To perform object pruning for any given call which has an object
as argument (hence "inbound").
Since `json-prune-stringify` scriptlet is a specific form of
pruning inbound objects, it has been removed.
The arguments for `trusted-prune-inbound-object` in order are:
- The name of the property to trap. Must be a function, and must
exist when the scriptlet tries to install the trap.
- The position of the object to prune in the argument list when
the trapped function is called. The position is 1-based and
must be an integer greater than 0.
- The properties to prune (as with `json-prune`)
- The properties which must all be present for pruning to occur
(as with `json-prune`)
- Varargs:
- `, dontOverwrite, 1`: do not modify the target inbound object
Examples:
Remove `title` and `name` properties before passing the object to
`JSON.stringify` call:
example.org##+js(trusted-prune-inbound-object, JSON.stringify, 1, title name)
Remove `status` property before passing the object to `Object.keys`
call but do not modify caller's instance of the object:
example.org##+js(trusted-prune-inbound-object, Object.keys, 1, status, , dontOverwrite, 1)
2023-10-21 09:31:50 -04:00
Raymond Hill
607bba6eaf
Add `dontOverwrite` vararg to `(trusted-)set-cookie` scriptlet
...
When the vararg `, dontOverwrite, 1` is present, the scriptlet will
not modify the cookie if it already exists.
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/19976#issuecomment-1773466740
2023-10-20 21:38:54 -04:00
peace2000
eb66129fbf
Add "on" and "off" values to set-cookie ( #3898 )
...
* Add "on" and "off" values to set-cookie
Used on praxisplan.at.
0cd4612e18
* Update scriptlets.js
2023-10-20 20:43:52 -04:00
Raymond Hill
41d91ed080
Fine tune `set-local-storage-item` as per feedback
...
Related feedback:
- https://github.com/uBlockOrigin/uAssets/discussions/20194
- https://github.com/gorhill/uBlock/pull/3898
2023-10-20 20:10:35 -04:00
Raymond Hill
f0cd93335e
Revert "Turns out `delay` does apply to first element"
...
This reverts commit 906c6eb430
.
2023-10-19 17:23:05 -04:00
Raymond Hill
906c6eb430
Turns out `delay` does apply to first element
...
Regarding `trusted-click-element`, and as per documentation
and code:
- https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#trusted-scriptlets
- https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-click-element.js
2023-10-19 14:08:57 -04:00
Raymond Hill
4dc396ff05
Fix typos in comments
2023-10-18 09:50:58 -04:00
Raymond Hill
9d3acd91b8
Support AdGuard's `[trusted-]set-cookie-reload` scriptlets
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2881
2023-10-18 09:48:08 -04:00
Raymond Hill
51359c6585
[experimental] Add `json-stringify` scriptlet
...
Will be evaluated this current dev cycle and as a result
might be removed before next stable.
Other changes to increase code consistency.
2023-10-17 17:33:49 -04:00
Raymond Hill
f122ce7320
Add logging ability to `trusted-click-element`
...
If the vararg `, log, 1` is present, the scriptlet will log to
the console it's execution steps. Works only in dev build.
2023-10-16 19:53:48 -04:00
Raymond Hill
5a24fad8ad
Make fine-tuned `json-prune-[...]` scriptlets the default behavior
...
As discussed with filter list maintainers.
2023-10-16 19:36:16 -04:00
Raymond Hill
7c660b2aad
Remove stray tab
2023-10-15 16:40:35 -04:00
Raymond Hill
c0d80ac510
Fine tune `trusted-click-element` scriptlet
2023-10-15 16:14:44 -04:00
Raymond Hill
7af88b025d
Add `trusted-click-element` scriptlet
...
Implemented as per AdGuard API documentation:
https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#trusted-click-element
The current implementation in uBO does not support the `extraMatch`
argument. If the extraMatch argument is not empty, the scriptlet
will abort and do nothing.
As for the rest, it complies with the documentation.
2023-10-15 11:08:15 -04:00
Raymond Hill
17d30343c5
Use safe Array.from() in `no-xhr-if` scriptlet
...
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/20063
2023-10-14 08:03:29 -04:00
Raymond Hill
e5c1b63315
Fix overzealous matching in `(remove|replace)-node-text` scriptlets
...
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2868
2023-10-13 21:51:13 -04:00
Raymond Hill
6f74df942d
Fix `no-xhr-if` scriptlet for Firefox
...
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/20063#issuecomment-1762157408
2023-10-13 21:24:21 -04:00
Raymond Hill
780383faef
Use safe versions of Math.floor/Math.random in scriptlets
...
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/78
2023-10-09 09:45:26 -04:00