@yuuvis/client-core 2.0.0-beta.0 → 2.0.0-beta.2
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,261 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import { BackendService } from '../backend/backend.service';
|
|
4
|
-
import { BaseObjectTypeField, ContentStreamField } from '../system/system.enum';
|
|
5
|
-
import { Operator } from './search.service.interface';
|
|
6
|
-
import { SystemService } from '../system/system.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class SearchService {
|
|
9
|
-
#backend = inject(BackendService);
|
|
10
|
-
#system = inject(SystemService);
|
|
11
|
-
static { this.DEFAULT_QUERY_SIZE = 50; }
|
|
12
|
-
/**
|
|
13
|
-
* Execute a search query ans transform the result to a SearchResult object
|
|
14
|
-
* @param query The search query
|
|
15
|
-
* @returns Observable of a SearchResult
|
|
16
|
-
*/
|
|
17
|
-
search(query) {
|
|
18
|
-
return this.searchRaw(query).pipe(map((res) => this.toSearchResult(res)));
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Execute a raw search query and return the result as is.
|
|
22
|
-
* @param query The search query
|
|
23
|
-
* @returns Observable of the raw search result
|
|
24
|
-
*/
|
|
25
|
-
searchRaw(query) {
|
|
26
|
-
if (!query.size)
|
|
27
|
-
query.size = SearchService.DEFAULT_QUERY_SIZE;
|
|
28
|
-
return this.#backend.post(`/dms/objects/search`, query);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Search for objects in the dms using CMIS like SQL syntax.
|
|
32
|
-
* @param statement The query statement
|
|
33
|
-
* @param size The number of items to return
|
|
34
|
-
* @returns Observable of a SearchResult
|
|
35
|
-
*/
|
|
36
|
-
searchCmis(statement, size = 50) {
|
|
37
|
-
return this.#backend
|
|
38
|
-
.post('/dms/objects/search', {
|
|
39
|
-
query: {
|
|
40
|
-
statement,
|
|
41
|
-
skipCount: 0,
|
|
42
|
-
maxItems: size,
|
|
43
|
-
handleDeletedDocuments: 'DELETED_DOCUMENTS_EXCLUDE'
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Using API-WEB because it enriches the response with additional information (resolved user names, etc.)
|
|
47
|
-
// ApiBase.core
|
|
48
|
-
)
|
|
49
|
-
.pipe(map((res) => this.toSearchResult(res)));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Fetch aggragations for a given query.
|
|
53
|
-
* @param q The query
|
|
54
|
-
* @param aggregations List of aggregations to be fetched (e.g. `enaio:objectTypeId`
|
|
55
|
-
* to get an aggregation of object types)
|
|
56
|
-
*/
|
|
57
|
-
aggregate(q, aggregations) {
|
|
58
|
-
q.aggs = aggregations;
|
|
59
|
-
return this.searchRaw(q).pipe(map((res) => this.#toAggregateResult(res, aggregations)));
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Map search result from the backend to applications AggregateResult object
|
|
63
|
-
* @param searchResponse The backend response
|
|
64
|
-
* @param aggregations The aggregations to be fetched
|
|
65
|
-
*/
|
|
66
|
-
#toAggregateResult(searchResponse, aggregations) {
|
|
67
|
-
const agg = [];
|
|
68
|
-
if (aggregations) {
|
|
69
|
-
aggregations.forEach((a) => {
|
|
70
|
-
const ag = {
|
|
71
|
-
aggKey: a,
|
|
72
|
-
entries: searchResponse.objects.map((o) => ({
|
|
73
|
-
key: o.properties[a].value,
|
|
74
|
-
count: o.properties['OBJECT_COUNT'].value
|
|
75
|
-
}))
|
|
76
|
-
};
|
|
77
|
-
agg.push(ag);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
totalNumItems: searchResponse.totalNumItems,
|
|
82
|
-
aggregations: agg
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Go to a page of a search result.
|
|
87
|
-
* @param searchResult The search result (that supports pagination)
|
|
88
|
-
* @param page The number of the page to go to
|
|
89
|
-
*/
|
|
90
|
-
getPage(query, page) {
|
|
91
|
-
query.from = (page - 1) * (query.size || SearchService.DEFAULT_QUERY_SIZE);
|
|
92
|
-
return this.search(query);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Map search result from the backend to applications SearchResult object
|
|
96
|
-
* @param searchResponse The backend response
|
|
97
|
-
*/
|
|
98
|
-
toSearchResult(searchResponse) {
|
|
99
|
-
const resultListItems = [];
|
|
100
|
-
const objectTypes = [];
|
|
101
|
-
searchResponse.objects.forEach((o) => {
|
|
102
|
-
const fields = new Map();
|
|
103
|
-
// process properties section of result
|
|
104
|
-
Object.keys(o.properties).forEach((key) => {
|
|
105
|
-
let value = o.properties[key].value;
|
|
106
|
-
if (o.properties[key].clvalue) {
|
|
107
|
-
// table fields will have a clientValue too ...
|
|
108
|
-
value = o.properties[key].clvalue;
|
|
109
|
-
// ... and also may contain values that need to be resolved
|
|
110
|
-
if (o.properties[key].resolvedValues) {
|
|
111
|
-
value.forEach((v) => {
|
|
112
|
-
Object.keys(v).forEach((k) => {
|
|
113
|
-
const resValue = Array.isArray(v[k]) ? v[k].map((i) => o.properties[key].resolvedValues[i]) : o.properties[key].resolvedValues[v[k]];
|
|
114
|
-
if (resValue) {
|
|
115
|
-
v[`${k}_title`] = resValue;
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
fields.set(key, value);
|
|
122
|
-
if (o.properties[key].title) {
|
|
123
|
-
fields.set(key + '_title', o.properties[key].title);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
// process contentStreams section of result if available.
|
|
127
|
-
// Objects that don't have files attached won't have this section
|
|
128
|
-
let content;
|
|
129
|
-
if (o.contentStreams && o.contentStreams.length > 0) {
|
|
130
|
-
// we assume that each result object only has ONE file attached, altough
|
|
131
|
-
// this is an array and there may be more
|
|
132
|
-
const contentStream = o.contentStreams[0];
|
|
133
|
-
// also add contentstream related fields to the result fields
|
|
134
|
-
fields.set(ContentStreamField.LENGTH, contentStream.length);
|
|
135
|
-
fields.set(ContentStreamField.MIME_TYPE, contentStream.mimeType);
|
|
136
|
-
fields.set(ContentStreamField.FILENAME, contentStream.fileName);
|
|
137
|
-
fields.set(ContentStreamField.ID, contentStream.contentStreamId);
|
|
138
|
-
fields.set(ContentStreamField.RANGE, contentStream.contentStreamRange);
|
|
139
|
-
fields.set(ContentStreamField.REPOSITORY_ID, contentStream.repositoryId);
|
|
140
|
-
fields.set(ContentStreamField.DIGEST, contentStream.digest);
|
|
141
|
-
fields.set(ContentStreamField.ARCHIVE_PATH, contentStream.archivePath);
|
|
142
|
-
content = {
|
|
143
|
-
contentStreamId: contentStream.contentStreamId,
|
|
144
|
-
repositoryId: contentStream.repositoryId,
|
|
145
|
-
range: contentStream.range,
|
|
146
|
-
digest: contentStream.digest,
|
|
147
|
-
archivePath: contentStream.archivePath,
|
|
148
|
-
fileName: contentStream.fileName,
|
|
149
|
-
mimeType: contentStream.mimeType,
|
|
150
|
-
size: contentStream.length
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
const objectTypeId = o.properties[BaseObjectTypeField.OBJECT_TYPE_ID] ? o.properties[BaseObjectTypeField.OBJECT_TYPE_ID].value : null;
|
|
154
|
-
if (objectTypes.indexOf(objectTypeId) === -1) {
|
|
155
|
-
objectTypes.push(objectTypeId);
|
|
156
|
-
}
|
|
157
|
-
resultListItems.push({
|
|
158
|
-
objectTypeId,
|
|
159
|
-
content,
|
|
160
|
-
fields,
|
|
161
|
-
permissions: o.permissions
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
const result = {
|
|
165
|
-
hasMoreItems: searchResponse.hasMoreItems,
|
|
166
|
-
totalNumItems: searchResponse.totalNumItems,
|
|
167
|
-
items: resultListItems,
|
|
168
|
-
objectTypes
|
|
169
|
-
};
|
|
170
|
-
return result;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Maps data extracted from a search form to search filters. Every key of the form data object
|
|
174
|
-
* will be mapped to a search filter.
|
|
175
|
-
* @param formData form data
|
|
176
|
-
* @returns Array of search filters
|
|
177
|
-
*/
|
|
178
|
-
formDataToSearchFilter(formData) {
|
|
179
|
-
const isRangeValue = (v) => {
|
|
180
|
-
return typeof v === 'object' && v !== null && 'firstValue' in v && 'operator' in v;
|
|
181
|
-
};
|
|
182
|
-
const filters = [];
|
|
183
|
-
Object.keys(formData).forEach((key) => {
|
|
184
|
-
const value = formData[key];
|
|
185
|
-
if (isRangeValue(value)) {
|
|
186
|
-
const f = this.rangeValueToSearchFilter(value, key);
|
|
187
|
-
if (f)
|
|
188
|
-
filters.push(f);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
filters.push({
|
|
192
|
-
f: key,
|
|
193
|
-
o: Array.isArray(value) ? Operator.IN : Operator.EQUAL,
|
|
194
|
-
v1: value
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
return filters;
|
|
199
|
-
}
|
|
200
|
-
rangeValueToSearchFilter(value, property) {
|
|
201
|
-
return this.#system.getObjectTypeField(property)?.propertyType === 'datetime'
|
|
202
|
-
? this.#dateRangeValueToSearchFilter(value, property)
|
|
203
|
-
: {
|
|
204
|
-
f: property,
|
|
205
|
-
o: value.operator,
|
|
206
|
-
v1: value.firstValue,
|
|
207
|
-
v2: value.secondValue
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
#dateRangeValueToSearchFilter(rv, property) {
|
|
211
|
-
const v1 = rv.firstValue.toISOString();
|
|
212
|
-
const v2 = rv.secondValue ? rv.secondValue.toISOString() : undefined;
|
|
213
|
-
let filter;
|
|
214
|
-
switch (rv.operator) {
|
|
215
|
-
case Operator.EQUAL: {
|
|
216
|
-
filter = {
|
|
217
|
-
f: property,
|
|
218
|
-
o: Operator.INTERVAL_INCLUDE_BOTH,
|
|
219
|
-
v1: v1.split('T')[0] + 'T00:00:00.000',
|
|
220
|
-
v2: v1.split('T')[0] + 'T23:59:59.000'
|
|
221
|
-
};
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
case Operator.GREATER_OR_EQUAL: {
|
|
225
|
-
filter = {
|
|
226
|
-
f: property,
|
|
227
|
-
o: rv.operator,
|
|
228
|
-
v1: v1.split('T')[0] + 'T00:00:00.000'
|
|
229
|
-
};
|
|
230
|
-
break;
|
|
231
|
-
}
|
|
232
|
-
case Operator.LESS_OR_EQUAL: {
|
|
233
|
-
filter = {
|
|
234
|
-
f: property,
|
|
235
|
-
o: rv.operator,
|
|
236
|
-
v1: v1.split('T')[0] + 'T23:59:59.000'
|
|
237
|
-
};
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
case Operator.INTERVAL_INCLUDE_BOTH: {
|
|
241
|
-
filter = {
|
|
242
|
-
f: property,
|
|
243
|
-
o: rv.operator,
|
|
244
|
-
v1: v1.split('T')[0] + 'T00:00:00.000',
|
|
245
|
-
v2: v2.split('T')[0] + 'T23:59:59.000'
|
|
246
|
-
};
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return filter;
|
|
251
|
-
}
|
|
252
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
253
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, providedIn: 'root' }); }
|
|
254
|
-
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, decorators: [{
|
|
256
|
-
type: Injectable,
|
|
257
|
-
args: [{
|
|
258
|
-
providedIn: 'root'
|
|
259
|
-
}]
|
|
260
|
-
}] });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEYsT0FBTyxFQUdMLFFBQVEsRUFPVCxNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLekQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBRXpCLHVCQUFrQixHQUFHLEVBQUUsQUFBTCxDQUFNO0lBRS9COzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQWtCO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDO1FBQy9ELE9B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aUJBQ3ZDLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixNQUFNLEdBQUc7b0JBQ1AsQ0FBQyxFQUFFLFFBQVE7b0JBQ1gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRO29CQUNkLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWU7aUJBQ3ZDLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sR0FBRztvQkFDUCxDQUFDLEVBQUUsUUFBUTtvQkFDWCxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVE7b0JBQ2QsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZTtvQkFDdEMsRUFBRSxFQUFFLEVBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZTtpQkFDeEMsQ0FBQztnQkFDRixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXJRVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFja2VuZFNlcnZpY2UgfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlT2JqZWN0VHlwZUZpZWxkLCBDb250ZW50U3RyZWFtRmllbGQgfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLmVudW0nO1xuaW1wb3J0IHtcbiAgQWdncmVnYXRlUmVzdWx0LFxuICBBZ2dyZWdhdGlvbixcbiAgT3BlcmF0b3IsXG4gIFNlYXJjaEZpbHRlcixcbiAgU2VhcmNoUXVlcnksXG4gIFNlYXJjaFJlc3BvbnNlLFxuICBTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFJlc3VsdENvbnRlbnQsXG4gIFNlYXJjaFJlc3VsdEl0ZW1cbn0gZnJvbSAnLi9zZWFyY2guc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmFuZ2VWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVsL3JhbmdlLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI3N5c3RlbSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcblxuICBzdGF0aWMgREVGQVVMVF9RVUVSWV9TSVpFID0gNTA7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzZWFyY2ggcXVlcnkgYW5zIHRyYW5zZm9ybSB0aGUgcmVzdWx0IHRvIGEgU2VhcmNoUmVzdWx0IG9iamVjdFxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHNlYXJjaCBxdWVyeVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGEgU2VhcmNoUmVzdWx0XG4gICAqL1xuICBzZWFyY2gocXVlcnk6IFNlYXJjaFF1ZXJ5KTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hSYXcocXVlcnkpLnBpcGUobWFwKChyZXMpID0+IHRoaXMudG9TZWFyY2hSZXN1bHQocmVzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSByYXcgc2VhcmNoIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBpcy5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBzZWFyY2ggcXVlcnlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmF3IHNlYXJjaCByZXN1bHRcbiAgICovXG4gIHNlYXJjaFJhdyhxdWVyeTogU2VhcmNoUXVlcnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghcXVlcnkuc2l6ZSkgcXVlcnkuc2l6ZSA9IFNlYXJjaFNlcnZpY2UuREVGQVVMVF9RVUVSWV9TSVpFO1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLnBvc3QoYC9kbXMvb2JqZWN0cy9zZWFyY2hgLCBxdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBvYmplY3RzIGluIHRoZSBkbXMgdXNpbmcgQ01JUyBsaWtlIFNRTCBzeW50YXguXG4gICAqIEBwYXJhbSBzdGF0ZW1lbnQgVGhlIHF1ZXJ5IHN0YXRlbWVudFxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVyblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGEgU2VhcmNoUmVzdWx0XG4gICAqL1xuICBzZWFyY2hDbWlzKHN0YXRlbWVudDogc3RyaW5nLCBzaXplID0gNTApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kXG4gICAgICAucG9zdChcbiAgICAgICAgJy9kbXMvb2JqZWN0cy9zZWFyY2gnLFxuICAgICAgICB7XG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIHN0YXRlbWVudCxcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIG1heEl0ZW1zOiBzaXplLFxuICAgICAgICAgICAgaGFuZGxlRGVsZXRlZERvY3VtZW50czogJ0RFTEVURURfRE9DVU1FTlRTX0VYQ0xVREUnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFVzaW5nIEFQSS1XRUIgYmVjYXVzZSBpdCBlbnJpY2hlcyB0aGUgcmVzcG9uc2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIChyZXNvbHZlZCB1c2VyIG5hbWVzLCBldGMuKVxuICAgICAgICAvLyBBcGlCYXNlLmNvcmVcbiAgICAgIClcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiB0aGlzLnRvU2VhcmNoUmVzdWx0KHJlcyBhcyBTZWFyY2hSZXNwb25zZSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhZ2dyYWdhdGlvbnMgZm9yIGEgZ2l2ZW4gcXVlcnkuXG4gICAqIEBwYXJhbSBxIFRoZSBxdWVyeVxuICAgKiBAcGFyYW0gYWdncmVnYXRpb25zIExpc3Qgb2YgYWdncmVnYXRpb25zIHRvIGJlIGZldGNoZWQgKGUuZy4gYGVuYWlvOm9iamVjdFR5cGVJZGBcbiAgICogdG8gZ2V0IGFuIGFnZ3JlZ2F0aW9uIG9mIG9iamVjdCB0eXBlcylcbiAgICovXG4gIGFnZ3JlZ2F0ZShxOiBTZWFyY2hRdWVyeSwgYWdncmVnYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIHEuYWdncyA9IGFnZ3JlZ2F0aW9ucztcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hSYXcocSkucGlwZShtYXAoKHJlcykgPT4gdGhpcy4jdG9BZ2dyZWdhdGVSZXN1bHQocmVzLCBhZ2dyZWdhdGlvbnMpKSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwIHNlYXJjaCByZXN1bHQgZnJvbSB0aGUgYmFja2VuZCB0byBhcHBsaWNhdGlvbnMgQWdncmVnYXRlUmVzdWx0IG9iamVjdFxuICAgKiBAcGFyYW0gc2VhcmNoUmVzcG9uc2UgVGhlIGJhY2tlbmQgcmVzcG9uc2VcbiAgICogQHBhcmFtIGFnZ3JlZ2F0aW9ucyBUaGUgYWdncmVnYXRpb25zIHRvIGJlIGZldGNoZWRcbiAgICovXG4gICN0b0FnZ3JlZ2F0ZVJlc3VsdChzZWFyY2hSZXNwb25zZTogYW55LCBhZ2dyZWdhdGlvbnM/OiBzdHJpbmdbXSk6IEFnZ3JlZ2F0ZVJlc3VsdCB7XG4gICAgY29uc3QgYWdnOiBBZ2dyZWdhdGlvbltdID0gW107XG4gICAgaWYgKGFnZ3JlZ2F0aW9ucykge1xuICAgICAgYWdncmVnYXRpb25zLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgY29uc3QgYWc6IEFnZ3JlZ2F0aW9uID0ge1xuICAgICAgICAgIGFnZ0tleTogYSxcbiAgICAgICAgICBlbnRyaWVzOiBzZWFyY2hSZXNwb25zZS5vYmplY3RzLm1hcCgobzogYW55KSA9PiAoe1xuICAgICAgICAgICAga2V5OiBvLnByb3BlcnRpZXNbYV0udmFsdWUsXG4gICAgICAgICAgICBjb3VudDogby5wcm9wZXJ0aWVzWydPQkpFQ1RfQ09VTlQnXS52YWx1ZVxuICAgICAgICAgIH0pKVxuICAgICAgICB9O1xuICAgICAgICBhZ2cucHVzaChhZyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsTnVtSXRlbXM6IHNlYXJjaFJlc3BvbnNlLnRvdGFsTnVtSXRlbXMsXG4gICAgICBhZ2dyZWdhdGlvbnM6IGFnZ1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR28gdG8gYSBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdC5cbiAgICogQHBhcmFtIHNlYXJjaFJlc3VsdCBUaGUgc2VhcmNoIHJlc3VsdCAodGhhdCBzdXBwb3J0cyBwYWdpbmF0aW9uKVxuICAgKiBAcGFyYW0gcGFnZSBUaGUgbnVtYmVyIG9mIHRoZSBwYWdlIHRvIGdvIHRvXG4gICAqL1xuICBnZXRQYWdlKHF1ZXJ5OiBTZWFyY2hRdWVyeSwgcGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICBxdWVyeS5mcm9tID0gKHBhZ2UgLSAxKSAqIChxdWVyeS5zaXplIHx8IFNlYXJjaFNlcnZpY2UuREVGQVVMVF9RVUVSWV9TSVpFKTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2gocXVlcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcCBzZWFyY2ggcmVzdWx0IGZyb20gdGhlIGJhY2tlbmQgdG8gYXBwbGljYXRpb25zIFNlYXJjaFJlc3VsdCBvYmplY3RcbiAgICogQHBhcmFtIHNlYXJjaFJlc3BvbnNlIFRoZSBiYWNrZW5kIHJlc3BvbnNlXG4gICAqL1xuICB0b1NlYXJjaFJlc3VsdChzZWFyY2hSZXNwb25zZTogU2VhcmNoUmVzcG9uc2UpOiBTZWFyY2hSZXN1bHQge1xuICAgIGNvbnN0IHJlc3VsdExpc3RJdGVtczogU2VhcmNoUmVzdWx0SXRlbVtdID0gW107XG4gICAgY29uc3Qgb2JqZWN0VHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBzZWFyY2hSZXNwb25zZS5vYmplY3RzLmZvckVhY2goKG86IGFueSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRzID0gbmV3IE1hcCgpO1xuICAgICAgLy8gcHJvY2VzcyBwcm9wZXJ0aWVzIHNlY3Rpb24gb2YgcmVzdWx0XG4gICAgICBPYmplY3Qua2V5cyhvLnByb3BlcnRpZXMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG8ucHJvcGVydGllc1trZXldLnZhbHVlO1xuICAgICAgICBpZiAoby5wcm9wZXJ0aWVzW2tleV0uY2x2YWx1ZSkge1xuICAgICAgICAgIC8vIHRhYmxlIGZpZWxkcyB3aWxsIGhhdmUgYSBjbGllbnRWYWx1ZSB0b28gLi4uXG4gICAgICAgICAgdmFsdWUgPSBvLnByb3BlcnRpZXNba2V5XS5jbHZhbHVlO1xuICAgICAgICAgIC8vIC4uLiBhbmQgYWxzbyBtYXkgY29udGFpbiB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHJlc29sdmVkXG4gICAgICAgICAgaWYgKG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXModikuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc1ZhbHVlID0gQXJyYXkuaXNBcnJheSh2W2tdKSA/IHZba10ubWFwKChpOiBhbnkpID0+IG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzW2ldKSA6IG8ucHJvcGVydGllc1trZXldLnJlc29sdmVkVmFsdWVzW3Zba11dO1xuICAgICAgICAgICAgICAgIGlmIChyZXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdltgJHtrfV90aXRsZWBdID0gcmVzVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChvLnByb3BlcnRpZXNba2V5XS50aXRsZSkge1xuICAgICAgICAgIGZpZWxkcy5zZXQoa2V5ICsgJ190aXRsZScsIG8ucHJvcGVydGllc1trZXldLnRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIHByb2Nlc3MgY29udGVudFN0cmVhbXMgc2VjdGlvbiBvZiByZXN1bHQgaWYgYXZhaWxhYmxlLlxuICAgICAgLy8gT2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgZmlsZXMgYXR0YWNoZWQgd29uJ3QgaGF2ZSB0aGlzIHNlY3Rpb25cbiAgICAgIGxldCBjb250ZW50OiBTZWFyY2hSZXN1bHRDb250ZW50IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG8uY29udGVudFN0cmVhbXMgJiYgby5jb250ZW50U3RyZWFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHdlIGFzc3VtZSB0aGF0IGVhY2ggcmVzdWx0IG9iamVjdCBvbmx5IGhhcyBPTkUgZmlsZSBhdHRhY2hlZCwgYWx0b3VnaFxuICAgICAgICAvLyB0aGlzIGlzIGFuIGFycmF5IGFuZCB0aGVyZSBtYXkgYmUgbW9yZVxuICAgICAgICBjb25zdCBjb250ZW50U3RyZWFtID0gby5jb250ZW50U3RyZWFtc1swXTtcbiAgICAgICAgLy8gYWxzbyBhZGQgY29udGVudHN0cmVhbSByZWxhdGVkIGZpZWxkcyB0byB0aGUgcmVzdWx0IGZpZWxkc1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5MRU5HVEgsIGNvbnRlbnRTdHJlYW0ubGVuZ3RoKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuTUlNRV9UWVBFLCBjb250ZW50U3RyZWFtLm1pbWVUeXBlKTtcbiAgICAgICAgZmllbGRzLnNldChDb250ZW50U3RyZWFtRmllbGQuRklMRU5BTUUsIGNvbnRlbnRTdHJlYW0uZmlsZU5hbWUpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5JRCwgY29udGVudFN0cmVhbS5jb250ZW50U3RyZWFtSWQpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5SQU5HRSwgY29udGVudFN0cmVhbS5jb250ZW50U3RyZWFtUmFuZ2UpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5SRVBPU0lUT1JZX0lELCBjb250ZW50U3RyZWFtLnJlcG9zaXRvcnlJZCk7XG4gICAgICAgIGZpZWxkcy5zZXQoQ29udGVudFN0cmVhbUZpZWxkLkRJR0VTVCwgY29udGVudFN0cmVhbS5kaWdlc3QpO1xuICAgICAgICBmaWVsZHMuc2V0KENvbnRlbnRTdHJlYW1GaWVsZC5BUkNISVZFX1BBVEgsIGNvbnRlbnRTdHJlYW0uYXJjaGl2ZVBhdGgpO1xuXG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgY29udGVudFN0cmVhbUlkOiBjb250ZW50U3RyZWFtLmNvbnRlbnRTdHJlYW1JZCxcbiAgICAgICAgICByZXBvc2l0b3J5SWQ6IGNvbnRlbnRTdHJlYW0ucmVwb3NpdG9yeUlkLFxuICAgICAgICAgIHJhbmdlOiBjb250ZW50U3RyZWFtLnJhbmdlLFxuICAgICAgICAgIGRpZ2VzdDogY29udGVudFN0cmVhbS5kaWdlc3QsXG4gICAgICAgICAgYXJjaGl2ZVBhdGg6IGNvbnRlbnRTdHJlYW0uYXJjaGl2ZVBhdGgsXG4gICAgICAgICAgZmlsZU5hbWU6IGNvbnRlbnRTdHJlYW0uZmlsZU5hbWUsXG4gICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnRTdHJlYW0ubWltZVR5cGUsXG4gICAgICAgICAgc2l6ZTogY29udGVudFN0cmVhbS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JqZWN0VHlwZUlkID0gby5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSURdID8gby5wcm9wZXJ0aWVzW0Jhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSURdLnZhbHVlIDogbnVsbDtcbiAgICAgIGlmIChvYmplY3RUeXBlcy5pbmRleE9mKG9iamVjdFR5cGVJZCkgPT09IC0xKSB7XG4gICAgICAgIG9iamVjdFR5cGVzLnB1c2gob2JqZWN0VHlwZUlkKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0TGlzdEl0ZW1zLnB1c2goe1xuICAgICAgICBvYmplY3RUeXBlSWQsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgcGVybWlzc2lvbnM6IG8ucGVybWlzc2lvbnNcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0OiBTZWFyY2hSZXN1bHQgPSB7XG4gICAgICBoYXNNb3JlSXRlbXM6IHNlYXJjaFJlc3BvbnNlLmhhc01vcmVJdGVtcyxcbiAgICAgIHRvdGFsTnVtSXRlbXM6IHNlYXJjaFJlc3BvbnNlLnRvdGFsTnVtSXRlbXMsXG4gICAgICBpdGVtczogcmVzdWx0TGlzdEl0ZW1zLFxuICAgICAgb2JqZWN0VHlwZXNcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBkYXRhIGV4dHJhY3RlZCBmcm9tIGEgc2VhcmNoIGZvcm0gdG8gc2VhcmNoIGZpbHRlcnMuIEV2ZXJ5IGtleSBvZiB0aGUgZm9ybSBkYXRhIG9iamVjdFxuICAgKiB3aWxsIGJlIG1hcHBlZCB0byBhIHNlYXJjaCBmaWx0ZXIuXG4gICAqIEBwYXJhbSBmb3JtRGF0YSBmb3JtIGRhdGFcbiAgICogQHJldHVybnMgQXJyYXkgb2Ygc2VhcmNoIGZpbHRlcnNcbiAgICovXG4gIGZvcm1EYXRhVG9TZWFyY2hGaWx0ZXIoZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogU2VhcmNoRmlsdGVyW10ge1xuICAgIGNvbnN0IGlzUmFuZ2VWYWx1ZSA9ICh2OiB1bmtub3duKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwgJiYgJ2ZpcnN0VmFsdWUnIGluIHYgJiYgJ29wZXJhdG9yJyBpbiB2O1xuICAgIH07XG5cbiAgICBjb25zdCBmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGZvcm1EYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybURhdGFba2V5XTtcbiAgICAgIGlmIChpc1JhbmdlVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLnJhbmdlVmFsdWVUb1NlYXJjaEZpbHRlcih2YWx1ZSBhcyBSYW5nZVZhbHVlLCBrZXkpO1xuICAgICAgICBpZiAoZikgZmlsdGVycy5wdXNoKGYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmOiBrZXksXG4gICAgICAgICAgbzogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBPcGVyYXRvci5JTiA6IE9wZXJhdG9yLkVRVUFMLFxuICAgICAgICAgIHYxOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIHJhbmdlVmFsdWVUb1NlYXJjaEZpbHRlcih2YWx1ZTogUmFuZ2VWYWx1ZSwgcHJvcGVydHk6IHN0cmluZyk6IFNlYXJjaEZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI3N5c3RlbS5nZXRPYmplY3RUeXBlRmllbGQocHJvcGVydHkpPy5wcm9wZXJ0eVR5cGUgPT09ICdkYXRldGltZSdcbiAgICAgID8gdGhpcy4jZGF0ZVJhbmdlVmFsdWVUb1NlYXJjaEZpbHRlcih2YWx1ZSwgcHJvcGVydHkpXG4gICAgICA6IHtcbiAgICAgICAgICBmOiBwcm9wZXJ0eSxcbiAgICAgICAgICBvOiB2YWx1ZS5vcGVyYXRvcixcbiAgICAgICAgICB2MTogdmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICB2MjogdmFsdWUuc2Vjb25kVmFsdWVcbiAgICAgICAgfTtcbiAgfVxuXG4gICNkYXRlUmFuZ2VWYWx1ZVRvU2VhcmNoRmlsdGVyKHJ2OiBSYW5nZVZhbHVlLCBwcm9wZXJ0eTogc3RyaW5nKTogU2VhcmNoRmlsdGVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2MSA9IChydi5maXJzdFZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgdjIgPSBydi5zZWNvbmRWYWx1ZSA/IChydi5zZWNvbmRWYWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICAgIGxldCBmaWx0ZXI7XG4gICAgc3dpdGNoIChydi5vcGVyYXRvcikge1xuICAgICAgY2FzZSBPcGVyYXRvci5FUVVBTDoge1xuICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgZjogcHJvcGVydHksXG4gICAgICAgICAgbzogT3BlcmF0b3IuSU5URVJWQUxfSU5DTFVERV9CT1RILFxuICAgICAgICAgIHYxOiB2MS5zcGxpdCgnVCcpWzBdICsgJ1QwMDowMDowMC4wMDAnLFxuICAgICAgICAgIHYyOiB2MS5zcGxpdCgnVCcpWzBdICsgJ1QyMzo1OTo1OS4wMDAnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBPcGVyYXRvci5HUkVBVEVSX09SX0VRVUFMOiB7XG4gICAgICAgIGZpbHRlciA9IHtcbiAgICAgICAgICBmOiBwcm9wZXJ0eSxcbiAgICAgICAgICBvOiBydi5vcGVyYXRvcixcbiAgICAgICAgICB2MTogdjEuc3BsaXQoJ1QnKVswXSArICdUMDA6MDA6MDAuMDAwJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuTEVTU19PUl9FUVVBTDoge1xuICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgZjogcHJvcGVydHksXG4gICAgICAgICAgbzogcnYub3BlcmF0b3IsXG4gICAgICAgICAgdjE6IHYxLnNwbGl0KCdUJylbMF0gKyAnVDIzOjU5OjU5LjAwMCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE9wZXJhdG9yLklOVEVSVkFMX0lOQ0xVREVfQk9USDoge1xuICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgZjogcHJvcGVydHksXG4gICAgICAgICAgbzogcnYub3BlcmF0b3IsXG4gICAgICAgICAgdjE6IHYxLnNwbGl0KCdUJylbMF0gKyAnVDAwOjAwOjAwLjAwMCcsXG4gICAgICAgICAgdjI6IHYyIS5zcGxpdCgnVCcpWzBdICsgJ1QyMzo1OTo1OS4wMDAnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG59XG4iXX0=
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { Operator } from './search.service.interface';
|
|
2
|
-
export class SearchUtils {
|
|
3
|
-
static { this.dateRanges = ['today', 'yesterday', 'thisWeek', 'lastWeek', 'thisMonth', 'lastMonth', 'thisYear', 'lastYear']; }
|
|
4
|
-
static { this.filesizeRanges = ['small', 'medium', 'large', 'verylarge']; }
|
|
5
|
-
static dateRangeStartEnd(dateRange) {
|
|
6
|
-
let start;
|
|
7
|
-
let end;
|
|
8
|
-
switch (dateRange) {
|
|
9
|
-
case 'today': {
|
|
10
|
-
start = new Date();
|
|
11
|
-
end = new Date();
|
|
12
|
-
break;
|
|
13
|
-
}
|
|
14
|
-
case 'yesterday': {
|
|
15
|
-
const yesterday = new Date();
|
|
16
|
-
yesterday.setDate(yesterday.getDate() - 1);
|
|
17
|
-
start = yesterday;
|
|
18
|
-
end = yesterday;
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
case 'thisWeek': {
|
|
22
|
-
const firstDay = new Date();
|
|
23
|
-
firstDay.setDate(firstDay.getDate() - firstDay.getDay());
|
|
24
|
-
start = firstDay;
|
|
25
|
-
end = new Date();
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
case 'lastWeek': {
|
|
29
|
-
const firstDay = new Date();
|
|
30
|
-
firstDay.setDate(firstDay.getDate() - firstDay.getDay() - 7);
|
|
31
|
-
const lastDay = new Date();
|
|
32
|
-
lastDay.setDate(lastDay.getDate() - lastDay.getDay() - 1);
|
|
33
|
-
start = firstDay;
|
|
34
|
-
end = lastDay;
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
case 'thisMonth': {
|
|
38
|
-
const firstDay = new Date();
|
|
39
|
-
firstDay.setDate(1);
|
|
40
|
-
start = firstDay;
|
|
41
|
-
end = new Date();
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case 'lastMonth': {
|
|
45
|
-
const firstDay = new Date();
|
|
46
|
-
firstDay.setDate(1);
|
|
47
|
-
firstDay.setMonth(firstDay.getMonth() - 1);
|
|
48
|
-
const lastDay = new Date();
|
|
49
|
-
lastDay.setDate(0);
|
|
50
|
-
start = firstDay;
|
|
51
|
-
end = lastDay;
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
case 'thisYear': {
|
|
55
|
-
const firstDay = new Date();
|
|
56
|
-
firstDay.setMonth(0);
|
|
57
|
-
firstDay.setDate(1);
|
|
58
|
-
start = firstDay;
|
|
59
|
-
end = new Date();
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case 'lastYear': {
|
|
63
|
-
const firstDay = new Date();
|
|
64
|
-
firstDay.setFullYear(firstDay.getFullYear() - 1);
|
|
65
|
-
firstDay.setMonth(0);
|
|
66
|
-
firstDay.setDate(1);
|
|
67
|
-
const lastDay = new Date();
|
|
68
|
-
lastDay.setFullYear(lastDay.getFullYear() - 1);
|
|
69
|
-
lastDay.setMonth(11);
|
|
70
|
-
lastDay.setDate(31);
|
|
71
|
-
start = firstDay;
|
|
72
|
-
end = lastDay;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return { start, end };
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Maps a date range filter to a date range value like 'thisWeek', 'lastMonth', etc.
|
|
80
|
-
* @param rangeValue the range value
|
|
81
|
-
* @returns the date range (eg. 'thisWeek', 'lastMonth', etc.)
|
|
82
|
-
*/
|
|
83
|
-
static getMatchingDateRange(rangeValue) {
|
|
84
|
-
return SearchUtils.dateRanges.find((dateRange) => {
|
|
85
|
-
const { start, end } = SearchUtils.dateRangeStartEnd(dateRange);
|
|
86
|
-
return (rangeValue.firstValue === start.toISOString().split('T')[0] + 'T00:00:00.000' &&
|
|
87
|
-
rangeValue.secondValue === end.toISOString().split('T')[0] + 'T23:59:59.000');
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
// Files size ranges
|
|
91
|
-
static getMatchingFilesizeRange(rangeValue) {
|
|
92
|
-
let filesizeRange = undefined;
|
|
93
|
-
if (rangeValue.operator === Operator.INTERVAL_INCLUDE_BOTH) {
|
|
94
|
-
if (rangeValue.firstValue === 1024 * 1024 && rangeValue.secondValue === 1024 * 1024 * 10)
|
|
95
|
-
filesizeRange = 'medium';
|
|
96
|
-
else if (rangeValue.firstValue === 1024 * 1024 * 10 && rangeValue.secondValue === 1024 * 1024 * 100)
|
|
97
|
-
filesizeRange = 'large';
|
|
98
|
-
}
|
|
99
|
-
else if (rangeValue.operator === Operator.LESS_THAN) {
|
|
100
|
-
if (rangeValue.firstValue === 1024 * 1024)
|
|
101
|
-
filesizeRange = 'small';
|
|
102
|
-
}
|
|
103
|
-
else if (rangeValue.operator === Operator.GREATER_THAN) {
|
|
104
|
-
if (rangeValue.firstValue === 1024 * 1024 * 100)
|
|
105
|
-
filesizeRange = 'verylarge';
|
|
106
|
-
}
|
|
107
|
-
return filesizeRange;
|
|
108
|
-
}
|
|
109
|
-
static filesizeRangeToRangeValue(filesizeRange) {
|
|
110
|
-
let rv = undefined;
|
|
111
|
-
switch (filesizeRange) {
|
|
112
|
-
case 'small':
|
|
113
|
-
rv = {
|
|
114
|
-
operator: Operator.LESS_THAN,
|
|
115
|
-
firstValue: 1024 * 1024
|
|
116
|
-
};
|
|
117
|
-
break;
|
|
118
|
-
case 'medium':
|
|
119
|
-
rv = {
|
|
120
|
-
operator: Operator.INTERVAL_INCLUDE_BOTH,
|
|
121
|
-
firstValue: 1024 * 1024,
|
|
122
|
-
secondValue: 1024 * 1024 * 10
|
|
123
|
-
};
|
|
124
|
-
break;
|
|
125
|
-
case 'large':
|
|
126
|
-
rv = {
|
|
127
|
-
operator: Operator.INTERVAL_INCLUDE_BOTH,
|
|
128
|
-
firstValue: 1024 * 1024 * 10,
|
|
129
|
-
secondValue: 1024 * 1024 * 100
|
|
130
|
-
};
|
|
131
|
-
break;
|
|
132
|
-
case 'verylarge':
|
|
133
|
-
rv = {
|
|
134
|
-
operator: Operator.GREATER_THAN,
|
|
135
|
-
firstValue: 1024 * 1024 * 100
|
|
136
|
-
};
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
return rv;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRixNQUFNLE9BQU8sV0FBVzthQUNmLGVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUM5RyxtQkFBYyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFbEUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQW9CO1FBQzNDLElBQUksS0FBVyxDQUFDO1FBQ2hCLElBQUksR0FBUyxDQUFDO1FBRWQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTNDLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ2xCLEdBQUcsR0FBRyxTQUFTLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFFekQsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFMUQsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsR0FBRyxHQUFHLE9BQU8sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFbkIsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsR0FBRyxHQUFHLE9BQU8sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXBCLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ2pCLEdBQUcsR0FBRyxPQUFPLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFzQjtRQUNoRCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0MsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBc0IsQ0FBQyxDQUFDO1lBQzdFLE9BQU8sQ0FDTCxVQUFVLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZTtnQkFDN0UsVUFBVSxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FDN0UsQ0FBQztRQUNKLENBQUMsQ0FBYyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFVBQXNCO1FBQ3BELElBQUksYUFBYSxHQUE4QixTQUFTLENBQUM7UUFDekQsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNELElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUFFLGFBQWEsR0FBRyxRQUFRLENBQUM7aUJBQzlHLElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUMsV0FBVyxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRztnQkFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQy9ILENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RELElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLEdBQUcsSUFBSTtnQkFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3JFLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pELElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUc7Z0JBQUUsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxhQUE0QjtRQUMzRCxJQUFJLEVBQUUsR0FBMkIsU0FBUyxDQUFDO1FBQzNDLFFBQVEsYUFBYSxFQUFFLENBQUM7WUFDdEIsS0FBSyxPQUFPO2dCQUNWLEVBQUUsR0FBRztvQkFDSCxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVM7b0JBQzVCLFVBQVUsRUFBRSxJQUFJLEdBQUcsSUFBSTtpQkFDeEIsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLEVBQUUsR0FBRztvQkFDSCxRQUFRLEVBQUUsUUFBUSxDQUFDLHFCQUFxQjtvQkFDeEMsVUFBVSxFQUFFLElBQUksR0FBRyxJQUFJO29CQUN2QixXQUFXLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO2lCQUM5QixDQUFDO2dCQUNGLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsRUFBRSxHQUFHO29CQUNILFFBQVEsRUFBRSxRQUFRLENBQUMscUJBQXFCO29CQUN4QyxVQUFVLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO29CQUM1QixXQUFXLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHO2lCQUMvQixDQUFDO2dCQUNGLE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsRUFBRSxHQUFHO29CQUNILFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWTtvQkFDL0IsVUFBVSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRztpQkFDOUIsQ0FBQztnQkFDRixNQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlLCBGaWxlc2l6ZVJhbmdlLCBPcGVyYXRvciB9IGZyb20gJy4vc2VhcmNoLnNlcnZpY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFNlYXJjaFV0aWxzIHtcbiAgc3RhdGljIGRhdGVSYW5nZXMgPSBbJ3RvZGF5JywgJ3llc3RlcmRheScsICd0aGlzV2VlaycsICdsYXN0V2VlaycsICd0aGlzTW9udGgnLCAnbGFzdE1vbnRoJywgJ3RoaXNZZWFyJywgJ2xhc3RZZWFyJ107XG4gIHN0YXRpYyBmaWxlc2l6ZVJhbmdlcyA9IFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJywgJ3ZlcnlsYXJnZSddO1xuXG4gIHN0YXRpYyBkYXRlUmFuZ2VTdGFydEVuZChkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IHsgc3RhcnQ6IERhdGU7IGVuZDogRGF0ZSB9IHtcbiAgICBsZXQgc3RhcnQ6IERhdGU7XG4gICAgbGV0IGVuZDogRGF0ZTtcblxuICAgIHN3aXRjaCAoZGF0ZVJhbmdlKSB7XG4gICAgICBjYXNlICd0b2RheSc6IHtcbiAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llc3RlcmRheSc6IHtcbiAgICAgICAgY29uc3QgeWVzdGVyZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpO1xuXG4gICAgICAgIHN0YXJ0ID0geWVzdGVyZGF5O1xuICAgICAgICBlbmQgPSB5ZXN0ZXJkYXk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndGhpc1dlZWsnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZShmaXJzdERheS5nZXREYXRlKCkgLSBmaXJzdERheS5nZXREYXkoKSk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbmV3IERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0V2Vlayc6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXREYXRlKGZpcnN0RGF5LmdldERhdGUoKSAtIGZpcnN0RGF5LmdldERheSgpIC0gNyk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldERhdGUobGFzdERheS5nZXREYXRlKCkgLSBsYXN0RGF5LmdldERheSgpIC0gMSk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbGFzdERheTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzTW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZSgxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3RNb250aCc6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXREYXRlKDEpO1xuICAgICAgICBmaXJzdERheS5zZXRNb250aChmaXJzdERheS5nZXRNb250aCgpIC0gMSk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldERhdGUoMCk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbGFzdERheTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzWWVhcic6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXRNb250aCgwKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZSgxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3RZZWFyJzoge1xuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGZpcnN0RGF5LnNldEZ1bGxZZWFyKGZpcnN0RGF5LmdldEZ1bGxZZWFyKCkgLSAxKTtcbiAgICAgICAgZmlyc3REYXkuc2V0TW9udGgoMCk7XG4gICAgICAgIGZpcnN0RGF5LnNldERhdGUoMSk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldEZ1bGxZZWFyKGxhc3REYXkuZ2V0RnVsbFllYXIoKSAtIDEpO1xuICAgICAgICBsYXN0RGF5LnNldE1vbnRoKDExKTtcbiAgICAgICAgbGFzdERheS5zZXREYXRlKDMxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBsYXN0RGF5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgc3RhcnQsIGVuZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBkYXRlIHJhbmdlIGZpbHRlciB0byBhIGRhdGUgcmFuZ2UgdmFsdWUgbGlrZSAndGhpc1dlZWsnLCAnbGFzdE1vbnRoJywgZXRjLlxuICAgKiBAcGFyYW0gcmFuZ2VWYWx1ZSB0aGUgcmFuZ2UgdmFsdWVcbiAgICogQHJldHVybnMgdGhlIGRhdGUgcmFuZ2UgKGVnLiAndGhpc1dlZWsnLCAnbGFzdE1vbnRoJywgZXRjLilcbiAgICovXG4gIHN0YXRpYyBnZXRNYXRjaGluZ0RhdGVSYW5nZShyYW5nZVZhbHVlOiBSYW5nZVZhbHVlKTogRGF0ZVJhbmdlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlcy5maW5kKChkYXRlUmFuZ2UpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlU3RhcnRFbmQoZGF0ZVJhbmdlIGFzIERhdGVSYW5nZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICByYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IHN0YXJ0LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSArICdUMDA6MDA6MDAuMDAwJyAmJlxuICAgICAgICByYW5nZVZhbHVlLnNlY29uZFZhbHVlID09PSBlbmQudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdICsgJ1QyMzo1OTo1OS4wMDAnXG4gICAgICApO1xuICAgIH0pIGFzIERhdGVSYW5nZTtcbiAgfVxuXG4gIC8vIEZpbGVzIHNpemUgcmFuZ2VzXG4gIHN0YXRpYyBnZXRNYXRjaGluZ0ZpbGVzaXplUmFuZ2UocmFuZ2VWYWx1ZTogUmFuZ2VWYWx1ZSk6IEZpbGVzaXplUmFuZ2UgfCB1bmRlZmluZWQge1xuICAgIGxldCBmaWxlc2l6ZVJhbmdlOiBGaWxlc2l6ZVJhbmdlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChyYW5nZVZhbHVlLm9wZXJhdG9yID09PSBPcGVyYXRvci5JTlRFUlZBTF9JTkNMVURFX0JPVEgpIHtcbiAgICAgIGlmIChyYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IDEwMjQgKiAxMDI0ICYmIHJhbmdlVmFsdWUuc2Vjb25kVmFsdWUgPT09IDEwMjQgKiAxMDI0ICogMTApIGZpbGVzaXplUmFuZ2UgPSAnbWVkaXVtJztcbiAgICAgIGVsc2UgaWYgKHJhbmdlVmFsdWUuZmlyc3RWYWx1ZSA9PT0gMTAyNCAqIDEwMjQgKiAxMCAmJiByYW5nZVZhbHVlLnNlY29uZFZhbHVlID09PSAxMDI0ICogMTAyNCAqIDEwMCkgZmlsZXNpemVSYW5nZSA9ICdsYXJnZSc7XG4gICAgfSBlbHNlIGlmIChyYW5nZVZhbHVlLm9wZXJhdG9yID09PSBPcGVyYXRvci5MRVNTX1RIQU4pIHtcbiAgICAgIGlmIChyYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IDEwMjQgKiAxMDI0KSBmaWxlc2l6ZVJhbmdlID0gJ3NtYWxsJztcbiAgICB9IGVsc2UgaWYgKHJhbmdlVmFsdWUub3BlcmF0b3IgPT09IE9wZXJhdG9yLkdSRUFURVJfVEhBTikge1xuICAgICAgaWYgKHJhbmdlVmFsdWUuZmlyc3RWYWx1ZSA9PT0gMTAyNCAqIDEwMjQgKiAxMDApIGZpbGVzaXplUmFuZ2UgPSAndmVyeWxhcmdlJztcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVzaXplUmFuZ2U7XG4gIH1cblxuICBzdGF0aWMgZmlsZXNpemVSYW5nZVRvUmFuZ2VWYWx1ZShmaWxlc2l6ZVJhbmdlOiBGaWxlc2l6ZVJhbmdlKTogUmFuZ2VWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJ2OiBSYW5nZVZhbHVlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAoZmlsZXNpemVSYW5nZSkge1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBydiA9IHtcbiAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuTEVTU19USEFOLFxuICAgICAgICAgIGZpcnN0VmFsdWU6IDEwMjQgKiAxMDI0XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgcnYgPSB7XG4gICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLklOVEVSVkFMX0lOQ0xVREVfQk9USCxcbiAgICAgICAgICBmaXJzdFZhbHVlOiAxMDI0ICogMTAyNCxcbiAgICAgICAgICBzZWNvbmRWYWx1ZTogMTAyNCAqIDEwMjQgKiAxMFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgcnYgPSB7XG4gICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLklOVEVSVkFMX0lOQ0xVREVfQk9USCxcbiAgICAgICAgICBmaXJzdFZhbHVlOiAxMDI0ICogMTAyNCAqIDEwLFxuICAgICAgICAgIHNlY29uZFZhbHVlOiAxMDI0ICogMTAyNCAqIDEwMFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZlcnlsYXJnZSc6XG4gICAgICAgIHJ2ID0ge1xuICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5HUkVBVEVSX1RIQU4sXG4gICAgICAgICAgZmlyc3RWYWx1ZTogMTAyNCAqIDEwMjQgKiAxMDBcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBydjtcbiAgfVxufVxuIl19
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SessionStorageService {
|
|
4
|
-
#TEMP_STORAGE_ENTRIES_KEY = 'yuv.core.sessionstorage.entries';
|
|
5
|
-
constructor() {
|
|
6
|
-
this.#clearTemporaryStorageEntries();
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Add a reference to a temporary localstorage entry that should be cleared when a
|
|
10
|
-
* new browser session starts. In context of forms this will be used to cleanup the
|
|
11
|
-
* layout state of forms (selected tabs etc.) that are stored locally but should only
|
|
12
|
-
* be pesisted for one browser session.
|
|
13
|
-
* @param storageKey Key of the localstorage item
|
|
14
|
-
*/
|
|
15
|
-
addTemporaryStorageEntry(storageKey) {
|
|
16
|
-
// entries will themselves be stored in localstorage so we can check for entries
|
|
17
|
-
// to be removed once the application starts
|
|
18
|
-
const current = this.#getTemporaryStorageEntries();
|
|
19
|
-
if (!current.includes(storageKey))
|
|
20
|
-
localStorage.setItem(this.#TEMP_STORAGE_ENTRIES_KEY, JSON.stringify([...current, storageKey]));
|
|
21
|
-
}
|
|
22
|
-
#clearTemporaryStorageEntries() {
|
|
23
|
-
this.#getTemporaryStorageEntries().forEach((e) => localStorage.removeItem(e));
|
|
24
|
-
localStorage.removeItem(this.#TEMP_STORAGE_ENTRIES_KEY);
|
|
25
|
-
}
|
|
26
|
-
#getTemporaryStorageEntries() {
|
|
27
|
-
let res = [];
|
|
28
|
-
const i = localStorage.getItem(this.#TEMP_STORAGE_ENTRIES_KEY);
|
|
29
|
-
if (i) {
|
|
30
|
-
try {
|
|
31
|
-
const entries = JSON.parse(i);
|
|
32
|
-
if (Array.isArray(entries))
|
|
33
|
-
res = entries;
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
console.error(e);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return res;
|
|
40
|
-
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, providedIn: 'root' }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionStorageService, decorators: [{
|
|
45
|
-
type: Injectable,
|
|
46
|
-
args: [{
|
|
47
|
-
providedIn: 'root'
|
|
48
|
-
}]
|
|
49
|
-
}], ctorParameters: () => [] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc2Vzc2lvbi1zdG9yYWdlL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMseUJBQXlCLEdBQUcsaUNBQWlDLENBQUM7SUFFOUQ7UUFDRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQUMsVUFBa0I7UUFDekMsZ0ZBQWdGO1FBQ2hGLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFFRCw2QkFBNkI7UUFDM0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDO1lBQzVDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBdENVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU2VydmljZSB7XG4gICNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkgPSAneXV2LmNvcmUuc2Vzc2lvbnN0b3JhZ2UuZW50cmllcyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jY2xlYXJUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJlZmVyZW5jZSB0byBhIHRlbXBvcmFyeSBsb2NhbHN0b3JhZ2UgZW50cnkgdGhhdCBzaG91bGQgYmUgY2xlYXJlZCB3aGVuIGFcbiAgICogbmV3IGJyb3dzZXIgc2Vzc2lvbiBzdGFydHMuIEluIGNvbnRleHQgb2YgZm9ybXMgdGhpcyB3aWxsIGJlIHVzZWQgdG8gY2xlYW51cCB0aGVcbiAgICogbGF5b3V0IHN0YXRlIG9mIGZvcm1zIChzZWxlY3RlZCB0YWJzIGV0Yy4pIHRoYXQgYXJlIHN0b3JlZCBsb2NhbGx5IGJ1dCBzaG91bGQgb25seVxuICAgKiBiZSBwZXNpc3RlZCBmb3Igb25lIGJyb3dzZXIgc2Vzc2lvbi5cbiAgICogQHBhcmFtIHN0b3JhZ2VLZXkgS2V5IG9mIHRoZSBsb2NhbHN0b3JhZ2UgaXRlbVxuICAgKi9cbiAgYWRkVGVtcG9yYXJ5U3RvcmFnZUVudHJ5KHN0b3JhZ2VLZXk6IHN0cmluZykge1xuICAgIC8vIGVudHJpZXMgd2lsbCB0aGVtc2VsdmVzIGJlIHN0b3JlZCBpbiBsb2NhbHN0b3JhZ2Ugc28gd2UgY2FuIGNoZWNrIGZvciBlbnRyaWVzXG4gICAgLy8gdG8gYmUgcmVtb3ZlZCBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHNcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy4jZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKTtcbiAgICBpZiAoIWN1cnJlbnQuaW5jbHVkZXMoc3RvcmFnZUtleSkpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuI1RFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSwgSlNPTi5zdHJpbmdpZnkoWy4uLmN1cnJlbnQsIHN0b3JhZ2VLZXldKSk7XG4gIH1cblxuICAjY2xlYXJUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpIHtcbiAgICB0aGlzLiNnZXRUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpLmZvckVhY2goKGUpID0+IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLiNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkpO1xuICB9XG5cbiAgI2dldFRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLiNURU1QX1NUT1JBR0VfRU5UUklFU19LRVkpO1xuICAgIGlmIChpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlbnRyaWVzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2UoaSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXMgPSBlbnRyaWVzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3N5c3RlbS9vYmplY3QtZm9ybS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRmllbGRUeXBlIH0gZnJvbSAnLi9zeXN0ZW0uZW51bSc7XG5pbXBvcnQgeyBPYmplY3RUeXBlRmllbGQgfSBmcm9tICcuL3N5c3RlbS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUeXBlRmllbGRUeXBlID0gJ3N0cmluZycgfCAnaW50ZWdlcicgfCAnZGVjaW1hbCcgfCAnYm9vbGVhbicgfCAndGFibGUnIHwgJ2RhdGV0aW1lJztcbmV4cG9ydCB0eXBlIE9iamVjdFR5cGVGaWVsZEludGVybmFsVHlwZSA9XG5PYmplY3RUeXBlRmllbGRUeXBlXG4gIHwgSW50ZXJuYWxGaWVsZFR5cGUuU1RSSU5HX1JFRkVSRU5DRVxuICB8IEludGVybmFsRmllbGRUeXBlLlNUUklOR19PUkdBTklaQVRJT05cbiAgfCBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfT1JHQU5JWkFUSU9OX1NFVFxuICB8IEludGVybmFsRmllbGRUeXBlLlNUUklOR19DQVRBTE9HXG4gIHwgSW50ZXJuYWxGaWVsZFR5cGUuQk9PTEVBTl9TV0lUQ0hcbiAgfCBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfRFlOQU1JQ19DQVRBTE9HO1xuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBzdHJpbmdcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVsZW1lbnRTdHJpbmcgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBwcm9wZXJ0eVR5cGU6ICdzdHJpbmcnO1xuICBkZWZhdWx0dmFsdWU/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIC8vIG51bWJlciBvZiByb3cgdGhlIHRleHQgaW5wdXQgc2hvdWxkIGhhdmUgKGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIGlucHV0L3RleHRhcmVhKVxuICByb3dzPzogbnVtYmVyO1xuICAvLyBpbiBjYXNlIG9mIGEgY2F0YWxvZyBmaWVsZCB0aGlzIHByb3BlcnR5IGhvbGRzIHRoZSBhdmFpbGFibGUgb3B0aW9uc1xuICBvcHRpb25zPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIHJlZ2V4Pzogc3RyaW5nO1xufVxuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBpbnRlZ2VyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50SW50ZWdlciBleHRlbmRzIE9iamVjdFR5cGVGaWVsZCB7XG4gIHByb3BlcnR5VHlwZTogJ2ludGVnZXInO1xuICBkZWZhdWx0dmFsdWU/OiBudW1iZXJbXSB8IG51bWJlcjtcbiAgLy8gbWluaW11bSB2YWx1ZVxuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgLy8gbWF4aW11bSB2YWx1ZVxuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgLy8gT3ZlcmFsbCBhbW91bnQgb2YgZGlnaXRzIGFsbG93ZWQgKGluY2x1ZGluZyBkZWNpbWFsIHBsYWNlcylcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBTZXQgdG8gdHJ1ZSB0byBncm91cCBudW1iZXIgYnkgY2VydGFpbiBwYXR0ZXJuICguLi4gcHJvdmlkZWQgYnkgdGhlIHBhdHRlcm4gcHJvcGVydHkpXG4gIGdyb3VwaW5nPzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhdHRlcm4gdG8gZ3JvdXAgdGhlIHZhbHVlIGJ5XG4gIHBhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIGRlY2ltYWxcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVsZW1lbnREZWNpbWFsIGV4dGVuZHMgT2JqZWN0VHlwZUZpZWxkIHtcbiAgcHJvcGVydHlUeXBlOiAnZGVjaW1hbCc7XG4gIGRlZmF1bHR2YWx1ZT86IG51bWJlcltdIHwgbnVtYmVyO1xuICAvLyBtaW5pbXVtIHZhbHVlXG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICAvLyBtYXhpbXVtIHZhbHVlXG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICAvLyBPdmVyYWxsIGFtb3VudCBvZiBkaWdpdHMgYWxsb3dlZCAoaW5jbHVkaW5nIGRlY2ltYWwgcGxhY2VzKVxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIE51bWJlciBvZiBkZWNpbWFsIHBsYWNlc1xuICBzY2FsZT86IG51bWJlcjtcbiAgLy8gU2V0IHRvIHRydWUgdG8gZ3JvdXAgbnVtYmVyIGJ5IGNlcnRhaW4gcGF0dGVybiAoLi4uIHByb3ZpZGVkIGJ5IHRoZSBwYXR0ZXJuIHByb3BlcnR5KVxuICBncm91cGluZz86IGJvb2xlYW47XG4gIC8vIFRoZSBwYXR0ZXJuIHRvIGdyb3VwIHRoZSB2YWx1ZSBieVxuICBwYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vLyBGb3JtIGVsZW1lbnQgb2YgdHlwZSBib29sZWFuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50Qm9vbGVhbiBleHRlbmRzIE9iamVjdFR5cGVGaWVsZCB7XG4gIHByb3BlcnR5VHlwZTogJ2Jvb2xlYW4nO1xuICBkZWZhdWx0dmFsdWU/OiBib29sZWFuO1xuICB0cmlzdGF0ZT86IGJvb2xlYW47XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIGRhdGV0aW1lXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50RGF0ZXRpbWUgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBwcm9wZXJ0eVR5cGU6ICdkYXRldGltZSc7XG4gIGRlZmF1bHR2YWx1ZT86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICAvLyBJZiByZXNvbHV0aW9vbiBpcyBzZXQgdG8gJ2RhdGUnIHRpbWUgaXMgbm90IGluY2x1ZGVkXG4gIHJlc29sdXRpb24/OiAnZGF0ZSc7XG59XG5cbi8vIEZvcm0gZWxlbWVudCBvZiB0eXBlIHRhYmxlXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FbGVtZW50VGFibGUgZXh0ZW5kcyBPYmplY3RUeXBlRmllbGQge1xuICBlbGVtZW50czogT2JqZWN0VHlwZUZpZWxkW107XG4gIHByb3BlcnR5VHlwZTogJ3RhYmxlJztcbn1cbiJdfQ==
|