@hestia-earth/ui-components 0.27.10 → 0.27.11

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.
@@ -43,15 +43,13 @@ export class HeNodeStoreService {
43
43
  const nodes = this._nodes?.[node['@type']] || [];
44
44
  return nodes.findIndex(n => n.type === node['@type'] && n.id === node['@id']);
45
45
  }
46
- loadNode(node, params = {}) {
46
+ loadNode(node, params = {}, dataTransform = data => data) {
47
47
  const aggregated = 'aggregated' in node ? node.aggregated : isAggregated(node['@id']);
48
48
  const dataStates = nodeTypeDataStates(node['@type'], aggregated);
49
49
  const index = this._nodesLoadRequests[node['@type']].length;
50
50
  const request = forkJoin(dataStates.reduce((prev, dataState) => ({
51
51
  ...prev,
52
- [dataState]: this.nodeService
53
- .get$({ ...node, dataState }, params)
54
- .pipe(catchError(() => of(undefined)))
52
+ [dataState]: this.nodeService.get$({ ...node, dataState }, params).pipe(map(data => dataTransform(data)), catchError(() => of(undefined)))
55
53
  }), {})).pipe(shareReplay({ bufferSize: 1, refCount: true }), map((values) => Object.fromEntries(Object.values(DataState).map(dataState => [
56
54
  dataState,
57
55
  values[dataState] || values[DataState.original] || node
@@ -72,11 +70,19 @@ export class HeNodeStoreService {
72
70
  });
73
71
  return request;
74
72
  }
75
- addNode(node, params = {}) {
73
+ /**
74
+ * Fetch node data from the API, and add to the store.
75
+ *
76
+ * @param node
77
+ * @param params Optional query parameters to send with the request to the API.
78
+ * @param dataTransform Function to transform the received data.
79
+ * @returns
80
+ */
81
+ addNode(node, params = {}, dataTransform) {
76
82
  this._nodesLoadRequests[node['@type']] = this._nodesLoadRequests[node['@type']] || [];
77
83
  this._nodes[node['@type']] = this._nodes[node['@type']] || [];
78
84
  const existingRequest = this._nodesLoadRequests[node['@type']].find(({ id }) => id === node['@id']);
79
- return existingRequest ? existingRequest.request : this.loadNode(node, params);
85
+ return existingRequest ? existingRequest.request : this.loadNode(node, params, dataTransform);
80
86
  }
81
87
  removeNodeByIndex(nodeType, index) {
82
88
  this._nodesLoadRequests[nodeType].splice(index, 1);
@@ -116,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
116
122
  providedIn: 'root'
117
123
  }]
118
124
  }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQWMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQTJCL0MsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUsxQjtJQUNGLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztLQUNqQztJQUNELENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDM0IsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0tBQ3JDO0lBQ0QsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDZixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDakM7Q0FDRixDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWtCLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxFQUFFO0lBQ3BFLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUk7UUFDdkQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUM3QixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ2pDLENBQUM7SUFDRixPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFzQixFQUFFLEVBQUUsQ0FDM0MsTUFBTSxFQUFFLE1BQU07SUFDWixDQUFDLENBQUMsT0FBTyxDQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ3RCLENBQUMscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLEVBQ2xGLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQzdCO0lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVULE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUsvRixNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBSVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEMsdUJBQWtCLEdBQXFCLEVBQUUsQ0FBQztRQUMxQyxXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBUSxDQUFDLENBQUMsQ0FBQztLQWtIL0M7SUFoSFMsYUFBYSxDQUFvRCxJQUFPO1FBQzlFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8sUUFBUSxDQUFvRCxJQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUU7UUFDdEYsTUFBTSxVQUFVLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFVBQXNCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUU1RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQ3RCLFVBQVUsQ0FBQyxNQUFNLENBQ2YsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLEdBQUcsSUFBSTtZQUNQLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQzFCLElBQUksQ0FBbUIsRUFBRSxHQUFHLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUM7aUJBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDekMsQ0FBQyxFQUNGLEVBQXFCLENBQ3RCLENBQ0YsQ0FBQyxJQUFJLENBQ0osV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDOUMsR0FBRyxDQUNELENBQUMsTUFBa0IsRUFBRSxFQUFFLENBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsU0FBUztZQUNULE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUk7U0FDeEQsQ0FBQyxDQUNXLENBQ2xCLEVBQ0QsR0FBRyxDQUNELE1BQU0sQ0FBQyxFQUFFLENBQ1AsQ0FBQztZQUNDLEtBQUs7WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNuQixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNmLEdBQUcsTUFBTTtTQUNWLENBQTZCLENBQ2pDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDZixPQUFPO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxPQUFPLENBQW9ELElBQU8sRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNwRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTlELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFrQixFQUFFLEtBQWE7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sVUFBVSxDQUE2QixJQUFPO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUUsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FDRCxLQUFLLENBQUMsRUFBRSxDQUNOLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBVSxDQUM5RyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sSUFBSSxDQUFDLFFBQWtCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNuQixPQUFPLEVBQUUsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FDVixRQUFrQixFQUNsQixFQUFXO1FBRVgsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTSxZQUFZLENBQTZCLFFBQWtCLEVBQUUsU0FBb0IsRUFBRSxFQUFXO1FBQ25HLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7OEdBdEhVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpTT05MRCwgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi9ub2RlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZWROb2RlIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgdHlwZTogTm9kZVR5cGU7XG4gIGlkOiBzdHJpbmc7XG59XG5cbnR5cGUgbm9kZVN0YXRlcyA9IHtcbiAgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdPzogSlNPTkxEPE5vZGVUeXBlPjtcbn07XG5cbnR5cGUgbm9kZXMgPSB7XG4gIFtub2RlVHlwZSBpbiBOb2RlVHlwZV0/OiAobm9kZVN0YXRlcyAmIElTdG9yZWROb2RlKVtdO1xufTtcblxudHlwZSBub2RlTG9hZFJlcXVlc3QgPSB7XG4gIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXTogT2JzZXJ2YWJsZTxKU09OTEQ8Tm9kZVR5cGU+Pjtcbn07XG5cbnR5cGUgbm9kZXNMb2FkUmVxdWVzdCA9IHtcbiAgW25vZGVUeXBlIGluIE5vZGVUeXBlXT86IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHJlcXVlc3Q6IE9ic2VydmFibGU8bm9kZVN0YXRlcyAmIElTdG9yZWROb2RlPjtcbiAgfVtdO1xufTtcblxuY29uc3QgZGVmYXVsdERhdGFTdGF0ZXMgPSBbRGF0YVN0YXRlLm9yaWdpbmFsLCBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXTtcblxuZXhwb3J0IGNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IHtcbiAgICBkZWZhdWx0OiBEYXRhU3RhdGVbXTtcbiAgICBhZ2dyZWdhdGVkPzogRGF0YVN0YXRlW107XG4gIH07XG59ID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfSxcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRdXG4gIH0sXG4gIFtOb2RlVHlwZS5TaXRlXToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH1cbn07XG5cbmNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlcyA9IChub2RlVHlwZTogTm9kZVR5cGUsIGFnZ3JlZ2F0ZWQgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBkYXRhU3RhdGVzTWFwcGluZyA9IG5vZGVUeXBlRGF0YVN0YXRlW25vZGVUeXBlXSB8fCB7XG4gICAgZGVmYXVsdDogW0RhdGFTdGF0ZS5vcmlnaW5hbF0sXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfTtcbiAgcmV0dXJuIGFnZ3JlZ2F0ZWQgPyBkYXRhU3RhdGVzTWFwcGluZy5hZ2dyZWdhdGVkIDogZGF0YVN0YXRlc01hcHBpbmcuZGVmYXVsdDtcbn07XG5cbmNvbnN0IHNvcnROb2RlcyA9ICh2YWx1ZXM/OiBJU3RvcmVkTm9kZVtdKSA9PlxuICB2YWx1ZXM/Lmxlbmd0aFxuICAgID8gb3JkZXJCeShcbiAgICAgICAgdmFsdWVzLmZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgWydvcmlnaW5hbC5hZ2dyZWdhdGVkJywgJ29yaWdpbmFsLnNpdGUuQGlkJywgJ29yaWdpbmFsLmN5Y2xlLkBpZCcsICdvcmlnaW5hbC5AaWQnXSxcbiAgICAgICAgWydhc2MnLCAnYXNjJywgJ2FzYycsICdhc2MnXVxuICAgICAgKVxuICAgIDogW107XG5cbmNvbnN0IGlzQWdncmVnYXRlZCA9IChpZCA9ICcnKSA9PiAhIWlkPy5tYXRjaCgvXlthLXpBLVpdK1stXVthLXpBLVpdK1stXVtcXGRdezQsfVstXVtcXGRdezQsfS9nKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVOb2RlU3RvcmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBub2RlU2VydmljZSA9IGluamVjdChIZU5vZGVTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9ub2Rlc0xvYWRSZXF1ZXN0czogbm9kZXNMb2FkUmVxdWVzdCA9IHt9O1xuICBwcml2YXRlIF9ub2Rlczogbm9kZXMgPSB7fTtcbiAgcHJpdmF0ZSBfbm9kZXMkID0gbmV3IFJlcGxheVN1YmplY3Q8bm9kZXM+KDEpO1xuXG4gIHByaXZhdGUgZmluZE5vZGVJbmRleDxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+Pihub2RlOiBUKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLl9ub2Rlcz8uW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuICAgIHJldHVybiBub2Rlcy5maW5kSW5kZXgobiA9PiBuLnR5cGUgPT09IG5vZGVbJ0B0eXBlJ10gJiYgbi5pZCA9PT0gbm9kZVsnQGlkJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTm9kZTxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+Pihub2RlOiBULCBwYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSAnYWdncmVnYXRlZCcgaW4gbm9kZSA/IChub2RlLmFnZ3JlZ2F0ZWQgYXMgYm9vbGVhbikgOiBpc0FnZ3JlZ2F0ZWQobm9kZVsnQGlkJ10pO1xuICAgIGNvbnN0IGRhdGFTdGF0ZXMgPSBub2RlVHlwZURhdGFTdGF0ZXMobm9kZVsnQHR5cGUnXSwgYWdncmVnYXRlZCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXS5sZW5ndGg7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gZm9ya0pvaW4oXG4gICAgICBkYXRhU3RhdGVzLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGRhdGFTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIFtkYXRhU3RhdGVdOiB0aGlzLm5vZGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0JDxKU09OTEQ8Tm9kZVR5cGU+Pih7IC4uLm5vZGUsIGRhdGFTdGF0ZSB9LCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpKVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgbm9kZUxvYWRSZXF1ZXN0XG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgIG1hcChcbiAgICAgICAgKHZhbHVlczogbm9kZVN0YXRlcykgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKERhdGFTdGF0ZSkubWFwKGRhdGFTdGF0ZSA9PiBbXG4gICAgICAgICAgICAgIGRhdGFTdGF0ZSxcbiAgICAgICAgICAgICAgdmFsdWVzW2RhdGFTdGF0ZV0gfHwgdmFsdWVzW0RhdGFTdGF0ZS5vcmlnaW5hbF0gfHwgbm9kZVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICApIGFzIG5vZGVTdGF0ZXNcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIHZhbHVlcyA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHR5cGU6IG5vZGVbJ0B0eXBlJ10sXG4gICAgICAgICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICAgICAgICAuLi52YWx1ZXNcbiAgICAgICAgICB9KSBhcyBub2RlU3RhdGVzICYgSVN0b3JlZE5vZGVcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ucHVzaCh7XG4gICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICByZXF1ZXN0XG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXVtpbmRleF0gPSBkYXRhO1xuICAgICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkTm9kZTxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+Pihub2RlOiBULCBwYXJhbXMgPSB7fSkge1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gPSB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSB8fCBbXTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVxdWVzdCA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG5vZGVbJ0BpZCddKTtcbiAgICByZXR1cm4gZXhpc3RpbmdSZXF1ZXN0ID8gZXhpc3RpbmdSZXF1ZXN0LnJlcXVlc3QgOiB0aGlzLmxvYWROb2RlPFQ+KG5vZGUsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTm9kZUJ5SW5kZXgobm9kZVR5cGU6IE5vZGVUeXBlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVR5cGVdLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5fbm9kZXNbbm9kZVR5cGVdLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU5vZGU8VCBleHRlbmRzIEpTT05MRDxOb2RlVHlwZT4+KG5vZGU6IFQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZE5vZGVJbmRleChub2RlKTtcbiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMucmVtb3ZlTm9kZUJ5SW5kZXgobm9kZVsnQHR5cGUnXSwgaW5kZXgpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhck5vZGVzKCkge1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzID0ge307XG4gICAgdGhpcy5fbm9kZXMgPSB7fTtcbiAgICB0aGlzLl9ub2RlcyQubmV4dCh0aGlzLl9ub2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgbm9kZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc29ydGVkTm9kZXMkKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzJCgpLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIG5vZGVzID0+XG4gICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG5vZGVzKS5tYXAoKFtub2RlS2V5LCB2YWx1ZXNdKSA9PiBbbm9kZUtleSwgc29ydE5vZGVzKHZhbHVlcyldKSkgYXMgbm9kZXNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlkcyQobm9kZVR5cGU6IE5vZGVUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMkKCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHZhbHVlcyA9PiB2YWx1ZXNbbm9kZVR5cGVdKSxcbiAgICAgIG1hcCgoeyBpZCB9KSA9PiBpZCksXG4gICAgICB0b0FycmF5KClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbmQkPFQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+PihcbiAgICBub2RlVHlwZTogTm9kZVR5cGUsXG4gICAgaWQ/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTx7IFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXT86IFQgfVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMkKCkucGlwZShtYXAodmFsdWVzID0+ICgodmFsdWVzW25vZGVUeXBlXSBhcyBhbnlbXSkgfHwgW10pLmZpbHRlcihub2RlID0+ICFpZCB8fCBub2RlLmlkID09PSBpZCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlTdGF0ZSQ8VCBleHRlbmRzIEpTT05MRDxOb2RlVHlwZT4+KG5vZGVUeXBlOiBOb2RlVHlwZSwgZGF0YVN0YXRlOiBEYXRhU3RhdGUsIGlkPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZCQ8VD4obm9kZVR5cGUsIGlkKS5waXBlKG1hcCh2YWx1ZXMgPT4gdmFsdWVzLm1hcCh2ID0+IHZbZGF0YVN0YXRlXSkuZmlsdGVyKEJvb2xlYW4pKSk7XG4gIH1cbn1cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQWMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQTJCL0MsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUsxQjtJQUNGLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztLQUNqQztJQUNELENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDM0IsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0tBQ3JDO0lBQ0QsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDZixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FB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QUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDbkIsT0FBTyxFQUFFLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQ1YsUUFBa0IsRUFDbEIsRUFBVztRQUVYLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxRQUFRLENBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRU0sWUFBWSxDQUE2QixRQUFrQixFQUFFLFNBQW9CLEVBQUUsRUFBVztRQUNuRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDOzhHQXZJVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKU09OTEQsIE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCBvcmRlckJ5IGZyb20gJ2xvZGFzaC5vcmRlcmJ5JztcblxuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4vbm9kZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJU3RvcmVkTm9kZSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIHR5cGU6IE5vZGVUeXBlO1xuICBpZDogc3RyaW5nO1xufVxuXG50eXBlIG5vZGVTdGF0ZXMgPSB7XG4gIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXT86IEpTT05MRDxOb2RlVHlwZT47XG59O1xuXG50eXBlIG5vZGVzID0ge1xuICBbbm9kZVR5cGUgaW4gTm9kZVR5cGVdPzogKG5vZGVTdGF0ZXMgJiBJU3RvcmVkTm9kZSlbXTtcbn07XG5cbnR5cGUgbm9kZUxvYWRSZXF1ZXN0ID0ge1xuICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV06IE9ic2VydmFibGU8SlNPTkxEPE5vZGVUeXBlPj47XG59O1xuXG50eXBlIG5vZGVzTG9hZFJlcXVlc3QgPSB7XG4gIFtub2RlVHlwZSBpbiBOb2RlVHlwZV0/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICByZXF1ZXN0OiBPYnNlcnZhYmxlPG5vZGVTdGF0ZXMgJiBJU3RvcmVkTm9kZT47XG4gIH1bXTtcbn07XG5cbmNvbnN0IGRlZmF1bHREYXRhU3RhdGVzID0gW0RhdGFTdGF0ZS5vcmlnaW5hbCwgRGF0YVN0YXRlLnJlY2FsY3VsYXRlZF07XG5cbmV4cG9ydCBjb25zdCBub2RlVHlwZURhdGFTdGF0ZToge1xuICBbdHlwZSBpbiBOb2RlVHlwZV0/OiB7XG4gICAgZGVmYXVsdDogRGF0YVN0YXRlW107XG4gICAgYWdncmVnYXRlZD86IERhdGFTdGF0ZVtdO1xuICB9O1xufSA9IHtcbiAgW05vZGVUeXBlLkN5Y2xlXToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH0sXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUucmVjYWxjdWxhdGVkXVxuICB9LFxuICBbTm9kZVR5cGUuU2l0ZV06IHtcbiAgICBkZWZhdWx0OiBkZWZhdWx0RGF0YVN0YXRlcyxcbiAgICBhZ2dyZWdhdGVkOiBbRGF0YVN0YXRlLm9yaWdpbmFsXVxuICB9XG59O1xuXG5jb25zdCBub2RlVHlwZURhdGFTdGF0ZXMgPSAobm9kZVR5cGU6IE5vZGVUeXBlLCBhZ2dyZWdhdGVkID0gZmFsc2UpID0+IHtcbiAgY29uc3QgZGF0YVN0YXRlc01hcHBpbmcgPSBub2RlVHlwZURhdGFTdGF0ZVtub2RlVHlwZV0gfHwge1xuICAgIGRlZmF1bHQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH07XG4gIHJldHVybiBhZ2dyZWdhdGVkID8gZGF0YVN0YXRlc01hcHBpbmcuYWdncmVnYXRlZCA6IGRhdGFTdGF0ZXNNYXBwaW5nLmRlZmF1bHQ7XG59O1xuXG5jb25zdCBzb3J0Tm9kZXMgPSAodmFsdWVzPzogSVN0b3JlZE5vZGVbXSkgPT5cbiAgdmFsdWVzPy5sZW5ndGhcbiAgICA/IG9yZGVyQnkoXG4gICAgICAgIHZhbHVlcy5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIFsnb3JpZ2luYWwuYWdncmVnYXRlZCcsICdvcmlnaW5hbC5zaXRlLkBpZCcsICdvcmlnaW5hbC5jeWNsZS5AaWQnLCAnb3JpZ2luYWwuQGlkJ10sXG4gICAgICAgIFsnYXNjJywgJ2FzYycsICdhc2MnLCAnYXNjJ11cbiAgICAgIClcbiAgICA6IFtdO1xuXG5jb25zdCBpc0FnZ3JlZ2F0ZWQgPSAoaWQgPSAnJykgPT4gISFpZD8ubWF0Y2goL15bYS16QS1aXStbLV1bYS16QS1aXStbLV1bXFxkXXs0LH1bLV1bXFxkXXs0LH0vZyk7XG5cbnR5cGUgZGF0YVRyYW5zZm9ybUZ1bmMgPSA8VD4obm9kZTogVCkgPT4gVDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVOb2RlU3RvcmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBub2RlU2VydmljZSA9IGluamVjdChIZU5vZGVTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9ub2Rlc0xvYWRSZXF1ZXN0czogbm9kZXNMb2FkUmVxdWVzdCA9IHt9O1xuICBwcml2YXRlIF9ub2Rlczogbm9kZXMgPSB7fTtcbiAgcHJpdmF0ZSBfbm9kZXMkID0gbmV3IFJlcGxheVN1YmplY3Q8bm9kZXM+KDEpO1xuXG4gIHByaXZhdGUgZmluZE5vZGVJbmRleDxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+Pihub2RlOiBUKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLl9ub2Rlcz8uW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuICAgIHJldHVybiBub2Rlcy5maW5kSW5kZXgobiA9PiBuLnR5cGUgPT09IG5vZGVbJ0B0eXBlJ10gJiYgbi5pZCA9PT0gbm9kZVsnQGlkJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTm9kZTxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+PihcbiAgICBub2RlOiBULFxuICAgIHBhcmFtcyA9IHt9LFxuICAgIGRhdGFUcmFuc2Zvcm06IGRhdGFUcmFuc2Zvcm1GdW5jID0gZGF0YSA9PiBkYXRhXG4gICkge1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSAnYWdncmVnYXRlZCcgaW4gbm9kZSA/IChub2RlLmFnZ3JlZ2F0ZWQgYXMgYm9vbGVhbikgOiBpc0FnZ3JlZ2F0ZWQobm9kZVsnQGlkJ10pO1xuICAgIGNvbnN0IGRhdGFTdGF0ZXMgPSBub2RlVHlwZURhdGFTdGF0ZXMobm9kZVsnQHR5cGUnXSwgYWdncmVnYXRlZCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXS5sZW5ndGg7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gZm9ya0pvaW4oXG4gICAgICBkYXRhU3RhdGVzLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGRhdGFTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIFtkYXRhU3RhdGVdOiB0aGlzLm5vZGVTZXJ2aWNlLmdldCQ8SlNPTkxEPE5vZGVUeXBlPj4oeyAuLi5ub2RlLCBkYXRhU3RhdGUgfSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YVRyYW5zZm9ybShkYXRhKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgbm9kZUxvYWRSZXF1ZXN0XG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgIG1hcChcbiAgICAgICAgKHZhbHVlczogbm9kZVN0YXRlcykgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKERhdGFTdGF0ZSkubWFwKGRhdGFTdGF0ZSA9PiBbXG4gICAgICAgICAgICAgIGRhdGFTdGF0ZSxcbiAgICAgICAgICAgICAgdmFsdWVzW2RhdGFTdGF0ZV0gfHwgdmFsdWVzW0RhdGFTdGF0ZS5vcmlnaW5hbF0gfHwgbm9kZVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICApIGFzIG5vZGVTdGF0ZXNcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIHZhbHVlcyA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHR5cGU6IG5vZGVbJ0B0eXBlJ10sXG4gICAgICAgICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICAgICAgICAuLi52YWx1ZXNcbiAgICAgICAgICB9KSBhcyBub2RlU3RhdGVzICYgSVN0b3JlZE5vZGVcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ucHVzaCh7XG4gICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICByZXF1ZXN0XG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXVtpbmRleF0gPSBkYXRhO1xuICAgICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggbm9kZSBkYXRhIGZyb20gdGhlIEFQSSwgYW5kIGFkZCB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlXG4gICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVycyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QgdG8gdGhlIEFQSS5cbiAgICogQHBhcmFtIGRhdGFUcmFuc2Zvcm0gRnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSByZWNlaXZlZCBkYXRhLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFkZE5vZGU8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4oXG4gICAgbm9kZTogVCxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBkYXRhVHJhbnNmb3JtPzogZGF0YVRyYW5zZm9ybUZ1bmNcbiAgKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0gPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXSB8fCBbXTtcbiAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSA9IHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuXG4gICAgY29uc3QgZXhpc3RpbmdSZXF1ZXN0ID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0uZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gbm9kZVsnQGlkJ10pO1xuICAgIHJldHVybiBleGlzdGluZ1JlcXVlc3QgPyBleGlzdGluZ1JlcXVlc3QucmVxdWVzdCA6IHRoaXMubG9hZE5vZGU8VD4obm9kZSwgcGFyYW1zLCBkYXRhVHJhbnNmb3JtKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVOb2RlQnlJbmRleChub2RlVHlwZTogTm9kZVR5cGUsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlVHlwZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLl9ub2Rlc1tub2RlVHlwZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLl9ub2RlcyQubmV4dCh0aGlzLl9ub2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTm9kZTxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZTogVCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTm9kZUluZGV4KG5vZGUpO1xuICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5yZW1vdmVOb2RlQnlJbmRleChub2RlWydAdHlwZSddLCBpbmRleCkgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyTm9kZXMoKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHMgPSB7fTtcbiAgICB0aGlzLl9ub2RlcyA9IHt9O1xuICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0ZWROb2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMkKCkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgbm9kZXMgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobm9kZXMpLm1hcCgoW25vZGVLZXksIHZhbHVlc10pID0+IFtub2RlS2V5LCBzb3J0Tm9kZXModmFsdWVzKV0pKSBhcyBub2Rlc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaWRzJChub2RlVHlwZTogTm9kZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodmFsdWVzID0+IHZhbHVlc1tub2RlVHlwZV0pLFxuICAgICAgbWFwKCh7IGlkIH0pID0+IGlkKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluZCQ8VCBleHRlbmRzIEpTT05MRDxOb2RlVHlwZT4+KFxuICAgIG5vZGVUeXBlOiBOb2RlVHlwZSxcbiAgICBpZD86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHsgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdPzogVCB9W10+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKG1hcCh2YWx1ZXMgPT4gKCh2YWx1ZXNbbm9kZVR5cGVdIGFzIGFueVtdKSB8fCBbXSkuZmlsdGVyKG5vZGUgPT4gIWlkIHx8IG5vZGUuaWQgPT09IGlkKSkpO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeVN0YXRlJDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZVR5cGU6IE5vZGVUeXBlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZSwgaWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kJDxUPihub2RlVHlwZSwgaWQpLnBpcGUobWFwKHZhbHVlcyA9PiB2YWx1ZXMubWFwKHYgPT4gdltkYXRhU3RhdGVdKS5maWx0ZXIoQm9vbGVhbikpKTtcbiAgfVxufVxuIl19
@@ -4920,15 +4920,13 @@ class HeNodeStoreService {
4920
4920
  const nodes = this._nodes?.[node['@type']] || [];
4921
4921
  return nodes.findIndex(n => n.type === node['@type'] && n.id === node['@id']);
4922
4922
  }
4923
- loadNode(node, params = {}) {
4923
+ loadNode(node, params = {}, dataTransform = data => data) {
4924
4924
  const aggregated = 'aggregated' in node ? node.aggregated : isAggregated(node['@id']);
4925
4925
  const dataStates = nodeTypeDataStates(node['@type'], aggregated);
4926
4926
  const index = this._nodesLoadRequests[node['@type']].length;
4927
4927
  const request = forkJoin(dataStates.reduce((prev, dataState) => ({
4928
4928
  ...prev,
4929
- [dataState]: this.nodeService
4930
- .get$({ ...node, dataState }, params)
4931
- .pipe(catchError(() => of(undefined)))
4929
+ [dataState]: this.nodeService.get$({ ...node, dataState }, params).pipe(map(data => dataTransform(data)), catchError(() => of(undefined)))
4932
4930
  }), {})).pipe(shareReplay({ bufferSize: 1, refCount: true }), map((values) => Object.fromEntries(Object.values(DataState).map(dataState => [
4933
4931
  dataState,
4934
4932
  values[dataState] || values[DataState.original] || node
@@ -4949,11 +4947,19 @@ class HeNodeStoreService {
4949
4947
  });
4950
4948
  return request;
4951
4949
  }
4952
- addNode(node, params = {}) {
4950
+ /**
4951
+ * Fetch node data from the API, and add to the store.
4952
+ *
4953
+ * @param node
4954
+ * @param params Optional query parameters to send with the request to the API.
4955
+ * @param dataTransform Function to transform the received data.
4956
+ * @returns
4957
+ */
4958
+ addNode(node, params = {}, dataTransform) {
4953
4959
  this._nodesLoadRequests[node['@type']] = this._nodesLoadRequests[node['@type']] || [];
4954
4960
  this._nodes[node['@type']] = this._nodes[node['@type']] || [];
4955
4961
  const existingRequest = this._nodesLoadRequests[node['@type']].find(({ id }) => id === node['@id']);
4956
- return existingRequest ? existingRequest.request : this.loadNode(node, params);
4962
+ return existingRequest ? existingRequest.request : this.loadNode(node, params, dataTransform);
4957
4963
  }
4958
4964
  removeNodeByIndex(nodeType, index) {
4959
4965
  this._nodesLoadRequests[nodeType].splice(index, 1);