@stemy/ngx-utils 17.1.4 → 19.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.
- package/fesm2022/stemy-ngx-utils-tools.mjs.map +1 -1
- package/fesm2022/stemy-ngx-utils.mjs +285 -222
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/ngx-utils.module.d.ts +1 -1
- package/ngx-utils/utils/promise.utils.d.ts +5 -0
- package/package.json +13 -19
- package/public_api.d.ts +1 -0
- package/esm2022/ngx-utils/common-types.mjs +0 -122
- package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -210
- package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
- package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
- package/esm2022/ngx-utils/directives/async-method.base.mjs +0 -90
- package/esm2022/ngx-utils/directives/async-method.directive.mjs +0 -21
- package/esm2022/ngx-utils/directives/background.directive.mjs +0 -51
- package/esm2022/ngx-utils/directives/dynamic-table-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/directives/global-template.directive.mjs +0 -28
- package/esm2022/ngx-utils/directives/icon.directive.mjs +0 -67
- package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
- package/esm2022/ngx-utils/directives/pagination-item.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/pagination.directive.mjs +0 -84
- package/esm2022/ngx-utils/directives/resource-if.directive.mjs +0 -50
- package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/sticky.directive.mjs +0 -55
- package/esm2022/ngx-utils/directives/unordered-list-item.directive.mjs +0 -79
- package/esm2022/ngx-utils/directives/unordered-list-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/ngx-utils.imports.mjs +0 -178
- package/esm2022/ngx-utils/ngx-utils.module.mjs +0 -204
- package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +0 -25
- package/esm2022/ngx-utils/pipes/entries.pipe.mjs +0 -28
- package/esm2022/ngx-utils/pipes/extra-item-properties.pipe.mjs +0 -31
- package/esm2022/ngx-utils/pipes/filter.pipe.mjs +0 -37
- package/esm2022/ngx-utils/pipes/find.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/format-number.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/get-offset.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/get-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/get-value.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +0 -39
- package/esm2022/ngx-utils/pipes/group-by.pipe.mjs +0 -27
- package/esm2022/ngx-utils/pipes/is-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/join.pipe.mjs +0 -19
- package/esm2022/ngx-utils/pipes/keys.pipe.mjs +0 -22
- package/esm2022/ngx-utils/pipes/map.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/max.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/min.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/pop.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/reduce.pipe.mjs +0 -30
- package/esm2022/ngx-utils/pipes/remap.pipe.mjs +0 -32
- package/esm2022/ngx-utils/pipes/replace.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +0 -24
- package/esm2022/ngx-utils/pipes/round.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
- package/esm2022/ngx-utils/pipes/shift.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/split.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/translate.pipe.mjs +0 -86
- package/esm2022/ngx-utils/pipes/values.pipe.mjs +0 -22
- package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
- package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
- package/esm2022/ngx-utils/services/acl.service.mjs +0 -84
- package/esm2022/ngx-utils/services/api.service.mjs +0 -42
- package/esm2022/ngx-utils/services/auth.service.mjs +0 -14
- package/esm2022/ngx-utils/services/base-http.client.mjs +0 -47
- package/esm2022/ngx-utils/services/base-http.service.mjs +0 -305
- package/esm2022/ngx-utils/services/config.service.mjs +0 -130
- package/esm2022/ngx-utils/services/error-handler.service.mjs +0 -49
- package/esm2022/ngx-utils/services/events.service.mjs +0 -26
- package/esm2022/ngx-utils/services/formatter.service.mjs +0 -49
- package/esm2022/ngx-utils/services/global-template.service.mjs +0 -37
- package/esm2022/ngx-utils/services/icon.service.mjs +0 -26
- package/esm2022/ngx-utils/services/language.service.mjs +0 -124
- package/esm2022/ngx-utils/services/local-http.service.mjs +0 -47
- package/esm2022/ngx-utils/services/open-api.service.mjs +0 -40
- package/esm2022/ngx-utils/services/promise.service.mjs +0 -55
- package/esm2022/ngx-utils/services/state.service.mjs +0 -185
- package/esm2022/ngx-utils/services/static-language.service.mjs +0 -166
- package/esm2022/ngx-utils/services/storage.service.mjs +0 -49
- package/esm2022/ngx-utils/services/toaster.service.mjs +0 -32
- package/esm2022/ngx-utils/services/translated-url.serializer.mjs +0 -73
- package/esm2022/ngx-utils/services/universal.service.mjs +0 -81
- package/esm2022/ngx-utils/services/wasm.service.mjs +0 -46
- package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +0 -40
- package/esm2022/ngx-utils/utils/array.utils.mjs +0 -107
- package/esm2022/ngx-utils/utils/auth.guard.mjs +0 -181
- package/esm2022/ngx-utils/utils/cached-factory.mjs +0 -30
- package/esm2022/ngx-utils/utils/canvas.utils.mjs +0 -388
- package/esm2022/ngx-utils/utils/date.utils.mjs +0 -29
- package/esm2022/ngx-utils/utils/file-system.mjs +0 -25
- package/esm2022/ngx-utils/utils/file.utils.mjs +0 -90
- package/esm2022/ngx-utils/utils/generic-value.mjs +0 -20
- package/esm2022/ngx-utils/utils/geometry.mjs +0 -132
- package/esm2022/ngx-utils/utils/initializer.mjs +0 -20
- package/esm2022/ngx-utils/utils/jsonfn.mjs +0 -45
- package/esm2022/ngx-utils/utils/loader.utils.mjs +0 -55
- package/esm2022/ngx-utils/utils/math.utils.mjs +0 -44
- package/esm2022/ngx-utils/utils/object.utils.mjs +0 -320
- package/esm2022/ngx-utils/utils/observable.utils.mjs +0 -59
- package/esm2022/ngx-utils/utils/reflect.utils.mjs +0 -33
- package/esm2022/ngx-utils/utils/set.utils.mjs +0 -20
- package/esm2022/ngx-utils/utils/string.utils.mjs +0 -41
- package/esm2022/ngx-utils/utils/timer.utils.mjs +0 -52
- package/esm2022/ngx-utils/utils/unique.utils.mjs +0 -24
- package/esm2022/ngx-utils/utils/vector.mjs +0 -77
- package/esm2022/ngx-utils/utils/wasi.mjs +0 -159
- package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
- package/esm2022/ngx-utils/utils/with-options-provider.mjs +0 -24
- package/esm2022/public_api.mjs +0 -95
- package/esm2022/stemy-ngx-utils.mjs +0 -5
- package/esm2022/tools/config.mjs +0 -71
- package/esm2022/tools/public_api.mjs +0 -2
- package/esm2022/tools/stemy-ngx-utils-tools.mjs +0 -5
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
export function defaultPredicate(value, key, target, source) {
|
|
2
|
-
return true;
|
|
3
|
-
}
|
|
4
|
-
export function shouldCopyDefault(key, value) {
|
|
5
|
-
return true;
|
|
6
|
-
}
|
|
7
|
-
const hasBlob = typeof Blob !== "undefined" && !!Blob;
|
|
8
|
-
const hasFile = typeof File !== "undefined" && !!File;
|
|
9
|
-
export class ObjectUtils {
|
|
10
|
-
static compare(a, b) {
|
|
11
|
-
if ((a === null || b === null) || (typeof a != typeof b)) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
if (typeof a === "string") {
|
|
15
|
-
return (a).localeCompare(b);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
if (a instanceof Date) {
|
|
19
|
-
a = a.getTime();
|
|
20
|
-
b = b.getTime();
|
|
21
|
-
}
|
|
22
|
-
if (a > b) {
|
|
23
|
-
return 1;
|
|
24
|
-
}
|
|
25
|
-
else if (a < b) {
|
|
26
|
-
return -1;
|
|
27
|
-
}
|
|
28
|
-
return 0;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static getProperties(obj) {
|
|
32
|
-
if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj))
|
|
33
|
-
return [];
|
|
34
|
-
const props = new Set();
|
|
35
|
-
Object.keys(obj).forEach(p => props.add(p));
|
|
36
|
-
Object.getOwnPropertyNames(obj).forEach(p => props.add(p));
|
|
37
|
-
return Array.from(props);
|
|
38
|
-
}
|
|
39
|
-
static equals(a, b, visited = null) {
|
|
40
|
-
visited = visited || new Set();
|
|
41
|
-
if (visited.has(a) && visited.has(b))
|
|
42
|
-
return true;
|
|
43
|
-
if (a === b)
|
|
44
|
-
return true;
|
|
45
|
-
if (a === null || b === null)
|
|
46
|
-
return false;
|
|
47
|
-
if (a !== a && b !== b)
|
|
48
|
-
return true; // NaN === NaN
|
|
49
|
-
const at = typeof a, bt = typeof b;
|
|
50
|
-
let length, key, keySet;
|
|
51
|
-
if (at == bt && at == "object") {
|
|
52
|
-
visited.add(a);
|
|
53
|
-
visited.add(b);
|
|
54
|
-
if (Array.isArray(a)) {
|
|
55
|
-
if (!Array.isArray(b))
|
|
56
|
-
return false;
|
|
57
|
-
if ((length = a.length) == b.length) {
|
|
58
|
-
for (key = 0; key < length; key++) {
|
|
59
|
-
if (!ObjectUtils.equals(a[key], b[key], visited))
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
if (Array.isArray(b)) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
keySet = Object.create(null);
|
|
70
|
-
for (key in a) {
|
|
71
|
-
if (a.hasOwnProperty(key)) {
|
|
72
|
-
if (!ObjectUtils.equals(a[key], b[key], visited)) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
keySet[key] = true;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
for (key in b) {
|
|
79
|
-
if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== "undefined") {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
static evaluate(expr, context = {}, res = {}) {
|
|
89
|
-
expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\n${res}`, expr);
|
|
90
|
-
const lines = expr.split("\n");
|
|
91
|
-
const lastLine = "return " + lines.pop().replace("return ", "");
|
|
92
|
-
lines.push(lastLine);
|
|
93
|
-
expr = lines.join("\n");
|
|
94
|
-
let result = null;
|
|
95
|
-
try {
|
|
96
|
-
result = new Function(expr).call(context);
|
|
97
|
-
}
|
|
98
|
-
catch (e) {
|
|
99
|
-
res.exception = e;
|
|
100
|
-
console.log(`Failed to parse expression: ${e.message}`, expr, context);
|
|
101
|
-
}
|
|
102
|
-
res.result = result;
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
static empty(obj) {
|
|
106
|
-
return !obj || Object.keys(obj).length == 0;
|
|
107
|
-
}
|
|
108
|
-
static iterate(obj, cb) {
|
|
109
|
-
if (!obj)
|
|
110
|
-
return;
|
|
111
|
-
const keys = Array.isArray(obj) ? Array.from(obj.keys()) : Object.keys(obj);
|
|
112
|
-
keys.forEach(
|
|
113
|
-
// @dynamic
|
|
114
|
-
key => {
|
|
115
|
-
cb(obj[key], key);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
static getValue(obj, key, defaultValue, treeFallback = false) {
|
|
119
|
-
key = key || "";
|
|
120
|
-
const keys = key.split(".");
|
|
121
|
-
let curKey = "";
|
|
122
|
-
do {
|
|
123
|
-
curKey += keys.shift();
|
|
124
|
-
if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === "object" || !keys.length)) {
|
|
125
|
-
obj = obj[curKey];
|
|
126
|
-
curKey = "";
|
|
127
|
-
}
|
|
128
|
-
else if (!keys.length) {
|
|
129
|
-
defaultValue = typeof defaultValue == "undefined" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;
|
|
130
|
-
obj = treeFallback ? obj || defaultValue : defaultValue;
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
curKey += ".";
|
|
134
|
-
}
|
|
135
|
-
} while (keys.length);
|
|
136
|
-
return obj;
|
|
137
|
-
}
|
|
138
|
-
static mapToPath(target, source, path) {
|
|
139
|
-
if (typeof source === "undefined")
|
|
140
|
-
return target;
|
|
141
|
-
if (path.length == 0)
|
|
142
|
-
return source;
|
|
143
|
-
const key = path.shift();
|
|
144
|
-
if (key == "*") {
|
|
145
|
-
if (ObjectUtils.isArray(source)) {
|
|
146
|
-
target = ObjectUtils.isArray(target) ? target : [];
|
|
147
|
-
return source.map((item, index) => {
|
|
148
|
-
return ObjectUtils.mapToPath(target[index], item, Array.from(path));
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
if (ObjectUtils.isObject(source)) {
|
|
152
|
-
target = ObjectUtils.isObject(target) ? target : {};
|
|
153
|
-
return Object.keys(source).reduce((result, key) => {
|
|
154
|
-
result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));
|
|
155
|
-
return result;
|
|
156
|
-
}, {});
|
|
157
|
-
}
|
|
158
|
-
return ObjectUtils.isNullOrUndefined(target) ? null : target;
|
|
159
|
-
}
|
|
160
|
-
const isArray = ObjectUtils.isArray(target);
|
|
161
|
-
target = ObjectUtils.isObject(target) || isArray ? target : {};
|
|
162
|
-
target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));
|
|
163
|
-
return isNaN(key) || isArray ? target : Object.values(target);
|
|
164
|
-
}
|
|
165
|
-
static filter(obj, predicate) {
|
|
166
|
-
return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());
|
|
167
|
-
}
|
|
168
|
-
static copy(obj) {
|
|
169
|
-
return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());
|
|
170
|
-
}
|
|
171
|
-
static assign(target, source, predicate) {
|
|
172
|
-
return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());
|
|
173
|
-
}
|
|
174
|
-
static getType(obj) {
|
|
175
|
-
const regex = new RegExp("\\s([a-zA-Z]+)");
|
|
176
|
-
const target = !obj ? null : obj.constructor;
|
|
177
|
-
const type = !target ? null : Reflect.getMetadata("objectType", target);
|
|
178
|
-
return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();
|
|
179
|
-
}
|
|
180
|
-
static isPrimitive(value) {
|
|
181
|
-
const type = typeof value;
|
|
182
|
-
return value == null || (type !== "object" && type !== "function");
|
|
183
|
-
}
|
|
184
|
-
static isObject(value) {
|
|
185
|
-
return ObjectUtils.getType(value) === "object";
|
|
186
|
-
}
|
|
187
|
-
static isDefined(value) {
|
|
188
|
-
return typeof value !== "undefined" && value !== null;
|
|
189
|
-
}
|
|
190
|
-
static isNullOrUndefined(value) {
|
|
191
|
-
return typeof value == "undefined" || value == null;
|
|
192
|
-
}
|
|
193
|
-
static isString(value) {
|
|
194
|
-
return typeof value === "string";
|
|
195
|
-
}
|
|
196
|
-
static isFunction(value) {
|
|
197
|
-
return typeof value === "function";
|
|
198
|
-
}
|
|
199
|
-
static isDate(value) {
|
|
200
|
-
return null !== value && !isNaN(value) && "undefined" !== typeof value.getDate;
|
|
201
|
-
}
|
|
202
|
-
static isBlob(value) {
|
|
203
|
-
return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);
|
|
204
|
-
}
|
|
205
|
-
static isBoolean(value) {
|
|
206
|
-
return typeof (value) == typeof (true);
|
|
207
|
-
}
|
|
208
|
-
static isNumber(value) {
|
|
209
|
-
if (typeof value !== "number")
|
|
210
|
-
return false;
|
|
211
|
-
const num = +value;
|
|
212
|
-
if ((num - num) !== 0) {
|
|
213
|
-
return false;
|
|
214
|
-
}
|
|
215
|
-
if (num === value) {
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
static isArray(value) {
|
|
220
|
-
return Array.isArray(value);
|
|
221
|
-
}
|
|
222
|
-
static isSet(value) {
|
|
223
|
-
return value instanceof Set;
|
|
224
|
-
}
|
|
225
|
-
static isConstructor(value) {
|
|
226
|
-
return (value && typeof value === "function" && value.prototype && value.prototype.constructor) === value && value.name !== "Object";
|
|
227
|
-
}
|
|
228
|
-
static checkInterface(obj, interFaceObject) {
|
|
229
|
-
return ObjectUtils.isInterface(obj, interFaceObject);
|
|
230
|
-
}
|
|
231
|
-
static isInterface(obj, interFaceObject) {
|
|
232
|
-
if (!obj || typeof obj !== "object" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject))
|
|
233
|
-
return false;
|
|
234
|
-
const keys = Object.keys(interFaceObject);
|
|
235
|
-
for (const key of keys) {
|
|
236
|
-
let type = interFaceObject[key] || "";
|
|
237
|
-
if (type.startsWith("*")) {
|
|
238
|
-
type = type.substr(1);
|
|
239
|
-
if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type)
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {
|
|
243
|
-
return false;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return true;
|
|
247
|
-
}
|
|
248
|
-
static pad(obj, width, chr = "0") {
|
|
249
|
-
const str = ObjectUtils.isDefined(obj) ? obj.toString() : "";
|
|
250
|
-
return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;
|
|
251
|
-
}
|
|
252
|
-
static copyRecursive(target, source, predicate, copies) {
|
|
253
|
-
if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source))
|
|
254
|
-
return source;
|
|
255
|
-
if (copies.has(source))
|
|
256
|
-
return copies.get(source);
|
|
257
|
-
if (ObjectUtils.isArray(source)) {
|
|
258
|
-
target = ObjectUtils.isArray(target) ? Array.from(target) : [];
|
|
259
|
-
copies.set(source, target);
|
|
260
|
-
for (let index = 0; index < source.length; index++) {
|
|
261
|
-
const item = source[index];
|
|
262
|
-
if (!predicate(item, index, target, source))
|
|
263
|
-
continue;
|
|
264
|
-
if (target.length > index)
|
|
265
|
-
target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);
|
|
266
|
-
else
|
|
267
|
-
target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));
|
|
268
|
-
}
|
|
269
|
-
return target;
|
|
270
|
-
}
|
|
271
|
-
// If object defines __shouldCopy as false, then don't copy it
|
|
272
|
-
if (source.__shouldCopy === false)
|
|
273
|
-
return source;
|
|
274
|
-
// Copy object
|
|
275
|
-
const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;
|
|
276
|
-
if (ObjectUtils.isConstructor(source.constructor)) {
|
|
277
|
-
if (!target) {
|
|
278
|
-
try {
|
|
279
|
-
target = new source.constructor();
|
|
280
|
-
}
|
|
281
|
-
catch (e) {
|
|
282
|
-
const proto = source.constructor.prototype || source.prototype;
|
|
283
|
-
target = Object.create(proto);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
target = Object.assign({}, target || {});
|
|
289
|
-
}
|
|
290
|
-
// Set to copies to prevent circular references
|
|
291
|
-
copies.set(source, target);
|
|
292
|
-
// Copy map entries
|
|
293
|
-
if (target instanceof Map) {
|
|
294
|
-
if (source instanceof Map) {
|
|
295
|
-
for (const [key, value] of source.entries()) {
|
|
296
|
-
if (!predicate(value, key, target, source))
|
|
297
|
-
continue;
|
|
298
|
-
target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
return target;
|
|
302
|
-
}
|
|
303
|
-
// Copy object members
|
|
304
|
-
const keys = Object.keys(source);
|
|
305
|
-
for (const key of keys) {
|
|
306
|
-
if (!predicate(source[key], key, target, source))
|
|
307
|
-
continue;
|
|
308
|
-
target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);
|
|
309
|
-
}
|
|
310
|
-
// Copy object properties
|
|
311
|
-
const descriptors = Object.getOwnPropertyDescriptors(source);
|
|
312
|
-
for (const key of Object.keys(descriptors)) {
|
|
313
|
-
if (keys.indexOf(key) >= 0)
|
|
314
|
-
continue;
|
|
315
|
-
Object.defineProperty(target, key, descriptors[key]);
|
|
316
|
-
}
|
|
317
|
-
return target;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQVUsRUFBRSxHQUFTLEVBQUUsTUFBWSxFQUFFLE1BQVk7SUFDOUUsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFRLEVBQUUsS0FBVTtJQUNsRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFdEQsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFNLEVBQUUsQ0FBTTtRQUN6QixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLENBQUMs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QUFDO1lBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUFFLFNBQVM7WUFDckMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vcmVmbGVjdC51dGlsc1wiO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdGVyUHJlZGljYXRlID0gKHZhbHVlOiBhbnksIGtleT86IGFueSwgdGFyZ2V0PzogYW55LCBzb3VyY2U/OiBhbnkpID0+IGJvb2xlYW47XHJcbmV4cG9ydCB0eXBlIEl0ZXJhdGVDYWxsYmFjayA9ICh2YWx1ZTogYW55LCBrZXk/OiBhbnkpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFByZWRpY2F0ZSh2YWx1ZTogYW55LCBrZXk/OiBhbnksIHRhcmdldD86IGFueSwgc291cmNlPzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZENvcHlEZWZhdWx0KGtleTogYW55LCB2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuY29uc3QgaGFzQmxvYiA9IHR5cGVvZiBCbG9iICE9PSBcInVuZGVmaW5lZFwiICYmICEhQmxvYjtcclxuY29uc3QgaGFzRmlsZSA9IHR5cGVvZiBGaWxlICE9PSBcInVuZGVmaW5lZFwiICYmICEhRmlsZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGNvbXBhcmUoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICgoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB8fCAodHlwZW9mIGEgIT0gdHlwZW9mIGIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGEgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChhKS5sb2NhbGVDb21wYXJlKGIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgYSA9IGEuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgYiA9IGIuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhID4gYikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYSA8IGIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldFByb3BlcnRpZXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc09iamVjdChvYmopICYmICFPYmplY3RVdGlscy5pc0Z1bmN0aW9uKG9iaikpIHJldHVybiBbXTtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChwID0+IHByb3BzLmFkZChwKSk7XHJcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKHAgPT4gcHJvcHMuYWRkKHApKTtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVxdWFscyhhOiBhbnksIGI6IGFueSwgdmlzaXRlZDogU2V0PGFueT4gPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgdmlzaXRlZCA9IHZpc2l0ZWQgfHwgbmV3IFNldCgpO1xyXG4gICAgICAgIGlmICh2aXNpdGVkLmhhcyhhKSAmJiB2aXNpdGVkLmhhcyhiKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoYSAhPT0gYSAmJiBiICE9PSBiKSByZXR1cm4gdHJ1ZTsgLy8gTmFOID09PSBOYU5cclxuICAgICAgICBjb25zdCBhdCA9IHR5cGVvZiBhLCBidCA9IHR5cGVvZiBiO1xyXG4gICAgICAgIGxldCBsZW5ndGg6IG51bWJlciwga2V5OiBhbnksIGtleVNldDogYW55O1xyXG4gICAgICAgIGlmIChhdCA9PSBidCAmJiBhdCA9PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgIHZpc2l0ZWQuYWRkKGEpO1xyXG4gICAgICAgICAgICB2aXNpdGVkLmFkZChiKTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShiKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChsZW5ndGggPSBhLmxlbmd0aCkgPT0gYi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGtleSA9IDA7IGtleSA8IGxlbmd0aDsga2V5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHMoYVtrZXldLCBiW2tleV0sIHZpc2l0ZWQpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBrZXlTZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHMoYVtrZXldLCBiW2tleV0sIHZpc2l0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5U2V0W2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICEoa2V5IGluIGtleVNldCkgJiYgdHlwZW9mIGJba2V5XSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBldmFsdWF0ZShleHByOiBzdHJpbmcsIGNvbnRleHQ6IGFueSA9IHt9LCByZXM6IGFueSA9IHt9KTogYW55IHtcclxuICAgICAgICBleHByID0gT2JqZWN0LmtleXMoY29udGV4dCkucmVkdWNlKChyZXMsIGtleSkgPT4gYHZhciAke2tleX0gPSB0aGlzWycke2tleX0nXTtcXG4ke3Jlc31gLCBleHByKTtcclxuICAgICAgICBjb25zdCBsaW5lcyA9IGV4cHIuc3BsaXQoXCJcXG5cIik7XHJcbiAgICAgICAgY29uc3QgbGFzdExpbmUgPSBcInJldHVybiBcIiArIGxpbmVzLnBvcCgpLnJlcGxhY2UoXCJyZXR1cm4gXCIsIFwiXCIpO1xyXG4gICAgICAgIGxpbmVzLnB1c2gobGFzdExpbmUpO1xyXG4gICAgICAgIGV4cHIgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBGdW5jdGlvbihleHByKS5jYWxsKGNvbnRleHQpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmVzLmV4Y2VwdGlvbiA9IGU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gcGFyc2UgZXhwcmVzc2lvbjogJHtlLm1lc3NhZ2V9YCwgZXhwciwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcy5yZXN1bHQgPSByZXN1bHQ7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZW1wdHkob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIW9iaiB8fCBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpdGVyYXRlKG9iajogYW55LCBjYjogSXRlcmF0ZUNhbGxiYWNrKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFvYmopIHJldHVybjtcclxuICAgICAgICBjb25zdCBrZXlzOiBhbnlbXSA9IEFycmF5LmlzQXJyYXkob2JqKSA/IEFycmF5LmZyb20ob2JqLmtleXMoKSkgOiBPYmplY3Qua2V5cyhvYmopO1xyXG4gICAgICAgIGtleXMuZm9yRWFjaChcclxuICAgICAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICAgICAga2V5ID0+IHtcclxuICAgICAgICAgICAgICAgIGNiKG9ialtrZXldLCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0VmFsdWUob2JqOiBhbnksIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnksIHRyZWVGYWxsYmFjazogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcclxuICAgICAgICBrZXkgPSBrZXkgfHwgXCJcIjtcclxuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBsZXQgY3VyS2V5ID0gXCJcIjtcclxuICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIGN1cktleSArPSBrZXlzLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0RlZmluZWQob2JqKSAmJiBPYmplY3RVdGlscy5pc0RlZmluZWQob2JqW2N1cktleV0pICYmICh0eXBlb2Ygb2JqW2N1cktleV0gPT09IFwib2JqZWN0XCIgfHwgIWtleXMubGVuZ3RoKSkge1xyXG4gICAgICAgICAgICAgICAgb2JqID0gb2JqW2N1cktleV07XHJcbiAgICAgICAgICAgICAgICBjdXJLZXkgPSBcIlwiO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFrZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PSBcInVuZGVmaW5lZFwiID8ga2V5LnJlcGxhY2UobmV3IFJlZ0V4cChgJHtjdXJLZXl9JGApLCBgeyR7Y3VyS2V5fX1gKSA6IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIG9iaiA9IHRyZWVGYWxsYmFjayA/IG9iaiB8fCBkZWZhdWx0VmFsdWUgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjdXJLZXkgKz0gXCIuXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IHdoaWxlIChrZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWFwVG9QYXRoKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSwgcGF0aDogc3RyaW5nW10pOiBhbnkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PSAwKSByZXR1cm4gc291cmNlO1xyXG4gICAgICAgIGNvbnN0IGtleTogYW55ID0gcGF0aC5zaGlmdCgpO1xyXG4gICAgICAgIGlmIChrZXkgPT0gXCIqXCIpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpID8gdGFyZ2V0IDogW107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMubWFwVG9QYXRoKHRhcmdldFtpbmRleF0sIGl0ZW0sIEFycmF5LmZyb20ocGF0aCkpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzT2JqZWN0KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzT2JqZWN0KHRhcmdldCkgPyB0YXJnZXQgOiB7fTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0sIEFycmF5LmZyb20ocGF0aCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHRhcmdldCkgPyBudWxsIDogdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc0FycmF5ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpO1xyXG4gICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzT2JqZWN0KHRhcmdldCkgfHwgaXNBcnJheSA/IHRhcmdldCA6IHt9O1xyXG4gICAgICAgIHRhcmdldFtrZXldID0gT2JqZWN0VXRpbHMubWFwVG9QYXRoKHRhcmdldFtrZXldLCBzb3VyY2UsIEFycmF5LmZyb20ocGF0aCkpO1xyXG4gICAgICAgIHJldHVybiBpc05hTihrZXkpIHx8IGlzQXJyYXkgPyB0YXJnZXQgOiBPYmplY3QudmFsdWVzKHRhcmdldCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZpbHRlcihvYmo6IGFueSwgcHJlZGljYXRlOiBGaWx0ZXJQcmVkaWNhdGUpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIG9iaiwgcHJlZGljYXRlIHx8IGRlZmF1bHRQcmVkaWNhdGUsIG5ldyBNYXAoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvcHk8VD4ob2JqOiBUKTogVCB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmNvcHlSZWN1cnNpdmUobnVsbCwgb2JqLCBkZWZhdWx0UHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3NpZ248VD4odGFyZ2V0OiBULCBzb3VyY2U6IGFueSwgcHJlZGljYXRlPzogRmlsdGVyUHJlZGljYXRlKTogVCB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmNvcHlSZWN1cnNpdmUodGFyZ2V0LCBzb3VyY2UsIHByZWRpY2F0ZSB8fCBkZWZhdWx0UHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUeXBlKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJcXFxccyhbYS16QS1aXSspXCIpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9ICFvYmogPyBudWxsIDogb2JqLmNvbnN0cnVjdG9yO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSAhdGFyZ2V0ID8gbnVsbCA6IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJvYmplY3RUeXBlXCIsIHRhcmdldCk7XHJcbiAgICAgICAgcmV0dXJuICh0eXBlIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopLm1hdGNoKHJlZ2V4KVsxXSkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRUeXBlKHZhbHVlKSA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGwgIT09IHZhbHVlICYmICFpc05hTih2YWx1ZSkgJiYgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHZhbHVlLmdldERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzQmxvYih2YWx1ZTogYW55KTogdmFsdWUgaXMgQmxvYiB7XHJcbiAgICAgICAgcmV0dXJuIChoYXNCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHwgKGhhc0ZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PSB0eXBlb2YodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBudW0gPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKChudW0gLSBudW0pICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU2V0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXQ8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0NvbnN0cnVjdG9yKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmIHZhbHVlLnByb3RvdHlwZSAmJiB2YWx1ZS5wcm90b3R5cGUuY29uc3RydWN0b3IpID09PSB2YWx1ZSAmJiB2YWx1ZS5uYW1lICE9PSBcIk9iamVjdFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNJbnRlcmZhY2Uob2JqLCBpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IE9iamVjdFV0aWxzLmlzQXJyYXkob2JqKSB8fCAhT2JqZWN0VXRpbHMuaXNPYmplY3QoaW50ZXJGYWNlT2JqZWN0KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpbnRlckZhY2VPYmplY3Rba2V5XSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKFwiKlwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhZChvYmo6IGFueSwgd2lkdGg6IG51bWJlciwgY2hyOiBzdHJpbmcgPSBcIjBcIik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgPyBvYmoudG9TdHJpbmcoKSA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPj0gd2lkdGggPyBzdHIgOiBuZXcgQXJyYXkod2lkdGggLSBzdHIubGVuZ3RoICsgMSkuam9pbihjaHIpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNvcHlSZWN1cnNpdmUodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55LCBwcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSwgY29waWVzOiBNYXA8YW55LCBhbnk+KTogYW55IHtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNQcmltaXRpdmUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0RhdGUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Jsb2Ioc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XHJcbiAgICAgICAgaWYgKGNvcGllcy5oYXMoc291cmNlKSkgcmV0dXJuIGNvcGllcy5nZXQoc291cmNlKTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IEFycmF5LmZyb20odGFyZ2V0KSA6IFtdO1xyXG4gICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNvdXJjZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzb3VyY2VbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoaXRlbSwgaW5kZXgsIHRhcmdldCwgc291cmNlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IGluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtpbmRleF0gPSBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKHRhcmdldFtpbmRleF0sIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIG9iamVjdCBkZWZpbmVzIF9fc2hvdWxkQ29weSBhcyBmYWxzZSwgdGhlbiBkb24ndCBjb3B5IGl0XHJcbiAgICAgICAgaWYgKHNvdXJjZS5fX3Nob3VsZENvcHkgPT09IGZhbHNlKSByZXR1cm4gc291cmNlO1xyXG4gICAgICAgIC8vIENvcHkgb2JqZWN0XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkQ29weSA9IE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oc291cmNlLl9fc2hvdWxkQ29weSkgPyBzb3VyY2UuX19zaG91bGRDb3B5IDogc2hvdWxkQ29weURlZmF1bHQ7XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQ29uc3RydWN0b3Ioc291cmNlLmNvbnN0cnVjdG9yKSkge1xyXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBuZXcgc291cmNlLmNvbnN0cnVjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvdG8gPSBzb3VyY2UuY29uc3RydWN0b3IucHJvdG90eXBlIHx8IHNvdXJjZS5wcm90b3R5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShwcm90byk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0YXJnZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0YXJnZXQgfHwge30pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTZXQgdG8gY29waWVzIHRvIHByZXZlbnQgY2lyY3VsYXIgcmVmZXJlbmNlc1xyXG4gICAgICAgIGNvcGllcy5zZXQoc291cmNlLCB0YXJnZXQpO1xyXG5cclxuICAgICAgICAvLyBDb3B5IG1hcCBlbnRyaWVzXHJcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIE1hcCkge1xyXG4gICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzb3VyY2UuZW50cmllcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUodmFsdWUsIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgIXNob3VsZENvcHkoa2V5LCB2YWx1ZSkgPyB2YWx1ZSA6IE9iamVjdFV0aWxzLmNvcHlSZWN1cnNpdmUodGFyZ2V0LmdldChrZXkpLCB2YWx1ZSwgcHJlZGljYXRlLCBjb3BpZXMpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ29weSBvYmplY3QgbWVtYmVyc1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoc291cmNlW2tleV0sIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSAhc2hvdWxkQ29weShrZXksIHNvdXJjZVtrZXldKSA/IHNvdXJjZVtrZXldIDogT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0sIHByZWRpY2F0ZSwgY29waWVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvcHkgb2JqZWN0IHByb3BlcnRpZXNcclxuICAgICAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGVzY3JpcHRvcnMpKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXlzLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yc1trZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { from, Observable, Subject, Subscription } from "rxjs";
|
|
2
|
-
import { mergeMap } from "rxjs/operators";
|
|
3
|
-
import { TimerUtils } from "./timer.utils";
|
|
4
|
-
export class ObservableUtils {
|
|
5
|
-
static toSearch(search) {
|
|
6
|
-
return mergeMap(
|
|
7
|
-
// @dynamic
|
|
8
|
-
(token) => search.getSearchResults(token))(Observable.create(
|
|
9
|
-
// @dynamic
|
|
10
|
-
(observer) => {
|
|
11
|
-
observer.next(search.search);
|
|
12
|
-
}));
|
|
13
|
-
}
|
|
14
|
-
static multiSubscription(...subscriptions) {
|
|
15
|
-
// @dynamic
|
|
16
|
-
const lambda = () => {
|
|
17
|
-
subscriptions.forEach(s => {
|
|
18
|
-
s.unsubscribe();
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
return new Subscription(lambda);
|
|
22
|
-
}
|
|
23
|
-
static subscribe(...subscribers) {
|
|
24
|
-
const subscriptions = [];
|
|
25
|
-
subscribers.forEach(info => {
|
|
26
|
-
let alreadyCalled = false;
|
|
27
|
-
const timer = TimerUtils.createTimeout();
|
|
28
|
-
info.subjects.forEach(subject => {
|
|
29
|
-
const ss = subject.subscribe((value) => {
|
|
30
|
-
alreadyCalled = true;
|
|
31
|
-
timer.set(() => {
|
|
32
|
-
info.cb(subject, value);
|
|
33
|
-
}, info.timeout ?? 0);
|
|
34
|
-
});
|
|
35
|
-
subscriptions.push(ss);
|
|
36
|
-
});
|
|
37
|
-
if (alreadyCalled)
|
|
38
|
-
return;
|
|
39
|
-
info.cb();
|
|
40
|
-
});
|
|
41
|
-
return ObservableUtils.multiSubscription(...subscriptions);
|
|
42
|
-
}
|
|
43
|
-
static fromFunction(callbackFunc) {
|
|
44
|
-
let subject;
|
|
45
|
-
return new Observable((subscriber) => {
|
|
46
|
-
if (!subject) {
|
|
47
|
-
subject = new Subject();
|
|
48
|
-
try {
|
|
49
|
-
subject = from(callbackFunc());
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
subject.error(err);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return subject.subscribe(subscriber);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvb2JzZXJ2YWJsZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE1BQU0sT0FBTyxlQUFlO0lBRXhCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBeUI7UUFDckMsT0FBTyxRQUFRO1FBQ1gsV0FBVztRQUNYLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQ3BELENBQ0csVUFBVSxDQUFDLE1BQU07UUFDYixXQUFXO1FBQ1gsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsYUFBNkI7UUFDckQsV0FBVztRQUNYLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBOEI7UUFDOUMsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMxQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDbkMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQztnQkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxhQUFhO2dCQUFFLE9BQU87WUFDMUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQXVCO1FBQ3ZDLElBQUksT0FBWSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxVQUFVLENBQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQztvQkFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ25DLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21lcmdlTWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7SVNlYXJjaE9ic2VydmFibGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUaW1lclV0aWxzfSBmcm9tIFwiLi90aW1lci51dGlsc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlckluZm8ge1xyXG4gICAgc3ViamVjdHM6IE9ic2VydmFibGU8YW55PltdO1xyXG4gICAgY2I6IChldj86IE9ic2VydmFibGU8YW55PiwgLi4uYXJnczogYW55W10pID0+IGFueTtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmxlVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyB0b1NlYXJjaChzZWFyY2g6IElTZWFyY2hPYnNlcnZhYmxlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbWVyZ2VNYXAoXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgICh0b2tlbjogc3RyaW5nKSA9PiBzZWFyY2guZ2V0U2VhcmNoUmVzdWx0cyh0b2tlbilcclxuICAgICAgICApKFxyXG4gICAgICAgICAgICBPYnNlcnZhYmxlLmNyZWF0ZShcclxuICAgICAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgICAgICAob2JzZXJ2ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoc2VhcmNoLnNlYXJjaCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtdWx0aVN1YnNjcmlwdGlvbiguLi5zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICBjb25zdCBsYW1iZGEgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgICAgIHMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihsYW1iZGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzdWJzY3JpYmUoLi4uc3Vic2NyaWJlcnM6IElTdWJzY3JpYmVySW5mb1tdKTogU3Vic2NyaXB0aW9uIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gICAgICAgIHN1YnNjcmliZXJzLmZvckVhY2goaW5mbyA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gVGltZXJVdGlscy5jcmVhdGVUaW1lb3V0KCk7XHJcbiAgICAgICAgICAgIGluZm8uc3ViamVjdHMuZm9yRWFjaChzdWJqZWN0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNzID0gc3ViamVjdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXIuc2V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5jYihzdWJqZWN0LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5mby50aW1lb3V0ID8/IDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3MpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcclxuICAgICAgICAgICAgaW5mby5jYigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlVXRpbHMubXVsdGlTdWJzY3JpcHRpb24oLi4uc3Vic2NyaXB0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21GdW5jdGlvbihjYWxsYmFja0Z1bmM6ICgpID0+IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgbGV0IHN1YmplY3Q6IGFueTtcclxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55Pigoc3Vic2NyaWJlcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXN1YmplY3QpIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0ID0gZnJvbShjYWxsYmFja0Z1bmMoKSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHN1YmplY3Quc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import "reflect-metadata";
|
|
2
|
-
import { ObjectUtils } from "./object.utils";
|
|
3
|
-
export class ReflectUtils {
|
|
4
|
-
static defineMetadata(key, data, target, name) {
|
|
5
|
-
Reflect.defineMetadata(key, data, target, name);
|
|
6
|
-
}
|
|
7
|
-
static getMetadata(key, target, name) {
|
|
8
|
-
return Reflect.getMetadata(key, target, name);
|
|
9
|
-
}
|
|
10
|
-
static getOwnMetadata(key, target, name) {
|
|
11
|
-
return Reflect.getOwnMetadata(key, target, name);
|
|
12
|
-
}
|
|
13
|
-
static resolve(obj, injector) {
|
|
14
|
-
if (!ObjectUtils.checkInterface(obj, { func: "function" }))
|
|
15
|
-
return obj;
|
|
16
|
-
const factory = obj;
|
|
17
|
-
let depends = [];
|
|
18
|
-
if (factory.type) {
|
|
19
|
-
const method = ObjectUtils.getProperties(factory.type).find(function (key) {
|
|
20
|
-
return factory.type[key] === factory.func;
|
|
21
|
-
});
|
|
22
|
-
depends = ReflectUtils.getMetadata("factoryDependencies", factory.type, method) || [];
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
depends = ReflectUtils.getMetadata("factoryDependencies", factory.func) || [];
|
|
26
|
-
}
|
|
27
|
-
const parameters = depends.map(function (dep) {
|
|
28
|
-
return injector.get(dep);
|
|
29
|
-
}).concat(factory.params);
|
|
30
|
-
return factory.func.apply(null, parameters);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvcmVmbGVjdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGtCQUFrQixDQUFDO0FBRzFCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxNQUFNLE9BQU8sWUFBWTtJQUVyQixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsTUFBVyxFQUFFLElBQWE7UUFDcEUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXLEVBQUUsTUFBVyxFQUFFLElBQWE7UUFDdEQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBVyxFQUFFLE1BQVcsRUFBRSxJQUFhO1FBQ3pELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFJLEdBQXdCLEVBQUUsUUFBa0I7UUFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDO1lBQUUsT0FBVSxHQUFHLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQW9CLEdBQUcsQ0FBQztRQUNyQyxJQUFJLE9BQU8sR0FBbUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztnQkFDckUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEYsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcclxuaW1wb3J0IHtJbmplY3RvciwgVHlwZVByb3ZpZGVyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lSZXNvbHZlRmFjdG9yeX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi9vYmplY3QudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSZWZsZWN0VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBkZWZpbmVNZXRhZGF0YShrZXk6IHN0cmluZywgZGF0YTogYW55LCB0YXJnZXQ6IGFueSwgbmFtZT86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoa2V5LCBkYXRhLCB0YXJnZXQsIG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRNZXRhZGF0YShrZXk6IHN0cmluZywgdGFyZ2V0OiBhbnksIG5hbWU/OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKGtleSwgdGFyZ2V0LCBuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0T3duTWV0YWRhdGEoa2V5OiBzdHJpbmcsIHRhcmdldDogYW55LCBuYW1lPzogc3RyaW5nKTogYW55IHtcclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShrZXksIHRhcmdldCwgbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlc29sdmU8VD4ob2JqOiBJUmVzb2x2ZUZhY3RvcnkgfCBULCBpbmplY3RvcjogSW5qZWN0b3IpOiBUIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmNoZWNrSW50ZXJmYWNlKG9iaiwge2Z1bmM6IFwiZnVuY3Rpb25cIn0pKSByZXR1cm4gPFQ+b2JqO1xyXG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSA8SVJlc29sdmVGYWN0b3J5Pm9iajtcclxuICAgICAgICBsZXQgZGVwZW5kczogVHlwZVByb3ZpZGVyW10gPSBbXTtcclxuICAgICAgICBpZiAoZmFjdG9yeS50eXBlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IE9iamVjdFV0aWxzLmdldFByb3BlcnRpZXMoZmFjdG9yeS50eXBlKS5maW5kKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWN0b3J5LnR5cGVba2V5XSA9PT0gZmFjdG9yeS5mdW5jO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZGVwZW5kcyA9IFJlZmxlY3RVdGlscy5nZXRNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZmFjdG9yeS50eXBlLCBtZXRob2QpIHx8IFtdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRlcGVuZHMgPSBSZWZsZWN0VXRpbHMuZ2V0TWV0YWRhdGEoXCJmYWN0b3J5RGVwZW5kZW5jaWVzXCIsIGZhY3RvcnkuZnVuYykgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBkZXBlbmRzLm1hcChmdW5jdGlvbiAoZGVwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZGVwKTtcclxuICAgICAgICB9KS5jb25jYXQoZmFjdG9yeS5wYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiBmYWN0b3J5LmZ1bmMuYXBwbHkobnVsbCwgcGFyYW1ldGVycyk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ObjectUtils } from "./object.utils";
|
|
2
|
-
export class SetUtils {
|
|
3
|
-
static equals(set, obj) {
|
|
4
|
-
if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))
|
|
5
|
-
return false;
|
|
6
|
-
if (set.size != obj.size)
|
|
7
|
-
return false;
|
|
8
|
-
for (const item in set) {
|
|
9
|
-
if (!obj.has(item))
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
static addArray(set, items) {
|
|
15
|
-
if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items))
|
|
16
|
-
return;
|
|
17
|
-
items.forEach(i => set.add(i));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9zZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sT0FBTyxRQUFRO0lBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBYSxFQUFFLEdBQVE7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUk7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQWEsRUFBRSxLQUFZO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ25FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0VXRpbHMge1xyXG4gICAgc3RhdGljIGVxdWFscyhzZXQ6IFNldDxhbnk+LCBvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNTZXQoc2V0KSB8fCAhT2JqZWN0VXRpbHMuaXNTZXQob2JqKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChzZXQuc2l6ZSAhPSBvYmouc2l6ZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBpbiBzZXQpIHtcclxuICAgICAgICAgICAgaWYgKCFvYmouaGFzKGl0ZW0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhZGRBcnJheShzZXQ6IFNldDxhbnk+LCBpdGVtczogYW55W10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzU2V0KHNldCkgfHwgIU9iamVjdFV0aWxzLmlzQXJyYXkoaXRlbXMpKSByZXR1cm47XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpID0+IHNldC5hZGQoaSkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export class StringUtils {
|
|
2
|
-
static concat(separator, ...strings) {
|
|
3
|
-
return strings.filter(
|
|
4
|
-
// @dynamic
|
|
5
|
-
str => !!str).join(separator);
|
|
6
|
-
}
|
|
7
|
-
static startsWith(str, ...starts) {
|
|
8
|
-
for (let i = 0; i < starts.length; i++) {
|
|
9
|
-
if (str.startsWith(starts[i]))
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
static has(str, ...parts) {
|
|
15
|
-
for (let i = 0; i < parts.length; i++) {
|
|
16
|
-
if (str.indexOf(parts[i]) >= 0)
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
static lcFirst(str) {
|
|
22
|
-
return str ? str.charAt(0).toLowerCase() + str.substring(1) : "";
|
|
23
|
-
}
|
|
24
|
-
static ucFirst(str) {
|
|
25
|
-
return str ? str.charAt(0).toUpperCase() + str.substring(1) : "";
|
|
26
|
-
}
|
|
27
|
-
static isObjectId(id) {
|
|
28
|
-
return typeof id === "string" && id.length == 24 && !isNaN(Number("0x" + id));
|
|
29
|
-
}
|
|
30
|
-
static parseDomain(baseUrl) {
|
|
31
|
-
try {
|
|
32
|
-
const url = new URL(baseUrl);
|
|
33
|
-
const port = url.port && url.port !== "443" && url.port !== "80" ? `:${url.port}` : ``;
|
|
34
|
-
return `${url.protocol}//${url.hostname}${port}/`;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return "/";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9zdHJpbmcudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQixFQUFFLEdBQUcsT0FBaUI7UUFDakQsT0FBTyxPQUFPLENBQUMsTUFBTTtRQUNqQixXQUFXO1FBQ1gsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNmLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxHQUFHLE1BQWdCO1FBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQUcsS0FBZTtRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFlO1FBQzlCLElBQUksQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkYsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN0RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcclxuXHJcbiAgICBzdGF0aWMgY29uY2F0KHNlcGFyYXRvcjogc3RyaW5nLCAuLi5zdHJpbmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZ3MuZmlsdGVyKFxyXG4gICAgICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgICAgICBzdHIgPT4gISFzdHJcclxuICAgICAgICApLmpvaW4oc2VwYXJhdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3RhcnRzV2l0aChzdHI6IHN0cmluZywgLi4uc3RhcnRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIuc3RhcnRzV2l0aChzdGFydHNbaV0pKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXMoc3RyOiBzdHJpbmcsIC4uLnBhcnRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKHBhcnRzW2ldKSA+PSAwKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBsY0ZpcnN0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyID8gc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHVjRmlyc3Qoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIgPyBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3RJZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gXCJzdHJpbmdcIiAmJiBpZC5sZW5ndGggPT0gMjQgJiYgIWlzTmFOKE51bWJlcihcIjB4XCIgKyBpZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBwYXJzZURvbWFpbihiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB1cmwucG9ydCAmJiB1cmwucG9ydCAhPT0gXCI0NDNcIiAmJiB1cmwucG9ydCAhPT0gXCI4MFwiID8gYDoke3VybC5wb3J0fWAgOiBgYDtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3RuYW1lfSR7cG9ydH0vYDtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiL1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { ObjectUtils } from "./object.utils";
|
|
2
|
-
export class TimerUtils {
|
|
3
|
-
static createTimeout(func, time) {
|
|
4
|
-
// @dynamic
|
|
5
|
-
const run = (timer) => {
|
|
6
|
-
timer.clear();
|
|
7
|
-
timer.id = setTimeout(() => {
|
|
8
|
-
timer.id = null;
|
|
9
|
-
timer.func();
|
|
10
|
-
}, timer.time);
|
|
11
|
-
};
|
|
12
|
-
// @dynamic
|
|
13
|
-
const clear = (timer) => {
|
|
14
|
-
if (!timer.id)
|
|
15
|
-
return;
|
|
16
|
-
clearTimeout(timer.id);
|
|
17
|
-
timer.id = null;
|
|
18
|
-
};
|
|
19
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
20
|
-
}
|
|
21
|
-
static createInterval(func, time) {
|
|
22
|
-
// @dynamic
|
|
23
|
-
const run = (timer) => {
|
|
24
|
-
timer.clear();
|
|
25
|
-
timer.id = setInterval(timer.func, timer.time);
|
|
26
|
-
};
|
|
27
|
-
// @dynamic
|
|
28
|
-
const clear = (timer) => {
|
|
29
|
-
if (!timer.id)
|
|
30
|
-
return;
|
|
31
|
-
clearInterval(timer.id);
|
|
32
|
-
timer.id = null;
|
|
33
|
-
};
|
|
34
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
35
|
-
}
|
|
36
|
-
static createTimer(run, clear, func, time) {
|
|
37
|
-
const timer = {};
|
|
38
|
-
const setParams = (func, time) => {
|
|
39
|
-
timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
|
|
40
|
-
timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
|
|
41
|
-
};
|
|
42
|
-
timer.run = () => run(timer);
|
|
43
|
-
timer.clear = () => clear(timer);
|
|
44
|
-
timer.set = (func, time) => {
|
|
45
|
-
setParams(func, time);
|
|
46
|
-
timer.run();
|
|
47
|
-
};
|
|
48
|
-
setParams(func, time);
|
|
49
|
-
return timer;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL3RpbWVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxNQUFNLE9BQU8sVUFBVTtJQUVuQixNQUFNLENBQUMsYUFBYSxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQy9DLFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQ2hELFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQWMsRUFBRSxLQUFnQixFQUFFLElBQWMsRUFBRSxJQUFZO1FBQ3JGLE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUMvQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQy9ELEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDLENBQUM7UUFDRixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJVGltZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG50eXBlIFRpbWVyRnVuYyA9ICh0aW1lcjogSVRpbWVyKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRpbWVyVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVUaW1lb3V0KGZ1bmM/OiBGdW5jdGlvbiwgdGltZT86IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICBjb25zdCBydW4gPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICB0aW1lci5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGltZXIuaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGltZXIuZnVuYygpO1xyXG4gICAgICAgICAgICB9LCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5pZCk7XHJcbiAgICAgICAgICAgIHRpbWVyLmlkID0gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBUaW1lclV0aWxzLmNyZWF0ZVRpbWVyKHJ1biwgY2xlYXIsIGZ1bmMsIHRpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVJbnRlcnZhbChmdW5jPzogRnVuY3Rpb24sIHRpbWU/OiBudW1iZXIpOiBJVGltZXIge1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgcnVuID0gKHRpbWVyOiBJVGltZXIpID0+IHtcclxuICAgICAgICAgICAgdGltZXIuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGltZXIuaWQgPSBzZXRJbnRlcnZhbCh0aW1lci5mdW5jLCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIuaWQpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gVGltZXJVdGlscy5jcmVhdGVUaW1lcihydW4sIGNsZWFyLCBmdW5jLCB0aW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUaW1lcihydW46IFRpbWVyRnVuYywgY2xlYXI6IFRpbWVyRnVuYywgZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgY29uc3QgdGltZXI6IElUaW1lciA9IHt9O1xyXG4gICAgICAgIGNvbnN0IHNldFBhcmFtcyA9IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRpbWVyLmZ1bmMgPSAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihmdW5jKSA/ICgoKSA9PiB7fSkgOiBmdW5jO1xyXG4gICAgICAgICAgICB0aW1lci50aW1lID0gIU9iamVjdFV0aWxzLmlzTnVtYmVyKHRpbWUpID8gMTAwIDogdGltZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyLnJ1biA9ICgpID0+IHJ1bih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuY2xlYXIgPSAoKSA9PiBjbGVhcih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuc2V0ID0gKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgc2V0UGFyYW1zKGZ1bmMsIHRpbWUpO1xyXG4gICAgICAgICAgICB0aW1lci5ydW4oKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHNldFBhcmFtcyhmdW5jLCB0aW1lKTtcclxuICAgICAgICByZXR1cm4gdGltZXI7XHJcbiAgICB9XHJcbn1cclxuIl19
|