@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.
Files changed (78) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +4 -5
  3. package/package.json +2 -1
  4. package/src/lib/array/array.d.ts +21 -1
  5. package/src/lib/array/array.filter.d.ts +20 -0
  6. package/src/lib/array/array.filter.js +39 -1
  7. package/src/lib/array/array.filter.js.map +1 -1
  8. package/src/lib/array/array.index.d.ts +36 -0
  9. package/src/lib/array/array.index.js +65 -0
  10. package/src/lib/array/array.index.js.map +1 -0
  11. package/src/lib/array/array.js +32 -2
  12. package/src/lib/array/array.js.map +1 -1
  13. package/src/lib/array/array.make.d.ts +22 -0
  14. package/src/lib/array/array.make.js +30 -0
  15. package/src/lib/array/array.make.js.map +1 -0
  16. package/src/lib/array/array.number.d.ts +1 -1
  17. package/src/lib/array/array.number.js +12 -1
  18. package/src/lib/array/array.number.js.map +1 -1
  19. package/src/lib/array/array.set.d.ts +3 -2
  20. package/src/lib/array/array.set.js +8 -4
  21. package/src/lib/array/array.set.js.map +1 -1
  22. package/src/lib/array/index.d.ts +2 -0
  23. package/src/lib/array/index.js +2 -0
  24. package/src/lib/array/index.js.map +1 -1
  25. package/src/lib/assertion/assertion.js +1 -1
  26. package/src/lib/assertion/assertion.js.map +1 -1
  27. package/src/lib/date/date.d.ts +1 -0
  28. package/src/lib/date/date.js.map +1 -1
  29. package/src/lib/filter/filter.d.ts +8 -0
  30. package/src/lib/filter/filter.js +20 -0
  31. package/src/lib/filter/filter.js.map +1 -1
  32. package/src/lib/getter.d.ts +10 -0
  33. package/src/lib/getter.js +2 -8
  34. package/src/lib/getter.js.map +1 -1
  35. package/src/lib/index.d.ts +1 -0
  36. package/src/lib/index.js +1 -0
  37. package/src/lib/index.js.map +1 -1
  38. package/src/lib/number.d.ts +13 -0
  39. package/src/lib/number.js +19 -1
  40. package/src/lib/number.js.map +1 -1
  41. package/src/lib/object/object.d.ts +53 -3
  42. package/src/lib/object/object.js +119 -7
  43. package/src/lib/object/object.js.map +1 -1
  44. package/src/lib/page/page.filter.d.ts +1 -1
  45. package/src/lib/promise/index.d.ts +2 -0
  46. package/src/lib/promise/index.js +2 -0
  47. package/src/lib/promise/index.js.map +1 -1
  48. package/src/lib/promise/poll.d.ts +18 -0
  49. package/src/lib/promise/poll.js +16 -0
  50. package/src/lib/promise/poll.js.map +1 -0
  51. package/src/lib/promise/promise.d.ts +0 -1
  52. package/src/lib/promise/promise.js +2 -6
  53. package/src/lib/promise/promise.js.map +1 -1
  54. package/src/lib/promise/promise.loop.d.ts +1 -0
  55. package/src/lib/promise/promise.loop.js.map +1 -1
  56. package/src/lib/promise/wait.d.ts +6 -0
  57. package/src/lib/promise/wait.js +11 -0
  58. package/src/lib/promise/wait.js.map +1 -0
  59. package/src/lib/string.d.ts +1 -0
  60. package/src/lib/string.js +5 -1
  61. package/src/lib/string.js.map +1 -1
  62. package/src/lib/tree/index.d.ts +4 -0
  63. package/src/lib/tree/index.js +8 -0
  64. package/src/lib/tree/index.js.map +1 -0
  65. package/src/lib/tree/tree.array.d.ts +15 -0
  66. package/src/lib/tree/tree.array.js +19 -0
  67. package/src/lib/tree/tree.array.js.map +1 -0
  68. package/src/lib/tree/tree.d.ts +13 -0
  69. package/src/lib/tree/tree.expand.d.ts +40 -0
  70. package/src/lib/tree/tree.expand.js +34 -0
  71. package/src/lib/tree/tree.expand.js.map +1 -0
  72. package/src/lib/tree/tree.flatten.d.ts +27 -0
  73. package/src/lib/tree/tree.flatten.js +47 -0
  74. package/src/lib/tree/tree.flatten.js.map +1 -0
  75. package/src/lib/tree/tree.js +3 -0
  76. package/src/lib/tree/tree.js.map +1 -0
  77. package/src/lib/type.d.ts +1 -0
  78. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tree.js.map
@@ -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
@@ -7,3 +7,4 @@ export declare type ClassType<T> = {
7
7
  export declare type KeyValueTransformMap<T, V, K extends keyof T = keyof T> = {
8
8
  [k in K]: V;
9
9
  };
10
+ export declare type BooleanKeyValueTransformMap<T> = KeyValueTransformMap<T, boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/value.ts"],"names":[],"mappings":";;;AAuBA,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"}
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"}