@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.
Files changed (75) hide show
  1. package/CHANGELOG.md +19 -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/index.d.ts +2 -0
  20. package/src/lib/array/index.js +2 -0
  21. package/src/lib/array/index.js.map +1 -1
  22. package/src/lib/assertion/assertion.js +1 -1
  23. package/src/lib/assertion/assertion.js.map +1 -1
  24. package/src/lib/date/date.d.ts +1 -0
  25. package/src/lib/date/date.js.map +1 -1
  26. package/src/lib/filter/filter.d.ts +8 -0
  27. package/src/lib/filter/filter.js +20 -0
  28. package/src/lib/filter/filter.js.map +1 -1
  29. package/src/lib/getter.d.ts +10 -0
  30. package/src/lib/getter.js +2 -8
  31. package/src/lib/getter.js.map +1 -1
  32. package/src/lib/index.d.ts +1 -0
  33. package/src/lib/index.js +1 -0
  34. package/src/lib/index.js.map +1 -1
  35. package/src/lib/number.d.ts +13 -0
  36. package/src/lib/number.js +19 -1
  37. package/src/lib/number.js.map +1 -1
  38. package/src/lib/object/object.d.ts +53 -3
  39. package/src/lib/object/object.js +119 -7
  40. package/src/lib/object/object.js.map +1 -1
  41. package/src/lib/page/page.filter.d.ts +1 -1
  42. package/src/lib/promise/index.d.ts +2 -0
  43. package/src/lib/promise/index.js +2 -0
  44. package/src/lib/promise/index.js.map +1 -1
  45. package/src/lib/promise/poll.d.ts +18 -0
  46. package/src/lib/promise/poll.js +16 -0
  47. package/src/lib/promise/poll.js.map +1 -0
  48. package/src/lib/promise/promise.d.ts +0 -1
  49. package/src/lib/promise/promise.js +2 -6
  50. package/src/lib/promise/promise.js.map +1 -1
  51. package/src/lib/promise/promise.loop.d.ts +1 -0
  52. package/src/lib/promise/promise.loop.js.map +1 -1
  53. package/src/lib/promise/wait.d.ts +6 -0
  54. package/src/lib/promise/wait.js +11 -0
  55. package/src/lib/promise/wait.js.map +1 -0
  56. package/src/lib/string.d.ts +1 -0
  57. package/src/lib/string.js +5 -1
  58. package/src/lib/string.js.map +1 -1
  59. package/src/lib/tree/index.d.ts +4 -0
  60. package/src/lib/tree/index.js +8 -0
  61. package/src/lib/tree/index.js.map +1 -0
  62. package/src/lib/tree/tree.array.d.ts +15 -0
  63. package/src/lib/tree/tree.array.js +19 -0
  64. package/src/lib/tree/tree.array.js.map +1 -0
  65. package/src/lib/tree/tree.d.ts +13 -0
  66. package/src/lib/tree/tree.expand.d.ts +40 -0
  67. package/src/lib/tree/tree.expand.js +34 -0
  68. package/src/lib/tree/tree.expand.js.map +1 -0
  69. package/src/lib/tree/tree.flatten.d.ts +27 -0
  70. package/src/lib/tree/tree.flatten.js +47 -0
  71. package/src/lib/tree/tree.flatten.js.map +1 -0
  72. package/src/lib/tree/tree.js +3 -0
  73. package/src/lib/tree/tree.js.map +1 -0
  74. package/src/lib/type.d.ts +1 -0
  75. package/src/lib/value.js.map +1 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/number.ts"],"names":[],"mappings":";;;AACA,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"}
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 all undefined values from the input POJO. Will only remove undefined, and not null, etc.
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 with all non-
17
+ * @param copy Whether or not to return a copy of the input object. Default is true.
11
18
  */
12
- export declare function removeUndefinedFromPOJO<T extends object = object>(obj: T, copy?: boolean): T;
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>;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeUndefinedFromPOJO = exports.mapToObject = exports.applyToMultipleFields = void 0;
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 all undefined values from the input POJO. Will only remove undefined, and not null, etc.
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 with all non-
31
+ * @param copy Whether or not to return a copy of the input object. Default is true.
25
32
  */
26
- function removeUndefinedFromPOJO(obj, copy) {
33
+ function filterFromPOJO(obj, { copy = false, filter = { valueFilter: KeyValueTypleValueFilter.UNDEFINED } } = {}) {
27
34
  if (copy) {
28
35
  obj = Object.assign({}, obj);
29
36
  }
30
- Object.keys(obj).forEach((key) => {
31
- if (obj[key] === undefined) {
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.removeUndefinedFromPOJO = removeUndefinedFromPOJO;
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":";;;AAEA,SAAgB,qBAAqB,CAAmB,KAAU,EAAE,MAAwB;IAC1F,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,sDAQC;AAED,SAAgB,WAAW,CAA2B,GAAc;IAClE,MAAM,MAAM,GAAG,EAAS,CAAC;IAEzB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAI,EAAE,GAAM,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,kCAQC;AAGD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAA4B,GAAM,EAAE,IAAc;IACvF,IAAI,IAAI,EAAE;QACR,GAAG,qBACE,GAAG,CACP,CAAC;KACH;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACvC,IAAK,GAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACnC,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAC;SAC1B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAdD,0DAcC"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export interface PageAndFilter<F> extends OptionalFilter<F> {
14
14
  }
15
15
  export interface FilteredPageIterateFn<T> {
16
16
  /**
17
- * Uses each model one-by-one.
17
+ * Uses each value one-by-one.
18
18
  */
19
19
  use?: IterateFn<T>;
20
20
  /**
@@ -1,2 +1,4 @@
1
+ export * from './poll';
1
2
  export * from './promise';
2
3
  export * from './promise.loop';
4
+ export * from './wait';
@@ -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) ? PromiseUtility.wait(retryWait).then(() => doNextTry()) : doNextTry();
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":";;;;AAkCA,MAAa,cAAc;IAEzB,YAAY;IACZ;;OAEG;IACH,MAAM,CAAO,eAAe,CAAI,MAAwB,EAAE,MAA2B;;YACnF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,kCAC1C,MAAM,KACT,UAAU,EAAE,IAAI,IAChB,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED,gBAAgB;IAChB;;;;OAIG;IACH,MAAM,CAAO,YAAY,CAAa,KAAU,EAAE,MAA2B,EAAE,SAAgC,EAAE,UAAU,EAAE,IAAI,EAAE;;YACjI,IAAI,WAA8B,CAAC;YAEnC,IAAI,MAAM,CAAC,UAAU,EAAE;gBACrB,WAAW,GAAG,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;oBACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC5E,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC9B;aACF;iBAAM;gBACL,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAC3G;YAED,MAAM,QAAQ,GAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAErB,IAAI,OAAO,EAAE;oBACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5B;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnB;YACH,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,QAAQ;gBACR,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;KAAA;IAED,MAAM,CAAO,WAAW,CAAI,MAAwB,EAAE,MAA6B;;YACjF,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;YACzF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,MAAM,CAAO,YAAY,CAAO,KAAQ,EAAE,MAA2B,EAAE,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,WAAW,KAA2B,EAAE,UAAU,EAAE,IAAI,EAAE;;YAElL,SAAe,OAAO,CAAC,KAAQ,EAAE,SAAiB;;oBAChD,IAAI;wBACF,MAAM,MAAM,GAAM,MAAM,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;wBACjD,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBACvB;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;qBACnB;gBACH,CAAC;aAAA;YAED,SAAe,WAAW,CAAC,KAAQ,EAAE,SAAiB;;oBACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAE1B,IAAI,OAAO,EAAE;wBACX,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;qBAC3B;oBAED,MAAM,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAC;oBAEpD,IAAI,gBAAgB,GAAG,CAAC,EAAE;wBACxB,SAAe,SAAS;;gCACtB,MAAM,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC;gCAEpC,IAAI,WAAW,EAAE;oCACf,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;iCACzC;gCAED,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;4BAC3C,CAAC;yBAAA;wBAAA,CAAC;wBAEF,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;qBAC3F;yBAAM;wBACL,aAAa;wBACb,IAAI,UAAU,EAAE;4BACd,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;yBACjB;6BAAM;4BACL,OAAO,CAAC,KAAK,EAAE,SAAgB,EAAE,KAAK,CAAC,CAAC;yBACzC;qBACF;gBACH,CAAC;aAAA;YAED,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;KAAA;IAGD,MAAM,CAAO,IAAI,CAAI,EAAU,EAAE,KAAS;;YACxC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;KAAA;CAEF;AAjHD,wCAiHC"}
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":";;;;AAgBA,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"}
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,6 @@
1
+ /**
2
+ * Waits a certain number of ms before resolving the promise.
3
+ *
4
+ * @param ms
5
+ */
6
+ export declare function waitForMs(ms: number): Promise<void>;
@@ -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"}
@@ -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
  *
@@ -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,4 @@
1
+ export * from './tree';
2
+ export * from './tree.expand';
3
+ export * from './tree.flatten';
4
+ export * from './tree.array';
@@ -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