@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
@@ -1,225 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FsArray {
4
- /**
5
- * @deprecated use import { nameValue } from @firestitch/common/array; instead
6
- */
7
- nameValue(array, name, value) {
8
- console.warn('@deprecated use import { nameValue } from @firestitch/common/array; instead');
9
- let list = [];
10
- if (name || value) {
11
- let nameFn = typeof name === 'function' ? name : function (item) { return item[name]; };
12
- let valueFn = typeof value === 'function' ? value : function (item) { return item[value]; };
13
- array.forEach(function (item) {
14
- list.push({ name: nameFn(item), value: valueFn(item) });
15
- });
16
- }
17
- else {
18
- array.forEach(function (name, value) {
19
- list.push({ name: name, value: value });
20
- });
21
- }
22
- return list;
23
- }
24
- /**
25
- * @deprecated use import { remove } from @firestitch/common/array; instead
26
- */
27
- remove(array, query) {
28
- console.warn('@deprecated use import { remove } from @firestitch/common/array; instead');
29
- let idx = this.indexOf(array, query);
30
- if (idx >= 0) {
31
- return array.splice(idx, 1);
32
- }
33
- return idx;
34
- }
35
- /**
36
- * @deprecated use import { indexOf } from @firestitch/common/array; instead
37
- */
38
- indexOf(array, query) {
39
- console.warn('@deprecated use import { indexOf } from @firestitch/common/array; instead');
40
- if (typeof query !== 'function') {
41
- let queryObj = query;
42
- query = (item) => {
43
- return this.compare(queryObj, item);
44
- };
45
- }
46
- for (let i = 0, len = array.length; i < len; i++) {
47
- if (query(array[i])) {
48
- return i;
49
- }
50
- }
51
- return -1;
52
- }
53
- /**
54
- * @deprecated use import { compare } from @firestitch/common/array; instead
55
- */
56
- compare(query, item) {
57
- console.warn('@deprecated use import { compare } from @firestitch/common/array; instead');
58
- let value = true;
59
- for (let key in query) {
60
- value = value && item[key] == query[key];
61
- }
62
- return value;
63
- }
64
- /**
65
- * @deprecated use import { filter } from @firestitch/common/array; instead
66
- */
67
- filter(array, query) {
68
- console.warn('@deprecated use import { filter } from @firestitch/common/array; instead');
69
- if (typeof query !== 'function') {
70
- let queryObj = query;
71
- query = (item) => {
72
- return this.compare(queryObj, item);
73
- };
74
- }
75
- let isarray = Array.isArray(array);
76
- let list = isarray ? [] : {};
77
- if (isarray)
78
- array.forEach(function (item, idx) {
79
- if (query(item)) {
80
- list.push(item);
81
- }
82
- });
83
- else
84
- Object.keys(array).forEach(key => {
85
- if (query(array[key])) {
86
- list[key] = array[key];
87
- }
88
- });
89
- return list;
90
- }
91
- /**
92
- * @deprecated use import { index } from @firestitch/common/array; instead
93
- */
94
- index(array, property) {
95
- console.warn('@deprecated use import { index } from @firestitch/common/array; instead');
96
- let list = {};
97
- array.forEach(function (item, idx) {
98
- list[item[property]] = item;
99
- });
100
- return list;
101
- }
102
- /**
103
- * @deprecated use import { sort } from @firestitch/common/array; instead
104
- */
105
- sort(array, query, reverse = false) {
106
- console.warn('@deprecated use import { sort } from @firestitch/common/array; instead');
107
- if (typeof query !== 'function') {
108
- let queryStr = query;
109
- query = function (a, b) {
110
- if (reverse) {
111
- if (a[queryStr] < b[queryStr]) {
112
- return 1;
113
- }
114
- else if (a[queryStr] > b[queryStr]) {
115
- return -1;
116
- }
117
- }
118
- else {
119
- if (a[queryStr] > b[queryStr]) {
120
- return 1;
121
- }
122
- else if (a[queryStr] < b[queryStr]) {
123
- return -1;
124
- }
125
- }
126
- return 0;
127
- };
128
- }
129
- array.sort(query);
130
- return array;
131
- }
132
- /**
133
- * @deprecated use import { rsort } from @firestitch/common/array; instead
134
- */
135
- rsort(array, query) {
136
- console.warn('@deprecated use import { rsort } from @firestitch/common/array; instead');
137
- return this.sort(array, query, true);
138
- }
139
- /**
140
- * @deprecated use import { list } from @firestitch/common/array; instead
141
- */
142
- list(array, property, index = null) {
143
- console.warn('@deprecated use import { list } from @firestitch/common/array; instead');
144
- let list = index ? {} : [];
145
- array.forEach(function (item, idx) {
146
- if (index) {
147
- list[item[index]] = item[property];
148
- }
149
- else {
150
- list.push(item[property]);
151
- }
152
- });
153
- return list;
154
- }
155
- /**
156
- * @deprecated use import { applyDepth } from @firestitch/common/array; instead
157
- */
158
- applyDepth(objects, parent_property, id_property = 'id', depth_property = 'depth') {
159
- console.warn('@deprecated use import { applyDepth } from @firestitch/common/array; instead');
160
- let keyed = {};
161
- objects.forEach(function (object) {
162
- if (!object[parent_property]) {
163
- object[depth_property] = 0;
164
- }
165
- keyed[object[id_property]] = object;
166
- });
167
- Object.keys(keyed).forEach(key => {
168
- Object.keys(keyed).forEach(key => {
169
- let object = keyed[key];
170
- if (!keyed[key][depth_property]) {
171
- if (keyed[key][parent_property]) {
172
- keyed[key][depth_property] = keyed[keyed[key][parent_property]][depth_property] + 1;
173
- }
174
- }
175
- });
176
- });
177
- return keyed;
178
- }
179
- /**
180
- * @deprecated use import { inArray } from @firestitch/common/array; instead
181
- */
182
- inArray(values, array) {
183
- console.warn('@deprecated use import { inArray } from @firestitch/common/array; instead');
184
- if (!Array.isArray(values)) {
185
- values = [values];
186
- }
187
- for (let i = 0, len = values.length; i < len; i++) {
188
- if (array.indexOf(values[i]) >= 0) {
189
- return true;
190
- }
191
- }
192
- return false;
193
- }
194
- /**
195
- * @deprecated use import { keyExists } from @firestitch/common/array; instead
196
- */
197
- keyExists(array, key) {
198
- console.warn('@deprecated use import { keyExists } from @firestitch/common/array; instead');
199
- return array.hasOwnProperty(key);
200
- }
201
- /**
202
- * @deprecated use import { length } from @firestitch/common/array; instead
203
- */
204
- length(array) {
205
- console.warn('@deprecated use import { length } from @firestitch/common/array; instead');
206
- return array.length;
207
- }
208
- /**
209
- * @deprecated use import { ksort } from @firestitch/common/array; instead
210
- */
211
- ksort(unordered) {
212
- console.warn('@deprecated use import { ksort } from @firestitch/common/array; instead');
213
- Object.keys(unordered).sort().forEach(function (key) {
214
- let value = unordered[key];
215
- delete unordered[key];
216
- unordered[key] = value;
217
- });
218
- }
219
- }
220
- FsArray.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsArray, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
- FsArray.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsArray });
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsArray, decorators: [{
223
- type: Injectable
224
- }] });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvYXJyYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sT0FBTztJQUNoQjs7TUFFRTtJQUNLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzVGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtZQUVmLElBQUksTUFBTSxHQUFHLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztZQUN2RixJQUFJLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFFM0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUk7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1NBRU47YUFBTTtZQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsS0FBSztnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVB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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZzQXJyYXkge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBuYW1lVmFsdWUgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZFxuICAgICovXG4gICAgcHVibGljIG5hbWVWYWx1ZShhcnJheSwgbmFtZSwgdmFsdWUpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgbmFtZVZhbHVlIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWQnKTtcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcbiAgICAgICAgaWYgKG5hbWUgfHwgdmFsdWUpIHtcblxuICAgICAgICAgICAgbGV0IG5hbWVGbiA9IHR5cGVvZiBuYW1lID09PSAnZnVuY3Rpb24nID8gbmFtZSA6IGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtW25hbWVdIH07XG4gICAgICAgICAgICBsZXQgdmFsdWVGbiA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW1bdmFsdWVdIH07XG5cbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBsaXN0LnB1c2goeyBuYW1lOiBuYW1lRm4oaXRlbSksIHZhbHVlOiB2YWx1ZUZuKGl0ZW0pIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyByZW1vdmUoYXJyYXksIHF1ZXJ5KTogYW55IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWQnKTtcbiAgICAgICAgbGV0IGlkeCA9IHRoaXMuaW5kZXhPZihhcnJheSwgcXVlcnkpO1xuXG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGFycmF5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgaW5kZXhPZiB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgaW5kZXhPZihhcnJheSwgcXVlcnkpOiBudW1iZXIge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBxdWVyeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHF1ZXJ5T2JqID0gcXVlcnk7XG4gICAgICAgICAgICBxdWVyeSA9IChpdGVtKSA9PiB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHF1ZXJ5T2JqLCBpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKHF1ZXJ5KGFycmF5W2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBjb21wYXJlIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBjb21wYXJlKHF1ZXJ5LCBpdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGNvbXBhcmUgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZCcpO1xuICAgICAgICBsZXQgdmFsdWUgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4gcXVlcnkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgJiYgaXRlbVtrZXldID09IHF1ZXJ5W2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGZpbHRlciB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgZmlsdGVyKGFycmF5LCBxdWVyeSk6IEFycmF5PGFueT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZCcpO1xuICAgICAgICBpZiAodHlwZW9mIHF1ZXJ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBsZXQgcXVlcnlPYmogPSBxdWVyeTtcbiAgICAgICAgICAgIHF1ZXJ5ID0gKGl0ZW0pID0+IHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUocXVlcnlPYmosIGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzYXJyYXkgPSBBcnJheS5pc0FycmF5KGFycmF5KTtcbiAgICAgICAgbGV0IGxpc3Q6IGFueSA9IGlzYXJyYXkgPyBbXSA6IHt9O1xuICAgICAgICBpZiAoaXNhcnJheSlcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGlkeCkge1xuICAgICAgICAgICAgICAgIGlmIChxdWVyeShpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGVsc2UgT2JqZWN0LmtleXMoYXJyYXkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChxdWVyeShhcnJheVtrZXldKSkge1xuICAgICAgICAgICAgICAgIGxpc3Rba2V5XSA9IGFycmF5W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBpbmRleCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgaW5kZXgoYXJyYXksIHByb3BlcnR5KTogT2JqZWN0IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgaW5kZXggfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZCcpO1xuICAgICAgICBsZXQgbGlzdCA9IHt9O1xuICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpZHgpIHtcbiAgICAgICAgICAgIGxpc3RbaXRlbVtwcm9wZXJ0eV1dID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHNvcnQgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZFxuICAgICovXG4gICAgcHVibGljIHNvcnQoYXJyYXksIHF1ZXJ5LCByZXZlcnNlID0gZmFsc2UpOiBBcnJheTxhbnk+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgc29ydCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIGlmICh0eXBlb2YgcXVlcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCBxdWVyeVN0ciA9IHF1ZXJ5O1xuICAgICAgICAgICAgcXVlcnkgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhW3F1ZXJ5U3RyXSA8IGJbcXVlcnlTdHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhW3F1ZXJ5U3RyXSA+IGJbcXVlcnlTdHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYVtxdWVyeVN0cl0gPiBiW3F1ZXJ5U3RyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYVtxdWVyeVN0cl0gPCBiW3F1ZXJ5U3RyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5LnNvcnQocXVlcnkpO1xuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHJzb3J0IH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyByc29ydChhcnJheSwgcXVlcnkpOiBBcnJheTxhbnk+IHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHJzb3J0IH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWQnKTtcbiAgICAgIHJldHVybiB0aGlzLnNvcnQoYXJyYXksIHF1ZXJ5LCB0cnVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBsaXN0IH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBsaXN0KGFycmF5LCBwcm9wZXJ0eSwgaW5kZXggPSBudWxsKTogT2JqZWN0IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgbGlzdCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIGxldCBsaXN0OiBhbnkgPSBpbmRleCA/IHt9IDogW107XG4gICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGlkeCkge1xuICAgICAgICAgICAgaWYgKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgbGlzdFtpdGVtW2luZGV4XV0gPSBpdGVtW3Byb3BlcnR5XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKGl0ZW1bcHJvcGVydHldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBhcHBseURlcHRoIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBhcHBseURlcHRoKG9iamVjdHMsIHBhcmVudF9wcm9wZXJ0eSwgaWRfcHJvcGVydHkgPSAnaWQnLCBkZXB0aF9wcm9wZXJ0eSA9ICdkZXB0aCcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgYXBwbHlEZXB0aCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIGxldCBrZXllZCA9IHt9O1xuICAgICAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICAgICAgaWYgKCFvYmplY3RbcGFyZW50X3Byb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgIG9iamVjdFtkZXB0aF9wcm9wZXJ0eV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5ZWRbb2JqZWN0W2lkX3Byb3BlcnR5XV0gPSBvYmplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Qua2V5cyhrZXllZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoa2V5ZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0ga2V5ZWRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoIWtleWVkW2tleV1bZGVwdGhfcHJvcGVydHldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXllZFtrZXldW3BhcmVudF9wcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleWVkW2tleV1bZGVwdGhfcHJvcGVydHldID0ga2V5ZWRba2V5ZWRba2V5XVtwYXJlbnRfcHJvcGVydHldXVtkZXB0aF9wcm9wZXJ0eV0gKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4ga2V5ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGluQXJyYXkgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZFxuICAgICovXG4gICAgaW5BcnJheSh2YWx1ZXMsIGFycmF5KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGluQXJyYXkgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZCcpO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdmFsdWVzID0gW3ZhbHVlc107XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdmFsdWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXJyYXkuaW5kZXhPZih2YWx1ZXNbaV0pID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsga2V5RXhpc3RzIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIGtleUV4aXN0cyhhcnJheSwga2V5KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGtleUV4aXN0cyB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIHJldHVybiBhcnJheS5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBsZW5ndGggfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi9hcnJheTsgaW5zdGVhZFxuICAgICovXG4gICAgbGVuZ3RoKGFycmF5KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGxlbmd0aCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIHJldHVybiBhcnJheS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGtzb3J0IH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vYXJyYXk7IGluc3RlYWRcbiAgICAqL1xuICAgIGtzb3J0KHVub3JkZXJlZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBrc29ydCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL2FycmF5OyBpbnN0ZWFkJyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHVub3JkZXJlZCkuc29ydCgpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdW5vcmRlcmVkW2tleV07XG4gICAgICAgICAgICBkZWxldGUgdW5vcmRlcmVkW2tleV07XG4gICAgICAgICAgICB1bm9yZGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxufVxuIl19
@@ -1,251 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export const KEY_CANCEL = 3, KEY_HELP = 6, KEY_BACKSPACE = 8, KEY_TAB = 9, KEY_CLEAR = 12, KEY_RETURN = 13, KEY_ENTER = 14, KEY_SHIFT = 16, KEY_CONTROL = 17, KEY_ALT = 18, KEY_PAUSE = 19, KEY_CAPS_LOCK = 20, KEY_ESCAPE = 27, KEY_SPACE = 32, KEY_PAGE_UP = 33, KEY_PAGE_DOWN = 34, KEY_END = 35, KEY_HOME = 36, KEY_LEFT = 37, KEY_UP = 38, KEY_RIGHT = 39, KEY_DOWN = 40, KEY_PRINTSCREEN = 44, KEY_INSERT = 45, KEY_DELETE = 46, KEY_0 = 48, KEY_1 = 49, KEY_2 = 50, KEY_3 = 51, KEY_4 = 52, KEY_5 = 53, KEY_6 = 54, KEY_7 = 55, KEY_8 = 56, KEY_9 = 57, KEY_SEMICOLON = 59, KEY_EQUALS = 61;
4
- /*
5
- Basically, just copy-pasted functionality from fs-boilerplate v1.x, with some small changes (like we dont have angular.bind anymore, had to go with a workaround)
6
- There might be a better way to organise constatns but I need to know use-cases
7
- */
8
- export class FsUtil {
9
- constructor() {
10
- this.intervals = {};
11
- }
12
- /**
13
- * @deprecated use @firestitch/common/util/guid instead
14
- */
15
- guid(pattern) {
16
- console.warn('@deprecated use @firestitch/common/util/guid instead');
17
- pattern = pattern || 'xxxxxx';
18
- return pattern.replace(/[xy]/g, function (c) {
19
- var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
20
- return v.toString(16);
21
- });
22
- }
23
- /**
24
- * @deprecated use import { uuid } from @firestitch/common/util; instead
25
- */
26
- uuid() {
27
- console.warn('@deprecated use @firestitch/common/util/uuid instead');
28
- return this.guid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
29
- }
30
- /**
31
- * @deprecated use import { resolve } from @firestitch/common/util; instead
32
- */
33
- resolve(promise, defaults = []) {
34
- console.warn('@deprecated use @firestitch/common/util/resolve instead');
35
- const result = defaults;
36
- return new Promise(resolve => {
37
- promise.then(function (data) {
38
- Object.keys(data).forEach(key => result[key] = data[key]);
39
- resolve(result);
40
- });
41
- });
42
- }
43
- /**
44
- * @deprecated use _.toInteger() instead
45
- */
46
- int(value) {
47
- console.warn('@deprecated use _.toInteger() instead');
48
- value = parseInt(value);
49
- if (isNaN(value)) {
50
- value = 0;
51
- }
52
- return value;
53
- }
54
- /**
55
- * @deprecated use _.toFinite() instead
56
- */
57
- float(value) {
58
- console.warn('@deprecated use _.toFinite() instead');
59
- value = parseFloat(value);
60
- if (isNaN(value)) {
61
- value = 0;
62
- }
63
- return value;
64
- }
65
- /**
66
- * @deprecated use _.toString() instead
67
- */
68
- string(string) {
69
- console.warn('@deprecated use _.toString() instead');
70
- if (string === null || string === undefined) {
71
- string = '';
72
- }
73
- return (string).toString();
74
- }
75
- /**
76
- * @deprecated use import { isEmpty } from @firestitch/common/util; instead
77
- */
78
- isEmpty(value, options) {
79
- console.warn('@deprecated use import { isEmpty } from @firestitch/common/util; instead');
80
- options = options || {};
81
- return value === undefined ||
82
- value === null ||
83
- value === false ||
84
- value === '' ||
85
- !this.string(value).length ||
86
- (this.isObject(value) &&
87
- (value.constructor.name === 'Object' && !Object.keys(value).length)) ||
88
- (!options.zero && (value === 0 || value === '0'));
89
- }
90
- /**
91
- * @deprecated use _.isInteger() instead
92
- */
93
- isInt(value, type) {
94
- console.warn('@deprecated use _.isInteger() instead');
95
- const int = !!this.string(value).match(/^\d+$/);
96
- if (!int) {
97
- return false;
98
- }
99
- if (type) {
100
- return Number.isInteger(value);
101
- }
102
- return true;
103
- }
104
- /**
105
- * @deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}
106
- */
107
- each(object, func) {
108
- console.warn('@deprecated use _.each() instead {@link https://lodash.com/docs/4.17.5#forEach}');
109
- if (!this.isArray(object) && !this.isObject(object)) {
110
- return;
111
- }
112
- Object.keys(object).forEach(function (key) {
113
- func(object[key], key);
114
- });
115
- }
116
- /**
117
- * @deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject}
118
- * or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead
119
- */
120
- isObject(value) {
121
- console.warn('@deprecated use _.isArrayLikeObject() {@link https://lodash.com/docs/4.17.5#isArrayLikeObject} or _.isObject() {@link https://lodash.com/docs/4.17.5#isObject} instead');
122
- return value !== null && typeof value === 'object' && !this.isArray(value);
123
- }
124
- /**
125
- * @deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}
126
- */
127
- isString(value) {
128
- console.warn('@deprecated use _.isString() instead {@link https://lodash.com/docs/4.17.5#isString}');
129
- return typeof value === 'string' || value instanceof String;
130
- }
131
- /**
132
- * @deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}
133
- */
134
- isArray(value) {
135
- console.warn('@deprecated use _.isArray() instead {@link https://lodash.com/docs/4.17.5#isArray}');
136
- return value instanceof Array;
137
- }
138
- /**
139
- * @deprecated use import { isNumeric } from @firestitch/common/util; instead
140
- */
141
- isNumeric(value) {
142
- console.warn('@deprecated use import { isNumeric } from @firestitch/common/util; instead');
143
- return this.string(value).length && !!this.string(value).match(/^-?\d*\.?\d*$/);
144
- }
145
- /**
146
- * @deprecated use import { isClass } from @firestitch/common/util; instead
147
- */
148
- isClass(value, cls) {
149
- console.warn('@deprecated use import { isClass } from @firestitch/common/util; instead');
150
- if (this.isObject(value)) {
151
- if (this.isString(cls)) {
152
- if (value.constructor) {
153
- if (value.constructor.name === cls) {
154
- return true;
155
- }
156
- }
157
- }
158
- else {
159
- if (value instanceof cls) {
160
- return true;
161
- }
162
- }
163
- }
164
- return false;
165
- }
166
- /**
167
- * @deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}
168
- */
169
- isBoolean(value) {
170
- console.warn('@deprecated use _.isBoolean() instead {@link https://lodash.com/docs/4.17.5#isBoolean}');
171
- return value === true || value === false;
172
- }
173
- /**
174
- * @deprecated use import { value } from @firestitch/common/util; instead
175
- */
176
- value(object, key, def) {
177
- console.warn('@deprecated use import { value } from @firestitch/common/util; instead');
178
- if (this.isObject(object) || this.isArray(object)) {
179
- if (object.hasOwnProperty(key)) {
180
- return object[key];
181
- }
182
- }
183
- return def;
184
- }
185
- throttle(func, wait) {
186
- console.warn('@deprecated use import { throttle } from @firestitch/common/util; instead');
187
- let waiting = false; // Initially, we're not waiting
188
- return function () {
189
- if (!waiting) { // If we're not waiting
190
- func.apply(null, arguments); // Execute users function
191
- waiting = true; // Prevent future invocations
192
- setTimeout(function () {
193
- waiting = false; // And allow future invocations
194
- }, wait);
195
- }
196
- };
197
- }
198
- /**
199
- * @deprecated use import { debounce } from @firestitch/common/util; instead
200
- */
201
- debounce(func, wait, immediate) {
202
- console.warn('@deprecated use import { debounce } from @firestitch/common/util; instead');
203
- var timeout;
204
- return function () {
205
- var context = this, args = arguments;
206
- var later = function () {
207
- timeout = null;
208
- if (!immediate)
209
- func.apply(context, args);
210
- };
211
- var callNow = immediate && !timeout;
212
- clearTimeout(timeout);
213
- timeout = setTimeout(later, wait);
214
- if (callNow)
215
- func.apply(context, args);
216
- };
217
- }
218
- /**
219
- * @deprecated use import { length } from @firestitch/common/util; instead
220
- */
221
- length(object) {
222
- console.warn('@deprecated use import { length } from @firestitch/common/util; instead');
223
- if (this.isObject(object)) {
224
- return Object.keys(object).length;
225
- }
226
- if (this.isArray(object)) {
227
- return object.length;
228
- }
229
- return 0;
230
- }
231
- /**
232
- * @deprecated use import { boolean } from @firestitch/common/util; instead
233
- */
234
- boolean(value) {
235
- console.warn('@deprecated use import { boolean } from @firestitch/common/util; instead');
236
- return this.string(value).toLowerCase() !== 'false' && !!value;
237
- }
238
- /**
239
- * @deprecated use import { stringify } from @firestitch/common/util; instead
240
- */
241
- stringify(value) {
242
- console.warn('@deprecated use import { stringify } from @firestitch/common/util; instead');
243
- return JSON.stringify(value);
244
- }
245
- }
246
- FsUtil.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
247
- FsUtil.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsUtil });
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsUtil, decorators: [{
249
- type: Injectable
250
- }] });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlcy91dGlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFDdkIsUUFBUSxHQUFHLENBQUMsRUFDWixhQUFhLEdBQUcsQ0FBQyxFQUNqQixPQUFPLEdBQUcsQ0FBQyxFQUNYLFNBQVMsR0FBRyxFQUFFLEVBQ2QsVUFBVSxHQUFHLEVBQUUsRUFDZixTQUFTLEdBQUcsRUFBRSxFQUNkLFNBQVMsR0FBRyxFQUFFLEVBQ2QsV0FBVyxHQUFHLEVBQUUsRUFDaEIsT0FBTyxHQUFHLEVBQUUsRUFDWixTQUFTLEdBQUcsRUFBRSxFQUNkLGFBQWEsR0FBRyxFQUFFLEVBQ2xCLFVBQVUsR0FBRyxFQUFFLEVBQ2YsU0FBUyxHQUFHLEVBQUUsRUFDZCxXQUFXLEdBQUcsRUFBRSxFQUNoQixhQUFhLEdBQUcsRUFBRSxFQUNsQixPQUFPLEdBQUcsRUFBRSxFQUNaLFFBQVEsR0FBRyxFQUFFLEVBQ2IsUUFBUSxHQUFHLEVBQUUsRUFDYixNQUFNLEdBQUcsRUFBRSxFQUNYLFNBQVMsR0FBRyxFQUFFLEVBQ2QsUUFBUSxHQUFHLEVBQUUsRUFDYixlQUFlLEdBQUcsRUFBRSxFQUNwQixVQUFVLEdBQUcsRUFBRSxFQUNmLFVBQVUsR0FBRyxFQUFFLEVBQ2YsS0FBSyxHQUFHLEVBQUUsRUFDVixLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxFQUFFLEVBQ1YsS0FBSyxHQUFHLEVBQUUsRUFDVixLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxFQUFFLEVBQ1YsS0FBSyxHQUFHLEVBQUUsRUFDVixLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxFQUFFLEVBQ1YsS0FBSyxHQUFHLEVBQUUsRUFDVixhQUFhLEdBQUcsRUFBRSxFQUNsQixVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXBCOzs7RUFHRTtBQUlGLE1BQU0sT0FBTyxNQUFNO0lBRG5CO1FBR1ksY0FBUyxHQUFHLEVBQUUsQ0FBQztLQTRRMUI7SUExUUc7O01BRUU7SUFDSyxJQUFJLENBQUMsT0FBZ0I7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sR0FBRyxPQUFPLElBQUksUUFBUSxDQUFDO1FBQzlCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNuRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O01BRUU7SUFDSyxJQUFJO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7TUFFRTtJQUNLLE9BQU8sQ0FBQyxPQUF3QixFQUFFLFFBQVEsR0FBRyxFQUFFO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSTtnQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQ3pELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuQixDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVEOztNQUVFO0lBQ0ssR0FBRyxDQUFDLEtBQVU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3RELEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7O01BRUU7SUFDSyxLQUFLLENBQUMsS0FBSztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDckQsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNkLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztNQUVFO0lBQ0ssTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ25ELElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3pDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDZjtRQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O01BRUU7SUFDSyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQVE7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1FBQ3pGLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxLQUFLLFNBQVM7WUFDdEIsS0FBSyxLQUFLLElBQUk7WUFDZCxLQUFLLEtBQUssS0FBSztZQUNmLEtBQUssS0FBSyxFQUFFO1lBQ1osQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU07WUFDMUIsQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQ25ELENBQUM7SUFDVixDQUFDO0lBRUQ7O01BRUU7SUFDSyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUs7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxJQUFJLElBQUksRUFBRTtZQUNOLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7TUFFRTtJQUNLLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSTtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25ELE9BQU87U0FDUjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVMsR0FBRztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7TUFHRTtJQUNLLFFBQVEsQ0FBQyxLQUFLO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0tBQXdLLENBQUMsQ0FBQztRQUN2TCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O01BRUU7SUFDSyxRQUFRLENBQUMsS0FBSztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHNGQUFzRixDQUFDLENBQUM7UUFDckcsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O01BRUU7SUFDSyxPQUFPLENBQUMsS0FBSztRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLG9GQUFvRixDQUFDLENBQUM7UUFDbkcsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7TUFFRTtJQUNLLFNBQVMsQ0FBQyxLQUFLO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEVBQTRFLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O01BRUU7SUFDSyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUV0QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBRXBCLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtvQkFDbkIsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7d0JBQ2hDLE9BQU8sSUFBSSxDQUFDO3FCQUNmO2lCQUNKO2FBRUo7aUJBQU07Z0JBRUgsSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFO29CQUN0QixPQUFPLElBQUksQ0FBQztpQkFDZjthQUNKO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7O01BRUU7SUFDSyxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLHdGQUF3RixDQUFDLENBQUM7UUFDdkcsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVEOztNQUVFO0lBQ0ssS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRztRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDckYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFFL0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QjtTQUNKO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUMxRixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBbUIsK0JBQStCO1FBQ3BFLE9BQU87WUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQXFCLHVCQUF1QjtnQkFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBSyx5QkFBeUI7Z0JBQzFELE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBZ0IsNkJBQTZCO2dCQUM1RCxVQUFVLENBQUM7b0JBQ1AsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFXLCtCQUErQjtnQkFDOUQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ1o7UUFDTCxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQ7O01BRUU7SUFDSyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTO1FBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUMxRixJQUFJLE9BQU8sQ0FBQztRQUNWLE9BQU87WUFDSCxJQUFJLE9BQU8sR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUNyQyxJQUFJLEtBQUssR0FBRztnQkFDUixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTO29CQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQztZQUNGLElBQUksT0FBTyxHQUFHLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSSxPQUFPO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7TUFFRTtJQUNLLE1BQU0sQ0FBQyxNQUFNO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUN4RixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDeEI7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7TUFFRTtJQUNLLE9BQU8sQ0FBQyxLQUFLO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEVBQTBFLENBQUMsQ0FBQztRQUN6RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakUsQ0FBQztJQUVEOztNQUVFO0lBQ0ssU0FBUyxDQUFDLEtBQUs7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOztvR0E3UVEsTUFBTTt3R0FBTixNQUFNOzRGQUFOLE1BQU07a0JBRGxCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBLRVlfQ0FOQ0VMID0gMyxcbiAgICBLRVlfSEVMUCA9IDYsXG4gICAgS0VZX0JBQ0tTUEFDRSA9IDgsXG4gICAgS0VZX1RBQiA9IDksXG4gICAgS0VZX0NMRUFSID0gMTIsXG4gICAgS0VZX1JFVFVSTiA9IDEzLFxuICAgIEtFWV9FTlRFUiA9IDE0LFxuICAgIEtFWV9TSElGVCA9IDE2LFxuICAgIEtFWV9DT05UUk9MID0gMTcsXG4gICAgS0VZX0FMVCA9IDE4LFxuICAgIEtFWV9QQVVTRSA9IDE5LFxuICAgIEtFWV9DQVBTX0xPQ0sgPSAyMCxcbiAgICBLRVlfRVNDQVBFID0gMjcsXG4gICAgS0VZX1NQQUNFID0gMzIsXG4gICAgS0VZX1BBR0VfVVAgPSAzMyxcbiAgICBLRVlfUEFHRV9ET1dOID0gMzQsXG4gICAgS0VZX0VORCA9IDM1LFxuICAgIEtFWV9IT01FID0gMzYsXG4gICAgS0VZX0xFRlQgPSAzNyxcbiAgICBLRVlfVVAgPSAzOCxcbiAgICBLRVlfUklHSFQgPSAzOSxcbiAgICBLRVlfRE9XTiA9IDQwLFxuICAgIEtFWV9QUklOVFNDUkVFTiA9IDQ0LFxuICAgIEtFWV9JTlNFUlQgPSA0NSxcbiAgICBLRVlfREVMRVRFID0gNDYsXG4gICAgS0VZXzAgPSA0OCxcbiAgICBLRVlfMSA9IDQ5LFxuICAgIEtFWV8yID0gNTAsXG4gICAgS0VZXzMgPSA1MSxcbiAgICBLRVlfNCA9IDUyLFxuICAgIEtFWV81ID0gNTMsXG4gICAgS0VZXzYgPSA1NCxcbiAgICBLRVlfNyA9IDU1LFxuICAgIEtFWV84ID0gNTYsXG4gICAgS0VZXzkgPSA1NyxcbiAgICBLRVlfU0VNSUNPTE9OID0gNTksXG4gICAgS0VZX0VRVUFMUyA9IDYxO1xuXG4vKlxuICAgIEJhc2ljYWxseSwganVzdCBjb3B5LXBhc3RlZCBmdW5jdGlvbmFsaXR5IGZyb20gZnMtYm9pbGVycGxhdGUgdjEueCwgd2l0aCBzb21lIHNtYWxsIGNoYW5nZXMgKGxpa2Ugd2UgZG9udCBoYXZlIGFuZ3VsYXIuYmluZCBhbnltb3JlLCBoYWQgdG8gZ28gd2l0aCBhIHdvcmthcm91bmQpXG4gICAgVGhlcmUgbWlnaHQgYmUgYSBiZXR0ZXIgd2F5IHRvIG9yZ2FuaXNlIGNvbnN0YXRucyBidXQgSSBuZWVkIHRvIGtub3cgdXNlLWNhc2VzXG4qL1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGc1V0aWwge1xuXG4gICAgcHJpdmF0ZSBpbnRlcnZhbHMgPSB7fTtcblxuICAgIC8qKlxuICAgICogQGRlcHJlY2F0ZWQgdXNlIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsL2d1aWQgaW5zdGVhZFxuICAgICovXG4gICAgcHVibGljIGd1aWQocGF0dGVybj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBAZmlyZXN0aXRjaC9jb21tb24vdXRpbC9ndWlkIGluc3RlYWQnKTtcbiAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuIHx8ICd4eHh4eHgnO1xuICAgICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XG4gICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHV1aWQgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgdXVpZCgpOiBzdHJpbmcge1xuICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWwvdXVpZCBpbnN0ZWFkJyk7XG4gICAgICByZXR1cm4gdGhpcy5ndWlkKCd4eHh4eHh4eC14eHh4LXh4eHgteHh4eC14eHh4eHh4eHh4eHgnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyByZXNvbHZlKHByb21pc2U6IFByb21pc2U8b2JqZWN0PiwgZGVmYXVsdHMgPSBbXSk6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBAZmlyZXN0aXRjaC9jb21tb24vdXRpbC9yZXNvbHZlIGluc3RlYWQnKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChrZXkgPT4gcmVzdWx0W2tleV0gPSBkYXRhW2tleV0pXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBfLnRvSW50ZWdlcigpIGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBpbnQodmFsdWU6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIF8udG9JbnRlZ2VyKCkgaW5zdGVhZCcpO1xuICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgXy50b0Zpbml0ZSgpIGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBmbG9hdCh2YWx1ZSk6IG51bWJlciB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBfLnRvRmluaXRlKCkgaW5zdGVhZCcpO1xuICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIF8udG9TdHJpbmcoKSBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgc3RyaW5nKHN0cmluZyk6IHN0cmluZyB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBfLnRvU3RyaW5nKCkgaW5zdGVhZCcpO1xuICAgICAgICBpZiAoc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdHJpbmcgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoc3RyaW5nKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vdXRpbDsgaW5zdGVhZFxuICAgICovXG4gICAgcHVibGljIGlzRW1wdHkodmFsdWUsIG9wdGlvbnM/KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkJyk7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICAhdGhpcy5zdHJpbmcodmFsdWUpLmxlbmd0aCB8fFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNPYmplY3QodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdPYmplY3QnICYmICFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSkgfHxcbiAgICAgICAgICAgICAgICAoIW9wdGlvbnMuemVybyAmJiAodmFsdWUgPT09IDAgfHwgdmFsdWUgPT09ICcwJylcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIF8uaXNJbnRlZ2VyKCkgaW5zdGVhZFxuICAgICovXG4gICAgcHVibGljIGlzSW50KHZhbHVlLCB0eXBlPykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBfLmlzSW50ZWdlcigpIGluc3RlYWQnKTtcbiAgICAgICAgY29uc3QgaW50ID0gISF0aGlzLnN0cmluZyh2YWx1ZSkubWF0Y2goL15cXGQrJC8pO1xuXG4gICAgICAgIGlmICghaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIF8uZWFjaCgpIGluc3RlYWQge0BsaW5rIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuNSNmb3JFYWNofVxuICAgICovXG4gICAgcHVibGljIGVhY2gob2JqZWN0LCBmdW5jKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBfLmVhY2goKSBpbnN0ZWFkIHtAbGluayBodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjUjZm9yRWFjaH0nKTtcbiAgICAgIGlmICghdGhpcy5pc0FycmF5KG9iamVjdCkgJiYgIXRoaXMuaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgZnVuYyhvYmplY3Rba2V5XSxrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIF8uaXNBcnJheUxpa2VPYmplY3QoKSB7QGxpbmsgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy41I2lzQXJyYXlMaWtlT2JqZWN0fVxuICAgICAqIG9yIF8uaXNPYmplY3QoKSB7QGxpbmsgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy41I2lzT2JqZWN0fSBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgaXNPYmplY3QodmFsdWUpOiBib29sZWFuIHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIF8uaXNBcnJheUxpa2VPYmplY3QoKSB7QGxpbmsgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy41I2lzQXJyYXlMaWtlT2JqZWN0fSBvciBfLmlzT2JqZWN0KCkge0BsaW5rIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuNSNpc09iamVjdH0gaW5zdGVhZCcpO1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIXRoaXMuaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICAqIEBkZXByZWNhdGVkIHVzZSBfLmlzU3RyaW5nKCkgaW5zdGVhZCB7QGxpbmsgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy41I2lzU3RyaW5nfVxuICAgICovXG4gICAgcHVibGljIGlzU3RyaW5nKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBfLmlzU3RyaW5nKCkgaW5zdGVhZCB7QGxpbmsgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy41I2lzU3RyaW5nfScpO1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIF8uaXNBcnJheSgpIGluc3RlYWQge0BsaW5rIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuNSNpc0FycmF5fVxuICAgICovXG4gICAgcHVibGljIGlzQXJyYXkodmFsdWUpOiBib29sZWFuIHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIF8uaXNBcnJheSgpIGluc3RlYWQge0BsaW5rIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuNSNpc0FycmF5fScpO1xuICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgQXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGlzTnVtZXJpYyB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBpc051bWVyaWModmFsdWUpOiBib29sZWFuIHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGlzTnVtZXJpYyB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZyh2YWx1ZSkubGVuZ3RoICYmICEhdGhpcy5zdHJpbmcodmFsdWUpLm1hdGNoKC9eLT9cXGQqXFwuP1xcZCokLyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGlzQ2xhc3MgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgaXNDbGFzcyh2YWx1ZSwgY2xzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGlzQ2xhc3MgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkJyk7XG4gICAgICAgIGlmICh0aGlzLmlzT2JqZWN0KHZhbHVlKSkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1N0cmluZyhjbHMpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT09IGNscykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBjbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBAZGVwcmVjYXRlZCB1c2UgXy5pc0Jvb2xlYW4oKSBpbnN0ZWFkIHtAbGluayBodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjUjaXNCb29sZWFufVxuICAgICovXG4gICAgcHVibGljIGlzQm9vbGVhbih2YWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgY29uc29sZS53YXJuKCdAZGVwcmVjYXRlZCB1c2UgXy5pc0Jvb2xlYW4oKSBpbnN0ZWFkIHtAbGluayBodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjUjaXNCb29sZWFufScpO1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgdmFsdWUgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgdmFsdWUob2JqZWN0LCBrZXksIGRlZik6IGFueSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyB2YWx1ZSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgICAgaWYgKHRoaXMuaXNPYmplY3Qob2JqZWN0KSB8fCB0aGlzLmlzQXJyYXkob2JqZWN0KSkge1xuXG4gICAgICAgICAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmO1xuICAgIH1cblxuICAgIHB1YmxpYyB0aHJvdHRsZShmdW5jLCB3YWl0KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgIGxldCB3YWl0aW5nID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgXHQvLyBJbml0aWFsbHksIHdlJ3JlIG5vdCB3YWl0aW5nXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7ICAgICAgICAgICAgICAgXHRcdC8vIFdlIHJldHVybiBhIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAgICAgICAgaWYgKCF3YWl0aW5nKSB7ICAgICAgICAgICAgICAgICAgIFx0Ly8gSWYgd2UncmUgbm90IHdhaXRpbmdcbiAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7ICAgICAvLyBFeGVjdXRlIHVzZXJzIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgd2FpdGluZyA9IHRydWU7ICAgICAgICAgICAgICAgXHQvLyBQcmV2ZW50IGZ1dHVyZSBpbnZvY2F0aW9uc1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAgIFx0XHQvLyBBZnRlciBhIHBlcmlvZCBvZiB0aW1lXG4gICAgICAgICAgICAgICAgICAgIHdhaXRpbmcgPSBmYWxzZTsgICAgICAgICAgXHQvLyBBbmQgYWxsb3cgZnV0dXJlIGludm9jYXRpb25zXG4gICAgICAgICAgICAgICAgfSwgd2FpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi91dGlsOyBpbnN0ZWFkXG4gICAgKi9cbiAgICBwdWJsaWMgZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgIHZhciB0aW1lb3V0O1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghaW1tZWRpYXRlKSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICAgICAgICAgICAgaWYgKGNhbGxOb3cpIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGxlbmd0aCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGgob2JqZWN0KTogbnVtYmVyIHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IGxlbmd0aCB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgIGlmICh0aGlzLmlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgYm9vbGVhbiB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBib29sZWFuKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0BkZXByZWNhdGVkIHVzZSBpbXBvcnQgeyBib29sZWFuIH0gZnJvbSBAZmlyZXN0aXRjaC9jb21tb24vdXRpbDsgaW5zdGVhZCcpO1xuICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpICE9PSAnZmFsc2UnICYmICEhdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWRcbiAgICAqL1xuICAgIHB1YmxpYyBzdHJpbmdpZnkodmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybignQGRlcHJlY2F0ZWQgdXNlIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gQGZpcmVzdGl0Y2gvY29tbW9uL3V0aWw7IGluc3RlYWQnKTtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxufVxuIl19
@@ -1,28 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { FsUtil } from './util.service';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./util.service";
5
- export class FsValidate {
6
- constructor(fsUtil) {
7
- this.fsUtil = fsUtil;
8
- }
9
- /**
10
- * @deprecated use import { email } from @firestitch/common/validate; instead
11
- */
12
- phone(value) {
13
- const valid = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/.test(value);
14
- return valid || !String(value).length;
15
- }
16
- /**
17
- * @deprecated use import { email } from @firestitch/common/validate; instead
18
- */
19
- email(value) {
20
- return !!this.fsUtil.string(value).match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
21
- }
22
- }
23
- FsValidate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsValidate, deps: [{ token: i1.FsUtil }], target: i0.ɵɵFactoryTarget.Injectable });
24
- FsValidate.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsValidate });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsValidate, decorators: [{
26
- type: Injectable
27
- }], ctorParameters: function () { return [{ type: i1.FsUtil }]; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFpbGRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvdmFpbGRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3hDLE1BQU0sT0FBTyxVQUFVO0lBRW5CLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUksQ0FBQztJQUV2Qzs7TUFFRTtJQUNGLEtBQUssQ0FBQyxLQUFLO1FBQ1AsTUFBTSxLQUFLLEdBQUcsMkRBQTJELENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O01BRUU7SUFDRixLQUFLLENBQUMsS0FBSztRQUNQLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyx3SkFBd0osQ0FBQyxDQUFDO0lBQ3ZNLENBQUM7O3dHQWpCUSxVQUFVOzRHQUFWLFVBQVU7NEZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZzVXRpbCB9IGZyb20gJy4vdXRpbC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZzVmFsaWRhdGUge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmc1V0aWw6IEZzVXRpbCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgZW1haWwgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi92YWxpZGF0ZTsgaW5zdGVhZFxuICAgICovXG4gICAgcGhvbmUodmFsdWUpIHtcbiAgICAgICAgY29uc3QgdmFsaWQgPSAvXltcXCtdP1soXT9bMC05XXszfVspXT9bLVxcc1xcLl0/WzAtOV17M31bLVxcc1xcLl0/WzAtOV17NCw2fSQvLnRlc3QodmFsdWUpO1xuICAgICAgICByZXR1cm4gdmFsaWQgfHwgIVN0cmluZyh2YWx1ZSkubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaW1wb3J0IHsgZW1haWwgfSBmcm9tIEBmaXJlc3RpdGNoL2NvbW1vbi92YWxpZGF0ZTsgaW5zdGVhZFxuICAgICovXG4gICAgZW1haWwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mc1V0aWwuc3RyaW5nKHZhbHVlKS5tYXRjaCgvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyk7XG4gICAgfVxufVxuIl19
@@ -1,27 +0,0 @@
1
- import { compare } from '../compare';
2
- export function filter(array, query) {
3
- if (typeof query !== 'function') {
4
- const queryObj = query;
5
- query = (item) => {
6
- return compare(queryObj, item);
7
- };
8
- }
9
- const isarray = Array.isArray(array);
10
- const list = isarray ? [] : {};
11
- if (isarray) {
12
- array.forEach(function (item, idx) {
13
- if (query(item)) {
14
- list.push(item);
15
- }
16
- });
17
- }
18
- else {
19
- Object.keys(array).forEach(key => {
20
- if (query(array[key])) {
21
- list[key] = array[key];
22
- }
23
- });
24
- }
25
- return list;
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvYXJyYXkvZmlsdGVyL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUs7SUFFakMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQTtLQUNGO0lBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BDLElBQUksT0FBTyxFQUFFO1FBQ1gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxHQUFHO1lBQy9CLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFBO0tBQ0g7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wYXJlIH0gZnJvbSAnLi4vY29tcGFyZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIHF1ZXJ5KSB7XG5cbiAgaWYgKHR5cGVvZiBxdWVyeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHF1ZXJ5T2JqID0gcXVlcnk7XG4gICAgcXVlcnkgPSAoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXBhcmUocXVlcnlPYmosIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlzYXJyYXkgPSBBcnJheS5pc0FycmF5KGFycmF5KTtcbiAgY29uc3QgbGlzdDogYW55ID0gaXNhcnJheSA/IFtdIDoge307XG4gIGlmIChpc2FycmF5KSB7XG4gICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaWR4KSB7XG4gICAgICBpZiAocXVlcnkoaXRlbSkpIHtcbiAgICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIE9iamVjdC5rZXlzKGFycmF5KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAocXVlcnkoYXJyYXlba2V5XSkpIHtcbiAgICAgICAgbGlzdFtrZXldID0gYXJyYXlba2V5XTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuIl19
@@ -1,12 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5BcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2luQXJyYXkvaW5BcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLO0lBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzFCLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ25CO0lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbkFycmF5KHZhbHVlcywgYXJyYXkpIHtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHZhbHVlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheS5pbmRleE9mKHZhbHVlc1tpXSkgPj0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
@@ -1,16 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhPZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL2FycmF5L2luZGV4T2YvaW5kZXhPZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUs7SUFFbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBRWYsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQTtLQUNGO0lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixPQUFPLENBQUMsQ0FBQztTQUNWO0tBQ0Y7SUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBhcmUgfSBmcm9tICcuLi9jb21wYXJlJztcbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCBxdWVyeSkge1xuXG4gIGlmICh0eXBlb2YgcXVlcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBxdWVyeU9iaiA9IHF1ZXJ5O1xuICAgIHF1ZXJ5ID0gKGl0ZW0pID0+IHtcblxuICAgICAgcmV0dXJuIGNvbXBhcmUocXVlcnlPYmosIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChxdWVyeShhcnJheVtpXSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cbiJdfQ==