@rimbu/common 1.1.0 → 2.0.1

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.
Files changed (82) hide show
  1. package/dist/bun/async-optlazy.mts +18 -5
  2. package/dist/bun/internal.mts +0 -2
  3. package/dist/bun/optlazy.mts +12 -3
  4. package/dist/cjs/async-optlazy.cjs +60 -42
  5. package/dist/cjs/async-optlazy.cjs.map +1 -0
  6. package/dist/cjs/async-optlazy.d.cts +46 -0
  7. package/dist/cjs/collect.cjs +9 -31
  8. package/dist/cjs/collect.cjs.map +1 -0
  9. package/dist/cjs/collect.d.cts +29 -0
  10. package/dist/cjs/comp.cjs +519 -1598
  11. package/dist/cjs/comp.cjs.map +1 -0
  12. package/dist/cjs/comp.d.cts +239 -0
  13. package/dist/cjs/eq.cjs +375 -203
  14. package/dist/cjs/eq.cjs.map +1 -0
  15. package/dist/cjs/err.cjs +57 -50
  16. package/dist/cjs/err.cjs.map +1 -0
  17. package/dist/cjs/index-range.cjs +105 -109
  18. package/dist/cjs/index-range.cjs.map +1 -0
  19. package/dist/cjs/index-range.d.cts +42 -0
  20. package/dist/cjs/index.cjs +9 -1684
  21. package/dist/cjs/index.cjs.map +1 -0
  22. package/dist/cjs/index.d.cts +6 -0
  23. package/dist/cjs/internal.cjs +14 -1684
  24. package/dist/cjs/internal.cjs.map +1 -0
  25. package/dist/cjs/internal.d.cts +11 -0
  26. package/dist/cjs/optlazy.cjs +43 -36
  27. package/dist/cjs/optlazy.cjs.map +1 -0
  28. package/dist/cjs/optlazy.d.cts +42 -0
  29. package/dist/cjs/range.cjs +35 -49
  30. package/dist/cjs/range.cjs.map +1 -0
  31. package/dist/cjs/traverse-state.cjs +30 -46
  32. package/dist/cjs/traverse-state.cjs.map +1 -0
  33. package/dist/cjs/types.cjs +2 -17
  34. package/dist/cjs/types.cjs.map +1 -0
  35. package/dist/cjs/update.cjs +21 -32
  36. package/dist/cjs/update.cjs.map +1 -0
  37. package/dist/{types → esm}/async-optlazy.d.mts +10 -3
  38. package/dist/esm/async-optlazy.mjs +10 -4
  39. package/dist/esm/async-optlazy.mjs.map +1 -1
  40. package/dist/esm/comp.mjs.map +1 -1
  41. package/dist/esm/eq.d.mts +196 -0
  42. package/dist/esm/eq.mjs.map +1 -1
  43. package/dist/esm/err.d.mts +33 -0
  44. package/dist/esm/index-range.mjs.map +1 -1
  45. package/dist/{types → esm}/internal.d.mts +0 -2
  46. package/dist/esm/internal.mjs +0 -2
  47. package/dist/esm/internal.mjs.map +1 -1
  48. package/dist/{types → esm}/optlazy.d.mts +8 -2
  49. package/dist/esm/optlazy.mjs +7 -2
  50. package/dist/esm/optlazy.mjs.map +1 -1
  51. package/dist/esm/range.d.mts +35 -0
  52. package/dist/esm/range.mjs.map +1 -1
  53. package/dist/esm/traverse-state.d.mts +33 -0
  54. package/dist/esm/types.d.mts +31 -0
  55. package/dist/esm/update.d.mts +18 -0
  56. package/dist/esm/update.mjs.map +1 -1
  57. package/package.json +21 -14
  58. package/src/async-optlazy.mts +18 -5
  59. package/src/internal.mts +0 -2
  60. package/src/optlazy.mts +12 -3
  61. package/dist/bun/async-reducer.mts +0 -1157
  62. package/dist/bun/reducer.mts +0 -1025
  63. package/dist/cjs/async-reducer.cjs +0 -1621
  64. package/dist/cjs/reducer.cjs +0 -1621
  65. package/dist/esm/async-reducer.mjs +0 -638
  66. package/dist/esm/async-reducer.mjs.map +0 -1
  67. package/dist/esm/reducer.mjs +0 -669
  68. package/dist/esm/reducer.mjs.map +0 -1
  69. package/dist/types/async-reducer.d.mts +0 -542
  70. package/dist/types/reducer.d.mts +0 -542
  71. package/src/async-reducer.mts +0 -1157
  72. package/src/reducer.mts +0 -1025
  73. /package/dist/{types/eq.d.mts → cjs/eq.d.cts} +0 -0
  74. /package/dist/{types/err.d.mts → cjs/err.d.cts} +0 -0
  75. /package/dist/{types/range.d.mts → cjs/range.d.cts} +0 -0
  76. /package/dist/{types/traverse-state.d.mts → cjs/traverse-state.d.cts} +0 -0
  77. /package/dist/{types/types.d.mts → cjs/types.d.cts} +0 -0
  78. /package/dist/{types/update.d.mts → cjs/update.d.cts} +0 -0
  79. /package/dist/{types → esm}/collect.d.mts +0 -0
  80. /package/dist/{types → esm}/comp.d.mts +0 -0
  81. /package/dist/{types → esm}/index-range.d.mts +0 -0
  82. /package/dist/{types → esm}/index.d.mts +0 -0
package/dist/cjs/err.cjs CHANGED
@@ -1,55 +1,62 @@
1
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 __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/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 = exports.Err = void 0;
4
+ var tslib_1 = require("tslib");
5
+ /**
6
+ * Throws an `Err.ForcedError` error when called.
7
+ * @example
8
+ * ```ts
9
+ * const emptyMap = HashMap.empty<number, string>()
10
+ * emptyMap.get(5, Err);
11
+ * // throws: Err.CustomError(message: 'Err: forced to throw error')
12
+ * ```
13
+ */
27
14
  function Err() {
28
- return ErrBase.msg("Err: Forced to throw error")();
15
+ return ErrBase.msg('Err: Forced to throw error')();
29
16
  }
17
+ exports.Err = Err;
30
18
  var ErrBase;
31
- ((ErrBase2) => {
32
- class CustomError {
33
- constructor(message) {
34
- this.message = message;
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
- get name() {
37
- return this.constructor.name;
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":";;;;AAAA;;;;;;;;GAQG;AACH,SAAgB,GAAG;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;AACrD,CAAC;AAFD,kBAEC;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"}
@@ -1,114 +1,110 @@
1
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 __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
- ((IndexRange2) => {
28
- function getIndexRangeIndices(range) {
29
- if (void 0 !== range.amount) {
30
- if (void 0 === range.start)
31
- return [0, range.amount - 1];
32
- if (Array.isArray(range.start)) {
33
- const [start2, includeStart] = range.start;
34
- if (includeStart)
35
- return [start2, start2 + range.amount - 1];
36
- return [start2 + 1, start2 + 1 + range.amount - 1];
37
- }
38
- return [range.start, range.start + range.amount - 1];
39
- }
40
- let start = 0;
41
- let end = void 0;
42
- if (`start` in range) {
43
- if (Array.isArray(range.start)) {
44
- if (range.start[1])
45
- start = range.start[0];
46
- else
47
- start = range.start[0] + 1;
48
- } else
49
- start = range.start ?? 0;
50
- }
51
- if (`end` in range) {
52
- if (Array.isArray(range.end)) {
53
- if (range.end[1])
54
- end = range.end[0];
55
- else
56
- end = range.end[0] - 1;
57
- } else
58
- end = range.end;
59
- }
60
- return [start, end];
61
- }
62
- IndexRange2.getIndexRangeIndices = getIndexRangeIndices;
63
- function getIndicesFor(range, length) {
64
- if (length <= 0)
65
- return "empty";
66
- let start = 0;
67
- let end = length - 1;
68
- if (void 0 !== range.start) {
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
- if (void 0 !== range.amount) {
81
- if (range.amount <= 0)
82
- return "empty";
83
- if (void 0 === range.start) {
84
- if (range.amount >= length)
85
- return "all";
86
- return [0, Math.min(end, range.amount - 1)];
87
- }
88
- end = start + range.amount - 1;
89
- } else if (void 0 !== range.end) {
90
- if (Array.isArray(range.end)) {
91
- end = range.end[0];
92
- if (!range.end[1]) {
93
- if (end === 0)
94
- return "empty";
95
- end--;
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
- } else
98
- end = range.end;
99
- if (end < 0)
100
- end = length + 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
- if (end < start)
103
- return "empty";
104
- end = Math.min(length - 1, end);
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
+ }