@rimbu/common 2.0.0 → 2.0.2
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 +42 -42
- package/dist/bun/err.mts +1 -1
- package/dist/cjs/async-optlazy.cjs +60 -42
- package/dist/cjs/async-optlazy.cjs.map +1 -0
- package/dist/cjs/async-optlazy.d.cts +46 -0
- package/dist/cjs/collect.cjs +9 -31
- package/dist/cjs/collect.cjs.map +1 -0
- package/dist/cjs/collect.d.cts +29 -0
- package/dist/cjs/comp.cjs +518 -707
- package/dist/cjs/comp.cjs.map +1 -0
- package/dist/cjs/comp.d.cts +239 -0
- package/dist/cjs/eq.cjs +375 -203
- package/dist/cjs/eq.cjs.map +1 -0
- package/dist/cjs/err.cjs +57 -50
- package/dist/cjs/err.cjs.map +1 -0
- package/dist/cjs/index-range.cjs +105 -109
- package/dist/cjs/index-range.cjs.map +1 -0
- package/dist/cjs/index-range.d.cts +42 -0
- package/dist/cjs/index.cjs +9 -797
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +6 -0
- package/dist/cjs/internal.cjs +14 -797
- package/dist/cjs/internal.cjs.map +1 -0
- package/dist/cjs/internal.d.cts +11 -0
- package/dist/cjs/optlazy.cjs +43 -37
- package/dist/cjs/optlazy.cjs.map +1 -0
- package/dist/cjs/range.cjs +35 -49
- package/dist/cjs/range.cjs.map +1 -0
- package/dist/cjs/traverse-state.cjs +29 -46
- package/dist/cjs/traverse-state.cjs.map +1 -0
- package/dist/cjs/types.cjs +2 -17
- package/dist/cjs/types.cjs.map +1 -0
- package/dist/cjs/update.cjs +20 -32
- package/dist/cjs/update.cjs.map +1 -0
- package/dist/esm/eq.d.mts +196 -0
- package/dist/esm/err.d.mts +33 -0
- package/dist/esm/optlazy.d.mts +42 -0
- package/dist/esm/range.d.mts +35 -0
- package/dist/esm/traverse-state.d.mts +33 -0
- package/dist/esm/types.d.mts +31 -0
- package/dist/esm/update.d.mts +18 -0
- package/package.json +19 -12
- package/src/err.mts +1 -1
- /package/dist/{types/eq.d.mts → cjs/eq.d.cts} +0 -0
- /package/dist/{types/err.d.mts → cjs/err.d.cts} +0 -0
- /package/dist/{types/optlazy.d.mts → cjs/optlazy.d.cts} +0 -0
- /package/dist/{types/range.d.mts → cjs/range.d.cts} +0 -0
- /package/dist/{types/traverse-state.d.mts → cjs/traverse-state.d.cts} +0 -0
- /package/dist/{types/types.d.mts → cjs/types.d.cts} +0 -0
- /package/dist/{types/update.d.mts → cjs/update.d.cts} +0 -0
- /package/dist/{types → esm}/async-optlazy.d.mts +0 -0
- /package/dist/{types → esm}/collect.d.mts +0 -0
- /package/dist/{types → esm}/comp.d.mts +0 -0
- /package/dist/{types → esm}/index-range.d.mts +0 -0
- /package/dist/{types → esm}/index.d.mts +0 -0
- /package/dist/{types → esm}/internal.d.mts +0 -0
package/dist/cjs/err.cjs
CHANGED
|
@@ -1,55 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/err.mts
|
|
21
|
-
var err_exports = {};
|
|
22
|
-
__export(err_exports, {
|
|
23
|
-
Err: () => Err,
|
|
24
|
-
ErrBase: () => ErrBase
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(err_exports);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrBase = void 0;
|
|
4
|
+
exports.Err = Err;
|
|
5
|
+
var tslib_1 = require("tslib");
|
|
6
|
+
/**
|
|
7
|
+
* Throws an `Err.ForcedError` error when called.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const emptyMap = HashMap.empty<number, string>()
|
|
11
|
+
* emptyMap.get(5, Err);
|
|
12
|
+
* // throws: Err.CustomError(message: 'Err: forced to throw error')
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
27
15
|
function Err() {
|
|
28
|
-
|
|
16
|
+
return ErrBase.msg('Err: Forced to throw error')();
|
|
29
17
|
}
|
|
30
18
|
var ErrBase;
|
|
31
|
-
((
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
19
|
+
(function (ErrBase) {
|
|
20
|
+
/**
|
|
21
|
+
* A custom error instance.
|
|
22
|
+
*/
|
|
23
|
+
var CustomError = /** @class */ (function () {
|
|
24
|
+
function CustomError(message) {
|
|
25
|
+
this.message = message;
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(CustomError.prototype, "name", {
|
|
28
|
+
get: function () {
|
|
29
|
+
return this.constructor.name;
|
|
30
|
+
},
|
|
31
|
+
enumerable: false,
|
|
32
|
+
configurable: true
|
|
33
|
+
});
|
|
34
|
+
return CustomError;
|
|
35
|
+
}());
|
|
36
|
+
ErrBase.CustomError = CustomError;
|
|
37
|
+
var ForcedError = /** @class */ (function (_super) {
|
|
38
|
+
tslib_1.__extends(ForcedError, _super);
|
|
39
|
+
function ForcedError() {
|
|
40
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
41
|
+
}
|
|
42
|
+
return ForcedError;
|
|
43
|
+
}(CustomError));
|
|
44
|
+
ErrBase.ForcedError = ForcedError;
|
|
45
|
+
/**
|
|
46
|
+
* Returns a function that, when called, throws an `Err.ForcedError` with the given `message` string.
|
|
47
|
+
* @param message - the message to put in the `Err.ForcedError` instance.
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const emptyMap = HashMap.empty<number, string>()
|
|
51
|
+
* emptyMap.get(5, ErrBase.msg('not found'));
|
|
52
|
+
* // throws: Err.CustomError(message: 'not found')
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function msg(message) {
|
|
56
|
+
return function () {
|
|
57
|
+
throw new ErrBase.ForcedError(message);
|
|
58
|
+
};
|
|
35
59
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
ErrBase2.CustomError = CustomError;
|
|
41
|
-
class ForcedError extends CustomError {
|
|
42
|
-
}
|
|
43
|
-
ErrBase2.ForcedError = ForcedError;
|
|
44
|
-
function msg(message) {
|
|
45
|
-
return function() {
|
|
46
|
-
throw new ErrBase2.ForcedError(message);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
ErrBase2.msg = msg;
|
|
50
|
-
})(ErrBase || (ErrBase = {}));
|
|
51
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
52
|
-
0 && (module.exports = {
|
|
53
|
-
Err,
|
|
54
|
-
ErrBase
|
|
55
|
-
});
|
|
60
|
+
ErrBase.msg = msg;
|
|
61
|
+
})(ErrBase || (exports.ErrBase = ErrBase = {}));
|
|
62
|
+
//# sourceMappingURL=err.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"err.cjs","sourceRoot":"","sources":["../../_cjs_prepare/err.cts"],"names":[],"mappings":";;;AASA,kBAEC;;AAXD;;;;;;;;GAQG;AACH,SAAgB,GAAG;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,IAAiB,OAAO,CA6BvB;AA7BD,WAAiB,OAAO;IACtB;;OAEG;IACH;QACE,qBAAqB,OAAe;YAAf,YAAO,GAAP,OAAO,CAAQ;QAAG,CAAC;QAExC,sBAAI,6BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B,CAAC;;;WAAA;QACH,kBAAC;IAAD,CAAC,AAND,IAMC;IANqB,mBAAW,cAMhC,CAAA;IAED;QAAiC,uCAAW;QAA5C;;QAA8C,CAAC;QAAD,kBAAC;IAAD,CAAC,AAA/C,CAAiC,WAAW,GAAG;IAAlC,mBAAW,cAAuB,CAAA;IAE/C;;;;;;;;;OASG;IACH,SAAgB,GAAG,CAAC,OAAe;QACjC,OAAO;YACL,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAJe,WAAG,MAIlB,CAAA;AACH,CAAC,EA7BgB,OAAO,uBAAP,OAAO,QA6BvB"}
|
package/dist/cjs/index-range.cjs
CHANGED
|
@@ -1,114 +1,110 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index-range.mts
|
|
21
|
-
var index_range_exports = {};
|
|
22
|
-
__export(index_range_exports, {
|
|
23
|
-
IndexRange: () => IndexRange
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(index_range_exports);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexRange = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
26
5
|
var IndexRange;
|
|
27
|
-
((
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (Array.isArray(range.start)) {
|
|
70
|
-
start = range.start[0];
|
|
71
|
-
if (!range.start[1])
|
|
72
|
-
start++;
|
|
73
|
-
} else
|
|
74
|
-
start = range.start;
|
|
75
|
-
if (start >= length || -start > length)
|
|
76
|
-
return "empty";
|
|
77
|
-
if (start < 0)
|
|
78
|
-
start = length + start;
|
|
6
|
+
(function (IndexRange) {
|
|
7
|
+
/**
|
|
8
|
+
* Returns, given the `range` `IndexRange`, a normalized tuple containing the
|
|
9
|
+
* start index, and optionally an end index.
|
|
10
|
+
* @param range - the `IndexRange` to use
|
|
11
|
+
*/
|
|
12
|
+
function getIndexRangeIndices(range) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (undefined !== range.amount) {
|
|
15
|
+
if (undefined === range.start)
|
|
16
|
+
return [0, range.amount - 1];
|
|
17
|
+
if (Array.isArray(range.start)) {
|
|
18
|
+
var _b = tslib_1.__read(range.start, 2), start_1 = _b[0], includeStart = _b[1];
|
|
19
|
+
if (includeStart)
|
|
20
|
+
return [start_1, start_1 + range.amount - 1];
|
|
21
|
+
return [start_1 + 1, start_1 + 1 + range.amount - 1];
|
|
22
|
+
}
|
|
23
|
+
return [range.start, range.start + range.amount - 1];
|
|
24
|
+
}
|
|
25
|
+
var start = 0;
|
|
26
|
+
var end = undefined;
|
|
27
|
+
if ("start" in range) {
|
|
28
|
+
if (Array.isArray(range.start)) {
|
|
29
|
+
if (range.start[1])
|
|
30
|
+
start = range.start[0];
|
|
31
|
+
else
|
|
32
|
+
start = range.start[0] + 1;
|
|
33
|
+
}
|
|
34
|
+
else
|
|
35
|
+
start = (_a = range.start) !== null && _a !== void 0 ? _a : 0;
|
|
36
|
+
}
|
|
37
|
+
if ("end" in range) {
|
|
38
|
+
if (Array.isArray(range.end)) {
|
|
39
|
+
if (range.end[1])
|
|
40
|
+
end = range.end[0];
|
|
41
|
+
else
|
|
42
|
+
end = range.end[0] - 1;
|
|
43
|
+
}
|
|
44
|
+
else
|
|
45
|
+
end = range.end;
|
|
46
|
+
}
|
|
47
|
+
return [start, end];
|
|
79
48
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
49
|
+
IndexRange.getIndexRangeIndices = getIndexRangeIndices;
|
|
50
|
+
/**
|
|
51
|
+
* Returns, given the `range` `IndexRange`, and a target maximum `length`, the actual index range.
|
|
52
|
+
* This can be one of three options:
|
|
53
|
+
* - 'empty': there are no elements within the range
|
|
54
|
+
* - 'all': all elements are within the range
|
|
55
|
+
* - [start: number, end: number]: an inclusive range of element indices within the given range
|
|
56
|
+
* @param range - the `IndexRange` to use
|
|
57
|
+
* @param length - the target maximum length
|
|
58
|
+
*/
|
|
59
|
+
function getIndicesFor(range, length) {
|
|
60
|
+
if (length <= 0)
|
|
61
|
+
return 'empty';
|
|
62
|
+
var start = 0;
|
|
63
|
+
var end = length - 1;
|
|
64
|
+
if (undefined !== range.start) {
|
|
65
|
+
if (Array.isArray(range.start)) {
|
|
66
|
+
start = range.start[0];
|
|
67
|
+
if (!range.start[1])
|
|
68
|
+
start++;
|
|
69
|
+
}
|
|
70
|
+
else
|
|
71
|
+
start = range.start;
|
|
72
|
+
if (start >= length || -start > length)
|
|
73
|
+
return 'empty';
|
|
74
|
+
if (start < 0)
|
|
75
|
+
start = length + start;
|
|
76
|
+
}
|
|
77
|
+
if (undefined !== range.amount) {
|
|
78
|
+
if (range.amount <= 0)
|
|
79
|
+
return 'empty';
|
|
80
|
+
if (undefined === range.start) {
|
|
81
|
+
if (range.amount >= length)
|
|
82
|
+
return 'all';
|
|
83
|
+
return [0, Math.min(end, range.amount - 1)];
|
|
84
|
+
}
|
|
85
|
+
end = start + range.amount - 1;
|
|
86
|
+
}
|
|
87
|
+
else if (undefined !== range.end) {
|
|
88
|
+
if (Array.isArray(range.end)) {
|
|
89
|
+
end = range.end[0];
|
|
90
|
+
if (!range.end[1]) {
|
|
91
|
+
if (end === 0)
|
|
92
|
+
return 'empty';
|
|
93
|
+
end--;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else
|
|
97
|
+
end = range.end;
|
|
98
|
+
if (end < 0)
|
|
99
|
+
end = length + end;
|
|
96
100
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
end
|
|
101
|
+
if (end < start)
|
|
102
|
+
return 'empty';
|
|
103
|
+
end = Math.min(length - 1, end);
|
|
104
|
+
if (start === 0 && end === length - 1)
|
|
105
|
+
return 'all';
|
|
106
|
+
return [start, end];
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (start === 0 && end === length - 1)
|
|
106
|
-
return "all";
|
|
107
|
-
return [start, end];
|
|
108
|
-
}
|
|
109
|
-
IndexRange2.getIndicesFor = getIndicesFor;
|
|
110
|
-
})(IndexRange || (IndexRange = {}));
|
|
111
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
112
|
-
0 && (module.exports = {
|
|
113
|
-
IndexRange
|
|
114
|
-
});
|
|
108
|
+
IndexRange.getIndicesFor = getIndicesFor;
|
|
109
|
+
})(IndexRange || (exports.IndexRange = IndexRange = {}));
|
|
110
|
+
//# sourceMappingURL=index-range.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-range.cjs","sourceRoot":"","sources":["../../_cjs_prepare/index-range.cts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Range } from './internal.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* A flexible range specification for numeric indices.
|
|
4
|
+
* If a start or end is defined, a tuple can be used where the second item is a boolean
|
|
5
|
+
* indicating whether that end is inclusive or exclusive.<br/>
|
|
6
|
+
* An IndexRange can have one of the following forms:<br/>
|
|
7
|
+
* <br/>
|
|
8
|
+
* - { amount: number }<br/>
|
|
9
|
+
* - { start: number }<br/>
|
|
10
|
+
* - { start: number, amount: number }<br/>
|
|
11
|
+
* - { start: number, end: number }<br/>
|
|
12
|
+
* - { start: number, end: [number, boolean] }<br/>
|
|
13
|
+
* - { start: [number, boolean] }<br/>
|
|
14
|
+
* - { start: [number, boolean], amount: number }<br/>
|
|
15
|
+
* - { start: [number, boolean], end: number }<br/>
|
|
16
|
+
* - { start: [number, boolean], end: [number, boolean] }<br/>
|
|
17
|
+
* - { end: number }<br/>
|
|
18
|
+
* - { end: [number, boolean] }<br/>
|
|
19
|
+
*/
|
|
20
|
+
export type IndexRange = {
|
|
21
|
+
amount: number;
|
|
22
|
+
start?: number | [number, boolean];
|
|
23
|
+
end?: undefined;
|
|
24
|
+
} | Range<number>;
|
|
25
|
+
export declare namespace IndexRange {
|
|
26
|
+
/**
|
|
27
|
+
* Returns, given the `range` `IndexRange`, a normalized tuple containing the
|
|
28
|
+
* start index, and optionally an end index.
|
|
29
|
+
* @param range - the `IndexRange` to use
|
|
30
|
+
*/
|
|
31
|
+
function getIndexRangeIndices(range: IndexRange): [number, number | undefined];
|
|
32
|
+
/**
|
|
33
|
+
* Returns, given the `range` `IndexRange`, and a target maximum `length`, the actual index range.
|
|
34
|
+
* This can be one of three options:
|
|
35
|
+
* - 'empty': there are no elements within the range
|
|
36
|
+
* - 'all': all elements are within the range
|
|
37
|
+
* - [start: number, end: number]: an inclusive range of element indices within the given range
|
|
38
|
+
* @param range - the `IndexRange` to use
|
|
39
|
+
* @param length - the target maximum length
|
|
40
|
+
*/
|
|
41
|
+
function getIndicesFor(range: IndexRange, length: number): [number, number] | 'empty' | 'all';
|
|
42
|
+
}
|