From d9c467bcbbdff398097b403e3516383966488740 Mon Sep 17 00:00:00 2001 From: rootslab Date: Fri, 14 Mar 2025 19:11:12 +0100 Subject: [PATCH] Update Node.js version and Buffer usage --- .travis.yml | 17 +--- bench/64K-pattern-memory-usage-bench.js | 4 +- bench/big-pattern-data-rate-bench.js | 4 +- bench/small-pattern-data-rate-bench.js | 4 +- bench/small-pattern-memory-usage-bench.js | 2 +- example/bop-parse-example.js | 74 +++++++++--------- example/bop-scount-example.js | 77 +++++++++--------- example/bop-sparse-example.js | 95 +++++++++++------------ lib/bop.js | 10 +-- package.json | 2 +- test/argument-type-test.js | 4 +- test/big-buffer-start-index-test.js | 6 +- test/big-random-pattern-test.js | 4 +- test/buffer-lookup-table-chars-test.js | 7 +- test/max-distance-test.js | 4 +- test/run.js | 2 +- 16 files changed, 152 insertions(+), 164 deletions(-) diff --git a/.travis.yml b/.travis.yml index aba7338..48db430 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,9 @@ sudo: false language: node_js node_js: - - "9" - - "8" - - "7" - - "6" - - "5" - - "4" - - "3" - - "2" - - "1" - - "0.12" - - "0.11" - - "0.10" + - "16" + - "14" + - "12" before_script: - npm install -g istanbul script: istanbul cover -v test/run.js @@ -20,4 +11,4 @@ after_success: - npm install -g codeclimate-test-reporter - codeclimate-test-reporter < coverage/lcov.info env: - - CODECLIMATE_REPO_TOKEN=2ec835187f41b7f818cfa674baaf0048908beabca4d576692844b1d6739e3258 \ No newline at end of file + - CODECLIMATE_REPO_TOKEN=2ec835187f41b7f818cfa674baaf0048908beabca4d576692844b1d6739e3258 diff --git a/bench/64K-pattern-memory-usage-bench.js b/bench/64K-pattern-memory-usage-bench.js index 0dcb2c0..7e93e5a 100644 --- a/bench/64K-pattern-memory-usage-bench.js +++ b/bench/64K-pattern-memory-usage-bench.js @@ -4,7 +4,7 @@ var log = console.log , kb = 64 , msg = log( '- building and pre-processing a %dKB pattern..', kb ) , smem = process.memoryUsage() - , bp = new Buffer( 1024 * kb ) + , bp = Buffer.alloc( 1024 * kb ) , emem0 = process.memoryUsage() , bc = t.bcTable( bp ) , emem1 = process.memoryUsage() @@ -23,4 +23,4 @@ var log = console.log output( '[bc]', emem1, emem0, bc.length ); output( '[suff]', emem2, emem1, suff.length ); -output( '[gs]', emem3, emem2, gs.length ); \ No newline at end of file +output( '[gs]', emem3, emem2, gs.length ); diff --git a/bench/big-pattern-data-rate-bench.js b/bench/big-pattern-data-rate-bench.js index 2764b53..aa268ab 100644 --- a/bench/big-pattern-data-rate-bench.js +++ b/bench/big-pattern-data-rate-bench.js @@ -5,8 +5,8 @@ var log = console.log , pmb = 20 , dlen = mb * 1024 * 1024 , plen = pmb * 1024 * 1024 - , pattern = new Buffer( plen ) - , data = new Buffer( dlen ) + , pattern = Buffer.alloc( plen ) + , data = Buffer.alloc( dlen ) , i = 0 , rand = 0 , bop = null diff --git a/bench/small-pattern-data-rate-bench.js b/bench/small-pattern-data-rate-bench.js index 00814e9..e5c9728 100644 --- a/bench/small-pattern-data-rate-bench.js +++ b/bench/small-pattern-data-rate-bench.js @@ -24,7 +24,7 @@ var log = console.log Ipsum et Dolor sit amet, Quisquisce\r\n\r\n' ; - for ( var i = 0, c = 1, t = new Buffer( tSize ); i + len < tSize; i += len ){ + for ( var i = 0, c = 1, t = Buffer.alloc( tSize ); i + len < tSize; i += len ){ if ( ( i % ( gap ) ) === 0 ) { t.write( p.toString() + str, i ); indexes.push( i ); @@ -55,7 +55,7 @@ process.argv.forEach( function ( val, index, array ) { ( index === 4 ) ? ( pattern = ( ( val.length > 1 ) && ( val.length < 255 ) ) ? ( '--' + val + '\r\n' ) : pattern ) : null; } ); -var p = new Buffer( pattern ) +var p = Buffer.alloc( pattern.length, pattern ) , msg = log( '- building test buffer' ) , t = buildTestBuffer( p, bsize, gapfactor ) , smem = process.memoryUsage() diff --git a/bench/small-pattern-memory-usage-bench.js b/bench/small-pattern-memory-usage-bench.js index b443045..41fa9a7 100644 --- a/bench/small-pattern-memory-usage-bench.js +++ b/bench/small-pattern-memory-usage-bench.js @@ -4,7 +4,7 @@ var log = console.log , bytes = 255 , msg = log( '- building and pre-processing a short pattern.. (%d bytes)', bytes ) , smem = process.memoryUsage() - , bp = new Buffer( bytes ) + , bp = Buffer.alloc( bytes ) , emem0 = process.memoryUsage() , bc = t.bcTable( bp ) , emem1 = process.memoryUsage() diff --git a/example/bop-parse-example.js b/example/bop-parse-example.js index 23c0981..82bf2cc 100644 --- a/example/bop-parse-example.js +++ b/example/bop-parse-example.js @@ -1,37 +1,37 @@ -/* - * Bop#parse and Bop#count example - */ - -var log = console.log - , Bop = require( '../' ) - , hello = '------hello' - , CRLF = '\r\n' - , bop = Bop( CRLF ) - , line = new Buffer( hello + CRLF ) - , llen = line.length - , data = new Buffer( llen << 10 >>> 0 ) - , i = 0 - , l = 1024 - , matches = null - , cnt = -1 - ; - -log( '- pattern is:', bop.p ); - -log( '- fill data with %d lines:', l, line ); - -/* - * NOTE: it builds example data using Buffer#copy, instead of - * Buffer#concat, to mantain retro compatibility with older - * nodejs versions. - */ -for ( ; i < l; ++i ) line.copy( data, i * llen ); - -matches = bop.parse( data ); - -log( '- matches:', matches.length ); - -cnt = bop.count( data, 0, false, true ) - -log( '- count:', cnt ); - +/* + * Bop#parse and Bop#count example + */ + +var log = console.log + , Bop = require( '../' ) + , hello = '------hello' + , CRLF = '\r\n' + , bop = Bop( CRLF ) + , line = Buffer.alloc(hello.length + CRLF.length, hello + CRLF) + , llen = line.length + , data = Buffer.alloc(llen << 10 >>> 0) + , i = 0 + , l = 1024 + , matches = null + , cnt = -1 + ; + +log( '- pattern is:', bop.p ); + +log( '- fill data with %d lines:', l, line ); + +/* + * NOTE: it builds example data using Buffer#copy, instead of + * Buffer#concat, to mantain retro compatibility with older + * nodejs versions. + */ +for ( ; i < l; ++i ) line.copy( data, i * llen ); + +matches = bop.parse( data ); + +log( '- matches:', matches.length ); + +cnt = bop.count( data, 0, false, true ) + +log( '- count:', cnt ); + diff --git a/example/bop-scount-example.js b/example/bop-scount-example.js index 1aed804..9ac0885 100644 --- a/example/bop-scount-example.js +++ b/example/bop-scount-example.js @@ -1,39 +1,38 @@ -/* - * Bop#sparse Bop#scount and Bop#count example - */ - -var log = console.log - , Bop = require( '../' ) - , hello = '------hello' - , line = new Buffer( hello + hello ) - , bop = Bop( line ) - , llen = line.length - , l = 8 - , data = new Buffer( 230 + llen * l ) - , i = 0 - , matches = null - , cnt = -1 - ; - -log( '- pattern is:', bop.p ); - -log( '- fill data with %d patterns', l ); - -/* - * NOTE: it builds example data using Buffer#copy, instead of - * Buffer#concat, to mantain retro compatibility with older - * nodejs versions. - */ -for ( ; i < l; ++i ) line.copy( data, 23 + i * llen ); - - -matches = bop.sparse( data ); - -log( '\n-> use #sparse (no overlapping sequences).' ); - -log( '- bop.sparse(data) matches:', matches.length ); - -cnt = bop.scount( data, 0, true ) - -log( '- bop.scount(data, true):', cnt ); - +/* + * Bop#sparse Bop#scount and Bop#count example + */ + +var log = console.log + , Bop = require( '../' ) + , hello = '------hello' + , line = Buffer.alloc(hello.length + hello.length, hello + hello) + , bop = Bop( line ) + , llen = line.length + , l = 8 + , data = Buffer.alloc(230 + llen * l) + , i = 0 + , matches = null + , cnt = -1 + ; + +log( '- pattern is:', bop.p ); + +log( '- fill data with %d patterns', l ); + +/* + * NOTE: it builds example data using Buffer#copy, instead of + * Buffer#concat, to mantain retro compatibility with older + * nodejs versions. + */ +for ( ; i < l; ++i ) line.copy( data, 23 + i * llen ); + + +matches = bop.sparse( data ); + +log( '\n-> use #sparse (no overlapping sequences).' ); + +log( '- bop.sparse(data) matches:', matches.length ); + +cnt = bop.scount( data, 0, true ) + +log( '- bop.scount(data, true):', cnt ); diff --git a/example/bop-sparse-example.js b/example/bop-sparse-example.js index f1783e0..9d6e2d7 100644 --- a/example/bop-sparse-example.js +++ b/example/bop-sparse-example.js @@ -1,48 +1,47 @@ -/* - * Bop#sparse Bop#parse and Bop#sparse example - */ - -var log = console.log - , Bop = require( '../' ) - , hello = '------hello' - , line = new Buffer( hello + hello ) - , bop = Bop( line ) - , llen = line.length - , l = 8 - , data = new Buffer( 23 + llen * l ) - , i = 0 - , matches = null - , cnt = -1 - ; - -log( '- pattern is:', bop.p ); - -log( '- fill data with %d patterns', l ); - -/* - * NOTE: it builds example data using Buffer#copy, instead of - * Buffer#concat, to mantain retro compatibility with older - * nodejs versions. - */ -for ( ; i < l; ++i ) line.copy( data, 23 + i * llen ); - -matches = bop.parse( data ); - -log( '\n-> use #parse (overlapping sequences).' ); - -log( '- bop.parse(data) matches:', matches.length ); - -cnt = bop.count( data ) - -log( '- bop.count(data):', cnt ); - -matches = bop.sparse( data ); - -log( '\n-> use #sparse (no overlapping sequences).' ); - -log( '- bop.sparse(data) matches:', matches.length ); - -cnt = bop.count( data, 0, true ) - -log( '- bop.count(data, true):', cnt ); - +/* + * Bop#sparse Bop#parse and Bop#sparse example + */ + +var log = console.log + , Bop = require( '../' ) + , hello = '------hello' + , line = Buffer.alloc(hello.length + hello.length, hello + hello) + , bop = Bop( line ) + , llen = line.length + , l = 8 + , data = Buffer.alloc(23 + llen * l) + , i = 0 + , matches = null + , cnt = -1 + ; + +log( '- pattern is:', bop.p ); + +log( '- fill data with %d patterns', l ); + +/* + * NOTE: it builds example data using Buffer#copy, instead of + * Buffer#concat, to mantain retro compatibility with older + * nodejs versions. + */ +for ( ; i < l; ++i ) line.copy( data, 23 + i * llen ); + +matches = bop.parse( data ); + +log( '\n-> use #parse (overlapping sequences).' ); + +log( '- bop.parse(data) matches:', matches.length ); + +cnt = bop.count( data ) + +log( '- bop.count(data):', cnt ); + +matches = bop.sparse( data ); + +log( '\n-> use #sparse (no overlapping sequences).' ); + +log( '- bop.sparse(data) matches:', matches.length ); + +cnt = bop.count( data, 0, true ) + +log( '- bop.count(data, true):', cnt ); diff --git a/lib/bop.js b/lib/bop.js index 054d4de..ec5acf3 100644 --- a/lib/bop.js +++ b/lib/bop.js @@ -17,7 +17,7 @@ exports.Bop = ( function () { , suffixes = function ( p ) { var m = p.length , g = m - 1 - , suff = ( m > 255 ) ? [] : new Buffer( m ) + , suff = ( m > 255 ) ? [] : Buffer.alloc( m ) , f = 0 , i = 0 , offset = 0 @@ -42,7 +42,7 @@ exports.Bop = ( function () { // good suffixes table , gsTable = function ( suff ) { var m = suff.length - , gsuff = ( m > 255 ) ? [] : new Buffer( m ) + , gsuff = ( m > 255 ) ? [] : Buffer.alloc( m ) , i = m - 2 , j = 0 , offset = 0 @@ -60,7 +60,7 @@ exports.Bop = ( function () { // bad char table , bcTable = function ( p ) { var m = p.length - , bc = ( m > 255 ) ? [] : new Buffer( 256 ) + , bc = ( m > 255 ) ? [] : Buffer.alloc( 256 ) , i = 0 , blen = bc.length || m ; @@ -72,7 +72,7 @@ exports.Bop = ( function () { , convert = function ( data ) { if ( ! isBuffer( data ) ) { // obviously, string conversion is slow - if ( typeof data === 'string' ) return new Buffer( data ); + if ( typeof data === 'string' ) return Buffer.alloc( data ); else throw new TypeError( 'the argument type should be Buffer or String' ); } return data; @@ -277,4 +277,4 @@ exports.Bop = ( function () { return Bop; -} )(); \ No newline at end of file +} )(); diff --git a/package.json b/package.json index 8a02be0..60de833 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ , "dependencies" : {} , "main": "index" , "engines" : { - "node" : ">=0.4.x" + "node" : ">=12" } , "scripts" : { "test" : "bash test/run.sh" diff --git a/test/argument-type-test.js b/test/argument-type-test.js index fac512d..7fbb20e 100644 --- a/test/argument-type-test.js +++ b/test/argument-type-test.js @@ -14,7 +14,7 @@ assert.doesNotThrow( log( '- passing a Buffer to constructor, doesn\'t throw an Error.' ); assert.doesNotThrow( function() { - Bop( new Buffer( Date.now() + '' ) ); + Bop( Buffer.alloc( Date.now() + '' ) ); }, 'Test failed! An argument type different from String or Buffer, should throw an Error.' ); @@ -25,4 +25,4 @@ assert.throws( Bop( Date ); }, 'Test failed! An argument type different from String or Buffer, should throw an Error.' -); \ No newline at end of file +); diff --git a/test/big-buffer-start-index-test.js b/test/big-buffer-start-index-test.js index 5bf9df1..7f6313b 100644 --- a/test/big-buffer-start-index-test.js +++ b/test/big-buffer-start-index-test.js @@ -3,11 +3,11 @@ var log = console.log , assert = require( 'assert' ) , Bop = require( '../' ) , pattern = '-----hellofolks!\r\n\r\n' - , bpattern = new Buffer( pattern ) + , bpattern = Buffer.alloc( pattern.length, pattern ) , plen = pattern.length , mb = 700 , dlen = mb * 1024 * 1024 - , data = new Buffer( dlen ) + , data = Buffer.alloc( dlen ) , bop = Bop( bpattern ) , occ = floor( dlen / plen / plen / plen / plen ) , i = occ @@ -46,4 +46,4 @@ presults = bop.parse( data, indexes[ offset ] + 1 ); log( '- check partial results length (' + ( presults.length ) + ' === ' + ( results.length - offset - 1 ) + ')' ); assert.equal( presults.length + offset + 1, results.length, 'results don\'t match' ); -log( '- all big buffer tests passed in',( ( Date.now() - stime ) / 1000 ).toFixed( 2 ), 'secs'); \ No newline at end of file +log( '- all big buffer tests passed in',( ( Date.now() - stime ) / 1000 ).toFixed( 2 ), 'secs'); diff --git a/test/big-random-pattern-test.js b/test/big-random-pattern-test.js index 8d69366..f3b0fdc 100644 --- a/test/big-random-pattern-test.js +++ b/test/big-random-pattern-test.js @@ -3,12 +3,12 @@ var log = console.log , Bop = require( '../' ) , pmb = 10 , plen = pmb * 1024 * 1024 - , pattern = new Buffer( plen ) + , pattern = Buffer.alloc( plen ) , i = 0 , rand = 0 , mb = 300 , dlen = mb * 1024 * 1024 - , data = new Buffer( dlen ) + , data = Buffer.alloc( dlen ) , indexes = [ dlen / 1024, plen + dlen / 1024 ] , bop = null , results = null diff --git a/test/buffer-lookup-table-chars-test.js b/test/buffer-lookup-table-chars-test.js index b58c6bc..1334265 100644 --- a/test/buffer-lookup-table-chars-test.js +++ b/test/buffer-lookup-table-chars-test.js @@ -1,8 +1,7 @@ -// ✔ var log = console.log , assert = require( 'assert' ) , Bop = require( '../' ) - , bpattern = new Buffer( 255 ) + , bpattern = Buffer.alloc( 255 ) , bop = Bop( bpattern ) , osize = 257 ; @@ -23,7 +22,7 @@ log( '- check 255th bad char table value, should be >= 0 and != undefined', bop. assert.notEqual( undefined, bop.bc[ 255 ], 'lookup table for this pattern should be 256 bytes long!' ); log( '- test array creation if pattern length is >= 256' ); -bpattern = new Buffer( osize ); +bpattern = Buffer.alloc( osize ); bop = Bop( bpattern ); log( '- create %d pattern long, with all bytes equal to 0xff', bpattern.length ); @@ -36,4 +35,4 @@ log( '- check if the pattern is an istance of Array.' ); assert.equal( true, Array.isArray( bop.bc ), 'pattern should be an Array!' ); log( '- check if the bad char table is %d bytes long [0,256].', osize ); -assert.equal( osize, bop.bc.length, 'lookup table for this pattern should be 257 bytes long! now is ' + bop.bc.length ); \ No newline at end of file +assert.equal( osize, bop.bc.length, 'lookup table for this pattern should be 257 bytes long! now is ' + bop.bc.length ); diff --git a/test/max-distance-test.js b/test/max-distance-test.js index 680b39b..f8f2be6 100644 --- a/test/max-distance-test.js +++ b/test/max-distance-test.js @@ -3,10 +3,10 @@ var log = console.log , assert = require( 'assert' ) , Bop = require( '../' ) , pattern = '-----hello!\r\n' - , bpattern = new Buffer( pattern ) + , bpattern = Buffer.alloc( pattern.length, pattern ) , plen = pattern.length , dlen = 1024 * 1024 - , data = new Buffer( dlen ) + , data = Buffer.alloc( dlen ) , bop = Bop( bpattern ) , i = plen , occ = 0 diff --git a/test/run.js b/test/run.js index 011ef26..e972b00 100644 --- a/test/run.js +++ b/test/run.js @@ -55,4 +55,4 @@ log( '%s test files succeeded.', inspect( success ) ); log( '%s test files failed.%s', inspect( fails ), fails ? '\n' + inspect( failed ) +'\n' : '\n' ); } ); -} )(); \ No newline at end of file +} )();