Commit graph

53 commits

Author SHA1 Message Date
Raymond Hill
e9ae8e1a0f
Add static release() to StaticNetFilteringEngine class
The method ensures the actual SNFE is properly reset.
2021-08-15 11:18:01 -04:00
Raymond Hill
087da6407d
Add support for nodejs flavors
The main nodejs flavor is "npm", which is to be used to
lint/test and the publication of an official npm
package -- and by design it has dependencies on mocha,
eslint, etc.

A new flavor "dig" has been created with minimal
dependencies and which purpose is to easily allow to
write specialized code to investigate local code changes
in uBO -- and it's not meant for publication.

Consequently, "make nodejs" has been replaced with
"make npm", and a new "dig" target has been added to the
makefile, to be used for instrumenting local code changes
for investigation purpose.
2021-08-15 10:43:36 -04:00
Manish Jethani
0a11999459
Test in new world (#3822) 2021-08-15 08:41:30 -04:00
Manish Jethani
6c2856cb7e
Add package-lock.json (#3819) 2021-08-14 11:59:14 -04:00
Manish Jethani
fd9888f85e
Spawn mocha from test.js (#3818) 2021-08-14 10:33:49 -04:00
Manish Jethani
bb5bfed779
Add tests for promise-based filter loading (#3817) 2021-08-14 07:56:03 -04:00
Manish Jethani
ef0075acc1
Add tests for filter loading (#3816) 2021-08-13 16:21:36 -04:00
Manish Jethani
806fe5dbe1
Add Mocha tests (#3815) 2021-08-13 13:08:13 -04:00
Manish Jethani
a56f43f007
Add .npmrc to stop generating package lock file (#3814) 2021-08-13 11:49:52 -04:00
Manish Jethani
daff6b3a34
Add eslint dependency within Node.js package (#3813) 2021-08-13 06:43:20 -04:00
Manish Jethani
993835b333
Use test assertions (#3811) 2021-08-10 14:08:05 -04:00
Raymond Hill
c6fb70b1f0
Refactor hntrie to avoid the need for boundary cells
Whereas before the string segment was encoded as:

LL OOOOOOOOOOOO

where L are the upper 8 bits and used to encode the length
of the segment, and O are the lower 24 bits and used to
encode the offset of the string data in the character
buffer, the new code encode as follow:

OOOOOOOOOOOO LL

And furthermore the most significant bit of the length
LL is now used to mark whether the current string segment
is a label boundary.

This means a cell can't reference a segment longer then
127 characters. To work around this limitation for when a
segment is longer than 127 characters (a rare occurrence),
the algorithm will simply split the segment into multiple
adjacent cells.

As a result, there is no longer a need to encode
"boundariness" into special cells, which simplifies
both the storing and matching algorithms.

Additionally, added minimal documentation for the NPM
package on how to import and use HNTrieContainer as a
standalone API.
2021-08-10 09:27:59 -04:00
Manish Jethani
ab9f5ae100
Run build script via tools/make-nodejs.sh (#3808) 2021-08-09 20:02:58 -04:00
Raymond Hill
76abd04898
New revision for npm package 2021-08-09 19:34:35 -04:00
Manish Jethani
6b993f2f06
Fix pslInit() for install script (#3807) 2021-08-09 19:12:04 -04:00
Manish Jethani
d9adf5a6fb
Add serialization API to StaticNetFilteringEngine (#3806) 2021-08-09 16:52:41 -04:00
Raymond Hill
5879610597
Bump up nodejs package version 2021-08-08 09:21:03 -04:00
Raymond Hill
7cd583a301
Revisit the nodejs API 2021-08-08 09:17:14 -04:00
Manish Jethani
65f0909ba0
Implement class StaticNetFilteringEngine (#3805) 2021-08-08 07:22:02 -04:00
Raymond Hill
500c895f6b
update npm README 2021-08-07 11:38:22 -04:00
Raymond Hill
af54415959
README has unsaved pending edits... 2021-08-06 08:29:13 -04:00
Raymond Hill
4495c37ca3
Provide basic documentation for the NPM package 2021-08-06 08:25:36 -04:00
Raymond Hill
5eb99a4dd6
... 2021-08-05 14:36:13 -04:00
Raymond Hill
05f0e04c07
Just trying to get this done.. 2021-08-05 14:34:21 -04:00
Raymond Hill
fe7ce8f576
Need to bump version to publish README 2021-08-05 14:32:07 -04:00
Raymond Hill
70d5d28a7c
Add minimal README to nodejs package 2021-08-05 14:28:17 -04:00
Raymond Hill
8c48375caf
Fix test.js following changes in API 2021-08-05 14:19:04 -04:00
Raymond Hill
63e55a1696
Expose ability to compile raw list into their intermeditate form
For clients who may wish to persist the intermediate compiled form
in order to be able to skip costly parsing operation when the
list is fed to the static network filtering engine.
2021-08-05 13:37:41 -04:00
Raymond Hill
4818405cf6
Remove need to pass parser at every compile() call
The compiler instance is already initialized with a
reference to the parser, no need to keep passing the
reference at each call to compile().
2021-08-05 13:30:20 -04:00
Manish Jethani
543e1a3aea
Add ESLint rules for possible errors (#3804) 2021-08-04 15:27:32 -04:00
Raymond Hill
85c68116bd
Group all compiling-related code into FilterCompiler() class
In the static network filtering engine (snfe), the
compiling-related code was spread across two classes.
This commit makes it so that all the compiling-related
code is in FilterCompiler class, which clear purpose is
to compile raw filters into a form which can be persisted
and later fed to the snfe with no parsing overhead.

To compile raw static network filter, the new approach is:

    snfe.createCompiler(parser);

Then for each single raw filter to compile:

    compiler.compile(parser, writer);

The caller is responsible to keep a reference to the
compiler instance for as long as it is needed. This removes
the need for the clunky code used to keep an instance of
compiler alive in the snfe.

Additionally, snfe.tokenHistograms() has been moved to
benchmarks.js, as it has no dependency on the snfe, it's
just a utility function.
2021-08-04 15:14:48 -04:00
Manish Jethani
4094f48547
Fix style in index.js (#3802) 2021-08-03 12:03:11 -04:00
Manish Jethani
6ef74fc21b
Rewrite logical expressions for ESLint (#3801) 2021-08-03 10:59:01 -04:00
Manish Jethani
3ca5e6817d
Fix ESLint indentation warnings (#3800)
* Fix ESLint indentation warnings

* Undo code reformatting within parentheses

* Add exception for logical expressions

* Update array expression rule

* Disable rule for reProceduralOperator assignment

* Fix indentation in static-filtering-parser.js
2021-08-03 10:14:40 -04:00
Manish Jethani
6b85b7f2b1
Create build folder in npm install script (#3799) 2021-08-03 07:02:48 -04:00
Manish Jethani
ad69c760fb
Run ESLint during Node.js package generation (#3798) 2021-08-02 16:55:03 -04:00
Manish Jethani
502e5b0ec8
Use fs API to load serialized PSL (#3797) 2021-08-02 12:32:47 -04:00
Manish Jethani
3879835324
Remove bundle generation from Node.js package (#3796) 2021-08-02 09:17:56 -04:00
Raymond Hill
f1106acf4b
Rename nodejs package
Related discussion:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1664#issuecomment-890834827
2021-08-02 08:08:43 -04:00
Manish Jethani
297bcea49b
Generate bundle.min.js in Node.js install script (#3794) 2021-08-01 18:33:13 -04:00
Manish Jethani
0b764934e0
Serialize PSL in Node.js install script (#3793) 2021-08-01 16:42:05 -04:00
Raymond Hill
c6d275674d
Revert "Make the nodejs package load a serialized version of the PSL"
This reverts commit 46c6ff8708.
2021-08-01 15:42:46 -04:00
Raymond Hill
46c6ff8708
Make the nodejs package load a serialized version of the PSL
Related discussion:
- https://github.com/cliqz-oss/adblocker/pull/2091#issuecomment-890545926
2021-08-01 12:58:21 -04:00
Manish Jethani
8a33bda653
Use lower case for Node.js package name (#3792) 2021-08-01 05:22:57 -04:00
Raymond Hill
cb72211795
Move orphanizeString() into text-utils module
Another small step toward the goal of reducing dependency
on `µb`.

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1664

text-iterators module has been renamed text-utils to better
reflect its content.
2021-07-31 08:38:33 -04:00
Raymond Hill
23cabfd440
Fix erroneous removal of code from pslInit() 2021-07-31 07:09:01 -04:00
Raymond Hill
d5da88ea87
Simplify loading of WASM modules in nodejs 2021-07-31 07:06:11 -04:00
Raymond Hill
5be4d5d877
Make pslInit() returns the publicSuffixList instance used internally
Related discussion:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1664#issuecomment-889647595
2021-07-30 07:00:45 -04:00
Raymond Hill
076a088371
Remove stray async 2021-07-29 17:04:32 -04:00
Raymond Hill
98fc66bb1b
Add support for enabling WASM code paths in NodeJS package
See `test.js` for reference on how to enable WASM code
paths (which are disabled by default).
2021-07-29 16:54:51 -04:00