@dereekb/util 0.0.1 → 1.0.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 +19 -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/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
package/src/lib/number.d.ts
CHANGED
|
@@ -16,3 +16,16 @@ export declare function roundToPrecision(value: number, precision: number): numb
|
|
|
16
16
|
* @returns Step that contains the value.
|
|
17
17
|
*/
|
|
18
18
|
export declare function roundNumberUpToStep(value: number, step: number): number;
|
|
19
|
+
export declare type RandomNumberFunction = () => number;
|
|
20
|
+
export interface MakeRandomFunction {
|
|
21
|
+
min?: number;
|
|
22
|
+
max: number;
|
|
23
|
+
}
|
|
24
|
+
export declare type MakeRandomFunctionInput = number | MakeRandomFunction;
|
|
25
|
+
/**
|
|
26
|
+
* Used to generate a RandomNumberFunction that returns a number between the input and the maximum.
|
|
27
|
+
*
|
|
28
|
+
* @param maxOrArgs
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
export declare function makeRandomFunction(maxOrArgs: MakeRandomFunctionInput): RandomNumberFunction;
|
package/src/lib/number.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.roundNumberUpToStep = exports.roundToPrecision = void 0;
|
|
3
|
+
exports.makeRandomFunction = exports.roundNumberUpToStep = exports.roundToPrecision = void 0;
|
|
4
4
|
// MARK: Number/Math
|
|
5
5
|
/**
|
|
6
6
|
* Rounds the input number to the given precision.
|
|
@@ -26,4 +26,22 @@ function roundNumberUpToStep(value, step) {
|
|
|
26
26
|
return Math.ceil(value / step) * step;
|
|
27
27
|
}
|
|
28
28
|
exports.roundNumberUpToStep = roundNumberUpToStep;
|
|
29
|
+
/**
|
|
30
|
+
* Used to generate a RandomNumberFunction that returns a number between the input and the maximum.
|
|
31
|
+
*
|
|
32
|
+
* @param maxOrArgs
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
function makeRandomFunction(maxOrArgs) {
|
|
36
|
+
const config = (typeof maxOrArgs === 'number') ? { min: 0, max: maxOrArgs } : maxOrArgs;
|
|
37
|
+
const { min, max } = config;
|
|
38
|
+
if (min != null) {
|
|
39
|
+
const range = max - min;
|
|
40
|
+
return () => (Math.random() * range) + min;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return () => Math.random() * max;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.makeRandomFunction = makeRandomFunction;
|
|
29
47
|
//# sourceMappingURL=number.js.map
|
package/src/lib/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/number.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/number.ts"],"names":[],"mappings":";;;AAEA,oBAAoB;AACpB;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAC5E,CAAC;AAFD,4CAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC;AAFD,kDAEC;AAYD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,SAAkC;IACnE,MAAM,MAAM,GAAuB,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,OAAO,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;KAC5C;SAAM;QACL,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;KAClC;AACH,CAAC;AAVD,gDAUC"}
|
|
@@ -1,12 +1,62 @@
|
|
|
1
1
|
import { FieldOfType } from "../key";
|
|
2
|
+
import { Maybe } from "../value";
|
|
3
|
+
export declare function objectHasKey<T, K extends keyof T = keyof T>(obj: T, key: K): boolean;
|
|
4
|
+
export declare function objectHasKey<T>(obj: T, key: string): boolean;
|
|
2
5
|
export declare function applyToMultipleFields<T extends object>(value: any, fields: FieldOfType<T>[]): Partial<T>;
|
|
3
6
|
export declare function mapToObject<T, K extends PropertyKey>(map: Map<K, T>): {
|
|
4
7
|
[key: string]: T;
|
|
5
8
|
};
|
|
9
|
+
export interface FilterFromPOJO<T extends object> {
|
|
10
|
+
copy?: boolean;
|
|
11
|
+
filter?: Omit<FilterKeyValueTuples<T>, 'inverse'>;
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
|
-
* Removes
|
|
14
|
+
* Removes values, per the the filter config, from the input object.
|
|
8
15
|
*
|
|
9
16
|
* @param obj POJO to remove undefined values from.
|
|
10
|
-
* @param copy Whether or not to return a copy
|
|
17
|
+
* @param copy Whether or not to return a copy of the input object. Default is true.
|
|
11
18
|
*/
|
|
12
|
-
export declare function
|
|
19
|
+
export declare function filterFromPOJO<T extends object = object>(obj: T, { copy, filter }?: FilterFromPOJO<T>): T;
|
|
20
|
+
export declare function assignValuesToPOJO<T extends object = object>(target: T, obj: T, filter?: FilterKeyValueTuplesInput<T>): T;
|
|
21
|
+
export declare type KeyValueTuple<T extends object = object, K extends keyof T = keyof T> = [K, T[K]];
|
|
22
|
+
export declare enum KeyValueTypleValueFilter {
|
|
23
|
+
NONE = 0,
|
|
24
|
+
UNDEFINED = 1,
|
|
25
|
+
NULL = 2,
|
|
26
|
+
FALSY = 3
|
|
27
|
+
}
|
|
28
|
+
export declare type ForEachKeyValueFunction<T extends object = object, K extends keyof T = keyof T> = (tuple: KeyValueTuple<T, K>, index: number) => void;
|
|
29
|
+
export interface ForEachKeyValue<T extends object = object, K extends keyof T = keyof T> {
|
|
30
|
+
filter?: FilterKeyValueTuplesInput<T, K>;
|
|
31
|
+
forEach: ForEachKeyValueFunction<T, K>;
|
|
32
|
+
}
|
|
33
|
+
export declare function forEachKeyValue<T extends object = object, K extends keyof T = keyof T>(obj: T, { forEach, filter }: ForEachKeyValue<T, K>): void;
|
|
34
|
+
export declare function toKeyValueTuples<T extends object = object, K extends keyof T = keyof T>(obj: T, filter?: FilterKeyValueTuplesInput<T, K>): KeyValueTuple<T, K>[];
|
|
35
|
+
export declare type FilterKeyValueTuplesInput<T extends object = object, K extends keyof T = keyof T> = KeyValueTypleValueFilter | FilterKeyValueTuples<T, K>;
|
|
36
|
+
export interface FilterKeyValueTuples<T extends object = object, K extends keyof T = keyof T> {
|
|
37
|
+
valueFilter?: KeyValueTypleValueFilter;
|
|
38
|
+
invertFilter?: boolean;
|
|
39
|
+
keysFilter?: K[];
|
|
40
|
+
}
|
|
41
|
+
export declare function filterKeyValueTuplesFn<T extends object = object, K extends keyof T = keyof T>(input: FilterKeyValueTuplesInput<T, K>): (tuples: KeyValueTuple<T, K>) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Recursively function that returns true if the input is not an object or if every key on the object is empty.
|
|
44
|
+
*
|
|
45
|
+
* @param obj
|
|
46
|
+
*/
|
|
47
|
+
export declare function objectIsEmpty<T extends object>(obj: Maybe<T>): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Merges all input objects into one. The order of overrides is kept, so the right-most item in the array will have priority over all objects before it.
|
|
50
|
+
*
|
|
51
|
+
* @param objects
|
|
52
|
+
*/
|
|
53
|
+
export declare function mergeObjects<T extends object>(objects: Maybe<Partial<T>>[], filter?: FilterKeyValueTuples<T>): Partial<T>;
|
|
54
|
+
/**
|
|
55
|
+
* Assigns all undefined valeus from one or more objects into the target object.
|
|
56
|
+
*
|
|
57
|
+
* @param object
|
|
58
|
+
*/
|
|
59
|
+
export declare function overrideInObject<T extends object>(target: Partial<T>, { from, filter }: {
|
|
60
|
+
from: Partial<T>[];
|
|
61
|
+
filter?: FilterKeyValueTuples<T>;
|
|
62
|
+
}): Partial<T>;
|
package/src/lib/object/object.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.overrideInObject = exports.mergeObjects = exports.objectIsEmpty = exports.filterKeyValueTuplesFn = exports.toKeyValueTuples = exports.forEachKeyValue = exports.KeyValueTypleValueFilter = exports.assignValuesToPOJO = exports.filterFromPOJO = exports.mapToObject = exports.applyToMultipleFields = exports.objectHasKey = void 0;
|
|
4
|
+
const value_1 = require("../value");
|
|
5
|
+
const array_value_1 = require("../array/array.value");
|
|
6
|
+
const filter_1 = require("../filter/filter");
|
|
7
|
+
function objectHasKey(obj, key) {
|
|
8
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
9
|
+
}
|
|
10
|
+
exports.objectHasKey = objectHasKey;
|
|
4
11
|
function applyToMultipleFields(value, fields) {
|
|
5
12
|
const result = {};
|
|
6
13
|
fields.forEach((field) => {
|
|
@@ -18,21 +25,126 @@ function mapToObject(map) {
|
|
|
18
25
|
}
|
|
19
26
|
exports.mapToObject = mapToObject;
|
|
20
27
|
/**
|
|
21
|
-
* Removes
|
|
28
|
+
* Removes values, per the the filter config, from the input object.
|
|
22
29
|
*
|
|
23
30
|
* @param obj POJO to remove undefined values from.
|
|
24
|
-
* @param copy Whether or not to return a copy
|
|
31
|
+
* @param copy Whether or not to return a copy of the input object. Default is true.
|
|
25
32
|
*/
|
|
26
|
-
function
|
|
33
|
+
function filterFromPOJO(obj, { copy = false, filter = { valueFilter: KeyValueTypleValueFilter.UNDEFINED } } = {}) {
|
|
27
34
|
if (copy) {
|
|
28
35
|
obj = Object.assign({}, obj);
|
|
29
36
|
}
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
forEachKeyValue(obj, {
|
|
38
|
+
filter: Object.assign(Object.assign({}, filter), { invertFilter: !filter.invertFilter }),
|
|
39
|
+
forEach: ([key]) => {
|
|
32
40
|
delete obj[key];
|
|
33
41
|
}
|
|
34
42
|
});
|
|
35
43
|
return obj;
|
|
36
44
|
}
|
|
37
|
-
exports.
|
|
45
|
+
exports.filterFromPOJO = filterFromPOJO;
|
|
46
|
+
function assignValuesToPOJO(target, obj, filter = KeyValueTypleValueFilter.UNDEFINED) {
|
|
47
|
+
forEachKeyValue(obj, {
|
|
48
|
+
filter,
|
|
49
|
+
forEach: ([key, value]) => {
|
|
50
|
+
target[key] = value;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
exports.assignValuesToPOJO = assignValuesToPOJO;
|
|
56
|
+
var KeyValueTypleValueFilter;
|
|
57
|
+
(function (KeyValueTypleValueFilter) {
|
|
58
|
+
KeyValueTypleValueFilter[KeyValueTypleValueFilter["NONE"] = 0] = "NONE";
|
|
59
|
+
KeyValueTypleValueFilter[KeyValueTypleValueFilter["UNDEFINED"] = 1] = "UNDEFINED";
|
|
60
|
+
KeyValueTypleValueFilter[KeyValueTypleValueFilter["NULL"] = 2] = "NULL";
|
|
61
|
+
KeyValueTypleValueFilter[KeyValueTypleValueFilter["FALSY"] = 3] = "FALSY";
|
|
62
|
+
})(KeyValueTypleValueFilter = exports.KeyValueTypleValueFilter || (exports.KeyValueTypleValueFilter = {}));
|
|
63
|
+
function forEachKeyValue(obj, { forEach, filter }) {
|
|
64
|
+
const keyValues = toKeyValueTuples(obj, filter);
|
|
65
|
+
keyValues.forEach(forEach);
|
|
66
|
+
}
|
|
67
|
+
exports.forEachKeyValue = forEachKeyValue;
|
|
68
|
+
function toKeyValueTuples(obj, filter) {
|
|
69
|
+
let pairs = Object.entries(obj);
|
|
70
|
+
if (filter) {
|
|
71
|
+
const filterFn = filterKeyValueTuplesFn(filter);
|
|
72
|
+
pairs = pairs.filter(filterFn);
|
|
73
|
+
}
|
|
74
|
+
return pairs;
|
|
75
|
+
}
|
|
76
|
+
exports.toKeyValueTuples = toKeyValueTuples;
|
|
77
|
+
function filterKeyValueTuplesFn(input) {
|
|
78
|
+
const filter = (typeof input === 'object') ? input : { valueFilter: input };
|
|
79
|
+
const { valueFilter: type, invertFilter: inverseFilter, keysFilter } = filter;
|
|
80
|
+
let filterFn;
|
|
81
|
+
switch (type) {
|
|
82
|
+
case KeyValueTypleValueFilter.UNDEFINED:
|
|
83
|
+
filterFn = ([_, x]) => x !== undefined;
|
|
84
|
+
break;
|
|
85
|
+
case KeyValueTypleValueFilter.NULL:
|
|
86
|
+
filterFn = ([_, x]) => x != null;
|
|
87
|
+
break;
|
|
88
|
+
case KeyValueTypleValueFilter.FALSY:
|
|
89
|
+
filterFn = ([_, x]) => Boolean(x);
|
|
90
|
+
break;
|
|
91
|
+
case KeyValueTypleValueFilter.NONE:
|
|
92
|
+
default:
|
|
93
|
+
filterFn = () => true;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
if (keysFilter) {
|
|
97
|
+
const filterByTypeFn = filterFn;
|
|
98
|
+
const keysSet = new Set(keysFilter);
|
|
99
|
+
filterFn = (x) => filterByTypeFn(x) && keysSet.has(x[0]);
|
|
100
|
+
}
|
|
101
|
+
return (0, filter_1.invertFilter)(filterFn, inverseFilter);
|
|
102
|
+
}
|
|
103
|
+
exports.filterKeyValueTuplesFn = filterKeyValueTuplesFn;
|
|
104
|
+
/**
|
|
105
|
+
* Recursively function that returns true if the input is not an object or if every key on the object is empty.
|
|
106
|
+
*
|
|
107
|
+
* @param obj
|
|
108
|
+
*/
|
|
109
|
+
function objectIsEmpty(obj) {
|
|
110
|
+
if (obj != null && typeof obj === 'object') {
|
|
111
|
+
const keys = Object.keys(obj);
|
|
112
|
+
if (keys.length > 0) {
|
|
113
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
114
|
+
const key = keys[i];
|
|
115
|
+
const value = obj[key];
|
|
116
|
+
const isEmpty = (typeof obj === 'object') ? objectIsEmpty(value) : !(0, value_1.hasValueOrNotEmpty)(value);
|
|
117
|
+
if (!isEmpty) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
exports.objectIsEmpty = objectIsEmpty;
|
|
126
|
+
/**
|
|
127
|
+
* Merges all input objects into one. The order of overrides is kept, so the right-most item in the array will have priority over all objects before it.
|
|
128
|
+
*
|
|
129
|
+
* @param objects
|
|
130
|
+
*/
|
|
131
|
+
function mergeObjects(objects, filter) {
|
|
132
|
+
let object = {};
|
|
133
|
+
overrideInObject(object, { from: (0, array_value_1.filterMaybeValues)(objects), filter });
|
|
134
|
+
return object;
|
|
135
|
+
}
|
|
136
|
+
exports.mergeObjects = mergeObjects;
|
|
137
|
+
/**
|
|
138
|
+
* Assigns all undefined valeus from one or more objects into the target object.
|
|
139
|
+
*
|
|
140
|
+
* @param object
|
|
141
|
+
*/
|
|
142
|
+
function overrideInObject(target, { from, filter }) {
|
|
143
|
+
from.forEach(((x) => {
|
|
144
|
+
const relevantValues = filterFromPOJO(Object.assign({}, x), { filter, copy: false });
|
|
145
|
+
Object.assign(target, relevantValues);
|
|
146
|
+
}));
|
|
147
|
+
return target;
|
|
148
|
+
}
|
|
149
|
+
exports.overrideInObject = overrideInObject;
|
|
38
150
|
//# sourceMappingURL=object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":"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"}
|
package/src/lib/promise/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./poll"), exports);
|
|
4
5
|
(0, tslib_1.__exportStar)(require("./promise"), exports);
|
|
5
6
|
(0, tslib_1.__exportStar)(require("./promise.loop"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./wait"), exports);
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B;AAC1B,8DAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,yDAA0B;AAC1B,8DAA+B;AAC/B,sDAAuB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface PollConfig {
|
|
2
|
+
/**
|
|
3
|
+
* How long to wait between polling checks in ms.
|
|
4
|
+
*/
|
|
5
|
+
wait?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Checks to see the poll has been met.
|
|
8
|
+
*/
|
|
9
|
+
check: () => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Max number of times to poll before giving up.
|
|
12
|
+
*/
|
|
13
|
+
timesToGiveup?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Polls every number of ms to check that a condition has been met.
|
|
17
|
+
*/
|
|
18
|
+
export declare function poll({ check, wait, timesToGiveup }: PollConfig): Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.poll = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
const wait_1 = require("./wait");
|
|
6
|
+
/**
|
|
7
|
+
* Polls every number of ms to check that a condition has been met.
|
|
8
|
+
*/
|
|
9
|
+
function poll({ check, wait = 250, timesToGiveup = Number.MAX_SAFE_INTEGER }) {
|
|
10
|
+
return (0, util_1.performTaskLoop)({
|
|
11
|
+
next: (i) => (i > 0) ? (0, wait_1.waitForMs)(wait) : Promise.resolve(),
|
|
12
|
+
checkContinue: (_, i) => !check() && timesToGiveup > i
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
exports.poll = poll;
|
|
16
|
+
//# sourceMappingURL=poll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/poll.ts"],"names":[],"mappings":";;;AAAA,wCAAgD;AAChD,iCAAmC;AAiBnC;;GAEG;AACH,SAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAc;IAC7F,OAAO,IAAA,sBAAe,EAAC;QACrB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;QAC1D,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,aAAa,GAAG,CAAC;KACvD,CAAC,CAAC;AACL,CAAC;AALD,oBAKC"}
|
|
@@ -38,5 +38,4 @@ export declare class PromiseUtility {
|
|
|
38
38
|
static performTasks<T, K = any>(input: T[], taskFn: PromiseTaskFn<T, K>, config?: PerformTasksConfig<T>): Promise<PerformTasksResult<T, K>>;
|
|
39
39
|
static performTask<O>(taskFn: () => Promise<O>, config?: PerformTaskConfig<0>): Promise<PerformTaskResult<O>>;
|
|
40
40
|
static _performTask<I, O>(value: I, taskFn: PromiseTaskFn<I, O>, { throwError, retriesAllowed, retryWait, beforeRetry }?: PerformTaskConfig<I>): Promise<[I, O, boolean]>;
|
|
41
|
-
static wait(ms: number): Promise<void>;
|
|
42
41
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PromiseUtility = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const wait_1 = require("./wait");
|
|
5
6
|
class PromiseUtility {
|
|
6
7
|
// MARK: Run
|
|
7
8
|
/**
|
|
@@ -91,7 +92,7 @@ class PromiseUtility {
|
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
94
|
;
|
|
94
|
-
return (retryWait) ?
|
|
95
|
+
return (retryWait) ? (0, wait_1.waitForMs)(retryWait).then(() => doNextTry()) : doNextTry();
|
|
95
96
|
}
|
|
96
97
|
else {
|
|
97
98
|
// Error out.
|
|
@@ -107,11 +108,6 @@ class PromiseUtility {
|
|
|
107
108
|
return iterateTask(value, 0);
|
|
108
109
|
});
|
|
109
110
|
}
|
|
110
|
-
static wait(ms, value) {
|
|
111
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
112
|
-
return new Promise(resolve => setTimeout(resolve, ms, value));
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
111
|
}
|
|
116
112
|
exports.PromiseUtility = PromiseUtility;
|
|
117
113
|
//# sourceMappingURL=promise.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,6 @@ export interface PerformTaskLoopWithInitConfig<O> {
|
|
|
8
8
|
next: (i: number, prev: O) => Promise<O>;
|
|
9
9
|
checkContinue: (prev: O, i: number) => boolean;
|
|
10
10
|
}
|
|
11
|
+
export declare function performTaskLoop(config: PerformTaskLoopConfig<void>): Promise<void>;
|
|
11
12
|
export declare function performTaskLoop<O>(config: PerformTaskLoopConfig<O>): Promise<Maybe<O>>;
|
|
12
13
|
export declare function performTaskLoop<O>(config: PerformTaskLoopWithInitConfig<O>): Promise<O>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.loop.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.loop.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"promise.loop.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.loop.ts"],"names":[],"mappings":";;;;AAiBA,SAAgB,eAAe,CAAI,MAAW;IAC5C,OAAO,IAAI,OAAO,CAAI,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,IAAI;YACF,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAEvF,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,SAAS,GAAa,MAAM,CAAC,SAAS,CAAC;gBAC3C,IAAI,KAAc,CAAC;gBAEnB,GAAG;oBACD,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC5C,CAAC,IAAI,CAAC,CAAC;oBACP,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;iBAC5C,QAAQ,KAAK,EAAE;gBAEhB,OAAO,CAAC,SAAU,CAAC,CAAC;aACrB;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC3B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AAxBD,0CAwBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForMs = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
function waitForMs(ms, value) {
|
|
6
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
7
|
+
return new Promise(resolve => setTimeout(resolve, ms, value));
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
exports.waitForMs = waitForMs;
|
|
11
|
+
//# sourceMappingURL=wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/wait.ts"],"names":[],"mappings":";;;;AAOA,SAAsB,SAAS,CAAI,EAAU,EAAE,KAAS;;QACtD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;CAAA;AAFD,8BAEC"}
|
package/src/lib/string.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function caseInsensitiveString(input: undefined): undefined;
|
|
|
11
11
|
export declare function caseInsensitiveString(input: Maybe<string>): Maybe<string>;
|
|
12
12
|
export declare function splitCommaSeparatedString(input: CommaSeparatedString<string>): string[];
|
|
13
13
|
export declare function splitCommaSeparatedString<T = any>(input: CommaSeparatedString<T>, mapFn: MapStringFn<T>): T[];
|
|
14
|
+
export declare function splitCommaSeparatedStringToSet(input: Maybe<CommaSeparatedString>): Set<string>;
|
|
14
15
|
/**
|
|
15
16
|
* Adds a plus prefix to the input value and converts it to a string. If the value is negative or 0, no prefix is added.
|
|
16
17
|
*
|
package/src/lib/string.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addPlusPrefixToNumber = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
|
|
3
|
+
exports.addPlusPrefixToNumber = exports.splitCommaSeparatedStringToSet = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
|
|
4
4
|
function caseInsensitiveString(input) {
|
|
5
5
|
return input === null || input === void 0 ? void 0 : input.toLocaleLowerCase();
|
|
6
6
|
}
|
|
@@ -10,6 +10,10 @@ function splitCommaSeparatedString(input, mapFn = (x) => x) {
|
|
|
10
10
|
return splits.map(x => mapFn(x.trim()));
|
|
11
11
|
}
|
|
12
12
|
exports.splitCommaSeparatedString = splitCommaSeparatedString;
|
|
13
|
+
function splitCommaSeparatedStringToSet(input) {
|
|
14
|
+
return new Set(input != null ? splitCommaSeparatedString(input) : []);
|
|
15
|
+
}
|
|
16
|
+
exports.splitCommaSeparatedStringToSet = splitCommaSeparatedStringToSet;
|
|
13
17
|
/**
|
|
14
18
|
* Adds a plus prefix to the input value and converts it to a string. If the value is negative or 0, no prefix is added.
|
|
15
19
|
*
|
package/src/lib/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/string.ts"],"names":[],"mappings":";;;AAaA,SAAgB,qBAAqB,CAAC,KAAU;IAC9C,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAFD,sDAEC;AAID,SAAgB,yBAAyB,CAAU,KAA8B,EAAE,QAAwB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAQ;IACxH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAHD,8DAGC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAqB,EAAE,MAAM,GAAG,GAAG;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;KACvD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,sDAMC"}
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/string.ts"],"names":[],"mappings":";;;AAaA,SAAgB,qBAAqB,CAAC,KAAU;IAC9C,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAFD,sDAEC;AAID,SAAgB,yBAAyB,CAAU,KAA8B,EAAE,QAAwB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAQ;IACxH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAHD,8DAGC;AAED,SAAgB,8BAA8B,CAAC,KAAkC;IAC/E,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAFD,wEAEC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAqB,EAAE,MAAM,GAAG,GAAG;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;KACvD;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,sDAMC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./tree"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./tree.expand"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./tree.flatten"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./tree.array"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,6DAA8B;AAC9B,8DAA+B;AAC/B,4DAA6B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TreeNode } from "./tree";
|
|
2
|
+
import { ExpandTreeFunction } from "./tree.expand";
|
|
3
|
+
import { FlattenTreeFunction } from './tree.flatten';
|
|
4
|
+
/**
|
|
5
|
+
* Function that expands the input values into a tree, and then flattens the tree to produce a single array of values of another type.
|
|
6
|
+
*/
|
|
7
|
+
export declare type ExpandFlattenTreeFunction<T, V> = (values: T[]) => V[];
|
|
8
|
+
/**
|
|
9
|
+
* Creates an ExpandFlattenTree function.
|
|
10
|
+
*
|
|
11
|
+
* @param expand
|
|
12
|
+
* @param flatten
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare function expandFlattenTreeFunction<T, V, N extends TreeNode<T, N> = TreeNode<T, any>>(expand: ExpandTreeFunction<T, N>, flatten: FlattenTreeFunction<N, V>): ExpandFlattenTreeFunction<T, V>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expandFlattenTreeFunction = void 0;
|
|
4
|
+
const tree_expand_1 = require("./tree.expand");
|
|
5
|
+
const tree_flatten_1 = require("./tree.flatten");
|
|
6
|
+
/**
|
|
7
|
+
* Creates an ExpandFlattenTree function.
|
|
8
|
+
*
|
|
9
|
+
* @param expand
|
|
10
|
+
* @param flatten
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
function expandFlattenTreeFunction(expand, flatten) {
|
|
14
|
+
return (values) => {
|
|
15
|
+
return (0, tree_flatten_1.flattenTrees)((0, tree_expand_1.expandTrees)(values, expand), flatten);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.expandFlattenTreeFunction = expandFlattenTreeFunction;
|
|
19
|
+
//# sourceMappingURL=tree.array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/tree.array.ts"],"names":[],"mappings":";;;AACA,+CAAgE;AAChE,iDAAmE;AAOnE;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAoD,MAAgC,EAAE,OAAkC;IAC/J,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,OAAO,IAAA,2BAAY,EAAC,IAAA,yBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAA;AACH,CAAC;AAJD,8DAIC"}
|
|
@@ -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
|