streamsearch-ts
v1.0.2
Published
Typescript fork of mscdex/streamsearch without Buffer dependency
Downloads
1
Readme
streamsearch-ts
streamsearch-ts allows searching a stream using the Boyer-Moore-Horspool algorithm. It is a Typescript port of streamsearch by mscdex, which in turn is based on Hongli Lai's C++ version.
This version does not depend on the Buffer object, hence it can be used in non-node.js environments. It passes the same tests as the original streamsearch module.
Installation
npm install streamsearch-ts
Example
See also the tests in test/
.
import { inspect } from 'util';
import { StreamSearch } from 'streamsearch-ts';
const needle = '\r\n';
const ss = new StreamSearch(needle, (isMatch, data, start, end) => {
if (data)
console.log('data: ' + inspect(data.toString('latin1', start, end)));
if (isMatch)
console.log('match!');
});
const haystack = [
'foo',
' bar',
'\r',
'\n',
'baz, hello\r',
'\n world.',
'\r\n Node.JS rules!!\r\n\r\n',
];
for (const hay of haystack) ss.push(hay);
// output:
//
// data: 'foo'
// data: ' bar'
// match!
// data: 'baz, hello'
// match!
// data: ' world.'
// match!
// data: ' Node.JS rules!!'
// match!
// data: ''
// match!
API
Properties
- maxMatches - < integer > - The maximum number of matches. Defaults to
Infinity
. - matches - < integer > - The current match count.
Functions
(constructor)(< mixed >needle, < function >callback) - Creates and returns a new instance for searching for a Buffer or string
needle
.callback
is called any time there is non-matching data and/or there is a needle match.callback
will be called with the following arguments:isMatch
- boolean - Indicates whether a match has been founddata
- mixed - If set, this contains data that did not match the needle.start
- integer - The index indata
where the non-matching data begins (inclusive).end
- integer - The index indata
where the non-matching data ends (exclusive).isSafeData
- boolean - Indicates if it is safe to store a reference todata
(e.g. as-is or viadata.slice()
) or not, as in some casesdata
may point to a Buffer whose contents change over time.
destroy() - (void) - Emits any last remaining unmatched data that may still be buffered and then resets internal state.
push(< Buffer >chunk) - integer - Processes
chunk
, searching for a match. The return value is the last processed index inchunk
+ 1.reset() - (void) - Resets internal state. Useful for when you wish to start searching a new/different stream for example.
License
MIT