@solidev/data 0.4.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/solidev-data.mjs +158 -157
- package/fesm2022/solidev-data.mjs.map +1 -1
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +2 -2
- package/package.json +5 -7
- package/esm2022/lib/auth/auth-interceptor.service.mjs +0 -113
- package/esm2022/lib/auth/auth.service.mjs +0 -216
- package/esm2022/lib/auth/jwt.mjs +0 -21
- package/esm2022/lib/data/data-backend.mjs +0 -162
- package/esm2022/lib/data/data-collection.mjs +0 -125
- package/esm2022/lib/data/data-collection.mock.mjs +0 -39
- package/esm2022/lib/data/data-model.mjs +0 -291
- package/esm2022/lib/data/data-parameters.mjs +0 -34
- package/esm2022/lib/data/data-query.mjs +0 -154
- package/esm2022/lib/data/data-query.mock.mjs +0 -46
- package/esm2022/lib/data/fields/base.mjs +0 -144
- package/esm2022/lib/data/fields/boolean.mjs +0 -38
- package/esm2022/lib/data/fields/computed.mjs +0 -10
- package/esm2022/lib/data/fields/datetime.mjs +0 -167
- package/esm2022/lib/data/fields/index.mjs +0 -8
- package/esm2022/lib/data/fields/numbers.mjs +0 -38
- package/esm2022/lib/data/fields/primaryfield.mjs +0 -9
- package/esm2022/lib/data/fields/relations.mjs +0 -53
- package/esm2022/lib/data/fields/stringfields.mjs +0 -71
- package/esm2022/lib/dispedit/choice.pipe.mjs +0 -79
- package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +0 -480
- package/esm2022/lib/dispedit/dispedit/dispedit.constants.mjs +0 -2
- package/esm2022/lib/dispedit/factor.pipe.mjs +0 -81
- package/esm2022/lib/dispedit/factorc.pipe.mjs +0 -99
- package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +0 -139
- package/esm2022/lib/dispedit/flags/flags.component.mjs +0 -137
- package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -312
- package/esm2022/lib/dispedit/richedit/richedit.component.mjs +0 -126
- package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +0 -103
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +0 -53
- package/esm2022/lib/messages/message.service.mjs +0 -151
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -2
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -61
- package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
- package/esm2022/lib/modellist/model-list-fields/model-list-fields.mjs +0 -273
- package/esm2022/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -109
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -28
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -9
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -23
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -24
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -16
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -17
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -18
- package/esm2022/lib/modellist/model-list-filters/model-list-filter-group.mjs +0 -19
- package/esm2022/lib/modellist/model-list-filters/model-list-filter.mjs +0 -157
- package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
- package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/model-list-filters.mjs +0 -134
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -69
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -47
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -116
- package/esm2022/lib/modellist/model-list.service.mjs +0 -168
- package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -138
- package/esm2022/lib/routing/routing.mjs +0 -57
- package/esm2022/lib/updates/update/update.component.mjs +0 -17
- package/esm2022/lib/updates/update.service.mjs +0 -58
- package/esm2022/lib/uploader/index.mjs +0 -6
- package/esm2022/lib/uploader/interfaces.mjs +0 -8
- package/esm2022/lib/uploader/ng-file-drop.directive.mjs +0 -81
- package/esm2022/lib/uploader/ng-file-select.directive.mjs +0 -51
- package/esm2022/lib/uploader/ngx-uploader.class.mjs +0 -308
- package/esm2022/lib/uploader/ngx-uploader.module.mjs +0 -17
- package/esm2022/lib/utils/slugify.mjs +0 -16
- package/esm2022/lib/utils/tab-memory.service.mjs +0 -80
- package/esm2022/lib/utils/template.mjs +0 -72
- package/esm2022/public-api.mjs +0 -56
- package/esm2022/solidev-data.mjs +0 -5
- package/solidev-data-0.4.8.tgz +0 -0
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { Queryset } from './data-query';
|
|
2
|
-
import { map, tap } from 'rxjs/operators';
|
|
3
|
-
export class Collection {
|
|
4
|
-
constructor(backend, path, model) {
|
|
5
|
-
this.backend = backend;
|
|
6
|
-
this.path = path;
|
|
7
|
-
this.model = model;
|
|
8
|
-
this.useTransferState = true;
|
|
9
|
-
}
|
|
10
|
-
create(data) {
|
|
11
|
-
if (!data) {
|
|
12
|
-
data = {};
|
|
13
|
-
}
|
|
14
|
-
return this.fromJson(data);
|
|
15
|
-
}
|
|
16
|
-
fromJson(data) {
|
|
17
|
-
if (data instanceof Array) {
|
|
18
|
-
const out = [];
|
|
19
|
-
for (const r of data) {
|
|
20
|
-
const ri = new this.model(this);
|
|
21
|
-
ri.fromJson(r);
|
|
22
|
-
out.push(ri);
|
|
23
|
-
}
|
|
24
|
-
return out;
|
|
25
|
-
}
|
|
26
|
-
const m = new this.model(this);
|
|
27
|
-
m.fromJson(data);
|
|
28
|
-
return m;
|
|
29
|
-
}
|
|
30
|
-
queryset(options = {}) {
|
|
31
|
-
return new Queryset(this, options);
|
|
32
|
-
}
|
|
33
|
-
fetch(id, { prefix = '', suffix = '', params = {}, headers = {}, } = {}) {
|
|
34
|
-
return this.backend
|
|
35
|
-
.get(this, this.getUrl(id, { prefix, suffix }), { headers, params })
|
|
36
|
-
.pipe(map((result) => this.fromJson(result)));
|
|
37
|
-
}
|
|
38
|
-
action(model, method, action, { body = undefined, params = {}, headers = {} } = {}) {
|
|
39
|
-
return this.backend.action(this, method, this.getUrl(model ? model.id : null, {
|
|
40
|
-
suffix: model ? '/' + action : action,
|
|
41
|
-
}), { body, params, headers });
|
|
42
|
-
}
|
|
43
|
-
save(model, { updateModel = true } = {}) {
|
|
44
|
-
let saveMethod = model.id !== undefined
|
|
45
|
-
? this.backend.patch.bind(this.backend)
|
|
46
|
-
: this.backend.post.bind(this.backend);
|
|
47
|
-
let url = model.id !== undefined ? this.getUrl(model.id) : this.getUrl();
|
|
48
|
-
return saveMethod(this, url, { body: model.toJson() }).pipe(map((res) => this.fromJson(res)), tap((res) => {
|
|
49
|
-
if (updateModel) {
|
|
50
|
-
model.fromJson(res);
|
|
51
|
-
}
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
update(model, fields = [], { updateModel = true } = {}) {
|
|
55
|
-
let saveMethod = model.id !== undefined
|
|
56
|
-
? this.backend.patch.bind(this.backend)
|
|
57
|
-
: this.backend.post.bind(this.backend);
|
|
58
|
-
let url = model.id !== undefined ? this.getUrl(model.id) : this.getUrl();
|
|
59
|
-
return saveMethod(this, url, { body: model.toJson(fields) }).pipe(map((res) => this.fromJson(res)), tap((res) => {
|
|
60
|
-
if (updateModel) {
|
|
61
|
-
model.fromJson(res);
|
|
62
|
-
}
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
delete(model, { params = {}, headers = {} } = {}) {
|
|
66
|
-
return this.backend.delete(this, this.getUrl(model.id), {
|
|
67
|
-
params,
|
|
68
|
-
headers,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
list(query = {}, { prefix = '', suffix = '', params = {}, headers = {}, } = {}) {
|
|
72
|
-
const qry = Object.assign({}, query, params);
|
|
73
|
-
return this.backend
|
|
74
|
-
.list(this, this.getUrl(null, { suffix, prefix }),
|
|
75
|
-
// SEE: forced typecast maybe bad
|
|
76
|
-
{ params: qry, headers })
|
|
77
|
-
.pipe(
|
|
78
|
-
// FIXME: parametrize paginated results access
|
|
79
|
-
map((result) => this.fromJson(result.results)));
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Calls *method* endpoint for this collection and returns raw results.
|
|
83
|
-
*
|
|
84
|
-
* @param method GET/POST/...
|
|
85
|
-
* @param prefix collection_urlPREFIXSUFFIX
|
|
86
|
-
* @param suffix collection_urlPREFIXSUFFIX
|
|
87
|
-
* @param params query paremeters
|
|
88
|
-
* @param body body as json
|
|
89
|
-
* @param headers headers
|
|
90
|
-
*/
|
|
91
|
-
raw({ method = 'GET', prefix = '', suffix = '', params = {}, body = {}, headers = {}, } = {}) {
|
|
92
|
-
return this.backend.action(this, method, this.getUrl(null, { suffix, prefix }), {
|
|
93
|
-
params,
|
|
94
|
-
headers,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Calls *method* endpoint for this collection and returns raw results.
|
|
99
|
-
*
|
|
100
|
-
* @param method GET/POST/...
|
|
101
|
-
* @param prefix collection_urlPREFIXSUFFIX
|
|
102
|
-
* @param suffix collection_urlPREFIXSUFFIX
|
|
103
|
-
* @param params query paremeters
|
|
104
|
-
* @param body body as json
|
|
105
|
-
* @param headers headers
|
|
106
|
-
*/
|
|
107
|
-
blob({ method = 'GET', prefix = '', suffix = '', params = {}, body = {}, headers = {}, } = {}) {
|
|
108
|
-
return this.backend.blob(this, method, this.getUrl(null, { suffix, prefix }), {
|
|
109
|
-
params,
|
|
110
|
-
headers,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
getUrl(id, { prefix = '', suffix = '' } = {}) {
|
|
114
|
-
if (id === undefined || id === null) {
|
|
115
|
-
if (prefix || suffix) {
|
|
116
|
-
return `${this.backend.apiUrl}${this.path}/${prefix}${suffix}`;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
return `${this.backend.apiUrl}${this.path}`;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return `${this.backend.apiUrl}${this.path}/${prefix}${id}${suffix}`;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF1QjFDLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1ksT0FBb0IsRUFDcEIsSUFBWSxFQUNmLEtBQXVCO1FBRnBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBTHpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQU01QixDQUFDO0lBRUcsTUFBTSxDQUFDLElBQWlCO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFJRCxRQUFRLENBQUMsSUFBK0I7UUFDdEMsSUFBSSxJQUFJLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1lBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE1BQU0sQ0FBQyxH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R0FBRyxFQUFFLEVBQ1gsSUFBSSxHQUFHLEVBQUUsRUFDVCxPQUFPLEdBQUcsRUFBRSxNQVFWLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixJQUFJLEVBQ0osTUFBTSxFQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQ3JDO1lBQ0UsTUFBTTtZQUNOLE9BQU87U0FDUixDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUNYLEVBQWtCLEVBQ2xCLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUEyQyxFQUFFO1FBRXZFLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNqRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDdEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi9kYXRhLW1vZGVsJztcbmltcG9ydCB7IERhdGFCYWNrZW5kIH0gZnJvbSAnLi9kYXRhLWJhY2tlbmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyRGF0YSwgSVF1ZXJ5c2V0T3B0aW9ucywgUXVlcnlzZXQgfSBmcm9tICcuL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIElIdHRwTWV0aG9kID0gJ1BPU1QnIHwgJ0dFVCcgfCAnREVMRVRFJyB8ICdQVVQnIHwgJ1BBVENIJztcblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9uUGFyYW1zIHtcbiAgYm9keT86IGFueTtcbiAgaGVhZGVycz86IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGFyYW1zPzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICByZXNwb25zZVR5cGU/OiAnanNvbicgfCAnYmxvYic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbGxlY3Rpb25DYWNoZVBhcmFtcyB7XG4gIHRyYW5zZmVyU3RhdGU/OiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBtYXhUaW1lOiBudW1iZXI7XG4gICAgbWF4Q291bnQ6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsVHlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiA9IG5ldyAoXG4gIF9jb2xsPzogQ29sbGVjdGlvbjxUPlxuKSA9PiBUO1xuXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbjxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIHB1YmxpYyB1c2VUcmFuc2ZlclN0YXRlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYmFja2VuZDogRGF0YUJhY2tlbmQsXG4gICAgcHJvdGVjdGVkIHBhdGg6IHN0cmluZyxcbiAgICBwdWJsaWMgbW9kZWw6IERhdGFNb2RlbFR5cGU8VD5cbiAgKSB7fVxuXG4gIHB1YmxpYyBjcmVhdGUoZGF0YT86IFBhcnRpYWw8VD4pOiBUIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGRhdGEgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZnJvbUpzb24oZGF0YSk7XG4gIH1cblxuICBmcm9tSnNvbihkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbiAgZnJvbUpzb24oZGF0YTogUGFydGlhbDxUPltdKTogVFtdO1xuICBmcm9tSnNvbihkYXRhOiBQYXJ0aWFsPFQ+IHwgUGFydGlhbDxUPltdKTogVCB8IFRbXSB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgciBvZiBkYXRhKSB7XG4gICAgICAgIGNvbnN0IHJpID0gbmV3IHRoaXMubW9kZWwodGhpcyk7XG4gICAgICAgIHJpLmZyb21Kc29uKHIpO1xuICAgICAgICBvdXQucHVzaChyaSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBjb25zdCBtID0gbmV3IHRoaXMubW9kZWwodGhpcyk7XG4gICAgbS5mcm9tSnNvbihkYXRhKTtcbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeXNldChvcHRpb25zOiBJUXVlcnlzZXRPcHRpb25zID0ge30pOiBRdWVyeXNldDxUPiB7XG4gICAgcmV0dXJuIG5ldyBRdWVyeXNldDxUPih0aGlzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaChcbiAgICBpZDogbnVtYmVyLFxuICAgIHtcbiAgICAgIHByZWZpeCA9ICcnLFxuICAgICAgc3VmZml4ID0gJycsXG4gICAgICBwYXJhbXMgPSB7fSxcbiAgICAgIGhlYWRlcnMgPSB7fSxcbiAgICB9OiB7XG4gICAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodGhpcywgdGhpcy5nZXRVcmwoaWQsIHsgcHJlZml4LCBzdWZmaXggfSksIHsgaGVhZGVycywgcGFyYW1zIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4gdGhpcy5mcm9tSnNvbihyZXN1bHQpKSk7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uPFJUPihcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgbWV0aG9kOiBJSHR0cE1ldGhvZCxcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmFjdGlvbjxULCBSVD4oXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgdGhpcy5nZXRVcmwobW9kZWwgPyBtb2RlbC5pZCA6IG51bGwsIHtcbiAgICAgICAgc3VmZml4OiBtb2RlbCA/ICcvJyArIGFjdGlvbiA6IGFjdGlvbixcbiAgICAgIH0pLFxuICAgICAgeyBib2R5LCBwYXJhbXMsIGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZShcbiAgICBtb2RlbDogVCxcbiAgICB7IHVwZGF0ZU1vZGVsID0gdHJ1ZSB9OiB7IHVwZGF0ZU1vZGVsPzogYm9vbGVhbiB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgbGV0IHNhdmVNZXRob2QgPVxuICAgICAgbW9kZWwuaWQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMuYmFja2VuZC5wYXRjaC5iaW5kKHRoaXMuYmFja2VuZClcbiAgICAgICAgOiB0aGlzLmJhY2tlbmQucG9zdC5iaW5kKHRoaXMuYmFja2VuZCk7XG4gICAgbGV0IHVybCA9IG1vZGVsLmlkICE9PSB1bmRlZmluZWQgPyB0aGlzLmdldFVybChtb2RlbC5pZCkgOiB0aGlzLmdldFVybCgpO1xuICAgIHJldHVybiBzYXZlTWV0aG9kKHRoaXMsIHVybCwgeyBib2R5OiBtb2RlbC50b0pzb24oKSB9KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHRoaXMuZnJvbUpzb24ocmVzKSksXG4gICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAodXBkYXRlTW9kZWwpIHtcbiAgICAgICAgICBtb2RlbC5mcm9tSnNvbihyZXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKFxuICAgIG1vZGVsOiBULFxuICAgIGZpZWxkczogc3RyaW5nW10gPSBbXSxcbiAgICB7IHVwZGF0ZU1vZGVsID0gdHJ1ZSB9OiB7IHVwZGF0ZU1vZGVsPzogYm9vbGVhbiB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgbGV0IHNhdmVNZXRob2QgPVxuICAgICAgbW9kZWwuaWQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMuYmFja2VuZC5wYXRjaC5iaW5kKHRoaXMuYmFja2VuZClcbiAgICAgICAgOiB0aGlzLmJhY2tlbmQucG9zdC5iaW5kKHRoaXMuYmFja2VuZCk7XG4gICAgbGV0IHVybCA9IG1vZGVsLmlkICE9PSB1bmRlZmluZWQgPyB0aGlzLmdldFVybChtb2RlbC5pZCkgOiB0aGlzLmdldFVybCgpO1xuICAgIHJldHVybiBzYXZlTWV0aG9kKHRoaXMsIHVybCwgeyBib2R5OiBtb2RlbC50b0pzb24oZmllbGRzKSB9KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHRoaXMuZnJvbUpzb24ocmVzKSksXG4gICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICBpZiAodXBkYXRlTW9kZWwpIHtcbiAgICAgICAgICBtb2RlbC5mcm9tSnNvbihyZXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKFxuICAgIG1vZGVsOiBULFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbGV0ZSh0aGlzLCB0aGlzLmdldFVybChtb2RlbC5pZCksIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbGlzdChcbiAgICBxdWVyeTogRmlsdGVyRGF0YSA9IHt9LFxuICAgIHtcbiAgICAgIHByZWZpeCA9ICcnLFxuICAgICAgc3VmZml4ID0gJycsXG4gICAgICBwYXJhbXMgPSB7fSxcbiAgICAgIGhlYWRlcnMgPSB7fSxcbiAgICB9OiB7XG4gICAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgY29uc3QgcXJ5ID0gT2JqZWN0LmFzc2lnbih7fSwgcXVlcnksIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmxpc3QoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuZ2V0VXJsKG51bGwsIHsgc3VmZml4LCBwcmVmaXggfSksXG4gICAgICAgIC8vIFNFRTogZm9yY2VkIHR5cGVjYXN0IG1heWJlIGJhZFxuICAgICAgICB7IHBhcmFtczogcXJ5LCBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBGSVhNRTogcGFyYW1ldHJpemUgcGFnaW5hdGVkIHJlc3VsdHMgYWNjZXNzXG4gICAgICAgIG1hcCgocmVzdWx0OiB7IHJlc3VsdHM6IFBhcnRpYWw8VD5bXSB9KSA9PlxuICAgICAgICAgIHRoaXMuZnJvbUpzb24ocmVzdWx0LnJlc3VsdHMpXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgKm1ldGhvZCogZW5kcG9pbnQgZm9yIHRoaXMgY29sbGVjdGlvbiBhbmQgcmV0dXJucyByYXcgcmVzdWx0cy5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCBHRVQvUE9TVC8uLi5cbiAgICogQHBhcmFtIHByZWZpeCBjb2xsZWN0aW9uX3VybFBSRUZJWFNVRkZJWFxuICAgKiBAcGFyYW0gc3VmZml4IGNvbGxlY3Rpb25fdXJsUFJFRklYU1VGRklYXG4gICAqIEBwYXJhbSBwYXJhbXMgcXVlcnkgcGFyZW1ldGVyc1xuICAgKiBAcGFyYW0gYm9keSBib2R5IGFzIGpzb25cbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIHJhdzxSVD4oe1xuICAgIG1ldGhvZCA9ICdHRVQnLFxuICAgIHByZWZpeCA9ICcnLFxuICAgIHN1ZmZpeCA9ICcnLFxuICAgIHBhcmFtcyA9IHt9LFxuICAgIGJvZHkgPSB7fSxcbiAgICBoZWFkZXJzID0ge30sXG4gIH06IHtcbiAgICBtZXRob2Q/OiBJSHR0cE1ldGhvZDtcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIGJvZHk/OiBhbnk7XG4gICAgcGFyYW1zPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBoZWFkZXJzPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgfSA9IHt9KTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuYWN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHRoaXMuZ2V0VXJsKG51bGwsIHsgc3VmZml4LCBwcmVmaXggfSksXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzICptZXRob2QqIGVuZHBvaW50IGZvciB0aGlzIGNvbGxlY3Rpb24gYW5kIHJldHVybnMgcmF3IHJlc3VsdHMuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgR0VUL1BPU1QvLi4uXG4gICAqIEBwYXJhbSBwcmVmaXggY29sbGVjdGlvbl91cmxQUkVGSVhTVUZGSVhcbiAgICogQHBhcmFtIHN1ZmZpeCBjb2xsZWN0aW9uX3VybFBSRUZJWFNVRkZJWFxuICAgKiBAcGFyYW0gcGFyYW1zIHF1ZXJ5IHBhcmVtZXRlcnNcbiAgICogQHBhcmFtIGJvZHkgYm9keSBhcyBqc29uXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyBibG9iPFJUPih7XG4gICAgbWV0aG9kID0gJ0dFVCcsXG4gICAgcHJlZml4ID0gJycsXG4gICAgc3VmZml4ID0gJycsXG4gICAgcGFyYW1zID0ge30sXG4gICAgYm9keSA9IHt9LFxuICAgIGhlYWRlcnMgPSB7fSxcbiAgfToge1xuICAgIG1ldGhvZD86IElIdHRwTWV0aG9kO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgYm9keT86IGFueTtcbiAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGhlYWRlcnM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICB9ID0ge30pOiBPYnNlcnZhYmxlPEJsb2I+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmJsb2IoXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgdGhpcy5nZXRVcmwobnVsbCwgeyBzdWZmaXgsIHByZWZpeCB9KSxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXJsKFxuICAgIGlkPzogbnVtYmVyIHwgbnVsbCxcbiAgICB7IHByZWZpeCA9ICcnLCBzdWZmaXggPSAnJyB9OiB7IHByZWZpeD86IHN0cmluZzsgc3VmZml4Pzogc3RyaW5nIH0gPSB7fVxuICApOiBzdHJpbmcge1xuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsKSB7XG4gICAgICBpZiAocHJlZml4IHx8IHN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5iYWNrZW5kLmFwaVVybH0ke3RoaXMucGF0aH0vJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuYXBpVXJsfSR7dGhpcy5wYXRofWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuYXBpVXJsfSR7dGhpcy5wYXRofS8ke3ByZWZpeH0ke2lkfSR7c3VmZml4fWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { of } from "rxjs";
|
|
2
|
-
import { QuerysetMock } from "./data-query.mock";
|
|
3
|
-
export class CollectionMock {
|
|
4
|
-
constructor(model) {
|
|
5
|
-
this.model = model;
|
|
6
|
-
}
|
|
7
|
-
fetch(id, suffix = "") {
|
|
8
|
-
return of(this.mockValue);
|
|
9
|
-
}
|
|
10
|
-
action(model, method, action, params) {
|
|
11
|
-
return of(this.actionValue);
|
|
12
|
-
}
|
|
13
|
-
queryset(options = {}) {
|
|
14
|
-
return new QuerysetMock(this, options);
|
|
15
|
-
}
|
|
16
|
-
list(query = {}, suffix = "") {
|
|
17
|
-
return of({ results: this.mockValues });
|
|
18
|
-
}
|
|
19
|
-
fromJson(data, many = false) {
|
|
20
|
-
if (data && data.id !== undefined) {
|
|
21
|
-
const m = new this.model(this);
|
|
22
|
-
m.fromJson(data);
|
|
23
|
-
return m;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
if (many && data && data.length) {
|
|
27
|
-
const out = [];
|
|
28
|
-
for (const r of data) {
|
|
29
|
-
const ri = new this.model(this);
|
|
30
|
-
ri.fromJson(r);
|
|
31
|
-
out.push(ri);
|
|
32
|
-
}
|
|
33
|
-
return out;
|
|
34
|
-
}
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb2xsZWN0aW9uLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGF0YS9kYXRhLWNvbGxlY3Rpb24ubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUcvQyxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFzQixLQUFvQztRQUFwQyxVQUFLLEdBQUwsS0FBSyxDQUErQjtJQUMxRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEVBQVUsRUFBRSxTQUFpQixFQUFFO1FBQzFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWUsRUFBRSxNQUFtQixFQUFFLE1BQWMsRUFBRSxNQUFxQjtRQUN2RixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxVQUE0QixFQUFFO1FBQzVDLE9BQU8sSUFBSSxZQUFZLENBQUksSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxJQUFJLENBQUMsUUFBcUMsRUFBRSxFQUFFLFNBQWlCLEVBQUU7UUFDdEUsT0FBTyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTLEVBQUUsT0FBZ0IsS0FBSztRQUN2QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFXLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFXLENBQUMsQ0FBQztvQkFDdkMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDZixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRhTW9kZWx9IGZyb20gXCIuL2RhdGEtbW9kZWxcIjtcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0lRdWVyeXNldE9wdGlvbnN9IGZyb20gXCIuL2RhdGEtcXVlcnlcIjtcbmltcG9ydCB7UXVlcnlzZXRNb2NrfSBmcm9tIFwiLi9kYXRhLXF1ZXJ5Lm1vY2tcIjtcbmltcG9ydCB7Q29sbGVjdGlvbiwgSUFjdGlvblBhcmFtcywgSUh0dHBNZXRob2R9IGZyb20gXCIuL2RhdGEtY29sbGVjdGlvblwiO1xuXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbk1vY2s8VCBleHRlbmRzIERhdGFNb2RlbD4ge1xuICBwdWJsaWMgbW9ja1ZhbHVlPzogVDtcbiAgcHVibGljIG1vY2tWYWx1ZXM/OiBUW107XG4gIHB1YmxpYyBhY3Rpb25WYWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtb2RlbDogbmV3KGNvbGw6IENvbGxlY3Rpb248VD4pID0+IFQpIHtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaChpZDogbnVtYmVyLCBzdWZmaXg6IHN0cmluZyA9IFwiXCIpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gb2YodGhpcy5tb2NrVmFsdWUgYXMgVCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uKG1vZGVsOiBUIHwgbnVsbCwgbWV0aG9kOiBJSHR0cE1ldGhvZCwgYWN0aW9uOiBzdHJpbmcsIHBhcmFtczogSUFjdGlvblBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYWN0aW9uVmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHF1ZXJ5c2V0KG9wdGlvbnM6IElRdWVyeXNldE9wdGlvbnMgPSB7fSk6IFF1ZXJ5c2V0TW9jazxUPiB7XG4gICAgcmV0dXJuIG5ldyBRdWVyeXNldE1vY2s8VD4odGhpcywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgbGlzdChxdWVyeTogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9ID0ge30sIHN1ZmZpeDogc3RyaW5nID0gXCJcIik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9mKHtyZXN1bHRzOiB0aGlzLm1vY2tWYWx1ZXN9KTtcbiAgfVxuXG4gIGZyb21Kc29uKGRhdGE6IGFueSwgbWFueTogYm9vbGVhbiA9IGZhbHNlKTogVCB8IGFueSB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBtID0gbmV3IHRoaXMubW9kZWwodGhpcyBhcyBhbnkpO1xuICAgICAgbS5mcm9tSnNvbihkYXRhKTtcbiAgICAgIHJldHVybiBtO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobWFueSAmJiBkYXRhICYmIGRhdGEubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgciBvZiBkYXRhKSB7XG4gICAgICAgICAgY29uc3QgcmkgPSBuZXcgdGhpcy5tb2RlbCh0aGlzIGFzIGFueSk7XG4gICAgICAgICAgcmkuZnJvbUpzb24ocik7XG4gICAgICAgICAgb3V0LnB1c2gocmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { PROPERTY_METADATA_KEY, } from './fields/base';
|
|
2
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
-
import { throwError } from 'rxjs';
|
|
4
|
-
import { tap } from 'rxjs/operators';
|
|
5
|
-
/**
|
|
6
|
-
* Base class for data model.
|
|
7
|
-
*
|
|
8
|
-
* Each class must have a static __name
|
|
9
|
-
* primary field is given with id field.
|
|
10
|
-
*
|
|
11
|
-
* Some methods are provided to be used with a collection, mostly for CRUD operations.
|
|
12
|
-
*
|
|
13
|
-
*/
|
|
14
|
-
export class DataModel {
|
|
15
|
-
/**
|
|
16
|
-
* data model name
|
|
17
|
-
* this need to be given because class name is not fully available because of minification.
|
|
18
|
-
*/
|
|
19
|
-
static { this.__name = ''; }
|
|
20
|
-
/**
|
|
21
|
-
* Constructor for data model instance.
|
|
22
|
-
* A matching collection can be provided.
|
|
23
|
-
* ___fields readonly property is also populated from Reflected metadata
|
|
24
|
-
*
|
|
25
|
-
* @param _coll collection used for CRUD, etc..
|
|
26
|
-
*/
|
|
27
|
-
constructor(_coll) {
|
|
28
|
-
this._coll = _coll;
|
|
29
|
-
const md = Reflect.getMetadata(PROPERTY_METADATA_KEY, this);
|
|
30
|
-
// istanbul ignore if
|
|
31
|
-
if (!md) {
|
|
32
|
-
// This should never occur as all datamodel have at least id field
|
|
33
|
-
throw new Error('No property metadata found for this object; is there a property in current collection ?');
|
|
34
|
-
}
|
|
35
|
-
// Get all fields from current class and its parents
|
|
36
|
-
const fields = new Map();
|
|
37
|
-
let parent = Object.getPrototypeOf(this);
|
|
38
|
-
while (parent.constructor.name !== 'Object') {
|
|
39
|
-
for (const f of md.keys()) {
|
|
40
|
-
const fieldName = f.split('__')[1];
|
|
41
|
-
if (fields.has(fieldName)) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (f.indexOf(parent.constructor.__name + '__') === 0) {
|
|
45
|
-
fields.set(fieldName, md.get(f));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
parent = Object.getPrototypeOf(parent);
|
|
49
|
-
}
|
|
50
|
-
this._F = Object.freeze(fields);
|
|
51
|
-
}
|
|
52
|
-
get _collection() {
|
|
53
|
-
return this._coll;
|
|
54
|
-
}
|
|
55
|
-
set _collection(coll) {
|
|
56
|
-
this._coll = coll;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* HashMap of fields metadata (type, name, manager, etc...)
|
|
60
|
-
*/
|
|
61
|
-
get F() {
|
|
62
|
-
// istanbul ignore if
|
|
63
|
-
if (!this._F) {
|
|
64
|
-
throw new Error('Invalid data model, fields metadata is missing');
|
|
65
|
-
}
|
|
66
|
-
return this._F;
|
|
67
|
-
}
|
|
68
|
-
// Return field names iterator
|
|
69
|
-
get FN() {
|
|
70
|
-
return this.F.keys();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Loads model data from json.
|
|
74
|
-
* If partial is true, only fields with matching data keys will be loaded
|
|
75
|
-
* @param data
|
|
76
|
-
* @param options
|
|
77
|
-
*/
|
|
78
|
-
fromJson(data, { partial, check } = {
|
|
79
|
-
partial: false,
|
|
80
|
-
check: false,
|
|
81
|
-
}) {
|
|
82
|
-
const errors = {};
|
|
83
|
-
let haveError = false;
|
|
84
|
-
for (const f of this.FN) {
|
|
85
|
-
if (!partial || (partial && Object.keys(data).indexOf(f) !== -1)) {
|
|
86
|
-
const ferr = this.setFV(f, this.FM(f).fromJson(data[f]), check);
|
|
87
|
-
if (ferr !== null) {
|
|
88
|
-
errors[f] = ferr;
|
|
89
|
-
haveError = true;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return haveError ? errors : null;
|
|
94
|
-
}
|
|
95
|
-
toJson(fields) {
|
|
96
|
-
if (fields && !Array.isArray(fields)) {
|
|
97
|
-
fields = [fields];
|
|
98
|
-
}
|
|
99
|
-
const out = {};
|
|
100
|
-
const fl = this.F;
|
|
101
|
-
for (const f of this.FN) {
|
|
102
|
-
const mgr = this.FM(f);
|
|
103
|
-
if (!fields || fields.length === 0) {
|
|
104
|
-
if (mgr.readonly) {
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
out[f] = fl.get(f).manager.toJson(this.FV(f));
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
if (fields.indexOf(f) !== -1) {
|
|
111
|
-
out[f] = fl.get(f).manager.toJson(this.FV(f));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return out;
|
|
116
|
-
}
|
|
117
|
-
action(method, name, { body = undefined, update = false, updatePartial = true, updateCheck = false,
|
|
118
|
-
// updateRaise = false,
|
|
119
|
-
params = {}, headers = {}, } = {}) {
|
|
120
|
-
if (this._coll === undefined) {
|
|
121
|
-
return throwError(() => new Error('Missing collection'));
|
|
122
|
-
}
|
|
123
|
-
return this._coll
|
|
124
|
-
.action(this, method, name, {
|
|
125
|
-
body,
|
|
126
|
-
params,
|
|
127
|
-
headers,
|
|
128
|
-
})
|
|
129
|
-
.pipe(tap((result) => {
|
|
130
|
-
if (update) {
|
|
131
|
-
this.fromJson(result, {
|
|
132
|
-
partial: updatePartial,
|
|
133
|
-
check: updateCheck,
|
|
134
|
-
});
|
|
135
|
-
return this;
|
|
136
|
-
}
|
|
137
|
-
return result;
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
// Called on model, returns the manager for a field.
|
|
141
|
-
FM(field) {
|
|
142
|
-
if (this.F.has(field)) {
|
|
143
|
-
return this.F.get(field).manager;
|
|
144
|
-
}
|
|
145
|
-
throw new Error(`${field} not found in ${Object.keys(this.F).join(',')} model ${this}`);
|
|
146
|
-
}
|
|
147
|
-
// Return field value, without typing
|
|
148
|
-
FV(field) {
|
|
149
|
-
return this[field];
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Set field value. If check is true, only set value if all validators pass.
|
|
153
|
-
* Skip setting field value if manager computed flag is true.
|
|
154
|
-
*
|
|
155
|
-
* The validation result is returned.
|
|
156
|
-
*
|
|
157
|
-
* @param field field name
|
|
158
|
-
* @param value field valued
|
|
159
|
-
* @param check default false
|
|
160
|
-
* @return null or ValidationError
|
|
161
|
-
*/
|
|
162
|
-
setFV(field, value, check = false) {
|
|
163
|
-
if (this.FM(field).computed) {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
if (check) {
|
|
167
|
-
const fc = new FormControl(value);
|
|
168
|
-
for (const v of this.FM(field).validators) {
|
|
169
|
-
const val = v(fc);
|
|
170
|
-
if (val !== null) {
|
|
171
|
-
console.error(val);
|
|
172
|
-
return val;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
this[field] = value;
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
FC(field) {
|
|
180
|
-
if (field === undefined) {
|
|
181
|
-
field = Array.from(this.FN).filter((n) => !this.FM(n).readonly);
|
|
182
|
-
}
|
|
183
|
-
if (Array.isArray(field)) {
|
|
184
|
-
const fg = {};
|
|
185
|
-
for (const f of field) {
|
|
186
|
-
fg[f] = this.FC(f);
|
|
187
|
-
}
|
|
188
|
-
return new FormGroup(fg);
|
|
189
|
-
}
|
|
190
|
-
return this.FM(field).formControl(this);
|
|
191
|
-
}
|
|
192
|
-
save({ updateModel = true } = {
|
|
193
|
-
updateModel: true,
|
|
194
|
-
}) {
|
|
195
|
-
if (this._coll) {
|
|
196
|
-
return this._coll.save(this, { updateModel });
|
|
197
|
-
}
|
|
198
|
-
return throwError(() => new Error('Missing collection'));
|
|
199
|
-
}
|
|
200
|
-
update(fields = [], { updateModel = true } = {
|
|
201
|
-
updateModel: true,
|
|
202
|
-
}) {
|
|
203
|
-
if (this._coll) {
|
|
204
|
-
return this._coll.update(this, fields, { updateModel });
|
|
205
|
-
}
|
|
206
|
-
return throwError(() => new Error('Missing collection'));
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
//
|
|
210
|
-
// export class TreeDataModel extends DataModel {
|
|
211
|
-
// static override __name = 'TreeDataModel';
|
|
212
|
-
// @detailsField({
|
|
213
|
-
// model: this,
|
|
214
|
-
// many: true,
|
|
215
|
-
// description: 'Parents',
|
|
216
|
-
// })
|
|
217
|
-
// public parents_details?: this[];
|
|
218
|
-
//
|
|
219
|
-
// @foreignKeyField({
|
|
220
|
-
// required: false,
|
|
221
|
-
// description: 'Structure parente',
|
|
222
|
-
// related: 'Structure',
|
|
223
|
-
// })
|
|
224
|
-
// public parent?: number;
|
|
225
|
-
//
|
|
226
|
-
// @integerField({
|
|
227
|
-
// required: false,
|
|
228
|
-
// readonly: true,
|
|
229
|
-
// description: 'ID Tree',
|
|
230
|
-
// })
|
|
231
|
-
// public tree_id!: number;
|
|
232
|
-
//
|
|
233
|
-
// @integerField({
|
|
234
|
-
// required: false,
|
|
235
|
-
// readonly: true,
|
|
236
|
-
// description: 'MPTT left',
|
|
237
|
-
// })
|
|
238
|
-
// public lft!: number;
|
|
239
|
-
//
|
|
240
|
-
// @integerField({
|
|
241
|
-
// required: false,
|
|
242
|
-
// readonly: true,
|
|
243
|
-
// description: 'MPTT right',
|
|
244
|
-
// })
|
|
245
|
-
// public rght!: number;
|
|
246
|
-
//
|
|
247
|
-
// @integerField({
|
|
248
|
-
// required: false,
|
|
249
|
-
// readonly: true,
|
|
250
|
-
// description: 'Niveau hiérarchique',
|
|
251
|
-
// })
|
|
252
|
-
// public level!: number;
|
|
253
|
-
//
|
|
254
|
-
// public get parent_details(): this | null {
|
|
255
|
-
// if (this.parents_details) {
|
|
256
|
-
// const out = this.parents_details[this.parents_details.length - 1];
|
|
257
|
-
// out.parents_details = this.parents_details.slice(
|
|
258
|
-
// 0,
|
|
259
|
-
// this.parents_details.length - 1
|
|
260
|
-
// );
|
|
261
|
-
// return out;
|
|
262
|
-
// }
|
|
263
|
-
// return null;
|
|
264
|
-
// }
|
|
265
|
-
//
|
|
266
|
-
// public set parent_details(d: this | null) {
|
|
267
|
-
// console.log(d);
|
|
268
|
-
// this.parents_details = d?.parents_details;
|
|
269
|
-
// }
|
|
270
|
-
//
|
|
271
|
-
// public _display(): string {
|
|
272
|
-
// const out: string[] = [];
|
|
273
|
-
// if (this.parents_details) {
|
|
274
|
-
// for (const p of this.parents_details) {
|
|
275
|
-
// if ((p as any).code) {
|
|
276
|
-
// out.push(`[${(p as any).code}] ${(p as any).name}`);
|
|
277
|
-
// } else {
|
|
278
|
-
// out.push((p as any).name);
|
|
279
|
-
// }
|
|
280
|
-
// }
|
|
281
|
-
// }
|
|
282
|
-
// if ((this as any).code) {
|
|
283
|
-
// out.push(`[${(this as any).code}] ${(this as any).name}`);
|
|
284
|
-
// } else {
|
|
285
|
-
// out.push((this as any).name);
|
|
286
|
-
// }
|
|
287
|
-
//
|
|
288
|
-
// return out.join(' : ');
|
|
289
|
-
// }
|
|
290
|
-
// }
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCOzs7T0FHRzthQUN1QixXQUFNLEdBQVcsRUFBRSxDQUFDO0lBWTlDOzs7Ozs7T0FNRztJQUNILFlBQXNCLEtBQXVCO1FBQXZCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQzNDLE1BQU0sRUFBRSxHQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLGtFQUFrRTtZQUNsRSxNQUFNLElBQUksS0FBSyxDQUNiLHlGQUF5RixDQUMxRixDQUFDO1FBQ0osQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUM1RCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUss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RUFBRTtBQUNGLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLGdDQUFnQztBQUNoQyxPQUFPO0FBQ1AseUJBQXlCO0FBQ3pCLEVBQUU7QUFDRixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLHNCQUFzQjtBQUN0QixpQ0FBaUM7QUFDakMsT0FBTztBQUNQLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0Ysb0JBQW9CO0FBQ3BCLHVCQUF1QjtBQUN2QixzQkFBc0I7QUFDdEIsMENBQTBDO0FBQzFDLE9BQU87QUFDUCwyQkFBMkI7QUFDM0IsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxrQ0FBa0M7QUFDbEMsMkVBQTJFO0FBQzNFLDBEQUEwRDtBQUMxRCxhQUFhO0FBQ2IsMENBQTBDO0FBQzFDLFdBQVc7QUFDWCxvQkFBb0I7QUFDcEIsUUFBUTtBQUNSLG1CQUFtQjtBQUNuQixNQUFNO0FBQ04sRUFBRTtBQUNGLGdEQUFnRDtBQUNoRCxzQkFBc0I7QUFDdEIsaURBQWlEO0FBQ2pELE1BQU07QUFDTixFQUFFO0FBQ0YsZ0NBQWdDO0FBQ2hDLGdDQUFnQztBQUNoQyxrQ0FBa0M7QUFDbEMsZ0RBQWdEO0FBQ2hELGlDQUFpQztBQUNqQyxpRUFBaUU7QUFDakUsbUJBQW1CO0FBQ25CLHVDQUF1QztBQUN2QyxZQUFZO0FBQ1osVUFBVTtBQUNWLFFBQVE7QUFDUixnQ0FBZ0M7QUFDaEMsbUVBQW1FO0FBQ25FLGVBQWU7QUFDZixzQ0FBc0M7QUFDdEMsUUFBUTtBQUNSLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsTUFBTTtBQUNOLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmllbGRNYW5hZ2VyLFxuICBJRmllbGRTdG9yZWRNZXRhZGF0YSxcbiAgUFJPUEVSVFlfTUVUQURBVEFfS0VZLFxufSBmcm9tICcuL2ZpZWxkcy9iYXNlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxGaWVsZHMgPSBSZWFkb25seTxNYXA8c3RyaW5nLCBJRmllbGRTdG9yZWRNZXRhZGF0YTxhbnk+Pj47XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZGF0YSBtb2RlbC5cbiAqXG4gKiBFYWNoIGNsYXNzIG11c3QgaGF2ZSBhIHN0YXRpYyBfX25hbWVcbiAqIHByaW1hcnkgZmllbGQgaXMgZ2l2ZW4gd2l0aCBpZCBmaWVsZC5cbiAqXG4gKiBTb21lIG1ldGhvZHMgYXJlIHByb3ZpZGVkIHRvIGJlIHVzZWQgd2l0aCBhIGNvbGxlY3Rpb24sIG1vc3RseSBmb3IgQ1JVRCBvcGVyYXRpb25zLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFNb2RlbCB7XG4gIC8qKlxuICAgKiBkYXRhIG1vZGVsIG5hbWVcbiAgICogdGhpcyBuZWVkIHRvIGJlIGdpdmVuIGJlY2F1c2UgY2xhc3MgbmFtZSBpcyBub3QgZnVsbHkgYXZhaWxhYmxlIGJlY2F1c2Ugb2YgbWluaWZpY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBfX25hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBQcmltYXJ5IGZpZWxkOyByZWFkb25seTsgbXVzdCBiZSBjcmVhdGVkIGFuZCBhdXRvIGluY3JlbWVudGVkIG9uIGRiIHNpZGUuXG4gICAqL1xuICAvLyBAcHJpbWFyeUZpZWxkKHtcbiAgLy8gICBkZXNjcmlwdGlvbjogJ0lEJyxcbiAgLy8gICBoZWxwOiAnSWRlbnRpZmlhbnQgcHJpbWFpcmUnLFxuICAvLyB9KVxuICBwdWJsaWMgaWQhOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX0Y6IERhdGFNb2RlbEZpZWxkcztcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgZm9yIGRhdGEgbW9kZWwgaW5zdGFuY2UuXG4gICAqIEEgbWF0Y2hpbmcgY29sbGVjdGlvbiBjYW4gYmUgcHJvdmlkZWQuXG4gICAqIF9fX2ZpZWxkcyByZWFkb25seSBwcm9wZXJ0eSBpcyBhbHNvIHBvcHVsYXRlZCBmcm9tIFJlZmxlY3RlZCBtZXRhZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gX2NvbGwgY29sbGVjdGlvbiB1c2VkIGZvciBDUlVELCBldGMuLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jb2xsPzogQ29sbGVjdGlvbjxhbnk+KSB7XG4gICAgY29uc3QgbWQ6IE1hcDxzdHJpbmcsIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT4+IHwgdW5kZWZpbmVkID1cbiAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoUFJPUEVSVFlfTUVUQURBVEFfS0VZLCB0aGlzKTtcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgICBpZiAoIW1kKSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBvY2N1ciBhcyBhbGwgZGF0YW1vZGVsIGhhdmUgYXQgbGVhc3QgaWQgZmllbGRcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ05vIHByb3BlcnR5IG1ldGFkYXRhIGZvdW5kIGZvciB0aGlzIG9iamVjdDsgaXMgdGhlcmUgYSBwcm9wZXJ0eSBpbiBjdXJyZW50IGNvbGxlY3Rpb24gPydcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIEdldCBhbGwgZmllbGRzIGZyb20gY3VycmVudCBjbGFzcyBhbmQgaXRzIHBhcmVudHNcbiAgICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwPHN0cmluZywgSUZpZWxkU3RvcmVkTWV0YWRhdGE8YW55Pj4oKTtcbiAgICBsZXQgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO1xuICAgIHdoaWxlIChwYXJlbnQuY29uc3RydWN0b3IubmFtZSAhPT0gJ09iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBtZC5rZXlzKCkpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZi5zcGxpdCgnX18nKVsxXTtcbiAgICAgICAgaWYgKGZpZWxkcy5oYXMoZmllbGROYW1lKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmLmluZGV4T2YocGFyZW50LmNvbnN0cnVjdG9yLl9fbmFtZSArICdfXycpID09PSAwKSB7XG4gICAgICAgICAgZmllbGRzLnNldChmaWVsZE5hbWUsIG1kLmdldChmKSEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocGFyZW50KTtcbiAgICB9XG4gICAgdGhpcy5fRiA9IE9iamVjdC5mcmVlemUoZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgX2NvbGxlY3Rpb24oKTogQ29sbGVjdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY29sbCBhcyBDb2xsZWN0aW9uPGFueT47XG4gIH1cblxuICBwdWJsaWMgc2V0IF9jb2xsZWN0aW9uKGNvbGw6IENvbGxlY3Rpb248YW55Pikge1xuICAgIHRoaXMuX2NvbGwgPSBjb2xsO1xuICB9XG5cbiAgLyoqXG4gICAqICBIYXNoTWFwIG9mIGZpZWxkcyBtZXRhZGF0YSAodHlwZSwgbmFtZSwgbWFuYWdlciwgZXRjLi4uKVxuICAgKi9cbiAgcHVibGljIGdldCBGKCk6IERhdGFNb2RlbEZpZWxkcyB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gICAgaWYgKCF0aGlzLl9GKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YSBtb2RlbCwgZmllbGRzIG1ldGFkYXRhIGlzIG1pc3NpbmcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX0Y7XG4gIH1cblxuICAvLyBSZXR1cm4gZmllbGQgbmFtZXMgaXRlcmF0b3JcbiAgcHVibGljIGdldCBGTigpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLkYua2V5cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIG1vZGVsIGRhdGEgZnJvbSBqc29uLlxuICAgKiBJZiBwYXJ0aWFsIGlzIHRydWUsIG9ubHkgZmllbGRzIHdpdGggbWF0Y2hpbmcgZGF0YSBrZXlzIHdpbGwgYmUgbG9hZGVkXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZnJvbUpzb24oXG4gICAgZGF0YTogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9LFxuICAgIHsgcGFydGlhbCwgY2hlY2sgfTogeyBwYXJ0aWFsPzogYm9vbGVhbjsgY2hlY2s/OiBib29sZWFuIH0gPSB7XG4gICAgICBwYXJ0aWFsOiBmYWxzZSxcbiAgICAgIGNoZWNrOiBmYWxzZSxcbiAgICB9XG4gICk6IG51bGwgfCBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCBlcnJvcnM6IHsgW2luZGV4OiBzdHJpbmddOiBudWxsIHwgVmFsaWRhdGlvbkVycm9ycyB9ID0ge307XG4gICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLkZOKSB7XG4gICAgICBpZiAoIXBhcnRpYWwgfHwgKHBhcnRpYWwgJiYgT2JqZWN0LmtleXMoZGF0YSkuaW5kZXhPZihmKSAhPT0gLTEpKSB7XG4gICAgICAgIGNvbnN0IGZlcnIgPSB0aGlzLnNldEZWKGYsIHRoaXMuRk0oZikuZnJvbUpzb24oZGF0YVtmXSksIGNoZWNrKTtcbiAgICAgICAgaWYgKGZlcnIgIT09IG51bGwpIHtcbiAgICAgICAgICBlcnJvcnNbZl0gPSBmZXJyO1xuICAgICAgICAgIGhhdmVFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhdmVFcnJvciA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKGZpZWxkcz86IHN0cmluZyB8IHN0cmluZ1tdKTogYW55IHtcbiAgICBpZiAoZmllbGRzICYmICFBcnJheS5pc0FycmF5KGZpZWxkcykpIHtcbiAgICAgIGZpZWxkcyA9IFtmaWVsZHNdO1xuICAgIH1cbiAgICBjb25zdCBvdXQ6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnN0IGZsID0gdGhpcy5GO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLkZOKSB7XG4gICAgICBjb25zdCBtZ3IgPSB0aGlzLkZNKGYpO1xuICAgICAgaWYgKCFmaWVsZHMgfHwgZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAobWdyLnJlYWRvbmx5KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0W2ZdID0gZmwuZ2V0KGYpIS5tYW5hZ2VyLnRvSnNvbih0aGlzLkZWKGYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZHMuaW5kZXhPZihmKSAhPT0gLTEpIHtcbiAgICAgICAgICBvdXRbZl0gPSBmbC5nZXQoZikhLm1hbmFnZXIudG9Kc29uKHRoaXMuRlYoZikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uPFQsIFJUIGV4dGVuZHMgeyBbaW5kZXg6IHN0cmluZ106IGFueSB9PihcbiAgICBtZXRob2Q6ICdQT1NUJyB8ICdQQVRDSCcgfCAnR0VUJyB8ICdERUxFVEUnIHwgJ1BVVCcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHtcbiAgICAgIGJvZHkgPSB1bmRlZmluZWQsXG4gICAgICB1cGRhdGUgPSBmYWxzZSxcbiAgICAgIHVwZGF0ZVBhcnRpYWwgPSB0cnVlLFxuICAgICAgdXBkYXRlQ2hlY2sgPSBmYWxzZSxcbiAgICAgIC8vIHVwZGF0ZVJhaXNlID0gZmFsc2UsXG4gICAgICBwYXJhbXMgPSB7fSxcbiAgICAgIGhlYWRlcnMgPSB7fSxcbiAgICB9OiB7XG4gICAgICBib2R5PzogeyBbX2luZGV4OiBzdHJpbmddOiBhbnkgfTtcbiAgICAgIHVwZGF0ZT86IGJvb2xlYW47XG4gICAgICB1cGRhdGVQYXJ0aWFsPzogYm9vbGVhbjtcbiAgICAgIHVwZGF0ZUNoZWNrPzogYm9vbGVhbjtcbiAgICAgIC8vIHVwZGF0ZVJhaXNlPzogYm9vbGVhbjtcbiAgICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgICBoZWFkZXJzPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIGlmICh0aGlzLl9jb2xsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29sbFxuICAgICAgLmFjdGlvbjxSVD4odGhpcywgbWV0aG9kLCBuYW1lLCB7XG4gICAgICAgIGJvZHksXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Kc29uKHJlc3VsdCwge1xuICAgICAgICAgICAgICBwYXJ0aWFsOiB1cGRhdGVQYXJ0aWFsLFxuICAgICAgICAgICAgICBjaGVjazogdXBkYXRlQ2hlY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIENhbGxlZCBvbiBtb2RlbCwgcmV0dXJucyB0aGUgbWFuYWdlciBmb3IgYSBmaWVsZC5cbiAgcHVibGljIEZNPEZUPihmaWVsZDogc3RyaW5nKTogQmFzZUZpZWxkTWFuYWdlcjxGVD4ge1xuICAgIGlmICh0aGlzLkYuaGFzKGZpZWxkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuRi5nZXQoZmllbGQpIS5tYW5hZ2VyO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtmaWVsZH0gbm90IGZvdW5kIGluICR7T2JqZWN0LmtleXModGhpcy5GKS5qb2luKCcsJyl9IG1vZGVsICR7dGhpc31gXG4gICAgKTtcbiAgfVxuXG4gIC8vIFJldHVybiBmaWVsZCB2YWx1ZSwgd2l0aG91dCB0eXBpbmdcbiAgcHVibGljIEZWPEZUPihmaWVsZDogc3RyaW5nKTogRlQge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpW2ZpZWxkXSBhcyBGVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZmllbGQgdmFsdWUuIElmIGNoZWNrIGlzIHRydWUsIG9ubHkgc2V0IHZhbHVlIGlmIGFsbCB2YWxpZGF0b3JzIHBhc3MuXG4gICAqIFNraXAgc2V0dGluZyBmaWVsZCB2YWx1ZSBpZiBtYW5hZ2VyIGNvbXB1dGVkIGZsYWcgaXMgdHJ1ZS5cbiAgICpcbiAgICogVGhlIHZhbGlkYXRpb24gcmVzdWx0IGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gZmllbGQgZmllbGQgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgZmllbGQgdmFsdWVkXG4gICAqIEBwYXJhbSBjaGVjayBkZWZhdWx0IGZhbHNlXG4gICAqIEByZXR1cm4gbnVsbCBvciBWYWxpZGF0aW9uRXJyb3JcbiAgICovXG4gIHB1YmxpYyBzZXRGVjxGVD4oXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogRlQsXG4gICAgY2hlY2s6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBudWxsIHwgVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKHRoaXMuRk0oZmllbGQpLmNvbXB1dGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICBjb25zdCBmYyA9IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSk7XG5cbiAgICAgIGZvciAoY29uc3QgdiBvZiB0aGlzLkZNKGZpZWxkKS52YWxpZGF0b3JzKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHYoZmMpO1xuICAgICAgICBpZiAodmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcih2YWwpO1xuICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgKHRoaXMgYXMgYW55KVtmaWVsZF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENhbGxlZCBvbiBtb2RlbCB3aXRoIGEgbGlzdCBvZiBmaWVsZHMsIHJldHVybnMgYSBGb3JtR3JvdXAgd2l0aFxuICAvLyB0aGVzZSBmaWVsZHMsIG9yIG9ubHkgdGhlIGZvcm0gY29udHJvbCBmb3Igb25lIGZpZWxkLlxuICBwdWJsaWMgRkMoKTogRm9ybUdyb3VwO1xuICBwdWJsaWMgRkMoZmllbGQ6IHN0cmluZyk6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgRkMoZmllbGQ6IHN0cmluZ1tdKTogRm9ybUdyb3VwO1xuICBwdWJsaWMgRkMoZmllbGQ/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEZvcm1Db250cm9sIHwgRm9ybUdyb3VwIHtcbiAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZmllbGQgPSBBcnJheS5mcm9tKHRoaXMuRk4pLmZpbHRlcigobikgPT4gIXRoaXMuRk0obikucmVhZG9ubHkpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZCkpIHtcbiAgICAgIGNvbnN0IGZnOiB7IFtpbmRleDogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZpZWxkKSB7XG4gICAgICAgIGZnW2ZdID0gdGhpcy5GQyhmKSBhcyBGb3JtQ29udHJvbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKGZnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuRk0oZmllbGQpLmZvcm1Db250cm9sKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHtcbiAgICAgIHVwZGF0ZU1vZGVsOiB0cnVlLFxuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTx0aGlzPiB7XG4gICAgaWYgKHRoaXMuX2NvbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb2xsLnNhdmUodGhpcywgeyB1cGRhdGVNb2RlbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdNaXNzaW5nIGNvbGxlY3Rpb24nKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKFxuICAgIGZpZWxkczogc3RyaW5nW10gPSBbXSxcbiAgICB7IHVwZGF0ZU1vZGVsID0gdHJ1ZSB9OiB7IHVwZGF0ZU1vZGVsPzogYm9vbGVhbiB9ID0ge1xuICAgICAgdXBkYXRlTW9kZWw6IHRydWUsXG4gICAgfVxuICApOiBPYnNlcnZhYmxlPHRoaXM+IHtcbiAgICBpZiAodGhpcy5fY29sbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbGwudXBkYXRlKHRoaXMsIGZpZWxkcywgeyB1cGRhdGVNb2RlbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdNaXNzaW5nIGNvbGxlY3Rpb24nKSk7XG4gIH1cbn1cblxuLy9cbi8vIGV4cG9ydCBjbGFzcyBUcmVlRGF0YU1vZGVsIGV4dGVuZHMgRGF0YU1vZGVsIHtcbi8vICAgc3RhdGljIG92ZXJyaWRlIF9fbmFtZSA9ICdUcmVlRGF0YU1vZGVsJztcbi8vICAgQGRldGFpbHNGaWVsZCh7XG4vLyAgICAgbW9kZWw6IHRoaXMsXG4vLyAgICAgbWFueTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ1BhcmVudHMnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgcGFyZW50c19kZXRhaWxzPzogdGhpc1tdO1xuLy9cbi8vICAgQGZvcmVpZ25LZXlGaWVsZCh7XG4vLyAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuLy8gICAgIGRlc2NyaXB0aW9uOiAnU3RydWN0dXJlIHBhcmVudGUnLFxuLy8gICAgIHJlbGF0ZWQ6ICdTdHJ1Y3R1cmUnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgcGFyZW50PzogbnVtYmVyO1xuLy9cbi8vICAgQGludGVnZXJGaWVsZCh7XG4vLyAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuLy8gICAgIHJlYWRvbmx5OiB0cnVlLFxuLy8gICAgIGRlc2NyaXB0aW9uOiAnSUQgVHJlZScsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyB0cmVlX2lkITogbnVtYmVyO1xuLy9cbi8vICAgQGludGVnZXJGaWVsZCh7XG4vLyAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuLy8gICAgIHJlYWRvbmx5OiB0cnVlLFxuLy8gICAgIGRlc2NyaXB0aW9uOiAnTVBUVCBsZWZ0Jyxcbi8vICAgfSlcbi8vICAgcHVibGljIGxmdCE6IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ01QVFQgcmlnaHQnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgcmdodCE6IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ05pdmVhdSBoacOpcmFyY2hpcXVlJyxcbi8vICAgfSlcbi8vICAgcHVibGljIGxldmVsITogbnVtYmVyO1xuLy9cbi8vICAgcHVibGljIGdldCBwYXJlbnRfZGV0YWlscygpOiB0aGlzIHwgbnVsbCB7XG4vLyAgICAgaWYgKHRoaXMucGFyZW50c19kZXRhaWxzKSB7XG4vLyAgICAgICBjb25zdCBvdXQgPSB0aGlzLnBhcmVudHNfZGV0YWlsc1t0aGlzLnBhcmVudHNfZGV0YWlscy5sZW5ndGggLSAxXTtcbi8vICAgICAgIG91dC5wYXJlbnRzX2RldGFpbHMgPSB0aGlzLnBhcmVudHNfZGV0YWlscy5zbGljZShcbi8vICAgICAgICAgMCxcbi8vICAgICAgICAgdGhpcy5wYXJlbnRzX2RldGFpbHMubGVuZ3RoIC0gMVxuLy8gICAgICAgKTtcbi8vICAgICAgIHJldHVybiBvdXQ7XG4vLyAgICAgfVxuLy8gICAgIHJldHVybiBudWxsO1xuLy8gICB9XG4vL1xuLy8gICBwdWJsaWMgc2V0IHBhcmVudF9kZXRhaWxzKGQ6IHRoaXMgfCBudWxsKSB7XG4vLyAgICAgY29uc29sZS5sb2coZCk7XG4vLyAgICAgdGhpcy5wYXJlbnRzX2RldGFpbHMgPSBkPy5wYXJlbnRzX2RldGFpbHM7XG4vLyAgIH1cbi8vXG4vLyAgIHB1YmxpYyBfZGlzcGxheSgpOiBzdHJpbmcge1xuLy8gICAgIGNvbnN0IG91dDogc3RyaW5nW10gPSBbXTtcbi8vICAgICBpZiAodGhpcy5wYXJlbnRzX2RldGFpbHMpIHtcbi8vICAgICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLnBhcmVudHNfZGV0YWlscykge1xuLy8gICAgICAgICBpZiAoKHAgYXMgYW55KS5jb2RlKSB7XG4vLyAgICAgICAgICAgb3V0LnB1c2goYFskeyhwIGFzIGFueSkuY29kZX1dICR7KHAgYXMgYW55KS5uYW1lfWApO1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgIG91dC5wdXNoKChwIGFzIGFueSkubmFtZSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgaWYgKCh0aGlzIGFzIGFueSkuY29kZSkge1xuLy8gICAgICAgb3V0LnB1c2goYFskeyh0aGlzIGFzIGFueSkuY29kZX1dICR7KHRoaXMgYXMgYW55KS5uYW1lfWApO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBvdXQucHVzaCgodGhpcyBhcyBhbnkpLm5hbWUpO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIG91dC5qb2luKCcgOiAnKTtcbi8vICAgfVxuLy8gfVxuIl19
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from "@angular/core";
|
|
2
|
-
/**
|
|
3
|
-
* DATA_API_URL: stores data api base url
|
|
4
|
-
*/
|
|
5
|
-
export const DATA_API_URL = new InjectionToken("data.api.url");
|
|
6
|
-
/**
|
|
7
|
-
* DATA_MAX_TRANSFERSTATE_TIME: max duration to use transferstate time
|
|
8
|
-
* If DATA_MAX_TRANSFERSTATE_TIME is zero, TransferState is not used
|
|
9
|
-
*/
|
|
10
|
-
export const DATA_MAX_TRANSFERSTATE_TIME = new InjectionToken("data.max.transfer.state");
|
|
11
|
-
export const BootstrapDataDisplayConfig = {
|
|
12
|
-
dispEdit: {
|
|
13
|
-
defaultMode: "dd",
|
|
14
|
-
inputClasses: {
|
|
15
|
-
"input.text": "form-control",
|
|
16
|
-
"input.email": "form-control",
|
|
17
|
-
"input.datetime": "form-control",
|
|
18
|
-
"input.date": "form-control",
|
|
19
|
-
"input.number": "form-control",
|
|
20
|
-
"input.decimal": "form-control",
|
|
21
|
-
"input.checkbox": "form-control",
|
|
22
|
-
"input.password": "form-control",
|
|
23
|
-
"textarea": "form-control",
|
|
24
|
-
"quill": "",
|
|
25
|
-
"fkselect": "form-control",
|
|
26
|
-
"select": "form-select"
|
|
27
|
-
},
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* DATA_DISPLAY_CONFIG: display config & default classes injection token
|
|
32
|
-
*/
|
|
33
|
-
export const DATA_DISPLAY_CONFIG = new InjectionToken("data.display.config");
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wYXJhbWV0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1wYXJhbWV0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFDdkU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQVMseUJBQXlCLENBQUMsQ0FBQztBQVlqRyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBc0I7SUFDM0QsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUFFLElBQUk7UUFDakIsWUFBWSxFQUFFO1lBQ1osWUFBWSxFQUFFLGNBQWM7WUFDNUIsYUFBYSxFQUFFLGNBQWM7WUFDN0IsZ0JBQWdCLEVBQUUsY0FBYztZQUNoQyxZQUFZLEVBQUUsY0FBYztZQUM1QixjQUFjLEVBQUUsY0FBYztZQUM5QixlQUFlLEVBQUUsY0FBYztZQUMvQixnQkFBZ0IsRUFBRSxjQUFjO1lBQ2hDLGdCQUFnQixFQUFDLGNBQWM7WUFDL0IsVUFBVSxFQUFFLGNBQWM7WUFDMUIsT0FBTyxFQUFFLEVBQUU7WUFDWCxVQUFVLEVBQUUsY0FBYztZQUMxQixRQUFRLEVBQUUsYUFBYTtTQUN4QjtLQUNGO0NBQ0YsQ0FBQztBQUdGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQW9CLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIERBVEFfQVBJX1VSTDogc3RvcmVzIGRhdGEgYXBpIGJhc2UgdXJsXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX0FQSV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImRhdGEuYXBpLnVybFwiKTtcbi8qKlxuICogREFUQV9NQVhfVFJBTlNGRVJTVEFURV9USU1FOiBtYXggZHVyYXRpb24gdG8gdXNlIHRyYW5zZmVyc3RhdGUgdGltZVxuICogSWYgREFUQV9NQVhfVFJBTlNGRVJTVEFURV9USU1FIGlzIHplcm8sIFRyYW5zZmVyU3RhdGUgaXMgbm90IHVzZWRcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwiZGF0YS5tYXgudHJhbnNmZXIuc3RhdGVcIik7XG5cbi8qKlxuICogRGF0YURpc3BsYXlDb25maWcgaW50ZXJmYWNlIHByb3ZpZGVzIGRlZmF1bHQgdmFsdWVzIGZvciBkaXNwbGF5IGNsYXNzZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhRGlzcGxheUNvbmZpZyB7XG4gIGRpc3BFZGl0OiB7XG4gICAgZGVmYXVsdE1vZGU6IFwiaW5saW5lXCIgfCBcImRkXCI7XG4gICAgaW5wdXRDbGFzc2VzOiB7W2luZGV4OiBzdHJpbmddOiBzdHJpbmd9O1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQm9vdHN0cmFwRGF0YURpc3BsYXlDb25maWc6IERhdGFEaXNwbGF5Q29uZmlnID0ge1xuICBkaXNwRWRpdDoge1xuICAgIGRlZmF1bHRNb2RlOiBcImRkXCIsXG4gICAgaW5wdXRDbGFzc2VzOiB7XG4gICAgICBcImlucHV0LnRleHRcIjogXCJmb3JtLWNvbnRyb2xcIixcbiAgICAgIFwiaW5wdXQuZW1haWxcIjogXCJmb3JtLWNvbnRyb2xcIixcbiAgICAgIFwiaW5wdXQuZGF0ZXRpbWVcIjogXCJmb3JtLWNvbnRyb2xcIixcbiAgICAgIFwiaW5wdXQuZGF0ZVwiOiBcImZvcm0tY29udHJvbFwiLFxuICAgICAgXCJpbnB1dC5udW1iZXJcIjogXCJmb3JtLWNvbnRyb2xcIixcbiAgICAgIFwiaW5wdXQuZGVjaW1hbFwiOiBcImZvcm0tY29udHJvbFwiLFxuICAgICAgXCJpbnB1dC5jaGVja2JveFwiOiBcImZvcm0tY29udHJvbFwiLFxuICAgICAgXCJpbnB1dC5wYXNzd29yZFwiOlwiZm9ybS1jb250cm9sXCIsXG4gICAgICBcInRleHRhcmVhXCI6IFwiZm9ybS1jb250cm9sXCIsXG4gICAgICBcInF1aWxsXCI6IFwiXCIsXG4gICAgICBcImZrc2VsZWN0XCI6IFwiZm9ybS1jb250cm9sXCIsXG4gICAgICBcInNlbGVjdFwiOiBcImZvcm0tc2VsZWN0XCJcbiAgICB9LFxuICB9XG59O1xuXG5cbi8qKlxuICogREFUQV9ESVNQTEFZX0NPTkZJRzogZGlzcGxheSBjb25maWcgJiBkZWZhdWx0IGNsYXNzZXMgaW5qZWN0aW9uIHRva2VuXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX0RJU1BMQVlfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPERhdGFEaXNwbGF5Q29uZmlnPihcImRhdGEuZGlzcGxheS5jb25maWdcIik7XG4iXX0=
|