From e1222d16430d754e8a2499fd8c58f49880d6c283 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 28 Jul 2021 10:38:24 -0400 Subject: [PATCH] Use `require` instead of `fs` Related feedback: - https://github.com/uBlockOrigin/uBlock-issues/issues/1664#issuecomment-888332409 --- platform/nodejs/main.js | 10 ++++++++-- platform/nodejs/test.js | 23 ++++++++--------------- tools/make-nodejs.sh | 13 +++++++++---- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/platform/nodejs/main.js b/platform/nodejs/main.js index a104fae84..41a6f809d 100644 --- a/platform/nodejs/main.js +++ b/platform/nodejs/main.js @@ -23,6 +23,8 @@ /******************************************************************************/ +import { createRequire } from 'module'; + import './lib/punycode.js'; import './lib/publicsuffixlist/publicsuffixlist.js'; @@ -89,8 +91,12 @@ function enableWASM(path) { function pslInit(raw) { if ( typeof raw !== 'string' || raw.trim() === '' ) { - console.info('Unable to populate public suffix list'); - return; + const require = createRequire(import.meta.url); // jshint ignore:line + raw = require('./data/effective_tld_names.json'); + if ( typeof raw !== 'string' || raw.trim() === '' ) { + console.info('Unable to populate public suffix list'); + return; + } } globals.publicSuffixList.parse(raw, globals.punycode.toASCII); console.info('Public suffix list populated'); diff --git a/platform/nodejs/test.js b/platform/nodejs/test.js index 0d544e9d1..b0f7966e8 100644 --- a/platform/nodejs/test.js +++ b/platform/nodejs/test.js @@ -25,7 +25,7 @@ /******************************************************************************/ -import { readFile } from 'fs'; +import { createRequire } from 'module'; import { FilteringContext, @@ -35,15 +35,10 @@ import { /******************************************************************************/ -function fetch(path) { - return new Promise((resolve, reject) => { - readFile(path, 'utf8', (err, data) => { - if ( err ) { - reject(err); - } else { - resolve(data); - } - }); +function fetch(listName) { + return new Promise(resolve => { + const require = createRequire(import.meta.url); // jshint ignore:line + resolve(require(`./data/${listName}.json`)); }); } @@ -56,13 +51,11 @@ function fetch(path) { } */ - await fetch('./data/effective_tld_names.dat').then(pslRaw => { - pslInit(pslRaw); - }); + pslInit(); const snfe = await Promise.all([ - fetch('./data/easylist.txt'), - fetch('./data/easyprivacy.txt'), + fetch('easylist'), + fetch('easyprivacy'), ]).then(rawLists => { return restart([ { name: 'easylist', raw: rawLists[0] }, diff --git a/tools/make-nodejs.sh b/tools/make-nodejs.sh index d217ba953..7b987f5db 100755 --- a/tools/make-nodejs.sh +++ b/tools/make-nodejs.sh @@ -21,11 +21,16 @@ cp -R src/lib/punycode.js $DES/lib/ cp -R src/lib/publicsuffixlist $DES/lib/ cp -R src/lib/regexanalyzer $DES/lib/ +# https://github.com/uBlockOrigin/uBlock-issues/issues/1664#issuecomment-888332409 +THIRDPARTY=../uAssets/thirdparties/publicsuffix.org mkdir -p $DES/data -cp -R ../uAssets/thirdparties/publicsuffix.org/list/* \ - $DES/data -cp -R ../uAssets/thirdparties/easylist-downloads.adblockplus.org/* \ - $DES/data +node -pe "JSON.stringify(fs.readFileSync('$THIRDPARTY/list/effective_tld_names.dat', 'utf8'))" \ + > $DES/data/effective_tld_names.json +THIRDPARTY=../uAssets/thirdparties/easylist-downloads.adblockplus.org +node -pe "JSON.stringify(fs.readFileSync('$THIRDPARTY/easylist.txt', 'utf8'))" \ + > $DES/data/easylist.json +node -pe "JSON.stringify(fs.readFileSync('$THIRDPARTY/easyprivacy.txt', 'utf8'))" \ + > $DES/data/easyprivacy.json cp platform/nodejs/*.js $DES/ cp platform/nodejs/*.json $DES/