@dereekb/util 0.0.1 → 1.2.0
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/CHANGELOG.md +32 -0
- package/README.md +4 -5
- package/package.json +2 -1
- package/src/lib/array/array.d.ts +21 -1
- package/src/lib/array/array.filter.d.ts +20 -0
- package/src/lib/array/array.filter.js +39 -1
- package/src/lib/array/array.filter.js.map +1 -1
- package/src/lib/array/array.index.d.ts +36 -0
- package/src/lib/array/array.index.js +65 -0
- package/src/lib/array/array.index.js.map +1 -0
- package/src/lib/array/array.js +32 -2
- package/src/lib/array/array.js.map +1 -1
- package/src/lib/array/array.make.d.ts +22 -0
- package/src/lib/array/array.make.js +30 -0
- package/src/lib/array/array.make.js.map +1 -0
- package/src/lib/array/array.number.d.ts +1 -1
- package/src/lib/array/array.number.js +12 -1
- package/src/lib/array/array.number.js.map +1 -1
- package/src/lib/array/array.set.d.ts +3 -2
- package/src/lib/array/array.set.js +8 -4
- package/src/lib/array/array.set.js.map +1 -1
- package/src/lib/array/index.d.ts +2 -0
- package/src/lib/array/index.js +2 -0
- package/src/lib/array/index.js.map +1 -1
- package/src/lib/assertion/assertion.js +1 -1
- package/src/lib/assertion/assertion.js.map +1 -1
- package/src/lib/date/date.d.ts +1 -0
- package/src/lib/date/date.js.map +1 -1
- package/src/lib/filter/filter.d.ts +8 -0
- package/src/lib/filter/filter.js +20 -0
- package/src/lib/filter/filter.js.map +1 -1
- package/src/lib/getter.d.ts +10 -0
- package/src/lib/getter.js +2 -8
- package/src/lib/getter.js.map +1 -1
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.js +1 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/number.d.ts +13 -0
- package/src/lib/number.js +19 -1
- package/src/lib/number.js.map +1 -1
- package/src/lib/object/object.d.ts +53 -3
- package/src/lib/object/object.js +119 -7
- package/src/lib/object/object.js.map +1 -1
- package/src/lib/page/page.filter.d.ts +1 -1
- package/src/lib/promise/index.d.ts +2 -0
- package/src/lib/promise/index.js +2 -0
- package/src/lib/promise/index.js.map +1 -1
- package/src/lib/promise/poll.d.ts +18 -0
- package/src/lib/promise/poll.js +16 -0
- package/src/lib/promise/poll.js.map +1 -0
- package/src/lib/promise/promise.d.ts +0 -1
- package/src/lib/promise/promise.js +2 -6
- package/src/lib/promise/promise.js.map +1 -1
- package/src/lib/promise/promise.loop.d.ts +1 -0
- package/src/lib/promise/promise.loop.js.map +1 -1
- package/src/lib/promise/wait.d.ts +6 -0
- package/src/lib/promise/wait.js +11 -0
- package/src/lib/promise/wait.js.map +1 -0
- package/src/lib/string.d.ts +1 -0
- package/src/lib/string.js +5 -1
- package/src/lib/string.js.map +1 -1
- package/src/lib/tree/index.d.ts +4 -0
- package/src/lib/tree/index.js +8 -0
- package/src/lib/tree/index.js.map +1 -0
- package/src/lib/tree/tree.array.d.ts +15 -0
- package/src/lib/tree/tree.array.js +19 -0
- package/src/lib/tree/tree.array.js.map +1 -0
- package/src/lib/tree/tree.d.ts +13 -0
- package/src/lib/tree/tree.expand.d.ts +40 -0
- package/src/lib/tree/tree.expand.js +34 -0
- package/src/lib/tree/tree.expand.js.map +1 -0
- package/src/lib/tree/tree.flatten.d.ts +27 -0
- package/src/lib/tree/tree.flatten.js +47 -0
- package/src/lib/tree/tree.flatten.js.map +1 -0
- package/src/lib/tree/tree.js +3 -0
- package/src/lib/tree/tree.js.map +1 -0
- package/src/lib/type.d.ts +1 -0
- package/src/lib/value.js.map +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represends a traversable tree with values of type T.
|
|
3
|
+
*/
|
|
4
|
+
export interface TreeNode<T, N extends TreeNode<T, N> = TreeNode<T, any>> {
|
|
5
|
+
depth: number;
|
|
6
|
+
value: T;
|
|
7
|
+
parent?: N;
|
|
8
|
+
children?: N[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A TreeNode with no children values available. Used when building a tree.
|
|
12
|
+
*/
|
|
13
|
+
export declare type TreeNodeWithoutChildren<T, N extends TreeNode<T, N> = TreeNode<T, any>> = Omit<TreeNode<T, N>, 'children'>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TreeNode, TreeNodeWithoutChildren } from "./tree";
|
|
2
|
+
import { Maybe } from "../value";
|
|
3
|
+
/**
|
|
4
|
+
* ExpandTreeFunction configuration.
|
|
5
|
+
*/
|
|
6
|
+
export interface ExpandTree<T> {
|
|
7
|
+
/**
|
|
8
|
+
* Returns child values from the value, if they exist.
|
|
9
|
+
* @param value
|
|
10
|
+
*/
|
|
11
|
+
getChildren(value: T): Maybe<T[]>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extended ExpandTree configuration with custom node building.
|
|
15
|
+
*/
|
|
16
|
+
export interface ExpandTreeWithNodeBuilder<T, N extends TreeNode<T, N>> extends ExpandTree<T> {
|
|
17
|
+
/**
|
|
18
|
+
* Creates a TreeNode of type N, minus the children values that are attached afterwards.
|
|
19
|
+
*/
|
|
20
|
+
makeNode: (node: TreeNodeWithoutChildren<T, N>) => Omit<N, 'children'>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Expands the input value into a TreeNode.
|
|
24
|
+
*/
|
|
25
|
+
export declare type ExpandTreeFunction<T, N extends TreeNode<T, N> = TreeNode<T, any>> = (value: T) => N;
|
|
26
|
+
/**
|
|
27
|
+
* Creates an ExpandTreeFunction from the input configuration.
|
|
28
|
+
*
|
|
29
|
+
* @param config
|
|
30
|
+
*/
|
|
31
|
+
export declare function expandTreeFunction<T>(config: ExpandTree<T>): ExpandTreeFunction<T, TreeNode<T>>;
|
|
32
|
+
export declare function expandTreeFunction<T, N extends TreeNode<T, N>>(config: ExpandTreeWithNodeBuilder<T, N>): ExpandTreeFunction<T, N>;
|
|
33
|
+
/**
|
|
34
|
+
* Convenience function for expanding multiple values into trees then merging them together into a single array.
|
|
35
|
+
*
|
|
36
|
+
* @param values
|
|
37
|
+
* @param expandFn
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
export declare function expandTrees<T, N extends TreeNode<T, N>>(values: T[], expandFn: ExpandTreeFunction<T, N>): N[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expandTrees = exports.expandTreeFunction = void 0;
|
|
4
|
+
;
|
|
5
|
+
function expandTreeFunction(config) {
|
|
6
|
+
var _a;
|
|
7
|
+
const makeNode = (_a = config.makeNode) !== null && _a !== void 0 ? _a : ((node) => node);
|
|
8
|
+
const expandFn = (value, parent) => {
|
|
9
|
+
const depth = (parent) ? parent.depth + 1 : 0;
|
|
10
|
+
const treeNode = {
|
|
11
|
+
depth,
|
|
12
|
+
parent,
|
|
13
|
+
value
|
|
14
|
+
};
|
|
15
|
+
const node = makeNode(treeNode);
|
|
16
|
+
const childrenValues = config.getChildren(value);
|
|
17
|
+
node.children = (childrenValues) ? childrenValues.map(x => expandFn(x, node)) : undefined;
|
|
18
|
+
return node;
|
|
19
|
+
};
|
|
20
|
+
return (root) => expandFn(root);
|
|
21
|
+
}
|
|
22
|
+
exports.expandTreeFunction = expandTreeFunction;
|
|
23
|
+
/**
|
|
24
|
+
* Convenience function for expanding multiple values into trees then merging them together into a single array.
|
|
25
|
+
*
|
|
26
|
+
* @param values
|
|
27
|
+
* @param expandFn
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
function expandTrees(values, expandFn) {
|
|
31
|
+
return values.map(expandFn);
|
|
32
|
+
}
|
|
33
|
+
exports.expandTrees = expandTrees;
|
|
34
|
+
//# sourceMappingURL=tree.expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.expand.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/tree.expand.ts"],"names":[],"mappings":";;;AAcC,CAAC;AAwBF,SAAgB,kBAAkB,CAAiD,MAAuD;;IACxI,MAAM,QAAQ,GAA6B,MAAC,MAAc,CAAC,QAAQ,mCAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAS,CAAC,CAAC;IAE7F,MAAM,QAAQ,GAAG,CAAC,KAAQ,EAAE,MAAU,EAAK,EAAE;QAC3C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAkC;YAC9C,KAAK;YACL,MAAM;YACN,KAAK;SACN,CAAC;QAEF,MAAM,IAAI,GAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,cAAc,GAAe,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAlBD,gDAkBC;AAED;;;;;;GAMG;AACF,SAAgB,WAAW,CAA8B,MAAW,EAAE,QAAkC;IACvG,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAFA,kCAEA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TreeNode } from "./tree";
|
|
2
|
+
/**
|
|
3
|
+
* Flattens the tree by pushing the values into the input array, or a new array and returns the value.
|
|
4
|
+
*/
|
|
5
|
+
export declare type FlattenTreeFunction<N extends TreeNode<any>, V> = (tree: N, array?: V[]) => V[];
|
|
6
|
+
/**
|
|
7
|
+
* Traverses the tree and flattens it into all tree nodes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function flattenTree<N extends TreeNode<any> = TreeNode<any>>(tree: N): N[];
|
|
10
|
+
/**
|
|
11
|
+
* Traverses the tree and pushes the nodes into the input array.
|
|
12
|
+
*
|
|
13
|
+
* @param tree
|
|
14
|
+
* @param array
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
export declare function flattenTreeToArray<N extends TreeNode<any> = TreeNode<any>>(tree: N, array: N[]): N[];
|
|
18
|
+
export declare function flattenTreeToArrayFunction<N extends TreeNode<any>>(): FlattenTreeFunction<N, N>;
|
|
19
|
+
export declare function flattenTreeToArrayFunction<N extends TreeNode<any, N>, V>(mapNodeFn?: ((node: N) => V)): FlattenTreeFunction<N, V>;
|
|
20
|
+
/**
|
|
21
|
+
* Convenience function for flattening multiple trees with a flatten function.
|
|
22
|
+
*
|
|
23
|
+
* @param trees
|
|
24
|
+
* @param flattenFn
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
export declare function flattenTrees<N extends TreeNode<any, N>, V>(trees: N[], flattenFn: FlattenTreeFunction<N, V>): V[];
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flattenTrees = exports.flattenTreeToArrayFunction = exports.flattenTreeToArray = exports.flattenTree = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Traverses the tree and flattens it into all tree nodes.
|
|
6
|
+
*/
|
|
7
|
+
function flattenTree(tree) {
|
|
8
|
+
return flattenTreeToArray(tree, []);
|
|
9
|
+
}
|
|
10
|
+
exports.flattenTree = flattenTree;
|
|
11
|
+
/**
|
|
12
|
+
* Traverses the tree and pushes the nodes into the input array.
|
|
13
|
+
*
|
|
14
|
+
* @param tree
|
|
15
|
+
* @param array
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
function flattenTreeToArray(tree, array) {
|
|
19
|
+
return flattenTreeToArrayFunction()(tree, array);
|
|
20
|
+
}
|
|
21
|
+
exports.flattenTreeToArray = flattenTreeToArray;
|
|
22
|
+
function flattenTreeToArrayFunction(mapNodeFn) {
|
|
23
|
+
const mapNode = mapNodeFn !== null && mapNodeFn !== void 0 ? mapNodeFn : ((x) => x);
|
|
24
|
+
const flattenFn = (tree, array = []) => {
|
|
25
|
+
array.push(mapNode(tree));
|
|
26
|
+
if (tree.children) {
|
|
27
|
+
tree.children.forEach((x) => flattenFn(x, array));
|
|
28
|
+
}
|
|
29
|
+
return array;
|
|
30
|
+
};
|
|
31
|
+
return flattenFn;
|
|
32
|
+
}
|
|
33
|
+
exports.flattenTreeToArrayFunction = flattenTreeToArrayFunction;
|
|
34
|
+
/**
|
|
35
|
+
* Convenience function for flattening multiple trees with a flatten function.
|
|
36
|
+
*
|
|
37
|
+
* @param trees
|
|
38
|
+
* @param flattenFn
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
function flattenTrees(trees, flattenFn) {
|
|
42
|
+
const array = [];
|
|
43
|
+
trees.forEach((x) => flattenFn(x, array));
|
|
44
|
+
return array;
|
|
45
|
+
}
|
|
46
|
+
exports.flattenTrees = flattenTrees;
|
|
47
|
+
//# sourceMappingURL=tree.flatten.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.flatten.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/tree.flatten.ts"],"names":[],"mappings":";;;AAQA;;GAEG;AACH,SAAgB,WAAW,CAA0C,IAAO;IAC1E,OAAO,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAA0C,IAAO,EAAE,KAAU;IAC7F,OAAO,0BAA0B,EAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAFD,gDAEC;AAID,SAAgB,0BAA0B,CAAgC,SAA4B;IACpG,MAAM,OAAO,GAAmB,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAQ,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,CAAC,IAAO,EAAE,QAAa,EAAE,EAAE,EAAE;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACnD;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAdD,gEAcC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAgC,KAAU,EAAE,SAAoC;IAC1G,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAJD,oCAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/tree.ts"],"names":[],"mappings":""}
|
package/src/lib/type.d.ts
CHANGED
package/src/lib/value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/value.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/value.ts"],"names":[],"mappings":";;;AAsBA,SAAgB,eAAe,CAAI,KAAe;IAChD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAFD,0CAEC;AAmBD,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KACzB;SAAM;QACL,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;KACtC;AACH,CAAC;AAND,gDAMC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAI,CAAW,EAAE,CAAW;IAC5D,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,gDAEC"}
|