@alfresco/aca-shared 5.1.1 → 5.2.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/esm2022/lib/components/document-base-page/document-base-page.component.mjs +226 -0
- package/esm2022/lib/components/generic-error/generic-error.component.mjs +42 -0
- package/esm2022/lib/components/info-drawer/info-drawer.component.mjs +141 -0
- package/esm2022/lib/components/locked-by/locked-by.component.mjs +57 -0
- package/esm2022/lib/components/open-in-app/open-in-app.component.mjs +73 -0
- package/esm2022/lib/components/page-layout/page-layout-content.component.mjs +49 -0
- package/esm2022/lib/components/page-layout/page-layout-error.component.mjs +43 -0
- package/esm2022/lib/components/page-layout/page-layout-header.component.mjs +43 -0
- package/esm2022/lib/components/page-layout/page-layout.component.mjs +64 -0
- package/esm2022/lib/components/page-layout/page-layout.module.mjs +43 -0
- package/esm2022/lib/components/toolbar/toolbar-action/toolbar-action.component.mjs +63 -0
- package/esm2022/lib/components/toolbar/toolbar-button/toolbar-button.component.mjs +79 -0
- package/esm2022/lib/components/toolbar/toolbar-menu/toolbar-menu.component.mjs +92 -0
- package/esm2022/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.mjs +76 -0
- package/esm2022/lib/components/toolbar/toolbar.component.mjs +46 -0
- package/esm2022/lib/deprecated/shared-toolbar.module.mjs +44 -0
- package/esm2022/lib/deprecated/shared.module.mjs +45 -0
- package/esm2022/lib/directives/contextmenu/contextmenu.directive.mjs +114 -0
- package/esm2022/lib/directives/pagination.directive.mjs +59 -0
- package/esm2022/lib/services/aca-mobile-app-switcher.service.mjs +130 -0
- package/esm2022/lib/services/app-hook.service.mjs +78 -0
- package/esm2022/lib/services/app-settings.service.mjs +157 -0
- package/esm2022/lib/services/app.extension.service.mjs +481 -0
- package/esm2022/lib/services/app.service.mjs +239 -0
- package/esm2022/lib/services/auto-download.service.mjs +59 -0
- package/esm2022/lib/services/content-api.service.mjs +281 -0
- package/esm2022/lib/services/navigation-history.service.mjs +55 -0
- package/esm2022/lib/services/node-permission.service.mjs +88 -0
- package/esm2022/lib/services/router.extension.service.mjs +108 -0
- package/esm2022/lib/services/user-profile.service.mjs +76 -0
- package/esm2022/lib/testing/lib-testing-module.mjs +163 -0
- package/esm2022/public-api.mjs +62 -0
- package/esm2022/store/actions/app.actions.mjs +116 -0
- package/esm2022/store/actions/context-menu-action-types.mjs +29 -0
- package/esm2022/store/actions/contextmenu.actions.mjs +41 -0
- package/esm2022/store/actions/library.actions.mjs +67 -0
- package/esm2022/store/actions/metadata-aspect.actions.mjs +32 -0
- package/esm2022/store/actions/node.actions.mjs +217 -0
- package/esm2022/store/actions/router.actions.mjs +56 -0
- package/esm2022/store/actions/search-ai.actions.mjs +45 -0
- package/esm2022/store/actions/search.actions.mjs +41 -0
- package/esm2022/store/actions/snackbar.actions.mjs +68 -0
- package/esm2022/store/actions/template.actions.mjs +45 -0
- package/esm2022/store/actions/upload.actions.mjs +53 -0
- package/esm2022/store/actions/viewer.actions.mjs +93 -0
- package/esm2022/store/effects/router.effects.mjs +110 -0
- package/esm2022/store/effects/snackbar.effects.mjs +80 -0
- package/{fesm2020 → fesm2022}/alfresco-aca-shared-store.mjs +219 -142
- package/fesm2022/alfresco-aca-shared-store.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/alfresco-aca-shared.mjs +466 -301
- package/fesm2022/alfresco-aca-shared.mjs.map +1 -0
- package/lib/components/document-base-page/document-base-page.component.d.ts +7 -3
- package/lib/components/generic-error/generic-error.component.d.ts +1 -1
- package/lib/components/info-drawer/info-drawer.component.d.ts +1 -1
- package/lib/components/locked-by/locked-by.component.d.ts +1 -1
- package/lib/components/page-layout/page-layout-content.component.d.ts +1 -1
- package/lib/components/page-layout/page-layout.component.d.ts +1 -1
- package/lib/components/toolbar/toolbar-action/toolbar-action.component.d.ts +1 -1
- package/lib/components/toolbar/toolbar-button/toolbar-button.component.d.ts +1 -1
- package/lib/components/toolbar/toolbar-menu/toolbar-menu.component.d.ts +1 -1
- package/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.d.ts +1 -1
- package/lib/components/toolbar/toolbar.component.d.ts +1 -1
- package/lib/directives/contextmenu/contextmenu.directive.d.ts +3 -1
- package/lib/services/app-hook.service.d.ts +6 -6
- package/lib/services/app-settings.service.d.ts +12 -0
- package/lib/services/app.service.d.ts +1 -1
- package/lib/services/navigation-history.service.d.ts +13 -0
- package/lib/services/node-permission.service.d.ts +1 -1
- package/package.json +15 -25
- package/public-api.d.ts +1 -0
- package/store/actions/context-menu-action-types.d.ts +2 -1
- package/store/actions/contextmenu.actions.d.ts +7 -0
- package/store/actions/search-ai.actions.d.ts +2 -1
- package/store/effects/router.effects.d.ts +1 -5
- package/store/effects/snackbar.effects.d.ts +0 -29
- package/esm2020/lib/components/document-base-page/document-base-page.component.mjs +0 -206
- package/esm2020/lib/components/generic-error/generic-error.component.mjs +0 -43
- package/esm2020/lib/components/info-drawer/info-drawer.component.mjs +0 -132
- package/esm2020/lib/components/locked-by/locked-by.component.mjs +0 -54
- package/esm2020/lib/components/open-in-app/open-in-app.component.mjs +0 -68
- package/esm2020/lib/components/page-layout/page-layout-content.component.mjs +0 -50
- package/esm2020/lib/components/page-layout/page-layout-error.component.mjs +0 -42
- package/esm2020/lib/components/page-layout/page-layout-header.component.mjs +0 -42
- package/esm2020/lib/components/page-layout/page-layout.component.mjs +0 -61
- package/esm2020/lib/components/page-layout/page-layout.module.mjs +0 -42
- package/esm2020/lib/components/toolbar/toolbar-action/toolbar-action.component.mjs +0 -58
- package/esm2020/lib/components/toolbar/toolbar-button/toolbar-button.component.mjs +0 -74
- package/esm2020/lib/components/toolbar/toolbar-menu/toolbar-menu.component.mjs +0 -87
- package/esm2020/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.mjs +0 -71
- package/esm2020/lib/components/toolbar/toolbar.component.mjs +0 -44
- package/esm2020/lib/deprecated/shared-toolbar.module.mjs +0 -43
- package/esm2020/lib/deprecated/shared.module.mjs +0 -44
- package/esm2020/lib/directives/contextmenu/contextmenu.directive.mjs +0 -104
- package/esm2020/lib/directives/pagination.directive.mjs +0 -55
- package/esm2020/lib/services/aca-mobile-app-switcher.service.mjs +0 -129
- package/esm2020/lib/services/app-hook.service.mjs +0 -79
- package/esm2020/lib/services/app-settings.service.mjs +0 -140
- package/esm2020/lib/services/app.extension.service.mjs +0 -462
- package/esm2020/lib/services/app.service.mjs +0 -221
- package/esm2020/lib/services/auto-download.service.mjs +0 -60
- package/esm2020/lib/services/content-api.service.mjs +0 -268
- package/esm2020/lib/services/node-permission.service.mjs +0 -89
- package/esm2020/lib/services/router.extension.service.mjs +0 -105
- package/esm2020/lib/services/user-profile.service.mjs +0 -77
- package/esm2020/lib/testing/lib-testing-module.mjs +0 -161
- package/esm2020/public-api.mjs +0 -61
- package/esm2020/store/actions/app.actions.mjs +0 -108
- package/esm2020/store/actions/context-menu-action-types.mjs +0 -28
- package/esm2020/store/actions/contextmenu.actions.mjs +0 -31
- package/esm2020/store/actions/library.actions.mjs +0 -63
- package/esm2020/store/actions/metadata-aspect.actions.mjs +0 -31
- package/esm2020/store/actions/node.actions.mjs +0 -188
- package/esm2020/store/actions/router.actions.mjs +0 -54
- package/esm2020/store/actions/search-ai.actions.mjs +0 -41
- package/esm2020/store/actions/search.actions.mjs +0 -41
- package/esm2020/store/actions/snackbar.actions.mjs +0 -57
- package/esm2020/store/actions/template.actions.mjs +0 -47
- package/esm2020/store/actions/upload.actions.mjs +0 -49
- package/esm2020/store/actions/viewer.actions.mjs +0 -81
- package/esm2020/store/effects/router.effects.mjs +0 -114
- package/esm2020/store/effects/snackbar.effects.mjs +0 -85
- package/fesm2015/alfresco-aca-shared-rules.mjs +0 -795
- package/fesm2015/alfresco-aca-shared-rules.mjs.map +0 -1
- package/fesm2015/alfresco-aca-shared-store.mjs +0 -1278
- package/fesm2015/alfresco-aca-shared-store.mjs.map +0 -1
- package/fesm2015/alfresco-aca-shared.mjs +0 -3278
- package/fesm2015/alfresco-aca-shared.mjs.map +0 -1
- package/fesm2020/alfresco-aca-shared-store.mjs.map +0 -1
- package/fesm2020/alfresco-aca-shared.mjs.map +0 -1
- /package/{esm2020 → esm2022}/alfresco-aca-shared.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/adf-extensions/extensions-data-loader.guard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/document-base-page/document-base-page.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/mime-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/viewer.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/routing/plugin-enabled.guard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/routing/shared.guard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/node.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/alfresco-aca-shared-rules.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/app.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/navigation.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/repository.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/rules/user.rules.mjs +0 -0
- /package/{esm2020 → esm2022}/store/actions/app-action-types.mjs +0 -0
- /package/{esm2020 → esm2022}/store/actions/router-action-types.mjs +0 -0
- /package/{esm2020 → esm2022}/store/actions/template-action-types.mjs +0 -0
- /package/{esm2020 → esm2022}/store/alfresco-aca-shared-store.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/ai-search-by-term-payload.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/delete-status.model.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/deleted-node-info.model.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/modal-configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/node-info.model.mjs +0 -0
- /package/{esm2020 → esm2022}/store/models/search-option.model.mjs +0 -0
- /package/{esm2020 → esm2022}/store/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/store/selectors/app.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/store/states/app.state.mjs +0 -0
- /package/{fesm2020 → fesm2022}/alfresco-aca-shared-rules.mjs +0 -0
- /package/{fesm2020 → fesm2022}/alfresco-aca-shared-rules.mjs.map +0 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Injectable } from '@angular/core';
|
|
25
|
+
import { UserPreferencesService } from '@alfresco/adf-core';
|
|
26
|
+
import { AlfrescoApiService } from '@alfresco/adf-content-services';
|
|
27
|
+
import { from } from 'rxjs';
|
|
28
|
+
import { NodesApi, TrashcanApi, SharedlinksApi, DiscoveryApi, FavoritesApi, ContentApi, SitesApi, SearchApi, PeopleApi, VersionsApi } from '@alfresco/js-api';
|
|
29
|
+
import { map } from 'rxjs/operators';
|
|
30
|
+
import * as i0 from "@angular/core";
|
|
31
|
+
import * as i1 from "@alfresco/adf-content-services";
|
|
32
|
+
import * as i2 from "@alfresco/adf-core";
|
|
33
|
+
class ContentApiService {
|
|
34
|
+
api;
|
|
35
|
+
preferences;
|
|
36
|
+
_nodesApi;
|
|
37
|
+
get nodesApi() {
|
|
38
|
+
this._nodesApi = this._nodesApi ?? new NodesApi(this.api.getInstance());
|
|
39
|
+
return this._nodesApi;
|
|
40
|
+
}
|
|
41
|
+
_trashcanApi;
|
|
42
|
+
get trashcanApi() {
|
|
43
|
+
this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.api.getInstance());
|
|
44
|
+
return this._trashcanApi;
|
|
45
|
+
}
|
|
46
|
+
_sharedLinksApi;
|
|
47
|
+
get sharedLinksApi() {
|
|
48
|
+
this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.api.getInstance());
|
|
49
|
+
return this._sharedLinksApi;
|
|
50
|
+
}
|
|
51
|
+
_discoveryApi;
|
|
52
|
+
get discoveryApi() {
|
|
53
|
+
this._discoveryApi = this._discoveryApi ?? new DiscoveryApi(this.api.getInstance());
|
|
54
|
+
return this._discoveryApi;
|
|
55
|
+
}
|
|
56
|
+
_favoritesApi;
|
|
57
|
+
get favoritesApi() {
|
|
58
|
+
this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.api.getInstance());
|
|
59
|
+
return this._favoritesApi;
|
|
60
|
+
}
|
|
61
|
+
_contentApi;
|
|
62
|
+
get contentApi() {
|
|
63
|
+
this._contentApi = this._contentApi ?? new ContentApi(this.api.getInstance());
|
|
64
|
+
return this._contentApi;
|
|
65
|
+
}
|
|
66
|
+
_sitesApi;
|
|
67
|
+
get sitesApi() {
|
|
68
|
+
this._sitesApi = this._sitesApi ?? new SitesApi(this.api.getInstance());
|
|
69
|
+
return this._sitesApi;
|
|
70
|
+
}
|
|
71
|
+
_searchApi;
|
|
72
|
+
get searchApi() {
|
|
73
|
+
this._searchApi = this._searchApi ?? new SearchApi(this.api.getInstance());
|
|
74
|
+
return this._searchApi;
|
|
75
|
+
}
|
|
76
|
+
_peopleApi;
|
|
77
|
+
get peopleApi() {
|
|
78
|
+
this._peopleApi = this._peopleApi ?? new PeopleApi(this.api.getInstance());
|
|
79
|
+
return this._peopleApi;
|
|
80
|
+
}
|
|
81
|
+
_versionsApi;
|
|
82
|
+
get versionsApi() {
|
|
83
|
+
this._versionsApi = this._versionsApi ?? new VersionsApi(this.api.getInstance());
|
|
84
|
+
return this._versionsApi;
|
|
85
|
+
}
|
|
86
|
+
constructor(api, preferences) {
|
|
87
|
+
this.api = api;
|
|
88
|
+
this.preferences = preferences;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Moves a node to the trashcan.
|
|
92
|
+
*
|
|
93
|
+
* @param nodeId ID of the target node
|
|
94
|
+
* @param options Optional parameters supported by JS-API
|
|
95
|
+
* @returns Empty result that notifies when the deletion is complete
|
|
96
|
+
*/
|
|
97
|
+
deleteNode(nodeId, options = {}) {
|
|
98
|
+
return from(this.nodesApi.deleteNode(nodeId, options));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Gets the stored information about a node.
|
|
102
|
+
*
|
|
103
|
+
* @param nodeId ID of the target node
|
|
104
|
+
* @param options Optional parameters supported by JS-API
|
|
105
|
+
* @returns Node information
|
|
106
|
+
*/
|
|
107
|
+
getNode(nodeId, options = {}) {
|
|
108
|
+
const defaults = {
|
|
109
|
+
include: ['path', 'properties', 'allowableOperations', 'permissions', 'definition']
|
|
110
|
+
};
|
|
111
|
+
const queryOptions = Object.assign(defaults, options);
|
|
112
|
+
return from(this.nodesApi.getNode(nodeId, queryOptions));
|
|
113
|
+
}
|
|
114
|
+
getNodeInfo(nodeId, options) {
|
|
115
|
+
const defaults = {
|
|
116
|
+
include: ['isFavorite', 'allowableOperations', 'path', 'definition']
|
|
117
|
+
};
|
|
118
|
+
const queryOptions = Object.assign(defaults, options || {});
|
|
119
|
+
return from(new Promise((resolve, reject) => {
|
|
120
|
+
this.nodesApi.getNode(nodeId, queryOptions).then((nodeEntry) => {
|
|
121
|
+
resolve(nodeEntry.entry);
|
|
122
|
+
}, (error) => {
|
|
123
|
+
reject(error);
|
|
124
|
+
});
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets the items contained in a folder node.
|
|
129
|
+
*
|
|
130
|
+
* @param nodeId ID of the target node
|
|
131
|
+
* @param options Optional parameters supported by JS-API
|
|
132
|
+
* @returns List of child items from the folder
|
|
133
|
+
*/
|
|
134
|
+
getNodeChildren(nodeId, options = {}) {
|
|
135
|
+
const defaults = {
|
|
136
|
+
maxItems: this.preferences.paginationSize,
|
|
137
|
+
skipCount: 0,
|
|
138
|
+
include: ['isLocked', 'path', 'properties', 'allowableOperations', 'permissions']
|
|
139
|
+
};
|
|
140
|
+
const queryOptions = Object.assign(defaults, options);
|
|
141
|
+
return from(this.nodesApi.listNodeChildren(nodeId, queryOptions));
|
|
142
|
+
}
|
|
143
|
+
deleteSharedLink(linkId) {
|
|
144
|
+
return from(this.sharedLinksApi.deleteSharedLink(linkId));
|
|
145
|
+
}
|
|
146
|
+
getDeletedNodes(options = {}) {
|
|
147
|
+
const defaults = {
|
|
148
|
+
include: ['path']
|
|
149
|
+
};
|
|
150
|
+
const queryOptions = Object.assign(defaults, options);
|
|
151
|
+
return from(this.trashcanApi.listDeletedNodes(queryOptions));
|
|
152
|
+
}
|
|
153
|
+
restoreNode(nodeId) {
|
|
154
|
+
return from(this.trashcanApi.restoreDeletedNode(nodeId));
|
|
155
|
+
}
|
|
156
|
+
purgeDeletedNode(nodeId) {
|
|
157
|
+
return from(this.trashcanApi.deleteDeletedNode(nodeId));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Gets information about a user identified by their username.
|
|
161
|
+
*
|
|
162
|
+
* @param personId ID of the target user
|
|
163
|
+
* @param options Api options
|
|
164
|
+
* @returns User information
|
|
165
|
+
*/
|
|
166
|
+
getPerson(personId, options) {
|
|
167
|
+
return from(this.peopleApi.getPerson(personId, options));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Copy a node to destination node
|
|
171
|
+
*
|
|
172
|
+
* @param nodeId The id of the node to be copied
|
|
173
|
+
* @param targetParentId The id of the folder-node where the node have to be copied to
|
|
174
|
+
* @param name The new name for the copy that would be added on the destination folder
|
|
175
|
+
* @param opts Api options
|
|
176
|
+
*/
|
|
177
|
+
copyNode(nodeId, targetParentId, name, opts) {
|
|
178
|
+
return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }, opts));
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Gets product information for Content Services.
|
|
182
|
+
*
|
|
183
|
+
* @returns ProductVersionModel containing product details
|
|
184
|
+
*/
|
|
185
|
+
getRepositoryInformation() {
|
|
186
|
+
return from(this.discoveryApi.getRepositoryInformation());
|
|
187
|
+
}
|
|
188
|
+
getFavorites(personId, opts) {
|
|
189
|
+
return from(this.favoritesApi.listFavorites(personId, opts));
|
|
190
|
+
}
|
|
191
|
+
getFavoriteLibraries(personId = '-me-', opts) {
|
|
192
|
+
return this.getFavorites(personId, {
|
|
193
|
+
...opts,
|
|
194
|
+
where: '(EXISTS(target/site))'
|
|
195
|
+
}).pipe(map((response) => ({
|
|
196
|
+
list: {
|
|
197
|
+
entries: response.list.entries.map(({ entry }) => {
|
|
198
|
+
entry.target.site.createdAt = entry.createdAt;
|
|
199
|
+
return {
|
|
200
|
+
entry: entry.target.site
|
|
201
|
+
};
|
|
202
|
+
}),
|
|
203
|
+
pagination: response.list.pagination
|
|
204
|
+
}
|
|
205
|
+
})));
|
|
206
|
+
}
|
|
207
|
+
findSharedLinks(opts) {
|
|
208
|
+
return from(this.sharedLinksApi.listSharedLinks(opts));
|
|
209
|
+
}
|
|
210
|
+
getSharedLinkContent(sharedId, attachment) {
|
|
211
|
+
return this.contentApi.getSharedLinkContentUrl(sharedId, attachment);
|
|
212
|
+
}
|
|
213
|
+
search(request) {
|
|
214
|
+
return from(this.searchApi.search(request));
|
|
215
|
+
}
|
|
216
|
+
getContentUrl(nodeId, attachment) {
|
|
217
|
+
return this.contentApi.getContentUrl(nodeId, attachment);
|
|
218
|
+
}
|
|
219
|
+
getVersionContentUrl(nodeId, versionId, attachment) {
|
|
220
|
+
return this.contentApi.getVersionContentUrl(nodeId, versionId, attachment);
|
|
221
|
+
}
|
|
222
|
+
deleteSite(siteId, opts) {
|
|
223
|
+
return from(this.sitesApi.deleteSite(siteId, opts));
|
|
224
|
+
}
|
|
225
|
+
leaveSite(siteId) {
|
|
226
|
+
return from(this.sitesApi.deleteSiteMembership(siteId, '-me-'));
|
|
227
|
+
}
|
|
228
|
+
createSite(siteBody, opts) {
|
|
229
|
+
return from(this.sitesApi.createSite(siteBody, opts));
|
|
230
|
+
}
|
|
231
|
+
getSite(siteId, opts) {
|
|
232
|
+
return from(this.sitesApi.getSite(siteId, opts));
|
|
233
|
+
}
|
|
234
|
+
updateLibrary(siteId, siteBody) {
|
|
235
|
+
return from(this.sitesApi.updateSite(siteId, siteBody));
|
|
236
|
+
}
|
|
237
|
+
addFavorite(nodes) {
|
|
238
|
+
const payload = nodes.map((node) => {
|
|
239
|
+
const { isFolder, nodeId, id } = node.entry;
|
|
240
|
+
const siteId = node.entry['guid'];
|
|
241
|
+
const type = siteId ? 'site' : isFolder ? 'folder' : 'file';
|
|
242
|
+
const guid = siteId || nodeId || id;
|
|
243
|
+
return {
|
|
244
|
+
target: {
|
|
245
|
+
[type]: {
|
|
246
|
+
guid
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
});
|
|
251
|
+
return from(this.favoritesApi.createFavorite('-me-', payload));
|
|
252
|
+
}
|
|
253
|
+
removeFavorite(nodes) {
|
|
254
|
+
return from(Promise.all(nodes.map((node) => {
|
|
255
|
+
const id = node.entry.nodeId || node.entry.id;
|
|
256
|
+
return this.favoritesApi.deleteFavorite('-me-', id);
|
|
257
|
+
})));
|
|
258
|
+
}
|
|
259
|
+
unlockNode(nodeId, opts) {
|
|
260
|
+
return this.nodesApi.unlockNode(nodeId, opts);
|
|
261
|
+
}
|
|
262
|
+
getNodeVersions(nodeId, opts) {
|
|
263
|
+
return from(this.versionsApi.listVersionHistory(nodeId, opts));
|
|
264
|
+
}
|
|
265
|
+
requestNodeDirectAccessUrl(nodeId) {
|
|
266
|
+
return from(this.nodesApi.requestDirectAccessUrl(nodeId));
|
|
267
|
+
}
|
|
268
|
+
requestVersionDirectAccessUrl(nodeId, versionId) {
|
|
269
|
+
return from(this.versionsApi.requestDirectAccessUrl(nodeId, versionId));
|
|
270
|
+
}
|
|
271
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ContentApiService, deps: [{ token: i1.AlfrescoApiService }, { token: i2.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
272
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ContentApiService, providedIn: 'root' });
|
|
273
|
+
}
|
|
274
|
+
export { ContentApiService };
|
|
275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ContentApiService, decorators: [{
|
|
276
|
+
type: Injectable,
|
|
277
|
+
args: [{
|
|
278
|
+
providedIn: 'root'
|
|
279
|
+
}]
|
|
280
|
+
}], ctorParameters: function () { return [{ type: i1.AlfrescoApiService }, { type: i2.UserPreferencesService }]; } });
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFlTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBR1osTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFckMsTUFHYSxpQkFBaUI7SUE0RFI7SUFBaUM7SUEzRDdDLFNBQVMsQ0FBVztJQUM1QixJQUFJLFFBQVE7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWSxDQUFjO0lBQ2xDLElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTyxlQUFlLENBQWlCO0lBQ3hDLElBQUksY0FBYztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU8sYUFBYSxDQUFlO0lBQ3BDLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxhQUFhLENBQWU7SUFDcEMsSUFBSSxZQUFZO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLFdBQVcsQ0FBYTtJQUNoQyxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sU0FBUyxDQUFXO0lBQzVCLElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxVQUFVLENBQVk7SUFDOUIsSUFBSSxTQUFTO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLFVBQVUsQ0FBWTtJQUM5QixJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFjO0lBQ2xDLElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxZQUFvQixHQUF1QixFQUFVLFdBQW1DO1FBQXBFLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO0lBQUcsQ0FBQztJQUU1Rjs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQUMsTUFBYyxFQUFFLFVBQW1DLEVBQUU7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxNQUFjLEVBQUUsVUFBZSxFQUFFO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO1NBQ3BGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV0RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFhO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUM7U0FDckUsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FDVCxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUM5QyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGVBQWUsQ0FBQyxNQUFjLEVBQUUsVUFBZSxFQUFFO1FBQy9DLE1BQU0sUUFBUSxHQUFHO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUN6QyxTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsQ0FBQztTQUNsRixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFlLEVBQUU7UUFDL0IsTUFBTSxRQUFRLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDbEIsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsT0FBb0M7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxRQUFRLENBQUMsTUFBYyxFQUFFLGNBQXNCLEVBQUUsSUFBYSxFQUFFLElBQTBEO1FBQ3hILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZLENBQ1YsUUFBZ0IsRUFDaEIsSUFLQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxXQUFtQixNQUFNLEVBQUUsSUFBVTtRQUN4RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ2pDLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSx1QkFBdUI7U0FDL0IsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxRQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQU8sRUFBRSxFQUFFO29CQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztvQkFDOUMsT0FBTzt3QkFDTCxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJO3FCQUN6QixDQUFDO2dCQUNKLENBQUMsQ0FBQztnQkFDRixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVO2FBQ3JDO1NBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBVTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLFVBQW9CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFzQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLFVBQW9CO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsU0FBaUIsRUFBRSxVQUFvQjtRQUMxRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWUsRUFBRSxJQUE4QjtRQUN4RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWU7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsVUFBVSxDQUNSLFFBQXdCLEVBQ3hCLElBSUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWUsRUFBRSxJQUE0RDtRQUNuRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxRQUF3QjtRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXVCO1FBQ2pDLE1BQU0sT0FBTyxHQUF5QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQVksQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxDQUFDO1lBRXBDLE9BQU87Z0JBQ0wsTUFBTSxFQUFFO29CQUNOLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ04sSUFBSTtxQkFDTDtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBdUI7UUFDcEMsT0FBTyxJQUFJLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsSUFBVTtRQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELDBCQUEwQixDQUFDLE1BQWM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjLEVBQUUsU0FBaUI7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO3VHQTlTVSxpQkFBaUI7MkdBQWpCLGlCQUFpQixjQUZoQixNQUFNOztTQUVQLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBOb2RlUGFnaW5nLFxuICBOb2RlLFxuICBEZWxldGVkTm9kZXNQYWdpbmcsXG4gIFBlcnNvbkVudHJ5LFxuICBOb2RlRW50cnksXG4gIERpc2NvdmVyeUVudHJ5LFxuICBGYXZvcml0ZVBhZ2luZyxcbiAgU2hhcmVkTGlua1BhZ2luZyxcbiAgU2VhcmNoUmVxdWVzdCxcbiAgUmVzdWx0U2V0UGFnaW5nLFxuICBTaXRlQm9keUNyZWF0ZSxcbiAgU2l0ZUVudHJ5LFxuICBGYXZvcml0ZUJvZHlDcmVhdGUsXG4gIEZhdm9yaXRlRW50cnksXG4gIE5vZGVzQXBpLFxuICBUcmFzaGNhbkFwaSxcbiAgU2hhcmVkbGlua3NBcGksXG4gIERpc2NvdmVyeUFwaSxcbiAgRmF2b3JpdGVzQXBpLFxuICBDb250ZW50QXBpLFxuICBTaXRlc0FwaSxcbiAgU2VhcmNoQXBpLFxuICBQZW9wbGVBcGksXG4gIFZlcnNpb25zQXBpLFxuICBEaXJlY3RBY2Nlc3NVcmxFbnRyeSxcbiAgVmVyc2lvblBhZ2luZ1xufSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudEFwaVNlcnZpY2Uge1xuICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gIGdldCBub2Rlc0FwaSgpOiBOb2Rlc0FwaSB7XG4gICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhc2hjYW5BcGk6IFRyYXNoY2FuQXBpO1xuICBnZXQgdHJhc2hjYW5BcGkoKTogVHJhc2hjYW5BcGkge1xuICAgIHRoaXMuX3RyYXNoY2FuQXBpID0gdGhpcy5fdHJhc2hjYW5BcGkgPz8gbmV3IFRyYXNoY2FuQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl90cmFzaGNhbkFwaTtcbiAgfVxuXG4gIHByaXZhdGUgX3NoYXJlZExpbmtzQXBpOiBTaGFyZWRsaW5rc0FwaTtcbiAgZ2V0IHNoYXJlZExpbmtzQXBpKCk6IFNoYXJlZGxpbmtzQXBpIHtcbiAgICB0aGlzLl9zaGFyZWRMaW5rc0FwaSA9IHRoaXMuX3NoYXJlZExpbmtzQXBpID8/IG5ldyBTaGFyZWRsaW5rc0FwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2hhcmVkTGlua3NBcGk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNjb3ZlcnlBcGk6IERpc2NvdmVyeUFwaTtcbiAgZ2V0IGRpc2NvdmVyeUFwaSgpOiBEaXNjb3ZlcnlBcGkge1xuICAgIHRoaXMuX2Rpc2NvdmVyeUFwaSA9IHRoaXMuX2Rpc2NvdmVyeUFwaSA/PyBuZXcgRGlzY292ZXJ5QXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlBcGk7XG4gIH1cblxuICBwcml2YXRlIF9mYXZvcml0ZXNBcGk6IEZhdm9yaXRlc0FwaTtcbiAgZ2V0IGZhdm9yaXRlc0FwaSgpOiBGYXZvcml0ZXNBcGkge1xuICAgIHRoaXMuX2Zhdm9yaXRlc0FwaSA9IHRoaXMuX2Zhdm9yaXRlc0FwaSA/PyBuZXcgRmF2b3JpdGVzQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9mYXZvcml0ZXNBcGk7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZW50QXBpOiBDb250ZW50QXBpO1xuICBnZXQgY29udGVudEFwaSgpOiBDb250ZW50QXBpIHtcbiAgICB0aGlzLl9jb250ZW50QXBpID0gdGhpcy5fY29udGVudEFwaSA/PyBuZXcgQ29udGVudEFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEFwaTtcbiAgfVxuXG4gIHByaXZhdGUgX3NpdGVzQXBpOiBTaXRlc0FwaTtcbiAgZ2V0IHNpdGVzQXBpKCk6IFNpdGVzQXBpIHtcbiAgICB0aGlzLl9zaXRlc0FwaSA9IHRoaXMuX3NpdGVzQXBpID8/IG5ldyBTaXRlc0FwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2l0ZXNBcGk7XG4gIH1cblxuICBwcml2YXRlIF9zZWFyY2hBcGk6IFNlYXJjaEFwaTtcbiAgZ2V0IHNlYXJjaEFwaSgpOiBTZWFyY2hBcGkge1xuICAgIHRoaXMuX3NlYXJjaEFwaSA9IHRoaXMuX3NlYXJjaEFwaSA/PyBuZXcgU2VhcmNoQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hBcGk7XG4gIH1cblxuICBwcml2YXRlIF9wZW9wbGVBcGk6IFBlb3BsZUFwaTtcbiAgZ2V0IHBlb3BsZUFwaSgpOiBQZW9wbGVBcGkge1xuICAgIHRoaXMuX3Blb3BsZUFwaSA9IHRoaXMuX3Blb3BsZUFwaSA/PyBuZXcgUGVvcGxlQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9wZW9wbGVBcGk7XG4gIH1cblxuICBwcml2YXRlIF92ZXJzaW9uc0FwaTogVmVyc2lvbnNBcGk7XG4gIGdldCB2ZXJzaW9uc0FwaSgpOiBWZXJzaW9uc0FwaSB7XG4gICAgdGhpcy5fdmVyc2lvbnNBcGkgPSB0aGlzLl92ZXJzaW9uc0FwaSA/PyBuZXcgVmVyc2lvbnNBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb25zQXBpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpOiBBbGZyZXNjb0FwaVNlcnZpY2UsIHByaXZhdGUgcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIE1vdmVzIGEgbm9kZSB0byB0aGUgdHJhc2hjYW4uXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgSUQgb2YgdGhlIHRhcmdldCBub2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5IEpTLUFQSVxuICAgKiBAcmV0dXJucyBFbXB0eSByZXN1bHQgdGhhdCBub3RpZmllcyB3aGVuIHRoZSBkZWxldGlvbiBpcyBjb21wbGV0ZVxuICAgKi9cbiAgZGVsZXRlTm9kZShub2RlSWQ6IHN0cmluZywgb3B0aW9uczogeyBwZXJtYW5lbnQ/OiBib29sZWFuIH0gPSB7fSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkuZGVsZXRlTm9kZShub2RlSWQsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdG9yZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBKUy1BUElcbiAgICogQHJldHVybnMgTm9kZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgZ2V0Tm9kZShub2RlSWQ6IHN0cmluZywgb3B0aW9uczogYW55ID0ge30pOiBPYnNlcnZhYmxlPE5vZGVFbnRyeT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgaW5jbHVkZTogWydwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucycsICdwZXJtaXNzaW9ucycsICdkZWZpbml0aW9uJ11cbiAgICB9O1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5nZXROb2RlKG5vZGVJZCwgcXVlcnlPcHRpb25zKSk7XG4gIH1cblxuICBnZXROb2RlSW5mbyhub2RlSWQ6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Tm9kZT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgaW5jbHVkZTogWydpc0Zhdm9yaXRlJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnLCAncGF0aCcsICdkZWZpbml0aW9uJ11cbiAgICB9O1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdGlvbnMgfHwge30pO1xuXG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBuZXcgUHJvbWlzZTxOb2RlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMubm9kZXNBcGkuZ2V0Tm9kZShub2RlSWQsIHF1ZXJ5T3B0aW9ucykudGhlbihcbiAgICAgICAgICAobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUobm9kZUVudHJ5LmVudHJ5KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbXMgY29udGFpbmVkIGluIGEgZm9sZGVyIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgSUQgb2YgdGhlIHRhcmdldCBub2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5IEpTLUFQSVxuICAgKiBAcmV0dXJucyBMaXN0IG9mIGNoaWxkIGl0ZW1zIGZyb20gdGhlIGZvbGRlclxuICAgKi9cbiAgZ2V0Tm9kZUNoaWxkcmVuKG5vZGVJZDogc3RyaW5nLCBvcHRpb25zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8Tm9kZVBhZ2luZz4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgbWF4SXRlbXM6IHRoaXMucHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemUsXG4gICAgICBza2lwQ291bnQ6IDAsXG4gICAgICBpbmNsdWRlOiBbJ2lzTG9ja2VkJywgJ3BhdGgnLCAncHJvcGVydGllcycsICdhbGxvd2FibGVPcGVyYXRpb25zJywgJ3Blcm1pc3Npb25zJ11cbiAgICB9O1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5saXN0Tm9kZUNoaWxkcmVuKG5vZGVJZCwgcXVlcnlPcHRpb25zKSk7XG4gIH1cblxuICBkZWxldGVTaGFyZWRMaW5rKGxpbmtJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNoYXJlZExpbmtzQXBpLmRlbGV0ZVNoYXJlZExpbmsobGlua0lkKSk7XG4gIH1cblxuICBnZXREZWxldGVkTm9kZXMob3B0aW9uczogYW55ID0ge30pOiBPYnNlcnZhYmxlPERlbGV0ZWROb2Rlc1BhZ2luZz4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgaW5jbHVkZTogWydwYXRoJ11cbiAgICB9O1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy50cmFzaGNhbkFwaS5saXN0RGVsZXRlZE5vZGVzKHF1ZXJ5T3B0aW9ucykpO1xuICB9XG5cbiAgcmVzdG9yZU5vZGUobm9kZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5vZGVFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMudHJhc2hjYW5BcGkucmVzdG9yZURlbGV0ZWROb2RlKG5vZGVJZCkpO1xuICB9XG5cbiAgcHVyZ2VEZWxldGVkTm9kZShub2RlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy50cmFzaGNhbkFwaS5kZWxldGVEZWxldGVkTm9kZShub2RlSWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IGEgdXNlciBpZGVudGlmaWVkIGJ5IHRoZWlyIHVzZXJuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcGVyc29uSWQgSUQgb2YgdGhlIHRhcmdldCB1c2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIEFwaSBvcHRpb25zXG4gICAqIEByZXR1cm5zIFVzZXIgaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFBlcnNvbihwZXJzb25JZDogc3RyaW5nLCBvcHRpb25zPzogeyBmaWVsZHM/OiBBcnJheTxzdHJpbmc+IH0pOiBPYnNlcnZhYmxlPFBlcnNvbkVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5wZW9wbGVBcGkuZ2V0UGVyc29uKHBlcnNvbklkLCBvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIG5vZGUgdG8gZGVzdGluYXRpb24gbm9kZVxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIFRoZSBpZCBvZiB0aGUgbm9kZSB0byBiZSBjb3BpZWRcbiAgICogQHBhcmFtIHRhcmdldFBhcmVudElkIFRoZSBpZCBvZiB0aGUgZm9sZGVyLW5vZGUgd2hlcmUgdGhlIG5vZGUgaGF2ZSB0byBiZSBjb3BpZWQgdG9cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5ldyBuYW1lIGZvciB0aGUgY29weSB0aGF0IHdvdWxkIGJlIGFkZGVkIG9uIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAgICogQHBhcmFtIG9wdHMgQXBpIG9wdGlvbnNcbiAgICovXG4gIGNvcHlOb2RlKG5vZGVJZDogc3RyaW5nLCB0YXJnZXRQYXJlbnRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBvcHRzPzogeyBpbmNsdWRlPzogQXJyYXk8c3RyaW5nPjsgZmllbGRzPzogQXJyYXk8c3RyaW5nPiB9KTogT2JzZXJ2YWJsZTxOb2RlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLmNvcHlOb2RlKG5vZGVJZCwgeyB0YXJnZXRQYXJlbnRJZCwgbmFtZSB9LCBvcHRzKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBwcm9kdWN0IGluZm9ybWF0aW9uIGZvciBDb250ZW50IFNlcnZpY2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9kdWN0VmVyc2lvbk1vZGVsIGNvbnRhaW5pbmcgcHJvZHVjdCBkZXRhaWxzXG4gICAqL1xuICBnZXRSZXBvc2l0b3J5SW5mb3JtYXRpb24oKTogT2JzZXJ2YWJsZTxEaXNjb3ZlcnlFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuZGlzY292ZXJ5QXBpLmdldFJlcG9zaXRvcnlJbmZvcm1hdGlvbigpKTtcbiAgfVxuXG4gIGdldEZhdm9yaXRlcyhcbiAgICBwZXJzb25JZDogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICBza2lwQ291bnQ/OiBudW1iZXI7XG4gICAgICBtYXhJdGVtcz86IG51bWJlcjtcbiAgICAgIHdoZXJlPzogc3RyaW5nO1xuICAgICAgZmllbGRzPzogQXJyYXk8c3RyaW5nPjtcbiAgICB9XG4gICk6IE9ic2VydmFibGU8RmF2b3JpdGVQYWdpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmZhdm9yaXRlc0FwaS5saXN0RmF2b3JpdGVzKHBlcnNvbklkLCBvcHRzKSk7XG4gIH1cblxuICBnZXRGYXZvcml0ZUxpYnJhcmllcyhwZXJzb25JZDogc3RyaW5nID0gJy1tZS0nLCBvcHRzPzogYW55KTogT2JzZXJ2YWJsZTxGYXZvcml0ZVBhZ2luZz4ge1xuICAgIHJldHVybiB0aGlzLmdldEZhdm9yaXRlcyhwZXJzb25JZCwge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIHdoZXJlOiAnKEVYSVNUUyh0YXJnZXQvc2l0ZSkpJ1xuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBGYXZvcml0ZVBhZ2luZykgPT4gKHtcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGVudHJpZXM6IHJlc3BvbnNlLmxpc3QuZW50cmllcy5tYXAoKHsgZW50cnkgfTogYW55KSA9PiB7XG4gICAgICAgICAgICBlbnRyeS50YXJnZXQuc2l0ZS5jcmVhdGVkQXQgPSBlbnRyeS5jcmVhdGVkQXQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlbnRyeTogZW50cnkudGFyZ2V0LnNpdGVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcGFnaW5hdGlvbjogcmVzcG9uc2UubGlzdC5wYWdpbmF0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBmaW5kU2hhcmVkTGlua3Mob3B0cz86IGFueSk6IE9ic2VydmFibGU8U2hhcmVkTGlua1BhZ2luZz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuc2hhcmVkTGlua3NBcGkubGlzdFNoYXJlZExpbmtzKG9wdHMpKTtcbiAgfVxuXG4gIGdldFNoYXJlZExpbmtDb250ZW50KHNoYXJlZElkOiBzdHJpbmcsIGF0dGFjaG1lbnQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50QXBpLmdldFNoYXJlZExpbmtDb250ZW50VXJsKHNoYXJlZElkLCBhdHRhY2htZW50KTtcbiAgfVxuXG4gIHNlYXJjaChyZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxSZXN1bHRTZXRQYWdpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNlYXJjaEFwaS5zZWFyY2gocmVxdWVzdCkpO1xuICB9XG5cbiAgZ2V0Q29udGVudFVybChub2RlSWQ6IHN0cmluZywgYXR0YWNobWVudD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRBcGkuZ2V0Q29udGVudFVybChub2RlSWQsIGF0dGFjaG1lbnQpO1xuICB9XG5cbiAgZ2V0VmVyc2lvbkNvbnRlbnRVcmwobm9kZUlkOiBzdHJpbmcsIHZlcnNpb25JZDogc3RyaW5nLCBhdHRhY2htZW50PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudEFwaS5nZXRWZXJzaW9uQ29udGVudFVybChub2RlSWQsIHZlcnNpb25JZCwgYXR0YWNobWVudCk7XG4gIH1cblxuICBkZWxldGVTaXRlKHNpdGVJZD86IHN0cmluZywgb3B0cz86IHsgcGVybWFuZW50PzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNpdGVzQXBpLmRlbGV0ZVNpdGUoc2l0ZUlkLCBvcHRzKSk7XG4gIH1cblxuICBsZWF2ZVNpdGUoc2l0ZUlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNpdGVzQXBpLmRlbGV0ZVNpdGVNZW1iZXJzaGlwKHNpdGVJZCwgJy1tZS0nKSk7XG4gIH1cblxuICBjcmVhdGVTaXRlKFxuICAgIHNpdGVCb2R5OiBTaXRlQm9keUNyZWF0ZSxcbiAgICBvcHRzPzoge1xuICAgICAgZmllbGRzPzogQXJyYXk8c3RyaW5nPjtcbiAgICAgIHNraXBDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbiAgICAgIHNraXBBZGRUb0Zhdm9yaXRlcz86IGJvb2xlYW47XG4gICAgfVxuICApOiBPYnNlcnZhYmxlPFNpdGVFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuc2l0ZXNBcGkuY3JlYXRlU2l0ZShzaXRlQm9keSwgb3B0cykpO1xuICB9XG5cbiAgZ2V0U2l0ZShzaXRlSWQ/OiBzdHJpbmcsIG9wdHM/OiB7IHJlbGF0aW9ucz86IEFycmF5PHN0cmluZz47IGZpZWxkcz86IEFycmF5PHN0cmluZz4gfSk6IE9ic2VydmFibGU8U2l0ZUVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS5nZXRTaXRlKHNpdGVJZCwgb3B0cykpO1xuICB9XG5cbiAgdXBkYXRlTGlicmFyeShzaXRlSWQ6IHN0cmluZywgc2l0ZUJvZHk6IFNpdGVCb2R5Q3JlYXRlKTogT2JzZXJ2YWJsZTxTaXRlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNpdGVzQXBpLnVwZGF0ZVNpdGUoc2l0ZUlkLCBzaXRlQm9keSkpO1xuICB9XG5cbiAgYWRkRmF2b3JpdGUobm9kZXM6IEFycmF5PE5vZGVFbnRyeT4pOiBPYnNlcnZhYmxlPEZhdm9yaXRlRW50cnk+IHtcbiAgICBjb25zdCBwYXlsb2FkOiBGYXZvcml0ZUJvZHlDcmVhdGVbXSA9IG5vZGVzLm1hcCgobm9kZSkgPT4ge1xuICAgICAgY29uc3QgeyBpc0ZvbGRlciwgbm9kZUlkLCBpZCB9ID0gbm9kZS5lbnRyeSBhcyBhbnk7XG4gICAgICBjb25zdCBzaXRlSWQgPSBub2RlLmVudHJ5WydndWlkJ107XG4gICAgICBjb25zdCB0eXBlID0gc2l0ZUlkID8gJ3NpdGUnIDogaXNGb2xkZXIgPyAnZm9sZGVyJyA6ICdmaWxlJztcbiAgICAgIGNvbnN0IGd1aWQgPSBzaXRlSWQgfHwgbm9kZUlkIHx8IGlkO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBbdHlwZV06IHtcbiAgICAgICAgICAgIGd1aWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLmZhdm9yaXRlc0FwaS5jcmVhdGVGYXZvcml0ZSgnLW1lLScsIHBheWxvYWQgYXMgYW55KSk7XG4gIH1cblxuICByZW1vdmVGYXZvcml0ZShub2RlczogQXJyYXk8Tm9kZUVudHJ5Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgbm9kZXMubWFwKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IG5vZGUuZW50cnkubm9kZUlkIHx8IG5vZGUuZW50cnkuaWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVzQXBpLmRlbGV0ZUZhdm9yaXRlKCctbWUtJywgaWQpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICB1bmxvY2tOb2RlKG5vZGVJZDogc3RyaW5nLCBvcHRzPzogYW55KTogUHJvbWlzZTxOb2RlRW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc0FwaS51bmxvY2tOb2RlKG5vZGVJZCwgb3B0cyk7XG4gIH1cblxuICBnZXROb2RlVmVyc2lvbnMobm9kZUlkOiBzdHJpbmcsIG9wdHM/OiBhbnkpOiBPYnNlcnZhYmxlPFZlcnNpb25QYWdpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnZlcnNpb25zQXBpLmxpc3RWZXJzaW9uSGlzdG9yeShub2RlSWQsIG9wdHMpKTtcbiAgfVxuXG4gIHJlcXVlc3ROb2RlRGlyZWN0QWNjZXNzVXJsKG5vZGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxEaXJlY3RBY2Nlc3NVcmxFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkucmVxdWVzdERpcmVjdEFjY2Vzc1VybChub2RlSWQpKTtcbiAgfVxuXG4gIHJlcXVlc3RWZXJzaW9uRGlyZWN0QWNjZXNzVXJsKG5vZGVJZDogc3RyaW5nLCB2ZXJzaW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RGlyZWN0QWNjZXNzVXJsRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnZlcnNpb25zQXBpLnJlcXVlc3REaXJlY3RBY2Nlc3NVcmwobm9kZUlkLCB2ZXJzaW9uSWQpKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Injectable } from '@angular/core';
|
|
25
|
+
import { NavigationEnd, Router } from '@angular/router';
|
|
26
|
+
import { filter, startWith } from 'rxjs/operators';
|
|
27
|
+
import * as i0 from "@angular/core";
|
|
28
|
+
import * as i1 from "@angular/router";
|
|
29
|
+
class NavigationHistoryService {
|
|
30
|
+
router;
|
|
31
|
+
history = [];
|
|
32
|
+
constructor(router) {
|
|
33
|
+
this.router = router;
|
|
34
|
+
}
|
|
35
|
+
listenToRouteChanges() {
|
|
36
|
+
return this.router.events.pipe(startWith(new NavigationEnd(0, this.router.url, this.router.url)), filter((event) => event instanceof NavigationEnd));
|
|
37
|
+
}
|
|
38
|
+
shouldReturnLastSelection(url) {
|
|
39
|
+
return this.history.length > 2 && this.history[1].startsWith(url) && this.history[0] === this.history[2];
|
|
40
|
+
}
|
|
41
|
+
setHistory(event, maxHistoryLength) {
|
|
42
|
+
this.history.push(event.urlAfterRedirects);
|
|
43
|
+
if (maxHistoryLength > 0 && this.history.length > maxHistoryLength) {
|
|
44
|
+
this.history.shift();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NavigationHistoryService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NavigationHistoryService, providedIn: 'root' });
|
|
49
|
+
}
|
|
50
|
+
export { NavigationHistoryService };
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NavigationHistoryService, decorators: [{
|
|
52
|
+
type: Injectable,
|
|
53
|
+
args: [{ providedIn: 'root' }]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR25ELE1BQ2Esd0JBQXdCO0lBR2Y7SUFGcEIsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUV2QixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFdEMsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM1QixTQUFTLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDakUsTUFBTSxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELHlCQUF5QixDQUFDLEdBQVc7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBb0IsRUFBRSxnQkFBd0I7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7dUdBckJVLHdCQUF3QjsyR0FBeEIsd0JBQXdCLGNBRFgsTUFBTTs7U0FDbkIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2Uge1xuICBoaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbGlzdGVuVG9Sb3V0ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgc3RhcnRXaXRoKG5ldyBOYXZpZ2F0aW9uRW5kKDAsIHRoaXMucm91dGVyLnVybCwgdGhpcy5yb3V0ZXIudXJsKSksXG4gICAgICBmaWx0ZXIoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgKTtcbiAgfVxuXG4gIHNob3VsZFJldHVybkxhc3RTZWxlY3Rpb24odXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDIgJiYgdGhpcy5oaXN0b3J5WzFdLnN0YXJ0c1dpdGgodXJsKSAmJiB0aGlzLmhpc3RvcnlbMF0gPT09IHRoaXMuaGlzdG9yeVsyXTtcbiAgfVxuXG4gIHNldEhpc3RvcnkoZXZlbnQ6IE5hdmlnYXRpb25FbmQsIG1heEhpc3RvcnlMZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICBpZiAobWF4SGlzdG9yeUxlbmd0aCA+IDAgJiYgdGhpcy5oaXN0b3J5Lmxlbmd0aCA+IG1heEhpc3RvcnlMZW5ndGgpIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5zaGlmdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Injectable } from '@angular/core';
|
|
25
|
+
import * as i0 from "@angular/core";
|
|
26
|
+
class NodePermissionService {
|
|
27
|
+
static DEFAULT_OPERATION = 'OR';
|
|
28
|
+
defaultOptions = {
|
|
29
|
+
operation: NodePermissionService.DEFAULT_OPERATION,
|
|
30
|
+
target: null
|
|
31
|
+
};
|
|
32
|
+
check(source, permissions, options) {
|
|
33
|
+
const opts = Object.assign({}, this.defaultOptions, options || {});
|
|
34
|
+
if (!source) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(source)) {
|
|
38
|
+
source = source.filter((item) => item);
|
|
39
|
+
if (source.length > 0) {
|
|
40
|
+
return source.every((node) => this.isOperationAllowed(node, permissions, opts));
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return this.isOperationAllowed(source, permissions, opts);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
isOperationAllowed(node, permissions, options) {
|
|
49
|
+
const allowableOperations = this.getAllowableOperations(node, options.target);
|
|
50
|
+
if (allowableOperations.length) {
|
|
51
|
+
if (options.operation === NodePermissionService.DEFAULT_OPERATION) {
|
|
52
|
+
return permissions.some((permission) => allowableOperations.includes(permission));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return permissions.every((permission) => allowableOperations.includes(permission));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
getAllowableOperations(node, property) {
|
|
61
|
+
let entry;
|
|
62
|
+
if ('entry' in node) {
|
|
63
|
+
entry = node.entry;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
entry = node;
|
|
67
|
+
}
|
|
68
|
+
if (property) {
|
|
69
|
+
return entry[property] || [];
|
|
70
|
+
}
|
|
71
|
+
if ('allowableOperationsOnTarget' in entry) {
|
|
72
|
+
return entry.allowableOperationsOnTarget || [];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return entry.allowableOperations || [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NodePermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NodePermissionService, providedIn: 'root' });
|
|
80
|
+
}
|
|
81
|
+
export { NodePermissionService };
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NodePermissionService, decorators: [{
|
|
83
|
+
type: Injectable,
|
|
84
|
+
args: [{
|
|
85
|
+
providedIn: 'root'
|
|
86
|
+
}]
|
|
87
|
+
}] });
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1wZXJtaXNzaW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvbm9kZS1wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQyxNQUdhLHFCQUFxQjtJQUNoQyxNQUFNLENBQVUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRWpDLGNBQWMsR0FBc0I7UUFDMUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLGlCQUFpQjtRQUNsRCxNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7SUFFRixLQUFLLENBQUMsTUFBNkMsRUFBRSxXQUFxQixFQUFFLE9BQTJCO1FBQ3JHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakY7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQXNCLEVBQUUsV0FBcUIsRUFBRSxPQUEwQjtRQUNsRyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlFLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDakUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ3BGO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFzQixFQUFFLFFBQWlCO1FBQ3RFLElBQUksS0FBd0IsQ0FBQztRQUU3QixJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDbkIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEI7YUFBTTtZQUNMLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDZDtRQUVELElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSw2QkFBNkIsSUFBSSxLQUFLLEVBQUU7WUFDMUMsT0FBTyxLQUFLLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFDO1NBQ2hEO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDeEM7SUFDSCxDQUFDO3VHQTNEVSxxQkFBcUI7MkdBQXJCLHFCQUFxQixjQUZwQixNQUFNOztTQUVQLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlUGVybWlzc2lvbnMgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTm9kZSwgU2hhcmVkTGluaywgU2hhcmVkTGlua0VudHJ5LCBOb2RlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvblNvdXJjZSA9IE5vZGVFbnRyeSB8IFNoYXJlZExpbmtFbnRyeSB8IE5vZGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbk9wdGlvbnMge1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIG9wZXJhdGlvbj86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVBlcm1pc3Npb25TZXJ2aWNlIGltcGxlbWVudHMgTm9kZVBlcm1pc3Npb25zIHtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfT1BFUkFUSU9OID0gJ09SJztcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBQZXJtaXNzaW9uT3B0aW9ucyA9IHtcbiAgICBvcGVyYXRpb246IE5vZGVQZXJtaXNzaW9uU2VydmljZS5ERUZBVUxUX09QRVJBVElPTixcbiAgICB0YXJnZXQ6IG51bGxcbiAgfTtcblxuICBjaGVjayhzb3VyY2U6IFBlcm1pc3Npb25Tb3VyY2UgfCBQZXJtaXNzaW9uU291cmNlW10sIHBlcm1pc3Npb25zOiBzdHJpbmdbXSwgb3B0aW9ucz86IFBlcm1pc3Npb25PcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMgfHwge30pO1xuXG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICBzb3VyY2UgPSBzb3VyY2UuZmlsdGVyKChpdGVtKSA9PiBpdGVtKTtcblxuICAgICAgaWYgKHNvdXJjZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2UuZXZlcnkoKG5vZGUpID0+IHRoaXMuaXNPcGVyYXRpb25BbGxvd2VkKG5vZGUsIHBlcm1pc3Npb25zLCBvcHRzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmlzT3BlcmF0aW9uQWxsb3dlZChzb3VyY2UsIHBlcm1pc3Npb25zLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzT3BlcmF0aW9uQWxsb3dlZChub2RlOiBQZXJtaXNzaW9uU291cmNlLCBwZXJtaXNzaW9uczogc3RyaW5nW10sIG9wdGlvbnM6IFBlcm1pc3Npb25PcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWxsb3dhYmxlT3BlcmF0aW9ucyA9IHRoaXMuZ2V0QWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlLCBvcHRpb25zLnRhcmdldCk7XG5cbiAgICBpZiAoYWxsb3dhYmxlT3BlcmF0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmIChvcHRpb25zLm9wZXJhdGlvbiA9PT0gTm9kZVBlcm1pc3Npb25TZXJ2aWNlLkRFRkFVTFRfT1BFUkFUSU9OKSB7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9ucy5zb21lKChwZXJtaXNzaW9uKSA9PiBhbGxvd2FibGVPcGVyYXRpb25zLmluY2x1ZGVzKHBlcm1pc3Npb24pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9ucy5ldmVyeSgocGVybWlzc2lvbikgPT4gYWxsb3dhYmxlT3BlcmF0aW9ucy5pbmNsdWRlcyhwZXJtaXNzaW9uKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxvd2FibGVPcGVyYXRpb25zKG5vZGU6IFBlcm1pc3Npb25Tb3VyY2UsIHByb3BlcnR5Pzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGxldCBlbnRyeTogTm9kZSB8IFNoYXJlZExpbms7XG5cbiAgICBpZiAoJ2VudHJ5JyBpbiBub2RlKSB7XG4gICAgICBlbnRyeSA9IG5vZGUuZW50cnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudHJ5ID0gbm9kZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBlbnRyeVtwcm9wZXJ0eV0gfHwgW107XG4gICAgfVxuXG4gICAgaWYgKCdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnIGluIGVudHJ5KSB7XG4gICAgICByZXR1cm4gZW50cnkuYWxsb3dhYmxlT3BlcmF0aW9uc09uVGFyZ2V0IHx8IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW50cnkuYWxsb3dhYmxlT3BlcmF0aW9ucyB8fCBbXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Injectable } from '@angular/core';
|
|
25
|
+
import { ExtensionService } from '@alfresco/adf-extensions';
|
|
26
|
+
import { Router } from '@angular/router';
|
|
27
|
+
import * as i0 from "@angular/core";
|
|
28
|
+
import * as i1 from "@angular/router";
|
|
29
|
+
import * as i2 from "@alfresco/adf-extensions";
|
|
30
|
+
class RouterExtensionService {
|
|
31
|
+
router;
|
|
32
|
+
extensions;
|
|
33
|
+
defaults = {
|
|
34
|
+
layout: 'app.layout.main',
|
|
35
|
+
auth: ['app.auth']
|
|
36
|
+
};
|
|
37
|
+
constructor(router, extensions) {
|
|
38
|
+
this.router = router;
|
|
39
|
+
this.extensions = extensions;
|
|
40
|
+
}
|
|
41
|
+
mapExtensionRoutes() {
|
|
42
|
+
const routesWithoutParent = [];
|
|
43
|
+
this.getApplicationRoutes().forEach((extensionRoute) => {
|
|
44
|
+
if (this.extensionRouteHasChild(extensionRoute)) {
|
|
45
|
+
const parentRoute = this.findRoute(extensionRoute.parentRoute);
|
|
46
|
+
if (parentRoute) {
|
|
47
|
+
this.convertExtensionRouteToRoute(extensionRoute);
|
|
48
|
+
parentRoute.children.unshift(extensionRoute);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
routesWithoutParent.push(extensionRoute);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
this.router.config.unshift(...routesWithoutParent);
|
|
56
|
+
}
|
|
57
|
+
getApplicationRoutes() {
|
|
58
|
+
return this.extensions.routes.map((route) => {
|
|
59
|
+
const guards = this.extensions.getAuthGuards(route.auth && route.auth.length > 0 ? route.auth : this.defaults.auth);
|
|
60
|
+
return {
|
|
61
|
+
path: route.path,
|
|
62
|
+
component: this.getComponentById(route.layout ?? this.defaults.layout),
|
|
63
|
+
canActivateChild: guards,
|
|
64
|
+
canActivate: guards,
|
|
65
|
+
parentRoute: route.parentRoute,
|
|
66
|
+
children: [
|
|
67
|
+
...(route['children']
|
|
68
|
+
? route['children'].map(({ path, component, outlet, data }) => ({
|
|
69
|
+
path,
|
|
70
|
+
outlet,
|
|
71
|
+
data,
|
|
72
|
+
component: this.getComponentById(component)
|
|
73
|
+
}))
|
|
74
|
+
: []),
|
|
75
|
+
{
|
|
76
|
+
path: '',
|
|
77
|
+
component: this.getComponentById(route.component),
|
|
78
|
+
data: route.data
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
getComponentById(id) {
|
|
85
|
+
return this.extensions.getComponentById(id);
|
|
86
|
+
}
|
|
87
|
+
extensionRouteHasChild(route) {
|
|
88
|
+
return route.parentRoute !== undefined;
|
|
89
|
+
}
|
|
90
|
+
convertExtensionRouteToRoute(extensionRoute) {
|
|
91
|
+
delete extensionRoute.parentRoute;
|
|
92
|
+
delete extensionRoute.component;
|
|
93
|
+
}
|
|
94
|
+
findRoute(parentRoute) {
|
|
95
|
+
const routeIndex = this.router.config.findIndex((route) => route.path === parentRoute);
|
|
96
|
+
return this.router.config[routeIndex];
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: RouterExtensionService, deps: [{ token: i1.Router }, { token: i2.ExtensionService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
99
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: RouterExtensionService, providedIn: 'root' });
|
|
100
|
+
}
|
|
101
|
+
export { RouterExtensionService };
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: RouterExtensionService, decorators: [{
|
|
103
|
+
type: Injectable,
|
|
104
|
+
args: [{
|
|
105
|
+
providedIn: 'root'
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.ExtensionService }]; } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRXpDLE1BR2Esc0JBQXNCO0lBTWI7SUFBMEI7SUFMOUMsUUFBUSxHQUFHO1FBQ1QsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDbkIsQ0FBQztJQUVGLFlBQW9CLE1BQWMsRUFBWSxVQUE0QjtRQUF0RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBa0I7SUFBRyxDQUFDO0lBRTlFLGtCQUFrQjtRQUNoQixNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUE4QixFQUFFLEVBQUU7WUFDckUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixJQUFJLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ2xELFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUM5QzthQUNGO2lCQUFNO2dCQUNMLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMxQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEgsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDdEUsZ0JBQWdCLEVBQUUsTUFBTTtnQkFDeEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsUUFBUSxFQUFFO29CQUNSLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO3dCQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQzVELElBQUk7NEJBQ0osTUFBTTs0QkFDTixJQUFJOzRCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO3lCQUM1QyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDUDt3QkFDRSxJQUFJLEVBQUUsRUFBRTt3QkFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7d0JBQ2pELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakI7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsRUFBVTtRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQXFCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVPLDRCQUE0QixDQUFDLGNBQThCO1FBQ2pFLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUNsQyxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxXQUFXO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztRQUV2RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7dUdBdkVVLHNCQUFzQjsyR0FBdEIsc0JBQXNCLGNBRnJCLE1BQU07O1NBRVAsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uUm91dGUgfSBmcm9tICcuLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyRXh0ZW5zaW9uU2VydmljZSB7XG4gIGRlZmF1bHRzID0ge1xuICAgIGxheW91dDogJ2FwcC5sYXlvdXQubWFpbicsXG4gICAgYXV0aDogWydhcHAuYXV0aCddXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIGV4dGVuc2lvbnM6IEV4dGVuc2lvblNlcnZpY2UpIHt9XG5cbiAgbWFwRXh0ZW5zaW9uUm91dGVzKCkge1xuICAgIGNvbnN0IHJvdXRlc1dpdGhvdXRQYXJlbnQgPSBbXTtcbiAgICB0aGlzLmdldEFwcGxpY2F0aW9uUm91dGVzKCkuZm9yRWFjaCgoZXh0ZW5zaW9uUm91dGU6IEV4dGVuc2lvblJvdXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5leHRlbnNpb25Sb3V0ZUhhc0NoaWxkKGV4dGVuc2lvblJvdXRlKSkge1xuICAgICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHRoaXMuZmluZFJvdXRlKGV4dGVuc2lvblJvdXRlLnBhcmVudFJvdXRlKTtcbiAgICAgICAgaWYgKHBhcmVudFJvdXRlKSB7XG4gICAgICAgICAgdGhpcy5jb252ZXJ0RXh0ZW5zaW9uUm91dGVUb1JvdXRlKGV4dGVuc2lvblJvdXRlKTtcbiAgICAgICAgICBwYXJlbnRSb3V0ZS5jaGlsZHJlbi51bnNoaWZ0KGV4dGVuc2lvblJvdXRlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVzV2l0aG91dFBhcmVudC5wdXNoKGV4dGVuc2lvblJvdXRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLmNvbmZpZy51bnNoaWZ0KC4uLnJvdXRlc1dpdGhvdXRQYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIGdldEFwcGxpY2F0aW9uUm91dGVzKCk6IEFycmF5PEV4dGVuc2lvblJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5leHRlbnNpb25zLmdldEF1dGhHdWFyZHMocm91dGUuYXV0aCAmJiByb3V0ZS5hdXRoLmxlbmd0aCA+IDAgPyByb3V0ZS5hdXRoIDogdGhpcy5kZWZhdWx0cy5hdXRoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQocm91dGUubGF5b3V0ID8/IHRoaXMuZGVmYXVsdHMubGF5b3V0KSxcbiAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogZ3VhcmRzLFxuICAgICAgICBjYW5BY3RpdmF0ZTogZ3VhcmRzLFxuICAgICAgICBwYXJlbnRSb3V0ZTogcm91dGUucGFyZW50Um91dGUsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLi4uKHJvdXRlWydjaGlsZHJlbiddXG4gICAgICAgICAgICA/IHJvdXRlWydjaGlsZHJlbiddLm1hcCgoeyBwYXRoLCBjb21wb25lbnQsIG91dGxldCwgZGF0YSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgb3V0bGV0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQoY29tcG9uZW50KVxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQocm91dGUuY29tcG9uZW50KSxcbiAgICAgICAgICAgIGRhdGE6IHJvdXRlLmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudEJ5SWQoaWQ6IHN0cmluZyk6IFR5cGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0Q29tcG9uZW50QnlJZChpZCk7XG4gIH1cblxuICBwcml2YXRlIGV4dGVuc2lvblJvdXRlSGFzQ2hpbGQocm91dGU6IEV4dGVuc2lvblJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdXRlLnBhcmVudFJvdXRlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFeHRlbnNpb25Sb3V0ZVRvUm91dGUoZXh0ZW5zaW9uUm91dGU6IEV4dGVuc2lvblJvdXRlKSB7XG4gICAgZGVsZXRlIGV4dGVuc2lvblJvdXRlLnBhcmVudFJvdXRlO1xuICAgIGRlbGV0ZSBleHRlbnNpb25Sb3V0ZS5jb21wb25lbnQ7XG4gIH1cblxuICBwcml2YXRlIGZpbmRSb3V0ZShwYXJlbnRSb3V0ZSkge1xuICAgIGNvbnN0IHJvdXRlSW5kZXggPSB0aGlzLnJvdXRlci5jb25maWcuZmluZEluZGV4KChyb3V0ZSkgPT4gcm91dGUucGF0aCA9PT0gcGFyZW50Um91dGUpO1xuXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmNvbmZpZ1tyb3V0ZUluZGV4XTtcbiAgfVxufVxuIl19
|