@jscrpt/common 1.2.0 → 2.0.0-beta.20211108120022

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 (238) hide show
  1. package/changelog.md +24 -0
  2. package/dist/es2015/decorators/bindThis.decorator.js +24 -24
  3. package/dist/es2015/decorators/bindThis.decorator.js.map +1 -0
  4. package/dist/es2015/decorators/callOnce.decorator.js +29 -28
  5. package/dist/es2015/decorators/callOnce.decorator.js.map +1 -0
  6. package/dist/es2015/decorators/debounceCall.decorator.js +25 -26
  7. package/dist/es2015/decorators/debounceCall.decorator.js.map +1 -0
  8. package/dist/es2015/decorators/index.js +4 -4
  9. package/dist/es2015/decorators/index.js.map +1 -0
  10. package/dist/es2015/encoder/encoder.js +220 -231
  11. package/dist/es2015/encoder/encoder.js.map +1 -0
  12. package/dist/es2015/enums/index.js +2 -2
  13. package/dist/es2015/enums/index.js.map +1 -0
  14. package/dist/es2015/enums/orderByDirection.js +15 -15
  15. package/dist/es2015/enums/orderByDirection.js.map +1 -0
  16. package/dist/es2015/index.js +10 -24
  17. package/dist/es2015/index.js.map +1 -0
  18. package/dist/es2015/indexNode.js +2 -2
  19. package/dist/es2015/indexNode.js.map +1 -0
  20. package/dist/es2015/initJsDevMode.js +8 -0
  21. package/dist/es2015/initJsDevMode.js.map +1 -0
  22. package/dist/es2015/jsDevMode.js +8 -8
  23. package/dist/es2015/jsDevMode.js.map +1 -0
  24. package/dist/es2015/normalizer/charMaps.js +20 -27
  25. package/dist/es2015/normalizer/charMaps.js.map +1 -0
  26. package/dist/es2015/normalizer/index.js +3 -3
  27. package/dist/es2015/normalizer/index.js.map +1 -0
  28. package/dist/es2015/normalizer/normalizer.js +14 -14
  29. package/dist/es2015/normalizer/normalizer.js.map +1 -0
  30. package/dist/es2015/paginator/paginator.js +230 -224
  31. package/dist/es2015/paginator/paginator.js.map +1 -0
  32. package/dist/es2015/types/dictionaries.js +2 -1
  33. package/dist/es2015/types/dictionaries.js.map +1 -0
  34. package/dist/es2015/types/enums.js +2 -0
  35. package/dist/es2015/types/enums.js.map +1 -0
  36. package/dist/es2015/types/functions.js +2 -0
  37. package/dist/es2015/types/functions.js.map +1 -0
  38. package/dist/es2015/types/index.js +5 -3
  39. package/dist/es2015/types/index.js.map +1 -0
  40. package/dist/es2015/types/valueNamePair.js +2 -1
  41. package/dist/es2015/types/valueNamePair.js.map +1 -0
  42. package/dist/es2015/utils/common.js +209 -215
  43. package/dist/es2015/utils/common.js.map +1 -0
  44. package/dist/es2015/utils/index.js +4 -4
  45. package/dist/es2015/utils/index.js.map +1 -0
  46. package/dist/es2015/utils/lang.js +79 -79
  47. package/dist/es2015/utils/lang.js.map +1 -0
  48. package/dist/es2015/utils/nameof.js +6 -6
  49. package/dist/es2015/utils/nameof.js.map +1 -0
  50. package/dist/es2020/decorators/bindThis.decorator.js +23 -0
  51. package/dist/es2020/decorators/bindThis.decorator.js.map +1 -0
  52. package/dist/es2020/decorators/callOnce.decorator.js +28 -0
  53. package/dist/es2020/decorators/callOnce.decorator.js.map +1 -0
  54. package/dist/es2020/decorators/debounceCall.decorator.js +24 -0
  55. package/dist/es2020/decorators/debounceCall.decorator.js.map +1 -0
  56. package/dist/es2020/decorators/index.js +4 -0
  57. package/dist/es2020/decorators/index.js.map +1 -0
  58. package/dist/es2020/encoder/encoder.js +220 -0
  59. package/dist/es2020/encoder/encoder.js.map +1 -0
  60. package/dist/es2020/enums/index.js +2 -0
  61. package/dist/es2020/enums/index.js.map +1 -0
  62. package/dist/es2020/enums/orderByDirection.js +15 -0
  63. package/dist/es2020/enums/orderByDirection.js.map +1 -0
  64. package/dist/es2020/index.js +10 -0
  65. package/dist/es2020/index.js.map +1 -0
  66. package/dist/es2020/indexNode.js +2 -0
  67. package/dist/es2020/indexNode.js.map +1 -0
  68. package/dist/es2020/initJsDevMode.js +8 -0
  69. package/dist/es2020/initJsDevMode.js.map +1 -0
  70. package/dist/es2020/jsDevMode.js +8 -0
  71. package/dist/es2020/jsDevMode.js.map +1 -0
  72. package/dist/es2020/normalizer/charMaps.js +20 -0
  73. package/dist/es2020/normalizer/charMaps.js.map +1 -0
  74. package/dist/es2020/normalizer/index.js +3 -0
  75. package/dist/es2020/normalizer/index.js.map +1 -0
  76. package/dist/es2020/normalizer/normalizer.js +14 -0
  77. package/dist/es2020/normalizer/normalizer.js.map +1 -0
  78. package/dist/es2020/paginator/paginator.js +230 -0
  79. package/dist/es2020/paginator/paginator.js.map +1 -0
  80. package/dist/es2020/types/dictionaries.js +2 -0
  81. package/dist/es2020/types/dictionaries.js.map +1 -0
  82. package/dist/es2020/types/enums.js +2 -0
  83. package/dist/es2020/types/enums.js.map +1 -0
  84. package/dist/es2020/types/functions.js +2 -0
  85. package/dist/es2020/types/functions.js.map +1 -0
  86. package/dist/es2020/types/index.js +5 -0
  87. package/dist/es2020/types/index.js.map +1 -0
  88. package/dist/es2020/types/valueNamePair.js +2 -0
  89. package/dist/es2020/types/valueNamePair.js.map +1 -0
  90. package/dist/es2020/utils/common.js +208 -0
  91. package/dist/es2020/utils/common.js.map +1 -0
  92. package/dist/es2020/utils/index.js +4 -0
  93. package/dist/es2020/utils/index.js.map +1 -0
  94. package/dist/es2020/utils/lang.js +79 -0
  95. package/dist/es2020/utils/lang.js.map +1 -0
  96. package/dist/es2020/utils/nameof.js +6 -0
  97. package/dist/es2020/utils/nameof.js.map +1 -0
  98. package/dist/es5/decorators/bindThis.decorator.js +24 -24
  99. package/dist/es5/decorators/bindThis.decorator.js.map +1 -0
  100. package/dist/es5/decorators/callOnce.decorator.js +33 -28
  101. package/dist/es5/decorators/callOnce.decorator.js.map +1 -0
  102. package/dist/es5/decorators/debounceCall.decorator.js +30 -27
  103. package/dist/es5/decorators/debounceCall.decorator.js.map +1 -0
  104. package/dist/es5/decorators/index.js +4 -4
  105. package/dist/es5/decorators/index.js.map +1 -0
  106. package/dist/es5/encoder/encoder.js +222 -233
  107. package/dist/es5/encoder/encoder.js.map +1 -0
  108. package/dist/es5/enums/index.js +2 -2
  109. package/dist/es5/enums/index.js.map +1 -0
  110. package/dist/es5/enums/orderByDirection.js +15 -15
  111. package/dist/es5/enums/orderByDirection.js.map +1 -0
  112. package/dist/es5/index.js +10 -24
  113. package/dist/es5/index.js.map +1 -0
  114. package/dist/es5/indexNode.js +2 -2
  115. package/dist/es5/indexNode.js.map +1 -0
  116. package/dist/es5/initJsDevMode.js +8 -0
  117. package/dist/es5/initJsDevMode.js.map +1 -0
  118. package/dist/es5/jsDevMode.js +8 -8
  119. package/dist/es5/jsDevMode.js.map +1 -0
  120. package/dist/es5/normalizer/charMaps.js +20 -35
  121. package/dist/es5/normalizer/charMaps.js.map +1 -0
  122. package/dist/es5/normalizer/index.js +3 -3
  123. package/dist/es5/normalizer/index.js.map +1 -0
  124. package/dist/es5/normalizer/normalizer.js +14 -14
  125. package/dist/es5/normalizer/normalizer.js.map +1 -0
  126. package/dist/es5/paginator/paginator.js +232 -226
  127. package/dist/es5/paginator/paginator.js.map +1 -0
  128. package/dist/es5/types/dictionaries.js +2 -1
  129. package/dist/es5/types/dictionaries.js.map +1 -0
  130. package/dist/es5/types/enums.js +2 -0
  131. package/dist/es5/types/enums.js.map +1 -0
  132. package/dist/es5/types/functions.js +2 -0
  133. package/dist/es5/types/functions.js.map +1 -0
  134. package/dist/es5/types/index.js +5 -3
  135. package/dist/es5/types/index.js.map +1 -0
  136. package/dist/es5/types/valueNamePair.js +2 -1
  137. package/dist/es5/types/valueNamePair.js.map +1 -0
  138. package/dist/es5/utils/common.js +220 -232
  139. package/dist/es5/utils/common.js.map +1 -0
  140. package/dist/es5/utils/index.js +4 -4
  141. package/dist/es5/utils/index.js.map +1 -0
  142. package/dist/es5/utils/lang.js +79 -79
  143. package/dist/es5/utils/lang.js.map +1 -0
  144. package/dist/es5/utils/nameof.js +6 -6
  145. package/dist/es5/utils/nameof.js.map +1 -0
  146. package/dist/module/decorators/bindThis.decorator.js +28 -28
  147. package/dist/module/decorators/bindThis.decorator.js.map +1 -0
  148. package/dist/module/decorators/callOnce.decorator.js +33 -32
  149. package/dist/module/decorators/callOnce.decorator.js.map +1 -0
  150. package/dist/module/decorators/debounceCall.decorator.js +29 -30
  151. package/dist/module/decorators/debounceCall.decorator.js.map +1 -0
  152. package/dist/module/decorators/index.js +7 -16
  153. package/dist/module/decorators/index.js.map +1 -0
  154. package/dist/module/encoder/encoder.js +224 -235
  155. package/dist/module/encoder/encoder.js.map +1 -0
  156. package/dist/module/enums/index.js +5 -14
  157. package/dist/module/enums/index.js.map +1 -0
  158. package/dist/module/enums/orderByDirection.js +18 -18
  159. package/dist/module/enums/orderByDirection.js.map +1 -0
  160. package/dist/module/index.js +13 -37
  161. package/dist/module/index.js.map +1 -0
  162. package/dist/module/indexNode.js +5 -14
  163. package/dist/module/indexNode.js.map +1 -0
  164. package/dist/module/initJsDevMode.js +10 -0
  165. package/dist/module/initJsDevMode.js.map +1 -0
  166. package/dist/module/jsDevMode.js +12 -12
  167. package/dist/module/jsDevMode.js.map +1 -0
  168. package/dist/module/normalizer/charMaps.js +23 -31
  169. package/dist/module/normalizer/charMaps.js.map +1 -0
  170. package/dist/module/normalizer/index.js +6 -15
  171. package/dist/module/normalizer/index.js.map +1 -0
  172. package/dist/module/normalizer/normalizer.js +18 -18
  173. package/dist/module/normalizer/normalizer.js.map +1 -0
  174. package/dist/module/paginator/paginator.js +234 -228
  175. package/dist/module/paginator/paginator.js.map +1 -0
  176. package/dist/module/types/dictionaries.js +3 -3
  177. package/dist/module/types/dictionaries.js.map +1 -0
  178. package/dist/module/types/enums.js +3 -0
  179. package/dist/module/types/enums.js.map +1 -0
  180. package/dist/module/types/functions.js +3 -0
  181. package/dist/module/types/functions.js.map +1 -0
  182. package/dist/module/types/index.js +8 -15
  183. package/dist/module/types/index.js.map +1 -0
  184. package/dist/module/types/valueNamePair.js +3 -3
  185. package/dist/module/types/valueNamePair.js.map +1 -0
  186. package/dist/module/utils/common.js +232 -240
  187. package/dist/module/utils/common.js.map +1 -0
  188. package/dist/module/utils/index.js +7 -16
  189. package/dist/module/utils/index.js.map +1 -0
  190. package/dist/module/utils/lang.js +99 -99
  191. package/dist/module/utils/lang.js.map +1 -0
  192. package/dist/module/utils/nameof.js +10 -9
  193. package/dist/module/utils/nameof.js.map +1 -0
  194. package/package.json +45 -16
  195. package/src/decorators/bindThis.decorator.d.ts +5 -7
  196. package/src/decorators/bindThis.decorator.d.ts.map +1 -1
  197. package/src/decorators/callOnce.decorator.d.ts +5 -5
  198. package/src/decorators/callOnce.decorator.d.ts.map +1 -1
  199. package/src/decorators/debounceCall.decorator.d.ts +5 -5
  200. package/src/decorators/debounceCall.decorator.d.ts.map +1 -1
  201. package/src/decorators/index.d.ts +3 -3
  202. package/src/encoder/encoder.d.ts +45 -45
  203. package/src/encoder/encoder.d.ts.map +1 -1
  204. package/src/enums/index.d.ts +1 -1
  205. package/src/enums/orderByDirection.d.ts +13 -13
  206. package/src/index.d.ts +9 -17
  207. package/src/index.d.ts.map +1 -1
  208. package/src/indexNode.d.ts +1 -1
  209. package/src/initJsDevMode.d.ts +2 -0
  210. package/src/initJsDevMode.d.ts.map +1 -0
  211. package/src/jsDevMode.d.ts +8 -8
  212. package/src/jsDevMode.d.ts.map +1 -1
  213. package/src/normalizer/charMaps.d.ts +5 -9
  214. package/src/normalizer/charMaps.d.ts.map +1 -1
  215. package/src/normalizer/index.d.ts +2 -2
  216. package/src/normalizer/normalizer.d.ts +7 -6
  217. package/src/normalizer/normalizer.d.ts.map +1 -1
  218. package/src/paginator/paginator.d.ts +129 -129
  219. package/src/paginator/paginator.d.ts.map +1 -1
  220. package/src/types/dictionaries.d.ts +15 -6
  221. package/src/types/dictionaries.d.ts.map +1 -1
  222. package/src/types/enums.d.ts +7 -0
  223. package/src/types/enums.d.ts.map +1 -0
  224. package/src/types/functions.d.ts +14 -0
  225. package/src/types/functions.d.ts.map +1 -0
  226. package/src/types/index.d.ts +4 -2
  227. package/src/types/index.d.ts.map +1 -1
  228. package/src/types/valueNamePair.d.ts +13 -13
  229. package/src/utils/common.d.ts +181 -122
  230. package/src/utils/common.d.ts.map +1 -1
  231. package/src/utils/index.d.ts +3 -3
  232. package/src/utils/lang.d.ts +41 -41
  233. package/src/utils/lang.d.ts.map +1 -1
  234. package/src/utils/nameof.d.ts +5 -5
  235. package/src/utils/nameof.d.ts.map +1 -1
  236. package/version.bak +1 -1
  237. package/.jsbeautifyrc +0 -7
  238. package/appveyor.yml +0 -67
@@ -1,232 +1,220 @@
1
- var __spreadArrays = (this && this.__spreadArrays) || function () {
2
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
4
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
5
- r[k] = a[j];
6
- return r;
7
- };
8
- import extendLib from 'extend';
9
- import { isPresent } from './lang';
10
- import { normalize } from '../normalizer';
11
- /**
12
- * Reverse current string and returns new reverse string
13
- * @param str - String to be reversed
14
- * @returns string Reverse string
15
- */
16
- export function reverseString(str) {
17
- return str.split("").reverse().join("");
18
- }
19
- export function extend(deepOrObject) {
20
- var objectN = [];
21
- for (var _i = 1; _i < arguments.length; _i++) {
22
- objectN[_i - 1] = arguments[_i];
23
- }
24
- return extendLib.apply(null, __spreadArrays([deepOrObject], objectN));
25
- }
26
- /**
27
- * Merges properties of two separate object into new third one
28
- * @param source1 - First source object
29
- * @param source2 - Second source object
30
- * @returns Object Object containing properties from source1 and source2 objects
31
- */
32
- export function merge(source1, source2) {
33
- var resultObj = {};
34
- for (var attrname in source1) {
35
- resultObj[attrname] = source1[attrname];
36
- }
37
- for (var attrname in source2) {
38
- resultObj[attrname] = source2[attrname];
39
- }
40
- return resultObj;
41
- }
42
- /**
43
- * Generates random string consisting from lowercase letters
44
- * @param length - Length of generated string
45
- * @returns number Generated string
46
- */
47
- export function generateId(length) {
48
- var result = "";
49
- for (var x = 0; x < length; x++) {
50
- result += String.fromCharCode(Math.round(Math.random() * 25 + 97));
51
- }
52
- return result;
53
- }
54
- /**
55
- * Generates random string of specified length from possible characters
56
- * @param length - Length of generated string
57
- * @param possible - Possible characters used for generation of string
58
- */
59
- export function generateRandomString(length, possible) {
60
- if (possible === void 0) { possible = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; }
61
- var text = '';
62
- for (var i = 0; i < length; i++) {
63
- text += possible.charAt(Math.floor(Math.random() * possible.length));
64
- }
65
- return text;
66
- }
67
- /**
68
- * Converts string in that way that first letter will be lowerCase
69
- * @param text - Text to be converted
70
- */
71
- export function firstToLowerCase(text) {
72
- return text.charAt(0).toLowerCase() + text.substr(1);
73
- }
74
- /**
75
- * Gets indication whether is child descendand of parent
76
- * @param parent - Parent to be tested
77
- * @param child - Child to be looked for
78
- */
79
- export function isDescendant(parent, child) {
80
- var node = child.parentNode;
81
- while (node != null) {
82
- if (node == parent) {
83
- return true;
84
- }
85
- node = node.parentNode;
86
- }
87
- return false;
88
- }
89
- /**
90
- * Computes offset of element against document
91
- * @param element - Html element which offset is counted
92
- * @param doc - Html document to be used for extracting scroll offset
93
- */
94
- export function offset(element, doc) {
95
- doc = doc || document;
96
- var rect = element.getBoundingClientRect(), scrollLeft = window.pageXOffset || doc.documentElement.scrollLeft, scrollTop = window.pageYOffset || doc.documentElement.scrollTop;
97
- return {
98
- top: rect.top + scrollTop,
99
- left: rect.left + scrollLeft,
100
- bottom: rect.top + scrollTop + rect.height,
101
- right: rect.left + scrollLeft + rect.width
102
- };
103
- }
104
- /**
105
- * Converts html string into html DOM
106
- * @param html - Html string to be converted to DOM
107
- * @param doc - Optional html document to be used
108
- */
109
- export function htmlToElement(html, doc) {
110
- var htmlDocument = document;
111
- if (isPresent(doc)) {
112
- htmlDocument = doc;
113
- }
114
- var template = htmlDocument.createElement('template');
115
- html = html.trim();
116
- template.innerHTML = html;
117
- return template.content.firstChild;
118
- }
119
- /**
120
- * Extract values from enum type
121
- * @param enumType - Enum type that will have extracted values
122
- */
123
- export function getEnumValues(enumType) {
124
- var result = [];
125
- Object.keys(enumType).forEach(function (key) {
126
- if (isNaN(+key)) {
127
- return;
128
- }
129
- result.push({
130
- value: key,
131
- name: enumType[key]
132
- });
133
- });
134
- return result;
135
- }
136
- /**
137
- * Safely returns value from object property using string expression
138
- * @param object - Object which property value will be obtained
139
- * @param expression - Expression for obtaining value
140
- */
141
- export function getValue(object, expression) {
142
- return expression.split('.').reduce(function (o, i) {
143
- if (o) {
144
- return o[i];
145
- }
146
- return null;
147
- }, object);
148
- }
149
- /**
150
- * Sets value to objects property using string expression
151
- * @param object - Object which property value will be set
152
- * @param value - Value that will be set
153
- * @param expression - Expression for setting value
154
- */
155
- export function setValue(object, value, expression) {
156
- var parts = expression.split('.');
157
- parts.forEach(function (part, index) {
158
- //last item value is assigned
159
- if (index == parts.length - 1) {
160
- if (isPresent(value)) {
161
- object[part] = value;
162
- }
163
- return;
164
- }
165
- object = object[part] = object[part] || {};
166
- });
167
- }
168
- /**
169
- * Formats string using '%s', to print '%s' you have to use '%%s'
170
- * @param str - String containing substitution constants
171
- * @param args - Arguments that are used for replacement
172
- */
173
- export function format(str) {
174
- var args = [];
175
- for (var _i = 1; _i < arguments.length; _i++) {
176
- args[_i - 1] = arguments[_i];
177
- }
178
- var i = 0;
179
- return str.replace(/((?!%).)%s/g, function (_sub, substArgs) { return "" + substArgs[0] + args[i++]; }).replace(/%%s/g, "%s");
180
- }
181
- /**
182
- * Performs flatMap over provided array
183
- * @param array - Array to be reduced using flatMap
184
- */
185
- export function flatMapArray(array) {
186
- return array.reduce(function (acc, x) { return acc.concat(x); }, []);
187
- }
188
- /**
189
- * Serialize object to string that is usable as url query parameter
190
- * @param obj - Object to be serialized
191
- * @param replacer - Function that can be used for replacing provided values
192
- */
193
- export function serializeToUrlQuery(obj, replacer) {
194
- return btoa(encodeURIComponent(JSON.stringify(obj, replacer)));
195
- }
196
- /**
197
- * Deserialize value from url query string into object
198
- * @param queryParamValue - Query param string value
199
- * @param reviver - Function that can be used for correctly deserializing value
200
- */
201
- export function deserializeFromUrlQuery(queryParamValue, reviver) {
202
- return JSON.parse(decodeURIComponent(atob(queryParamValue)), reviver);
203
- }
204
- /**
205
- * Converts id to valid html id
206
- * @param id - Id that is going to be converted to valid html id
207
- * @param charMap - Character map used during normalization
208
- */
209
- export function validHtmlId(id, charMap) {
210
- if (charMap === void 0) { charMap = {}; }
211
- id = id.toLowerCase()
212
- .replace(/[\s]+/g, '-')
213
- .replace(/\./g, '')
214
- .replace(/^(\d)/g, 'x$1');
215
- id = normalize(id, charMap);
216
- return id;
217
- }
218
- /**
219
- * Checks whether is element overflown either horizontal, or vertical
220
- * @param element - Element to be tested for overflow
221
- */
222
- export function isOverflown(element) {
223
- return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
224
- }
225
- /**
226
- * Normalizes string, removing accent
227
- * @param value - String to be normalized
228
- */
229
- export function normalizeAccent(value) {
230
- return value.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
231
- }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFDO0FBRS9CLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFakMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBRXJDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQVNELE1BQU0sVUFBVSxNQUFNLENBQUMsWUFBOEI7SUFBRSxpQkFBb0I7U0FBcEIsVUFBb0IsRUFBcEIscUJBQW9CLEVBQXBCLElBQW9CO1FBQXBCLGdDQUFvQjs7SUFFdkUsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksa0JBQUcsWUFBWSxHQUFLLE9BQU8sRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBNkIsRUFBRSxPQUE2QjtJQUU5RSxJQUFJLFNBQVMsR0FBeUIsRUFBRSxDQUFDO0lBRXpDLEtBQUssSUFBSSxRQUFRLElBQUksT0FBTyxFQUM1QjtRQUNJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDM0M7SUFFRCxLQUFLLElBQUksUUFBUSxJQUFJLE9BQU8sRUFDNUI7UUFDSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzNDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1B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SSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEVBQVUsRUFBRSxPQUFvQjtJQUFwQix3QkFBQSxFQUFBLFlBQW9CO0lBRXhELEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO1NBQ2hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFOUIsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUIsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFvQjtJQUU1QyxPQUFPLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDcEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYTtJQUV6QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXh0ZW5kTGliIGZyb20gJ2V4dGVuZCc7XHJcblxyXG5pbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnLi9sYW5nJztcclxuaW1wb3J0IHtWYWx1ZU5hbWVQYWlyfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7bm9ybWFsaXplfSBmcm9tICcuLi9ub3JtYWxpemVyJztcclxuXHJcbi8qKlxyXG4gKiBSZXZlcnNlIGN1cnJlbnQgc3RyaW5nIGFuZCByZXR1cm5zIG5ldyByZXZlcnNlIHN0cmluZ1xyXG4gKiBAcGFyYW0gc3RyIC0gU3RyaW5nIHRvIGJlIHJldmVyc2VkXHJcbiAqIEByZXR1cm5zIHN0cmluZyBSZXZlcnNlIHN0cmluZ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmdcclxue1xyXG4gICAgcmV0dXJuIHN0ci5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dGVuZHMgb25lIG9iamVjdCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmcm9tIG90aGVyIG9iamVjdHMsIHN1cHBvcnRzIGRlZXAgZXh0ZW5kXHJcbiAqIEBwYXJhbSBkZWVwT3JPYmplY3QgLSBPYmplY3QgdG8gYmUgZXh0ZW5kZWQgb3IgaW5kaWNhdGlvbiB0aGF0IGRlZXAgY29weSBzaG91bGQgYmUgcGVyZm9ybWVkXHJcbiAqIEBwYXJhbSBvYmplY3ROIC0gT2JqZWN0cyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgZXh0ZW5kaW5nLCBpZiBkZWVwIGlzIHVzZWQgZmlyc3QgaGVyZSBpcyB0YXJnZXQgb2JqZWN0XHJcbiAqIEByZXR1cm5zIE9iamVjdCBFeHRlbmRlZCBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGZyb20gb3RoZXIgb2JqZWN0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUUmVzdWx0PihkZWVwT3JPYmplY3Q6IGJvb2xlYW4gfCBPYmplY3QsIC4uLm9iamVjdE46IE9iamVjdFtdKTogVFJlc3VsdDtcclxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChkZWVwT3JPYmplY3Q6IGJvb2xlYW4gfCBPYmplY3QsIC4uLm9iamVjdE46IE9iamVjdFtdKTogT2JqZWN0XHJcbntcclxuICAgIHJldHVybiBleHRlbmRMaWIuYXBwbHkobnVsbCwgW2RlZXBPck9iamVjdCwgLi4ub2JqZWN0Tl0pO1xyXG59XHJcblxyXG4vKipcclxuICogTWVyZ2VzIHByb3BlcnRpZXMgb2YgdHdvIHNlcGFyYXRlIG9iamVjdCBpbnRvIG5ldyB0aGlyZCBvbmVcclxuICogQHBhcmFtIHNvdXJjZTEgLSBGaXJzdCBzb3VyY2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBzb3VyY2UyIC0gU2Vjb25kIHNvdXJjZSBvYmplY3RcclxuICogQHJldHVybnMgT2JqZWN0IE9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgZnJvbSBzb3VyY2UxIGFuZCBzb3VyY2UyIG9iamVjdHNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShzb3VyY2UxOiB7W2tleTogc3RyaW5nXTogYW55fSwgc291cmNlMjoge1trZXk6IHN0cmluZ106IGFueX0pOiBPYmplY3Rcclxue1xyXG4gICAgdmFyIHJlc3VsdE9iajoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcclxuXHJcbiAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBzb3VyY2UxKVxyXG4gICAge1xyXG4gICAgICAgIHJlc3VsdE9ialthdHRybmFtZV0gPSBzb3VyY2UxW2F0dHJuYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBzb3VyY2UyKVxyXG4gICAge1xyXG4gICAgICAgIHJlc3VsdE9ialthdHRybmFtZV0gPSBzb3VyY2UyW2F0dHJuYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0T2JqO1xyXG59XHJcblxyXG4vKipcclxuICogR2VuZXJhdGVzIHJhbmRvbSBzdHJpbmcgY29uc2lzdGluZyBmcm9tIGxvd2VyY2FzZSBsZXR0ZXJzXHJcbiAqIEBwYXJhbSBsZW5ndGggLSBMZW5ndGggb2YgZ2VuZXJhdGVkIHN0cmluZ1xyXG4gKiBAcmV0dXJucyBudW1iZXIgR2VuZXJhdGVkIHN0cmluZ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSWQobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmdcclxue1xyXG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcblxyXG4gICAgZm9yKHZhciB4ID0gMDsgeCA8IGxlbmd0aDsgeCsrKVxyXG4gICAge1xyXG4gICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDI1ICsgOTcpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG4vKipcclxuICogR2VuZXJhdGVzIHJhbmRvbSBzdHJpbmcgb2Ygc3BlY2lmaWVkIGxlbmd0aCBmcm9tIHBvc3NpYmxlIGNoYXJhY3RlcnNcclxuICogQHBhcmFtIGxlbmd0aCAtIExlbmd0aCBvZiBnZW5lcmF0ZWQgc3RyaW5nXHJcbiAqIEBwYXJhbSBwb3NzaWJsZSAtIFBvc3NpYmxlIGNoYXJhY3RlcnMgdXNlZCBmb3IgZ2VuZXJhdGlvbiBvZiBzdHJpbmdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbVN0cmluZyhsZW5ndGg6IG51bWJlciwgcG9zc2libGU6IHN0cmluZyA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpOiBzdHJpbmdcclxue1xyXG4gICAgbGV0IHRleHQgPSAnJztcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDtpIDwgbGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgICAgdGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBzdHJpbmcgaW4gdGhhdCB3YXkgdGhhdCBmaXJzdCBsZXR0ZXIgd2lsbCBiZSBsb3dlckNhc2VcclxuICogQHBhcmFtIHRleHQgLSBUZXh0IHRvIGJlIGNvbnZlcnRlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZpcnN0VG9Mb3dlckNhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nXHJcbntcclxuICAgIHJldHVybiB0ZXh0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdGV4dC5zdWJzdHIoMSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGluZGljYXRpb24gd2hldGhlciBpcyBjaGlsZCBkZXNjZW5kYW5kIG9mIHBhcmVudFxyXG4gKiBAcGFyYW0gcGFyZW50IC0gUGFyZW50IHRvIGJlIHRlc3RlZFxyXG4gKiBAcGFyYW0gY2hpbGQgLSBDaGlsZCB0byBiZSBsb29rZWQgZm9yXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNEZXNjZW5kYW50KHBhcmVudDogSFRNTEVsZW1lbnQsIGNoaWxkOiBIVE1MRWxlbWVudCk6IGJvb2xlYW5cclxue1xyXG4gICAgbGV0IG5vZGUgPSBjaGlsZC5wYXJlbnROb2RlO1xyXG5cclxuICAgIHdoaWxlIChub2RlICE9IG51bGwpXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKG5vZGUgPT0gcGFyZW50KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXB1dGVzIG9mZnNldCBvZiBlbGVtZW50IGFnYWluc3QgZG9jdW1lbnRcclxuICogQHBhcmFtIGVsZW1lbnQgLSBIdG1sIGVsZW1lbnQgd2hpY2ggb2Zmc2V0IGlzIGNvdW50ZWRcclxuICogQHBhcmFtIGRvYyAtIEh0bWwgZG9jdW1lbnQgdG8gYmUgdXNlZCBmb3IgZXh0cmFjdGluZyBzY3JvbGwgb2Zmc2V0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb2Zmc2V0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBkb2M/OiBEb2N1bWVudClcclxue1xyXG4gICAgZG9jID0gZG9jIHx8IGRvY3VtZW50O1xyXG5cclxuICAgIGxldCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcclxuICAgICAgICBzY3JvbGxMZWZ0ID0gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcclxuICAgICAgICBzY3JvbGxUb3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0b3A6IHJlY3QudG9wICsgc2Nyb2xsVG9wLFxyXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXHJcbiAgICAgICAgYm90dG9tOiByZWN0LnRvcCArIHNjcm9sbFRvcCArIHJlY3QuaGVpZ2h0LFxyXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgcmVjdC53aWR0aFxyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIGh0bWwgc3RyaW5nIGludG8gaHRtbCBET01cclxuICogQHBhcmFtIGh0bWwgLSBIdG1sIHN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8gRE9NXHJcbiAqIEBwYXJhbSBkb2MgLSBPcHRpb25hbCBodG1sIGRvY3VtZW50IHRvIGJlIHVzZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBodG1sVG9FbGVtZW50KGh0bWw6IHN0cmluZywgZG9jPzogRG9jdW1lbnQpOiBIVE1MRWxlbWVudFxyXG57XHJcbiAgICBsZXQgaHRtbERvY3VtZW50ID0gZG9jdW1lbnQ7XHJcblxyXG4gICAgaWYoaXNQcmVzZW50KGRvYykpXHJcbiAgICB7XHJcbiAgICAgICAgaHRtbERvY3VtZW50ID0gZG9jO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0ZW1wbGF0ZSA9IGh0bWxEb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xyXG4gICAgaHRtbCA9IGh0bWwudHJpbSgpO1xyXG4gICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gaHRtbDtcclxuXHJcbiAgICByZXR1cm4gdGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50O1xyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdCB2YWx1ZXMgZnJvbSBlbnVtIHR5cGVcclxuICogQHBhcmFtIGVudW1UeXBlIC0gRW51bSB0eXBlIHRoYXQgd2lsbCBoYXZlIGV4dHJhY3RlZCB2YWx1ZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtVmFsdWVzKGVudW1UeXBlOiBhbnkpOiBWYWx1ZU5hbWVQYWlyW11cclxue1xyXG4gICAgbGV0IHJlc3VsdDogVmFsdWVOYW1lUGFpcltdID0gW107XHJcblxyXG4gICAgT2JqZWN0LmtleXMoZW51bVR5cGUpLmZvckVhY2goa2V5ID0+XHJcbiAgICB7XHJcbiAgICAgICAgaWYoaXNOYU4oK2tleSkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXN1bHQucHVzaChcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBrZXksXHJcbiAgICAgICAgICAgIG5hbWU6IGVudW1UeXBlW2tleV1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNhZmVseSByZXR1cm5zIHZhbHVlIGZyb20gb2JqZWN0IHByb3BlcnR5IHVzaW5nIHN0cmluZyBleHByZXNzaW9uXHJcbiAqIEBwYXJhbSBvYmplY3QgLSBPYmplY3Qgd2hpY2ggcHJvcGVydHkgdmFsdWUgd2lsbCBiZSBvYnRhaW5lZFxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gZm9yIG9idGFpbmluZyB2YWx1ZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdDogYW55LCBleHByZXNzaW9uOiBzdHJpbmcpOiBhbnlcclxue1xyXG4gICAgcmV0dXJuIGV4cHJlc3Npb24uc3BsaXQoJy4nKS5yZWR1Y2UoKG8saSkgPT5cclxuICAgIHtcclxuICAgICAgICBpZihvKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9baV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sIG9iamVjdCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXRzIHZhbHVlIHRvIG9iamVjdHMgcHJvcGVydHkgdXNpbmcgc3RyaW5nIGV4cHJlc3Npb25cclxuICogQHBhcmFtIG9iamVjdCAtIE9iamVjdCB3aGljaCBwcm9wZXJ0eSB2YWx1ZSB3aWxsIGJlIHNldFxyXG4gKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0aGF0IHdpbGwgYmUgc2V0XHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIC0gRXhwcmVzc2lvbiBmb3Igc2V0dGluZyB2YWx1ZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlKG9iamVjdDogYW55LCB2YWx1ZTogYW55LCBleHByZXNzaW9uOiBzdHJpbmcpOiB2b2lkXHJcbntcclxuICAgIGxldCBwYXJ0cyA9IGV4cHJlc3Npb24uc3BsaXQoJy4nKTtcclxuXHJcbiAgICBwYXJ0cy5mb3JFYWNoKChwYXJ0LCBpbmRleCkgPT5cclxuICAgIHtcclxuICAgICAgICAvL2xhc3QgaXRlbSB2YWx1ZSBpcyBhc3NpZ25lZFxyXG4gICAgICAgIGlmKGluZGV4ID09IHBhcnRzLmxlbmd0aCAtIDEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZihpc1ByZXNlbnQodmFsdWUpKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3RbcGFydF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W3BhcnRdID0gb2JqZWN0W3BhcnRdIHx8IHt9O1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXRzIHN0cmluZyB1c2luZyAnJXMnLCB0byBwcmludCAnJXMnIHlvdSBoYXZlIHRvIHVzZSAnJSVzJ1xyXG4gKiBAcGFyYW0gc3RyIC0gU3RyaW5nIGNvbnRhaW5pbmcgc3Vic3RpdHV0aW9uIGNvbnN0YW50c1xyXG4gKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50cyB0aGF0IGFyZSB1c2VkIGZvciByZXBsYWNlbWVudFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChzdHI6IHN0cmluZywgLi4uYXJnczogYW55W10pXHJcbntcclxuICAgIGxldCBpID0gMDtcclxuXHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLygoPyElKS4pJXMvZywgKF9zdWIsIHN1YnN0QXJncykgPT4gYCR7c3Vic3RBcmdzWzBdfSR7YXJnc1tpKytdfWApLnJlcGxhY2UoLyUlcy9nLCBcIiVzXCIpO1xyXG59XHJcblxyXG4vKipcclxuICogUGVyZm9ybXMgZmxhdE1hcCBvdmVyIHByb3ZpZGVkIGFycmF5XHJcbiAqIEBwYXJhbSBhcnJheSAtIEFycmF5IHRvIGJlIHJlZHVjZWQgdXNpbmcgZmxhdE1hcFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZsYXRNYXBBcnJheTxUSXRlbT4oYXJyYXk6IFRJdGVtW11bXSk6IFRJdGVtW11cclxue1xyXG4gICAgcmV0dXJuIGFycmF5LnJlZHVjZSgoYWNjLCB4KSA9PiBhY2MuY29uY2F0KHgpLCBbXSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXJpYWxpemUgb2JqZWN0IHRvIHN0cmluZyB0aGF0IGlzIHVzYWJsZSBhcyB1cmwgcXVlcnkgcGFyYW1ldGVyXHJcbiAqIEBwYXJhbSBvYmogLSBPYmplY3QgdG8gYmUgc2VyaWFsaXplZFxyXG4gKiBAcGFyYW0gcmVwbGFjZXIgLSBGdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGZvciByZXBsYWNpbmcgcHJvdmlkZWQgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplVG9VcmxRdWVyeTxUT2JqPihvYmo6IFRPYmosIHJlcGxhY2VyPzogKHRoaXM6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IGFueSk6IHN0cmluZ1xyXG57XHJcbiAgICByZXR1cm4gYnRvYShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkob2JqLCByZXBsYWNlcikpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlc2VyaWFsaXplIHZhbHVlIGZyb20gdXJsIHF1ZXJ5IHN0cmluZyBpbnRvIG9iamVjdFxyXG4gKiBAcGFyYW0gcXVlcnlQYXJhbVZhbHVlIC0gUXVlcnkgcGFyYW0gc3RyaW5nIHZhbHVlXHJcbiAqIEBwYXJhbSByZXZpdmVyIC0gRnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBmb3IgY29ycmVjdGx5IGRlc2VyaWFsaXppbmcgdmFsdWVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZUZyb21VcmxRdWVyeTxUT2JqPihxdWVyeVBhcmFtVmFsdWU6IHN0cmluZywgcmV2aXZlcj86ICh0aGlzOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiBhbnkpOiBUT2JqXHJcbntcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHF1ZXJ5UGFyYW1WYWx1ZSkpLCByZXZpdmVyKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIGlkIHRvIHZhbGlkIGh0bWwgaWRcclxuICogQHBhcmFtIGlkIC0gSWQgdGhhdCBpcyBnb2luZyB0byBiZSBjb252ZXJ0ZWQgdG8gdmFsaWQgaHRtbCBpZFxyXG4gKiBAcGFyYW0gY2hhck1hcCAtIENoYXJhY3RlciBtYXAgdXNlZCBkdXJpbmcgbm9ybWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkSHRtbElkKGlkOiBzdHJpbmcsIGNoYXJNYXA6IE9iamVjdCA9IHt9KTogc3RyaW5nXHJcbntcclxuICAgIGlkID0gaWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXSsvZywgJy0nKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXC4vZywgJycpXHJcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkKS9nLCAneCQxJyk7XHJcblxyXG4gICAgaWQgPSBub3JtYWxpemUoaWQsIGNoYXJNYXApO1xyXG5cclxuICAgIHJldHVybiBpZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGlzIGVsZW1lbnQgb3ZlcmZsb3duIGVpdGhlciBob3Jpem9udGFsLCBvciB2ZXJ0aWNhbFxyXG4gKiBAcGFyYW0gZWxlbWVudCAtIEVsZW1lbnQgdG8gYmUgdGVzdGVkIGZvciBvdmVyZmxvd1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzT3ZlcmZsb3duKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhblxyXG57XHJcbiAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBlbGVtZW50LmNsaWVudEhlaWdodCB8fCBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5vcm1hbGl6ZXMgc3RyaW5nLCByZW1vdmluZyBhY2NlbnRcclxuICogQHBhcmFtIHZhbHVlIC0gU3RyaW5nIHRvIGJlIG5vcm1hbGl6ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBY2NlbnQodmFsdWU6IHN0cmluZyk6IHN0cmluZ1xyXG57XHJcbiAgICByZXR1cm4gdmFsdWUubm9ybWFsaXplKFwiTkZEXCIpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpO1xyXG59XHJcbiJdfQ==
1
+ import { __spreadArray } from "tslib";
2
+ import extendLib from 'extend';
3
+ import { isPresent } from './lang';
4
+ import { normalize } from '../normalizer';
5
+ /**
6
+ * Reverse current string and returns new reverse string
7
+ * @param str - String to be reversed
8
+ * @returns string Reverse string
9
+ */
10
+ export function reverseString(str) {
11
+ return str.split('').reverse().join('');
12
+ }
13
+ /**
14
+ * Extends one object with additional properties from other objects, supports deep extend
15
+ * @param deepOrObject - Object to be extended or indication that deep copy should be performed
16
+ * @param objectN - Objects that will be used for extending, if deep is used first here is target object
17
+ * @returns Object Extended object with properties from other objects
18
+ */
19
+ export function extend(deepOrObject) {
20
+ var objectN = [];
21
+ for (var _i = 1; _i < arguments.length; _i++) {
22
+ objectN[_i - 1] = arguments[_i];
23
+ }
24
+ return extendLib.apply(null, __spreadArray([deepOrObject], objectN, true));
25
+ }
26
+ /**
27
+ * Generates random string consisting from lowercase letters
28
+ * @param length - Length of generated string
29
+ * @returns number Generated string
30
+ */
31
+ export function generateId(length) {
32
+ var result = '';
33
+ for (var x = 0; x < length; x++) {
34
+ result += String.fromCharCode(Math.round(Math.random() * 25 + 97));
35
+ }
36
+ return result;
37
+ }
38
+ /**
39
+ * Generates random string of specified length from possible characters
40
+ * @param length - Length of generated string
41
+ * @param possible - Possible characters used for generation of string
42
+ */
43
+ export function generateRandomString(length, possible) {
44
+ if (possible === void 0) { possible = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; }
45
+ var text = '';
46
+ for (var i = 0; i < length; i++) {
47
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
48
+ }
49
+ return text;
50
+ }
51
+ /**
52
+ * Converts string in that way that first letter will be lowerCase
53
+ * @param text - Text to be converted
54
+ */
55
+ export function firstToLowerCase(text) {
56
+ return text.charAt(0).toLowerCase() + text.substr(1);
57
+ }
58
+ /**
59
+ * Gets indication whether is child descendand of parent
60
+ * @param parent - Parent to be tested
61
+ * @param child - Child to be looked for
62
+ */
63
+ export function isDescendant(parent, child) {
64
+ var node = child.parentNode;
65
+ while (node != null) {
66
+ if (node == parent) {
67
+ return true;
68
+ }
69
+ node = node.parentNode;
70
+ }
71
+ return false;
72
+ }
73
+ /**
74
+ * Computes offset of element against document
75
+ * @param element - Html element which offset is counted
76
+ * @param doc - Html document to be used for extracting scroll offset
77
+ */
78
+ export function offset(element, doc) {
79
+ doc = doc || document;
80
+ var rect = element.getBoundingClientRect(), scrollLeft = window.pageXOffset || doc.documentElement.scrollLeft, scrollTop = window.pageYOffset || doc.documentElement.scrollTop;
81
+ return {
82
+ top: rect.top + scrollTop,
83
+ left: rect.left + scrollLeft,
84
+ bottom: rect.top + scrollTop + rect.height,
85
+ right: rect.left + scrollLeft + rect.width
86
+ };
87
+ }
88
+ /**
89
+ * Converts html string into html DOM
90
+ * @param html - Html string to be converted to DOM
91
+ * @param doc - Optional html document to be used
92
+ */
93
+ export function htmlToElement(html, doc) {
94
+ var htmlDocument = document;
95
+ if (isPresent(doc)) {
96
+ htmlDocument = doc;
97
+ }
98
+ var template = htmlDocument.createElement('template');
99
+ html = html.trim();
100
+ template.innerHTML = html;
101
+ return template.content.firstChild;
102
+ }
103
+ /**
104
+ * Extract values from enum type
105
+ * @param enumType - Enum type that will have extracted values
106
+ */
107
+ export function getEnumValues(enumType) {
108
+ var result = [];
109
+ Object.keys(enumType).forEach(function (key) {
110
+ if (isNaN(+key)) {
111
+ return;
112
+ }
113
+ result.push({
114
+ value: key,
115
+ name: enumType[+key]
116
+ });
117
+ });
118
+ return result;
119
+ }
120
+ export function getValue(object, expression) {
121
+ return expression.split('.').reduce(function (o, i) {
122
+ if (o) {
123
+ return o[i];
124
+ }
125
+ return null;
126
+ }, object);
127
+ }
128
+ /**
129
+ * Sets value to objects property using string expression
130
+ * @param object - Object which property value will be set
131
+ * @param value - Value that will be set
132
+ * @param expression - Expression for setting value
133
+ */
134
+ export function setValue(object, value, expression) {
135
+ var parts = expression.split('.');
136
+ parts.forEach(function (part, index) {
137
+ var _a;
138
+ //last item value is assigned
139
+ if (index == parts.length - 1) {
140
+ if (isPresent(value)) {
141
+ object[part] = value;
142
+ }
143
+ return;
144
+ }
145
+ object = object[part] = (_a = object[part]) !== null && _a !== void 0 ? _a : {};
146
+ });
147
+ }
148
+ /**
149
+ * Formats string using '%s', to print '%s' you have to use '%%s'
150
+ * @param str - String containing substitution constants
151
+ * @param args - Arguments that are used for replacement
152
+ */
153
+ export function format(str) {
154
+ var args = [];
155
+ for (var _i = 1; _i < arguments.length; _i++) {
156
+ args[_i - 1] = arguments[_i];
157
+ }
158
+ var i = 0;
159
+ return str.replace(/((?!%).)%s/g, function (_sub, substArgs) { return "" + substArgs[0] + args[i++]; }).replace(/%%s/g, '%s');
160
+ }
161
+ /**
162
+ * Performs flatMap over provided array
163
+ * @param array - Array to be reduced using flatMap
164
+ */
165
+ export function flatMapArray(array) {
166
+ return array.reduce(function (acc, x) { return acc.concat(x); }, []);
167
+ }
168
+ /**
169
+ * Serialize object to string that is usable as url query parameter
170
+ * @param obj - Object to be serialized
171
+ * @param replacer - Function that can be used for replacing provided values
172
+ */
173
+ export function serializeToUrlQuery(obj, replacer) {
174
+ return btoa(encodeURIComponent(JSON.stringify(obj, replacer)));
175
+ }
176
+ /**
177
+ * Deserialize value from url query string into object
178
+ * @param queryParamValue - Query param string value
179
+ * @param reviver - Function that can be used for correctly deserializing value
180
+ */
181
+ export function deserializeFromUrlQuery(queryParamValue, reviver) {
182
+ return JSON.parse(decodeURIComponent(atob(queryParamValue)), reviver);
183
+ }
184
+ /**
185
+ * Converts id to valid html id
186
+ * @param id - Id that is going to be converted to valid html id
187
+ * @param charMap - Character map used during normalization
188
+ */
189
+ export function validHtmlId(id, charMap) {
190
+ if (charMap === void 0) { charMap = {}; }
191
+ id = id.toLowerCase()
192
+ .replace(/[\s]+/g, '-')
193
+ .replace(/\./g, '')
194
+ .replace(/^(\d)/g, 'x$1');
195
+ id = normalize(id, charMap);
196
+ return id;
197
+ }
198
+ /**
199
+ * Checks whether is element overflown either horizontal, or vertical
200
+ * @param element - Element to be tested for overflow
201
+ */
202
+ export function isOverflown(element) {
203
+ return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
204
+ }
205
+ /**
206
+ * Normalizes string, removing accent
207
+ * @param value - String to be normalized
208
+ */
209
+ export function normalizeAccent(value) {
210
+ return value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
211
+ }
212
+ /**
213
+ * Converts instance of Class to equivalent Record type
214
+ * @param instance - Instance which type to be converted
215
+ * @typeparam TType - Type of instance
216
+ */
217
+ export function asDictionary(instance) {
218
+ return instance;
219
+ }
220
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IAErC,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAyED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,YAAuC;IAAE,iBAA6B;SAA7B,UAA6B,EAA7B,qBAA6B,EAA7B,IAA6B;QAA7B,gCAA6B;;IAEzF,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,iBAAG,YAAY,GAAK,OAAO,QAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IAErC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAC9B;QACI,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,QAAmF;IAAnF,yBAAA,EAAA,2EAAmF;IAEpI,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAC9B;QACI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;KACxE;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAEzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,KAAkB;IAEhE,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;IAE5B,OAAO,IAAI,IAAI,IAAI,EACnB;QACI,IAAI,IAAI,IAAI,MAAM,EAClB;YACI,OAAO,IAAI,CAAC;SACf;QAED,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,OAAoB,EAAE,GAAc;IAEvD,GAAG,GAAG,GAAG,IAAI,QAAQ,CAAC;IAEtB,IAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,EACxC,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,eAAe,CAAC,UAAU,EACjE,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC;IAEpE,OAAO;QACH,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU;QAC5B,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;QAC1C,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK;KAC7C,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,GAAc;IAEtD,IAAI,YAAY,GAAG,QAAQ,CAAC;IAE5B,IAAG,SAAS,CAAC,GAAG,CAAC,EACjB;QACI,YAAY,GAAG,GAAG,CAAC;KACtB;IAED,IAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAE1B,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAyB,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAqB,QAAe;IAE7D,IAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;QAE7B,IAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EACd;YACI,OAAO;SACV;QAED,MAAM,CAAC,IAAI,CACX;YACI,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;SACvB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAQD,MAAM,UAAU,QAAQ,CAAC,MAAuB,EAAE,UAAkB;IAEhE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC;QAErC,IAAG,CAAC,EACJ;YACI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACf;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAuB,EAAE,KAAc,EAAE,UAAkB;IAEhF,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;;QAEtB,6BAA6B;QAC7B,IAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAC5B;YACI,IAAG,SAAS,CAAC,KAAK,CAAC,EACnB;gBACI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aACxB;YAED,OAAO;SACV;QAED,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW;IAAE,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,6BAAkB;;IAElD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,UAAC,IAAI,EAAE,SAAS,IAAK,OAAA,KAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAG,EAA7B,CAA6B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAQ,KAAgB;IAEhD,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAb,CAAa,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAO,GAAS,EAAE,QAAsD;IAEvG,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAO,eAAuB,EAAE,OAAqD;IAExH,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,OAA8B;IAA9B,wBAAA,EAAA,YAA8B;IAElE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;SAChB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE9B,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5B,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoB;IAE5C,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAEzC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAQ,QAAe;IAE/C,OAAO,QAA+B,CAAC;AAC3C,CAAC","sourcesContent":["import extendLib from 'extend';\r\n\r\nimport {isPresent} from './lang';\r\nimport {AsDictionary, Dictionary, Enum, StringDictionary, ValueNamePair} from '../types';\r\nimport {normalize} from '../normalizer';\r\n\r\n/**\r\n * Reverse current string and returns new reverse string\r\n * @param str - String to be reversed\r\n * @returns string Reverse string\r\n */\r\nexport function reverseString(str: string): string\r\n{\r\n return str.split('').reverse().join('');\r\n}\r\n\r\n/**\r\n * Extends target object with source\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source - Object that will be used for extending\r\n */\r\nexport function extend<T, U>(deep: boolean, target: T, source: U): T & U;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V>(deep: boolean, target: T, source1: U, source2: V): T & U & V;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W>(deep: boolean, target: T, source1: U, source2: V, source3: W): T & U & V & W;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n * @param source4 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W, X>(deep: boolean, target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source - Object that will be used for extending\r\n */\r\nexport function extend<T, U>(target: T, source: U): T & U;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V>(target: T, source1: U, source2: V): T & U & V;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n * @param source4 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W, X>(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\r\n/**\r\n * Extends one object with additional properties from other objects, supports deep extend\r\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\r\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\r\n * @returns Object Extended object with properties from other objects\r\n */\r\nexport function extend<TResult>(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): TResult;\r\n/**\r\n * Extends one object with additional properties from other objects, supports deep extend\r\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\r\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\r\n * @returns Object Extended object with properties from other objects\r\n */\r\nexport function extend(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): Dictionary\r\n{\r\n return extendLib.apply(null, [deepOrObject, ...objectN]);\r\n}\r\n\r\n/**\r\n * Generates random string consisting from lowercase letters\r\n * @param length - Length of generated string\r\n * @returns number Generated string\r\n */\r\nexport function generateId(length: number): string\r\n{\r\n let result = '';\r\n\r\n for(let x = 0; x < length; x++)\r\n {\r\n result += String.fromCharCode(Math.round(Math.random() * 25 + 97));\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Generates random string of specified length from possible characters\r\n * @param length - Length of generated string\r\n * @param possible - Possible characters used for generation of string\r\n */\r\nexport function generateRandomString(length: number, possible: string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string\r\n{\r\n let text = '';\r\n\r\n for (let i = 0;i < length; i++)\r\n {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n}\r\n\r\n/**\r\n * Converts string in that way that first letter will be lowerCase\r\n * @param text - Text to be converted\r\n */\r\nexport function firstToLowerCase(text: string): string\r\n{\r\n return text.charAt(0).toLowerCase() + text.substr(1);\r\n}\r\n\r\n/**\r\n * Gets indication whether is child descendand of parent\r\n * @param parent - Parent to be tested\r\n * @param child - Child to be looked for\r\n */\r\nexport function isDescendant(parent: HTMLElement, child: HTMLElement): boolean\r\n{\r\n let node = child.parentNode;\r\n\r\n while (node != null)\r\n {\r\n if (node == parent)\r\n {\r\n return true;\r\n }\r\n\r\n node = node.parentNode;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Computes offset of element against document\r\n * @param element - Html element which offset is counted\r\n * @param doc - Html document to be used for extracting scroll offset\r\n */\r\nexport function offset(element: HTMLElement, doc?: Document)\r\n{\r\n doc = doc || document;\r\n\r\n const rect = element.getBoundingClientRect(),\r\n scrollLeft = window.pageXOffset || doc.documentElement.scrollLeft,\r\n scrollTop = window.pageYOffset || doc.documentElement.scrollTop;\r\n\r\n return {\r\n top: rect.top + scrollTop,\r\n left: rect.left + scrollLeft,\r\n bottom: rect.top + scrollTop + rect.height,\r\n right: rect.left + scrollLeft + rect.width\r\n };\r\n}\r\n\r\n/**\r\n * Converts html string into html DOM\r\n * @param html - Html string to be converted to DOM\r\n * @param doc - Optional html document to be used\r\n */\r\nexport function htmlToElement(html: string, doc?: Document): HTMLElement\r\n{\r\n let htmlDocument = document;\r\n\r\n if(isPresent(doc))\r\n {\r\n htmlDocument = doc;\r\n }\r\n\r\n const template = htmlDocument.createElement('template');\r\n html = html.trim();\r\n template.innerHTML = html;\r\n\r\n return template.content.firstChild as HTMLElement;\r\n}\r\n\r\n/**\r\n * Extract values from enum type\r\n * @param enumType - Enum type that will have extracted values\r\n */\r\nexport function getEnumValues<TEnum extends Enum>(enumType: TEnum): ValueNamePair[]\r\n{\r\n const result: ValueNamePair[] = [];\r\n\r\n Object.keys(enumType).forEach(key =>\r\n {\r\n if(isNaN(+key))\r\n {\r\n return;\r\n }\r\n\r\n result.push(\r\n {\r\n value: key,\r\n name: enumType[+key]\r\n });\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Safely returns value from object property using string expression\r\n * @param object - Object which property value will be obtained\r\n * @param expression - Expression for obtaining value\r\n */\r\nexport function getValue<TValue = unknown>(object: Dictionary<any>, expression: string): TValue\r\nexport function getValue(object: Dictionary<any>, expression: string): unknown\r\n{\r\n return expression.split('.').reduce((o, i) =>\r\n {\r\n if(o)\r\n {\r\n return o[i];\r\n }\r\n\r\n return null;\r\n }, object);\r\n}\r\n\r\n/**\r\n * Sets value to objects property using string expression\r\n * @param object - Object which property value will be set\r\n * @param value - Value that will be set\r\n * @param expression - Expression for setting value\r\n */\r\nexport function setValue(object: Dictionary<any>, value: unknown, expression: string): void\r\n{\r\n const parts = expression.split('.');\r\n\r\n parts.forEach((part, index) =>\r\n {\r\n //last item value is assigned\r\n if(index == parts.length - 1)\r\n {\r\n if(isPresent(value))\r\n {\r\n object[part] = value;\r\n }\r\n\r\n return;\r\n }\r\n\r\n object = object[part] = object[part] ?? {};\r\n });\r\n}\r\n\r\n/**\r\n * Formats string using '%s', to print '%s' you have to use '%%s'\r\n * @param str - String containing substitution constants\r\n * @param args - Arguments that are used for replacement\r\n */\r\nexport function format(str: string, ...args: unknown[]): string\r\n{\r\n let i = 0;\r\n\r\n return str.replace(/((?!%).)%s/g, (_sub, substArgs) => `${substArgs[0]}${args[i++]}`).replace(/%%s/g, '%s');\r\n}\r\n\r\n/**\r\n * Performs flatMap over provided array\r\n * @param array - Array to be reduced using flatMap\r\n */\r\nexport function flatMapArray<TItem>(array: TItem[][]): TItem[]\r\n{\r\n return array.reduce((acc, x) => acc.concat(x), []);\r\n}\r\n\r\n/**\r\n * Serialize object to string that is usable as url query parameter\r\n * @param obj - Object to be serialized\r\n * @param replacer - Function that can be used for replacing provided values\r\n */\r\nexport function serializeToUrlQuery<TObj>(obj: TObj, replacer?: (this: any, key: string, value: any) => any): string\r\n{\r\n return btoa(encodeURIComponent(JSON.stringify(obj, replacer)));\r\n}\r\n\r\n/**\r\n * Deserialize value from url query string into object\r\n * @param queryParamValue - Query param string value\r\n * @param reviver - Function that can be used for correctly deserializing value\r\n */\r\nexport function deserializeFromUrlQuery<TObj>(queryParamValue: string, reviver?: (this: any, key: string, value: any) => any): TObj\r\n{\r\n return JSON.parse(decodeURIComponent(atob(queryParamValue)), reviver);\r\n}\r\n\r\n/**\r\n * Converts id to valid html id\r\n * @param id - Id that is going to be converted to valid html id\r\n * @param charMap - Character map used during normalization\r\n */\r\nexport function validHtmlId(id: string, charMap: StringDictionary = {}): string\r\n{\r\n id = id.toLowerCase()\r\n .replace(/[\\s]+/g, '-')\r\n .replace(/\\./g, '')\r\n .replace(/^(\\d)/g, 'x$1');\r\n\r\n id = normalize(id, charMap);\r\n\r\n return id;\r\n}\r\n\r\n/**\r\n * Checks whether is element overflown either horizontal, or vertical\r\n * @param element - Element to be tested for overflow\r\n */\r\nexport function isOverflown(element: HTMLElement): boolean\r\n{\r\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\r\n}\r\n\r\n/**\r\n * Normalizes string, removing accent\r\n * @param value - String to be normalized\r\n */\r\nexport function normalizeAccent(value: string): string\r\n{\r\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n}\r\n\r\n/**\r\n * Converts instance of Class to equivalent Record type\r\n * @param instance - Instance which type to be converted\r\n * @typeparam TType - Type of instance\r\n */\r\nexport function asDictionary<TType>(instance: TType): AsDictionary<TType>\r\n{\r\n return instance as AsDictionary<TType>;\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- export * from './common';
2
- export * from './lang';
3
- export * from './nameof';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGFuZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmFtZW9mJzsiXX0=
1
+ export * from './common';
2
+ export * from './lang';
3
+ export * from './nameof';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC","sourcesContent":["export * from './common';\r\nexport * from './lang';\r\nexport * from './nameof';"]}