What is postgres-range?
The postgres-range npm package is designed to parse and serialize PostgreSQL range types. It supports various operations on range data, such as checking if a range contains a value, if one range contains another, if ranges overlap, and more. This package is particularly useful when working with PostgreSQL databases in Node.js applications that require manipulation or interpretation of range data.
What are postgres-range's main functionalities?
Parsing range strings
This feature allows for the parsing of PostgreSQL range strings into Range objects. The example demonstrates parsing an integer range string.
"const { Range } = require('postgres-range');
const intRange = Range.parse('[1,5)');
console.log(intRange);"
Checking if a range contains a value
This feature enables checking whether a given value is contained within a range. The example shows how to check if the number 3 is within the range [1,5), which returns true, and if the number 5 is within the same range, which returns false.
"const { Range } = require('postgres-range');
const intRange = new Range(1, 5);
console.log(intRange.contains(3)); // true
console.log(intRange.contains(5)); // false"
Serializing range objects to strings
This feature allows for the serialization of Range objects back into PostgreSQL range strings. The example demonstrates serializing a Range object representing the range [1,5).
"const { Range } = require('postgres-range');
const intRange = new Range(1, 5, '[)');
console.log(intRange.toString()); // '[1,5)'"
Other packages similar to postgres-range
pg-range
Similar to postgres-range, pg-range is designed to work with PostgreSQL range types in Node.js. It provides functionality for parsing and formatting range types. The main difference is in the API design and the extent of utility functions provided for range manipulation.
postgres-range 
Parse postgres range columns
Install
npm install --save postgres-range
Usage
const range = require('postgres-range')
const rng = range.parse('[0,5)', (value) => parseInt(value, 10))
rng.isBounded()
rng.isLowerBoundClosed()
rng.isUpperBoundClosed()
rng.hasLowerBound()
rng.hasUpperBound()
rng.containsPoint(4)
rng.containsRange(range.parse('[1,2]', x => parseInt(x)))
range.parse('empty').isEmpty()
range.serialize(new range.Range(0, 5))
range.serialize(new range.Range(0, 5, range.RANGE_LB_INC | RANGE_UB_INC))
API
parse(input, [transform])
-> Range
input
Required
Type: string
A Postgres range string.
transform
Type: function
Default: identity
A function that transforms non-null bounds of the range.
serialize(range, [format])
-> string
range
Required
Type: Range
A Range
object.
format
Type: function
Default: identity
A function that formats non-null bounds of the range.
License
MIT © Abbas Mashayekh