aboutsummaryrefslogtreecommitdiff
path: root/node_modules/normalize-range/index.js
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2019-10-06 21:37:45 +0200
committerDimitri Staessens <dimitri@ouroboros.rocks>2019-10-06 21:37:45 +0200
commit3c51c3be85bb0d1bdb87ea0d6632f1c256912f27 (patch)
treec7ccc8279b12c4f7bdbbb4270d617e48f51722e4 /node_modules/normalize-range/index.js
parent412c104bebc507bea9c94fd53b5bdc4b64cbfe31 (diff)
downloadwebsite-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.tar.gz
website-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.zip
build: Add some required modules for node
Diffstat (limited to 'node_modules/normalize-range/index.js')
-rw-r--r--node_modules/normalize-range/index.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/normalize-range/index.js b/node_modules/normalize-range/index.js
new file mode 100644
index 0000000..d5a2ea8
--- /dev/null
+++ b/node_modules/normalize-range/index.js
@@ -0,0 +1,54 @@
+'use strict';
+module.exports = {
+ wrap: wrapRange,
+ limit: limitRange,
+ validate: validateRange,
+ test: testRange,
+ curry: curry,
+ name: name
+};
+
+function wrapRange(min, max, value) {
+ var maxLessMin = max - min;
+ return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min;
+}
+
+function limitRange(min, max, value) {
+ return Math.max(min, Math.min(max, value));
+}
+
+function validateRange(min, max, value, minExclusive, maxExclusive) {
+ if (!testRange(min, max, value, minExclusive, maxExclusive)) {
+ throw new Error(value + ' is outside of range [' + min + ',' + max + ')');
+ }
+ return value;
+}
+
+function testRange(min, max, value, minExclusive, maxExclusive) {
+ return !(
+ value < min ||
+ value > max ||
+ (maxExclusive && (value === max)) ||
+ (minExclusive && (value === min))
+ );
+}
+
+function name(min, max, minExcl, maxExcl) {
+ return (minExcl ? '(' : '[') + min + ',' + max + (maxExcl ? ')' : ']');
+}
+
+function curry(min, max, minExclusive, maxExclusive) {
+ var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive);
+ return {
+ wrap: wrapRange.bind(null, min, max),
+ limit: limitRange.bind(null, min, max),
+ validate: function(value) {
+ return validateRange(min, max, value, minExclusive, maxExclusive);
+ },
+ test: function(value) {
+ return testRange(min, max, value, minExclusive, maxExclusive);
+ },
+ toString: boundNameFn,
+ name: boundNameFn
+ };
+}