@dereekb/util 0.0.1

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 (212) hide show
  1. package/README.md +7 -0
  2. package/package.json +10 -0
  3. package/src/index.d.ts +2 -0
  4. package/src/index.js +6 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/array/array.boolean.d.ts +28 -0
  7. package/src/lib/array/array.boolean.js +59 -0
  8. package/src/lib/array/array.boolean.js.map +1 -0
  9. package/src/lib/array/array.d.ts +60 -0
  10. package/src/lib/array/array.filter.d.ts +13 -0
  11. package/src/lib/array/array.filter.js +48 -0
  12. package/src/lib/array/array.filter.js.map +1 -0
  13. package/src/lib/array/array.js +149 -0
  14. package/src/lib/array/array.js.map +1 -0
  15. package/src/lib/array/array.limit.d.ts +13 -0
  16. package/src/lib/array/array.limit.js +19 -0
  17. package/src/lib/array/array.limit.js.map +1 -0
  18. package/src/lib/array/array.map.d.ts +18 -0
  19. package/src/lib/array/array.map.js +26 -0
  20. package/src/lib/array/array.map.js.map +1 -0
  21. package/src/lib/array/array.number.d.ts +21 -0
  22. package/src/lib/array/array.number.js +58 -0
  23. package/src/lib/array/array.number.js.map +1 -0
  24. package/src/lib/array/array.set.d.ts +20 -0
  25. package/src/lib/array/array.set.js +64 -0
  26. package/src/lib/array/array.set.js.map +1 -0
  27. package/src/lib/array/array.string.d.ts +8 -0
  28. package/src/lib/array/array.string.js +36 -0
  29. package/src/lib/array/array.string.js.map +1 -0
  30. package/src/lib/array/array.unique.d.ts +6 -0
  31. package/src/lib/array/array.unique.js +29 -0
  32. package/src/lib/array/array.unique.js.map +1 -0
  33. package/src/lib/array/array.value.d.ts +3 -0
  34. package/src/lib/array/array.value.js +17 -0
  35. package/src/lib/array/array.value.js.map +1 -0
  36. package/src/lib/array/index.d.ts +10 -0
  37. package/src/lib/array/index.js +14 -0
  38. package/src/lib/array/index.js.map +1 -0
  39. package/src/lib/assertion/assert.d.ts +15 -0
  40. package/src/lib/assertion/assert.error.d.ts +32 -0
  41. package/src/lib/assertion/assert.error.js +43 -0
  42. package/src/lib/assertion/assert.error.js.map +1 -0
  43. package/src/lib/assertion/assert.js +3 -0
  44. package/src/lib/assertion/assert.js.map +1 -0
  45. package/src/lib/assertion/assertion.d.ts +18 -0
  46. package/src/lib/assertion/assertion.generic.d.ts +3 -0
  47. package/src/lib/assertion/assertion.generic.js +10 -0
  48. package/src/lib/assertion/assertion.generic.js.map +1 -0
  49. package/src/lib/assertion/assertion.js +40 -0
  50. package/src/lib/assertion/assertion.js.map +1 -0
  51. package/src/lib/assertion/assertion.number.d.ts +3 -0
  52. package/src/lib/assertion/assertion.number.js +20 -0
  53. package/src/lib/assertion/assertion.number.js.map +1 -0
  54. package/src/lib/assertion/index.d.ts +5 -0
  55. package/src/lib/assertion/index.js +9 -0
  56. package/src/lib/assertion/index.js.map +1 -0
  57. package/src/lib/boolean.d.ts +5 -0
  58. package/src/lib/boolean.js +30 -0
  59. package/src/lib/boolean.js.map +1 -0
  60. package/src/lib/contact/domain.d.ts +16 -0
  61. package/src/lib/contact/domain.js +45 -0
  62. package/src/lib/contact/domain.js.map +1 -0
  63. package/src/lib/contact/email.d.ts +17 -0
  64. package/src/lib/contact/email.js +32 -0
  65. package/src/lib/contact/email.js.map +1 -0
  66. package/src/lib/contact/index.d.ts +3 -0
  67. package/src/lib/contact/index.js +7 -0
  68. package/src/lib/contact/index.js.map +1 -0
  69. package/src/lib/contact/phone.d.ts +8 -0
  70. package/src/lib/contact/phone.js +3 -0
  71. package/src/lib/contact/phone.js.map +1 -0
  72. package/src/lib/context/context.d.ts +1 -0
  73. package/src/lib/context/context.js +6 -0
  74. package/src/lib/context/context.js.map +1 -0
  75. package/src/lib/context/index.d.ts +0 -0
  76. package/src/lib/context/index.js +2 -0
  77. package/src/lib/context/index.js.map +1 -0
  78. package/src/lib/date/date.d.ts +52 -0
  79. package/src/lib/date/date.js +12 -0
  80. package/src/lib/date/date.js.map +1 -0
  81. package/src/lib/date/date.time.d.ts +29 -0
  82. package/src/lib/date/date.time.js +27 -0
  83. package/src/lib/date/date.time.js.map +1 -0
  84. package/src/lib/date/index.d.ts +2 -0
  85. package/src/lib/date/index.js +6 -0
  86. package/src/lib/date/index.js.map +1 -0
  87. package/src/lib/error/error.d.ts +30 -0
  88. package/src/lib/error/error.js +36 -0
  89. package/src/lib/error/error.js.map +1 -0
  90. package/src/lib/error/error.server.d.ts +37 -0
  91. package/src/lib/error/error.server.js +22 -0
  92. package/src/lib/error/error.server.js.map +1 -0
  93. package/src/lib/error/index.d.ts +2 -0
  94. package/src/lib/error/index.js +6 -0
  95. package/src/lib/error/index.js.map +1 -0
  96. package/src/lib/filter/filter.d.ts +5 -0
  97. package/src/lib/filter/filter.js +3 -0
  98. package/src/lib/filter/filter.js.map +1 -0
  99. package/src/lib/filter/index.d.ts +1 -0
  100. package/src/lib/filter/index.js +5 -0
  101. package/src/lib/filter/index.js.map +1 -0
  102. package/src/lib/getter.d.ts +16 -0
  103. package/src/lib/getter.js +19 -0
  104. package/src/lib/getter.js.map +1 -0
  105. package/src/lib/grouping.d.ts +98 -0
  106. package/src/lib/grouping.js +164 -0
  107. package/src/lib/grouping.js.map +1 -0
  108. package/src/lib/hash.d.ts +5 -0
  109. package/src/lib/hash.js +21 -0
  110. package/src/lib/hash.js.map +1 -0
  111. package/src/lib/index.d.ts +26 -0
  112. package/src/lib/index.js +31 -0
  113. package/src/lib/index.js.map +1 -0
  114. package/src/lib/iterate.d.ts +6 -0
  115. package/src/lib/iterate.js +16 -0
  116. package/src/lib/iterate.js.map +1 -0
  117. package/src/lib/key.d.ts +11 -0
  118. package/src/lib/key.js +3 -0
  119. package/src/lib/key.js.map +1 -0
  120. package/src/lib/lifecycle.d.ts +12 -0
  121. package/src/lib/lifecycle.js +3 -0
  122. package/src/lib/lifecycle.js.map +1 -0
  123. package/src/lib/map.d.ts +2 -0
  124. package/src/lib/map.js +3 -0
  125. package/src/lib/map.js.map +1 -0
  126. package/src/lib/model.d.ts +74 -0
  127. package/src/lib/model.js +138 -0
  128. package/src/lib/model.js.map +1 -0
  129. package/src/lib/number.d.ts +18 -0
  130. package/src/lib/number.js +29 -0
  131. package/src/lib/number.js.map +1 -0
  132. package/src/lib/object/index.d.ts +3 -0
  133. package/src/lib/object/index.js +7 -0
  134. package/src/lib/object/index.js.map +1 -0
  135. package/src/lib/object/object.array.d.ts +9 -0
  136. package/src/lib/object/object.array.js +35 -0
  137. package/src/lib/object/object.array.js.map +1 -0
  138. package/src/lib/object/object.d.ts +12 -0
  139. package/src/lib/object/object.equal.d.ts +4 -0
  140. package/src/lib/object/object.equal.js +12 -0
  141. package/src/lib/object/object.equal.js.map +1 -0
  142. package/src/lib/object/object.js +38 -0
  143. package/src/lib/object/object.js.map +1 -0
  144. package/src/lib/page/index.d.ts +3 -0
  145. package/src/lib/page/index.js +7 -0
  146. package/src/lib/page/index.js.map +1 -0
  147. package/src/lib/page/page.calculator.d.ts +24 -0
  148. package/src/lib/page/page.calculator.js +37 -0
  149. package/src/lib/page/page.calculator.js.map +1 -0
  150. package/src/lib/page/page.d.ts +28 -0
  151. package/src/lib/page/page.filter.d.ts +54 -0
  152. package/src/lib/page/page.filter.js +68 -0
  153. package/src/lib/page/page.filter.js.map +1 -0
  154. package/src/lib/page/page.js +30 -0
  155. package/src/lib/page/page.js.map +1 -0
  156. package/src/lib/promise/index.d.ts +2 -0
  157. package/src/lib/promise/index.js +6 -0
  158. package/src/lib/promise/index.js.map +1 -0
  159. package/src/lib/promise/promise.d.ts +42 -0
  160. package/src/lib/promise/promise.js +117 -0
  161. package/src/lib/promise/promise.js.map +1 -0
  162. package/src/lib/promise/promise.loop.d.ts +12 -0
  163. package/src/lib/promise/promise.loop.js +30 -0
  164. package/src/lib/promise/promise.loop.js.map +1 -0
  165. package/src/lib/relation/index.d.ts +1 -0
  166. package/src/lib/relation/index.js +5 -0
  167. package/src/lib/relation/index.js.map +1 -0
  168. package/src/lib/relation/relation.d.ts +95 -0
  169. package/src/lib/relation/relation.js +209 -0
  170. package/src/lib/relation/relation.js.map +1 -0
  171. package/src/lib/set.d.ts +0 -0
  172. package/src/lib/set.hashset.d.ts +28 -0
  173. package/src/lib/set.hashset.js +66 -0
  174. package/src/lib/set.hashset.js.map +1 -0
  175. package/src/lib/set.js +2 -0
  176. package/src/lib/set.js.map +1 -0
  177. package/src/lib/sort.d.ts +45 -0
  178. package/src/lib/sort.js +25 -0
  179. package/src/lib/sort.js.map +1 -0
  180. package/src/lib/storage/index.d.ts +4 -0
  181. package/src/lib/storage/index.js +8 -0
  182. package/src/lib/storage/index.js.map +1 -0
  183. package/src/lib/storage/storage.d.ts +11 -0
  184. package/src/lib/storage/storage.error.d.ts +12 -0
  185. package/src/lib/storage/storage.error.js +20 -0
  186. package/src/lib/storage/storage.error.js.map +1 -0
  187. package/src/lib/storage/storage.js +3 -0
  188. package/src/lib/storage/storage.js.map +1 -0
  189. package/src/lib/storage/storage.memory.d.ts +14 -0
  190. package/src/lib/storage/storage.memory.js +47 -0
  191. package/src/lib/storage/storage.memory.js.map +1 -0
  192. package/src/lib/storage/storage.object.d.ts +32 -0
  193. package/src/lib/storage/storage.object.js +39 -0
  194. package/src/lib/storage/storage.object.js.map +1 -0
  195. package/src/lib/string.d.ts +19 -0
  196. package/src/lib/string.js +27 -0
  197. package/src/lib/string.js.map +1 -0
  198. package/src/lib/type.d.ts +9 -0
  199. package/src/lib/type.js +3 -0
  200. package/src/lib/type.js.map +1 -0
  201. package/src/lib/value.d.ts +43 -0
  202. package/src/lib/value.js +28 -0
  203. package/src/lib/value.js.map +1 -0
  204. package/src/test/index.d.ts +2 -0
  205. package/src/test/index.js +6 -0
  206. package/src/test/index.js.map +1 -0
  207. package/src/test/jest.d.ts +80 -0
  208. package/src/test/jest.js +80 -0
  209. package/src/test/jest.js.map +1 -0
  210. package/src/test/jest.wrap.d.ts +61 -0
  211. package/src/test/jest.wrap.js +66 -0
  212. package/src/test/jest.wrap.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # util
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test util` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@dereekb/util",
3
+ "version": "0.0.1",
4
+ "main": "./src/index.js",
5
+ "typings": "./src/index.d.ts",
6
+ "dependencies": {
7
+ "extra-set": "^2.2.11"
8
+ },
9
+ "peerDependencies": {}
10
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ export * from './test';
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./lib"), exports);
5
+ (0, tslib_1.__exportStar)(require("./test"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/util/src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAsB;AACtB,sDAAuB"}
@@ -0,0 +1,28 @@
1
+ import { ReadModelKeyFunction } from "../model";
2
+ export declare type BooleanStringKey = string;
3
+ /**
4
+ * Boolean represented by an array to describe the current state and reason why.
5
+ */
6
+ export declare type BooleanStringKeyArray = BooleanKeyArray<BooleanStringKey>;
7
+ /**
8
+ * Boolean represented by an array to describe the current state and reason why.
9
+ *
10
+ * Having any values in the array is considered "true".
11
+ */
12
+ export declare type BooleanKeyArray<T = any> = T[] | undefined;
13
+ export declare function readBooleanKeySafetyWrap<T>(readKey: ReadModelKeyFunction<T>): ReadModelKeyFunction<T>;
14
+ export declare function isFalseBooleanKeyArray(value: BooleanKeyArray): boolean;
15
+ export declare function isTrueBooleanKeyArray(value: BooleanKeyArray): boolean;
16
+ export declare function insertIntoBooleanKeyArray<T>(array: BooleanKeyArray<T>, value: T, readKey: ReadModelKeyFunction<T>): BooleanKeyArray<T>;
17
+ export declare function removeFromBooleanKeyArray<T>(array: BooleanKeyArray<T>, value: T, readKey: ReadModelKeyFunction<T>): BooleanKeyArray<T>;
18
+ export declare function removeByKeyFromBooleanKeyArray<T>(array: BooleanKeyArray<T>, key: string, readKey: ReadModelKeyFunction<T>): BooleanKeyArray<T>;
19
+ export declare class BooleanKeyArrayUtilityInstance<T> {
20
+ readonly readKey: ReadModelKeyFunction<T>;
21
+ constructor(readKey: ReadModelKeyFunction<T>);
22
+ isFalse(value: BooleanKeyArray): boolean;
23
+ isTrue(value: BooleanKeyArray): boolean;
24
+ insert(array: BooleanKeyArray<T>, value: T): BooleanKeyArray<T>;
25
+ remove(array: BooleanKeyArray<T>, value: T): BooleanKeyArray<T>;
26
+ removeByKey(array: BooleanKeyArray<T>, key: string): BooleanKeyArray<T>;
27
+ }
28
+ export declare const BooleanStringKeyArrayUtilityInstance: BooleanKeyArrayUtilityInstance<string>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BooleanStringKeyArrayUtilityInstance = exports.BooleanKeyArrayUtilityInstance = exports.removeByKeyFromBooleanKeyArray = exports.removeFromBooleanKeyArray = exports.insertIntoBooleanKeyArray = exports.isTrueBooleanKeyArray = exports.isFalseBooleanKeyArray = exports.readBooleanKeySafetyWrap = void 0;
4
+ const model_1 = require("../model");
5
+ function readBooleanKeySafetyWrap(readKey) {
6
+ return (value) => {
7
+ const key = readKey(value);
8
+ if (key === '') {
9
+ throw new Error('Cannot use "empty" string for BooleanKey.');
10
+ }
11
+ else {
12
+ return key;
13
+ }
14
+ };
15
+ }
16
+ exports.readBooleanKeySafetyWrap = readBooleanKeySafetyWrap;
17
+ function isFalseBooleanKeyArray(value) {
18
+ return !value || value.length <= 0;
19
+ }
20
+ exports.isFalseBooleanKeyArray = isFalseBooleanKeyArray;
21
+ function isTrueBooleanKeyArray(value) {
22
+ return !isFalseBooleanKeyArray(value);
23
+ }
24
+ exports.isTrueBooleanKeyArray = isTrueBooleanKeyArray;
25
+ function insertIntoBooleanKeyArray(array, value, readKey) {
26
+ return (array) ? [...(0, model_1.removeModelsWithSameKey)(array, value, readBooleanKeySafetyWrap(readKey)), value] : [value];
27
+ }
28
+ exports.insertIntoBooleanKeyArray = insertIntoBooleanKeyArray;
29
+ function removeFromBooleanKeyArray(array, value, readKey) {
30
+ return (array) ? (0, model_1.removeModelsWithSameKey)(array, value, readBooleanKeySafetyWrap(readKey)) : array;
31
+ }
32
+ exports.removeFromBooleanKeyArray = removeFromBooleanKeyArray;
33
+ function removeByKeyFromBooleanKeyArray(array, key, readKey) {
34
+ return (array) ? (0, model_1.removeModelsWithKey)(array, key, readBooleanKeySafetyWrap(readKey)) : array;
35
+ }
36
+ exports.removeByKeyFromBooleanKeyArray = removeByKeyFromBooleanKeyArray;
37
+ class BooleanKeyArrayUtilityInstance {
38
+ constructor(readKey) {
39
+ this.readKey = readKey;
40
+ }
41
+ isFalse(value) {
42
+ return isFalseBooleanKeyArray(value);
43
+ }
44
+ isTrue(value) {
45
+ return isTrueBooleanKeyArray(value);
46
+ }
47
+ insert(array, value) {
48
+ return insertIntoBooleanKeyArray(array, value, this.readKey);
49
+ }
50
+ remove(array, value) {
51
+ return removeFromBooleanKeyArray(array, value, this.readKey);
52
+ }
53
+ removeByKey(array, key) {
54
+ return removeByKeyFromBooleanKeyArray(array, key, this.readKey);
55
+ }
56
+ }
57
+ exports.BooleanKeyArrayUtilityInstance = BooleanKeyArrayUtilityInstance;
58
+ exports.BooleanStringKeyArrayUtilityInstance = new BooleanKeyArrayUtilityInstance(x => (x) ? x : undefined);
59
+ //# sourceMappingURL=array.boolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.boolean.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.boolean.ts"],"names":[],"mappings":";;;AAAA,oCAA8F;AAgB9F,SAAgB,wBAAwB,CAAI,OAAgC;IAC1E,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3B,IAAI,GAAG,KAAK,EAAE,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC,CAAC;AACJ,CAAC;AAVD,4DAUC;AAED,SAAgB,sBAAsB,CAAC,KAAsB;IAC3D,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AACrC,CAAC;AAFD,wDAEC;AAED,SAAgB,qBAAqB,CAAC,KAAsB;IAC1D,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAFD,sDAEC;AAED,SAAgB,yBAAyB,CAAI,KAAyB,EAAE,KAAQ,EAAE,OAAgC;IAChH,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAA,+BAAuB,EAAC,KAAK,EAAE,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClH,CAAC;AAFD,8DAEC;AAED,SAAgB,yBAAyB,CAAI,KAAyB,EAAE,KAAQ,EAAE,OAAgC;IAChH,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,+BAAuB,EAAC,KAAK,EAAE,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACpG,CAAC;AAFD,8DAEC;AAED,SAAgB,8BAA8B,CAAI,KAAyB,EAAE,GAAW,EAAE,OAAgC;IACxH,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,2BAAmB,EAAC,KAAK,EAAE,GAAG,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9F,CAAC;AAFD,wEAEC;AAED,MAAa,8BAA8B;IAEzC,YAAqB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAAI,CAAC;IAE1D,OAAO,CAAC,KAAsB;QAC5B,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAsB;QAC3B,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,KAAyB,EAAE,KAAQ;QACxC,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,KAAyB,EAAE,KAAQ;QACxC,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,WAAW,CAAC,KAAyB,EAAE,GAAW;QAChD,OAAO,8BAA8B,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;CAEF;AAxBD,wEAwBC;AAEY,QAAA,oCAAoC,GAAG,IAAI,8BAA8B,CAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { Maybe } from "../value";
2
+ export declare type ArrayOrValue<T> = T | T[];
3
+ /**
4
+ * Converts the input value to an array containing itself, or returns itself if it is an array.
5
+ *
6
+ * @param arrayOrValue
7
+ * @returns
8
+ */
9
+ export declare function convertMaybeToArray<T>(arrayOrValue: Maybe<ArrayOrValue<T>>): T[];
10
+ /**
11
+ * Converts the input value to an array containing itself, or returns itself if it is an array.
12
+ *
13
+ * @param arrayOrValue
14
+ * @returns
15
+ */
16
+ export declare function convertToArray<T>(arrayOrValue: ArrayOrValue<T>): T[];
17
+ /**
18
+ * Returns the first value from the array.
19
+ */
20
+ export declare function firstValue<T>(input: ArrayOrValue<T>): T;
21
+ /**
22
+ * Returns the last value from the array.
23
+ */
24
+ export declare function lastValue<T>(input: ArrayOrValue<T>): T;
25
+ export declare function valueAtIndex<T>(input: ArrayOrValue<T>, index: number): T;
26
+ /**
27
+ * Concatinates the input arrays and filters out falsy values.
28
+ */
29
+ export declare function concatArrays<T>(...arrays: (Maybe<T[]>)[]): T[];
30
+ export declare function flattenArray<T>(array: T[][]): T[];
31
+ export declare function copyArray<T>(input: Maybe<T[]>): T[];
32
+ export declare function pushElementOntoArray<T>(target: T[], element: T, times: number): T[];
33
+ export declare function mergeIntoArray<T>(target: Maybe<T[]>, ...arrays: T[][]): T[];
34
+ export declare function mergeArrayOrValueIntoArray<T>(target: T[], value: ArrayOrValue<T>): T[];
35
+ /**
36
+ * Merges all the values from the second array into the first using push.
37
+ *
38
+ * This is preferable in cases where immutability is not required.
39
+ *
40
+ * @param target
41
+ * @param array
42
+ */
43
+ export declare function mergeArrayIntoArray<T>(target: T[], array: T[]): T[];
44
+ /**
45
+ * Copies/takes the elements from the front of the array up to the max.
46
+ *
47
+ * @param values
48
+ * @param maxToTake
49
+ * @returns
50
+ */
51
+ export declare function takeFront<T>(values: T[], maxToTake: number): T[];
52
+ /**
53
+ * Copies/takes as many elements as possible from the end.
54
+ *
55
+ * @param values Values to take from.
56
+ * @param maxToTake Max number of values to take from the end of the input array.
57
+ * @param keepFromFront Number of values to retain in the front of the array. These are not taken.
58
+ * @returns New array with the subset of taken values.
59
+ */
60
+ export declare function takeLast<T>(values: T[], maxToTake: number, keepFromFront?: number): T[];
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Filters the input values by distance. The original order is retained.
3
+ *
4
+ * If order is irrelevant, use filterValuesByDistanceNoOrder().
5
+ */
6
+ export declare function filterValuesByDistance<T>(input: T[], minDistance: number, getValue: (value: T) => number | null): T[];
7
+ /**
8
+ * Filters the input values by an arbitrary "distance"/difference from eachother and returns the values sorted by their determined distance.
9
+ *
10
+ * This is useful in cases where many values are too "close" to eachother (Generally items that share the same time, or within seconds of eachother), and
11
+ * we are only interested in seeing one of those items.
12
+ */
13
+ export declare function filterValuesByDistanceNoOrder<T>(input: T[], minDistance: number, getValue: (value: T) => number | null): T[];
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterValuesByDistanceNoOrder = exports.filterValuesByDistance = void 0;
4
+ /**
5
+ * Filters the input values by distance. The original order is retained.
6
+ *
7
+ * If order is irrelevant, use filterValuesByDistanceNoOrder().
8
+ */
9
+ function filterValuesByDistance(input, minDistance, getValue) {
10
+ // TODO: Implement if needed.
11
+ throw new Error('Incomplete implementation!');
12
+ }
13
+ exports.filterValuesByDistance = filterValuesByDistance;
14
+ /**
15
+ * Filters the input values by an arbitrary "distance"/difference from eachother and returns the values sorted by their determined distance.
16
+ *
17
+ * This is useful in cases where many values are too "close" to eachother (Generally items that share the same time, or within seconds of eachother), and
18
+ * we are only interested in seeing one of those items.
19
+ */
20
+ function filterValuesByDistanceNoOrder(input, minDistance, getValue) {
21
+ const values = input.map(x => [x, getValue(x)]).filter(x => x[1] != null);
22
+ return _filterValuesByDistance(values, minDistance, (x) => x[0]);
23
+ }
24
+ exports.filterValuesByDistanceNoOrder = filterValuesByDistanceNoOrder;
25
+ // TODO: Can add a "mergeValuesByDistance" too to merge together values that are too close together.
26
+ function _filterValuesByDistance(values, minDistance, toOutputValue) {
27
+ // Exit if nothing to do.
28
+ switch (values.length) {
29
+ case 0:
30
+ return [];
31
+ case 1:
32
+ return [toOutputValue(values[0])];
33
+ }
34
+ // Sort values
35
+ values.sort((a, b) => a[1] - b[1]);
36
+ let prev = values[0];
37
+ const filtered = [toOutputValue(prev)];
38
+ for (let i = 1, n = values.length; i < n; i += 1) {
39
+ const current = values[i];
40
+ const distance = Math.abs(current[1] - prev[1]);
41
+ if (distance > minDistance) {
42
+ filtered.push(toOutputValue(current));
43
+ prev = current;
44
+ }
45
+ }
46
+ return filtered;
47
+ }
48
+ //# sourceMappingURL=array.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.filter.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.filter.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,sBAAsB,CAAI,KAAU,EAAE,WAAmB,EAAE,QAAqC;IAE9G,6BAA6B;IAE7B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC;AALD,wDAKC;AAED;;;;;GAKG;AACH,SAAgB,6BAA6B,CAAI,KAAU,EAAE,WAAmB,EAAE,QAAqC;IACrH,MAAM,MAAM,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACxG,OAAO,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAHD,sEAGC;AAED,oGAAoG;AAEpG,SAAS,uBAAuB,CAAO,MAAqB,EAAE,WAAmB,EAAE,aAAwC;IAEzH,yBAAyB;IACzB,QAAQ,MAAM,CAAC,MAAM,EAAE;QACrB,KAAK,CAAC;YACJ,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC;YACJ,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC;IAED,cAAc;IACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,QAAQ,GAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,IAAI,QAAQ,GAAG,WAAW,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,OAAO,CAAC;SAChB;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.takeLast = exports.takeFront = exports.mergeArrayIntoArray = exports.mergeArrayOrValueIntoArray = exports.mergeIntoArray = exports.pushElementOntoArray = exports.copyArray = exports.flattenArray = exports.concatArrays = exports.valueAtIndex = exports.lastValue = exports.firstValue = exports.convertToArray = exports.convertMaybeToArray = void 0;
4
+ // MARK: Functions
5
+ /**
6
+ * Converts the input value to an array containing itself, or returns itself if it is an array.
7
+ *
8
+ * @param arrayOrValue
9
+ * @returns
10
+ */
11
+ function convertMaybeToArray(arrayOrValue) {
12
+ if (arrayOrValue != null) {
13
+ return convertToArray(arrayOrValue);
14
+ }
15
+ else {
16
+ return [];
17
+ }
18
+ }
19
+ exports.convertMaybeToArray = convertMaybeToArray;
20
+ /**
21
+ * Converts the input value to an array containing itself, or returns itself if it is an array.
22
+ *
23
+ * @param arrayOrValue
24
+ * @returns
25
+ */
26
+ function convertToArray(arrayOrValue) {
27
+ return Array.isArray(arrayOrValue) ? arrayOrValue : [arrayOrValue];
28
+ }
29
+ exports.convertToArray = convertToArray;
30
+ /**
31
+ * Returns the first value from the array.
32
+ */
33
+ function firstValue(input) {
34
+ return valueAtIndex(input, 0);
35
+ }
36
+ exports.firstValue = firstValue;
37
+ /**
38
+ * Returns the last value from the array.
39
+ */
40
+ function lastValue(input) {
41
+ if (Array.isArray(input)) {
42
+ return input[input.length - 1];
43
+ }
44
+ else {
45
+ return input;
46
+ }
47
+ }
48
+ exports.lastValue = lastValue;
49
+ function valueAtIndex(input, index) {
50
+ if (Array.isArray(input)) {
51
+ return input[index];
52
+ }
53
+ else {
54
+ return input;
55
+ }
56
+ }
57
+ exports.valueAtIndex = valueAtIndex;
58
+ /**
59
+ * Concatinates the input arrays and filters out falsy values.
60
+ */
61
+ function concatArrays(...arrays) {
62
+ return flattenArray(arrays.filter(x => Boolean(x)));
63
+ }
64
+ exports.concatArrays = concatArrays;
65
+ function flattenArray(array) {
66
+ return array.filter((x) => Boolean(x)).reduce((accumulator, value) => accumulator.concat([...value]), []);
67
+ }
68
+ exports.flattenArray = flattenArray;
69
+ function copyArray(input) {
70
+ return (input != null) ? Array.from(input) : [];
71
+ }
72
+ exports.copyArray = copyArray;
73
+ function pushElementOntoArray(target, element, times) {
74
+ for (let i = 0; i < times; i += 1) {
75
+ target.push(element);
76
+ }
77
+ return target;
78
+ }
79
+ exports.pushElementOntoArray = pushElementOntoArray;
80
+ function mergeIntoArray(target, ...arrays) {
81
+ if (target == null) {
82
+ target = [];
83
+ }
84
+ arrays.forEach((array) => {
85
+ mergeArrayIntoArray(target, array);
86
+ });
87
+ return target;
88
+ }
89
+ exports.mergeIntoArray = mergeIntoArray;
90
+ function mergeArrayOrValueIntoArray(target, value) {
91
+ if (Array.isArray(value)) {
92
+ return mergeArrayIntoArray(target, value);
93
+ }
94
+ else {
95
+ target.push(value);
96
+ return target;
97
+ }
98
+ }
99
+ exports.mergeArrayOrValueIntoArray = mergeArrayOrValueIntoArray;
100
+ /**
101
+ * Merges all the values from the second array into the first using push.
102
+ *
103
+ * This is preferable in cases where immutability is not required.
104
+ *
105
+ * @param target
106
+ * @param array
107
+ */
108
+ function mergeArrayIntoArray(target, array) {
109
+ Array.prototype.push.apply(target, array);
110
+ return target;
111
+ }
112
+ exports.mergeArrayIntoArray = mergeArrayIntoArray;
113
+ /**
114
+ * Copies/takes the elements from the front of the array up to the max.
115
+ *
116
+ * @param values
117
+ * @param maxToTake
118
+ * @returns
119
+ */
120
+ function takeFront(values, maxToTake) {
121
+ return values.slice(0, maxToTake);
122
+ }
123
+ exports.takeFront = takeFront;
124
+ /**
125
+ * Copies/takes as many elements as possible from the end.
126
+ *
127
+ * @param values Values to take from.
128
+ * @param maxToTake Max number of values to take from the end of the input array.
129
+ * @param keepFromFront Number of values to retain in the front of the array. These are not taken.
130
+ * @returns New array with the subset of taken values.
131
+ */
132
+ function takeLast(values, maxToTake, keepFromFront = 0) {
133
+ let results;
134
+ if (maxToTake < keepFromFront) {
135
+ throw new Error('Cannot take more than keeping from front.');
136
+ }
137
+ else if (keepFromFront === maxToTake) {
138
+ results = values.slice(0, keepFromFront);
139
+ }
140
+ else {
141
+ const length = values.length;
142
+ const secondHalfStartIndex = Math.max(keepFromFront, length - (maxToTake - keepFromFront));
143
+ const secondHalfEndIndex = length;
144
+ results = [...values.slice(0, keepFromFront), ...values.slice(secondHalfStartIndex, secondHalfEndIndex)];
145
+ }
146
+ return results;
147
+ }
148
+ exports.takeLast = takeLast;
149
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Maybe } from "../value";
2
+ export interface LimitArrayConfig {
3
+ /**
4
+ * Number of items in the list to limit in the result.
5
+ */
6
+ limit: number;
7
+ /**
8
+ * If true the limit will be pulled from the end instead of the front of the array.
9
+ */
10
+ limitFromEnd?: boolean;
11
+ }
12
+ export declare function limitArray<T>(array: T[], { limit, limitFromEnd }: Partial<LimitArrayConfig>): T[];
13
+ export declare function limitArray<T>(array: Maybe<T[]>, { limit, limitFromEnd }: Partial<LimitArrayConfig>): Maybe<T[]>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.limitArray = void 0;
4
+ const array_1 = require("../array");
5
+ function limitArray(array, { limit, limitFromEnd }) {
6
+ if (array && limit != null) {
7
+ if (limitFromEnd) {
8
+ return (0, array_1.takeLast)(array, limit);
9
+ }
10
+ else {
11
+ return (0, array_1.takeFront)(array, limit);
12
+ }
13
+ }
14
+ else {
15
+ return array;
16
+ }
17
+ }
18
+ exports.limitArray = limitArray;
19
+ //# sourceMappingURL=array.limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.limit.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.limit.ts"],"names":[],"mappings":";;;AAAA,oCAA+C;AAgB/C,SAAgB,UAAU,CAAI,KAAiB,EAAE,EAAE,KAAK,EAAE,YAAY,EAA6B;IACjG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;QAC1B,IAAI,YAAY,EAAE;YAChB,OAAO,IAAA,gBAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/B;aAAM;YACL,OAAO,IAAA,iBAAS,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAChC;KACF;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAVD,gCAUC"}
@@ -0,0 +1,18 @@
1
+ import { PrimativeKey, ReadKeyFunction } from "../key";
2
+ import { Maybe } from "../value";
3
+ /**
4
+ * Maps the values of the input array to a Map. Can additionally specify a value function to map out the input value to another value for the map.
5
+ */
6
+ export declare function arrayToMap<T, V, K extends PrimativeKey = PrimativeKey>(values: T[], keyFn: ReadKeyFunction<T, K>, valueFn: (t: T) => V): Map<Maybe<K>, V>;
7
+ export declare function arrayToMap<T, K extends PrimativeKey = PrimativeKey>(values: T[], keyFn: ReadKeyFunction<T, K>, valueFn: (t: T) => T): Map<Maybe<K>, T>;
8
+ export declare function arrayToMap<T, K extends PrimativeKey = PrimativeKey>(values: T[], keyFn: ReadKeyFunction<T, K>): Map<Maybe<K>, T>;
9
+ /**
10
+ * Generates a value for the input
11
+ *
12
+ * @param keys
13
+ * @param existing
14
+ * @param readKey
15
+ * @param generateFn
16
+ * @returns
17
+ */
18
+ export declare function generateIfDoesNotExist<T, K extends PrimativeKey = PrimativeKey>(keys: K[], existing: T[], readKey: ReadKeyFunction<T, K>, generateFn: (key: K) => T): T[];
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateIfDoesNotExist = exports.arrayToMap = void 0;
4
+ function arrayToMap(values, keyFn, valueFn = ((t) => t)) {
5
+ return new Map(values.map(x => [keyFn(x), valueFn(x)]));
6
+ }
7
+ exports.arrayToMap = arrayToMap;
8
+ /**
9
+ * Generates a value for the input
10
+ *
11
+ * @param keys
12
+ * @param existing
13
+ * @param readKey
14
+ * @param generateFn
15
+ * @returns
16
+ */
17
+ function generateIfDoesNotExist(keys, existing, readKey, generateFn) {
18
+ const map = arrayToMap(existing, readKey);
19
+ return keys.map(x => {
20
+ var _a;
21
+ const value = (_a = map.get(x)) !== null && _a !== void 0 ? _a : generateFn(x);
22
+ return value;
23
+ });
24
+ }
25
+ exports.generateIfDoesNotExist = generateIfDoesNotExist;
26
+ //# sourceMappingURL=array.map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.map.ts"],"names":[],"mappings":";;;AASA,SAAgB,UAAU,CAA8C,MAAW,EAAE,KAA4B,EAAE,UAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAa,CAAC;IAC9J,OAAO,IAAI,GAAG,CAAc,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAFD,gCAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAA2C,IAAS,EAAE,QAAa,EAAE,OAA8B,EAAE,UAAyB;IAClK,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;QAClB,MAAM,KAAK,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAPD,wDAOC"}
@@ -0,0 +1,21 @@
1
+ export declare function reduceNumbersWithMax(array: number[], emptyArrayValue?: number): number | undefined;
2
+ export declare function reduceNumbersWithMaxFn(emptyArrayValue?: number): (array: number[]) => number | undefined;
3
+ export declare function reduceNumbersWithMin(array: number[], emptyArrayValue?: number): number | undefined;
4
+ export declare function reduceNumbersWithMinFn(emptyArrayValue?: number): (array: number[]) => number | undefined;
5
+ export declare function reduceNumbersWithAdd(array: number[], emptyArrayValue?: number): number;
6
+ export declare function reduceNumbersWithAddFn(emptyArrayValue?: number): (array: number[]) => number;
7
+ export declare function reduceNumbers(reduceFn: ((a: number, b: number) => number), array: number[], emptyArrayValue?: number): number | undefined;
8
+ export declare function reduceNumbersFn(reduceFn: ((a: number, b: number) => number)): (array: number[]) => number | undefined;
9
+ export declare function reduceNumbersFn<D extends number>(reduceFn: ((a: number, b: number) => number), emptyArrayValue?: D): (array: number[]) => number | D;
10
+ /**
11
+ * Generates an array containing the range of numbers specified.
12
+ *
13
+ * The end value is not included.
14
+ *
15
+ * @param param0
16
+ * @returns
17
+ */
18
+ export declare function range({ start, end }: {
19
+ start?: number;
20
+ end: number;
21
+ }): number[];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.range = exports.reduceNumbersFn = exports.reduceNumbers = exports.reduceNumbersWithAddFn = exports.reduceNumbersWithAdd = exports.reduceNumbersWithMinFn = exports.reduceNumbersWithMin = exports.reduceNumbersWithMaxFn = exports.reduceNumbersWithMax = void 0;
4
+ function reduceNumbersWithMax(array, emptyArrayValue) {
5
+ return reduceNumbersWithMaxFn(emptyArrayValue)(array);
6
+ }
7
+ exports.reduceNumbersWithMax = reduceNumbersWithMax;
8
+ function reduceNumbersWithMaxFn(emptyArrayValue) {
9
+ return reduceNumbersFn((a, b) => Math.max(a, b), emptyArrayValue);
10
+ }
11
+ exports.reduceNumbersWithMaxFn = reduceNumbersWithMaxFn;
12
+ function reduceNumbersWithMin(array, emptyArrayValue) {
13
+ return reduceNumbersWithMinFn(emptyArrayValue)(array);
14
+ }
15
+ exports.reduceNumbersWithMin = reduceNumbersWithMin;
16
+ function reduceNumbersWithMinFn(emptyArrayValue) {
17
+ return reduceNumbersFn((a, b) => Math.min(a, b), emptyArrayValue);
18
+ }
19
+ exports.reduceNumbersWithMinFn = reduceNumbersWithMinFn;
20
+ function reduceNumbersWithAdd(array, emptyArrayValue = 0) {
21
+ return reduceNumbersWithAddFn(emptyArrayValue)(array);
22
+ }
23
+ exports.reduceNumbersWithAdd = reduceNumbersWithAdd;
24
+ function reduceNumbersWithAddFn(emptyArrayValue = 0) {
25
+ return reduceNumbersFn((a, b) => a + b, emptyArrayValue);
26
+ }
27
+ exports.reduceNumbersWithAddFn = reduceNumbersWithAddFn;
28
+ function reduceNumbers(reduceFn, array, emptyArrayValue) {
29
+ if (array.length === 0) {
30
+ return emptyArrayValue;
31
+ }
32
+ else {
33
+ return reduceNumbersFn(reduceFn, emptyArrayValue)(array);
34
+ }
35
+ }
36
+ exports.reduceNumbers = reduceNumbers;
37
+ function reduceNumbersFn(reduceFn, emptyArrayValue) {
38
+ const rFn = (array) => array.reduce(reduceFn);
39
+ return (array) => (array.length) ? rFn(array) : emptyArrayValue;
40
+ }
41
+ exports.reduceNumbersFn = reduceNumbersFn;
42
+ /**
43
+ * Generates an array containing the range of numbers specified.
44
+ *
45
+ * The end value is not included.
46
+ *
47
+ * @param param0
48
+ * @returns
49
+ */
50
+ function range({ start = 0, end }) {
51
+ const range = [];
52
+ for (let i = start; i < end; i += 1) {
53
+ range.push(i);
54
+ }
55
+ return range;
56
+ }
57
+ exports.range = range;
58
+ //# sourceMappingURL=array.number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.number.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/array/array.number.ts"],"names":[],"mappings":";;;AACA,SAAgB,oBAAoB,CAAC,KAAe,EAAE,eAAwB;IAC5E,OAAO,sBAAsB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,oDAEC;AAED,SAAgB,sBAAsB,CAAC,eAAwB;IAC7D,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED,SAAgB,oBAAoB,CAAC,KAAe,EAAE,eAAwB;IAC5E,OAAO,sBAAsB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,oDAEC;AAED,SAAgB,sBAAsB,CAAC,eAAwB;IAC7D,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED,SAAgB,oBAAoB,CAAC,KAAe,EAAE,eAAe,GAAG,CAAC;IACvE,OAAO,sBAAsB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,oDAEC;AAED,SAAgB,sBAAsB,CAAC,eAAe,GAAG,CAAC;IACxD,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAC3D,CAAC;AAFD,wDAEC;AAED,SAAgB,aAAa,CAAC,QAA4C,EAAE,KAAe,EAAE,eAAwB;IACnH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,eAAe,CAAC;KACxB;SAAM;QACL,OAAO,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;KAC1D;AACH,CAAC;AAND,sCAMC;AAID,SAAgB,eAAe,CAAmB,QAA4C,EAAE,eAAmB;IACjH,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AAC5E,CAAC;AAHD,0CAGC;AAED;;;;;;;GAOG;AACH,SAAgB,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAmC;IACvE,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QACnC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AARD,sBAQC"}
@@ -0,0 +1,20 @@
1
+ import { PrimativeKey } from '../key';
2
+ import { Maybe } from '../value';
3
+ export declare function flattenArrayToSet<T>(array: T[][]): Set<T>;
4
+ export declare function hasDifferentValues<T>(a: T[], b: T[]): boolean;
5
+ export declare function hasDifferentStringsNoCase(a: string[], b: string[]): boolean;
6
+ export declare function symmetricDifferenceKeys<T extends PrimativeKey = PrimativeKey>(a: Maybe<T>[], b: Maybe<T>[]): Maybe<T>[];
7
+ export declare function symmetricDifferenceKeysSet<T>(a: Set<Maybe<T>>, b: Set<Maybe<T>>): Maybe<T>[];
8
+ /**
9
+ * Returns items that exist in both arrays.
10
+ */
11
+ export declare function keepValuesFromArray<T>(values: T[], secondArray: T[]): T[];
12
+ export declare function keepValuesFromSet<T>(values: T[], set: Set<T>): T[];
13
+ export declare function excludeValuesFromArray<T>(values: T[], secondArray: T[]): T[];
14
+ export declare function excludeValuesFromSet<T>(values: T[], set: Set<T>): T[];
15
+ export declare function filterValuesFromSet<T>(values: T[], set: Set<T>, exclude?: boolean): T[];
16
+ /**
17
+ * Returns true if the input array contains any value from the second array.
18
+ */
19
+ export declare function containsAnyValue<T>(values: T[], valuesToFind: T[]): boolean;
20
+ export declare function setContainsAnyValue<T>(values: T[], valuesToFind: Set<T>): boolean;