@rickosborne/rebound 2025.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1469 -0
- package/assert-bounded.cjs +44 -0
- package/assert-bounded.cjs.map +6 -0
- package/assert-bounded.d.ts +11 -0
- package/assert-bounded.d.ts.map +1 -0
- package/assert-bounded.mjs +25 -0
- package/assert-bounded.mjs.map +6 -0
- package/bound.cjs +132 -0
- package/bound.cjs.map +6 -0
- package/bound.d.ts +35 -0
- package/bound.d.ts.map +1 -0
- package/bound.mjs +113 -0
- package/bound.mjs.map +6 -0
- package/effective-range.cjs +30 -0
- package/effective-range.cjs.map +6 -0
- package/effective-range.d.ts +7 -0
- package/effective-range.d.ts.map +1 -0
- package/effective-range.mjs +11 -0
- package/effective-range.mjs.map +6 -0
- package/empty-range.cjs +45 -0
- package/empty-range.cjs.map +6 -0
- package/empty-range.d.ts +11 -0
- package/empty-range.d.ts.map +1 -0
- package/empty-range.mjs +26 -0
- package/empty-range.mjs.map +6 -0
- package/from-number-bounded.cjs +49 -0
- package/from-number-bounded.cjs.map +6 -0
- package/from-number-bounded.d.ts +12 -0
- package/from-number-bounded.d.ts.map +1 -0
- package/from-number-bounded.mjs +30 -0
- package/from-number-bounded.mjs.map +6 -0
- package/guard-bounded.cjs +38 -0
- package/guard-bounded.cjs.map +6 -0
- package/guard-bounded.d.ts +15 -0
- package/guard-bounded.d.ts.map +1 -0
- package/guard-bounded.mjs +19 -0
- package/guard-bounded.mjs.map +6 -0
- package/index.cjs +49 -0
- package/index.cjs.map +6 -0
- package/index.d.ts +32 -0
- package/index.d.ts.map +1 -0
- package/index.mjs +32 -0
- package/index.mjs.map +6 -0
- package/int255-from-01.cjs +34 -0
- package/int255-from-01.cjs.map +6 -0
- package/int255-from-01.d.ts +8 -0
- package/int255-from-01.d.ts.map +1 -0
- package/int255-from-01.mjs +15 -0
- package/int255-from-01.mjs.map +6 -0
- package/int255.cjs +34 -0
- package/int255.cjs.map +6 -0
- package/int255.d.ts +9 -0
- package/int255.d.ts.map +1 -0
- package/int255.mjs +14 -0
- package/int255.mjs.map +6 -0
- package/int360.cjs +34 -0
- package/int360.cjs.map +6 -0
- package/int360.d.ts +9 -0
- package/int360.d.ts.map +1 -0
- package/int360.mjs +14 -0
- package/int360.mjs.map +6 -0
- package/integer-from.cjs +54 -0
- package/integer-from.cjs.map +6 -0
- package/integer-from.d.ts +19 -0
- package/integer-from.d.ts.map +1 -0
- package/integer-from.mjs +35 -0
- package/integer-from.mjs.map +6 -0
- package/integer-generator.cjs +54 -0
- package/integer-generator.cjs.map +6 -0
- package/integer-generator.d.ts +9 -0
- package/integer-generator.d.ts.map +1 -0
- package/integer-generator.mjs +35 -0
- package/integer-generator.mjs.map +6 -0
- package/integer-range.cjs +50 -0
- package/integer-range.cjs.map +6 -0
- package/integer-range.d.ts +9 -0
- package/integer-range.d.ts.map +1 -0
- package/integer-range.mjs +31 -0
- package/integer-range.mjs.map +6 -0
- package/number-range.cjs +97 -0
- package/number-range.cjs.map +6 -0
- package/number-range.d.ts +20 -0
- package/number-range.d.ts.map +1 -0
- package/number-range.mjs +78 -0
- package/number-range.mjs.map +6 -0
- package/package.json +248 -0
- package/random-bounded.cjs +52 -0
- package/random-bounded.cjs.map +6 -0
- package/random-bounded.d.ts +9 -0
- package/random-bounded.d.ts.map +1 -0
- package/random-bounded.mjs +33 -0
- package/random-bounded.mjs.map +6 -0
- package/range-base.cjs +127 -0
- package/range-base.cjs.map +6 -0
- package/range-base.d.ts +29 -0
- package/range-base.d.ts.map +1 -0
- package/range-base.mjs +108 -0
- package/range-base.mjs.map +6 -0
- package/range-like.cjs +25 -0
- package/range-like.cjs.map +6 -0
- package/range-like.d.ts +20 -0
- package/range-like.d.ts.map +1 -0
- package/range-like.mjs +5 -0
- package/range-like.mjs.map +6 -0
- package/range.cjs +41 -0
- package/range.cjs.map +6 -0
- package/range.d.ts +4 -0
- package/range.d.ts.map +1 -0
- package/range.mjs +22 -0
- package/range.mjs.map +6 -0
- package/real-range.cjs +53 -0
- package/real-range.cjs.map +6 -0
- package/real-range.d.ts +8 -0
- package/real-range.d.ts.map +1 -0
- package/real-range.mjs +34 -0
- package/real-range.mjs.map +6 -0
- package/real01-from-255.cjs +37 -0
- package/real01-from-255.cjs.map +6 -0
- package/real01-from-255.d.ts +10 -0
- package/real01-from-255.d.ts.map +1 -0
- package/real01-from-255.mjs +18 -0
- package/real01-from-255.mjs.map +6 -0
- package/real01.cjs +34 -0
- package/real01.cjs.map +6 -0
- package/real01.d.ts +9 -0
- package/real01.d.ts.map +1 -0
- package/real01.mjs +14 -0
- package/real01.mjs.map +6 -0
- package/real255-from-01.cjs +28 -0
- package/real255-from-01.cjs.map +6 -0
- package/real255-from-01.d.ts +7 -0
- package/real255-from-01.d.ts.map +1 -0
- package/real255-from-01.mjs +9 -0
- package/real255-from-01.mjs.map +6 -0
- package/real255.cjs +34 -0
- package/real255.cjs.map +6 -0
- package/real255.d.ts +9 -0
- package/real255.d.ts.map +1 -0
- package/real255.mjs +14 -0
- package/real255.mjs.map +6 -0
- package/real360.cjs +34 -0
- package/real360.cjs.map +6 -0
- package/real360.d.ts +9 -0
- package/real360.d.ts.map +1 -0
- package/real360.mjs +14 -0
- package/real360.mjs.map +6 -0
- package/rebound-builder.cjs +148 -0
- package/rebound-builder.cjs.map +6 -0
- package/rebound-builder.d.ts +46 -0
- package/rebound-builder.d.ts.map +1 -0
- package/rebound-builder.mjs +129 -0
- package/rebound-builder.mjs.map +6 -0
- package/rebound.cjs +156 -0
- package/rebound.cjs.map +6 -0
- package/rebound.d.ts +70 -0
- package/rebound.d.ts.map +1 -0
- package/rebound.mjs +137 -0
- package/rebound.mjs.map +6 -0
- package/same-bounds.cjs +46 -0
- package/same-bounds.cjs.map +6 -0
- package/same-bounds.d.ts +4 -0
- package/same-bounds.d.ts.map +1 -0
- package/same-bounds.mjs +27 -0
- package/same-bounds.mjs.map +6 -0
- package/scale-bounded.cjs +59 -0
- package/scale-bounded.cjs.map +6 -0
- package/scale-bounded.d.ts +12 -0
- package/scale-bounded.d.ts.map +1 -0
- package/scale-bounded.mjs +40 -0
- package/scale-bounded.mjs.map +6 -0
- package/spec.cjs +41 -0
- package/spec.cjs.map +6 -0
- package/spec.d.ts +204 -0
- package/spec.d.ts.map +1 -0
- package/spec.mjs +21 -0
- package/spec.mjs.map +6 -0
- package/string-range.cjs +40 -0
- package/string-range.cjs.map +6 -0
- package/string-range.d.ts +8 -0
- package/string-range.d.ts.map +1 -0
- package/string-range.mjs +21 -0
- package/string-range.mjs.map +6 -0
- package/typed-function.cjs +42 -0
- package/typed-function.cjs.map +6 -0
- package/typed-function.d.ts +3 -0
- package/typed-function.d.ts.map +1 -0
- package/typed-function.mjs +23 -0
- package/typed-function.mjs.map +6 -0
- package/util.cjs +28 -0
- package/util.cjs.map +6 -0
- package/util.d.ts +3 -0
- package/util.d.ts.map +1 -0
- package/util.mjs +9 -0
- package/util.mjs.map +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer-from.d.ts","sourceRoot":"","sources":["../../../src/packages/rebound/integer-from.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGnG,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,kBAAkB;IACtE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACzE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;CACzF;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC;AACnF,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,MAAM,MAAM,WAAW,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,OAAO,KAAK,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;AAEjH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,EAAE,KAAK,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,EAAE,SAAS,SAAS,OAAO,EACnL,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,wBAAwB,EACvC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACvB,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CASjC;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,EAAE,KAAK,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,EAAE,SAAS,SAAS,OAAO,EAC1K,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC9F,aAAa,EAAE,wBAAwB,EACvC,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,WAAmB,EAC7B,MAAM,GAAE,MAAuI,GAC7I,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAIpD"}
|
package/integer-from.mjs
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { lowerFirst } from "@rickosborne/foundation";
|
|
4
|
+
import { scrubStackTrace } from "@rickosborne/guard";
|
|
5
|
+
import { addTypedProperties } from "./typed-function.mjs";
|
|
6
|
+
const ROUND = "round";
|
|
7
|
+
const CEIL = "ceil";
|
|
8
|
+
const TRUNC = "trunc";
|
|
9
|
+
const FLOOR = "floor";
|
|
10
|
+
function boundedIntFromNumber(isLowerInc, lower, upper, isUpperInc, ifPresent, errorProvider, strategy, value, name) {
|
|
11
|
+
if (value != null && (isLowerInc ? value >= lower : value > lower) && (isUpperInc ? value <= upper : value < upper)) {
|
|
12
|
+
return strategy(value);
|
|
13
|
+
}
|
|
14
|
+
if (value == null && ifPresent) {
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
17
|
+
const error = errorProvider(value, name);
|
|
18
|
+
throw scrubStackTrace(error, "boundedIntFromNumber");
|
|
19
|
+
}
|
|
20
|
+
__name(boundedIntFromNumber, "boundedIntFromNumber");
|
|
21
|
+
function integerFrom(typeName, bounds, errorProvider, ifPresent, strategy = ROUND, fnName = `${lowerFirst(typeName)}From${typeof strategy === "function" ? strategy.name : strategy}${ifPresent ? "IfPresent" : ""}`) {
|
|
22
|
+
const toInt = typeof strategy === "function" ? strategy : Math[strategy];
|
|
23
|
+
const boundedIntFrom = boundedIntFromNumber.bind(void 0, bounds.isLowerInc, bounds.lower, bounds.upper, bounds.isUpperInc, ifPresent, errorProvider, toInt);
|
|
24
|
+
return addTypedProperties(boundedIntFrom, bounds, typeName, fnName);
|
|
25
|
+
}
|
|
26
|
+
__name(integerFrom, "integerFrom");
|
|
27
|
+
export {
|
|
28
|
+
CEIL,
|
|
29
|
+
FLOOR,
|
|
30
|
+
ROUND,
|
|
31
|
+
TRUNC,
|
|
32
|
+
boundedIntFromNumber,
|
|
33
|
+
integerFrom
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=integer-from.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/integer-from.ts"],
|
|
4
|
+
"mappings": ";;AAAA,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAGhC,SAAS,0BAA0B;AAW5B,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,MAAM,QAAQ;AAGd,SAAS,qBACf,YACA,OACA,OACA,YACA,WACA,eACA,UACA,OACA,MACkC;AAClC,MAAI,SAAS,SAAS,aAAc,SAAS,QAAU,QAAQ,WAAY,aAAc,SAAS,QAAU,QAAQ,QAAS;AAC5H,WAAO,SAAS,KAAK;AAAA,EACtB;AACA,MAAI,SAAS,QAAQ,WAAW;AAC/B,WAAO;AAAA,EACR;AACA,QAAM,QAAQ,cAAc,OAAO,IAAI;AACvC,QAAM,gBAAgB,OAAO,sBAAsB;AACpD;AAnBgB;AAqBT,SAAS,YACf,UACA,QACA,eACA,WACA,WAAwB,OACxB,SAAiB,GAAI,WAAW,QAAQ,CAAE,OAAQ,OAAO,aAAa,aAAa,SAAS,OAAO,QAAS,GAAI,YAAY,cAAc,EAAG,IACxF;AACrD,QAAM,QAAS,OAAO,aAAa,aAAa,WAAW,KAAM,QAAS;AAC1E,QAAM,iBAAiB,qBAAqB,KAAK,QAAW,OAAO,YAAY,OAAO,OAAO,OAAO,OAAO,OAAO,YAAY,WAAW,eAAe,KAAK;AAC7J,SAAO,mBAAmB,gBAAgB,QAAQ,UAAU,MAAM;AACnE;AAXgB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var integer_generator_exports = {};
|
|
21
|
+
__export(integer_generator_exports, {
|
|
22
|
+
integerGenerator: () => integerGenerator
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(integer_generator_exports);
|
|
25
|
+
var import_guard_bounded = require("./guard-bounded.cjs");
|
|
26
|
+
function* integerGenerator(bounds, options = {}) {
|
|
27
|
+
var _a;
|
|
28
|
+
const { isLowerInc, isUpperInc, isInt, upper, lower } = bounds;
|
|
29
|
+
const prefix = ((_a = options.typeName) == null ? void 0 : _a.concat(": ")) ?? "";
|
|
30
|
+
const step = options.step ?? 1;
|
|
31
|
+
const start = options.start ?? (step < 0 ? upper : lower);
|
|
32
|
+
const end = options.end ?? (step < 0 ? lower : upper);
|
|
33
|
+
if (!Number.isFinite(start)) {
|
|
34
|
+
throw new RangeError(`${prefix}Unbounded start`);
|
|
35
|
+
}
|
|
36
|
+
if (!(0, import_guard_bounded.validateBounded)(isLowerInc, lower, isInt, upper, isUpperInc, false, start) || !(0, import_guard_bounded.validateBounded)(isLowerInc, lower, isInt, upper, isUpperInc, false, end) || step > 0 && start > end || step < 0 && start < end) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let more;
|
|
40
|
+
if (step > 0) {
|
|
41
|
+
if (isUpperInc) more = /* @__PURE__ */ __name((n) => n <= end, "more");
|
|
42
|
+
else more = /* @__PURE__ */ __name((n) => n < end, "more");
|
|
43
|
+
} else if (step < 0) {
|
|
44
|
+
if (isLowerInc) more = /* @__PURE__ */ __name((n) => n >= end, "more");
|
|
45
|
+
else more = /* @__PURE__ */ __name((n) => n > end, "more");
|
|
46
|
+
} else {
|
|
47
|
+
more = /* @__PURE__ */ __name(() => true, "more");
|
|
48
|
+
}
|
|
49
|
+
for (let n = start; more(n); n = n + step) {
|
|
50
|
+
yield n;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
__name(integerGenerator, "integerGenerator");
|
|
54
|
+
//# sourceMappingURL=integer-generator.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/integer-generator.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAgC;AAUzB,UAAU,iBAChB,QACA,UAAmC,CAAC,GACC;AAbtC;AAcC,QAAM,EAAE,YAAY,YAAY,OAAO,OAAO,MAAM,IAAI;AACxD,QAAM,WAAS,aAAQ,aAAR,mBAAkB,OAAO,UAAS;AACjD,QAAM,OAAQ,QAAQ,QAAQ;AAC9B,QAAM,QAAS,QAAQ,UAAU,OAAO,IAAI,QAAQ;AACpD,QAAM,MAAO,QAAQ,QAAQ,OAAO,IAAI,QAAQ;AAChD,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC5B,UAAM,IAAI,WAAW,GAAI,MAAO,iBAAiB;AAAA,EAClD;AACA,MACC,KAAC,sCAAgB,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,KAAK,KAC1E,KAAC,sCAAgB,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,GAAG,KACvE,OAAO,KAAK,QAAQ,OACpB,OAAO,KAAK,QAAQ,KACpB;AACD;AAAA,EACD;AACA,MAAI;AACJ,MAAI,OAAO,GAAG;AACb,QAAI,WAAY,QAAO,wBAAC,MAAM,KAAK,KAAZ;AAAA,QAClB,QAAO,wBAAC,MAAM,IAAI,KAAX;AAAA,EACb,WAAW,OAAO,GAAG;AACpB,QAAI,WAAY,QAAO,wBAAC,MAAM,KAAK,KAAZ;AAAA,QAClB,QAAO,wBAAC,MAAM,IAAI,KAAX;AAAA,EACb,OAAO;AACN,WAAO,6BAAM,MAAN;AAAA,EACR;AACA,WAAS,IAAO,OAAO,KAAK,CAAC,GAAG,IAAK,IAAI,MAAY;AACpD,UAAM;AAAA,EACP;AACD;AAjCiB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CheckedBounds } from "./spec.js";
|
|
2
|
+
export interface IntegerGeneratorOptions {
|
|
3
|
+
end?: number | undefined;
|
|
4
|
+
start?: number | undefined;
|
|
5
|
+
step?: number | undefined;
|
|
6
|
+
typeName?: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare function integerGenerator<N extends number>(bounds: CheckedBounds, options?: IntegerGeneratorOptions): Generator<N, undefined, undefined>;
|
|
9
|
+
//# sourceMappingURL=integer-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer-generator.d.ts","sourceRoot":"","sources":["../../../src/packages/rebound/integer-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACvC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAiB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,uBAA4B,GACnC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CA8BpC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { validateBounded } from "./guard-bounded.mjs";
|
|
4
|
+
function* integerGenerator(bounds, options = {}) {
|
|
5
|
+
var _a;
|
|
6
|
+
const { isLowerInc, isUpperInc, isInt, upper, lower } = bounds;
|
|
7
|
+
const prefix = ((_a = options.typeName) == null ? void 0 : _a.concat(": ")) ?? "";
|
|
8
|
+
const step = options.step ?? 1;
|
|
9
|
+
const start = options.start ?? (step < 0 ? upper : lower);
|
|
10
|
+
const end = options.end ?? (step < 0 ? lower : upper);
|
|
11
|
+
if (!Number.isFinite(start)) {
|
|
12
|
+
throw new RangeError(`${prefix}Unbounded start`);
|
|
13
|
+
}
|
|
14
|
+
if (!validateBounded(isLowerInc, lower, isInt, upper, isUpperInc, false, start) || !validateBounded(isLowerInc, lower, isInt, upper, isUpperInc, false, end) || step > 0 && start > end || step < 0 && start < end) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let more;
|
|
18
|
+
if (step > 0) {
|
|
19
|
+
if (isUpperInc) more = /* @__PURE__ */ __name((n) => n <= end, "more");
|
|
20
|
+
else more = /* @__PURE__ */ __name((n) => n < end, "more");
|
|
21
|
+
} else if (step < 0) {
|
|
22
|
+
if (isLowerInc) more = /* @__PURE__ */ __name((n) => n >= end, "more");
|
|
23
|
+
else more = /* @__PURE__ */ __name((n) => n > end, "more");
|
|
24
|
+
} else {
|
|
25
|
+
more = /* @__PURE__ */ __name(() => true, "more");
|
|
26
|
+
}
|
|
27
|
+
for (let n = start; more(n); n = n + step) {
|
|
28
|
+
yield n;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__name(integerGenerator, "integerGenerator");
|
|
32
|
+
export {
|
|
33
|
+
integerGenerator
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=integer-generator.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/integer-generator.ts"],
|
|
4
|
+
"mappings": ";;AAAA,SAAS,uBAAuB;AAUzB,UAAU,iBAChB,QACA,UAAmC,CAAC,GACC;AAbtC;AAcC,QAAM,EAAE,YAAY,YAAY,OAAO,OAAO,MAAM,IAAI;AACxD,QAAM,WAAS,aAAQ,aAAR,mBAAkB,OAAO,UAAS;AACjD,QAAM,OAAQ,QAAQ,QAAQ;AAC9B,QAAM,QAAS,QAAQ,UAAU,OAAO,IAAI,QAAQ;AACpD,QAAM,MAAO,QAAQ,QAAQ,OAAO,IAAI,QAAQ;AAChD,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC5B,UAAM,IAAI,WAAW,GAAI,MAAO,iBAAiB;AAAA,EAClD;AACA,MACC,CAAC,gBAAgB,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,KAAK,KAC1E,CAAC,gBAAgB,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,GAAG,KACvE,OAAO,KAAK,QAAQ,OACpB,OAAO,KAAK,QAAQ,KACpB;AACD;AAAA,EACD;AACA,MAAI;AACJ,MAAI,OAAO,GAAG;AACb,QAAI,WAAY,QAAO,wBAAC,MAAM,KAAK,KAAZ;AAAA,QAClB,QAAO,wBAAC,MAAM,IAAI,KAAX;AAAA,EACb,WAAW,OAAO,GAAG;AACpB,QAAI,WAAY,QAAO,wBAAC,MAAM,KAAK,KAAZ;AAAA,QAClB,QAAO,wBAAC,MAAM,IAAI,KAAX;AAAA,EACb,OAAO;AACN,WAAO,6BAAM,MAAN;AAAA,EACR;AACA,WAAS,IAAO,OAAO,KAAK,CAAC,GAAG,IAAK,IAAI,MAAY;AACpD,UAAM;AAAA,EACP;AACD;AAjCiB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var integer_range_exports = {};
|
|
21
|
+
__export(integer_range_exports, {
|
|
22
|
+
IntegerRange: () => IntegerRange
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(integer_range_exports);
|
|
25
|
+
var import_number_range = require("./number-range.cjs");
|
|
26
|
+
const _IntegerRange = class _IntegerRange extends import_number_range.NumberRange {
|
|
27
|
+
discreteIntegers;
|
|
28
|
+
step = 1;
|
|
29
|
+
constructor(lower, upper) {
|
|
30
|
+
super(true, lower, true, upper, true);
|
|
31
|
+
this.discreteIntegers = upper - lower + 1;
|
|
32
|
+
}
|
|
33
|
+
contains(value) {
|
|
34
|
+
return (Number.isSafeInteger(value) || !Number.isFinite(value)) && super.contains(value);
|
|
35
|
+
}
|
|
36
|
+
scaleValueFrom(value, other) {
|
|
37
|
+
super.assertCanScaleFrom(other);
|
|
38
|
+
if (this.isSingleton) {
|
|
39
|
+
return this.lower;
|
|
40
|
+
}
|
|
41
|
+
const thisWidth = this.discreteIntegers;
|
|
42
|
+
const otherWidth = other.upper - other.lower;
|
|
43
|
+
const factor = thisWidth / otherWidth;
|
|
44
|
+
const offset = value - other.lower;
|
|
45
|
+
return Math.min(this.upper, this.lower + Math.trunc(offset * factor));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
__name(_IntegerRange, "IntegerRange");
|
|
49
|
+
let IntegerRange = _IntegerRange;
|
|
50
|
+
//# sourceMappingURL=integer-range.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/integer-range.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B;AAErB,MAAM,gBAAN,MAAM,sBAAqB,gCAAY;AAAA,EAC7B;AAAA,EACS,OAAO;AAAA,EAEhC,YACC,OACA,OACC;AACD,UAAM,MAAM,OAAO,MAAM,OAAO,IAAI;AACpC,SAAK,mBAAmB,QAAQ,QAAQ;AAAA,EACzC;AAAA,EAEgB,SAAS,OAAwB;AAChD,YAAQ,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK,MAAM,MAAM,SAAS,KAAK;AAAA,EACxF;AAAA,EAEgB,eAAe,OAAe,OAA4B;AACzE,UAAM,mBAAmB,KAAK;AAC9B,QAAI,KAAK,aAAa;AACrB,aAAO,KAAK;AAAA,IACb;AACA,UAAM,YAAY,KAAK;AACvB,UAAM,aAAa,MAAM,QAAQ,MAAM;AACvC,UAAM,SAAS,YAAY;AAC3B,UAAM,SAAS,QAAQ,MAAM;AAC7B,WAAO,KAAK,IAAI,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,EACrE;AACD;AA3B8C;AAAvC,IAAM,eAAN;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NumberRange } from "./number-range.js";
|
|
2
|
+
export declare class IntegerRange extends NumberRange {
|
|
3
|
+
readonly discreteIntegers: number;
|
|
4
|
+
readonly step = 1;
|
|
5
|
+
constructor(lower: number, upper: number);
|
|
6
|
+
contains(value: number): boolean;
|
|
7
|
+
scaleValueFrom(value: number, other: NumberRange): number;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=integer-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer-range.d.ts","sourceRoot":"","sources":["../../../src/packages/rebound/integer-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,YAAa,SAAQ,WAAW;IAC5C,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAyB,IAAI,KAAK;gBAGjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;IAME,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM;CAWzE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { NumberRange } from "./number-range.mjs";
|
|
4
|
+
const _IntegerRange = class _IntegerRange extends NumberRange {
|
|
5
|
+
discreteIntegers;
|
|
6
|
+
step = 1;
|
|
7
|
+
constructor(lower, upper) {
|
|
8
|
+
super(true, lower, true, upper, true);
|
|
9
|
+
this.discreteIntegers = upper - lower + 1;
|
|
10
|
+
}
|
|
11
|
+
contains(value) {
|
|
12
|
+
return (Number.isSafeInteger(value) || !Number.isFinite(value)) && super.contains(value);
|
|
13
|
+
}
|
|
14
|
+
scaleValueFrom(value, other) {
|
|
15
|
+
super.assertCanScaleFrom(other);
|
|
16
|
+
if (this.isSingleton) {
|
|
17
|
+
return this.lower;
|
|
18
|
+
}
|
|
19
|
+
const thisWidth = this.discreteIntegers;
|
|
20
|
+
const otherWidth = other.upper - other.lower;
|
|
21
|
+
const factor = thisWidth / otherWidth;
|
|
22
|
+
const offset = value - other.lower;
|
|
23
|
+
return Math.min(this.upper, this.lower + Math.trunc(offset * factor));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
__name(_IntegerRange, "IntegerRange");
|
|
27
|
+
let IntegerRange = _IntegerRange;
|
|
28
|
+
export {
|
|
29
|
+
IntegerRange
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=integer-range.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/integer-range.ts"],
|
|
4
|
+
"mappings": ";;AAAA,SAAS,mBAAmB;AAErB,MAAM,gBAAN,MAAM,sBAAqB,YAAY;AAAA,EAC7B;AAAA,EACS,OAAO;AAAA,EAEhC,YACC,OACA,OACC;AACD,UAAM,MAAM,OAAO,MAAM,OAAO,IAAI;AACpC,SAAK,mBAAmB,QAAQ,QAAQ;AAAA,EACzC;AAAA,EAEgB,SAAS,OAAwB;AAChD,YAAQ,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK,MAAM,MAAM,SAAS,KAAK;AAAA,EACxF;AAAA,EAEgB,eAAe,OAAe,OAA4B;AACzE,UAAM,mBAAmB,KAAK;AAC9B,QAAI,KAAK,aAAa;AACrB,aAAO,KAAK;AAAA,IACb;AACA,UAAM,YAAY,KAAK;AACvB,UAAM,aAAa,MAAM,QAAQ,MAAM;AACvC,UAAM,SAAS,YAAY;AAC3B,UAAM,SAAS,QAAQ,MAAM;AAC7B,WAAO,KAAK,IAAI,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,EACrE;AACD;AA3B8C;AAAvC,IAAM,eAAN;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/number-range.cjs
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var number_range_exports = {};
|
|
21
|
+
__export(number_range_exports, {
|
|
22
|
+
NumberRange: () => NumberRange
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(number_range_exports);
|
|
25
|
+
var import_foundation = require("@rickosborne/foundation");
|
|
26
|
+
var import_range_base = require("./range-base.cjs");
|
|
27
|
+
var import_range_like = require("./range-like.cjs");
|
|
28
|
+
var import_range = require("./range.cjs");
|
|
29
|
+
const _NumberRange = class _NumberRange extends import_range_base.RangeBase {
|
|
30
|
+
constructor(isLowerInc, lower, isInt, upper, isUpperInc) {
|
|
31
|
+
if (!Number.isFinite(lower) && !isLowerInc || !Number.isFinite(upper) && !isUpperInc) {
|
|
32
|
+
throw new RangeError(`Unbounded (infinite) upper/lower must be inclusive`);
|
|
33
|
+
}
|
|
34
|
+
let isSingleton = false;
|
|
35
|
+
let isEmpty = false;
|
|
36
|
+
if (lower > upper) {
|
|
37
|
+
throw new RangeError("Expected lower <= upper");
|
|
38
|
+
}
|
|
39
|
+
if (lower === upper) {
|
|
40
|
+
if (!isLowerInc && !isUpperInc) {
|
|
41
|
+
throw new Error("Expected at least one inclusive when lower === upper");
|
|
42
|
+
}
|
|
43
|
+
isSingleton = isLowerInc && isUpperInc;
|
|
44
|
+
isEmpty = !isSingleton;
|
|
45
|
+
}
|
|
46
|
+
super(
|
|
47
|
+
isLowerInc,
|
|
48
|
+
Number.isFinite(lower) ? lower : import_range_like.unbounded,
|
|
49
|
+
Number.isFinite(upper) ? upper : import_range_like.unbounded,
|
|
50
|
+
isUpperInc,
|
|
51
|
+
import_foundation.numberAsc
|
|
52
|
+
);
|
|
53
|
+
this.lower = lower;
|
|
54
|
+
this.isInt = isInt;
|
|
55
|
+
this.upper = upper;
|
|
56
|
+
this.isSingleton = isSingleton;
|
|
57
|
+
this.isEmpty = isEmpty;
|
|
58
|
+
this.label = (0, import_range.rangeFromChecked)({ isInt, isLowerInc, isUpperInc, lower, upper });
|
|
59
|
+
}
|
|
60
|
+
isEmpty;
|
|
61
|
+
isSingleton;
|
|
62
|
+
label;
|
|
63
|
+
assertCanScaleFrom(other) {
|
|
64
|
+
if (!this.isBounded || !other.isBounded) {
|
|
65
|
+
throw new RangeError("Cannot scale with unbounded range");
|
|
66
|
+
}
|
|
67
|
+
if (other.lower >= other.upper) {
|
|
68
|
+
throw new RangeError("Not enough source range");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
compareTo(other) {
|
|
72
|
+
const compared = super.compareTo(other);
|
|
73
|
+
if (compared !== 0) {
|
|
74
|
+
return compared;
|
|
75
|
+
}
|
|
76
|
+
if (other instanceof _NumberRange) {
|
|
77
|
+
if (this.isInt && !other.isInt) {
|
|
78
|
+
return -1;
|
|
79
|
+
} else if (!this.isInt && other.isInt) {
|
|
80
|
+
return 1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
encloses(other) {
|
|
86
|
+
if (other instanceof _NumberRange && this.step > other.step) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return super.encloses(other);
|
|
90
|
+
}
|
|
91
|
+
isType(obj) {
|
|
92
|
+
return typeof obj === "number" && !Number.isNaN(obj);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
__name(_NumberRange, "NumberRange");
|
|
96
|
+
let NumberRange = _NumberRange;
|
|
97
|
+
//# sourceMappingURL=number-range.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/number-range.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,wBAA0B;AAE1B,wBAA0B;AAC1B,mBAAiC;AAG1B,MAAe,eAAf,MAAe,qBAAoB,4BAA8D;AAAA,EAO7F,YACT,YACgB,OACT,OACS,OAChB,YACC;AACD,QAAK,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,cAAgB,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,YAAa;AACzF,YAAM,IAAI,WAAW,oDAAoD;AAAA,IAC1E;AACA,QAAI,cAAc;AAClB,QAAI,UAAU;AACd,QAAI,QAAQ,OAAO;AAClB,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAC/C;AACA,QAAI,UAAU,OAAO;AACpB,UAAI,CAAC,cAAc,CAAC,YAAY;AAC/B,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,oBAAc,cAAc;AAC5B,gBAAU,CAAC;AAAA,IACZ;AACA;AAAA,MACC;AAAA,MACA,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,MACjC,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,IACD;AA1BgB;AACT;AACS;AAyBhB,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,YAAQ,+BAAiB,EAAE,OAAO,YAAY,YAAY,OAAO,MAAM,CAAC;AAAA,EAC9E;AAAA,EArCyB;AAAA,EACA;AAAA,EACT;AAAA,EAqCN,mBAAmB,OAA0B;AACtD,QAAI,CAAC,KAAK,aAAa,CAAC,MAAM,WAAW;AACxC,YAAM,IAAI,WAAW,mCAAmC;AAAA,IACzD;AACA,QAAI,MAAM,SAAS,MAAM,OAAO;AAC/B,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAC/C;AAAA,EACD;AAAA,EAEgB,UAAU,OAAkC;AAC3D,UAAM,WAAW,MAAM,UAAU,KAAK;AACtC,QAAI,aAAa,GAAG;AACnB,aAAO;AAAA,IACR;AACA,QAAI,iBAAiB,cAAa;AACjC,UAAI,KAAK,SAAS,CAAC,MAAM,OAAO;AAC/B,eAAO;AAAA,MACR,WAAW,CAAC,KAAK,SAAS,MAAM,OAAO;AACtC,eAAO;AAAA,MACR;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEgB,SAAS,OAAmC;AAC3D,QAAI,iBAAiB,gBAAe,KAAK,OAAO,MAAM,MAAM;AAC3D,aAAO;AAAA,IACR;AACA,WAAO,MAAM,SAAS,KAAK;AAAA,EAC5B;AAAA,EAEgB,OAAO,KAA6B;AACnD,WAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,MAAM,GAAG;AAAA,EACpD;AAGD;AA7EwG;AAAjG,IAAe,cAAf;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RangeBase } from "./range-base.js";
|
|
2
|
+
import type { RangeLike } from "./range-like.js";
|
|
3
|
+
import type { CheckedBounds } from "./spec.js";
|
|
4
|
+
export declare abstract class NumberRange extends RangeBase<number> implements CheckedBounds, RangeLike<number> {
|
|
5
|
+
readonly lower: number;
|
|
6
|
+
isInt: boolean;
|
|
7
|
+
readonly upper: number;
|
|
8
|
+
abstract readonly discreteIntegers: number | undefined;
|
|
9
|
+
readonly isEmpty: boolean;
|
|
10
|
+
readonly isSingleton: boolean;
|
|
11
|
+
readonly label: string;
|
|
12
|
+
abstract readonly step: number;
|
|
13
|
+
protected constructor(isLowerInc: boolean, lower: number, isInt: boolean, upper: number, isUpperInc: boolean);
|
|
14
|
+
protected assertCanScaleFrom(other: NumberRange): void;
|
|
15
|
+
compareTo(other: RangeLike<number>): number;
|
|
16
|
+
encloses(other: RangeLike<number>): boolean;
|
|
17
|
+
isType(obj: unknown): obj is number;
|
|
18
|
+
abstract scaleValueFrom(value: number, other: NumberRange): number;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=number-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-range.d.ts","sourceRoot":"","sources":["../../../src/packages/rebound/number-range.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,8BAAsB,WAAY,SAAQ,SAAS,CAAC,MAAM,CAAE,YAAW,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC;aASrF,KAAK,EAAE,MAAM;IACtB,KAAK,EAAE,OAAO;aACL,KAAK,EAAE,MAAM;IAV9B,kBAAyB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9D,SAAyB,OAAO,EAAE,OAAO,CAAC;IAC1C,SAAyB,WAAW,EAAE,OAAO,CAAC;IAC9C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,SAAS,aACR,UAAU,EAAE,OAAO,EACH,KAAK,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,EACL,KAAK,EAAE,MAAM,EAC7B,UAAU,EAAE,OAAO;IA6BpB,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAStC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;IAe3C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO;IAO3C,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM;aAInC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM;CACzE"}
|
package/number-range.mjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { numberAsc } from "@rickosborne/foundation";
|
|
4
|
+
import { RangeBase } from "./range-base.mjs";
|
|
5
|
+
import { unbounded } from "./range-like.mjs";
|
|
6
|
+
import { rangeFromChecked } from "./range.mjs";
|
|
7
|
+
const _NumberRange = class _NumberRange extends RangeBase {
|
|
8
|
+
constructor(isLowerInc, lower, isInt, upper, isUpperInc) {
|
|
9
|
+
if (!Number.isFinite(lower) && !isLowerInc || !Number.isFinite(upper) && !isUpperInc) {
|
|
10
|
+
throw new RangeError(`Unbounded (infinite) upper/lower must be inclusive`);
|
|
11
|
+
}
|
|
12
|
+
let isSingleton = false;
|
|
13
|
+
let isEmpty = false;
|
|
14
|
+
if (lower > upper) {
|
|
15
|
+
throw new RangeError("Expected lower <= upper");
|
|
16
|
+
}
|
|
17
|
+
if (lower === upper) {
|
|
18
|
+
if (!isLowerInc && !isUpperInc) {
|
|
19
|
+
throw new Error("Expected at least one inclusive when lower === upper");
|
|
20
|
+
}
|
|
21
|
+
isSingleton = isLowerInc && isUpperInc;
|
|
22
|
+
isEmpty = !isSingleton;
|
|
23
|
+
}
|
|
24
|
+
super(
|
|
25
|
+
isLowerInc,
|
|
26
|
+
Number.isFinite(lower) ? lower : unbounded,
|
|
27
|
+
Number.isFinite(upper) ? upper : unbounded,
|
|
28
|
+
isUpperInc,
|
|
29
|
+
numberAsc
|
|
30
|
+
);
|
|
31
|
+
this.lower = lower;
|
|
32
|
+
this.isInt = isInt;
|
|
33
|
+
this.upper = upper;
|
|
34
|
+
this.isSingleton = isSingleton;
|
|
35
|
+
this.isEmpty = isEmpty;
|
|
36
|
+
this.label = rangeFromChecked({ isInt, isLowerInc, isUpperInc, lower, upper });
|
|
37
|
+
}
|
|
38
|
+
isEmpty;
|
|
39
|
+
isSingleton;
|
|
40
|
+
label;
|
|
41
|
+
assertCanScaleFrom(other) {
|
|
42
|
+
if (!this.isBounded || !other.isBounded) {
|
|
43
|
+
throw new RangeError("Cannot scale with unbounded range");
|
|
44
|
+
}
|
|
45
|
+
if (other.lower >= other.upper) {
|
|
46
|
+
throw new RangeError("Not enough source range");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
compareTo(other) {
|
|
50
|
+
const compared = super.compareTo(other);
|
|
51
|
+
if (compared !== 0) {
|
|
52
|
+
return compared;
|
|
53
|
+
}
|
|
54
|
+
if (other instanceof _NumberRange) {
|
|
55
|
+
if (this.isInt && !other.isInt) {
|
|
56
|
+
return -1;
|
|
57
|
+
} else if (!this.isInt && other.isInt) {
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
encloses(other) {
|
|
64
|
+
if (other instanceof _NumberRange && this.step > other.step) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return super.encloses(other);
|
|
68
|
+
}
|
|
69
|
+
isType(obj) {
|
|
70
|
+
return typeof obj === "number" && !Number.isNaN(obj);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
__name(_NumberRange, "NumberRange");
|
|
74
|
+
let NumberRange = _NumberRange;
|
|
75
|
+
export {
|
|
76
|
+
NumberRange
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=number-range.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/packages/rebound/number-range.ts"],
|
|
4
|
+
"mappings": ";;AAAA,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAE1B,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AAG1B,MAAe,eAAf,MAAe,qBAAoB,UAA8D;AAAA,EAO7F,YACT,YACgB,OACT,OACS,OAChB,YACC;AACD,QAAK,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,cAAgB,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,YAAa;AACzF,YAAM,IAAI,WAAW,oDAAoD;AAAA,IAC1E;AACA,QAAI,cAAc;AAClB,QAAI,UAAU;AACd,QAAI,QAAQ,OAAO;AAClB,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAC/C;AACA,QAAI,UAAU,OAAO;AACpB,UAAI,CAAC,cAAc,CAAC,YAAY;AAC/B,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,oBAAc,cAAc;AAC5B,gBAAU,CAAC;AAAA,IACZ;AACA;AAAA,MACC;AAAA,MACA,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,MACjC,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,IACD;AA1BgB;AACT;AACS;AAyBhB,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,QAAQ,iBAAiB,EAAE,OAAO,YAAY,YAAY,OAAO,MAAM,CAAC;AAAA,EAC9E;AAAA,EArCyB;AAAA,EACA;AAAA,EACT;AAAA,EAqCN,mBAAmB,OAA0B;AACtD,QAAI,CAAC,KAAK,aAAa,CAAC,MAAM,WAAW;AACxC,YAAM,IAAI,WAAW,mCAAmC;AAAA,IACzD;AACA,QAAI,MAAM,SAAS,MAAM,OAAO;AAC/B,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAC/C;AAAA,EACD;AAAA,EAEgB,UAAU,OAAkC;AAC3D,UAAM,WAAW,MAAM,UAAU,KAAK;AACtC,QAAI,aAAa,GAAG;AACnB,aAAO;AAAA,IACR;AACA,QAAI,iBAAiB,cAAa;AACjC,UAAI,KAAK,SAAS,CAAC,MAAM,OAAO;AAC/B,eAAO;AAAA,MACR,WAAW,CAAC,KAAK,SAAS,MAAM,OAAO;AACtC,eAAO;AAAA,MACR;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEgB,SAAS,OAAmC;AAC3D,QAAI,iBAAiB,gBAAe,KAAK,OAAO,MAAM,MAAM;AAC3D,aAAO;AAAA,IACR;AACA,WAAO,MAAM,SAAS,KAAK;AAAA,EAC5B;AAAA,EAEgB,OAAO,KAA6B;AACnD,WAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,MAAM,GAAG;AAAA,EACpD;AAGD;AA7EwG;AAAjG,IAAe,cAAf;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|