@dereekb/util 1.2.0 → 3.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 (236) hide show
  1. package/CHANGELOG.md +54 -9
  2. package/README.md +1 -1
  3. package/package.json +8 -5
  4. package/src/index.js +2 -2
  5. package/src/index.js.map +1 -1
  6. package/src/lib/array/array.boolean.d.ts +4 -2
  7. package/src/lib/array/array.boolean.js +11 -1
  8. package/src/lib/array/array.boolean.js.map +1 -1
  9. package/src/lib/array/array.d.ts +24 -2
  10. package/src/lib/array/array.index.d.ts +1 -1
  11. package/src/lib/array/array.js +37 -2
  12. package/src/lib/array/array.js.map +1 -1
  13. package/src/lib/array/array.limit.d.ts +1 -1
  14. package/src/lib/array/array.make.d.ts +1 -1
  15. package/src/lib/array/array.make.js +2 -2
  16. package/src/lib/array/array.make.js.map +1 -1
  17. package/src/lib/array/array.map.d.ts +1 -1
  18. package/src/lib/array/array.set.d.ts +2 -16
  19. package/src/lib/array/array.set.js +21 -55
  20. package/src/lib/array/array.set.js.map +1 -1
  21. package/src/lib/array/array.string.d.ts +7 -5
  22. package/src/lib/array/array.string.js +14 -4
  23. package/src/lib/array/array.string.js.map +1 -1
  24. package/src/lib/array/array.unique.d.ts +1 -1
  25. package/src/lib/array/array.value.d.ts +15 -1
  26. package/src/lib/array/array.value.js +21 -1
  27. package/src/lib/array/array.value.js.map +1 -1
  28. package/src/lib/array/index.js +12 -12
  29. package/src/lib/array/index.js.map +1 -1
  30. package/src/lib/assertion/index.js +5 -5
  31. package/src/lib/assertion/index.js.map +1 -1
  32. package/src/lib/auth/auth.role.claims.d.ts +98 -0
  33. package/src/lib/auth/auth.role.claims.js +93 -0
  34. package/src/lib/auth/auth.role.claims.js.map +1 -0
  35. package/src/lib/auth/auth.role.d.ts +22 -0
  36. package/src/lib/auth/auth.role.js +17 -0
  37. package/src/lib/auth/auth.role.js.map +1 -0
  38. package/src/lib/auth/index.d.ts +2 -0
  39. package/src/lib/auth/index.js +6 -0
  40. package/src/lib/auth/index.js.map +1 -0
  41. package/src/lib/contact/index.js +3 -3
  42. package/src/lib/contact/index.js.map +1 -1
  43. package/src/lib/date/date.d.ts +1 -1
  44. package/src/lib/date/date.time.d.ts +4 -2
  45. package/src/lib/date/date.time.js +13 -1
  46. package/src/lib/date/date.time.js.map +1 -1
  47. package/src/lib/date/index.js +2 -2
  48. package/src/lib/date/index.js.map +1 -1
  49. package/src/lib/error/error.d.ts +6 -1
  50. package/src/lib/error/error.js +8 -1
  51. package/src/lib/error/error.js.map +1 -1
  52. package/src/lib/error/error.server.d.ts +5 -12
  53. package/src/lib/error/error.server.js.map +1 -1
  54. package/src/lib/error/index.js +2 -2
  55. package/src/lib/error/index.js.map +1 -1
  56. package/src/lib/filter/index.js +1 -1
  57. package/src/lib/filter/index.js.map +1 -1
  58. package/src/lib/function/function.forward.d.ts +9 -0
  59. package/src/lib/function/function.forward.js +18 -0
  60. package/src/lib/function/function.forward.js.map +1 -0
  61. package/src/lib/function/index.d.ts +1 -0
  62. package/src/lib/function/index.js +5 -0
  63. package/src/lib/function/index.js.map +1 -0
  64. package/src/lib/getter/getter.cache.d.ts +38 -0
  65. package/src/lib/getter/getter.cache.js +23 -0
  66. package/src/lib/getter/getter.cache.js.map +1 -0
  67. package/src/lib/getter/getter.d.ts +61 -0
  68. package/src/lib/getter/getter.js +48 -0
  69. package/src/lib/getter/getter.js.map +1 -0
  70. package/src/lib/getter/getter.map.d.ts +15 -0
  71. package/src/lib/getter/getter.map.js +24 -0
  72. package/src/lib/getter/getter.map.js.map +1 -0
  73. package/src/lib/getter/index.d.ts +3 -0
  74. package/src/lib/getter/index.js +7 -0
  75. package/src/lib/getter/index.js.map +1 -0
  76. package/src/lib/grouping.d.ts +4 -4
  77. package/src/lib/index.d.ts +9 -5
  78. package/src/lib/index.js +31 -28
  79. package/src/lib/index.js.map +1 -1
  80. package/src/lib/iterable/index.d.ts +2 -0
  81. package/src/lib/iterable/index.js +6 -0
  82. package/src/lib/iterable/index.js.map +1 -0
  83. package/src/lib/iterable/iterable.d.ts +53 -0
  84. package/src/lib/iterable/iterable.js +113 -0
  85. package/src/lib/iterable/iterable.js.map +1 -0
  86. package/src/lib/iterable/iterable.map.d.ts +8 -0
  87. package/src/lib/iterable/iterable.map.js +18 -0
  88. package/src/lib/iterable/iterable.map.js.map +1 -0
  89. package/src/lib/iterate.js +1 -1
  90. package/src/lib/key.d.ts +1 -1
  91. package/src/lib/map/index.d.ts +2 -0
  92. package/src/lib/map/index.js +6 -0
  93. package/src/lib/map/index.js.map +1 -0
  94. package/src/lib/map/map.d.ts +9 -0
  95. package/src/lib/map/map.intersection.d.ts +15 -0
  96. package/src/lib/map/map.intersection.js +24 -0
  97. package/src/lib/map/map.intersection.js.map +1 -0
  98. package/src/lib/map/map.js +17 -0
  99. package/src/lib/map/map.js.map +1 -0
  100. package/src/lib/misc/host.d.ts +5 -0
  101. package/src/lib/misc/host.js +13 -0
  102. package/src/lib/misc/host.js.map +1 -0
  103. package/src/lib/misc/index.d.ts +1 -0
  104. package/src/lib/misc/index.js +5 -0
  105. package/src/lib/misc/index.js.map +1 -0
  106. package/src/lib/model/index.d.ts +3 -0
  107. package/src/lib/model/index.js +7 -0
  108. package/src/lib/model/index.js.map +1 -0
  109. package/src/lib/model/model.conversion.d.ts +63 -0
  110. package/src/lib/model/model.conversion.js +66 -0
  111. package/src/lib/model/model.conversion.js.map +1 -0
  112. package/src/lib/model/model.copy.d.ts +16 -0
  113. package/src/lib/model/model.copy.js +20 -0
  114. package/src/lib/model/model.copy.js.map +1 -0
  115. package/src/lib/{model.d.ts → model/model.d.ts} +2 -2
  116. package/src/lib/{model.js → model/model.js} +3 -3
  117. package/src/lib/model/model.js.map +1 -0
  118. package/src/lib/number/factory.d.ts +22 -0
  119. package/src/lib/number/factory.js +22 -0
  120. package/src/lib/number/factory.js.map +1 -0
  121. package/src/lib/number/index.d.ts +3 -0
  122. package/src/lib/number/index.js +7 -0
  123. package/src/lib/number/index.js.map +1 -0
  124. package/src/lib/number/random.d.ts +13 -0
  125. package/src/lib/number/random.js +22 -0
  126. package/src/lib/number/random.js.map +1 -0
  127. package/src/lib/{number.d.ts → number/round.d.ts} +0 -13
  128. package/src/lib/{number.js → number/round.js} +2 -20
  129. package/src/lib/number/round.js.map +1 -0
  130. package/src/lib/object/index.d.ts +1 -0
  131. package/src/lib/object/index.js +4 -3
  132. package/src/lib/object/index.js.map +1 -1
  133. package/src/lib/object/object.d.ts +69 -8
  134. package/src/lib/object/object.equal.d.ts +1 -1
  135. package/src/lib/object/object.equal.js +3 -3
  136. package/src/lib/object/object.equal.js.map +1 -1
  137. package/src/lib/object/object.js +117 -11
  138. package/src/lib/object/object.js.map +1 -1
  139. package/src/lib/object/object.map.d.ts +35 -0
  140. package/src/lib/object/object.map.js +40 -0
  141. package/src/lib/object/object.map.js.map +1 -0
  142. package/src/lib/page/index.js +3 -3
  143. package/src/lib/page/index.js.map +1 -1
  144. package/src/lib/page/page.d.ts +1 -1
  145. package/src/lib/page/page.filter.js +1 -1
  146. package/src/lib/promise/index.d.ts +3 -0
  147. package/src/lib/promise/index.js +7 -4
  148. package/src/lib/promise/index.js.map +1 -1
  149. package/src/lib/promise/is.d.ts +7 -0
  150. package/src/lib/promise/is.js +15 -0
  151. package/src/lib/promise/is.js.map +1 -0
  152. package/src/lib/promise/map.d.ts +10 -0
  153. package/src/lib/promise/map.js +14 -0
  154. package/src/lib/promise/map.js.map +1 -0
  155. package/src/lib/promise/promise.d.ts +13 -1
  156. package/src/lib/promise/promise.js +26 -8
  157. package/src/lib/promise/promise.js.map +1 -1
  158. package/src/lib/promise/promise.loop.d.ts +18 -3
  159. package/src/lib/promise/promise.loop.js +18 -2
  160. package/src/lib/promise/promise.loop.js.map +1 -1
  161. package/src/lib/promise/promise.ref.d.ts +10 -0
  162. package/src/lib/promise/promise.ref.js +19 -0
  163. package/src/lib/promise/promise.ref.js.map +1 -0
  164. package/src/lib/promise/wait.js +2 -2
  165. package/src/lib/promise/wait.js.map +1 -1
  166. package/src/lib/relation/index.js +1 -1
  167. package/src/lib/relation/index.js.map +1 -1
  168. package/src/lib/relation/relation.js +2 -2
  169. package/src/lib/set/index.d.ts +4 -0
  170. package/src/lib/set/index.js +8 -0
  171. package/src/lib/set/index.js.map +1 -0
  172. package/src/lib/set/set.allowed.d.ts +23 -0
  173. package/src/lib/set/set.allowed.js +29 -0
  174. package/src/lib/set/set.allowed.js.map +1 -0
  175. package/src/lib/set/set.d.ts +53 -0
  176. package/src/lib/{set.hashset.d.ts → set/set.hashset.d.ts} +2 -2
  177. package/src/lib/{set.hashset.js → set/set.hashset.js} +0 -0
  178. package/src/lib/set/set.hashset.js.map +1 -0
  179. package/src/lib/set/set.js +114 -0
  180. package/src/lib/set/set.js.map +1 -0
  181. package/src/lib/set/set.maybe.d.ts +11 -0
  182. package/src/lib/set/set.maybe.js +22 -0
  183. package/src/lib/set/set.maybe.js.map +1 -0
  184. package/src/lib/sort.d.ts +1 -4
  185. package/src/lib/sort.js +3 -8
  186. package/src/lib/sort.js.map +1 -1
  187. package/src/lib/storage/index.js +4 -4
  188. package/src/lib/storage/index.js.map +1 -1
  189. package/src/lib/storage/storage.memory.d.ts +1 -1
  190. package/src/lib/storage/storage.object.d.ts +1 -1
  191. package/src/lib/string.d.ts +9 -2
  192. package/src/lib/string.js +11 -1
  193. package/src/lib/string.js.map +1 -1
  194. package/src/lib/tree/index.js +4 -4
  195. package/src/lib/tree/index.js.map +1 -1
  196. package/src/lib/tree/tree.expand.d.ts +1 -1
  197. package/src/lib/type.d.ts +17 -1
  198. package/src/lib/value/equal.d.ts +41 -0
  199. package/src/lib/value/equal.js +56 -0
  200. package/src/lib/value/equal.js.map +1 -0
  201. package/src/lib/value/index.d.ts +4 -0
  202. package/src/lib/value/index.js +8 -0
  203. package/src/lib/value/index.js.map +1 -0
  204. package/src/lib/value/map.d.ts +13 -0
  205. package/src/lib/{map.js → value/map.js} +0 -0
  206. package/src/lib/value/map.js.map +1 -0
  207. package/src/lib/{value.d.ts → value/maybe.d.ts} +45 -2
  208. package/src/lib/value/maybe.js +78 -0
  209. package/src/lib/value/maybe.js.map +1 -0
  210. package/src/lib/value/modifier.d.ts +58 -0
  211. package/src/lib/value/modifier.js +69 -0
  212. package/src/lib/value/modifier.js.map +1 -0
  213. package/src/test/index.d.ts +1 -0
  214. package/src/test/index.js +3 -2
  215. package/src/test/index.js.map +1 -1
  216. package/src/test/jest.d.ts +21 -1
  217. package/src/test/jest.function.d.ts +9 -0
  218. package/src/test/jest.function.js +14 -0
  219. package/src/test/jest.function.js.map +1 -0
  220. package/src/test/jest.js +64 -36
  221. package/src/test/jest.js.map +1 -1
  222. package/src/test/jest.wrap.js +5 -5
  223. package/src/test/jest.wrap.js.map +1 -1
  224. package/src/lib/getter.d.ts +0 -26
  225. package/src/lib/getter.js +0 -13
  226. package/src/lib/getter.js.map +0 -1
  227. package/src/lib/map.d.ts +0 -2
  228. package/src/lib/map.js.map +0 -1
  229. package/src/lib/model.js.map +0 -1
  230. package/src/lib/number.js.map +0 -1
  231. package/src/lib/set.d.ts +0 -0
  232. package/src/lib/set.hashset.js.map +0 -1
  233. package/src/lib/set.js +0 -2
  234. package/src/lib/set.js.map +0 -1
  235. package/src/lib/value.js +0 -28
  236. package/src/lib/value.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { FieldOfType } from "../key";
2
- import { Maybe } from "../value";
2
+ import { Maybe } from "../value/maybe";
3
+ export declare function objectHasNoKeys(obj: object): obj is {};
3
4
  export declare function objectHasKey<T, K extends keyof T = keyof T>(obj: T, key: K): boolean;
4
5
  export declare function objectHasKey<T>(obj: T, key: string): boolean;
5
6
  export declare function applyToMultipleFields<T extends object>(value: any, fields: FieldOfType<T>[]): Partial<T>;
@@ -8,8 +9,46 @@ export declare function mapToObject<T, K extends PropertyKey>(map: Map<K, T>): {
8
9
  };
9
10
  export interface FilterFromPOJO<T extends object> {
10
11
  copy?: boolean;
11
- filter?: Omit<FilterKeyValueTuples<T>, 'inverse'>;
12
+ filter?: Omit<KeyValueTupleFilter<T>, 'inverse'>;
12
13
  }
14
+ /**
15
+ * Returns a copy of the input object with all null and undefined values filtered from it.
16
+ *
17
+ * @param obj
18
+ * @returns
19
+ */
20
+ export declare function filterNullAndUndefinedValues<T extends object = object>(obj: T): T;
21
+ /**
22
+ * Returns a copy of the input object with all undefined values filtered from it.
23
+ *
24
+ * @param obj
25
+ * @returns
26
+ */
27
+ export declare function filterUndefinedValues<T extends object = object>(obj: T, filterNull?: boolean): T;
28
+ /**
29
+ * Returns all keys that are not associated with an undefined value.
30
+ *
31
+ * @param obj
32
+ * @returns
33
+ */
34
+ export declare function allNonUndefinedKeys<T extends object = Object>(obj: T): (keyof T)[];
35
+ export declare function allMaybeSoKeys<T extends object = Object>(obj: T): (keyof T)[];
36
+ /**
37
+ * Finds keys from the POJO that meet the filter.
38
+ *
39
+ * @param obj
40
+ * @param filter
41
+ * @returns
42
+ */
43
+ export declare function findPOJOKeys<T extends object = object>(obj: T, filter: FilterKeyValueTuplesInput<T>): (keyof T)[];
44
+ /**
45
+ * Finds and counts the number of keys from the POJO that meet the filter.
46
+ *
47
+ * @param obj
48
+ * @param filter
49
+ * @returns
50
+ */
51
+ export declare function countPOJOKeys<T extends object = object>(obj: T, filter?: FilterKeyValueTuplesInput<T>): number;
13
52
  /**
14
53
  * Removes values, per the the filter config, from the input object.
15
54
  *
@@ -18,11 +57,32 @@ export interface FilterFromPOJO<T extends object> {
18
57
  */
19
58
  export declare function filterFromPOJO<T extends object = object>(obj: T, { copy, filter }?: FilterFromPOJO<T>): T;
20
59
  export declare function assignValuesToPOJO<T extends object = object>(target: T, obj: T, filter?: FilterKeyValueTuplesInput<T>): T;
60
+ /**
61
+ * Reads all values from the pojo based on the filter and puts them into an array.
62
+ *
63
+ * @param target
64
+ * @param filter
65
+ * @returns
66
+ */
67
+ export declare function valuesFromPOJO<O = any, I extends object = object>(target: I, filter?: FilterKeyValueTuplesInput<I>): O[];
21
68
  export declare type KeyValueTuple<T extends object = object, K extends keyof T = keyof T> = [K, T[K]];
69
+ export declare function allKeyValueTuples<T extends object = object, K extends keyof T = keyof T>(obj: T): KeyValueTuple<T, K>[];
22
70
  export declare enum KeyValueTypleValueFilter {
71
+ /**
72
+ * No filter
73
+ */
23
74
  NONE = 0,
75
+ /**
76
+ * Only undefined values.
77
+ */
24
78
  UNDEFINED = 1,
79
+ /**
80
+ * All values that are null or undefined.
81
+ */
25
82
  NULL = 2,
83
+ /**
84
+ * All values that are falsy.
85
+ */
26
86
  FALSY = 3
27
87
  }
28
88
  export declare type ForEachKeyValueFunction<T extends object = object, K extends keyof T = keyof T> = (tuple: KeyValueTuple<T, K>, index: number) => void;
@@ -31,14 +91,15 @@ export interface ForEachKeyValue<T extends object = object, K extends keyof T =
31
91
  forEach: ForEachKeyValueFunction<T, K>;
32
92
  }
33
93
  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> {
94
+ export declare function filterKeyValueTuples<T extends object = object, K extends keyof T = keyof T>(obj: T, filter?: FilterKeyValueTuplesInput<T, K>): KeyValueTuple<T, K>[];
95
+ export interface KeyValueTupleFilter<T extends object = object, K extends keyof T = keyof T> {
37
96
  valueFilter?: KeyValueTypleValueFilter;
38
97
  invertFilter?: boolean;
39
98
  keysFilter?: K[];
40
99
  }
41
- export declare function filterKeyValueTuplesFn<T extends object = object, K extends keyof T = keyof T>(input: FilterKeyValueTuplesInput<T, K>): (tuples: KeyValueTuple<T, K>) => boolean;
100
+ export declare type FilterKeyValueTuplesInput<T extends object = object, K extends keyof T = keyof T> = KeyValueTypleValueFilter | KeyValueTupleFilter<T, K>;
101
+ export declare type FilterKeyValueTupleFunction<T extends object = object, K extends keyof T = keyof T> = (tuples: KeyValueTuple<T, K>) => boolean;
102
+ export declare function filterKeyValueTupleFunction<T extends object = object, K extends keyof T = keyof T>(input: FilterKeyValueTuplesInput<T, K>): FilterKeyValueTupleFunction<T, K>;
42
103
  /**
43
104
  * Recursively function that returns true if the input is not an object or if every key on the object is empty.
44
105
  *
@@ -50,7 +111,7 @@ export declare function objectIsEmpty<T extends object>(obj: Maybe<T>): boolean;
50
111
  *
51
112
  * @param objects
52
113
  */
53
- export declare function mergeObjects<T extends object>(objects: Maybe<Partial<T>>[], filter?: FilterKeyValueTuples<T>): Partial<T>;
114
+ export declare function mergeObjects<T extends object>(objects: Maybe<Partial<T>>[], filter?: KeyValueTupleFilter<T>): Partial<T>;
54
115
  /**
55
116
  * Assigns all undefined valeus from one or more objects into the target object.
56
117
  *
@@ -58,5 +119,5 @@ export declare function mergeObjects<T extends object>(objects: Maybe<Partial<T>
58
119
  */
59
120
  export declare function overrideInObject<T extends object>(target: Partial<T>, { from, filter }: {
60
121
  from: Partial<T>[];
61
- filter?: FilterKeyValueTuples<T>;
122
+ filter?: KeyValueTupleFilter<T>;
62
123
  }): Partial<T>;
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Performs a deep comparison to check if all values on the input filters are equal.
3
3
  */
4
- export declare function areEqualObjectValues<F>(a: F, b: F): boolean;
4
+ export declare function areEqualPOJOValues<F>(a: F, b: F): boolean;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areEqualObjectValues = void 0;
3
+ exports.areEqualPOJOValues = void 0;
4
4
  const lodash_1 = require("lodash");
5
5
  /**
6
6
  * Performs a deep comparison to check if all values on the input filters are equal.
7
7
  */
8
- function areEqualObjectValues(a, b) {
8
+ function areEqualPOJOValues(a, b) {
9
9
  return (0, lodash_1.isEqual)(a, b);
10
10
  }
11
- exports.areEqualObjectValues = areEqualObjectValues;
11
+ exports.areEqualPOJOValues = areEqualPOJOValues;
12
12
  //# sourceMappingURL=object.equal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.equal.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAEjC;;GAEG;AACH,SAAgB,oBAAoB,CAAI,CAAI,EAAE,CAAI;IAChD,OAAO,IAAA,gBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAFD,oDAEC"}
1
+ {"version":3,"file":"object.equal.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.equal.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAEjC;;GAEG;AACH,SAAgB,kBAAkB,CAAI,CAAI,EAAE,CAAI;IAC9C,OAAO,IAAA,gBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAFD,gDAEC"}
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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");
3
+ exports.overrideInObject = exports.mergeObjects = exports.objectIsEmpty = exports.filterKeyValueTupleFunction = exports.filterKeyValueTuples = exports.forEachKeyValue = exports.KeyValueTypleValueFilter = exports.allKeyValueTuples = exports.valuesFromPOJO = exports.assignValuesToPOJO = exports.filterFromPOJO = exports.countPOJOKeys = exports.findPOJOKeys = exports.allMaybeSoKeys = exports.allNonUndefinedKeys = exports.filterUndefinedValues = exports.filterNullAndUndefinedValues = exports.mapToObject = exports.applyToMultipleFields = exports.objectHasKey = exports.objectHasNoKeys = void 0;
4
+ const maybe_1 = require("../value/maybe");
5
5
  const array_value_1 = require("../array/array.value");
6
6
  const filter_1 = require("../filter/filter");
7
+ function objectHasNoKeys(obj) {
8
+ return (Object.keys(obj).length === 0);
9
+ }
10
+ exports.objectHasNoKeys = objectHasNoKeys;
7
11
  function objectHasKey(obj, key) {
8
12
  return Object.prototype.hasOwnProperty.call(obj, key);
9
13
  }
@@ -24,6 +28,74 @@ function mapToObject(map) {
24
28
  return object;
25
29
  }
26
30
  exports.mapToObject = mapToObject;
31
+ /**
32
+ * Returns a copy of the input object with all null and undefined values filtered from it.
33
+ *
34
+ * @param obj
35
+ * @returns
36
+ */
37
+ function filterNullAndUndefinedValues(obj) {
38
+ return filterUndefinedValues(obj, true);
39
+ }
40
+ exports.filterNullAndUndefinedValues = filterNullAndUndefinedValues;
41
+ /**
42
+ * Returns a copy of the input object with all undefined values filtered from it.
43
+ *
44
+ * @param obj
45
+ * @returns
46
+ */
47
+ function filterUndefinedValues(obj, filterNull = false) {
48
+ return filterFromPOJO(obj, { copy: true, filter: { valueFilter: (filterNull) ? KeyValueTypleValueFilter.NULL : KeyValueTypleValueFilter.UNDEFINED } });
49
+ }
50
+ exports.filterUndefinedValues = filterUndefinedValues;
51
+ /**
52
+ * Returns all keys that are not associated with an undefined value.
53
+ *
54
+ * @param obj
55
+ * @returns
56
+ */
57
+ function allNonUndefinedKeys(obj) {
58
+ return findPOJOKeys(obj, { valueFilter: KeyValueTypleValueFilter.UNDEFINED });
59
+ }
60
+ exports.allNonUndefinedKeys = allNonUndefinedKeys;
61
+ function allMaybeSoKeys(obj) {
62
+ return findPOJOKeys(obj, { valueFilter: KeyValueTypleValueFilter.NULL });
63
+ }
64
+ exports.allMaybeSoKeys = allMaybeSoKeys;
65
+ /**
66
+ * Finds keys from the POJO that meet the filter.
67
+ *
68
+ * @param obj
69
+ * @param filter
70
+ * @returns
71
+ */
72
+ function findPOJOKeys(obj, filter) {
73
+ const keys = [];
74
+ forEachKeyValue(obj, {
75
+ filter,
76
+ forEach: ([key]) => {
77
+ keys.push(key);
78
+ }
79
+ });
80
+ return keys;
81
+ }
82
+ exports.findPOJOKeys = findPOJOKeys;
83
+ /**
84
+ * Finds and counts the number of keys from the POJO that meet the filter.
85
+ *
86
+ * @param obj
87
+ * @param filter
88
+ * @returns
89
+ */
90
+ function countPOJOKeys(obj, filter = KeyValueTypleValueFilter.UNDEFINED) {
91
+ let count = 0;
92
+ forEachKeyValue(obj, {
93
+ filter,
94
+ forEach: () => count += 1
95
+ });
96
+ return count;
97
+ }
98
+ exports.countPOJOKeys = countPOJOKeys;
27
99
  /**
28
100
  * Removes values, per the the filter config, from the input object.
29
101
  *
@@ -53,30 +125,64 @@ function assignValuesToPOJO(target, obj, filter = KeyValueTypleValueFilter.UNDEF
53
125
  return obj;
54
126
  }
55
127
  exports.assignValuesToPOJO = assignValuesToPOJO;
128
+ /**
129
+ * Reads all values from the pojo based on the filter and puts them into an array.
130
+ *
131
+ * @param target
132
+ * @param filter
133
+ * @returns
134
+ */
135
+ function valuesFromPOJO(target, filter = KeyValueTypleValueFilter.UNDEFINED) {
136
+ const values = [];
137
+ forEachKeyValue(target, {
138
+ filter,
139
+ forEach: ([key, value]) => {
140
+ values.push(value);
141
+ }
142
+ });
143
+ return values;
144
+ }
145
+ exports.valuesFromPOJO = valuesFromPOJO;
146
+ function allKeyValueTuples(obj) {
147
+ return Object.entries(obj);
148
+ }
149
+ exports.allKeyValueTuples = allKeyValueTuples;
56
150
  var KeyValueTypleValueFilter;
57
151
  (function (KeyValueTypleValueFilter) {
152
+ /**
153
+ * No filter
154
+ */
58
155
  KeyValueTypleValueFilter[KeyValueTypleValueFilter["NONE"] = 0] = "NONE";
156
+ /**
157
+ * Only undefined values.
158
+ */
59
159
  KeyValueTypleValueFilter[KeyValueTypleValueFilter["UNDEFINED"] = 1] = "UNDEFINED";
160
+ /**
161
+ * All values that are null or undefined.
162
+ */
60
163
  KeyValueTypleValueFilter[KeyValueTypleValueFilter["NULL"] = 2] = "NULL";
164
+ /**
165
+ * All values that are falsy.
166
+ */
61
167
  KeyValueTypleValueFilter[KeyValueTypleValueFilter["FALSY"] = 3] = "FALSY";
62
168
  })(KeyValueTypleValueFilter = exports.KeyValueTypleValueFilter || (exports.KeyValueTypleValueFilter = {}));
63
169
  function forEachKeyValue(obj, { forEach, filter }) {
64
- const keyValues = toKeyValueTuples(obj, filter);
170
+ const keyValues = filterKeyValueTuples(obj, filter);
65
171
  keyValues.forEach(forEach);
66
172
  }
67
173
  exports.forEachKeyValue = forEachKeyValue;
68
- function toKeyValueTuples(obj, filter) {
69
- let pairs = Object.entries(obj);
174
+ function filterKeyValueTuples(obj, filter) {
175
+ let pairs = allKeyValueTuples(obj);
70
176
  if (filter) {
71
- const filterFn = filterKeyValueTuplesFn(filter);
177
+ const filterFn = filterKeyValueTupleFunction(filter);
72
178
  pairs = pairs.filter(filterFn);
73
179
  }
74
180
  return pairs;
75
181
  }
76
- exports.toKeyValueTuples = toKeyValueTuples;
77
- function filterKeyValueTuplesFn(input) {
182
+ exports.filterKeyValueTuples = filterKeyValueTuples;
183
+ function filterKeyValueTupleFunction(input) {
78
184
  const filter = (typeof input === 'object') ? input : { valueFilter: input };
79
- const { valueFilter: type, invertFilter: inverseFilter, keysFilter } = filter;
185
+ const { valueFilter: type, invertFilter: inverseFilter = false, keysFilter } = filter;
80
186
  let filterFn;
81
187
  switch (type) {
82
188
  case KeyValueTypleValueFilter.UNDEFINED:
@@ -100,7 +206,7 @@ function filterKeyValueTuplesFn(input) {
100
206
  }
101
207
  return (0, filter_1.invertFilter)(filterFn, inverseFilter);
102
208
  }
103
- exports.filterKeyValueTuplesFn = filterKeyValueTuplesFn;
209
+ exports.filterKeyValueTupleFunction = filterKeyValueTupleFunction;
104
210
  /**
105
211
  * Recursively function that returns true if the input is not an object or if every key on the object is empty.
106
212
  *
@@ -113,7 +219,7 @@ function objectIsEmpty(obj) {
113
219
  for (let i = 0; i < keys.length; i += 1) {
114
220
  const key = keys[i];
115
221
  const value = obj[key];
116
- const isEmpty = (typeof obj === 'object') ? objectIsEmpty(value) : !(0, value_1.hasValueOrNotEmpty)(value);
222
+ const isEmpty = (typeof obj === 'object') ? objectIsEmpty(value) : !(0, maybe_1.hasValueOrNotEmpty)(value);
117
223
  if (!isEmpty) {
118
224
  return false;
119
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * An object with values of a specific type keyed by either string or number or symbols.
3
+ */
4
+ export declare type ObjectMap<T> = {
5
+ [key: string | number | symbol]: T;
6
+ };
7
+ /**
8
+ * An object with values of a specific type keyed to string values.
9
+ */
10
+ export declare type StringObjectMap<T> = {
11
+ [key: string]: T;
12
+ };
13
+ export declare type MappedObjectMap<M extends ObjectMap<any>, O> = {
14
+ [key in keyof M]: O;
15
+ };
16
+ /**
17
+ * Converts an ObjectMap into a Map.
18
+ *
19
+ * @param object
20
+ * @returns
21
+ */
22
+ export declare function objectToMap<T>(object: ObjectMap<T>): Map<string, T>;
23
+ /**
24
+ * Converts an ObjectMap into tuples.
25
+ *
26
+ * @param object
27
+ * @returns
28
+ */
29
+ export declare function objectToTuples<T>(object: ObjectMap<T>): [string, T][];
30
+ /**
31
+ * Maps the values of an ObjectMap from one type to another and returns an ObjectMap containing that type.
32
+ *
33
+ * @param object
34
+ */
35
+ export declare function mapObjectMap<M extends ObjectMap<I>, I = any, O = any>(object: M, mapFn: <K extends keyof M>(value: M[K], key: K) => O): MappedObjectMap<M, O>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapObjectMap = exports.objectToTuples = exports.objectToMap = void 0;
4
+ /**
5
+ * Converts an ObjectMap into a Map.
6
+ *
7
+ * @param object
8
+ * @returns
9
+ */
10
+ function objectToMap(object) {
11
+ return new Map(objectToTuples(object));
12
+ }
13
+ exports.objectToMap = objectToMap;
14
+ /**
15
+ * Converts an ObjectMap into tuples.
16
+ *
17
+ * @param object
18
+ * @returns
19
+ */
20
+ function objectToTuples(object) {
21
+ const keys = Object.keys(object);
22
+ return keys.map(x => ([x, object[x]]));
23
+ }
24
+ exports.objectToTuples = objectToTuples;
25
+ /**
26
+ * Maps the values of an ObjectMap from one type to another and returns an ObjectMap containing that type.
27
+ *
28
+ * @param object
29
+ */
30
+ function mapObjectMap(object, mapFn) {
31
+ const mappedObject = {};
32
+ const keys = Object.keys(object);
33
+ keys.forEach((key) => {
34
+ const value = object[key];
35
+ mappedObject[key] = mapFn(value, key);
36
+ });
37
+ return mappedObject;
38
+ }
39
+ exports.mapObjectMap = mapObjectMap;
40
+ //# sourceMappingURL=object.map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.map.ts"],"names":[],"mappings":";;;AAkBA;;;;;GAKG;AACH,SAAgB,WAAW,CAAI,MAAoB;IACjD,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,kCAEC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAI,MAAoB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAA2C,MAAS,EAAE,KAAoD;IACpI,MAAM,YAAY,GAA0B,EAA2B,CAAC;IAExE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,CAAoB,GAAM,EAAE,EAAE;QACzC,MAAM,KAAK,GAAS,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC;AAVD,oCAUC"}
@@ -1,7 +1,7 @@
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("./page"), exports);
5
- (0, tslib_1.__exportStar)(require("./page.calculator"), exports);
6
- (0, tslib_1.__exportStar)(require("./page.filter"), exports);
4
+ tslib_1.__exportStar(require("./page"), exports);
5
+ tslib_1.__exportStar(require("./page.calculator"), exports);
6
+ tslib_1.__exportStar(require("./page.filter"), exports);
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,iEAAkC;AAClC,6DAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,4DAAkC;AAClC,wDAA8B"}
@@ -1,4 +1,4 @@
1
- import { Maybe } from "../value";
1
+ import { Maybe } from "../value/maybe";
2
2
  /**
3
3
  * Page value used when no list items have been loaded.
4
4
  */
@@ -27,7 +27,7 @@ exports.filteredPage = filteredPage;
27
27
  */
28
28
  function iterateFilteredPages(inputPage, loadFn, iterFn) {
29
29
  var _a, _b;
30
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
31
31
  let currentPage = (_a = inputPage === null || inputPage === void 0 ? void 0 : inputPage.page) !== null && _a !== void 0 ? _a : 0;
32
32
  let hasMore = true;
33
33
  let count = 0;
@@ -1,4 +1,7 @@
1
+ export * from './is';
1
2
  export * from './poll';
3
+ export * from './map';
2
4
  export * from './promise';
3
5
  export * from './promise.loop';
6
+ export * from './promise.ref';
4
7
  export * from './wait';
@@ -1,8 +1,11 @@
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);
5
- (0, tslib_1.__exportStar)(require("./promise"), exports);
6
- (0, tslib_1.__exportStar)(require("./promise.loop"), exports);
7
- (0, tslib_1.__exportStar)(require("./wait"), exports);
4
+ tslib_1.__exportStar(require("./is"), exports);
5
+ tslib_1.__exportStar(require("./poll"), exports);
6
+ tslib_1.__exportStar(require("./map"), exports);
7
+ tslib_1.__exportStar(require("./promise"), exports);
8
+ tslib_1.__exportStar(require("./promise.loop"), exports);
9
+ tslib_1.__exportStar(require("./promise.ref"), exports);
10
+ tslib_1.__exportStar(require("./wait"), exports);
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqB;AACrB,iDAAuB;AACvB,gDAAsB;AACtB,oDAA0B;AAC1B,yDAA+B;AAC/B,wDAA8B;AAC9B,iDAAuB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Whether or not the input is function-like.
3
+ *
4
+ * @param obj
5
+ * @returns
6
+ */
7
+ export declare function isPromise<T, S>(obj: PromiseLike<T> | S): obj is PromiseLike<T>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPromise = void 0;
4
+ /**
5
+ * Whether or not the input is function-like.
6
+ *
7
+ * @param obj
8
+ * @returns
9
+ */
10
+ function isPromise(obj) {
11
+ // https://github.com/then/is-promise
12
+ return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof (obj.then) === 'function';
13
+ }
14
+ exports.isPromise = isPromise;
15
+ //# sourceMappingURL=is.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/is.ts"],"names":[],"mappings":";;;AACA;;;;;GAKG;AACH,SAAgB,SAAS,CAAO,GAAuB;IACrD,qCAAqC;IACrC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,IAAI,OAAO,CAAE,GAAW,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;AACtH,CAAC;AAHD,8BAGC"}
@@ -0,0 +1,10 @@
1
+ import { PromiseOrValue } from "./promise";
2
+ /**
3
+ * Performs a mapping function on the input PromiseOrValue value.
4
+ *
5
+ * @param input
6
+ * @param mapFn
7
+ */
8
+ export declare function mapPromiseOrValue<I, O>(input: Promise<I>, mapFn: (input: I) => O): Promise<O>;
9
+ export declare function mapPromiseOrValue<I, O>(input: I, mapFn: (input: I) => O): O;
10
+ export declare function mapPromiseOrValue<I, O>(input: PromiseOrValue<I>, mapFn: (input: I) => O): PromiseOrValue<O>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapPromiseOrValue = void 0;
4
+ const is_1 = require("./is");
5
+ function mapPromiseOrValue(input, mapFn) {
6
+ if ((0, is_1.isPromise)(input)) {
7
+ return input.then(mapFn);
8
+ }
9
+ else {
10
+ return mapFn(input);
11
+ }
12
+ }
13
+ exports.mapPromiseOrValue = mapPromiseOrValue;
14
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/map.ts"],"names":[],"mappings":";;;AAAA,6BAAiC;AAYjC,SAAgB,iBAAiB,CAAO,KAAwB,EAAE,KAAsB;IACtF,IAAI,IAAA,cAAS,EAAC,KAAK,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;SAAM;QACL,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;KACrB;AACH,CAAC;AAND,8CAMC"}
@@ -1,4 +1,6 @@
1
- import { Maybe } from "../value";
1
+ import { Maybe } from "../value/maybe";
2
+ export declare type PromiseOrValue<T> = Promise<T> | T;
3
+ export declare function asPromise<T>(input: PromiseOrValue<T>): Promise<T>;
2
4
  export declare type PromiseTaskFn<T, K = any> = (value: T, tryNumber?: number) => Promise<K>;
3
5
  export interface PerformTaskResult<O> {
4
6
  value: Maybe<O>;
@@ -25,11 +27,21 @@ export interface PerformTasksConfig<T = any> extends PerformTaskConfig<T> {
25
27
  */
26
28
  sequential?: boolean;
27
29
  }
30
+ export declare type ValuesTaskConfig<T = any> = Omit<PerformTasksConfig<T>, 'throwError'>;
28
31
  export declare class PromiseUtility {
29
32
  /**
30
33
  * Runs the task using the input config, and returns the value. Is always configured to throw the error if it fails.
31
34
  */
32
35
  static runTaskForValue<O>(taskFn: () => Promise<O>, config?: ValueTaskConfig<0>): Promise<Maybe<O>>;
36
+ /**
37
+ * Returns the task for each input value, and returns the values. Is always configured to throw the error if it fails.
38
+ *
39
+ * @param input
40
+ * @param taskFn
41
+ * @param config
42
+ * @returns
43
+ */
44
+ static runTasksForValues<T, K = any>(input: T[], taskFn: PromiseTaskFn<T, K>, config?: PerformTasksConfig<T>): Promise<K[]>;
33
45
  /**
34
46
  * Performs the input tasks, and will retry tasks if they fail, up to a certain point.
35
47
  *