@firestitch/common 15.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/app/directives/auto-focus.directive.d.ts +1 -1
  2. package/app/directives/auto-select.directive.d.ts +1 -1
  3. package/app/directives/model-change.directive.d.ts +1 -1
  4. package/esm2022/app/directives/auto-focus.directive.mjs +61 -0
  5. package/esm2022/app/directives/auto-select.directive.mjs +32 -0
  6. package/esm2022/app/directives/model-change.directive.mjs +39 -0
  7. package/{esm2020 → esm2022}/app/directives/prevent-default.directive.mjs +4 -4
  8. package/{esm2020 → esm2022}/app/directives/stop-propagation.directive.mjs +4 -4
  9. package/{esm2020 → esm2022}/app/fs-common.module.mjs +31 -31
  10. package/{esm2020 → esm2022}/app/pipes/bytes.pipe.mjs +4 -4
  11. package/esm2022/app/pipes/currency.pipe.mjs +24 -0
  12. package/{esm2020 → esm2022}/app/pipes/number.pipe.mjs +4 -4
  13. package/{esm2020 → esm2022}/app/pipes/ordinal-number.pipe.mjs +4 -4
  14. package/{esm2020 → esm2022}/app/pipes/truncate.pipe.mjs +5 -5
  15. package/{esm2020 → esm2022}/app/pipes/util.pipe.mjs +15 -15
  16. package/esm2022/app/services/array.service.mjs +225 -0
  17. package/{esm2020 → esm2022}/app/services/math.service.mjs +4 -4
  18. package/esm2022/app/services/util.service.mjs +249 -0
  19. package/esm2022/app/services/vaildate.service.mjs +29 -0
  20. package/{esm2020 → esm2022}/libs/array/compare/compare.mjs +1 -1
  21. package/esm2022/libs/array/filter/filter.mjs +27 -0
  22. package/esm2022/libs/array/inArray/inArray.mjs +12 -0
  23. package/esm2022/libs/array/indexOf/indexOf.mjs +16 -0
  24. package/{esm2020 → esm2022}/libs/array/list/list.mjs +1 -1
  25. package/esm2022/libs/array/nameValue/nameValue.mjs +21 -0
  26. package/{esm2020 → esm2022}/libs/array/remove/remove.mjs +1 -1
  27. package/esm2022/libs/array/sort/sort.mjs +27 -0
  28. package/esm2022/libs/format/acronym/acronym.mjs +22 -0
  29. package/esm2022/libs/format/bytes/bytes.mjs +18 -0
  30. package/{esm2020 → esm2022}/libs/format/number/number.mjs +1 -1
  31. package/esm2022/libs/format/truncate/truncate.mjs +12 -0
  32. package/esm2022/libs/rxjs/delayedRetry.mjs +20 -0
  33. package/esm2022/libs/util/clone/clone.mjs +21 -0
  34. package/esm2022/libs/util/guid/guid.mjs +19 -0
  35. package/esm2022/libs/util/is-array-equal/is-array-equal.mjs +22 -0
  36. package/esm2022/libs/util/is-class/is-class.mjs +18 -0
  37. package/esm2022/libs/util/length/length.mjs +10 -0
  38. package/esm2022/libs/util/queue/operation.mjs +17 -0
  39. package/esm2022/libs/util/queue/queue.mjs +166 -0
  40. package/esm2022/libs/util/source-loader/source-loader.mjs +155 -0
  41. package/esm2022/libs/util/throttle/throttle.mjs +13 -0
  42. package/{esm2020 → esm2022}/libs/util/to-string/to-string.mjs +1 -1
  43. package/esm2022/libs/util/value/value.mjs +9 -0
  44. package/{fesm2020 → fesm2022}/firestitch-common.mjs +136 -128
  45. package/fesm2022/firestitch-common.mjs.map +1 -0
  46. package/package.json +5 -11
  47. package/esm2020/app/directives/auto-focus.directive.mjs +0 -59
  48. package/esm2020/app/directives/auto-select.directive.mjs +0 -31
  49. package/esm2020/app/directives/model-change.directive.mjs +0 -37
  50. package/esm2020/app/pipes/currency.pipe.mjs +0 -23
  51. package/esm2020/app/services/array.service.mjs +0 -225
  52. package/esm2020/app/services/util.service.mjs +0 -251
  53. package/esm2020/app/services/vaildate.service.mjs +0 -28
  54. package/esm2020/libs/array/filter/filter.mjs +0 -27
  55. package/esm2020/libs/array/inArray/inArray.mjs +0 -12
  56. package/esm2020/libs/array/indexOf/indexOf.mjs +0 -16
  57. package/esm2020/libs/array/nameValue/nameValue.mjs +0 -21
  58. package/esm2020/libs/array/sort/sort.mjs +0 -27
  59. package/esm2020/libs/format/acronym/acronym.mjs +0 -22
  60. package/esm2020/libs/format/bytes/bytes.mjs +0 -18
  61. package/esm2020/libs/format/truncate/truncate.mjs +0 -12
  62. package/esm2020/libs/rxjs/delayedRetry.mjs +0 -20
  63. package/esm2020/libs/util/clone/clone.mjs +0 -21
  64. package/esm2020/libs/util/guid/guid.mjs +0 -19
  65. package/esm2020/libs/util/is-array-equal/is-array-equal.mjs +0 -22
  66. package/esm2020/libs/util/is-class/is-class.mjs +0 -18
  67. package/esm2020/libs/util/length/length.mjs +0 -10
  68. package/esm2020/libs/util/queue/operation.mjs +0 -15
  69. package/esm2020/libs/util/queue/queue.mjs +0 -165
  70. package/esm2020/libs/util/source-loader/source-loader.mjs +0 -155
  71. package/esm2020/libs/util/throttle/throttle.mjs +0 -13
  72. package/esm2020/libs/util/value/value.mjs +0 -9
  73. package/fesm2015/firestitch-common.mjs +0 -1754
  74. package/fesm2015/firestitch-common.mjs.map +0 -1
  75. package/fesm2020/firestitch-common.mjs.map +0 -1
  76. /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
  77. /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
  78. /package/{esm2020 → esm2022}/firestitch-common.mjs +0 -0
  79. /package/{esm2020 → esm2022}/libs/array/compare/index.mjs +0 -0
  80. /package/{esm2020 → esm2022}/libs/array/filter/index.mjs +0 -0
  81. /package/{esm2020 → esm2022}/libs/array/find/find.mjs +0 -0
  82. /package/{esm2020 → esm2022}/libs/array/find/index.mjs +0 -0
  83. /package/{esm2020 → esm2022}/libs/array/inArray/index.mjs +0 -0
  84. /package/{esm2020 → esm2022}/libs/array/index/index.mjs +0 -0
  85. /package/{esm2020 → esm2022}/libs/array/index.mjs +0 -0
  86. /package/{esm2020 → esm2022}/libs/array/indexOf/index.mjs +0 -0
  87. /package/{esm2020 → esm2022}/libs/array/keyExists/index.mjs +0 -0
  88. /package/{esm2020 → esm2022}/libs/array/keyExists/keyExists.mjs +0 -0
  89. /package/{esm2020 → esm2022}/libs/array/ksort/index.mjs +0 -0
  90. /package/{esm2020 → esm2022}/libs/array/ksort/ksort.mjs +0 -0
  91. /package/{esm2020 → esm2022}/libs/array/list/index.mjs +0 -0
  92. /package/{esm2020 → esm2022}/libs/array/nameValue/index.mjs +0 -0
  93. /package/{esm2020 → esm2022}/libs/array/remove/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/libs/array/rsort/index.mjs +0 -0
  95. /package/{esm2020 → esm2022}/libs/array/rsort/rsort.mjs +0 -0
  96. /package/{esm2020 → esm2022}/libs/array/sort/index.mjs +0 -0
  97. /package/{esm2020 → esm2022}/libs/format/acronym/index.mjs +0 -0
  98. /package/{esm2020 → esm2022}/libs/format/bytes/index.mjs +0 -0
  99. /package/{esm2020 → esm2022}/libs/format/currency/currency.mjs +0 -0
  100. /package/{esm2020 → esm2022}/libs/format/currency/index.mjs +0 -0
  101. /package/{esm2020 → esm2022}/libs/format/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/libs/format/number/index.mjs +0 -0
  103. /package/{esm2020 → esm2022}/libs/format/truncate/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/libs/index.mjs +0 -0
  105. /package/{esm2020 → esm2022}/libs/rxjs/keyboard-shortcut.mjs +0 -0
  106. /package/{esm2020 → esm2022}/libs/util/boolean/boolean.mjs +0 -0
  107. /package/{esm2020 → esm2022}/libs/util/boolean/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/libs/util/clone/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/libs/util/debounce/debounce.mjs +0 -0
  110. /package/{esm2020 → esm2022}/libs/util/debounce/index.mjs +0 -0
  111. /package/{esm2020 → esm2022}/libs/util/get-normalized-path/get-normalized-path.mjs +0 -0
  112. /package/{esm2020 → esm2022}/libs/util/get-normalized-path/index.mjs +0 -0
  113. /package/{esm2020 → esm2022}/libs/util/guid/index.mjs +0 -0
  114. /package/{esm2020 → esm2022}/libs/util/index.mjs +0 -0
  115. /package/{esm2020 → esm2022}/libs/util/is-array-equal/index.mjs +0 -0
  116. /package/{esm2020 → esm2022}/libs/util/is-class/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/libs/util/is-empty/index.mjs +0 -0
  118. /package/{esm2020 → esm2022}/libs/util/is-empty/is-empty.mjs +0 -0
  119. /package/{esm2020 → esm2022}/libs/util/is-numeric/index.mjs +0 -0
  120. /package/{esm2020 → esm2022}/libs/util/is-numeric/is-numeric.mjs +0 -0
  121. /package/{esm2020 → esm2022}/libs/util/is-object/index.mjs +0 -0
  122. /package/{esm2020 → esm2022}/libs/util/is-object/is-object.mjs +0 -0
  123. /package/{esm2020 → esm2022}/libs/util/keys/index.mjs +0 -0
  124. /package/{esm2020 → esm2022}/libs/util/keys/keys.mjs +0 -0
  125. /package/{esm2020 → esm2022}/libs/util/length/index.mjs +0 -0
  126. /package/{esm2020 → esm2022}/libs/util/ordinal-number/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/libs/util/ordinal-number/ordinal-number.mjs +0 -0
  128. /package/{esm2020 → esm2022}/libs/util/queue/index.mjs +0 -0
  129. /package/{esm2020 → esm2022}/libs/util/queue/queue-stats.mjs +0 -0
  130. /package/{esm2020 → esm2022}/libs/util/queue/queue.enum.mjs +0 -0
  131. /package/{esm2020 → esm2022}/libs/util/remove-query-params/index.mjs +0 -0
  132. /package/{esm2020 → esm2022}/libs/util/remove-query-params/remove-query-params.mjs +0 -0
  133. /package/{esm2020 → esm2022}/libs/util/resolve/index.mjs +0 -0
  134. /package/{esm2020 → esm2022}/libs/util/resolve/resolve.mjs +0 -0
  135. /package/{esm2020 → esm2022}/libs/util/round/index.mjs +0 -0
  136. /package/{esm2020 → esm2022}/libs/util/round/round.mjs +0 -0
  137. /package/{esm2020 → esm2022}/libs/util/source-loader/index.mjs +0 -0
  138. /package/{esm2020 → esm2022}/libs/util/stringify/index.mjs +0 -0
  139. /package/{esm2020 → esm2022}/libs/util/stringify/stringify.mjs +0 -0
  140. /package/{esm2020 → esm2022}/libs/util/throttle/index.mjs +0 -0
  141. /package/{esm2020 → esm2022}/libs/util/to-string/index.mjs +0 -0
  142. /package/{esm2020 → esm2022}/libs/util/uuid/index.mjs +0 -0
  143. /package/{esm2020 → esm2022}/libs/util/uuid/uuid.mjs +0 -0
  144. /package/{esm2020 → esm2022}/libs/util/value/index.mjs +0 -0
  145. /package/{esm2020 → esm2022}/libs/validate/email/email.mjs +0 -0
  146. /package/{esm2020 → esm2022}/libs/validate/email/index.mjs +0 -0
  147. /package/{esm2020 → esm2022}/libs/validate/index.mjs +0 -0
  148. /package/{esm2020 → esm2022}/libs/validate/phone/index.mjs +0 -0
  149. /package/{esm2020 → esm2022}/libs/validate/phone/phone.mjs +0 -0
  150. /package/{esm2020 → esm2022}/libs/validate/url/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/libs/validate/url/url.mjs +0 -0
  152. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -0,0 +1,12 @@
1
+ export function inArray(values, array) {
2
+ if (!Array.isArray(values)) {
3
+ values = [values];
4
+ }
5
+ for (let i = 0, len = values.length; i < len; i++) {
6
+ if (array.indexOf(values[i]) >= 0) {
7
+ return true;
8
+ }
9
+ }
10
+ return false;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5BcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2luQXJyYXkvaW5BcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLO0lBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbkFycmF5KHZhbHVlcywgYXJyYXkpIHtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHZhbHVlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheS5pbmRleE9mKHZhbHVlc1tpXSkgPj0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { compare } from '../compare';
2
+ export function indexOf(array, query) {
3
+ if (typeof query !== 'function') {
4
+ const queryObj = query;
5
+ query = (item) => {
6
+ return compare(queryObj, item);
7
+ };
8
+ }
9
+ for (let i = 0, len = array.length; i < len; i++) {
10
+ if (query(array[i])) {
11
+ return i;
12
+ }
13
+ }
14
+ return -1;
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhPZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2luZGV4T2YvaW5kZXhPZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUs7SUFFbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkIsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFFZixPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBhcmUgfSBmcm9tICcuLi9jb21wYXJlJztcbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCBxdWVyeSkge1xuXG4gIGlmICh0eXBlb2YgcXVlcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBxdWVyeU9iaiA9IHF1ZXJ5O1xuICAgIHF1ZXJ5ID0gKGl0ZW0pID0+IHtcblxuICAgICAgcmV0dXJuIGNvbXBhcmUocXVlcnlPYmosIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChxdWVyeShhcnJheVtpXSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cbiJdfQ==
@@ -10,4 +10,4 @@ export function list(array, property, index = null) {
10
10
  });
11
11
  return resultList;
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2xpc3QvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDaEQsTUFBTSxVQUFVLEdBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFDL0IsSUFBSSxLQUFLLEVBQUU7WUFDVCxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGxpc3QoYXJyYXksIHByb3BlcnR5LCBpbmRleCA9IG51bGwpIHtcbiAgY29uc3QgcmVzdWx0TGlzdDogYW55ID0gaW5kZXggPyB7fSA6IFtdO1xuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpZHgpIHtcbiAgICBpZiAoaW5kZXgpIHtcbiAgICAgIHJlc3VsdExpc3RbaXRlbVtpbmRleF1dID0gaXRlbVtwcm9wZXJ0eV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdExpc3QucHVzaChpdGVtW3Byb3BlcnR5XSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdExpc3Q7XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2xpc3QvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDaEQsTUFBTSxVQUFVLEdBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFDL0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbGlzdChhcnJheSwgcHJvcGVydHksIGluZGV4ID0gbnVsbCkge1xuICBjb25zdCByZXN1bHRMaXN0OiBhbnkgPSBpbmRleCA/IHt9IDogW107XG4gIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGlkeCkge1xuICAgIGlmIChpbmRleCkge1xuICAgICAgcmVzdWx0TGlzdFtpdGVtW2luZGV4XV0gPSBpdGVtW3Byb3BlcnR5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0TGlzdC5wdXNoKGl0ZW1bcHJvcGVydHldKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0TGlzdDtcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ export function nameValue(array, name, value) {
2
+ const list = [];
3
+ if (name || value) {
4
+ const nameFn = typeof name === 'function' ? name : function (item) {
5
+ return item[name];
6
+ };
7
+ const valueFn = typeof value === 'function' ? value : function (item) {
8
+ return item[value];
9
+ };
10
+ array.forEach(function (item) {
11
+ list.push({ name: nameFn(item), value: valueFn(item) });
12
+ });
13
+ }
14
+ else {
15
+ array.forEach(function (n, v) {
16
+ list.push({ name: n, value: v });
17
+ });
18
+ }
19
+ return list;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZVZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvYXJyYXkvbmFtZVZhbHVlL25hbWVWYWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUUxQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFFbEIsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSTtZQUMvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJO1lBQ2xFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztTQUFNLENBQUM7UUFDTixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5hbWVWYWx1ZShhcnJheSwgbmFtZSwgdmFsdWUpIHtcblxuICBjb25zdCBsaXN0ID0gW107XG4gIGlmIChuYW1lIHx8IHZhbHVlKSB7XG5cbiAgICBjb25zdCBuYW1lRm4gPSB0eXBlb2YgbmFtZSA9PT0gJ2Z1bmN0aW9uJyA/IG5hbWUgOiBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW1bbmFtZV07XG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZUZuID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW1bdmFsdWVdO1xuICAgIH07XG5cbiAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBsaXN0LnB1c2goe25hbWU6IG5hbWVGbihpdGVtKSwgdmFsdWU6IHZhbHVlRm4oaXRlbSl9KTtcbiAgICB9KTtcblxuICB9IGVsc2Uge1xuICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG4sIHYpIHtcbiAgICAgIGxpc3QucHVzaCh7bmFtZTogbiwgdmFsdWU6IHZ9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIl19
@@ -6,4 +6,4 @@ export function remove(array, query) {
6
6
  }
7
7
  return idx;
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvYXJyYXkvcmVtb3ZlL3JlbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUs7SUFFakMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVsQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDWixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzdCO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5kZXhPZiB9IGZyb20gJy4uL2luZGV4T2YnO1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcXVlcnkpIHtcblxuICBjb25zdCBpZHggPSBpbmRleE9mKGFycmF5LCBxdWVyeSk7XG5cbiAgaWYgKGlkeCA+PSAwKSB7XG4gICAgcmV0dXJuIGFycmF5LnNwbGljZShpZHgsIDEpO1xuICB9XG5cbiAgcmV0dXJuIGlkeDtcbn1cbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvYXJyYXkvcmVtb3ZlL3JlbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUs7SUFFakMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVsQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNiLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluZGV4T2YgfSBmcm9tICcuLi9pbmRleE9mJztcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHF1ZXJ5KSB7XG5cbiAgY29uc3QgaWR4ID0gaW5kZXhPZihhcnJheSwgcXVlcnkpO1xuXG4gIGlmIChpZHggPj0gMCkge1xuICAgIHJldHVybiBhcnJheS5zcGxpY2UoaWR4LCAxKTtcbiAgfVxuXG4gIHJldHVybiBpZHg7XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ export function sort(array, query, reverse = false) {
2
+ if (typeof query !== 'function') {
3
+ const queryStr = query;
4
+ query = function (a, b) {
5
+ if (reverse) {
6
+ if (a[queryStr] < b[queryStr]) {
7
+ return 1;
8
+ }
9
+ else if (a[queryStr] > b[queryStr]) {
10
+ return -1;
11
+ }
12
+ }
13
+ else {
14
+ if (a[queryStr] > b[queryStr]) {
15
+ return 1;
16
+ }
17
+ else if (a[queryStr] < b[queryStr]) {
18
+ return -1;
19
+ }
20
+ }
21
+ return 0;
22
+ };
23
+ }
24
+ array.sort(query);
25
+ return array;
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L3NvcnQvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDaEQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDWixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUM5QixPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDO3FCQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNyQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc29ydChhcnJheSwgcXVlcnksIHJldmVyc2UgPSBmYWxzZSkge1xuICBpZiAodHlwZW9mIHF1ZXJ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcXVlcnlTdHIgPSBxdWVyeTtcbiAgICBxdWVyeSA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBpZiAoYVtxdWVyeVN0cl0gPCBiW3F1ZXJ5U3RyXSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKGFbcXVlcnlTdHJdID4gYltxdWVyeVN0cl0pIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhW3F1ZXJ5U3RyXSA+IGJbcXVlcnlTdHJdKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVtxdWVyeVN0cl0gPCBiW3F1ZXJ5U3RyXSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgfVxuXG4gIGFycmF5LnNvcnQocXVlcnkpO1xuICByZXR1cm4gYXJyYXk7XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export function acronym(str, length = 2) {
2
+ const splittedString = str
3
+ .replace(/[^a-zA-Z0-9]+/g, ' ')
4
+ .split(' ');
5
+ let result = '';
6
+ for (let i = 0; i < length; i++) {
7
+ if (!splittedString[i]) {
8
+ if (splittedString.length === 1) {
9
+ for (let j = 1; j < length; j++) {
10
+ if (!splittedString[i - 1][j]) {
11
+ break;
12
+ }
13
+ result += splittedString[i - 1][j].toUpperCase();
14
+ }
15
+ }
16
+ break;
17
+ }
18
+ result += splittedString[i][0].toUpperCase();
19
+ }
20
+ return result;
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNyb255bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2Zvcm1hdC9hY3JvbnltL2Fjcm9ueW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFXLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDN0MsTUFBTSxjQUFjLEdBQUcsR0FBRztTQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDO1NBQzlCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVkLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFFaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUM1QixNQUFNO29CQUNSLENBQUM7b0JBQ0QsTUFBTSxJQUFJLGNBQWMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTTtRQUNSLENBQUM7UUFDRCxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFjcm9ueW0oc3RyOiBzdHJpbmcsIGxlbmd0aCA9IDIpOiBzdHJpbmcge1xuICBjb25zdCBzcGxpdHRlZFN0cmluZyA9IHN0clxuICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csICcgJylcbiAgICAuc3BsaXQoJyAnKTtcblxuICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmICghc3BsaXR0ZWRTdHJpbmdbaV0pIHtcbiAgICAgIGlmIChzcGxpdHRlZFN0cmluZy5sZW5ndGggPT09IDEpIHtcblxuICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgaWYgKCFzcGxpdHRlZFN0cmluZ1tpLTFdW2pdKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ICs9IHNwbGl0dGVkU3RyaW5nW2ktMV1bal0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJlc3VsdCArPSBzcGxpdHRlZFN0cmluZ1tpXVswXS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { isNumeric } from '../../../libs';
2
+ export function bytes(bytes, decimals, unit) {
3
+ if (!bytes) {
4
+ return '0 MB';
5
+ }
6
+ const e = typeof unit === 'string' ?
7
+ 'KMGTP'.indexOf(unit.replace('B', '')) + 1 :
8
+ Math.floor(Math.log(bytes) / Math.log(1024));
9
+ if (!isNumeric(decimals)) {
10
+ decimals = (bytes / 1024) > 1000 ? 2 : 0;
11
+ }
12
+ return `${(bytes / Math.pow(1024, e))
13
+ .toFixed(decimals)}`
14
+ .replace(/\.00/, '')
15
+ + ' '
16
+ + (e ? ' KMGTP'.charAt(e) : '') + 'B';
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9mb3JtYXQvYnl0ZXMvYnl0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQWEsRUFBRSxRQUFpQixFQUFFLElBQXVDO0lBQzdGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUvQyxJQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDeEIsUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDbkIsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7VUFDbEIsR0FBRztVQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtZXJpYyB9IGZyb20gJy4uLy4uLy4uL2xpYnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnl0ZXMoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHM/OiBudW1iZXIsIHVuaXQ/OiAnS0InIHwgJ01CJyB8ICdHQicgfCAnVEInIHwgJ1BCJykge1xuICBpZiAoIWJ5dGVzKSB7IFxuICAgIHJldHVybiAnMCBNQic7IFxuICB9XG4gIGNvbnN0IGUgPSB0eXBlb2YgdW5pdCA9PT0gJ3N0cmluZycgP1xuICAgICdLTUdUUCcuaW5kZXhPZih1bml0LnJlcGxhY2UoJ0InLCAnJykpICsgMSA6XG4gICAgTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZygxMDI0KSk7XG5cbiAgaWYoIWlzTnVtZXJpYyhkZWNpbWFscykpIHtcbiAgICBkZWNpbWFscyA9IChieXRlcyAvIDEwMjQpID4gMTAwMCA/IDIgOiAwO1xuICB9XG5cbiAgcmV0dXJuIGAkeyhieXRlcyAvIE1hdGgucG93KDEwMjQsIGUpKVxuICAgIC50b0ZpeGVkKGRlY2ltYWxzKX1gXG4gICAgLnJlcGxhY2UoL1xcLjAwLywgJycpXG4gICAgKyAnICdcbiAgICArIChlID8gJyBLTUdUUCcuY2hhckF0KGUpIDogJycpICsgJ0InO1xufVxuIl19
@@ -5,4 +5,4 @@ export function number(value, decimals) {
5
5
  }
6
6
  return Number(value || 0).toLocaleString(undefined, { maximumFractionDigits: decimals });
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvZm9ybWF0L251bWJlci9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUztJQUNyQyxJQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNoQztJQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUMzRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1lcmljLCByb3VuZCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyKHZhbHVlLCBkZWNpbWFscz8pIHtcbiAgaWYoaXNOdW1lcmljKGRlY2ltYWxzKSkge1xuICAgIHZhbHVlID0gcm91bmQodmFsdWUsIGRlY2ltYWxzKTtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUgfHwgMCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogZGVjaW1hbHMgfSk7XG59XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvZm9ybWF0L251bWJlci9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUztJQUNyQyxJQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtZXJpYywgcm91bmQgfSBmcm9tICcuLi8uLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlcih2YWx1ZSwgZGVjaW1hbHM/KSB7XG4gIGlmKGlzTnVtZXJpYyhkZWNpbWFscykpIHtcbiAgICB2YWx1ZSA9IHJvdW5kKHZhbHVlLCBkZWNpbWFscyk7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHZhbHVlIHx8IDApLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGRlY2ltYWxzIH0pO1xufVxuIl19
@@ -0,0 +1,12 @@
1
+ export function truncate(value, limit = 100, completeWords = false, ellipsis = '...') {
2
+ value = value || '';
3
+ if (completeWords) {
4
+ limit = value.substr(0, limit).lastIndexOf(' ');
5
+ }
6
+ let result = `${value.substr(0, limit)}`;
7
+ if (result !== value) {
8
+ result += ellipsis;
9
+ }
10
+ return result;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9mb3JtYXQvdHJ1bmNhdGUvdHJ1bmNhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFhLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxhQUFhLEdBQUcsS0FBSyxFQUFFLFFBQVEsR0FBRyxLQUFLO0lBRTFGLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRXBCLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBRXpDLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBRWhCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdHJ1bmNhdGUodmFsdWU6IHN0cmluZywgbGltaXQgPSAxMDAsIGNvbXBsZXRlV29yZHMgPSBmYWxzZSwgZWxsaXBzaXMgPSAnLi4uJykge1xuXG4gIHZhbHVlID0gdmFsdWUgfHwgJyc7XG5cbiAgaWYgKGNvbXBsZXRlV29yZHMpIHtcbiAgICBsaW1pdCA9IHZhbHVlLnN1YnN0cigwLCBsaW1pdCkubGFzdEluZGV4T2YoJyAnKTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSBgJHt2YWx1ZS5zdWJzdHIoMCwgbGltaXQpfWA7XG5cbiAgaWYgKHJlc3VsdCAhPT0gdmFsdWUpIHtcbiAgICByZXN1bHQgKz0gZWxsaXBzaXM7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xuXG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { iif, throwError, timer } from 'rxjs';
2
+ import { concatMap, retryWhen, tap } from 'rxjs/operators';
3
+ export function delayedRetry(delayMs, maxRetry = 5, message) {
4
+ let retries = 0;
5
+ return (src) => src.pipe(retryWhen((errors) => errors.pipe(tap(() => {
6
+ retries++;
7
+ if (retries <= maxRetry) {
8
+ console.info(`Failed to load Resource. Retry in ${delayMs / 1000} sec. ${retries}/${maxRetry} times...`);
9
+ }
10
+ }), concatMap((error) => iif(() => retries > maxRetry, throwError(getErrorMessage(maxRetry, message)), timer(delayMs))))));
11
+ }
12
+ const getErrorMessage = (maxRetry, defaultMessage) => {
13
+ if (!defaultMessage) {
14
+ return `Failed to load Resource for ${maxRetry} times. Giving up.`;
15
+ }
16
+ else {
17
+ return defaultMessage;
18
+ }
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXllZFJldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYnMvcnhqcy9kZWxheWVkUmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZSxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBZ0I7SUFDMUUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLE9BQU8sQ0FBQyxHQUF3QixFQUFFLEVBQUUsQ0FDbEMsR0FBRyxDQUFDLElBQUksQ0FDTixTQUFTLENBQUMsQ0FBQyxNQUEyQixFQUFFLEVBQUUsQ0FDeEMsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsT0FBTyxFQUFFLENBQUM7UUFFVixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxPQUFPLEdBQUcsSUFBSSxTQUFTLE9BQU8sSUFBSSxRQUFRLFdBQVcsQ0FBQyxDQUFBO1FBQzFHLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixHQUFHLENBQ0QsR0FBRyxFQUFFLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFDeEIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUNGLENBQ0YsQ0FBQTtBQUNMLENBQUM7QUFJRCxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLCtCQUErQixRQUFRLG9CQUFvQixDQUFDO0lBQ3JFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxjQUFjLENBQUE7SUFDdkIsQ0FBQztBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlpZiwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgcmV0cnlXaGVuLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5ZWRSZXRyeShkZWxheU1zOiBudW1iZXIsIG1heFJldHJ5ID0gNSwgbWVzc2FnZT86IHN0cmluZykge1xuICBsZXQgcmV0cmllcyA9IDA7XG5cbiAgcmV0dXJuIChzcmM6IE9ic2VydmFibGU8dW5rbm93bj4pID0+XG4gICAgc3JjLnBpcGUoXG4gICAgICByZXRyeVdoZW4oKGVycm9yczogT2JzZXJ2YWJsZTx1bmtub3duPikgPT5cbiAgICAgICAgZXJyb3JzLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHJpZXMrKztcblxuICAgICAgICAgICAgaWYgKHJldHJpZXMgPD0gbWF4UmV0cnkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5pbmZvKGBGYWlsZWQgdG8gbG9hZCBSZXNvdXJjZS4gUmV0cnkgaW4gJHtkZWxheU1zIC8gMTAwMH0gc2VjLiAke3JldHJpZXN9LyR7bWF4UmV0cnl9IHRpbWVzLi4uYClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjb25jYXRNYXAoKGVycm9yKSA9PlxuICAgICAgICAgICAgaWlmKFxuICAgICAgICAgICAgICAoKSA9PiByZXRyaWVzID4gbWF4UmV0cnksXG4gICAgICAgICAgICAgIHRocm93RXJyb3IoZ2V0RXJyb3JNZXNzYWdlKG1heFJldHJ5LCBtZXNzYWdlKSksXG4gICAgICAgICAgICAgIHRpbWVyKGRlbGF5TXMpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICApXG4gICAgKVxufVxuXG5cblxuY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKG1heFJldHJ5OiBudW1iZXIsIGRlZmF1bHRNZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFkZWZhdWx0TWVzc2FnZSkge1xuICAgIHJldHVybiBgRmFpbGVkIHRvIGxvYWQgUmVzb3VyY2UgZm9yICR7bWF4UmV0cnl9IHRpbWVzLiBHaXZpbmcgdXAuYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdE1lc3NhZ2VcbiAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ export function clone(obj) {
2
+ if (obj instanceof Date) {
3
+ return new Date(obj);
4
+ }
5
+ else if (Array.isArray(obj)) {
6
+ const arr = [];
7
+ for (let i = 0; i < obj.length; i++) {
8
+ arr[i] = clone(obj[i]);
9
+ }
10
+ return arr;
11
+ }
12
+ else if (typeof (obj) === 'object') {
13
+ const cloned = {};
14
+ for (let key in obj) {
15
+ cloned[key] = clone(obj[key]);
16
+ }
17
+ return cloned;
18
+ }
19
+ return obj;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL2Nsb25lL2Nsb25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBRztJQUN2QixJQUFHLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7U0FBTSxJQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztTQUFNLElBQUcsT0FBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjbG9uZShvYmopIHtcbiAgaWYob2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShvYmopO1xuICB9IGVsc2UgaWYoQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0Y29uc3QgYXJyID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFycltpXSA9IGNsb25lKG9ialtpXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFycjtcblx0fSBlbHNlIGlmKHR5cGVvZihvYmopID09PSAnb2JqZWN0Jykge1xuXHRcdGNvbnN0IGNsb25lZCA9IHt9O1xuXHRcdGZvcihsZXQga2V5IGluIG9iaikge1xuXHRcdFx0Y2xvbmVkW2tleV0gPSBjbG9uZShvYmpba2V5XSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsb25lZDtcdFxuXHR9XG5cblx0cmV0dXJuIG9iajtcbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ export function guid(pattern, options = { case: 'lower', numbers: true }) {
2
+ pattern = pattern || 'xxxxxx';
3
+ let s = '';
4
+ if (options.numbers !== false) {
5
+ s = '0123456789';
6
+ }
7
+ if (!options.case || options.case === 'lower' || options.case === 'mixed') {
8
+ s = s.concat('abcdefghijklmnopqrstuvwxyz');
9
+ }
10
+ if (options.case === 'upper' || options.case === 'mixed') {
11
+ s = s.concat('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
12
+ }
13
+ const chars = s.match(/(.{1,1})/g);
14
+ return pattern.replace(/[x]/g, function (c) {
15
+ const i = (Math.random() * chars.length) | 0;
16
+ return chars[i];
17
+ });
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3V0aWwvZ3VpZC9ndWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxJQUFJLENBQUMsT0FBZ0IsRUFBRSxVQUFlLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3BGLE9BQU8sR0FBRyxPQUFPLElBQUksUUFBUSxDQUFDO0lBQzlCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVYLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN6RCxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGd1aWQocGF0dGVybj86IHN0cmluZywgb3B0aW9uczogYW55ID0geyBjYXNlOiAnbG93ZXInLCBudW1iZXJzOiB0cnVlIH0pOiBzdHJpbmcge1xuICBwYXR0ZXJuID0gcGF0dGVybiB8fCAneHh4eHh4JztcbiAgbGV0IHMgPSAnJztcblxuICBpZiAob3B0aW9ucy5udW1iZXJzICE9PSBmYWxzZSkge1xuICAgIHMgPSAnMDEyMzQ1Njc4OSc7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMuY2FzZSB8fCBvcHRpb25zLmNhc2UgPT09ICdsb3dlcicgfHwgb3B0aW9ucy5jYXNlID09PSAnbWl4ZWQnKSB7XG4gICAgcyA9IHMuY29uY2F0KCdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY2FzZSA9PT0gJ3VwcGVyJyB8fCBvcHRpb25zLmNhc2UgPT09ICdtaXhlZCcpIHtcbiAgICBzID0gcy5jb25jYXQoJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyk7XG4gIH1cblxuICBjb25zdCBjaGFycyA9IHMubWF0Y2goLyguezEsMX0pL2cpO1xuXG4gIHJldHVybiBwYXR0ZXJuLnJlcGxhY2UoL1t4XS9nLCBmdW5jdGlvbiAoYykge1xuICAgIGNvbnN0IGkgPSAoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkgfCAwO1xuXG4gICAgcmV0dXJuIGNoYXJzW2ldO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ export function isArrayEqual(arr1, arr2) {
2
+ if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {
3
+ return false;
4
+ }
5
+ const sortFn = (a, b) => {
6
+ if (a < b) {
7
+ return -1;
8
+ }
9
+ else if (a > b) {
10
+ return 1;
11
+ }
12
+ else {
13
+ return 0;
14
+ }
15
+ };
16
+ arr1 = [...arr1].sort(sortFn);
17
+ arr2 = [...arr2].sort(sortFn);
18
+ return arr1.every((value, index) => {
19
+ return value === arr2[index];
20
+ });
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXJyYXktZXF1YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL2lzLWFycmF5LWVxdWFsL2lzLWFycmF5LWVxdWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUk7SUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNBcnJheUVxdWFsKGFycjEsIGFycjIpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycjEpIHx8ICFBcnJheS5pc0FycmF5KGFycjIpIHx8IGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNvcnRGbiA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEgPCBiKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGFycjEgPSBbLi4uYXJyMV0uc29ydChzb3J0Rm4pO1xuICBhcnIyID0gWy4uLmFycjJdLnNvcnQoc29ydEZuKTtcblxuICByZXR1cm4gYXJyMS5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBhcnIyW2luZGV4XTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ export function isClass(value, cls) {
2
+ if (typeof value === 'object') {
3
+ if (typeof cls === 'string') {
4
+ if (value.constructor) {
5
+ if (value.constructor.name === cls) {
6
+ return true;
7
+ }
8
+ }
9
+ }
10
+ else {
11
+ if (value instanceof cls) {
12
+ return true;
13
+ }
14
+ }
15
+ }
16
+ return false;
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL2lzLWNsYXNzL2lzLWNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUc7SUFFaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUU5QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBRTVCLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUVILENBQUM7YUFBTSxDQUFDO1lBRU4sSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzQ2xhc3ModmFsdWUsIGNscykge1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cbiAgICBpZiAodHlwZW9mIGNscyA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09PSBjbHMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgY2xzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export function length(object) {
2
+ if (Array.isArray(object)) {
3
+ return object.length;
4
+ }
5
+ if (object instanceof Object) {
6
+ return Object.keys(object).length;
7
+ }
8
+ return 0;
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdXRpbC9sZW5ndGgvbGVuZ3RoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBTTtJQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTSxZQUFZLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBsZW5ndGgob2JqZWN0KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0Lmxlbmd0aDtcbiAgfVxuXG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Observable, Subject, of } from 'rxjs';
2
+ import { guid } from '../guid';
3
+ export class Operation {
4
+ name;
5
+ target;
6
+ ready$ = new Subject();
7
+ constructor(target, name) {
8
+ this.name = name ? name : guid();
9
+ if (target instanceof Observable) {
10
+ this.target = target;
11
+ }
12
+ else {
13
+ this.target = of(target);
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdXRpbC9xdWV1ZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHL0IsTUFBTSxPQUFPLFNBQVM7SUFFYixJQUFJLENBQVM7SUFDYixNQUFNLENBQWtCO0lBQ3hCLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTlCLFlBQVksTUFBdUIsRUFBRSxJQUFhO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksTUFBTSxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnLi4vZ3VpZCc7XG5cblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiB7XG5cbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIHRhcmdldDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgcmVhZHkkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcih0YXJnZXQ6IE9ic2VydmFibGU8YW55PiwgbmFtZT86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWUgPyBuYW1lIDogZ3VpZCgpO1xuXG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldCA9IG9mKHRhcmdldCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,166 @@
1
+ import { of, Subject } from 'rxjs';
2
+ import { delay, finalize, map, take, takeUntil } from 'rxjs/operators';
3
+ import { Operation } from './operation';
4
+ import { QueueState } from './queue.enum';
5
+ export class Queue {
6
+ _limit;
7
+ _queueStats = {
8
+ completed: 0,
9
+ total: 0,
10
+ errors: [],
11
+ };
12
+ _doneQueueStats = {
13
+ completed: 0,
14
+ total: 0,
15
+ errors: [],
16
+ };
17
+ _completeQueueStats = {
18
+ completed: 0,
19
+ total: 0,
20
+ errors: [],
21
+ };
22
+ _done = new Subject();
23
+ _queue = [];
24
+ _inProgress = [];
25
+ _state = QueueState.Idle;
26
+ _destroy$ = new Subject();
27
+ constructor(_limit = Infinity) {
28
+ this._limit = _limit;
29
+ // if(_targets) {
30
+ // _targets.forEach((target) => {
31
+ // this.push(target);
32
+ // });
33
+ // }
34
+ }
35
+ get total() {
36
+ return this._queueStats.total;
37
+ }
38
+ get completed() {
39
+ return this._queueStats.completed;
40
+ }
41
+ get pending() {
42
+ return this._queue.length;
43
+ }
44
+ get inProgress() {
45
+ return this._inProgress.length;
46
+ }
47
+ get errors() {
48
+ return this._queueStats.errors;
49
+ }
50
+ get state() {
51
+ return this._state;
52
+ }
53
+ get empty() {
54
+ return !this._queue.length && !this._inProgress.length;
55
+ }
56
+ get pendingOperations() {
57
+ return this._queue
58
+ .map((operation) => operation.name);
59
+ }
60
+ get inProgressOperations() {
61
+ return this._inProgress
62
+ .map((operation) => operation.name);
63
+ }
64
+ isProcessing() {
65
+ return this._state === QueueState.Processing;
66
+ }
67
+ isIdle() {
68
+ return this._state === QueueState.Idle;
69
+ }
70
+ setLimit(value) {
71
+ this._limit = value;
72
+ }
73
+ /**
74
+ * @depreated
75
+ */
76
+ subscribe(fun, err, complete) {
77
+ this.observe$
78
+ .subscribe(fun, err, complete);
79
+ }
80
+ get observe$() {
81
+ return this._done
82
+ .pipe(takeUntil(this._destroy$));
83
+ }
84
+ get complete$() {
85
+ if (!this.isProcessing()) {
86
+ return of({ total: 0, completed: 0, errors: [] });
87
+ }
88
+ return this.observe$
89
+ .pipe(take(1), map(() => (this._completeQueueStats)));
90
+ }
91
+ complete(fun, err, complete) {
92
+ this.complete$.subscribe(fun, err, complete);
93
+ }
94
+ push(target, name) {
95
+ const operation = new Operation(target, name);
96
+ this._queueStats.total++;
97
+ this._doneQueueStats.total++;
98
+ this._completeQueueStats.total++;
99
+ this._state = QueueState.Processing;
100
+ if (this._inProgress.length < this._limit) {
101
+ this._processOperation(operation);
102
+ }
103
+ else {
104
+ this._queue.push(operation);
105
+ }
106
+ return operation.ready$;
107
+ }
108
+ clear() {
109
+ this._queue = [];
110
+ this._state = QueueState.Idle;
111
+ this._queueStats = {
112
+ total: 0,
113
+ errors: [],
114
+ completed: 0,
115
+ };
116
+ this._clearDoneQueueStats();
117
+ }
118
+ destroy() {
119
+ this._done.complete();
120
+ this.clear();
121
+ }
122
+ _processOperation(operation) {
123
+ this._inProgress.push(operation);
124
+ operation.target
125
+ .pipe(delay(200), // Hack to prevent extra quick proccess execution
126
+ finalize(() => {
127
+ const opIndex = this._inProgress.indexOf(operation);
128
+ this._inProgress.splice(opIndex, 1);
129
+ if (this.empty) {
130
+ this._state = QueueState.Idle;
131
+ this._done.next(this._doneQueueStats);
132
+ this._clearDoneQueueStats();
133
+ }
134
+ else {
135
+ if (this._queue.length) {
136
+ const queueItem = this._queue.shift();
137
+ this._processOperation(queueItem);
138
+ }
139
+ }
140
+ }), takeUntil(this._destroy$)).subscribe({
141
+ next: (data) => {
142
+ operation.ready$.next(data);
143
+ },
144
+ error: (error) => {
145
+ this._queueStats.errors.push(error);
146
+ this._doneQueueStats.errors.push(error);
147
+ this._completeQueueStats.errors.push(error);
148
+ operation.ready$.error(error);
149
+ },
150
+ complete: () => {
151
+ this._queueStats.completed++;
152
+ this._doneQueueStats.completed++;
153
+ this._completeQueueStats.completed++;
154
+ operation.ready$.complete();
155
+ }
156
+ });
157
+ }
158
+ _clearDoneQueueStats() {
159
+ this._doneQueueStats = {
160
+ total: 0,
161
+ errors: [],
162
+ completed: 0,
163
+ };
164
+ }
165
+ }
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFDLE1BQU0sT0FBTyxLQUFLO0lBMkJOO0lBekJGLFdBQVcsR0FBZTtRQUNoQyxTQUFTLEVBQUUsQ0FBQztRQUNaLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRU0sZUFBZSxHQUFlO1FBQ3BDLFNBQVMsRUFBRSxDQUFDO1FBQ1osS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFTSxtQkFBbUIsR0FBZTtRQUN4QyxTQUFTLEVBQUUsQ0FBQztRQUNaLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDbEMsTUFBTSxHQUFnQixFQUFFLENBQUM7SUFDekIsV0FBVyxHQUFnQixFQUFFLENBQUM7SUFDOUIsTUFBTSxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDckMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFeEMsWUFDVSxTQUFTLFFBQVE7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUd6QixpQkFBaUI7UUFDakIsbUNBQW1DO1FBQ25DLHlCQUF5QjtRQUN6QixTQUFTO1FBQ1QsSUFBSTtJ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LFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUVyQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtZQUNWLFNBQVMsRUFBRSxDQUFDO1NBQ2IsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZmluYWxpemUsIG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5pbXBvcnQgeyBRdWV1ZVN0YXRzIH0gZnJvbSAnLi9xdWV1ZS1zdGF0cyc7XG5pbXBvcnQgeyBRdWV1ZVN0YXRlIH0gZnJvbSAnLi9xdWV1ZS5lbnVtJztcblxuXG5leHBvcnQgY2xhc3MgUXVldWUge1xuXG4gIHByaXZhdGUgX3F1ZXVlU3RhdHM6IFF1ZXVlU3RhdHMgPSB7XG4gICAgY29tcGxldGVkOiAwLFxuICAgIHRvdGFsOiAwLFxuICAgIGVycm9yczogW10sXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG9uZVF1ZXVlU3RhdHM6IFF1ZXVlU3RhdHMgPSB7XG4gICAgY29tcGxldGVkOiAwLFxuICAgIHRvdGFsOiAwLFxuICAgIGVycm9yczogW10sXG4gIH07XG5cbiAgcHJpdmF0ZSBfY29tcGxldGVRdWV1ZVN0YXRzOiBRdWV1ZVN0YXRzID0ge1xuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMCxcbiAgICBlcnJvcnM6IFtdLFxuICB9O1xuXG4gIHByaXZhdGUgX2RvbmUgPSBuZXcgU3ViamVjdDxRdWV1ZVN0YXRzPigpO1xuICBwcml2YXRlIF9xdWV1ZTogT3BlcmF0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaW5Qcm9ncmVzczogT3BlcmF0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfc3RhdGU6IFF1ZXVlU3RhdGUgPSBRdWV1ZVN0YXRlLklkbGU7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2xpbWl0ID0gSW5maW5pdHksXG4gICAgLy9wcml2YXRlIF90YXJnZXRzPzogT2JzZXJ2YWJsZTxhbnk+W10sXG4gICkge1xuICAgIC8vIGlmKF90YXJnZXRzKSB7XG4gICAgLy8gICBfdGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXQpID0+IHtcbiAgICAvLyAgICAgdGhpcy5wdXNoKHRhcmdldCk7XG4gICAgLy8gICB9KTsgXG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWVTdGF0cy50b3RhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVN0YXRzLmNvbXBsZXRlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWUubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBpblByb2dyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9pblByb2dyZXNzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVN0YXRzLmVycm9ycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpIHtcbiAgICByZXR1cm4gIXRoaXMuX3F1ZXVlLmxlbmd0aCAmJiAhdGhpcy5faW5Qcm9ncmVzcy5sZW5ndGhcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZ09wZXJhdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVxuICAgICAgLm1hcCgob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ubmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluUHJvZ3Jlc3NPcGVyYXRpb25zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5Qcm9ncmVzc1xuICAgICAgLm1hcCgob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ubmFtZSk7XG4gIH1cblxuICBwdWJsaWMgaXNQcm9jZXNzaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PT0gUXVldWVTdGF0ZS5Qcm9jZXNzaW5nO1xuICB9XG5cbiAgcHVibGljIGlzSWRsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUgPT09IFF1ZXVlU3RhdGUuSWRsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaW1pdCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGltaXQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVhdGVkXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGZ1biwgZXJyPywgY29tcGxldGU/KTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlJFxuICAgICAgLnN1YnNjcmliZShmdW4sIGVyciwgY29tcGxldGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBvYnNlcnZlJCgpOiBPYnNlcnZhYmxlPFF1ZXVlU3RhdHM+IHtcbiAgICByZXR1cm4gdGhpcy5fZG9uZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBjb21wbGV0ZSQoKTogT2JzZXJ2YWJsZTxRdWV1ZVN0YXRzPiB7XG4gICAgaWYgKCF0aGlzLmlzUHJvY2Vzc2luZygpKSB7XG4gICAgICByZXR1cm4gb2YoeyB0b3RhbDogMCwgY29tcGxldGVkOiAwLCBlcnJvcnM6IFtdIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9ic2VydmUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKCgpID0+ICh0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMpKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29tcGxldGUoZnVuLCBlcnI/LCBjb21wbGV0ZT8pOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBsZXRlJC5zdWJzY3JpYmUoZnVuLCBlcnIsIGNvbXBsZXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBwdXNoKHRhcmdldDogT2JzZXJ2YWJsZTxhbnk+LCBuYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gbmV3IE9wZXJhdGlvbih0YXJnZXQsIG5hbWUpO1xuXG4gICAgdGhpcy5fcXVldWVTdGF0cy50b3RhbCsrO1xuICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLnRvdGFsKys7XG4gICAgdGhpcy5fY29tcGxldGVRdWV1ZVN0YXRzLnRvdGFsKys7XG4gICAgdGhpcy5fc3RhdGUgPSBRdWV1ZVN0YXRlLlByb2Nlc3Npbmc7XG5cbiAgICBpZiAodGhpcy5faW5Qcm9ncmVzcy5sZW5ndGggPCB0aGlzLl9saW1pdCkge1xuICAgICAgdGhpcy5fcHJvY2Vzc09wZXJhdGlvbihvcGVyYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9xdWV1ZS5wdXNoKG9wZXJhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbi5yZWFkeSQ7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fcXVldWUgPSBbXTtcbiAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTsgICAgICAgXG4gICAgdGhpcy5fcXVldWVTdGF0cyA9IHtcbiAgICAgIHRvdGFsOiAwLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGNvbXBsZXRlZDogMCxcbiAgICB9O1xuICAgIHRoaXMuX2NsZWFyRG9uZVF1ZXVlU3RhdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQgeyAgICBcbiAgICB0aGlzLl9kb25lLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc09wZXJhdGlvbihvcGVyYXRpb246IE9wZXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2luUHJvZ3Jlc3MucHVzaChvcGVyYXRpb24pO1xuXG4gICAgb3BlcmF0aW9uLnRhcmdldFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlbGF5KDIwMCksIC8vIEhhY2sgdG8gcHJldmVudCBleHRyYSBxdWljayBwcm9jY2VzcyBleGVjdXRpb25cbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wSW5kZXggPSB0aGlzLl9pblByb2dyZXNzLmluZGV4T2Yob3BlcmF0aW9uKTtcbiAgICAgICAgICB0aGlzLl9pblByb2dyZXNzLnNwbGljZShvcEluZGV4LCAxKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGhpcy5lbXB0eSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSBRdWV1ZVN0YXRlLklkbGU7XG4gICAgICAgICAgICB0aGlzLl9kb25lLm5leHQodGhpcy5fZG9uZVF1ZXVlU3RhdHMpO1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJEb25lUXVldWVTdGF0cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcXVldWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IHRoaXMuX3F1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NPcGVyYXRpb24ocXVldWVJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIG9wZXJhdGlvbi5yZWFkeSQubmV4dChkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuX3F1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICB0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuXG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5lcnJvcihlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcXVldWVTdGF0cy5jb21wbGV0ZWQrKztcbiAgICAgICAgICB0aGlzLl9kb25lUXVldWVTdGF0cy5jb21wbGV0ZWQrKztcbiAgICAgICAgICB0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMuY29tcGxldGVkKys7XG5cbiAgICAgICAgICBvcGVyYXRpb24ucmVhZHkkLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYXJEb25lUXVldWVTdGF0cygpOiB2b2lkIHtcbiAgICB0aGlzLl9kb25lUXVldWVTdGF0cyA9IHtcbiAgICAgIHRvdGFsOiAwLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGNvbXBsZXRlZDogMCxcbiAgICB9O1xuICB9XG59XG4iXX0=