mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-01 16:33:06 +01:00
22022f636f
Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1664 The changes are enough to fulfill the related issue. A new platform has been added in order to allow for building a NodeJS package. From the root of the project: ./tools/make-nodejs This will create new uBlock0.nodejs directory in the ./dist/build directory, which is a valid NodeJS package. From the root of the package, you can try: node test This will instantiate a static network filtering engine, populated by easylist and easyprivacy, which can be used to match network requests by filling the appropriate filtering context object. The test.js file contains code which is typical example of usage of the package. Limitations: the NodeJS package can't execute the WASM versions of the code since the WASM module requires the use of fetch(), which is not available in NodeJS. This is a first pass at modularizing the codebase, and while at it a number of opportunistic small rewrites have also been made. This commit requires the minimum supported version for Chromium and Firefox be raised to 61 and 60 respectively.
72 lines
2.0 KiB
HTML
72 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>uBO Static Network Filtering Engine</title>
|
|
</head>
|
|
<body>
|
|
<script type="module">
|
|
import {
|
|
FilteringContext,
|
|
enableWASM,
|
|
pslInit,
|
|
restart,
|
|
} from './main.js';
|
|
|
|
(async ( ) => {
|
|
await enableWASM('.');
|
|
|
|
await fetch('./data/effective_tld_names.dat').then(response => {
|
|
return response.text();
|
|
}).then(pslRaw => {
|
|
pslInit(pslRaw);
|
|
});
|
|
|
|
const snfe = await Promise.all([
|
|
fetch('./data/easylist.txt').then(response => {
|
|
return response.text();
|
|
}),
|
|
fetch('./data/easyprivacy.txt').then(response => {
|
|
return response.text();
|
|
}),
|
|
]).then(rawLists => {
|
|
return restart([
|
|
{ name: 'easylist', raw: rawLists[0] },
|
|
{ name: 'easyprivacy', raw: rawLists[1] },
|
|
]);
|
|
});
|
|
|
|
// Reuse filtering context: it's what uBO does
|
|
const fctxt = new FilteringContext();
|
|
|
|
// Tests
|
|
// Not blocked
|
|
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
|
|
fctxt.setURL('https://www.bloomberg.com/tophat/assets/v2.6.1/that.css');
|
|
fctxt.setType('stylesheet');
|
|
if ( snfe.matchRequest(fctxt) !== 0 ) {
|
|
console.log(snfe.toLogData());
|
|
}
|
|
|
|
// Blocked
|
|
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
|
|
fctxt.setURL('https://securepubads.g.doubleclick.net/tag/js/gpt.js');
|
|
fctxt.setType('script');
|
|
if ( snfe.matchRequest(fctxt) !== 0 ) {
|
|
console.log(snfe.toLogData());
|
|
}
|
|
|
|
// Unblocked
|
|
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
|
|
fctxt.setURL('https://sourcepointcmp.bloomberg.com/ccpa.js');
|
|
fctxt.setType('script');
|
|
if ( snfe.matchRequest(fctxt) !== 0 ) {
|
|
console.log(snfe.toLogData());
|
|
}
|
|
|
|
restart();
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|