@yuuvis/client-core 1.0.3 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/yuuvis-client-core.mjs +773 -645
- package/fesm2022/yuuvis-client-core.mjs.map +1 -1
- package/index.d.ts +7 -4
- package/lib/model/object-flavor.interface.d.ts +4 -1
- package/lib/provide.client.core.d.ts +58 -0
- package/lib/service/backend/backend.service.d.ts +0 -1
- package/lib/service/config/config.service.d.ts +0 -8
- package/lib/service/core-init/core-init.service.d.ts +1 -7
- package/lib/service/core-init/translate-json-loader.d.ts +1 -1
- package/lib/service/dms/dms.service.d.ts +2 -1
- package/lib/service/object-config/object-config.interface.d.ts +1 -1
- package/lib/service/object-form/object-form-translate.service.d.ts +15 -0
- package/lib/service/{system → object-form}/object-form.interface.d.ts +2 -2
- package/lib/service/object-form/object-form.model.d.ts +45 -0
- package/lib/service/system/system.interface.d.ts +1 -1
- package/lib/service/system/system.service.d.ts +1 -1
- package/lib/service/toast/toast.interface.d.ts +8 -0
- package/lib/service/toast/toast.service.d.ts +17 -0
- package/lib/service/toast/toast.styles.d.ts +1 -0
- package/lib/service/upload/upload.interface.d.ts +1 -1
- package/lib/service/user/user.providers.d.ts +4 -0
- package/lib/service/user/user.service.d.ts +2 -4
- package/package.json +7 -10
- package/esm2022/index.mjs +0 -69
- package/esm2022/lib/client-core.module.mjs +0 -117
- package/esm2022/lib/client-core.shared.module.mjs +0 -18
- package/esm2022/lib/common/pipes/filesize.pipe.mjs +0 -37
- package/esm2022/lib/common/pipes/index.mjs +0 -6
- package/esm2022/lib/common/pipes/keys.pipe.mjs +0 -17
- package/esm2022/lib/common/pipes/locale-date.pipe.mjs +0 -45
- package/esm2022/lib/common/pipes/locale-number.pipe.mjs +0 -115
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -44
- package/esm2022/lib/common/services/native-notifications.interface.mjs +0 -2
- package/esm2022/lib/common/services/native-notifications.mjs +0 -40
- package/esm2022/lib/model/dms-object.interface.mjs +0 -2
- package/esm2022/lib/model/dms-object.model.mjs +0 -79
- package/esm2022/lib/model/object-flavor.interface.mjs +0 -2
- package/esm2022/lib/model/range-value.interface.mjs +0 -2
- package/esm2022/lib/model/yuv-error.model.mjs +0 -37
- package/esm2022/lib/model/yuv-user.model.mjs +0 -38
- package/esm2022/lib/service/audit/audit.interface.mjs +0 -2
- package/esm2022/lib/service/audit/audit.service.mjs +0 -135
- package/esm2022/lib/service/auth/auth.interceptor.mjs +0 -50
- package/esm2022/lib/service/auth/auth.interface.mjs +0 -7
- package/esm2022/lib/service/auth/auth.service.mjs +0 -130
- package/esm2022/lib/service/auth/oidc.service.mjs +0 -81
- package/esm2022/lib/service/backend/api.enum.mjs +0 -11
- package/esm2022/lib/service/backend/backend.interface.mjs +0 -2
- package/esm2022/lib/service/backend/backend.service.mjs +0 -206
- package/esm2022/lib/service/bpm/bpm.interface.mjs +0 -8
- package/esm2022/lib/service/bpm/bpm.service.mjs +0 -51
- package/esm2022/lib/service/cache/app-cache.service.mjs +0 -51
- package/esm2022/lib/service/catalog/catalog.interface.mjs +0 -2
- package/esm2022/lib/service/catalog/catalog.service.mjs +0 -13
- package/esm2022/lib/service/clipboard/clipboard.interface.mjs +0 -2
- package/esm2022/lib/service/clipboard/clipboard.service.mjs +0 -99
- package/esm2022/lib/service/config/config.interface.mjs +0 -6
- package/esm2022/lib/service/config/config.service.mjs +0 -115
- package/esm2022/lib/service/config/core-config.mjs +0 -20
- package/esm2022/lib/service/config/core-config.tokens.mjs +0 -9
- package/esm2022/lib/service/connection/connection.service.mjs +0 -36
- package/esm2022/lib/service/connection/offline.interceptor.mjs +0 -28
- package/esm2022/lib/service/core-init/core-init.service.mjs +0 -29
- package/esm2022/lib/service/core-init/missing-translation-handler.mjs +0 -10
- package/esm2022/lib/service/core-init/translate-json-loader.mjs +0 -117
- package/esm2022/lib/service/device/device.interface.mjs +0 -6
- package/esm2022/lib/service/device/device.service.mjs +0 -144
- package/esm2022/lib/service/dms/dms.service.interface.mjs +0 -2
- package/esm2022/lib/service/dms/dms.service.mjs +0 -440
- package/esm2022/lib/service/event/event.interface.mjs +0 -2
- package/esm2022/lib/service/event/event.service.mjs +0 -38
- package/esm2022/lib/service/event/events.mjs +0 -14
- package/esm2022/lib/service/idm/idm.interface.mjs +0 -2
- package/esm2022/lib/service/idm/idm.service.mjs +0 -34
- package/esm2022/lib/service/logger/logger-console.service.mjs +0 -73
- package/esm2022/lib/service/logger/logger.interface.mjs +0 -2
- package/esm2022/lib/service/logger/logger.mjs +0 -27
- package/esm2022/lib/service/notification/notification.service.mjs +0 -131
- package/esm2022/lib/service/object-config/object-config.interface.mjs +0 -2
- package/esm2022/lib/service/object-config/object-config.service.mjs +0 -233
- package/esm2022/lib/service/pending-changes/pending-changes-component.interface.mjs +0 -5
- package/esm2022/lib/service/pending-changes/pending-changes-guard.service.mjs +0 -25
- package/esm2022/lib/service/pending-changes/pending-changes.service.mjs +0 -123
- package/esm2022/lib/service/prediction/prediction.interface.mjs +0 -2
- package/esm2022/lib/service/prediction/prediction.service.mjs +0 -60
- package/esm2022/lib/service/retention/retention.interface.mjs +0 -2
- package/esm2022/lib/service/retention/retention.service.mjs +0 -65
- package/esm2022/lib/service/search/search.service.interface.mjs +0 -39
- package/esm2022/lib/service/search/search.service.mjs +0 -261
- package/esm2022/lib/service/search/search.utils.mjs +0 -142
- package/esm2022/lib/service/session-storage/session-storage.service.mjs +0 -50
- package/esm2022/lib/service/system/object-form.interface.mjs +0 -2
- package/esm2022/lib/service/system/system.enum.mjs +0 -167
- package/esm2022/lib/service/system/system.interface.mjs +0 -2
- package/esm2022/lib/service/system/system.service.mjs +0 -597
- package/esm2022/lib/service/upload/upload.interface.mjs +0 -2
- package/esm2022/lib/service/upload/upload.service.mjs +0 -228
- package/esm2022/lib/service/user/user-storage.service.mjs +0 -38
- package/esm2022/lib/service/user/user.service.mjs +0 -211
- package/esm2022/lib/util/utils.helper.enum.mjs +0 -15
- package/esm2022/lib/util/utils.mjs +0 -373
- package/esm2022/yuuvis-client-core.mjs +0 -5
- package/lib/client-core.module.d.ts +0 -20
- package/lib/client-core.shared.module.d.ts +0 -10
- package/lib/service/auth/oidc.service.d.ts +0 -16
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import { EMPTY as observableEmpty } from 'rxjs';
|
|
2
|
-
import { Sort } from './utils.helper.enum';
|
|
3
|
-
export class Utils {
|
|
4
|
-
static optionsToURLParams(options) {
|
|
5
|
-
if (options) {
|
|
6
|
-
const searchParams = new URLSearchParams();
|
|
7
|
-
Object.keys(options).map((k) => searchParams.append(k, options[k]));
|
|
8
|
-
return `?${searchParams.toString()}`;
|
|
9
|
-
}
|
|
10
|
-
return '';
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Get all focusable child elements of a host element.
|
|
14
|
-
* @param host The host/parent element
|
|
15
|
-
* @returns Array of focusable child elements
|
|
16
|
-
*/
|
|
17
|
-
static getFocusableChildren(host) {
|
|
18
|
-
return Array.from(host.querySelectorAll('a[href], button, input, textarea, select, details,[tabindex]:not([tabindex="-1"])')).filter((el) => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'));
|
|
19
|
-
}
|
|
20
|
-
static hasProperty(o, property) {
|
|
21
|
-
if (typeof o !== 'object' || o === null) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
return Object.hasOwn(o, property);
|
|
25
|
-
}
|
|
26
|
-
static patternToRegExp(pattern) {
|
|
27
|
-
return new RegExp(pattern.replaceAll('*', '.*'));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Utility method for adding parameters to a given URI.
|
|
31
|
-
*
|
|
32
|
-
* @param uri The uri string to attach the parameters to
|
|
33
|
-
* @param params The object containing parameters to be appended
|
|
34
|
-
* @returns the given uri extended by the given parameters + remove empty parameters
|
|
35
|
-
*/
|
|
36
|
-
static buildUri(uri, params) {
|
|
37
|
-
const q = Object.keys(params)
|
|
38
|
-
.filter((k) => !Utils.isEmptyOrFalse(params[k]))
|
|
39
|
-
.map((k) => k + '=' + encodeURIComponent(typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k]))
|
|
40
|
-
.join('&');
|
|
41
|
-
return uri + (q ? '?' + q : '');
|
|
42
|
-
}
|
|
43
|
-
static formatMailTo(value, isEmail) {
|
|
44
|
-
if (isEmail && !!value) {
|
|
45
|
-
if (Array.isArray(value)) {
|
|
46
|
-
return value.join().replace(/,/g, '; ');
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
return value.replace(/,/g, '; ');
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return value;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Creates a unique identifier.
|
|
56
|
-
* @returns A Universally Unique Identifier
|
|
57
|
-
*/
|
|
58
|
-
static uuid() {
|
|
59
|
-
return Utils._p8() + Utils._p8(true) + Utils._p8(true) + Utils._p8();
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Encode a filename safe for sending chars beyond ASCII-7bit using quoted printable encoding.
|
|
63
|
-
*
|
|
64
|
-
* @param filename The file name
|
|
65
|
-
* @returns The quoted printable filename
|
|
66
|
-
*/
|
|
67
|
-
static encodeFileName(filename) {
|
|
68
|
-
const fileName = Utils.encodeToQuotedPrintable(Utils.encodeToUtf8(filename)).replace(/_/g, '=5F');
|
|
69
|
-
return `=?UTF-8?Q?${fileName}?=`;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
*
|
|
73
|
-
* @param boolean s
|
|
74
|
-
* @return string
|
|
75
|
-
*/
|
|
76
|
-
static _p8(s) {
|
|
77
|
-
const p = (Math.random().toString(16) + '000000000').substr(2, 8);
|
|
78
|
-
return s ? `-${p.substr(0, 4)}-${p.substr(4, 4)}` : p;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Converts a javascript text to the utf-8 converted variant.
|
|
82
|
-
* See [unicode]{@link http://thlist.onlinehome.de/thomas_homepage/unicode/UTF-8%20Konvertierung%20mittels%20JavaScript.htm} for reference
|
|
83
|
-
*
|
|
84
|
-
* @param rawinput The input string
|
|
85
|
-
* @returns The utf-8 converted string
|
|
86
|
-
*/
|
|
87
|
-
static encodeToUtf8(rawinput) {
|
|
88
|
-
/**
|
|
89
|
-
* Normalize line breaks
|
|
90
|
-
*/
|
|
91
|
-
rawinput = rawinput.replace(/\r\n/g, '\n');
|
|
92
|
-
let utfreturn = '';
|
|
93
|
-
for (let n = 0; n < rawinput.length; n++) {
|
|
94
|
-
/**
|
|
95
|
-
* Unicode for current char
|
|
96
|
-
*/
|
|
97
|
-
const c = rawinput.charCodeAt(n);
|
|
98
|
-
if (c < 128) {
|
|
99
|
-
/**
|
|
100
|
-
* All chars range 0-127 => 1byte
|
|
101
|
-
*/
|
|
102
|
-
utfreturn += String.fromCharCode(c);
|
|
103
|
-
}
|
|
104
|
-
else if (c > 127 && c < 2048) {
|
|
105
|
-
/**
|
|
106
|
-
* All chars range from 127 to 2047 => 2byte
|
|
107
|
-
*/
|
|
108
|
-
utfreturn += String.fromCharCode((c >> 6) | 192);
|
|
109
|
-
utfreturn += String.fromCharCode((c & 63) | 128);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
/**
|
|
113
|
-
* All chars range from 2048 to 66536 => 3byte
|
|
114
|
-
*/
|
|
115
|
-
utfreturn += String.fromCharCode((c >> 12) | 224);
|
|
116
|
-
utfreturn += String.fromCharCode(((c >> 6) & 63) | 128);
|
|
117
|
-
utfreturn += String.fromCharCode((c & 63) | 128);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return utfreturn;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* See [quoted-printable]{@link https://github.com/mathiasbynens/quoted-printable/blob/master/quoted-printable.js}
|
|
124
|
-
**/
|
|
125
|
-
static quotedPrintable(symbol) {
|
|
126
|
-
if (symbol > '\xFF') {
|
|
127
|
-
throw RangeError('`encodeToQuotedPrintable` expects extended ASCII input only. Missing prior UTF-8 encoding?');
|
|
128
|
-
}
|
|
129
|
-
const codePoint = symbol.charCodeAt(0);
|
|
130
|
-
const hexadecimal = codePoint.toString(16).toUpperCase();
|
|
131
|
-
return '=' + ('0' + hexadecimal).slice(-2);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Encode symbols that are definitely unsafe (i.e. unsafe in any context). The regular expression describes these unsafe symbols.
|
|
135
|
-
*
|
|
136
|
-
* @param rawinput Input string to be encoded
|
|
137
|
-
* @returns The encoded string
|
|
138
|
-
*/
|
|
139
|
-
static encodeToQuotedPrintable(rawinput) {
|
|
140
|
-
const encoded = rawinput.replace(/[\0-\b\n-\x1F=\x7F-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/g, this.quotedPrintable);
|
|
141
|
-
return encoded;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Sorts An Array of Object by given key
|
|
145
|
-
* See [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
146
|
-
*
|
|
147
|
-
* @param key
|
|
148
|
-
* @param order
|
|
149
|
-
* @param locales
|
|
150
|
-
* @param options
|
|
151
|
-
* @returns (a: any, b: any) => number
|
|
152
|
-
*/
|
|
153
|
-
static sortValues(key = '', order = Sort.ASC, locales, options) {
|
|
154
|
-
const f = (a, b) => {
|
|
155
|
-
let comparison;
|
|
156
|
-
const varA = Utils.getProperty(a, key);
|
|
157
|
-
const varB = Utils.getProperty(b, key);
|
|
158
|
-
if (typeof varA === 'number' && typeof varB === 'number') {
|
|
159
|
-
comparison = varA - varB;
|
|
160
|
-
}
|
|
161
|
-
else if (varA instanceof Date && varB instanceof Date) {
|
|
162
|
-
comparison = new Date(varA).getTime() - new Date(varB).getTime();
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
const stringA = varA || varA === 0 ? varA.toString() : '';
|
|
166
|
-
const stringB = varB || varB === 0 ? varB.toString() : '';
|
|
167
|
-
comparison = stringA.localeCompare(stringB, locales, options);
|
|
168
|
-
}
|
|
169
|
-
return order === Sort.DESC ? comparison * -1 : comparison;
|
|
170
|
-
};
|
|
171
|
-
return f;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
175
|
-
*
|
|
176
|
-
* @param object
|
|
177
|
-
* @param string key
|
|
178
|
-
* @returns any
|
|
179
|
-
*/
|
|
180
|
-
static getProperty(object, key = '') {
|
|
181
|
-
const f = key ? key.split('.').reduce((o, k) => (o || {})[k], object) : object;
|
|
182
|
-
return f;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* @param object
|
|
186
|
-
* @param key
|
|
187
|
-
* @param value
|
|
188
|
-
*/
|
|
189
|
-
static setProperty(object, key = '', value) {
|
|
190
|
-
const [head, ...rest] = key.split('.');
|
|
191
|
-
!rest.length ? (object[head] = value) : Utils.setProperty(object[head] || (object[head] = {}), value, rest.join('.'));
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Use on Observable.catch or Observable.subscribe to return empty value
|
|
195
|
-
* [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
196
|
-
*
|
|
197
|
-
* @param (error) => any callback
|
|
198
|
-
* @returns (error) => Observable<never>
|
|
199
|
-
*/
|
|
200
|
-
static empty(callback) {
|
|
201
|
-
const f = () => {
|
|
202
|
-
return observableEmpty;
|
|
203
|
-
};
|
|
204
|
-
return f;
|
|
205
|
-
}
|
|
206
|
-
// /**
|
|
207
|
-
// * Use on Observable.catch with specific skipNotification function !!!
|
|
208
|
-
// * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
209
|
-
// *
|
|
210
|
-
// * @param skipNotification
|
|
211
|
-
// * @param callback
|
|
212
|
-
// * @param name
|
|
213
|
-
// * @param message
|
|
214
|
-
// */
|
|
215
|
-
// public static catchSkip(skipNotification?: (error: any) => any, callback?: (error: any) => any, name?: string, message?: string) {
|
|
216
|
-
// const f = (error: any) => {
|
|
217
|
-
// const _error = callback && callback(error);
|
|
218
|
-
// const _skipNotification = skipNotification && skipNotification(error);
|
|
219
|
-
// return throwError(() => new YuvError(_error instanceof Error ? _error : error, name, message, _skipNotification));
|
|
220
|
-
// };
|
|
221
|
-
// return f;
|
|
222
|
-
// }
|
|
223
|
-
// /**
|
|
224
|
-
// * Use on Observable.catch !!!
|
|
225
|
-
// * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
226
|
-
// *
|
|
227
|
-
// * @param callback
|
|
228
|
-
// * @param name
|
|
229
|
-
// * @param message
|
|
230
|
-
// * @param skipNotification
|
|
231
|
-
// * @return (error) => Observable<never>
|
|
232
|
-
// */
|
|
233
|
-
// public static catch(callback?: (error: any) => any, name?: string, message?: string, skipNotification?: boolean) {
|
|
234
|
-
// const f = (error: any) => {
|
|
235
|
-
// const _error = callback && callback(error);
|
|
236
|
-
// return throwError(() => new YuvError(_error instanceof Error ? _error : error, name, message, skipNotification));
|
|
237
|
-
// };
|
|
238
|
-
// return f;
|
|
239
|
-
// }
|
|
240
|
-
// /**
|
|
241
|
-
// * Use on Observable.subscribe !!!
|
|
242
|
-
// * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}
|
|
243
|
-
// *
|
|
244
|
-
// * @param callback
|
|
245
|
-
// * @param name
|
|
246
|
-
// * @param message
|
|
247
|
-
// * @param skipNotification
|
|
248
|
-
// * @return (error) => void
|
|
249
|
-
// */
|
|
250
|
-
// public static throw(callback?: (error: any) => any, name?: string, message?: string, skipNotification?: boolean) {
|
|
251
|
-
// const f = (error: any) => {
|
|
252
|
-
// const _error = callback && callback(error);
|
|
253
|
-
// throw new YuvError(_error instanceof Error ? _error : error, name, message, skipNotification);
|
|
254
|
-
// };
|
|
255
|
-
// return f;
|
|
256
|
-
// }
|
|
257
|
-
// /**
|
|
258
|
-
// * Use on Observable.subscribe only if you want to skip notification / toast!!!
|
|
259
|
-
// *
|
|
260
|
-
// * @param callback
|
|
261
|
-
// * @param name
|
|
262
|
-
// * @param message
|
|
263
|
-
// * @param skipNotification
|
|
264
|
-
// * @return (error) => void
|
|
265
|
-
// */
|
|
266
|
-
// public static logError(callback?: (error: any) => any, name?: string, message?: string, skipNotification = true) {
|
|
267
|
-
// return Utils.throw(callback, name, message, skipNotification);
|
|
268
|
-
// }
|
|
269
|
-
// /**
|
|
270
|
-
// * Checks if element is visible
|
|
271
|
-
// *
|
|
272
|
-
// * @param elem
|
|
273
|
-
// * @return boolean
|
|
274
|
-
// */
|
|
275
|
-
// public static isVisible(elem: any): boolean {
|
|
276
|
-
// return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
|
|
277
|
-
// }
|
|
278
|
-
static getBaseHref(removeTrailingSlash) {
|
|
279
|
-
const baseEl = document.getElementsByTagName('base')[0];
|
|
280
|
-
const baseHref = baseEl ? baseEl.getAttribute('href') : undefined;
|
|
281
|
-
return baseHref ? (removeTrailingSlash ? baseHref.substr(0, baseHref.length - 1) : baseHref) : '';
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Truncate a string (first argument) if it is longer than the given maximum string length (second argument).
|
|
285
|
-
* Return the truncated string with a ... ending or whats provided.
|
|
286
|
-
*
|
|
287
|
-
* @param string str
|
|
288
|
-
* @param number num
|
|
289
|
-
*/
|
|
290
|
-
static truncateString(str, num, ending = '...') {
|
|
291
|
-
if (str.length > num) {
|
|
292
|
-
if (num > 3) {
|
|
293
|
-
num -= 3;
|
|
294
|
-
}
|
|
295
|
-
str = `${str.substring(0, num)}${ending}`;
|
|
296
|
-
}
|
|
297
|
-
return str;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Get the TimeZone Offsest as minutes
|
|
301
|
-
*/
|
|
302
|
-
static getTimezoneOffset() {
|
|
303
|
-
return new Date().getTimezoneOffset();
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Transform to date with yyyy-mm-dd format
|
|
307
|
-
*/
|
|
308
|
-
static transformDate(v) {
|
|
309
|
-
return v && new Date(new Date(v).getTime() - new Date(v).getTimezoneOffset() * 60 * 1000).toISOString().slice(0, 10);
|
|
310
|
-
}
|
|
311
|
-
static isEdge() {
|
|
312
|
-
return new RegExp('Edge', 'i').test(navigator.userAgent);
|
|
313
|
-
}
|
|
314
|
-
static isFirefox() {
|
|
315
|
-
return new RegExp('firefox', 'i').test(navigator.userAgent);
|
|
316
|
-
}
|
|
317
|
-
static isSafari() {
|
|
318
|
-
return new RegExp('^((?!chrome|android|crios|fxios).)*safari', 'i').test(navigator.userAgent);
|
|
319
|
-
}
|
|
320
|
-
static isEmpty(obj) {
|
|
321
|
-
if (obj == null || obj === '') {
|
|
322
|
-
return true;
|
|
323
|
-
}
|
|
324
|
-
if (typeof obj === 'number') {
|
|
325
|
-
return isNaN(obj);
|
|
326
|
-
}
|
|
327
|
-
return typeof obj === 'boolean' ? false : !Object.keys(obj).length;
|
|
328
|
-
}
|
|
329
|
-
static isEmptyOrFalse(val) {
|
|
330
|
-
return typeof val === 'boolean' ? !val : Utils.isEmpty(val);
|
|
331
|
-
}
|
|
332
|
-
static escapeHtml(str) {
|
|
333
|
-
str = str ? str : '';
|
|
334
|
-
const entityMap = {
|
|
335
|
-
'&': '&',
|
|
336
|
-
'<': '<',
|
|
337
|
-
'>': '>',
|
|
338
|
-
'"': '"',
|
|
339
|
-
"'": ''',
|
|
340
|
-
'/': '/'
|
|
341
|
-
};
|
|
342
|
-
return String(str).replace(/[&<>"'\/]/g, (s) => entityMap[s]);
|
|
343
|
-
}
|
|
344
|
-
static arrayToObject(arr = [], keyProperty, valueProperty) {
|
|
345
|
-
const key = typeof keyProperty === 'string' ? (o) => o[keyProperty] : keyProperty;
|
|
346
|
-
const value = typeof valueProperty === 'string' ? (o) => o[valueProperty] : valueProperty;
|
|
347
|
-
return arr.reduce((acc, cur, i) => {
|
|
348
|
-
acc[key ? key(cur) : i] = value ? value(cur) : cur;
|
|
349
|
-
return acc;
|
|
350
|
-
}, {});
|
|
351
|
-
}
|
|
352
|
-
// public static navigate(newTab: boolean, router: Router, commands: any[], navigationExtras?: NavigationExtras): Promise<any> {
|
|
353
|
-
// if (newTab) {
|
|
354
|
-
// return new Promise(() => Utils.openWindow(router.serializeUrl(router.createUrlTree(commands, navigationExtras))));
|
|
355
|
-
// } else {
|
|
356
|
-
// return router.navigate(commands, navigationExtras);
|
|
357
|
-
// }
|
|
358
|
-
// }
|
|
359
|
-
// public static openWindow(url: string = '', target = '_blank', features?: string): Window | null {
|
|
360
|
-
// return window.open(url.match(new RegExp('^/.+')) ? url.replace(new RegExp('^/'), '') : url, target, features); // relative to host
|
|
361
|
-
// }
|
|
362
|
-
static downloadBlob(content, mimeType, filename) {
|
|
363
|
-
const bom = new Uint8Array([0xef, 0xbb, 0xbf]); // FORM BOM
|
|
364
|
-
const blob = new Blob([bom, content], { type: 'octet/stream' });
|
|
365
|
-
const a = document.createElement('a');
|
|
366
|
-
const url = window.URL.createObjectURL(blob);
|
|
367
|
-
a.setAttribute('href', url);
|
|
368
|
-
a.setAttribute('download', filename);
|
|
369
|
-
a.click();
|
|
370
|
-
URL.revokeObjectURL(url);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssSUFBSSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFtQixJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxNQUFNLE9BQU8sS0FBSztJQUNoQixNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBNEI7UUFDcEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQWlCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUZBQW1GLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDbEksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFVLEVBQUUsUUFBZ0I7UUFDcEQsSUFBSSxP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QUEwRDtJQUMxRCxNQUFNO0lBQ04sSUFBSTtJQUVKLG9HQUFvRztJQUNwRyx1SUFBdUk7SUFDdkksSUFBSTtJQUVHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDekUsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVNUFRZIGFzIG9ic2VydmFibGVFbXB0eSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWFpbFRvLCBTb3J0IH0gZnJvbSAnLi91dGlscy5oZWxwZXIuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gIHN0YXRpYyBvcHRpb25zVG9VUkxQYXJhbXMob3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoaykgPT4gc2VhcmNoUGFyYW1zLmFwcGVuZChrLCBvcHRpb25zW2tdKSk7XG4gICAgICByZXR1cm4gYD8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWA7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGZvY3VzYWJsZSBjaGlsZCBlbGVtZW50cyBvZiBhIGhvc3QgZWxlbWVudC5cbiAgICogQHBhcmFtIGhvc3QgVGhlIGhvc3QvcGFyZW50IGVsZW1lbnRcbiAgICogQHJldHVybnMgQXJyYXkgb2YgZm9jdXNhYmxlIGNoaWxkIGVsZW1lbnRzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEZvY3VzYWJsZUNoaWxkcmVuKGhvc3Q6IEhUTUxFbGVtZW50KTogRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShob3N0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0sIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJykpLmZpbHRlcihcbiAgICAgIChlbCkgPT4gIWVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiAhZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGFzUHJvcGVydHkobzogdW5rbm93biwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgbyAhPT0gJ29iamVjdCcgfHwgbyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0Lmhhc093bihvLCBwcm9wZXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhdHRlcm5Ub1JlZ0V4cChwYXR0ZXJuOiBzdHJpbmcpOiBSZWdFeHAge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZUFsbCgnKicsICcuKicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IG1ldGhvZCBmb3IgYWRkaW5nIHBhcmFtZXRlcnMgdG8gYSBnaXZlbiBVUkkuXG4gICAqXG4gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBzdHJpbmcgdG8gYXR0YWNoIHRoZSBwYXJhbWV0ZXJzIHRvXG4gICAqIEBwYXJhbSBwYXJhbXMgVGhlIG9iamVjdCBjb250YWluaW5nIHBhcmFtZXRlcnMgdG8gYmUgYXBwZW5kZWRcbiAgICogQHJldHVybnMgdGhlIGdpdmVuIHVyaSBleHRlbmRlZCBieSB0aGUgZ2l2ZW4gcGFyYW1ldGVycyArIHJlbW92ZSBlbXB0eSBwYXJhbWV0ZXJzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkVXJpKHVyaTogc3RyaW5nLCBwYXJhbXM6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcSA9IE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAgIC5maWx0ZXIoKGspID0+ICFVdGlscy5pc0VtcHR5T3JGYWxzZShwYXJhbXNba10pKVxuICAgICAgLm1hcCgoaykgPT4gayArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0eXBlb2YgcGFyYW1zW2tdID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHBhcmFtc1trXSkgOiBwYXJhbXNba10pKVxuICAgICAgLmpvaW4oJyYnKTtcbiAgICByZXR1cm4gdXJpICsgKHEgPyAnPycgKyBxIDogJycpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXRNYWlsVG8odmFsdWU6IEZvcm1hdHRlZE1haWxUbywgaXNFbWFpbDogYm9vbGVhbik6IEZvcm1hdHRlZE1haWxUbyB7XG4gICAgaWYgKGlzRW1haWwgJiYgISF2YWx1ZSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCkucmVwbGFjZSgvLC9nLCAnOyAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8sL2csICc7ICcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKiBAcmV0dXJucyBBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHV1aWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuX3A4KCkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYSBmaWxlbmFtZSBzYWZlIGZvciBzZW5kaW5nIGNoYXJzIGJleW9uZCBBU0NJSS03Yml0IHVzaW5nIHF1b3RlZCBwcmludGFibGUgZW5jb2RpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgZmlsZSBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBxdW90ZWQgcHJpbnRhYmxlIGZpbGVuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gVXRpbHMuZW5jb2RlVG9RdW90ZWRQcmludGFibGUoVXRpbHMuZW5jb2RlVG9VdGY4KGZpbGVuYW1lKSkucmVwbGFjZSgvXy9nLCAnPTVGJyk7XG4gICAgcmV0dXJuIGA9P1VURi04P1E/JHtmaWxlTmFtZX0/PWA7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGJvb2xlYW4gc1xuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX3A4KHM/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBwID0gKE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpICsgJzAwMDAwMDAwMCcpLnN1YnN0cigyLCA4KTtcbiAgICByZXR1cm4gcyA/IGAtJHtwLnN1YnN0cigwLCA0KX0tJHtwLnN1YnN0cig0LCA0KX1gIDogcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGphdmFzY3JpcHQgdGV4dCB0byB0aGUgdXRmLTggY29udmVydGVkIHZhcmlhbnQuXG4gICAqIFNlZSBbdW5pY29kZV17QGxpbmsgaHR0cDovL3RobGlzdC5vbmxpbmVob21lLmRlL3Rob21hc19ob21lcGFnZS91bmljb2RlL1VURi04JTIwS29udmVydGllcnVuZyUyMG1pdHRlbHMlMjBKYXZhU2NyaXB0Lmh0bX0gZm9yIHJlZmVyZW5jZVxuICAgKlxuICAgKiBAcGFyYW0gcmF3aW5wdXQgVGhlIGlucHV0IHN0cmluZ1xuICAgKiBAcmV0dXJucyBUaGUgdXRmLTggY29udmVydGVkIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlVG9VdGY4KHJhd2lucHV0OiBzdHJpbmcpIHtcbiAgICAvKipcbiAgICAgKiBOb3JtYWxpemUgbGluZSBicmVha3NcbiAgICAgKi9cbiAgICByYXdpbnB1dCA9IHJhd2lucHV0LnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gICAgbGV0IHV0ZnJldHVybiA9ICcnO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcmF3aW5wdXQubGVuZ3RoOyBuKyspIHtcbiAgICAgIC8qKlxuICAgICAgICogVW5pY29kZSBmb3IgY3VycmVudCBjaGFyXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGMgPSByYXdpbnB1dC5jaGFyQ29kZUF0KG4pO1xuICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSAwLTEyNyA9PiAxYnl0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG4gICAgICB9IGVsc2UgaWYgKGMgPiAxMjcgJiYgYyA8IDIwNDgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDEyNyB0byAyMDQ3ID0+IDJieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgZnJvbSAyMDQ4IHRvIDY2NTM2ID0+IDNieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiAxMikgfCAyMjQpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dGZyZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2VlIFtxdW90ZWQtcHJpbnRhYmxlXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9xdW90ZWQtcHJpbnRhYmxlL2Jsb2IvbWFzdGVyL3F1b3RlZC1wcmludGFibGUuanN9XG4gICAqKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcXVvdGVkUHJpbnRhYmxlKHN5bWJvbDogc3RyaW5nKSB7XG4gICAgaWYgKHN5bWJvbCA+ICdcXHhGRicpIHtcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ2BlbmNvZGVUb1F1b3RlZFByaW50YWJsZWAgZXhwZWN0cyBleHRlbmRlZCBBU0NJSSBpbnB1dCBvbmx5LiBNaXNzaW5nIHByaW9yIFVURi04IGVuY29kaW5nPycpO1xuICAgIH1cbiAgICBjb25zdCBjb2RlUG9pbnQgPSBzeW1ib2wuY2hhckNvZGVBdCgwKTtcbiAgICBjb25zdCBoZXhhZGVjaW1hbCA9IGNvZGVQb2ludC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgICByZXR1cm4gJz0nICsgKCcwJyArIGhleGFkZWNpbWFsKS5zbGljZSgtMik7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIHN5bWJvbHMgdGhhdCBhcmUgZGVmaW5pdGVseSB1bnNhZmUgKGkuZS4gdW5zYWZlIGluIGFueSBjb250ZXh0KS4gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBkZXNjcmliZXMgdGhlc2UgdW5zYWZlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwYXJhbSByYXdpbnB1dCBJbnB1dCBzdHJpbmcgdG8gYmUgZW5jb2RlZFxuICAgKiBAcmV0dXJucyBUaGUgZW5jb2RlZCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKHJhd2lucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuY29kZWQgPSByYXdpbnB1dC5yZXBsYWNlKC9bXFwwLVxcYlxcbi1cXHgxRj1cXHg3Ri1cXHVEN0ZGXFx1REMwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdL2csIHRoaXMucXVvdGVkUHJpbnRhYmxlKTtcbiAgICByZXR1cm4gZW5jb2RlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0cyBBbiBBcnJheSBvZiBPYmplY3QgYnkgZ2l2ZW4ga2V5XG4gICAqIFNlZSBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG9yZGVyXG4gICAqIEBwYXJhbSBsb2NhbGVzXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNvcnRWYWx1ZXMoa2V5ID0gJycsIG9yZGVyID0gU29ydC5BU0MsIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IEludGwuQ29sbGF0b3JPcHRpb25zKSB7XG4gICAgY29uc3QgZiA9IChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgbGV0IGNvbXBhcmlzb246IG51bWJlcjtcbiAgICAgIGNvbnN0IHZhckEgPSBVdGlscy5nZXRQcm9wZXJ0eShhLCBrZXkpO1xuICAgICAgY29uc3QgdmFyQiA9IFV0aWxzLmdldFByb3BlcnR5KGIsIGtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFyQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhckIgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YXJBIC0gdmFyQjtcbiAgICAgIH0gZWxzZSBpZiAodmFyQSBpbnN0YW5jZW9mIERhdGUgJiYgdmFyQiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29tcGFyaXNvbiA9IG5ldyBEYXRlKHZhckEpLmdldFRpbWUoKSAtIG5ldyBEYXRlKHZhckIpLmdldFRpbWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0EgPSB2YXJBIHx8IHZhckEgPT09IDAgPyB2YXJBLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgICAgY29uc3Qgc3RyaW5nQiA9IHZhckIgfHwgdmFyQiA9PT0gMCA/IHZhckIudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICBjb21wYXJpc29uID0gc3RyaW5nQS5sb2NhbGVDb21wYXJlKHN0cmluZ0IsIGxvY2FsZXMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yZGVyID09PSBTb3J0LkRFU0MgPyBjb21wYXJpc29uICogLTEgOiBjb21wYXJpc29uO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcga2V5XG4gICAqIEByZXR1cm5zIGFueVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eShvYmplY3Q6IGFueSwga2V5ID0gJycpOiBhbnkge1xuICAgIGNvbnN0IGYgPSBrZXkgPyBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGspID0+IChvIHx8IHt9KVtrXSwgb2JqZWN0KSA6IG9iamVjdDtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2JqZWN0XG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldFByb3BlcnR5KG9iamVjdDogYW55LCBrZXkgPSAnJywgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgW2hlYWQsIC4uLnJlc3RdID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgIXJlc3QubGVuZ3RoID8gKG9iamVjdFtoZWFkXSA9IHZhbHVlKSA6IFV0aWxzLnNldFByb3BlcnR5KG9iamVjdFtoZWFkXSB8fCAob2JqZWN0W2hlYWRdID0ge30pLCB2YWx1ZSwgcmVzdC5qb2luKCcuJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIG9yIE9ic2VydmFibGUuc3Vic2NyaWJlIHRvIHJldHVybiBlbXB0eSB2YWx1ZVxuICAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gICAqXG4gICAqIEBwYXJhbSAoZXJyb3IpID0+IGFueSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyAoZXJyb3IpID0+IE9ic2VydmFibGU8bmV2ZXI+XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KGNhbGxiYWNrPzogKGVycm9yOiBhbnkpID0+IGFueSkge1xuICAgIGNvbnN0IGYgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZUVtcHR5O1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggd2l0aCBzcGVjaWZpYyBza2lwTm90aWZpY2F0aW9uIGZ1bmN0aW9uICEhIVxuICAvLyAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXG4gIC8vICAqIEBwYXJhbSBjYWxsYmFja1xuICAvLyAgKiBAcGFyYW0gbmFtZVxuICAvLyAgKiBAcGFyYW0gbWVzc2FnZVxuICAvLyAgKi9cbiAgLy8gcHVibGljIHN0YXRpYyBjYXRjaFNraXAoc2tpcE5vdGlmaWNhdGlvbj86IChlcnJvcjogYW55KSA9PiBhbnksIGNhbGxiYWNrPzogKGVycm9yOiBhbnkpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAvLyAgIGNvbnN0IGYgPSAoZXJyb3I6IGFueSkgPT4ge1xuICAvLyAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xuICAvLyAgICAgY29uc3QgX3NraXBOb3RpZmljYXRpb24gPSBza2lwTm90aWZpY2F0aW9uICYmIHNraXBOb3RpZmljYXRpb24oZXJyb3IpO1xuICAvLyAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IFl1dkVycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIF9za2lwTm90aWZpY2F0aW9uKSk7XG4gIC8vICAgfTtcbiAgLy8gICByZXR1cm4gZjtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5jYXRjaCAhISFcbiAgLy8gICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBjYWxsYmFja1xuICAvLyAgKiBAcGFyYW0gbmFtZVxuICAvLyAgKiBAcGFyYW0gbWVzc2FnZVxuICAvLyAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAvLyAgKiBAcmV0dXJuIChlcnJvcikgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cbiAgLy8gICovXG4gIC8vIHB1YmxpYyBzdGF0aWMgY2F0Y2goY2FsbGJhY2s/OiAoZXJyb3I6IGFueSkgPT4gYW55LCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBza2lwTm90aWZpY2F0aW9uPzogYm9vbGVhbikge1xuICAvLyAgIGNvbnN0IGYgPSAoZXJyb3I6IGFueSkgPT4ge1xuICAvLyAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xuICAvLyAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IFl1dkVycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pKTtcbiAgLy8gICB9O1xuICAvLyAgIHJldHVybiBmO1xuICAvLyB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIFVzZSBvbiBPYnNlcnZhYmxlLnN1YnNjcmliZSAhISFcbiAgLy8gICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBjYWxsYmFja1xuICAvLyAgKiBAcGFyYW0gbmFtZVxuICAvLyAgKiBAcGFyYW0gbWVzc2FnZVxuICAvLyAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAvLyAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxuICAvLyAgKi9cbiAgLy8gcHVibGljIHN0YXRpYyB0aHJvdyhjYWxsYmFjaz86IChlcnJvcjogYW55KSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XG4gIC8vICAgY29uc3QgZiA9IChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICBjb25zdCBfZXJyb3IgPSBjYWxsYmFjayAmJiBjYWxsYmFjayhlcnJvcik7XG4gIC8vICAgICB0aHJvdyBuZXcgWXV2RXJyb3IoX2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBfZXJyb3IgOiBlcnJvciwgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbik7XG4gIC8vICAgfTtcbiAgLy8gICByZXR1cm4gZjtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5zdWJzY3JpYmUgb25seSBpZiB5b3Ugd2FudCB0byBza2lwIG5vdGlmaWNhdGlvbiAvIHRvYXN0ISEhXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBjYWxsYmFja1xuICAvLyAgKiBAcGFyYW0gbmFtZVxuICAvLyAgKiBAcGFyYW0gbWVzc2FnZVxuICAvLyAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAvLyAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxuICAvLyAgKi9cbiAgLy8gcHVibGljIHN0YXRpYyBsb2dFcnJvcihjYWxsYmFjaz86IChlcnJvcjogYW55KSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24gPSB0cnVlKSB7XG4gIC8vICAgcmV0dXJuIFV0aWxzLnRocm93KGNhbGxiYWNrLCBuYW1lLCBtZXNzYWdlLCBza2lwTm90aWZpY2F0aW9uKTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBDaGVja3MgaWYgZWxlbWVudCBpcyB2aXNpYmxlXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBlbGVtXG4gIC8vICAqIEByZXR1cm4gYm9vbGVhblxuICAvLyAgKi9cbiAgLy8gcHVibGljIHN0YXRpYyBpc1Zpc2libGUoZWxlbTogYW55KTogYm9vbGVhbiB7XG4gIC8vICAgcmV0dXJuICEhKGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCk7XG4gIC8vIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEJhc2VIcmVmKHJlbW92ZVRyYWlsaW5nU2xhc2g/OiBib29sZWFuKSB7XG4gICAgY29uc3QgYmFzZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Jhc2UnKVswXTtcbiAgICBjb25zdCBiYXNlSHJlZiA9IGJhc2VFbCA/IGJhc2VFbC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gYmFzZUhyZWYgPyAocmVtb3ZlVHJhaWxpbmdTbGFzaCA/IGJhc2VIcmVmLnN1YnN0cigwLCBiYXNlSHJlZi5sZW5ndGggLSAxKSA6IGJhc2VIcmVmKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydW5jYXRlIGEgc3RyaW5nIChmaXJzdCBhcmd1bWVudCkgaWYgaXQgaXMgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aCAoc2Vjb25kIGFyZ3VtZW50KS5cbiAgICogUmV0dXJuIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggYSAuLi4gZW5kaW5nIG9yIHdoYXRzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIHN0clxuICAgKiBAcGFyYW0gbnVtYmVyIG51bVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVN0cmluZyhzdHI6IHN0cmluZywgbnVtOiBudW1iZXIsIGVuZGluZyA9ICcuLi4nKSB7XG4gICAgaWYgKHN0ci5sZW5ndGggPiBudW0pIHtcbiAgICAgIGlmIChudW0gPiAzKSB7XG4gICAgICAgIG51bSAtPSAzO1xuICAgICAgfVxuICAgICAgc3RyID0gYCR7c3RyLnN1YnN0cmluZygwLCBudW0pfSR7ZW5kaW5nfWA7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBUaW1lWm9uZSBPZmZzZXN0IGFzIG1pbnV0ZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0byBkYXRlIHdpdGggeXl5eS1tbS1kZCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdHJhbnNmb3JtRGF0ZSh2OiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdiAmJiBuZXcgRGF0ZShuZXcgRGF0ZSh2KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSh2KS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNFZGdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKCdFZGdlJywgJ2knKS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJ2ZpcmVmb3gnLCAnaScpLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKCdeKCg/IWNocm9tZXxhbmRyb2lkfGNyaW9zfGZ4aW9zKS4pKnNhZmFyaScsICdpJykudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNFbXB0eShvYmo6IGFueSkge1xuICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT09ICcnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBpc05hTihvYmopO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicgPyBmYWxzZSA6ICFPYmplY3Qua2V5cyhvYmopLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNFbXB0eU9yRmFsc2UodmFsOiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gIXZhbCA6IFV0aWxzLmlzRW1wdHkodmFsKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZXNjYXBlSHRtbChzdHI6IHN0cmluZykge1xuICAgIHN0ciA9IHN0ciA/IHN0ciA6ICcnO1xuICAgIGNvbnN0IGVudGl0eU1hcDogYW55ID0ge1xuICAgICAgJyYnOiAnJmFtcDsnLFxuICAgICAgJzwnOiAnJmx0OycsXG4gICAgICAnPic6ICcmZ3Q7JyxcbiAgICAgICdcIic6ICcmcXVvdDsnLFxuICAgICAgXCInXCI6ICcmIzM5OycsXG4gICAgICAnLyc6ICcmI3gyRjsnXG4gICAgfTtcbiAgICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvWyY8PlwiJ1xcL10vZywgKHMpID0+IGVudGl0eU1hcFtzXSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFycmF5VG9PYmplY3Q8VD4oXG4gICAgYXJyOiBhbnlbXSA9IFtdLFxuICAgIGtleVByb3BlcnR5Pzogc3RyaW5nIHwgKChvOiBhbnkpID0+IHN0cmluZyksXG4gICAgdmFsdWVQcm9wZXJ0eT86IHN0cmluZyB8ICgobzogYW55KSA9PiBhbnkpXG4gICk6IHsgW2tleTogc3RyaW5nXTogVCB9IHtcbiAgICBjb25zdCBrZXkgPSB0eXBlb2Yga2V5UHJvcGVydHkgPT09ICdzdHJpbmcnID8gKG86IGFueSkgPT4gb1trZXlQcm9wZXJ0eV0gOiBrZXlQcm9wZXJ0eTtcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWx1ZVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9bdmFsdWVQcm9wZXJ0eV0gOiB2YWx1ZVByb3BlcnR5O1xuICAgIHJldHVybiBhcnIucmVkdWNlKChhY2M6IGFueSwgY3VyLCBpKSA9PiB7XG4gICAgICBhY2Nba2V5ID8ga2V5KGN1cikgOiBpXSA9IHZhbHVlID8gdmFsdWUoY3VyKSA6IGN1cjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgLy8gcHVibGljIHN0YXRpYyBuYXZpZ2F0ZShuZXdUYWI6IGJvb2xlYW4sIHJvdXRlcjogUm91dGVyLCBjb21tYW5kczogYW55W10sIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxhbnk+IHtcbiAgLy8gICBpZiAobmV3VGFiKSB7XG4gIC8vICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4gVXRpbHMub3BlbldpbmRvdyhyb3V0ZXIuc2VyaWFsaXplVXJsKHJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLCBuYXZpZ2F0aW9uRXh0cmFzKSkpKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywgbmF2aWdhdGlvbkV4dHJhcyk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gcHVibGljIHN0YXRpYyBvcGVuV2luZG93KHVybDogc3RyaW5nID0gJycsIHRhcmdldCA9ICdfYmxhbmsnLCBmZWF0dXJlcz86IHN0cmluZyk6IFdpbmRvdyB8IG51bGwge1xuICAvLyAgIHJldHVybiB3aW5kb3cub3Blbih1cmwubWF0Y2gobmV3IFJlZ0V4cCgnXi8uKycpKSA/IHVybC5yZXBsYWNlKG5ldyBSZWdFeHAoJ14vJyksICcnKSA6IHVybCwgdGFyZ2V0LCBmZWF0dXJlcyk7IC8vIHJlbGF0aXZlIHRvIGhvc3RcbiAgLy8gfVxuXG4gIHB1YmxpYyBzdGF0aWMgZG93bmxvYWRCbG9iKGNvbnRlbnQ6IGFueSwgbWltZVR5cGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGJvbSA9IG5ldyBVaW50OEFycmF5KFsweGVmLCAweGJiLCAweGJmXSk7IC8vIEZPUk0gQk9NXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtib20sIGNvbnRlbnRdLCB7IHR5cGU6ICdvY3RldC9zdHJlYW0nIH0pO1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICAgIGEuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICBhLmNsaWNrKCk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXV1dmlzLWNsaWVudC1jb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL3l1dXZpcy1jbGllbnQtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { OAuthStorage } from 'angular-oauth2-oidc';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "angular-oauth2-oidc";
|
|
4
|
-
import * as i2 from "@ngx-translate/core";
|
|
5
|
-
import * as i3 from "./client-core.shared.module";
|
|
6
|
-
export declare function storageFactory(): OAuthStorage;
|
|
7
|
-
/**
|
|
8
|
-
* `YuvClientCoreModule` provides a bunch of services to interact with a yuuvis backend.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
export declare class YuvClientCoreModule {
|
|
13
|
-
/**
|
|
14
|
-
* @ignore
|
|
15
|
-
*/
|
|
16
|
-
constructor(parentModule: YuvClientCoreModule);
|
|
17
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<YuvClientCoreModule, [{ optional: true; skipSelf: true; }]>;
|
|
18
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<YuvClientCoreModule, never, [typeof i1.OAuthModule, typeof i2.TranslateModule], [typeof i3.YuvClientCoreSharedModule]>;
|
|
19
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<YuvClientCoreModule>;
|
|
20
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "@ngx-translate/core";
|
|
3
|
-
/**
|
|
4
|
-
* `YuvClientCoreSharedModule` sets up and re-exports the TranslateModule.
|
|
5
|
-
*/
|
|
6
|
-
export declare class YuvClientCoreSharedModule {
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<YuvClientCoreSharedModule, never>;
|
|
8
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<YuvClientCoreSharedModule, never, never, [typeof i1.TranslateModule]>;
|
|
9
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<YuvClientCoreSharedModule>;
|
|
10
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { OAuthModuleConfig, OAuthService } from 'angular-oauth2-oidc';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { OpenIdConfig } from '../backend/backend.interface';
|
|
4
|
-
import { CoreConfig } from '../config/core-config';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class OidcService {
|
|
7
|
-
private oAuthConfig;
|
|
8
|
-
config: CoreConfig;
|
|
9
|
-
private oauthService;
|
|
10
|
-
constructor(oAuthConfig: OAuthModuleConfig, config: CoreConfig, oauthService: OAuthService);
|
|
11
|
-
initOpenIdConnect(oidc: OpenIdConfig | undefined): Observable<OpenIdConfig | undefined>;
|
|
12
|
-
logout(): void;
|
|
13
|
-
setupCookie(viewer: string, path: string, headers: any): Observable<unknown>;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OidcService, [{ optional: true; }, null, null]>;
|
|
15
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OidcService>;
|
|
16
|
-
}
|