Commit Graph

1274 Commits

Author SHA1 Message Date
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 15e3f763a3
Mind exception filters for `replace=` option
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2952
2023-11-10 10:45:24 -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 2bc7996d64
Remove country flag because occurrences below threshold
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2946
2023-11-09 07:10:25 -05:00
Raymond Hill cd430386f5
Forgot to git-add this one in last commit 2023-11-07 13:48:32 -05:00
Raymond Hill 74a0af8af6
Replace flag with more relevant one
Related discussion:
https://github.com/EasyDutch-uBO/EasyDutch/issues/92
2023-11-07 13:47:04 -05:00
Raymond Hill d8d42f2cc1
Synchronize changes in both versions of assets.json 2023-11-06 15:15:57 -05:00
Imre Kristoffer Eilertsen 0962366524
Added additional flags to regional lists (#3904) 2023-11-06 15:11:38 -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
jambohawk 971f36c78e
Update assets.json
I believe this is a typo?
2023-11-05 17:01:06 -06:00
Raymond Hill eb93ce862d
Do not use `@latest`, there is no `master` branch at `uAssetsCDN`
Related documentation:
https://github.com/jsdelivr/jsdelivr#omit-the-version-completely-or-use-latest-to-load-the-latest-one-only-works-with-valid-semver-versions-not-recommended-for-production-usage
2023-11-05 17:23:07 -05:00
Fanboynz 4ab1c36ac9
Add t/f to set-cookie (#3905) 2023-11-05 16:07:58 -05:00
Raymond Hill c5fa273723
Update EasyDutch list to new URLs
Related discussion:
https://github.com/uBlockOrigin/uAssets/discussions/20386
2023-10-31 14:57:50 -04:00
Raymond Hill d05ff8ffeb
Add support for diff-patching filter lists
Related discussion:
https://github.com/ameshkov/diffupdates

The benefits of diff-patching filter lists is much shorter update
schedule and significantly less bandwidth consumed.

At the moment, only default filter lists are subject to be
diff-patched.

External filter lists can make their lists diff-patchable by
following the specification link above.

Only filter lists fetched by the auto-updater are candidate for
diff-patching.

Forcing a manual update of the filter lists will prevent the
diff-patcher from kicking in until one or more lists are
auto-updated.

Some back-of-the-envelop calculations regarding the load on free
CDN solutions used by uBO to distribute its own filter lists:

Currently, for each CDN (with lists updating after days):
~560 M req/month, ~78 TB/month

With diff-patching lists on a 6-hour schedule:
~390 M req/month, 1 TB/month

Those estimates were done according to statistics shown by
jsDelivr, which is one of 4 CDNs picked randomly when a list
updates:
https://www.jsdelivr.com/package/gh/uBlockOrigin/uAssetsCDN?tab=stats
2023-10-30 12:30:46 -04:00
Raymond Hill c9aeb6a43b
Use minified version of badware list in package 2023-10-30 00:35:30 -04: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 ed4b31931a
Prepare to ship minified lists in package 2023-10-26 13:38:24 -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 e873fd5378
Add `cdn.statically.io` as CDN for `ublock-quick-fixes` (dev build) 2023-10-18 11:38:00 -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 b0fe6d228a
Use `@latest` instead of `@main` for jsDelivr CDN 2023-10-17 23:25:06 -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
Raymond Hill ad75b1bdba
Remove unreferenced dependencies
Related commit:
d4918c1d0a
2023-10-07 13:48:28 -04:00
Raymond Hill d4918c1d0a
Add `version` vararg to `[...]-fetch-response` scriptlets
If the `version` vararg is present and set to `2`, and if a
fetch Request argument is present, it will be cloned before
being matched to `propsToMatch` properties.

Additionally, created a `.fn` version of `[...]-fetch-response`
scriptlets to avoid redundant code in final injected scriptlets.
2023-10-07 11:49:17 -04:00
Raymond Hill 6b211f622c
Add `stackToMatch` vararg to json-prune-related scriptlets
As per discussion with filter list maintainers.
2023-10-05 11:24:35 -04:00
Raymond Hill d3b95c1c68
Add site-specific scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/19903
2023-09-29 12:51:44 -04:00