@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.
- package/README.md +21 -4
- package/{src/async-optlazy.ts → dist/bun/async-optlazy.mts} +1 -1
- package/{src/async-reducer.ts → dist/bun/async-reducer.mts} +17 -8
- package/{src/collect.ts → dist/bun/collect.mts} +1 -1
- package/{src/comp.ts → dist/bun/comp.mts} +1 -1
- package/{src/index-range.ts → dist/bun/index-range.mts} +1 -1
- package/{src/index.ts → dist/bun/index.mts} +1 -1
- package/dist/bun/internal.mts +13 -0
- package/{src/reducer.ts → dist/bun/reducer.mts} +5 -3
- package/dist/cjs/async-optlazy.js +44 -0
- package/dist/cjs/async-reducer.js +1621 -0
- package/dist/cjs/collect.js +33 -0
- package/dist/cjs/comp.js +1621 -0
- package/dist/cjs/eq.js +210 -0
- package/dist/cjs/err.js +55 -0
- package/dist/cjs/index-range.js +114 -0
- package/dist/cjs/index.js +1685 -0
- package/dist/cjs/internal.js +1685 -0
- package/dist/cjs/optlazy.js +41 -0
- package/dist/cjs/range.js +52 -0
- package/dist/cjs/reducer.js +1621 -0
- package/dist/cjs/traverse-state.js +49 -0
- package/dist/cjs/types.js +18 -0
- package/dist/cjs/update.js +35 -0
- package/dist/{module/async-optlazy.js → esm/async-optlazy.mjs} +5 -8
- package/dist/esm/async-optlazy.mjs.map +1 -0
- package/dist/{module/async-reducer.js → esm/async-reducer.mjs} +67 -69
- package/dist/esm/async-reducer.mjs.map +1 -0
- package/dist/{module/collect.js → esm/collect.mjs} +1 -1
- package/dist/esm/collect.mjs.map +1 -0
- package/dist/{module/comp.js → esm/comp.mjs} +2 -2
- package/dist/esm/comp.mjs.map +1 -0
- package/dist/{module/eq.js → esm/eq.mjs} +1 -1
- package/dist/esm/eq.mjs.map +1 -0
- package/dist/{module/err.js → esm/err.mjs} +1 -1
- package/dist/esm/err.mjs.map +1 -0
- package/dist/{module/index-range.js → esm/index-range.mjs} +2 -3
- package/dist/esm/index-range.mjs.map +1 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/internal.mjs +14 -0
- package/dist/esm/internal.mjs.map +1 -0
- package/dist/{module/optlazy.js → esm/optlazy.mjs} +1 -1
- package/dist/esm/optlazy.mjs.map +1 -0
- package/dist/{module/range.js → esm/range.mjs} +1 -1
- package/dist/esm/range.mjs.map +1 -0
- package/dist/{module/reducer.js → esm/reducer.mjs} +10 -8
- package/dist/esm/reducer.mjs.map +1 -0
- package/dist/{module/traverse-state.js → esm/traverse-state.mjs} +1 -1
- package/dist/esm/traverse-state.mjs.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/{module/update.js → esm/update.mjs} +1 -1
- package/dist/esm/update.mjs.map +1 -0
- package/dist/types/{async-optlazy.d.ts → async-optlazy.d.mts} +1 -1
- package/dist/types/{async-reducer.d.ts → async-reducer.d.mts} +2 -2
- package/dist/types/{collect.d.ts → collect.d.mts} +1 -1
- package/dist/types/{comp.d.ts → comp.d.mts} +1 -1
- package/dist/types/{index-range.d.ts → index-range.d.mts} +1 -1
- package/dist/types/{index.d.ts → index.d.mts} +1 -1
- package/dist/types/internal.d.mts +13 -0
- package/dist/types/{reducer.d.ts → reducer.d.mts} +1 -1
- package/package.json +27 -21
- package/src/async-optlazy.mts +49 -0
- package/src/async-reducer.mts +1157 -0
- package/src/collect.mts +43 -0
- package/src/comp.mts +625 -0
- package/src/eq.mts +406 -0
- package/src/err.mts +43 -0
- package/src/index-range.mts +120 -0
- package/{dist/module/index.js → src/index.mts} +2 -2
- package/src/internal.mts +13 -0
- package/{dist/main/optlazy.js → src/optlazy.mts} +24 -14
- package/src/range.mts +58 -0
- package/src/reducer.mts +1025 -0
- package/src/traverse-state.mts +59 -0
- package/src/types.mts +40 -0
- package/{dist/main/update.js → src/update.mts} +10 -10
- package/dist/main/async-optlazy.js +0 -48
- package/dist/main/async-optlazy.js.map +0 -1
- package/dist/main/async-reducer.js +0 -872
- package/dist/main/async-reducer.js.map +0 -1
- package/dist/main/collect.js +0 -11
- package/dist/main/collect.js.map +0 -1
- package/dist/main/comp.js +0 -542
- package/dist/main/comp.js.map +0 -1
- package/dist/main/eq.js +0 -382
- package/dist/main/eq.js.map +0 -1
- package/dist/main/err.js +0 -62
- package/dist/main/err.js.map +0 -1
- package/dist/main/index-range.js +0 -110
- package/dist/main/index-range.js.map +0 -1
- package/dist/main/index.js +0 -10
- package/dist/main/index.js.map +0 -1
- package/dist/main/internal.js +0 -17
- package/dist/main/internal.js.map +0 -1
- package/dist/main/optlazy.js.map +0 -1
- package/dist/main/range.js +0 -38
- package/dist/main/range.js.map +0 -1
- package/dist/main/reducer.js +0 -694
- package/dist/main/reducer.js.map +0 -1
- package/dist/main/traverse-state.js +0 -33
- package/dist/main/traverse-state.js.map +0 -1
- package/dist/main/types.js +0 -3
- package/dist/main/types.js.map +0 -1
- package/dist/main/update.js.map +0 -1
- package/dist/module/async-optlazy.js.map +0 -1
- package/dist/module/async-reducer.js.map +0 -1
- package/dist/module/collect.js.map +0 -1
- package/dist/module/comp.js.map +0 -1
- package/dist/module/eq.js.map +0 -1
- package/dist/module/err.js.map +0 -1
- package/dist/module/index-range.js.map +0 -1
- package/dist/module/index.js.map +0 -1
- package/dist/module/internal.js +0 -14
- package/dist/module/internal.js.map +0 -1
- package/dist/module/optlazy.js.map +0 -1
- package/dist/module/range.js.map +0 -1
- package/dist/module/reducer.js.map +0 -1
- package/dist/module/traverse-state.js.map +0 -1
- package/dist/module/types.js +0 -2
- package/dist/module/types.js.map +0 -1
- package/dist/module/update.js.map +0 -1
- package/dist/types/internal.d.ts +0 -13
- package/src/internal.ts +0 -13
- /package/{src/eq.ts → dist/bun/eq.mts} +0 -0
- /package/{src/err.ts → dist/bun/err.mts} +0 -0
- /package/{src/optlazy.ts → dist/bun/optlazy.mts} +0 -0
- /package/{src/range.ts → dist/bun/range.mts} +0 -0
- /package/{src/traverse-state.ts → dist/bun/traverse-state.mts} +0 -0
- /package/{src/types.ts → dist/bun/types.mts} +0 -0
- /package/{src/update.ts → dist/bun/update.mts} +0 -0
- /package/dist/types/{eq.d.ts → eq.d.mts} +0 -0
- /package/dist/types/{err.d.ts → err.d.mts} +0 -0
- /package/dist/types/{optlazy.d.ts → optlazy.d.mts} +0 -0
- /package/dist/types/{range.d.ts → range.d.mts} +0 -0
- /package/dist/types/{traverse-state.d.ts → traverse-state.d.mts} +0 -0
- /package/dist/types/{types.d.ts → types.d.mts} +0 -0
- /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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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"}
|