@rimbu/common 0.12.3 → 1.0.0-alpha.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 (139) hide show
  1. package/README.md +21 -4
  2. package/{src/async-optlazy.ts → dist/bun/async-optlazy.mts} +1 -1
  3. package/{src/async-reducer.ts → dist/bun/async-reducer.mts} +17 -8
  4. package/{src/collect.ts → dist/bun/collect.mts} +1 -1
  5. package/{src/comp.ts → dist/bun/comp.mts} +1 -1
  6. package/{src/index-range.ts → dist/bun/index-range.mts} +1 -1
  7. package/{src/index.ts → dist/bun/index.mts} +1 -1
  8. package/dist/bun/internal.mts +13 -0
  9. package/{src/reducer.ts → dist/bun/reducer.mts} +5 -3
  10. package/dist/cjs/async-optlazy.js +44 -0
  11. package/dist/cjs/async-reducer.js +1621 -0
  12. package/dist/cjs/collect.js +33 -0
  13. package/dist/cjs/comp.js +1621 -0
  14. package/dist/cjs/eq.js +210 -0
  15. package/dist/cjs/err.js +55 -0
  16. package/dist/cjs/index-range.js +114 -0
  17. package/dist/cjs/index.js +1685 -0
  18. package/dist/cjs/internal.js +1685 -0
  19. package/dist/cjs/optlazy.js +41 -0
  20. package/dist/cjs/range.js +52 -0
  21. package/dist/cjs/reducer.js +1621 -0
  22. package/dist/cjs/traverse-state.js +49 -0
  23. package/dist/cjs/types.js +18 -0
  24. package/dist/cjs/update.js +35 -0
  25. package/dist/{module/async-optlazy.js → esm/async-optlazy.mjs} +5 -8
  26. package/dist/esm/async-optlazy.mjs.map +1 -0
  27. package/dist/{module/async-reducer.js → esm/async-reducer.mjs} +67 -69
  28. package/dist/esm/async-reducer.mjs.map +1 -0
  29. package/dist/{module/collect.js → esm/collect.mjs} +1 -1
  30. package/dist/esm/collect.mjs.map +1 -0
  31. package/dist/{module/comp.js → esm/comp.mjs} +2 -2
  32. package/dist/esm/comp.mjs.map +1 -0
  33. package/dist/{module/eq.js → esm/eq.mjs} +1 -1
  34. package/dist/esm/eq.mjs.map +1 -0
  35. package/dist/{module/err.js → esm/err.mjs} +1 -1
  36. package/dist/esm/err.mjs.map +1 -0
  37. package/dist/{module/index-range.js → esm/index-range.mjs} +2 -3
  38. package/dist/esm/index-range.mjs.map +1 -0
  39. package/dist/esm/index.mjs +7 -0
  40. package/dist/esm/index.mjs.map +1 -0
  41. package/dist/esm/internal.mjs +14 -0
  42. package/dist/esm/internal.mjs.map +1 -0
  43. package/dist/{module/optlazy.js → esm/optlazy.mjs} +1 -1
  44. package/dist/esm/optlazy.mjs.map +1 -0
  45. package/dist/{module/range.js → esm/range.mjs} +1 -1
  46. package/dist/esm/range.mjs.map +1 -0
  47. package/dist/{module/reducer.js → esm/reducer.mjs} +10 -8
  48. package/dist/esm/reducer.mjs.map +1 -0
  49. package/dist/{module/traverse-state.js → esm/traverse-state.mjs} +1 -1
  50. package/dist/esm/traverse-state.mjs.map +1 -0
  51. package/dist/esm/types.mjs +2 -0
  52. package/dist/esm/types.mjs.map +1 -0
  53. package/dist/{module/update.js → esm/update.mjs} +1 -1
  54. package/dist/esm/update.mjs.map +1 -0
  55. package/dist/types/{async-optlazy.d.ts → async-optlazy.d.mts} +1 -1
  56. package/dist/types/{async-reducer.d.ts → async-reducer.d.mts} +2 -2
  57. package/dist/types/{collect.d.ts → collect.d.mts} +1 -1
  58. package/dist/types/{comp.d.ts → comp.d.mts} +1 -1
  59. package/dist/types/{index-range.d.ts → index-range.d.mts} +1 -1
  60. package/dist/types/{index.d.ts → index.d.mts} +1 -1
  61. package/dist/types/internal.d.mts +13 -0
  62. package/dist/types/{reducer.d.ts → reducer.d.mts} +1 -1
  63. package/package.json +27 -21
  64. package/src/async-optlazy.mts +49 -0
  65. package/src/async-reducer.mts +1157 -0
  66. package/src/collect.mts +43 -0
  67. package/src/comp.mts +625 -0
  68. package/src/eq.mts +406 -0
  69. package/src/err.mts +43 -0
  70. package/src/index-range.mts +120 -0
  71. package/{dist/module/index.js → src/index.mts} +2 -2
  72. package/src/internal.mts +13 -0
  73. package/{dist/main/optlazy.js → src/optlazy.mts} +24 -14
  74. package/src/range.mts +58 -0
  75. package/src/reducer.mts +1025 -0
  76. package/src/traverse-state.mts +59 -0
  77. package/src/types.mts +40 -0
  78. package/{dist/main/update.js → src/update.mts} +10 -10
  79. package/dist/main/async-optlazy.js +0 -48
  80. package/dist/main/async-optlazy.js.map +0 -1
  81. package/dist/main/async-reducer.js +0 -872
  82. package/dist/main/async-reducer.js.map +0 -1
  83. package/dist/main/collect.js +0 -11
  84. package/dist/main/collect.js.map +0 -1
  85. package/dist/main/comp.js +0 -542
  86. package/dist/main/comp.js.map +0 -1
  87. package/dist/main/eq.js +0 -382
  88. package/dist/main/eq.js.map +0 -1
  89. package/dist/main/err.js +0 -62
  90. package/dist/main/err.js.map +0 -1
  91. package/dist/main/index-range.js +0 -110
  92. package/dist/main/index-range.js.map +0 -1
  93. package/dist/main/index.js +0 -10
  94. package/dist/main/index.js.map +0 -1
  95. package/dist/main/internal.js +0 -17
  96. package/dist/main/internal.js.map +0 -1
  97. package/dist/main/optlazy.js.map +0 -1
  98. package/dist/main/range.js +0 -38
  99. package/dist/main/range.js.map +0 -1
  100. package/dist/main/reducer.js +0 -694
  101. package/dist/main/reducer.js.map +0 -1
  102. package/dist/main/traverse-state.js +0 -33
  103. package/dist/main/traverse-state.js.map +0 -1
  104. package/dist/main/types.js +0 -3
  105. package/dist/main/types.js.map +0 -1
  106. package/dist/main/update.js.map +0 -1
  107. package/dist/module/async-optlazy.js.map +0 -1
  108. package/dist/module/async-reducer.js.map +0 -1
  109. package/dist/module/collect.js.map +0 -1
  110. package/dist/module/comp.js.map +0 -1
  111. package/dist/module/eq.js.map +0 -1
  112. package/dist/module/err.js.map +0 -1
  113. package/dist/module/index-range.js.map +0 -1
  114. package/dist/module/index.js.map +0 -1
  115. package/dist/module/internal.js +0 -14
  116. package/dist/module/internal.js.map +0 -1
  117. package/dist/module/optlazy.js.map +0 -1
  118. package/dist/module/range.js.map +0 -1
  119. package/dist/module/reducer.js.map +0 -1
  120. package/dist/module/traverse-state.js.map +0 -1
  121. package/dist/module/types.js +0 -2
  122. package/dist/module/types.js.map +0 -1
  123. package/dist/module/update.js.map +0 -1
  124. package/dist/types/internal.d.ts +0 -13
  125. package/src/internal.ts +0 -13
  126. /package/{src/eq.ts → dist/bun/eq.mts} +0 -0
  127. /package/{src/err.ts → dist/bun/err.mts} +0 -0
  128. /package/{src/optlazy.ts → dist/bun/optlazy.mts} +0 -0
  129. /package/{src/range.ts → dist/bun/range.mts} +0 -0
  130. /package/{src/traverse-state.ts → dist/bun/traverse-state.mts} +0 -0
  131. /package/{src/types.ts → dist/bun/types.mts} +0 -0
  132. /package/{src/update.ts → dist/bun/update.mts} +0 -0
  133. /package/dist/types/{eq.d.ts → eq.d.mts} +0 -0
  134. /package/dist/types/{err.d.ts → err.d.mts} +0 -0
  135. /package/dist/types/{optlazy.d.ts → optlazy.d.mts} +0 -0
  136. /package/dist/types/{range.d.ts → range.d.mts} +0 -0
  137. /package/dist/types/{traverse-state.d.ts → traverse-state.d.mts} +0 -0
  138. /package/dist/types/{types.d.ts → types.d.mts} +0 -0
  139. /package/dist/types/{update.d.ts → update.d.mts} +0 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * An object used to track the state of a traversal, e.g. a `forEach`.
3
+ */
4
+ export interface TraverseState {
5
+ /**
6
+ * Returns true if the traversal has been halted by the user.
7
+ */
8
+ readonly halted: boolean;
9
+ /**
10
+ * Returns the current index of the traversal.
11
+ */
12
+ readonly currentIndex: number;
13
+
14
+ /**
15
+ * Increases the `currentIndex` of this traversal
16
+ * @returns the next index that the traversal should use
17
+ */
18
+ nextIndex(): number;
19
+ /**
20
+ * Sets the `halted` value to true.
21
+ */
22
+ halt(): void;
23
+ /**
24
+ * Sets the `halted` value to false, and resets the `currentIndex`
25
+ * value to its start value.
26
+ */
27
+ reset(): void;
28
+ }
29
+
30
+ class TraverseStateImpl implements TraverseState {
31
+ currentIndex: number;
32
+ halted = false;
33
+
34
+ constructor(readonly startIndex: number) {
35
+ this.currentIndex = startIndex;
36
+ }
37
+
38
+ nextIndex(): number {
39
+ return this.currentIndex++;
40
+ }
41
+
42
+ readonly halt = (): void => {
43
+ this.halted = true;
44
+ };
45
+
46
+ reset(): void {
47
+ this.currentIndex = this.startIndex;
48
+ this.halted = false;
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Returns a new `TraverseState` instance, using optionally given `startIndex` as a start
54
+ * index value.
55
+ * @param startIndex - (default: 0) the start index to use
56
+ */
57
+ export function TraverseState(startIndex = 0): TraverseState {
58
+ return new TraverseStateImpl(startIndex);
59
+ }
package/src/types.mts ADDED
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Accepts all types of T and U where T extends U,
3
+ * and result in the upper bound U.
4
+ */
5
+ export type SuperOf<U, T> = T extends U ? U : never;
6
+
7
+ /**
8
+ * Accepts all types of T and S where S extends T,
9
+ * and results in the lower bound S.
10
+ */
11
+ export type SubOf<S, T> = S extends T ? S : never;
12
+
13
+ /**
14
+ * Accepts all types of T and U where T extends U or U extends T.
15
+ */
16
+ export type RelatedTo<T, U> = T | SuperOf<U, T>;
17
+
18
+ /**
19
+ * Accepts all arrays with at least one element.
20
+ */
21
+ export type ArrayNonEmpty<T> = [T, ...T[]];
22
+
23
+ /**
24
+ * Accepts all strings with at least one character.
25
+ */
26
+ export type StringNonEmpty<T> = T extends string
27
+ ? '' extends T
28
+ ? never
29
+ : T
30
+ : never;
31
+
32
+ /**
33
+ * Utility type to convert some object to a JSON serializable format.
34
+ * @typeparam V - the `value` type
35
+ * @typeparam D - the `dataType` tag string type
36
+ */
37
+ export interface ToJSON<V, D extends string = string> {
38
+ readonly dataType: D;
39
+ readonly value: V;
40
+ }
@@ -1,6 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Update = void 0;
1
+ /**
2
+ * A value of type T, or a function taking a value of type T and returning a new value of type T.
3
+ */
4
+ export type Update<T> = T | ((value: T) => T);
5
+
4
6
  /**
5
7
  * Returns the result of given `update` parameter, where it can either directly give a new value,
6
8
  * or it is a function receiving the given `value`, and returns a new value.
@@ -14,11 +16,9 @@ exports.Update = void 0;
14
16
  * Update(1, v => v + 1) // => 2
15
17
  * ```
16
18
  */
17
- function Update(value, update) {
18
- if (typeof update === 'function') {
19
- return update(value);
20
- }
21
- return update;
19
+ export function Update<T>(value: T, update: Update<T>): T {
20
+ if (typeof update === 'function') {
21
+ return (update as (value: T) => T)(value);
22
+ }
23
+ return update;
22
24
  }
23
- exports.Update = Update;
24
- //# sourceMappingURL=update.js.map
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AsyncOptLazy = void 0;
4
- var tslib_1 = require("tslib");
5
- var AsyncOptLazy;
6
- (function (AsyncOptLazy) {
7
- /**
8
- * Returns the value or promised value contained in an `AsyncOptLazy` instance of type T.
9
- * @param optLazy - the `AsyncOptLazy` value of type T
10
- * @example
11
- * ```ts
12
- * AsyncOptLazy.toMaybePromise(1) // => 1
13
- * AsyncOptLazy.toMaybePromise(() => 1) // => 1
14
- * AsyncOptLazy.toMaybePromise(() => () => 1) // => () => 1
15
- * AsyncOptLazy.toMaybePromise(async () => 1) // => Promise(1)
16
- * AsyncOptLazy.toMaybePromise(Promise.resolve(1)) // => Promise(1)
17
- * ```
18
- */
19
- function toMaybePromise(optLazy) {
20
- if (optLazy instanceof Function)
21
- return optLazy();
22
- return optLazy;
23
- }
24
- AsyncOptLazy.toMaybePromise = toMaybePromise;
25
- /**
26
- * Returns the value contained in an `AsyncOptLazy` instance of type T as a promise.
27
- * @param optLazy - the `AsyncOptLazy` value of type T
28
- * @example
29
- * ```ts
30
- * AsyncOptLazy.toPromise(1) // => Promise(1)
31
- * AsyncOptLazy.toPromise(() => 1) // => Promise(1)
32
- * AsyncOptLazy.toPromise(() => () => 1) // => Promise(() => 1)
33
- * AsyncOptLazy.toPromise(async () => 1) // => Promise(1)
34
- * AsyncOptLazy.toPromise(Promise.resolve(1)) // => Promise(1)
35
- * ```
36
- */
37
- function toPromise(optLazy) {
38
- return tslib_1.__awaiter(this, void 0, void 0, function () {
39
- return tslib_1.__generator(this, function (_a) {
40
- if (optLazy instanceof Function)
41
- return [2 /*return*/, optLazy()];
42
- return [2 /*return*/, optLazy];
43
- });
44
- });
45
- }
46
- AsyncOptLazy.toPromise = toPromise;
47
- })(AsyncOptLazy = exports.AsyncOptLazy || (exports.AsyncOptLazy = {}));
48
- //# sourceMappingURL=async-optlazy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-optlazy.js","sourceRoot":"","sources":["../../src/async-optlazy.ts"],"names":[],"mappings":";;;;AAcA,IAAiB,YAAY,CAkC5B;AAlCD,WAAiB,YAAY;IAC3B;;;;;;;;;;;OAWG;IACH,SAAgB,cAAc,CAAI,OAAwB;QACxD,IAAI,OAAO,YAAY,QAAQ;YAAE,OAAO,OAAO,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAHe,2BAAc,iBAG7B,CAAA;IAED;;;;;;;;;;;OAWG;IACH,SAAsB,SAAS,CAAI,OAAwB;;;gBACzD,IAAI,OAAO,YAAY,QAAQ;oBAAE,sBAAO,OAAO,EAAE,EAAC;gBAClD,sBAAO,OAAO,EAAC;;;KAChB;IAHqB,sBAAS,YAG9B,CAAA;AACH,CAAC,EAlCgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAkC5B"}