@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
@@ -0,0 +1,9 @@
1
+ import { ArrayOrValue } from "../array";
2
+ /**
3
+ * Convenience function for objectMergeMatrix that returns a flat array.
4
+ */
5
+ export declare function objectFlatMergeMatrix<A extends object = object, B extends object = object>(a: ArrayOrValue<Partial<A>>, b: ArrayOrValue<Partial<B>>): (Partial<A> & Partial<B>)[];
6
+ /**
7
+ * Creates a matrix of results by merging the input. If either a or b is null/undefined, the result is returned as an array of the other value.
8
+ */
9
+ export declare function objectMergeMatrix<A extends object = object, B extends object = object>(a: ArrayOrValue<Partial<A>>, b: ArrayOrValue<Partial<B>>): (Partial<A> & Partial<B>)[][];
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectMergeMatrix = exports.objectFlatMergeMatrix = void 0;
4
+ const array_1 = require("../array");
5
+ /**
6
+ * Convenience function for objectMergeMatrix that returns a flat array.
7
+ */
8
+ function objectFlatMergeMatrix(a, b) {
9
+ return (0, array_1.flattenArray)(objectMergeMatrix(a, b));
10
+ }
11
+ exports.objectFlatMergeMatrix = objectFlatMergeMatrix;
12
+ /**
13
+ * Creates a matrix of results by merging the input. If either a or b is null/undefined, the result is returned as an array of the other value.
14
+ */
15
+ function objectMergeMatrix(a, b) {
16
+ if (a && b) {
17
+ const aNorm = (0, array_1.convertToArray)(a);
18
+ const bNorm = (0, array_1.convertToArray)(b);
19
+ const results = aNorm.map((a) => {
20
+ return bNorm.map(b => (Object.assign(Object.assign({}, a), b)));
21
+ });
22
+ return results;
23
+ }
24
+ else if (a) {
25
+ return [(0, array_1.convertToArray)(a)];
26
+ }
27
+ else if (b) {
28
+ return [(0, array_1.convertToArray)(b)];
29
+ }
30
+ else {
31
+ return [[]];
32
+ }
33
+ }
34
+ exports.objectMergeMatrix = objectMergeMatrix;
35
+ //# sourceMappingURL=object.array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.array.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.array.ts"],"names":[],"mappings":";;;AAAA,oCAAsE;AAEtE;;GAEG;AACH,SAAgB,qBAAqB,CAAuD,CAA2B,EAAE,CAA2B;IAClJ,OAAO,IAAA,oBAAY,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,sDAEC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAuD,CAA2B,EAAE,CAA2B;IAC9I,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC;QAEhC,MAAM,OAAO,GAAkC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iCAAM,CAAC,GAAK,CAAC,EAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB;SAAM,IAAI,CAAC,EAAE;QACZ,OAAO,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAO,CAAC,CAAC;KAClC;SAAM,IAAI,CAAC,EAAE;QACZ,OAAO,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAO,CAAC,CAAC;KAClC;SAAM;QACL,OAAO,CAAC,EAAE,CAAC,CAAC;KACb;AACH,CAAC;AAjBD,8CAiBC"}
@@ -0,0 +1,12 @@
1
+ import { FieldOfType } from "../key";
2
+ export declare function applyToMultipleFields<T extends object>(value: any, fields: FieldOfType<T>[]): Partial<T>;
3
+ export declare function mapToObject<T, K extends PropertyKey>(map: Map<K, T>): {
4
+ [key: string]: T;
5
+ };
6
+ /**
7
+ * Removes all undefined values from the input POJO. Will only remove undefined, and not null, etc.
8
+ *
9
+ * @param obj POJO to remove undefined values from.
10
+ * @param copy Whether or not to return a copy with all non-
11
+ */
12
+ export declare function removeUndefinedFromPOJO<T extends object = object>(obj: T, copy?: boolean): T;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Performs a deep comparison to check if all values on the input filters are equal.
3
+ */
4
+ export declare function areEqualObjectValues<F>(a: F, b: F): boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.areEqualObjectValues = void 0;
4
+ const lodash_1 = require("lodash");
5
+ /**
6
+ * Performs a deep comparison to check if all values on the input filters are equal.
7
+ */
8
+ function areEqualObjectValues(a, b) {
9
+ return (0, lodash_1.isEqual)(a, b);
10
+ }
11
+ exports.areEqualObjectValues = areEqualObjectValues;
12
+ //# sourceMappingURL=object.equal.js.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeUndefinedFromPOJO = exports.mapToObject = exports.applyToMultipleFields = void 0;
4
+ function applyToMultipleFields(value, fields) {
5
+ const result = {};
6
+ fields.forEach((field) => {
7
+ result[field] = value;
8
+ });
9
+ return result;
10
+ }
11
+ exports.applyToMultipleFields = applyToMultipleFields;
12
+ function mapToObject(map) {
13
+ const object = {};
14
+ map.forEach((x, key) => {
15
+ object[key] = x;
16
+ });
17
+ return object;
18
+ }
19
+ exports.mapToObject = mapToObject;
20
+ /**
21
+ * Removes all undefined values from the input POJO. Will only remove undefined, and not null, etc.
22
+ *
23
+ * @param obj POJO to remove undefined values from.
24
+ * @param copy Whether or not to return a copy with all non-
25
+ */
26
+ function removeUndefinedFromPOJO(obj, copy) {
27
+ if (copy) {
28
+ obj = Object.assign({}, obj);
29
+ }
30
+ Object.keys(obj).forEach((key) => {
31
+ if (obj[key] === undefined) {
32
+ delete obj[key];
33
+ }
34
+ });
35
+ return obj;
36
+ }
37
+ exports.removeUndefinedFromPOJO = removeUndefinedFromPOJO;
38
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/object/object.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qBAAqB,CAAmB,KAAU,EAAE,MAAwB;IAC1F,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,sDAQC;AAED,SAAgB,WAAW,CAA2B,GAAc;IAClE,MAAM,MAAM,GAAG,EAAS,CAAC;IAEzB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAI,EAAE,GAAM,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,kCAQC;AAGD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAA4B,GAAM,EAAE,IAAc;IACvF,IAAI,IAAI,EAAE;QACR,GAAG,qBACE,GAAG,CACP,CAAC;KACH;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACvC,IAAK,GAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACnC,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAC;SAC1B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAdD,0DAcC"}
@@ -0,0 +1,3 @@
1
+ export * from './page';
2
+ export * from './page.calculator';
3
+ export * from './page.filter';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
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);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,iEAAkC;AAClC,6DAA8B"}
@@ -0,0 +1,24 @@
1
+ import { Page } from "./page";
2
+ export interface PageCalculatorConfig {
3
+ pageSize: number;
4
+ limitKey?: string;
5
+ skipKey?: string;
6
+ }
7
+ /**
8
+ * Page calcuaktion context for calculating the amount to skip/etc.
9
+ */
10
+ export declare class PageCalculator {
11
+ readonly pageSize: number;
12
+ readonly limitKey: string;
13
+ readonly skipKey: string;
14
+ constructor(config: PageCalculatorConfig);
15
+ get limit(): number;
16
+ calcWithPage(page?: Page): {
17
+ [x: string]: number;
18
+ };
19
+ calc(page?: number): {
20
+ [x: string]: number;
21
+ };
22
+ calcSkipWithPage(page?: Page): number;
23
+ calcSkip(page?: number): number;
24
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageCalculator = void 0;
4
+ /**
5
+ * Page calcuaktion context for calculating the amount to skip/etc.
6
+ */
7
+ class PageCalculator {
8
+ constructor(config) {
9
+ var _a, _b;
10
+ this.pageSize = config.pageSize;
11
+ if (!this.pageSize) {
12
+ throw new Error('Page size is required.');
13
+ }
14
+ this.limitKey = (_a = config.limitKey) !== null && _a !== void 0 ? _a : 'limit';
15
+ this.skipKey = (_b = config.skipKey) !== null && _b !== void 0 ? _b : 'skip';
16
+ }
17
+ get limit() {
18
+ return this.pageSize;
19
+ }
20
+ calcWithPage(page) {
21
+ return this.calc(page === null || page === void 0 ? void 0 : page.page);
22
+ }
23
+ calc(page = 0) {
24
+ return {
25
+ [this.limitKey]: this.pageSize,
26
+ [this.skipKey]: this.calcSkip(page)
27
+ };
28
+ }
29
+ calcSkipWithPage(page) {
30
+ return this.calcSkip(page === null || page === void 0 ? void 0 : page.page);
31
+ }
32
+ calcSkip(page = 0) {
33
+ return (page !== null && page !== void 0 ? page : 0) * this.pageSize;
34
+ }
35
+ }
36
+ exports.PageCalculator = PageCalculator;
37
+ //# sourceMappingURL=page.calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.calculator.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/page.calculator.ts"],"names":[],"mappings":";;;AASA;;GAEG;AACH,MAAa,cAAc;IAMzB,YAAY,MAA4B;;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,QAAQ,GAAG,MAAA,MAAM,CAAC,QAAQ,mCAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,MAAM,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,IAAW;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAe,CAAC;QACnB,OAAO;YACL,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ;YAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,OAAe,CAAC;QACvB,OAAO,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrC,CAAC;CAEF;AAxCD,wCAwCC"}
@@ -0,0 +1,28 @@
1
+ import { Maybe } from "../value";
2
+ /**
3
+ * Page value used when no list items have been loaded.
4
+ */
5
+ export declare const UNLOADED_PAGE = -1;
6
+ /**
7
+ * The first page of results.
8
+ */
9
+ export declare const FIRST_PAGE = 0;
10
+ /**
11
+ * Page value used when there are no elements left to load.
12
+ */
13
+ export declare const FINAL_PAGE = -2;
14
+ export declare type PageNumber = number;
15
+ /**
16
+ * Represents a page number.
17
+ */
18
+ export interface Page {
19
+ /**
20
+ * Current page number.
21
+ *
22
+ * // TODO: Rename to pageNumber
23
+ */
24
+ page: PageNumber;
25
+ }
26
+ export declare function getPageNumber(page: Maybe<Page>): number;
27
+ export declare function getNextPageNumber(page: Maybe<Page>): number;
28
+ export declare function isFinalPage(page: Maybe<Page>): boolean;
@@ -0,0 +1,54 @@
1
+ import { Filter, OptionalFilter } from '../filter';
2
+ import { Page } from '../page';
3
+ import { IterateFn, IteratePageFn } from '../iterate';
4
+ /**
5
+ * Represents a page number with a filter.
6
+ */
7
+ export interface FilteredPage<F> extends Page, OptionalFilter<F> {
8
+ }
9
+ /**
10
+ * An object that has a Page and a Filter.
11
+ */
12
+ export interface PageAndFilter<F> extends OptionalFilter<F> {
13
+ page: Page;
14
+ }
15
+ export interface FilteredPageIterateFn<T> {
16
+ /**
17
+ * Uses each model one-by-one.
18
+ */
19
+ use?: IterateFn<T>;
20
+ /**
21
+ * Uses the entire page of results at once.
22
+ */
23
+ usePage?: IteratePageFn<T>;
24
+ }
25
+ /**
26
+ * Creates a FilteredPage.
27
+ *
28
+ * @param page
29
+ * @param request
30
+ * @returns
31
+ */
32
+ export declare function filteredPage<F = any>(page: number, request?: Filter<F>): FilteredPage<F>;
33
+ /**
34
+ * Iterates using a delegate function sequentially.
35
+ *
36
+ * @param inputPage
37
+ * @param loadFn
38
+ * @param iterFn
39
+ * @returns
40
+ */
41
+ export declare function iterateFilteredPages<T, F>(inputPage: FilteredPage<F>, loadFn: (page: FilteredPage<F>) => Promise<T[]>, iterFn: FilteredPageIterateFn<T>): Promise<number>;
42
+ /**
43
+ * @deprecated
44
+ */
45
+ export declare class FilteredPageUtility {
46
+ static page<F = any>(page: number, request?: FilteredPage<F>): {
47
+ page: number;
48
+ filter: {} & F;
49
+ };
50
+ static filter<F = any>(filter: F, request?: FilteredPage<F>): {
51
+ page: number | undefined;
52
+ filter: {} & F;
53
+ };
54
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilteredPageUtility = exports.iterateFilteredPages = exports.filteredPage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const iterate_1 = require("../iterate");
6
+ /**
7
+ * Creates a FilteredPage.
8
+ *
9
+ * @param page
10
+ * @param request
11
+ * @returns
12
+ */
13
+ function filteredPage(page, request) {
14
+ return {
15
+ page,
16
+ filter: (request === null || request === void 0 ? void 0 : request.filter) ? Object.assign({}, request.filter) : undefined
17
+ };
18
+ }
19
+ exports.filteredPage = filteredPage;
20
+ /**
21
+ * Iterates using a delegate function sequentially.
22
+ *
23
+ * @param inputPage
24
+ * @param loadFn
25
+ * @param iterFn
26
+ * @returns
27
+ */
28
+ function iterateFilteredPages(inputPage, loadFn, iterFn) {
29
+ var _a, _b;
30
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
31
+ let currentPage = (_a = inputPage === null || inputPage === void 0 ? void 0 : inputPage.page) !== null && _a !== void 0 ? _a : 0;
32
+ let hasMore = true;
33
+ let count = 0;
34
+ if (!iterFn.use && !iterFn.usePage) {
35
+ throw new Error('Neither use nor usePage was specified.');
36
+ }
37
+ const useFn = (_b = iterFn.usePage) !== null && _b !== void 0 ? _b : ((values) => (0, iterate_1.iterate)(values, iterFn.use));
38
+ while (hasMore) {
39
+ const page = filteredPage(currentPage, inputPage);
40
+ const values = yield loadFn(page);
41
+ yield useFn(values);
42
+ count += values.length;
43
+ currentPage += 1;
44
+ hasMore = values.length > 0;
45
+ }
46
+ return count;
47
+ });
48
+ }
49
+ exports.iterateFilteredPages = iterateFilteredPages;
50
+ /**
51
+ * @deprecated
52
+ */
53
+ class FilteredPageUtility {
54
+ static page(page, request) {
55
+ return {
56
+ page,
57
+ filter: Object.assign({}, request === null || request === void 0 ? void 0 : request.filter)
58
+ };
59
+ }
60
+ static filter(filter, request) {
61
+ return {
62
+ page: request === null || request === void 0 ? void 0 : request.page,
63
+ filter: Object.assign({}, request === null || request === void 0 ? void 0 : request.filter, filter)
64
+ };
65
+ }
66
+ }
67
+ exports.FilteredPageUtility = FilteredPageUtility;
68
+ //# sourceMappingURL=page.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.filter.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/page.filter.ts"],"names":[],"mappings":";;;;AAEA,wCAA+D;AAyB/D;;;;;;GAMG;AACH,SAAgB,YAAY,CAAU,IAAY,EAAE,OAAmB;IACrE,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC,CAAC,mBAAM,OAAO,CAAC,MAAM,EAAG,CAAC,CAAC,SAAS;KAC9D,CAAC;AACJ,CAAC;AALD,oCAKC;AAGD;;;;;;;GAOG;AACH,SAAsB,oBAAoB,CAAO,SAA0B,EAAE,MAA+C,EAAE,MAAgC;;;QAC5J,IAAI,WAAW,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,mCAAI,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QAED,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,IAAA,iBAAO,EAAC,MAAM,EAAE,MAAM,CAAC,GAAI,CAAC,CAAC,CAAC;QAEhF,OAAO,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAElC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAEpB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;YACvB,WAAW,IAAI,CAAC,CAAC;YACjB,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7B;QAED,OAAO,KAAK,CAAC;;CACd;AAvBD,oDAuBC;AAGD;;GAEG;AACH,MAAa,mBAAmB;IAE9B,MAAM,CAAC,IAAI,CAAU,IAAY,EAAE,OAAyB;QAC1D,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAU,MAAS,EAAE,OAAyB;QACzD,OAAO;YACL,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,MAAM,CAAC;SACnD,CAAC;IACJ,CAAC;CAEF;AAhBD,kDAgBC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isFinalPage = exports.getNextPageNumber = exports.getPageNumber = exports.FINAL_PAGE = exports.FIRST_PAGE = exports.UNLOADED_PAGE = void 0;
4
+ /**
5
+ * Page value used when no list items have been loaded.
6
+ */
7
+ exports.UNLOADED_PAGE = -1;
8
+ /**
9
+ * The first page of results.
10
+ */
11
+ exports.FIRST_PAGE = 0;
12
+ /**
13
+ * Page value used when there are no elements left to load.
14
+ */
15
+ exports.FINAL_PAGE = -2;
16
+ // MARK: Utility
17
+ function getPageNumber(page) {
18
+ var _a;
19
+ return (_a = page === null || page === void 0 ? void 0 : page.page) !== null && _a !== void 0 ? _a : exports.UNLOADED_PAGE;
20
+ }
21
+ exports.getPageNumber = getPageNumber;
22
+ function getNextPageNumber(page) {
23
+ return (getPageNumber(page) + 1);
24
+ }
25
+ exports.getNextPageNumber = getNextPageNumber;
26
+ function isFinalPage(page) {
27
+ return (page === null || page === void 0 ? void 0 : page.page) === exports.FINAL_PAGE;
28
+ }
29
+ exports.isFinalPage = isFinalPage;
30
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/page/page.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACU,QAAA,UAAU,GAAG,CAAC,CAAC;AAE5B;;GAEG;AACU,QAAA,UAAU,GAAG,CAAC,CAAC,CAAC;AAkB7B,gBAAgB;AAChB,SAAgB,aAAa,CAAC,IAAiB;;IAC7C,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mCAAI,qBAAa,CAAC;AACrC,CAAC;AAFD,sCAEC;AAED,SAAgB,iBAAiB,CAAC,IAAiB;IACjD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAFD,8CAEC;AAED,SAAgB,WAAW,CAAC,IAAiB;IAC3C,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,kBAAU,CAAC;AACnC,CAAC;AAFD,kCAEC"}
@@ -0,0 +1,2 @@
1
+ export * from './promise';
2
+ export * from './promise.loop';
@@ -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("./promise"), exports);
5
+ (0, tslib_1.__exportStar)(require("./promise.loop"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B;AAC1B,8DAA+B"}
@@ -0,0 +1,42 @@
1
+ import { Maybe } from "../value";
2
+ export declare type PromiseTaskFn<T, K = any> = (value: T, tryNumber?: number) => Promise<K>;
3
+ export interface PerformTaskResult<O> {
4
+ value: Maybe<O>;
5
+ success: boolean;
6
+ }
7
+ export interface PerformTasksResult<T, K> {
8
+ succeded: T[];
9
+ failed: T[];
10
+ results: [T, K][];
11
+ }
12
+ export interface PerformTaskConfig<T = any> {
13
+ throwError?: boolean;
14
+ retriesAllowed?: number;
15
+ retryWait?: number;
16
+ /**
17
+ * Optional function to use before a retry.
18
+ */
19
+ beforeRetry?: (value: T, tryNumber?: number) => void | Promise<void>;
20
+ }
21
+ export declare type ValueTaskConfig<T = any> = Omit<PerformTaskConfig<T>, 'throwError'>;
22
+ export interface PerformTasksConfig<T = any> extends PerformTaskConfig<T> {
23
+ /**
24
+ * Whether or not tasks are performed sequentially or if tasks are all done in "parellel".
25
+ */
26
+ sequential?: boolean;
27
+ }
28
+ export declare class PromiseUtility {
29
+ /**
30
+ * Runs the task using the input config, and returns the value. Is always configured to throw the error if it fails.
31
+ */
32
+ static runTaskForValue<O>(taskFn: () => Promise<O>, config?: ValueTaskConfig<0>): Promise<Maybe<O>>;
33
+ /**
34
+ * Performs the input tasks, and will retry tasks if they fail, up to a certain point.
35
+ *
36
+ * This is useful for retrying sections that may experience optimistic concurrency collisions.
37
+ */
38
+ static performTasks<T, K = any>(input: T[], taskFn: PromiseTaskFn<T, K>, config?: PerformTasksConfig<T>): Promise<PerformTasksResult<T, K>>;
39
+ static performTask<O>(taskFn: () => Promise<O>, config?: PerformTaskConfig<0>): Promise<PerformTaskResult<O>>;
40
+ static _performTask<I, O>(value: I, taskFn: PromiseTaskFn<I, O>, { throwError, retriesAllowed, retryWait, beforeRetry }?: PerformTaskConfig<I>): Promise<[I, O, boolean]>;
41
+ static wait(ms: number): Promise<void>;
42
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromiseUtility = void 0;
4
+ const tslib_1 = require("tslib");
5
+ class PromiseUtility {
6
+ // MARK: Run
7
+ /**
8
+ * Runs the task using the input config, and returns the value. Is always configured to throw the error if it fails.
9
+ */
10
+ static runTaskForValue(taskFn, config) {
11
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
12
+ const { value } = yield this.performTask(taskFn, Object.assign(Object.assign({}, config), { throwError: true }));
13
+ return value;
14
+ });
15
+ }
16
+ // MARK: Perform
17
+ /**
18
+ * Performs the input tasks, and will retry tasks if they fail, up to a certain point.
19
+ *
20
+ * This is useful for retrying sections that may experience optimistic concurrency collisions.
21
+ */
22
+ static performTasks(input, taskFn, config = { throwError: true }) {
23
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
24
+ let taskResults;
25
+ if (config.sequential) {
26
+ taskResults = [];
27
+ for (let i = 0; i < input.length; i += 1) {
28
+ const value = input[i];
29
+ const taskResult = yield PromiseUtility._performTask(value, taskFn, config);
30
+ taskResults.push(taskResult);
31
+ }
32
+ }
33
+ else {
34
+ taskResults = yield Promise.all(input.map((value) => PromiseUtility._performTask(value, taskFn, config)));
35
+ }
36
+ const succeded = [];
37
+ const failed = [];
38
+ const results = [];
39
+ taskResults.forEach((x) => {
40
+ const success = x[2];
41
+ if (success) {
42
+ succeded.push(x[0]);
43
+ results.push([x[0], x[1]]);
44
+ }
45
+ else {
46
+ failed.push(x[0]);
47
+ }
48
+ });
49
+ return {
50
+ succeded,
51
+ failed,
52
+ results
53
+ };
54
+ });
55
+ }
56
+ static performTask(taskFn, config) {
57
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
58
+ const [_, value, success] = yield PromiseUtility._performTask(0, () => taskFn(), config);
59
+ return { value, success };
60
+ });
61
+ }
62
+ static _performTask(value, taskFn, { throwError, retriesAllowed = 5, retryWait = 200, beforeRetry } = { throwError: true }) {
63
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
64
+ function tryTask(value, tryNumber) {
65
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
66
+ try {
67
+ const result = yield taskFn(value, tryNumber);
68
+ return [result, true];
69
+ }
70
+ catch (e) {
71
+ return [e, false];
72
+ }
73
+ });
74
+ }
75
+ function iterateTask(value, tryNumber) {
76
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
77
+ const result = yield tryTask(value, tryNumber);
78
+ const success = result[1];
79
+ if (success) {
80
+ return [value, ...result];
81
+ }
82
+ const retriesRemaining = retriesAllowed - tryNumber;
83
+ if (retriesRemaining > 0) {
84
+ function doNextTry() {
85
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
86
+ const nextTryNumber = tryNumber + 1;
87
+ if (beforeRetry) {
88
+ yield beforeRetry(value, nextTryNumber);
89
+ }
90
+ return iterateTask(value, tryNumber + 1);
91
+ });
92
+ }
93
+ ;
94
+ return (retryWait) ? PromiseUtility.wait(retryWait).then(() => doNextTry()) : doNextTry();
95
+ }
96
+ else {
97
+ // Error out.
98
+ if (throwError) {
99
+ throw result[0];
100
+ }
101
+ else {
102
+ return [value, undefined, false];
103
+ }
104
+ }
105
+ });
106
+ }
107
+ return iterateTask(value, 0);
108
+ });
109
+ }
110
+ static wait(ms, value) {
111
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
112
+ return new Promise(resolve => setTimeout(resolve, ms, value));
113
+ });
114
+ }
115
+ }
116
+ exports.PromiseUtility = PromiseUtility;
117
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Maybe } from "../value";
2
+ export interface PerformTaskLoopConfig<O> {
3
+ next: (i: number, prev: Maybe<O>) => Promise<O>;
4
+ checkContinue: (prev: Maybe<O>, i: number) => boolean;
5
+ }
6
+ export interface PerformTaskLoopWithInitConfig<O> {
7
+ initValue: O;
8
+ next: (i: number, prev: O) => Promise<O>;
9
+ checkContinue: (prev: O, i: number) => boolean;
10
+ }
11
+ export declare function performTaskLoop<O>(config: PerformTaskLoopConfig<O>): Promise<Maybe<O>>;
12
+ export declare function performTaskLoop<O>(config: PerformTaskLoopWithInitConfig<O>): Promise<O>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performTaskLoop = void 0;
4
+ const tslib_1 = require("tslib");
5
+ function performTaskLoop(config) {
6
+ return new Promise((resolve, reject) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
7
+ try {
8
+ let startLoop = config.initValue == null || config.checkContinue(config.initValue, -1);
9
+ if (startLoop) {
10
+ let i = 0;
11
+ let prevValue = config.initValue;
12
+ let check;
13
+ do {
14
+ prevValue = yield config.next(i, prevValue);
15
+ i += 1;
16
+ check = config.checkContinue(prevValue, i);
17
+ } while (check);
18
+ resolve(prevValue);
19
+ }
20
+ else {
21
+ resolve(config.initValue);
22
+ }
23
+ }
24
+ catch (e) {
25
+ reject(e);
26
+ }
27
+ }));
28
+ }
29
+ exports.performTaskLoop = performTaskLoop;
30
+ //# sourceMappingURL=promise.loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.loop.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/promise/promise.loop.ts"],"names":[],"mappings":";;;;AAgBA,SAAgB,eAAe,CAAI,MAAW;IAC5C,OAAO,IAAI,OAAO,CAAI,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,IAAI;YACF,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAEvF,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,SAAS,GAAa,MAAM,CAAC,SAAS,CAAC;gBAC3C,IAAI,KAAc,CAAC;gBAEnB,GAAG;oBACD,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC5C,CAAC,IAAI,CAAC,CAAC;oBACP,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;iBAC5C,QAAQ,KAAK,EAAE;gBAEhB,OAAO,CAAC,SAAU,CAAC,CAAC;aACrB;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC3B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AAxBD,0CAwBC"}
@@ -0,0 +1 @@
1
+ export * from './relation';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./relation"), exports);
5
+ //# sourceMappingURL=index.js.map