@dereekb/util 2.1.0 → 4.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 (245) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/package.json +13 -5
  3. package/src/index.d.ts +0 -1
  4. package/src/index.js +1 -2
  5. package/src/index.js.map +1 -1
  6. package/src/lib/array/array.boolean.d.ts +2 -2
  7. package/src/lib/array/array.boolean.js +1 -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 +1 -1
  45. package/src/lib/date/index.js +2 -2
  46. package/src/lib/date/index.js.map +1 -1
  47. package/src/lib/error/error.d.ts +6 -1
  48. package/src/lib/error/error.js +8 -1
  49. package/src/lib/error/error.js.map +1 -1
  50. package/src/lib/error/error.server.d.ts +5 -12
  51. package/src/lib/error/error.server.js.map +1 -1
  52. package/src/lib/error/index.js +2 -2
  53. package/src/lib/error/index.js.map +1 -1
  54. package/src/lib/filter/index.js +1 -1
  55. package/src/lib/filter/index.js.map +1 -1
  56. package/src/lib/function/function.forward.d.ts +9 -0
  57. package/src/lib/function/function.forward.js +18 -0
  58. package/src/lib/function/function.forward.js.map +1 -0
  59. package/src/lib/function/index.d.ts +1 -0
  60. package/src/lib/function/index.js +5 -0
  61. package/src/lib/function/index.js.map +1 -0
  62. package/src/lib/getter/getter.cache.d.ts +38 -0
  63. package/src/lib/getter/getter.cache.js +23 -0
  64. package/src/lib/getter/getter.cache.js.map +1 -0
  65. package/src/lib/getter/getter.d.ts +61 -0
  66. package/src/lib/getter/getter.js +48 -0
  67. package/src/lib/getter/getter.js.map +1 -0
  68. package/src/lib/getter/getter.map.d.ts +15 -0
  69. package/src/lib/getter/getter.map.js +24 -0
  70. package/src/lib/getter/getter.map.js.map +1 -0
  71. package/src/lib/getter/index.d.ts +3 -0
  72. package/src/lib/getter/index.js +7 -0
  73. package/src/lib/getter/index.js.map +1 -0
  74. package/src/lib/grouping.d.ts +4 -4
  75. package/src/lib/index.d.ts +9 -5
  76. package/src/lib/index.js +31 -28
  77. package/src/lib/index.js.map +1 -1
  78. package/src/lib/iterable/index.d.ts +2 -0
  79. package/src/lib/iterable/index.js +6 -0
  80. package/src/lib/iterable/index.js.map +1 -0
  81. package/src/lib/iterable/iterable.d.ts +53 -0
  82. package/src/lib/iterable/iterable.js +113 -0
  83. package/src/lib/iterable/iterable.js.map +1 -0
  84. package/src/lib/iterable/iterable.map.d.ts +8 -0
  85. package/src/lib/iterable/iterable.map.js +18 -0
  86. package/src/lib/iterable/iterable.map.js.map +1 -0
  87. package/src/lib/iterate.js +1 -1
  88. package/src/lib/key.d.ts +1 -1
  89. package/src/lib/map/index.d.ts +2 -0
  90. package/src/lib/map/index.js +6 -0
  91. package/src/lib/map/index.js.map +1 -0
  92. package/src/lib/map/map.d.ts +9 -0
  93. package/src/lib/map/map.intersection.d.ts +15 -0
  94. package/src/lib/map/map.intersection.js +24 -0
  95. package/src/lib/map/map.intersection.js.map +1 -0
  96. package/src/lib/map/map.js +17 -0
  97. package/src/lib/map/map.js.map +1 -0
  98. package/src/lib/misc/host.d.ts +5 -0
  99. package/src/lib/misc/host.js +13 -0
  100. package/src/lib/misc/host.js.map +1 -0
  101. package/src/lib/misc/index.d.ts +1 -0
  102. package/src/lib/misc/index.js +5 -0
  103. package/src/lib/misc/index.js.map +1 -0
  104. package/src/lib/model/index.d.ts +3 -0
  105. package/src/lib/model/index.js +7 -0
  106. package/src/lib/model/index.js.map +1 -0
  107. package/src/lib/model/model.conversion.d.ts +63 -0
  108. package/src/lib/model/model.conversion.js +66 -0
  109. package/src/lib/model/model.conversion.js.map +1 -0
  110. package/src/lib/model/model.copy.d.ts +16 -0
  111. package/src/lib/model/model.copy.js +20 -0
  112. package/src/lib/model/model.copy.js.map +1 -0
  113. package/src/lib/{model.d.ts → model/model.d.ts} +2 -2
  114. package/src/lib/{model.js → model/model.js} +3 -3
  115. package/src/lib/model/model.js.map +1 -0
  116. package/src/lib/number/factory.d.ts +22 -0
  117. package/src/lib/number/factory.js +22 -0
  118. package/src/lib/number/factory.js.map +1 -0
  119. package/src/lib/number/index.d.ts +3 -0
  120. package/src/lib/number/index.js +7 -0
  121. package/src/lib/number/index.js.map +1 -0
  122. package/src/lib/number/random.d.ts +13 -0
  123. package/src/lib/number/random.js +22 -0
  124. package/src/lib/number/random.js.map +1 -0
  125. package/src/lib/{number.d.ts → number/round.d.ts} +0 -13
  126. package/src/lib/{number.js → number/round.js} +2 -20
  127. package/src/lib/number/round.js.map +1 -0
  128. package/src/lib/object/index.d.ts +1 -0
  129. package/src/lib/object/index.js +4 -3
  130. package/src/lib/object/index.js.map +1 -1
  131. package/src/lib/object/object.d.ts +69 -8
  132. package/src/lib/object/object.equal.d.ts +1 -1
  133. package/src/lib/object/object.equal.js +3 -3
  134. package/src/lib/object/object.equal.js.map +1 -1
  135. package/src/lib/object/object.js +117 -11
  136. package/src/lib/object/object.js.map +1 -1
  137. package/src/lib/object/object.map.d.ts +35 -0
  138. package/src/lib/object/object.map.js +40 -0
  139. package/src/lib/object/object.map.js.map +1 -0
  140. package/src/lib/page/index.js +3 -3
  141. package/src/lib/page/index.js.map +1 -1
  142. package/src/lib/page/page.d.ts +1 -1
  143. package/src/lib/page/page.filter.js +1 -1
  144. package/src/lib/promise/index.d.ts +3 -0
  145. package/src/lib/promise/index.js +7 -4
  146. package/src/lib/promise/index.js.map +1 -1
  147. package/src/lib/promise/is.d.ts +7 -0
  148. package/src/lib/promise/is.js +15 -0
  149. package/src/lib/promise/is.js.map +1 -0
  150. package/src/lib/promise/map.d.ts +10 -0
  151. package/src/lib/promise/map.js +14 -0
  152. package/src/lib/promise/map.js.map +1 -0
  153. package/src/lib/promise/promise.d.ts +13 -1
  154. package/src/lib/promise/promise.js +26 -8
  155. package/src/lib/promise/promise.js.map +1 -1
  156. package/src/lib/promise/promise.loop.d.ts +18 -3
  157. package/src/lib/promise/promise.loop.js +18 -2
  158. package/src/lib/promise/promise.loop.js.map +1 -1
  159. package/src/lib/promise/promise.ref.d.ts +10 -0
  160. package/src/lib/promise/promise.ref.js +19 -0
  161. package/src/lib/promise/promise.ref.js.map +1 -0
  162. package/src/lib/promise/wait.js +2 -2
  163. package/src/lib/promise/wait.js.map +1 -1
  164. package/src/lib/relation/index.js +1 -1
  165. package/src/lib/relation/index.js.map +1 -1
  166. package/src/lib/relation/relation.js +2 -2
  167. package/src/lib/set/index.d.ts +4 -0
  168. package/src/lib/set/index.js +8 -0
  169. package/src/lib/set/index.js.map +1 -0
  170. package/src/lib/set/set.allowed.d.ts +23 -0
  171. package/src/lib/set/set.allowed.js +29 -0
  172. package/src/lib/set/set.allowed.js.map +1 -0
  173. package/src/lib/set/set.d.ts +53 -0
  174. package/src/lib/{set.hashset.d.ts → set/set.hashset.d.ts} +2 -2
  175. package/src/lib/{set.hashset.js → set/set.hashset.js} +0 -0
  176. package/src/lib/set/set.hashset.js.map +1 -0
  177. package/src/lib/set/set.js +114 -0
  178. package/src/lib/set/set.js.map +1 -0
  179. package/src/lib/set/set.maybe.d.ts +11 -0
  180. package/src/lib/set/set.maybe.js +22 -0
  181. package/src/lib/set/set.maybe.js.map +1 -0
  182. package/src/lib/sort.d.ts +1 -4
  183. package/src/lib/sort.js +3 -8
  184. package/src/lib/sort.js.map +1 -1
  185. package/src/lib/storage/index.js +4 -4
  186. package/src/lib/storage/index.js.map +1 -1
  187. package/src/lib/storage/storage.memory.d.ts +1 -1
  188. package/src/lib/storage/storage.object.d.ts +1 -1
  189. package/src/lib/string.d.ts +9 -2
  190. package/src/lib/string.js +11 -1
  191. package/src/lib/string.js.map +1 -1
  192. package/src/lib/tree/index.js +4 -4
  193. package/src/lib/tree/index.js.map +1 -1
  194. package/src/lib/tree/tree.expand.d.ts +1 -1
  195. package/src/lib/type.d.ts +17 -1
  196. package/src/lib/value/equal.d.ts +41 -0
  197. package/src/lib/value/equal.js +56 -0
  198. package/src/lib/value/equal.js.map +1 -0
  199. package/src/lib/value/index.d.ts +4 -0
  200. package/src/lib/value/index.js +8 -0
  201. package/src/lib/value/index.js.map +1 -0
  202. package/src/lib/value/map.d.ts +13 -0
  203. package/src/lib/{map.js → value/map.js} +0 -0
  204. package/src/lib/value/map.js.map +1 -0
  205. package/src/lib/{value.d.ts → value/maybe.d.ts} +33 -4
  206. package/src/lib/{value.js → value/maybe.js} +35 -5
  207. package/src/lib/value/maybe.js.map +1 -0
  208. package/src/lib/value/modifier.d.ts +58 -0
  209. package/src/lib/value/modifier.js +69 -0
  210. package/src/lib/value/modifier.js.map +1 -0
  211. package/test/CHANGELOG.md +9 -0
  212. package/test/README.md +11 -0
  213. package/test/package.json +14 -0
  214. package/test/src/index.d.ts +1 -0
  215. package/test/src/index.js +5 -0
  216. package/test/src/index.js.map +1 -0
  217. package/{src/test → test/src/lib}/index.d.ts +1 -0
  218. package/test/src/lib/index.js +7 -0
  219. package/test/src/lib/index.js.map +1 -0
  220. package/{src/test → test/src/lib}/jest.d.ts +21 -1
  221. package/test/src/lib/jest.function.d.ts +9 -0
  222. package/test/src/lib/jest.function.js +14 -0
  223. package/test/src/lib/jest.function.js.map +1 -0
  224. package/test/src/lib/jest.js +108 -0
  225. package/test/src/lib/jest.js.map +1 -0
  226. package/{src/test → test/src/lib}/jest.wrap.d.ts +0 -0
  227. package/{src/test → test/src/lib}/jest.wrap.js +5 -5
  228. package/test/src/lib/jest.wrap.js.map +1 -0
  229. package/src/lib/getter.d.ts +0 -26
  230. package/src/lib/getter.js +0 -13
  231. package/src/lib/getter.js.map +0 -1
  232. package/src/lib/map.d.ts +0 -2
  233. package/src/lib/map.js.map +0 -1
  234. package/src/lib/model.js.map +0 -1
  235. package/src/lib/number.js.map +0 -1
  236. package/src/lib/set.d.ts +0 -0
  237. package/src/lib/set.hashset.js.map +0 -1
  238. package/src/lib/set.js +0 -2
  239. package/src/lib/set.js.map +0 -1
  240. package/src/lib/value.js.map +0 -1
  241. package/src/test/index.js +0 -6
  242. package/src/test/index.js.map +0 -1
  243. package/src/test/jest.js +0 -80
  244. package/src/test/jest.js.map +0 -1
  245. package/src/test/jest.wrap.js.map +0 -1
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makePromiseFullRef = void 0;
4
+ let i = 0;
5
+ /**
6
+ * Creates a new promise and returns the full ref for it.
7
+ */
8
+ function makePromiseFullRef(executor) {
9
+ const ref = {};
10
+ ref.promise = new Promise((resolve, reject) => {
11
+ ref.resolve = resolve;
12
+ ref.reject = reject;
13
+ executor(resolve, reject);
14
+ });
15
+ ref.number = i += 1;
16
+ return ref;
17
+ }
18
+ exports.makePromiseFullRef = makePromiseFullRef;
19
+ //# sourceMappingURL=promise.ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.ref.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.ref.ts"],"names":[],"mappings":";;;AAWA,IAAI,CAAC,GAAG,CAAC,CAAC;AAEV;;GAEG;AACH,SAAgB,kBAAkB,CAAI,QAA4B;IAChE,MAAM,GAAG,GAAQ,EAAS,CAAC;IAE3B,GAAG,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAEpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IAEpB,OAAO,GAAG,CAAC;AACb,CAAC;AAbD,gDAaC"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitForMs = void 0;
4
4
  const tslib_1 = require("tslib");
5
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));
6
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
7
+ return new Promise(resolve => setTimeout(() => resolve(value), ms));
8
8
  });
9
9
  }
10
10
  exports.waitForMs = waitForMs;
@@ -1 +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"}
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,GAAG,EAAE,CAAC,OAAO,CAAC,KAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;CAAA;AAFD,8BAEC"}
@@ -1,5 +1,5 @@
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("./relation"), exports);
4
+ tslib_1.__exportStar(require("./relation"), exports);
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/relation/index.ts"],"names":[],"mappings":";;;AAAA,0DAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/relation/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"}
@@ -121,7 +121,7 @@ class ModelRelationUtility {
121
121
  const modsMap = (0, grouping_1.makeValuesGroupMap)(mods, readType);
122
122
  const typesModified = new Set([...inputMap.keys(), ...modsMap.keys()]);
123
123
  // Break the collections up into their individual types and process separately.
124
- const modifiedSubCollections = Array.from(typesModified).map((type) => {
124
+ const modifiedSubcollections = Array.from(typesModified).map((type) => {
125
125
  var _a, _b;
126
126
  const values = (_a = inputMap.get(type)) !== null && _a !== void 0 ? _a : [];
127
127
  const mods = (_b = modsMap.get(type)) !== null && _b !== void 0 ? _b : [];
@@ -134,7 +134,7 @@ class ModelRelationUtility {
134
134
  }
135
135
  });
136
136
  // Rejoin all changes.
137
- return modifiedSubCollections.reduce((x, y) => x.concat(y), []);
137
+ return modifiedSubcollections.reduce((x, y) => x.concat(y), []);
138
138
  }
139
139
  static _insertSingleTypeCollection(current, insert, { readKey, merge }) {
140
140
  const currentKeys = (0, array_1.arrayToMap)(current, readKey);
@@ -0,0 +1,4 @@
1
+ export * from './set.allowed';
2
+ export * from './set.hashset';
3
+ export * from './set.maybe';
4
+ export * from './set';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./set.allowed"), exports);
5
+ tslib_1.__exportStar(require("./set.hashset"), exports);
6
+ tslib_1.__exportStar(require("./set.maybe"), exports);
7
+ tslib_1.__exportStar(require("./set"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/set/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,wDAA8B;AAC9B,sDAA4B;AAC5B,gDAAsB"}
@@ -0,0 +1,23 @@
1
+ import { ArrayOrValue } from './../array/array';
2
+ import { Maybe } from "../value/maybe";
3
+ /**
4
+ * Pair of allowed/disallowed values.
5
+ */
6
+ export interface AllowedSet<T> {
7
+ /**
8
+ * Values that are allowed. Hits against this set result in an initial true.
9
+ */
10
+ allowed?: Maybe<Set<T>>;
11
+ /**
12
+ * Values that are disallowed. Hits against this set result in false.
13
+ */
14
+ disallowed?: Maybe<Set<T>>;
15
+ }
16
+ /**
17
+ * Determines whether the input values are "allowed" for the given AllowedSet.
18
+ *
19
+ * @param input
20
+ * @param allowedSet
21
+ * @returns
22
+ */
23
+ export declare function isAllowed<T>(input: ArrayOrValue<T>, allowedSet: AllowedSet<T>): boolean;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAllowed = void 0;
4
+ const array_1 = require("./../array/array");
5
+ const set_1 = require("./set");
6
+ /**
7
+ * Determines whether the input values are "allowed" for the given AllowedSet.
8
+ *
9
+ * @param input
10
+ * @param allowedSet
11
+ * @returns
12
+ */
13
+ function isAllowed(input, allowedSet) {
14
+ const { allowed, disallowed } = allowedSet;
15
+ const values = (0, array_1.asArray)(input);
16
+ let isAllowed = false;
17
+ if (allowed) {
18
+ isAllowed = (0, set_1.setContainsAnyValue)(allowed, values);
19
+ }
20
+ else {
21
+ isAllowed = true;
22
+ }
23
+ if (isAllowed && disallowed) {
24
+ isAllowed = !(0, set_1.setContainsAnyValue)(disallowed, values);
25
+ }
26
+ return isAllowed;
27
+ }
28
+ exports.isAllowed = isAllowed;
29
+ //# sourceMappingURL=set.allowed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.allowed.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/set/set.allowed.ts"],"names":[],"mappings":";;;AAAA,4CAAyD;AAEzD,+BAA4C;AAgB5C;;;;;;GAMG;AACH,SAAgB,SAAS,CAAI,KAAsB,EAAE,UAAyB;IAC5E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,OAAO,EAAE;QACX,SAAS,GAAG,IAAA,yBAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAClD;SAAM;QACL,SAAS,GAAG,IAAI,CAAC;KAClB;IAED,IAAI,SAAS,IAAI,UAAU,EAAE;QAC3B,SAAS,GAAG,CAAC,IAAA,yBAAmB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACtD;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAjBD,8BAiBC"}
@@ -0,0 +1,53 @@
1
+ import { Maybe } from '../value/maybe';
2
+ import { IterableOrValue } from '../iterable/iterable';
3
+ export declare function asSet<T>(values: IterableOrValue<T>): Set<T>;
4
+ export declare function addToSet<T>(set: Set<T>, values: Maybe<IterableOrValue<T>>): void;
5
+ export declare function removeFromSet<T>(set: Set<T>, values: Maybe<IterableOrValue<T>>): void;
6
+ export declare function hasDifferentValues<T>(a: Maybe<Iterable<T>>, b: Maybe<Iterable<T>>): boolean;
7
+ export declare function symmetricDifferenceKeys<T>(a: Maybe<Iterable<T>>, b: Maybe<Iterable<T>>): Maybe<T>[];
8
+ export declare function symmetricDifferenceKeysSet<T>(a: Set<Maybe<T>>, b: Set<Maybe<T>>): Maybe<T>[];
9
+ export declare function flattenArrayToSet<T>(array: T[][]): Set<T>;
10
+ export declare function keepValuesFromSet<T>(values: T[], set: Set<T>): T[];
11
+ export declare function excludeValuesFromSet<T>(values: T[], set: Set<T>): T[];
12
+ export declare function filterValuesFromSet<T>(values: T[], set: Set<T>, exclude?: boolean): T[];
13
+ /**
14
+ * Set inclusion comparison type.
15
+ * - all: All values must be included
16
+ * - any: Any value is included
17
+ */
18
+ export declare type SetIncludesMode = 'all' | 'any';
19
+ /**
20
+ * Contextual function that checks whether or not the input values are included.
21
+ */
22
+ export declare type SetIncludesFunction<T> = (valuesToFind: Iterable<T>) => boolean;
23
+ /**
24
+ * Creates a SetIncludesFunction using the input valuesSet and optional mode. By default the mode defaults to 'all'.
25
+ *
26
+ * @param valuesSet
27
+ * @param valuesToFind
28
+ * @param mode
29
+ */
30
+ export declare function setIncludesFunction<T>(valuesSet: Set<T>, mode?: SetIncludesMode): SetIncludesFunction<T>;
31
+ /**
32
+ * Returns true if the input array contains any value from the second array.
33
+ */
34
+ export declare function containsAnyValue<T>(values: Iterable<T>, valuesToFind: Iterable<T>): boolean;
35
+ export declare function containsAnyValueFromSet<T>(values: Iterable<T>, valuesToFind: Set<T>): boolean;
36
+ export declare function setContainsAnyValue<T>(valuesSet: Set<T>, valuesToFind: Iterable<T>): boolean;
37
+ /**
38
+ * Returns true if values contains all values in valuesToFind.
39
+ *
40
+ * @param values
41
+ * @param valuesToFind
42
+ * @returns
43
+ */
44
+ export declare function containsAllValues<T>(values: Iterable<T>, valuesToFind: Iterable<T>): boolean;
45
+ /**
46
+ * Returns true if valuesSet contains all values in valuesToFind.
47
+ *
48
+ * @param valuesSet
49
+ * @param valuesToFind
50
+ * @param returnOnEmptyValuesSet
51
+ * @returns
52
+ */
53
+ export declare function setContainsAllValues<T>(valuesSet: Set<T>, valuesToFind: Iterable<T>): boolean;
@@ -1,5 +1,5 @@
1
- import { PrimativeKey, ReadKeyFunction } from "./key";
2
- import { Maybe } from "./value";
1
+ import { PrimativeKey, ReadKeyFunction } from "../key";
2
+ import { Maybe } from "../value/maybe";
3
3
  export interface HashSetConfig<K extends PrimativeKey, T> {
4
4
  readKey: ReadKeyFunction<T, K>;
5
5
  }
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.hashset.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/set/set.hashset.ts"],"names":[],"mappings":";;;AAOA;;;;GAIG;AACH,MAAa,OAAO;IAIlB,YAAqB,MAA2B,EAAE,MAAY;QAAzC,WAAM,GAAN,MAAM,CAAqB;QAFxC,SAAI,GAAG,IAAI,GAAG,EAAe,CAAC;QAGpC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,UAAsD,EAAE,OAAa;QAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC,CAAC,MAAM,EAAE,CAAC;IACpD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;CAEF;AAtED,0BAsEC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setContainsAllValues = exports.containsAllValues = exports.setContainsAnyValue = exports.containsAnyValueFromSet = exports.containsAnyValue = exports.setIncludesFunction = exports.filterValuesFromSet = exports.excludeValuesFromSet = exports.keepValuesFromSet = exports.flattenArrayToSet = exports.symmetricDifferenceKeysSet = exports.symmetricDifferenceKeys = exports.hasDifferentValues = exports.removeFromSet = exports.addToSet = exports.asSet = void 0;
4
+ const array_1 = require("../array/array");
5
+ const iterable_1 = require("../iterable/iterable");
6
+ const extra_set_1 = require("extra-set");
7
+ function asSet(values) {
8
+ let set;
9
+ if (typeof values === 'string') {
10
+ set = new Set([values]);
11
+ }
12
+ else {
13
+ set = new Set();
14
+ addToSet(set, values);
15
+ }
16
+ return set;
17
+ }
18
+ exports.asSet = asSet;
19
+ function addToSet(set, values) {
20
+ (0, iterable_1.useIterableOrValue)(values, (x) => set.add(x));
21
+ }
22
+ exports.addToSet = addToSet;
23
+ function removeFromSet(set, values) {
24
+ (0, iterable_1.useIterableOrValue)(values, (x) => set.delete(x));
25
+ }
26
+ exports.removeFromSet = removeFromSet;
27
+ function hasDifferentValues(a, b) {
28
+ return (0, extra_set_1.symmetricDifference)(new Set(a), new Set(b)).size > 0;
29
+ }
30
+ exports.hasDifferentValues = hasDifferentValues;
31
+ function symmetricDifferenceKeys(a, b) {
32
+ return symmetricDifferenceKeysSet(new Set(a), new Set(b));
33
+ }
34
+ exports.symmetricDifferenceKeys = symmetricDifferenceKeys;
35
+ function symmetricDifferenceKeysSet(a, b) {
36
+ return Array.from((0, extra_set_1.symmetricDifference)(a, b));
37
+ }
38
+ exports.symmetricDifferenceKeysSet = symmetricDifferenceKeysSet;
39
+ function flattenArrayToSet(array) {
40
+ return new Set((0, array_1.flattenArray)(array));
41
+ }
42
+ exports.flattenArrayToSet = flattenArrayToSet;
43
+ function keepValuesFromSet(values, set) {
44
+ return filterValuesFromSet(values, set, false);
45
+ }
46
+ exports.keepValuesFromSet = keepValuesFromSet;
47
+ function excludeValuesFromSet(values, set) {
48
+ return filterValuesFromSet(values, set, true);
49
+ }
50
+ exports.excludeValuesFromSet = excludeValuesFromSet;
51
+ function filterValuesFromSet(values, set, exclude = false) {
52
+ const filterFn = (exclude) ? ((x) => !set.has(x)) : ((x) => set.has(x));
53
+ return values.filter(filterFn);
54
+ }
55
+ exports.filterValuesFromSet = filterValuesFromSet;
56
+ /**
57
+ * Creates a SetIncludesFunction using the input valuesSet and optional mode. By default the mode defaults to 'all'.
58
+ *
59
+ * @param valuesSet
60
+ * @param valuesToFind
61
+ * @param mode
62
+ */
63
+ function setIncludesFunction(valuesSet, mode = 'all') {
64
+ let fn;
65
+ if (mode === 'any') {
66
+ fn = setContainsAnyValue;
67
+ }
68
+ else {
69
+ fn = setContainsAllValues;
70
+ }
71
+ return (valuesToFind) => fn(valuesSet, valuesToFind);
72
+ }
73
+ exports.setIncludesFunction = setIncludesFunction;
74
+ /**
75
+ * Returns true if the input array contains any value from the second array.
76
+ */
77
+ function containsAnyValue(values, valuesToFind) {
78
+ const set = new Set(valuesToFind);
79
+ return containsAnyValueFromSet(values, set);
80
+ }
81
+ exports.containsAnyValue = containsAnyValue;
82
+ function containsAnyValueFromSet(values, valuesToFind) {
83
+ return setContainsAnyValue(valuesToFind, values);
84
+ }
85
+ exports.containsAnyValueFromSet = containsAnyValueFromSet;
86
+ function setContainsAnyValue(valuesSet, valuesToFind) {
87
+ return (valuesSet) ? Array.from(valuesToFind).findIndex((x) => valuesSet.has(x)) !== -1 : false;
88
+ }
89
+ exports.setContainsAnyValue = setContainsAnyValue;
90
+ /**
91
+ * Returns true if values contains all values in valuesToFind.
92
+ *
93
+ * @param values
94
+ * @param valuesToFind
95
+ * @returns
96
+ */
97
+ function containsAllValues(values, valuesToFind) {
98
+ const set = new Set(values);
99
+ return setContainsAllValues(set, valuesToFind);
100
+ }
101
+ exports.containsAllValues = containsAllValues;
102
+ /**
103
+ * Returns true if valuesSet contains all values in valuesToFind.
104
+ *
105
+ * @param valuesSet
106
+ * @param valuesToFind
107
+ * @param returnOnEmptyValuesSet
108
+ * @returns
109
+ */
110
+ function setContainsAllValues(valuesSet, valuesToFind) {
111
+ return (valuesSet) ? Array.from(valuesToFind).findIndex((x) => !valuesSet.has(x)) == -1 : false;
112
+ }
113
+ exports.setContainsAllValues = setContainsAllValues;
114
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/set/set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ArrayOrValue } from './../array/array';
2
+ import { Maybe } from "../value/maybe";
3
+ /**
4
+ * Creates a Maybe Set with the input.
5
+ *
6
+ * If the input is an array or value, they are returned as a set. Otherwise, returns null/undefined.
7
+ *
8
+ * @param input
9
+ * @returns
10
+ */
11
+ export declare function maybeSet<T>(input: Maybe<ArrayOrValue<T>>): Maybe<Set<T>>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maybeSet = void 0;
4
+ const array_1 = require("./../array/array");
5
+ /**
6
+ * Creates a Maybe Set with the input.
7
+ *
8
+ * If the input is an array or value, they are returned as a set. Otherwise, returns null/undefined.
9
+ *
10
+ * @param input
11
+ * @returns
12
+ */
13
+ function maybeSet(input) {
14
+ if (input != null) {
15
+ return new Set((0, array_1.asArray)(input));
16
+ }
17
+ else {
18
+ return input;
19
+ }
20
+ }
21
+ exports.maybeSet = maybeSet;
22
+ //# sourceMappingURL=set.maybe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.maybe.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/set/set.maybe.ts"],"names":[],"mappings":";;;AAAA,4CAAyD;AAGzD;;;;;;;GAOG;AACH,SAAgB,QAAQ,CAAI,KAA6B;IACvD,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,IAAI,GAAG,CAAC,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;KAChC;SAAM;QACL,OAAO,KAAiB,CAAC;KAC1B;AACH,CAAC;AAND,4BAMC"}
package/src/lib/sort.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- export declare enum SortingOrder {
2
- ASCENDING = "asc",
3
- DESCENDING = "desc"
4
- }
1
+ export declare type SortingOrder = 'desc' | 'asc';
5
2
  export declare const SORT_VALUE_LESS_THAN: SortComparisonNumber;
6
3
  export declare const SORT_VALUE_GREATER_THAN: SortComparisonNumber;
7
4
  export declare const SORT_VALUE_EQUAL: SortComparisonNumber;
package/src/lib/sort.js CHANGED
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compareFnOrder = exports.reverseCompareFn = exports.SORT_VALUE_EQUAL = exports.SORT_VALUE_GREATER_THAN = exports.SORT_VALUE_LESS_THAN = exports.SortingOrder = void 0;
4
- var SortingOrder;
5
- (function (SortingOrder) {
6
- SortingOrder["ASCENDING"] = "asc";
7
- SortingOrder["DESCENDING"] = "desc";
8
- })(SortingOrder = exports.SortingOrder || (exports.SortingOrder = {}));
3
+ exports.compareFnOrder = exports.reverseCompareFn = exports.SORT_VALUE_EQUAL = exports.SORT_VALUE_GREATER_THAN = exports.SORT_VALUE_LESS_THAN = void 0;
9
4
  exports.SORT_VALUE_LESS_THAN = -1;
10
5
  exports.SORT_VALUE_GREATER_THAN = 1;
11
6
  exports.SORT_VALUE_EQUAL = 0;
@@ -18,8 +13,8 @@ exports.reverseCompareFn = reverseCompareFn;
18
13
  *
19
14
  * The input comparison function must be in ascending order.
20
15
  */
21
- function compareFnOrder(ascendingCompareFn, order = SortingOrder.ASCENDING) {
22
- return (order === SortingOrder.ASCENDING) ? ascendingCompareFn : reverseCompareFn(ascendingCompareFn);
16
+ function compareFnOrder(ascendingCompareFn, order = 'asc') {
17
+ return (order === 'asc') ? ascendingCompareFn : reverseCompareFn(ascendingCompareFn);
23
18
  }
24
19
  exports.compareFnOrder = compareFnOrder;
25
20
  //# sourceMappingURL=sort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/sort.ts"],"names":[],"mappings":";;;AACA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAEY,QAAA,oBAAoB,GAAyB,CAAC,CAAC,CAAC;AAChD,QAAA,uBAAuB,GAAyB,CAAC,CAAC;AAClD,QAAA,gBAAgB,GAAyB,CAAC,CAAC;AAsCxD,SAAgB,gBAAgB,CAAI,SAAiC;IACnE,OAAO,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAI,kBAAmD,EAAE,QAAsB,YAAY,CAAC,SAAS;IACjI,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACxG,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/sort.ts"],"names":[],"mappings":";;;AAGa,QAAA,oBAAoB,GAAyB,CAAC,CAAC,CAAC;AAChD,QAAA,uBAAuB,GAAyB,CAAC,CAAC;AAClD,QAAA,gBAAgB,GAAyB,CAAC,CAAC;AAsCxD,SAAgB,gBAAgB,CAAI,SAAiC;IACnE,OAAO,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAI,kBAAmD,EAAE,QAAsB,KAAK;IAChH,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACvF,CAAC;AAFD,wCAEC"}
@@ -1,8 +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("./storage"), exports);
5
- (0, tslib_1.__exportStar)(require("./storage.error"), exports);
6
- (0, tslib_1.__exportStar)(require("./storage.memory"), exports);
7
- (0, tslib_1.__exportStar)(require("./storage.object"), exports);
4
+ tslib_1.__exportStar(require("./storage"), exports);
5
+ tslib_1.__exportStar(require("./storage.error"), exports);
6
+ tslib_1.__exportStar(require("./storage.memory"), exports);
7
+ tslib_1.__exportStar(require("./storage.object"), exports);
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/storage/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B;AAC1B,+DAAgC;AAChC,gEAAiC;AACjC,gEAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/storage/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,0DAAgC;AAChC,2DAAiC;AACjC,2DAAiC"}
@@ -1,4 +1,4 @@
1
- import { Maybe } from "../value";
1
+ import { Maybe } from '../value/maybe';
2
2
  import { StorageObject } from "./storage.object";
3
3
  export declare class MemoryStorageInstance implements StorageObject {
4
4
  private _length;
@@ -1,4 +1,4 @@
1
- import { Maybe } from '../value';
1
+ import { Maybe } from '../value/maybe';
2
2
  import { StoredDataStorageKey } from './storage';
3
3
  /**
4
4
  * Limited Class/Interface for storing string values synchronously.
@@ -1,5 +1,5 @@
1
- import { MapStringFn } from "./map";
2
- import { Maybe } from "./value";
1
+ import { MapStringFn } from "./map/map";
2
+ import { Maybe } from "./value/maybe";
3
3
  /**
4
4
  * Represents a string that is made up of comma-separated values.
5
5
  *
@@ -18,3 +18,10 @@ export declare function splitCommaSeparatedStringToSet(input: Maybe<CommaSeparat
18
18
  * Undefined is returned if a null/undefined value is input.
19
19
  */
20
20
  export declare function addPlusPrefixToNumber(value?: Maybe<number>, prefix?: string): string | undefined;
21
+ /**
22
+ * Capitalizes the first letter of the input.
23
+ *
24
+ * @param value
25
+ * @returns
26
+ */
27
+ export declare function capitalizeFirstLetter(value: string): string;
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.splitCommaSeparatedStringToSet = exports.splitCommaSeparatedString = exports.caseInsensitiveString = void 0;
3
+ exports.capitalizeFirstLetter = 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
  }
@@ -28,4 +28,14 @@ function addPlusPrefixToNumber(value, prefix = '+') {
28
28
  }
29
29
  }
30
30
  exports.addPlusPrefixToNumber = addPlusPrefixToNumber;
31
+ /**
32
+ * Capitalizes the first letter of the input.
33
+ *
34
+ * @param value
35
+ * @returns
36
+ */
37
+ function capitalizeFirstLetter(value) {
38
+ return value.charAt(0).toUpperCase() + value.slice(1);
39
+ }
40
+ exports.capitalizeFirstLetter = capitalizeFirstLetter;
31
41
  //# sourceMappingURL=string.js.map
@@ -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,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"}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../packages/util/src/lib/string.ts"],"names":[],"mappings":";;;AAcA,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;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAFD,sDAEC"}
@@ -1,8 +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("./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);
4
+ tslib_1.__exportStar(require("./tree"), exports);
5
+ tslib_1.__exportStar(require("./tree.expand"), exports);
6
+ tslib_1.__exportStar(require("./tree.flatten"), exports);
7
+ tslib_1.__exportStar(require("./tree.array"), exports);
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/tree/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,wDAA8B;AAC9B,yDAA+B;AAC/B,uDAA6B"}
@@ -1,5 +1,5 @@
1
1
  import { TreeNode, TreeNodeWithoutChildren } from "./tree";
2
- import { Maybe } from "../value";
2
+ import { Maybe } from "../value/maybe";
3
3
  /**
4
4
  * ExpandTreeFunction configuration.
5
5
  */
package/src/lib/type.d.ts CHANGED
@@ -1,6 +1,13 @@
1
- export declare type ClassType<T> = {
1
+ /**
2
+ * Class typing, restricted to types that have a constructor via the new keyword.
3
+ */
4
+ export declare type ClassType<T = any> = {
2
5
  new (...args: any[]): T;
3
6
  };
7
+ /**
8
+ * Similar to ClassType, but allows for abstract classes.
9
+ */
10
+ export declare type ClassLikeType<T = any> = abstract new (...args: any[]) => T;
4
11
  /**
5
12
  * Special type used to defined other type definitions that state the defined type has every key of one type, but each key has a single/new value type.
6
13
  */
@@ -8,3 +15,12 @@ export declare type KeyValueTransformMap<T, V, K extends keyof T = keyof T> = {
8
15
  [k in K]: V;
9
16
  };
10
17
  export declare type BooleanKeyValueTransformMap<T> = KeyValueTransformMap<T, boolean>;
18
+ export declare type RemoveIndex<T> = {
19
+ [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
20
+ };
21
+ /**
22
+ * Custom typing used to only retain known keys on types that have a [key: string] in their type.
23
+ *
24
+ * https://stackoverflow.com/questions/51954558/how-can-i-remove-a-wider-type-from-a-union-type-without-removing-its-subtypes-in/51955852#51955852
25
+ */
26
+ export declare type KnownKeys<T> = keyof RemoveIndex<T>;
@@ -0,0 +1,41 @@
1
+ import { IterableOrValue } from './../iterable/iterable';
2
+ /**
3
+ * Function used for equivalence comparisons on an object.
4
+ */
5
+ export declare type IsEqualFunction<T = any> = (a: T, b: T) => boolean;
6
+ /**
7
+ * Used to check if the input object is considered equal to the current context.
8
+ */
9
+ export declare type IsEqualContext<T = any> = (x: T) => boolean;
10
+ /**
11
+ * Similar to IsEqualContext, but supports an array of objects.
12
+ *
13
+ * Used to check if the input object or array of objects are considered equal to the current context.
14
+ */
15
+ export declare type AreEqualContext<T = any> = (x: IterableOrValue<T>) => boolean;
16
+ /**
17
+ * Creates an IsEqualContext
18
+ *
19
+ * @param contextValue
20
+ * @param fn
21
+ * @returns
22
+ */
23
+ export declare function isEqualContext<T>(contextValue: T, fn: IsEqualFunction<T>): IsEqualContext<T>;
24
+ /**
25
+ * Creates an AreEqualContext
26
+ *
27
+ * @param contextValue
28
+ * @param fn
29
+ * @returns
30
+ */
31
+ export declare function areEqualContext<T>(contextValue: T, fn: IsEqualFunction<T>): AreEqualContext<T>;
32
+ /**
33
+ * Returns true if all input values are equal.
34
+ *
35
+ * Arrays that are empty or have one value will return true by default.
36
+ *
37
+ * @param values
38
+ * @param fn
39
+ * @returns
40
+ */
41
+ export declare function allObjectsAreEqual<T>(values: IterableOrValue<T>, fn: IsEqualFunction<T>): boolean;