
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
interval-query
Advanced tools
A data structure for storing intervals and finding overlaps with either segment tree or sequential query
interval-query is a Node.js module for storing number intervals and offers two different query methods: segment tree and sequential. The main purpose of this module is to solve the following problem: given a set of intervals, how to find all overlapping intervals.
npm install query-interval
var intervals = require('interval-query');
var tree = new intervals.SegmentTree;
tree.pushInterval(1, 5);
tree.pushInterval(2, 7);
tree.pushInterval(3, 6);
tree.buildTree();
console.log(tree.queryOverlap());
One method to query for overlapping intervals is to use a Segment tree. The usage is as in the example above: we build a new tree object, push intervals to the data structure, build the tree and can then run certain queries on the tree. The segment tree is a static structure which means we cannot add further intervals once the tree is built. Rebuilding the tree is then required.
The sequential algorithm simply traverses the array of intervals to search for overlaps. It builds up a dynamic structure where intervals can be added at any time. The interface is similar to the segment tree, but without tree specific methods. Example:
var intervals = require('interval-query');
var sequ = new intervals.Sequential;
sequ.pushInterval(1, 5);
sequ.pushInterval(2, 7);
sequ.pushInterval(3, 6);
console.log(sequ.queryInterval(6, 8));
sequ.pushInterval(6.5, 7.33);
console.log(sequ.queryInterval(6, 8));
#####pushInterval(from, to)##### Push interval to interval stack.
from
: interval start (number).to
: interval end (number).#####pushArray(from, to, validate)##### Push array of intervals.
from
: interval start points (array).to
: interval end points (array).validate
: validate intervals (boolean, default: true).#####clearIntervalStack()##### Clear the interval stack.
#####queryPoint(point, resultFn)##### Query single point.
point
: (number).resultFn
: result array of intervals (function).#####queryPointArray(points, resultFn, validate)##### Query multiple points.
points
: (array).resultFn
: result array of intervals (function).validate
: validate points (boolean, default: true).#####queryInterval(from, to, options)##### Query single interval.
from
: interval start (number).to
: interval end (number).options
: (object).
endpoints
: include endpoints of interval in comparison, e.g. (1, 2) overlaps with (2, 3) (boolean, default: true).resultFn
: result array of intervals (function).#####queryIntervalArray(from, to, options)##### Query multiple intervals.
from
: interval start points (array).to
: interval end points (array).options
: (object).
endpoints
: include endpoints of interval in comparison, e.g. (1, 2) overlaps with (2, 3) (boolean, default: true).resultFn
: result array of intervals (function).validate
: validate intervals (boolean, default: true).#####queryOverlap()##### Query overlapping intervals for all intervals of the stack.
id
: interval id (number).from
: interval start (number).to
: interval end (number).overlap
: overlapping interval ids (array).#####buildTree()##### Build tree structure. #####printTree()##### Prints tree to console. #####printTreeTopDown()##### Prints tree to console top down.
Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.
FAQs
A data structure for storing intervals and finding overlaps with either segment tree or sequential query
The npm package interval-query receives a total of 1 weekly downloads. As such, interval-query popularity was classified as not popular.
We found that interval-query demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.