@data-client/core 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +134 -409
- package/dist/index.umd.min.js +1 -1
- package/dist/next.js +61 -101
- package/legacy/actionTypes.js +2 -2
- package/legacy/controller/Controller.js +276 -6
- package/legacy/controller/createFetch.js +3 -14
- package/legacy/controller/createInvalidate.js +1 -1
- package/legacy/controller/createInvalidateAll.js +1 -1
- package/legacy/controller/createOptimistic.js +1 -7
- package/legacy/controller/createReset.js +1 -1
- package/legacy/controller/createSet.js +31 -0
- package/legacy/controller/createSubscription.js +3 -7
- package/legacy/index.js +2 -5
- package/legacy/internal.js +2 -2
- package/legacy/manager/DevtoolsManager.js +2 -2
- package/legacy/manager/LogoutManager.js +2 -2
- package/legacy/manager/NetworkManager.js +28 -59
- package/legacy/manager/PollingSubscription.js +18 -27
- package/legacy/manager/SubscriptionManager.js +16 -42
- package/legacy/manager/applyManager.js +2 -1
- package/legacy/middlewareTypes.js +1 -1
- package/legacy/newActions.js +1 -1
- package/legacy/next/index.js +3 -3
- package/legacy/state/reducer/createReducer.js +2 -6
- package/legacy/state/reducer/fetchReducer.js +3 -13
- package/legacy/state/reducer/invalidateReducer.js +1 -1
- package/legacy/state/reducer/setReducer.js +9 -16
- package/legacy/types.js +2 -6
- package/lib/actionTypes.d.ts +1 -0
- package/lib/actionTypes.d.ts.map +1 -1
- package/lib/actionTypes.js +2 -2
- package/lib/controller/Controller.d.ts +126 -6
- package/lib/controller/Controller.d.ts.map +1 -1
- package/lib/controller/Controller.js +276 -6
- package/lib/controller/createFetch.d.ts +2 -2
- package/lib/controller/createFetch.d.ts.map +1 -1
- package/lib/controller/createFetch.js +3 -14
- package/lib/controller/createInvalidate.d.ts +1 -1
- package/lib/controller/createInvalidate.d.ts.map +1 -1
- package/lib/controller/createInvalidate.js +1 -1
- package/lib/controller/createInvalidateAll.d.ts +1 -1
- package/lib/controller/createInvalidateAll.d.ts.map +1 -1
- package/lib/controller/createInvalidateAll.js +1 -1
- package/lib/controller/createOptimistic.d.ts +2 -2
- package/lib/controller/createOptimistic.d.ts.map +1 -1
- package/lib/controller/createOptimistic.js +1 -7
- package/lib/controller/createReset.d.ts +1 -1
- package/lib/controller/createReset.d.ts.map +1 -1
- package/lib/controller/createReset.js +1 -1
- package/lib/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
- package/lib/controller/createSet.d.ts.map +1 -0
- package/lib/controller/createSet.js +31 -0
- package/lib/controller/createSubscription.d.ts +3 -3
- package/lib/controller/createSubscription.d.ts.map +1 -1
- package/lib/controller/createSubscription.js +3 -7
- package/lib/index.d.ts +2 -6
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -5
- package/lib/internal.d.ts +1 -1
- package/lib/internal.d.ts.map +1 -1
- package/lib/internal.js +2 -2
- package/lib/manager/DevtoolsManager.d.ts +1 -1
- package/lib/manager/DevtoolsManager.js +2 -2
- package/lib/manager/LogoutManager.d.ts +4 -5
- package/lib/manager/LogoutManager.d.ts.map +1 -1
- package/lib/manager/LogoutManager.js +2 -2
- package/lib/manager/NetworkManager.d.ts +4 -5
- package/lib/manager/NetworkManager.d.ts.map +1 -1
- package/lib/manager/NetworkManager.js +28 -61
- package/lib/manager/PollingSubscription.d.ts +9 -9
- package/lib/manager/PollingSubscription.d.ts.map +1 -1
- package/lib/manager/PollingSubscription.js +18 -27
- package/lib/manager/SubscriptionManager.d.ts +10 -15
- package/lib/manager/SubscriptionManager.d.ts.map +1 -1
- package/lib/manager/SubscriptionManager.js +16 -42
- package/lib/manager/applyManager.d.ts.map +1 -1
- package/lib/manager/applyManager.js +2 -1
- package/lib/middlewareTypes.d.ts +5 -5
- package/lib/middlewareTypes.d.ts.map +1 -1
- package/lib/middlewareTypes.js +1 -1
- package/lib/newActions.d.ts +26 -18
- package/lib/newActions.d.ts.map +1 -1
- package/lib/newActions.js +1 -1
- package/lib/next/index.d.ts +2 -2
- package/lib/next/index.d.ts.map +1 -1
- package/lib/next/index.js +3 -3
- package/lib/state/reducer/createReducer.d.ts.map +1 -1
- package/lib/state/reducer/createReducer.js +2 -6
- package/lib/state/reducer/fetchReducer.d.ts +1 -2
- package/lib/state/reducer/fetchReducer.d.ts.map +1 -1
- package/lib/state/reducer/fetchReducer.js +3 -14
- package/lib/state/reducer/invalidateReducer.d.ts +3 -4
- package/lib/state/reducer/invalidateReducer.d.ts.map +1 -1
- package/lib/state/reducer/invalidateReducer.js +1 -1
- package/lib/state/reducer/setReducer.d.ts +2 -38
- package/lib/state/reducer/setReducer.d.ts.map +1 -1
- package/lib/state/reducer/setReducer.js +9 -17
- package/lib/types.d.ts +9 -30
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +2 -6
- package/package.json +10 -7
- package/src/actionTypes.ts +1 -1
- package/src/controller/Controller.ts +491 -10
- package/src/controller/createFetch.ts +4 -19
- package/src/controller/createInvalidate.ts +1 -1
- package/src/controller/createInvalidateAll.ts +1 -1
- package/src/controller/createOptimistic.ts +3 -9
- package/src/controller/createReset.ts +1 -1
- package/src/controller/{createReceive.ts → createSet.ts} +9 -17
- package/src/controller/createSubscription.ts +3 -10
- package/src/index.ts +2 -16
- package/src/internal.ts +1 -1
- package/src/manager/DevtoolsManager.ts +1 -1
- package/src/manager/LogoutManager.ts +4 -5
- package/src/manager/NetworkManager.ts +31 -80
- package/src/manager/PollingSubscription.ts +40 -38
- package/src/manager/SubscriptionManager.ts +22 -54
- package/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +10 -8
- package/src/manager/__tests__/logoutManager.ts +5 -5
- package/src/manager/__tests__/manager.ts +2 -4
- package/src/manager/__tests__/networkManager.ts +8 -42
- package/src/manager/__tests__/pollingSubscription.ts +259 -151
- package/src/manager/__tests__/subscriptionManager.ts +7 -13
- package/src/manager/applyManager.ts +1 -0
- package/src/middlewareTypes.ts +5 -10
- package/src/newActions.ts +33 -23
- package/src/next/index.ts +2 -2
- package/src/state/__tests__/reducer.ts +59 -297
- package/src/state/reducer/createReducer.ts +3 -11
- package/src/state/reducer/fetchReducer.ts +5 -18
- package/src/state/reducer/invalidateReducer.ts +2 -2
- package/src/state/reducer/setReducer.ts +10 -22
- package/src/types.ts +9 -78
- package/ts3.4/actionTypes.d.ts +1 -0
- package/ts3.4/controller/Controller.d.ts +168 -6
- package/ts3.4/controller/createFetch.d.ts +2 -2
- package/ts3.4/controller/createInvalidate.d.ts +1 -1
- package/ts3.4/controller/createInvalidateAll.d.ts +1 -1
- package/ts3.4/controller/createOptimistic.d.ts +1 -1
- package/ts3.4/controller/createReset.d.ts +1 -1
- package/ts3.4/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
- package/ts3.4/controller/createSubscription.d.ts +3 -3
- package/ts3.4/index.d.ts +2 -7
- package/ts3.4/internal.d.ts +1 -1
- package/ts3.4/manager/DevtoolsManager.d.ts +1 -1
- package/ts3.4/manager/LogoutManager.d.ts +4 -5
- package/ts3.4/manager/NetworkManager.d.ts +4 -5
- package/ts3.4/manager/PollingSubscription.d.ts +9 -9
- package/ts3.4/manager/SubscriptionManager.d.ts +10 -15
- package/ts3.4/middlewareTypes.d.ts +5 -5
- package/ts3.4/newActions.d.ts +26 -18
- package/ts3.4/next/index.d.ts +2 -2
- package/ts3.4/state/reducer/fetchReducer.d.ts +1 -2
- package/ts3.4/state/reducer/invalidateReducer.d.ts +3 -4
- package/ts3.4/state/reducer/setReducer.d.ts +2 -38
- package/ts3.4/types.d.ts +8 -30
- package/legacy/compatibleActions.js +0 -2
- package/legacy/controller/BaseController.js +0 -289
- package/legacy/controller/createReceive.js +0 -36
- package/legacy/endpoint/index.js +0 -2
- package/legacy/endpoint/shapes.js +0 -2
- package/legacy/endpoint/types.js +0 -2
- package/legacy/legacyActions.js +0 -2
- package/legacy/next/Controller.js +0 -24
- package/legacy/previousActions.js +0 -2
- package/legacy/state/applyUpdatersToResults.js +0 -4
- package/legacy/state/legacy-actions/createFetch.js +0 -62
- package/legacy/state/legacy-actions/createReceive.js +0 -37
- package/legacy/state/legacy-actions/createReceiveError.js +0 -28
- package/legacy/state/legacy-actions/index.js +0 -4
- package/legacy/state/reducerInstance.js +0 -9
- package/lib/compatibleActions.d.ts +0 -47
- package/lib/compatibleActions.d.ts.map +0 -1
- package/lib/compatibleActions.js +0 -2
- package/lib/controller/BaseController.d.ts +0 -128
- package/lib/controller/BaseController.d.ts.map +0 -1
- package/lib/controller/BaseController.js +0 -289
- package/lib/controller/createReceive.d.ts.map +0 -1
- package/lib/controller/createReceive.js +0 -36
- package/lib/endpoint/index.d.ts +0 -3
- package/lib/endpoint/index.d.ts.map +0 -1
- package/lib/endpoint/index.js +0 -2
- package/lib/endpoint/shapes.d.ts +0 -25
- package/lib/endpoint/shapes.d.ts.map +0 -1
- package/lib/endpoint/shapes.js +0 -2
- package/lib/endpoint/types.d.ts +0 -45
- package/lib/endpoint/types.d.ts.map +0 -1
- package/lib/endpoint/types.js +0 -2
- package/lib/legacyActions.d.ts +0 -92
- package/lib/legacyActions.d.ts.map +0 -1
- package/lib/legacyActions.js +0 -2
- package/lib/next/Controller.d.ts +0 -14
- package/lib/next/Controller.d.ts.map +0 -1
- package/lib/next/Controller.js +0 -24
- package/lib/previousActions.d.ts +0 -91
- package/lib/previousActions.d.ts.map +0 -1
- package/lib/previousActions.js +0 -2
- package/lib/state/applyUpdatersToResults.d.ts +0 -13
- package/lib/state/applyUpdatersToResults.d.ts.map +0 -1
- package/lib/state/applyUpdatersToResults.js +0 -7
- package/lib/state/legacy-actions/createFetch.d.ts +0 -19
- package/lib/state/legacy-actions/createFetch.d.ts.map +0 -1
- package/lib/state/legacy-actions/createFetch.js +0 -62
- package/lib/state/legacy-actions/createReceive.d.ts +0 -14
- package/lib/state/legacy-actions/createReceive.d.ts.map +0 -1
- package/lib/state/legacy-actions/createReceive.js +0 -37
- package/lib/state/legacy-actions/createReceiveError.d.ts +0 -9
- package/lib/state/legacy-actions/createReceiveError.d.ts.map +0 -1
- package/lib/state/legacy-actions/createReceiveError.js +0 -28
- package/lib/state/legacy-actions/index.d.ts +0 -4
- package/lib/state/legacy-actions/index.d.ts.map +0 -1
- package/lib/state/legacy-actions/index.js +0 -4
- package/lib/state/reducerInstance.d.ts +0 -7
- package/lib/state/reducerInstance.d.ts.map +0 -1
- package/lib/state/reducerInstance.js +0 -9
- package/src/compatibleActions.ts +0 -96
- package/src/controller/BaseController.ts +0 -508
- package/src/endpoint/index.ts +0 -14
- package/src/endpoint/shapes.ts +0 -53
- package/src/endpoint/types.ts +0 -72
- package/src/legacyActions.ts +0 -163
- package/src/manager/__tests__/__snapshots__/pollingSubscription-endpoint.ts.snap +0 -49
- package/src/manager/__tests__/networkManager-legacy.ts +0 -394
- package/src/manager/__tests__/pollingSubscription-endpoint.ts +0 -423
- package/src/next/Controller.ts +0 -39
- package/src/previousActions.ts +0 -159
- package/src/state/__tests__/applyUpdatersToResults.ts +0 -40
- package/src/state/applyUpdatersToResults.ts +0 -29
- package/src/state/legacy-actions/createFetch.ts +0 -95
- package/src/state/legacy-actions/createReceive.ts +0 -68
- package/src/state/legacy-actions/createReceiveError.ts +0 -43
- package/src/state/legacy-actions/index.ts +0 -3
- package/src/state/reducerInstance.ts +0 -14
- package/ts3.4/compatibleActions.d.ts +0 -47
- package/ts3.4/controller/BaseController.d.ts +0 -170
- package/ts3.4/endpoint/index.d.ts +0 -3
- package/ts3.4/endpoint/shapes.d.ts +0 -25
- package/ts3.4/endpoint/types.d.ts +0 -45
- package/ts3.4/legacyActions.d.ts +0 -95
- package/ts3.4/next/Controller.d.ts +0 -14
- package/ts3.4/previousActions.d.ts +0 -94
- package/ts3.4/state/applyUpdatersToResults.d.ts +0 -13
- package/ts3.4/state/legacy-actions/createFetch.d.ts +0 -19
- package/ts3.4/state/legacy-actions/createReceive.d.ts +0 -14
- package/ts3.4/state/legacy-actions/createReceiveError.d.ts +0 -9
- package/ts3.4/state/legacy-actions/index.d.ts +0 -4
- package/ts3.4/state/reducerInstance.d.ts +0 -7
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SET_TYPE, FETCH_TYPE, RESET_TYPE } from '../actionTypes.js';
|
|
2
2
|
import Controller from '../controller/Controller.js';
|
|
3
|
-
import
|
|
4
|
-
import { createReceive, createReceiveError } from '../state/legacy-actions/index.js';
|
|
3
|
+
import createSet from '../controller/createSet.js';
|
|
5
4
|
import RIC from '../state/RIC.js';
|
|
6
5
|
export class ResetError extends Error {
|
|
7
6
|
constructor() {
|
|
@@ -17,7 +16,7 @@ export class ResetError extends Error {
|
|
|
17
16
|
*
|
|
18
17
|
* Interfaces with store via a redux-compatible middleware.
|
|
19
18
|
*
|
|
20
|
-
* @see https://
|
|
19
|
+
* @see https://dataclient.io/docs/api/NetworkManager
|
|
21
20
|
*/
|
|
22
21
|
export default class NetworkManager {
|
|
23
22
|
constructor(dataExpiryLength = 60000, errorExpiryLength = 1000) {
|
|
@@ -25,26 +24,19 @@ export default class NetworkManager {
|
|
|
25
24
|
this.resolvers = {};
|
|
26
25
|
this.rejectors = {};
|
|
27
26
|
this.fetchedAt = {};
|
|
28
|
-
this.getState = () => initialState;
|
|
29
27
|
this.controller = new Controller();
|
|
30
28
|
this.dataExpiryLength = dataExpiryLength;
|
|
31
29
|
this.errorExpiryLength = errorExpiryLength;
|
|
32
|
-
this.middleware =
|
|
33
|
-
dispatch,
|
|
34
|
-
getState,
|
|
35
|
-
controller
|
|
36
|
-
}) => {
|
|
37
|
-
this.getState = getState;
|
|
30
|
+
this.middleware = controller => {
|
|
38
31
|
this.controller = controller;
|
|
39
32
|
return next => action => {
|
|
40
|
-
var _action$endpoint;
|
|
41
33
|
switch (action.type) {
|
|
42
34
|
case FETCH_TYPE:
|
|
43
|
-
this.handleFetch(action
|
|
35
|
+
this.handleFetch(action);
|
|
44
36
|
// This is the only case that causes any state change
|
|
45
37
|
// It's important to intercept other fetches as we don't want to trigger reducers during
|
|
46
38
|
// render - so we need to stop 'readonly' fetches which can be triggered in render
|
|
47
|
-
if (action.
|
|
39
|
+
if (action.endpoint.getOptimisticResponse !== undefined && action.endpoint.sideEffect) {
|
|
48
40
|
return next(action);
|
|
49
41
|
}
|
|
50
42
|
return Promise.resolve();
|
|
@@ -57,8 +49,12 @@ export default class NetworkManager {
|
|
|
57
49
|
const error = (_controller$getState$ = controller.getState().meta[action.meta.key]) == null ? void 0 : _controller$getState$.error;
|
|
58
50
|
// processing errors result in state meta having error, so we should reject the promise
|
|
59
51
|
if (error) {
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
this.handleReceive(createSet(action.endpoint, {
|
|
53
|
+
args: action.meta.args,
|
|
54
|
+
response: error,
|
|
55
|
+
fetchedAt: action.meta.fetchedAt,
|
|
56
|
+
error: true
|
|
57
|
+
}));
|
|
62
58
|
} else {
|
|
63
59
|
this.handleReceive(action);
|
|
64
60
|
}
|
|
@@ -124,10 +120,7 @@ export default class NetworkManager {
|
|
|
124
120
|
}
|
|
125
121
|
getLastReset() {
|
|
126
122
|
if (this.cleanupDate) return this.cleanupDate;
|
|
127
|
-
|
|
128
|
-
if (lastReset instanceof Date) return lastReset.valueOf();
|
|
129
|
-
if (typeof lastReset !== 'number') return -Infinity;
|
|
130
|
-
return lastReset;
|
|
123
|
+
return this.controller.getState().lastReset;
|
|
131
124
|
}
|
|
132
125
|
|
|
133
126
|
/** Called when middleware intercepts 'rest-hooks/fetch' action.
|
|
@@ -138,16 +131,15 @@ export default class NetworkManager {
|
|
|
138
131
|
* Uses throttle only when instructed by action meta. This is valuable
|
|
139
132
|
* for ensures mutation requests always go through.
|
|
140
133
|
*/
|
|
141
|
-
handleFetch(action
|
|
134
|
+
handleFetch(action) {
|
|
142
135
|
const fetch = action.payload;
|
|
143
136
|
const {
|
|
144
137
|
key,
|
|
145
138
|
throttle,
|
|
146
139
|
resolve,
|
|
147
|
-
reject
|
|
140
|
+
reject,
|
|
141
|
+
createdAt
|
|
148
142
|
} = action.meta;
|
|
149
|
-
// TODO(breaking): remove support for Date type in 'Receive' action
|
|
150
|
-
const createdAt = typeof action.meta.createdAt !== 'number' ? action.meta.createdAt.getTime() : action.meta.createdAt;
|
|
151
143
|
const deferedFetch = () => {
|
|
152
144
|
let promise = fetch();
|
|
153
145
|
const resolvePromise = promise => promise.then(data => {
|
|
@@ -160,7 +152,7 @@ export default class NetworkManager {
|
|
|
160
152
|
// schedule non-throttled resolutions in a microtask before receive
|
|
161
153
|
// this enables users awaiting their fetch to trigger any react updates needed to deal
|
|
162
154
|
// with upcoming changes because of the fetch (for instance avoiding suspense if something is deleted)
|
|
163
|
-
if (!throttle
|
|
155
|
+
if (!throttle) {
|
|
164
156
|
promise = resolvePromise(promise);
|
|
165
157
|
}
|
|
166
158
|
promise = promise.then(data => {
|
|
@@ -174,51 +166,26 @@ export default class NetworkManager {
|
|
|
174
166
|
|
|
175
167
|
// don't update state with promises started before last clear
|
|
176
168
|
if (createdAt >= lastReset) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
fetchedAt: createdAt
|
|
183
|
-
});
|
|
184
|
-
} else {
|
|
185
|
-
var _action$meta$options$, _action$meta$options;
|
|
186
|
-
// TODO(breaking): is this branch still possible? remove in next major update
|
|
187
|
-
// does this throw if the reducer fails? - no because reducer is wrapped in try/catch
|
|
188
|
-
this.controller.dispatch(createReceive(data, {
|
|
189
|
-
...action.meta,
|
|
190
|
-
fetchedAt: createdAt,
|
|
191
|
-
dataExpiryLength: (_action$meta$options$ = (_action$meta$options = action.meta.options) == null ? void 0 : _action$meta$options.dataExpiryLength) != null ? _action$meta$options$ : this.dataExpiryLength
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
169
|
+
this.controller.resolve(action.endpoint, {
|
|
170
|
+
args: action.meta.args,
|
|
171
|
+
response: data,
|
|
172
|
+
fetchedAt: createdAt
|
|
173
|
+
});
|
|
194
174
|
}
|
|
195
175
|
return data;
|
|
196
176
|
}).catch(error => {
|
|
197
177
|
const lastReset = this.getLastReset();
|
|
198
178
|
// don't update state with promises started before last clear
|
|
199
179
|
if (createdAt >= lastReset) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
207
|
-
} else {
|
|
208
|
-
var _action$meta$options$2, _action$meta$options2;
|
|
209
|
-
this.controller.dispatch(createReceiveError(error, {
|
|
210
|
-
...action.meta,
|
|
211
|
-
errorExpiryLength: (_action$meta$options$2 = (_action$meta$options2 = action.meta.options) == null ? void 0 : _action$meta$options2.errorExpiryLength) != null ? _action$meta$options$2 : this.errorExpiryLength,
|
|
212
|
-
fetchedAt: createdAt
|
|
213
|
-
}));
|
|
214
|
-
}
|
|
180
|
+
this.controller.resolve(action.endpoint, {
|
|
181
|
+
args: action.meta.args,
|
|
182
|
+
response: error,
|
|
183
|
+
fetchedAt: createdAt,
|
|
184
|
+
error: true
|
|
185
|
+
});
|
|
215
186
|
}
|
|
216
187
|
throw error;
|
|
217
188
|
});
|
|
218
|
-
// legacy behavior schedules resolution after dispatch
|
|
219
|
-
if (!throttle && !action.endpoint) {
|
|
220
|
-
promise = resolvePromise(promise);
|
|
221
|
-
}
|
|
222
189
|
return promise;
|
|
223
190
|
};
|
|
224
191
|
if (throttle) {
|
|
@@ -292,4 +259,4 @@ export default class NetworkManager {
|
|
|
292
259
|
return this.fetched[key];
|
|
293
260
|
}
|
|
294
261
|
}
|
|
295
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiQ29udHJvbGxlciIsImluaXRpYWxTdGF0ZSIsImNyZWF0ZVJlY2VpdmUiLCJjcmVhdGVSZWNlaXZlRXJyb3IiLCJSSUMiLCJSZXNldEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJOZXR3b3JrTWFuYWdlciIsImRhdGFFeHBpcnlMZW5ndGgiLCJlcnJvckV4cGlyeUxlbmd0aCIsImZldGNoZWQiLCJPYmplY3QiLCJjcmVhdGUiLCJyZXNvbHZlcnMiLCJyZWplY3RvcnMiLCJmZXRjaGVkQXQiLCJnZXRTdGF0ZSIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwiZGlzcGF0Y2giLCJuZXh0IiwiYWN0aW9uIiwiX2FjdGlvbiRlbmRwb2ludCIsInR5cGUiLCJoYW5kbGVGZXRjaCIsIm1ldGEiLCJvcHRpbWlzdGljUmVzcG9uc2UiLCJ1bmRlZmluZWQiLCJlbmRwb2ludCIsImdldE9wdGltaXN0aWNSZXNwb25zZSIsInNpZGVFZmZlY3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJrZXkiLCJfY29udHJvbGxlciRnZXRTdGF0ZSQiLCJlcnJvciIsImhhbmRsZVJlY2VpdmUiLCJjbGVhckFsbCIsImsiLCJza2lwTG9nZ2luZyIsImluaXQiLCJjbGVhbnVwRGF0ZSIsImNsZWFudXAiLCJEYXRlIiwibm93IiwiYWxsU2V0dGxlZCIsImZldGNoZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJjbGVhciIsImNhdGNoIiwiZ2V0TGFzdFJlc2V0IiwibGFzdFJlc2V0IiwidmFsdWVPZiIsIkluZmluaXR5IiwiZmV0Y2giLCJwYXlsb2FkIiwidGhyb3R0bGUiLCJyZWplY3QiLCJjcmVhdGVkQXQiLCJnZXRUaW1lIiwiZGVmZXJlZEZldGNoIiwicHJvbWlzZSIsInJlc29sdmVQcm9taXNlIiwiZGF0YSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImlzTmFOIiwiY29uc29sZSIsImFyZ3MiLCJyZXNwb25zZSIsIl9hY3Rpb24kbWV0YSRvcHRpb25zJCIsIl9hY3Rpb24kbWV0YSRvcHRpb25zIiwib3B0aW9ucyIsIl9hY3Rpb24kbWV0YSRvcHRpb25zJDIiLCJfYWN0aW9uJG1ldGEkb3B0aW9uczIiLCJwcm9taXNlSGFuZGxlciIsImdldE1pZGRsZXdhcmUiLCJ0aW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHsgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJuYWwuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlUmVjZWl2ZSxcbiAgY3JlYXRlUmVjZWl2ZUVycm9yLFxufSBmcm9tICcuLi9zdGF0ZS9sZWdhY3ktYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgUklDIGZyb20gJy4uL3N0YXRlL1JJQy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZldGNoQWN0aW9uLFxuICBSZWNlaXZlQWN0aW9uLFxuICBNYW5hZ2VyLFxuICBBY3Rpb25UeXBlcyxcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgU3RhdGUsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIFJlc2V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWUgPSAnUmVzZXRFcnJvcic7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0Fib3J0ZWQgZHVlIHRvIFJFU0VUJyk7XG4gIH1cbn1cblxuLyoqIEhhbmRsZXMgYWxsIGFzeW5jIG5ldHdvcmsgZGlzcGF0Y2hlc1xuICpcbiAqIERlZHVwZXMgY29uY3VycmVudCByZXF1ZXN0cyBieSBrZWVwaW5nIHRyYWNrIG9mIGFsbCBmZXRjaGVzIGluIGZsaWdodFxuICogYW5kIHJldHVybmluZyBleGlzdGluZyBwcm9taXNlcyBmb3IgcmVxdWVzdHMgYWxyZWFkeSBpbiBmbGlnaHQuXG4gKlxuICogSW50ZXJmYWNlcyB3aXRoIHN0b3JlIHZpYSBhIHJlZHV4LWNvbXBhdGlibGUgbWlkZGxld2FyZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL05ldHdvcmtNYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGltcGxlbWVudHMgTWFuYWdlciB7XG4gIHByb3RlY3RlZCBmZXRjaGVkOiB7IFtrOiBzdHJpbmddOiBQcm9taXNlPGFueT4gfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHByb3RlY3RlZCByZXNvbHZlcnM6IHsgW2s6IHN0cmluZ106ICh2YWx1ZT86IGFueSkgPT4gdm9pZCB9ID0ge307XG4gIHByb3RlY3RlZCByZWplY3RvcnM6IHsgW2s6IHN0cmluZ106ICh2YWx1ZT86IGFueSkgPT4gdm9pZCB9ID0ge307XG4gIHByb3RlY3RlZCBmZXRjaGVkQXQ6IHsgW2s6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIGRlY2xhcmUgcmVhZG9ubHkgZGF0YUV4cGlyeUxlbmd0aDogbnVtYmVyO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVycm9yRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIHByb3RlY3RlZCBkZWNsYXJlIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmU7XG4gIHByb3RlY3RlZCBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj4gPSAoKSA9PiBpbml0aWFsU3RhdGU7XG4gIHByb3RlY3RlZCBjb250cm9sbGVyOiBDb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgZGVjbGFyZSBjbGVhbnVwRGF0ZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkYXRhRXhwaXJ5TGVuZ3RoID0gNjAwMDAsIGVycm9yRXhwaXJ5TGVuZ3RoID0gMTAwMCkge1xuICAgIHRoaXMuZGF0YUV4cGlyeUxlbmd0aCA9IGRhdGFFeHBpcnlMZW5ndGg7XG4gICAgdGhpcy5lcnJvckV4cGlyeUxlbmd0aCA9IGVycm9yRXhwaXJ5TGVuZ3RoO1xuXG4gICAgdGhpcy5taWRkbGV3YXJlID0gPEMgZXh0ZW5kcyBNaWRkbGV3YXJlQVBJPih7XG4gICAgICBkaXNwYXRjaCxcbiAgICAgIGdldFN0YXRlLFxuICAgICAgY29udHJvbGxlcixcbiAgICB9OiBDKSA9PiB7XG4gICAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgcmV0dXJuIChuZXh0OiBDWydkaXNwYXRjaCddKTogQ1snZGlzcGF0Y2gnXSA9PlxuICAgICAgICAoYWN0aW9uKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGRVRDSF9UWVBFOlxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZldGNoKGFjdGlvbiwgZGlzcGF0Y2gsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgdGhhdCBjYXVzZXMgYW55IHN0YXRlIGNoYW5nZVxuICAgICAgICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBpbnRlcmNlcHQgb3RoZXIgZmV0Y2hlcyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgcmVkdWNlcnMgZHVyaW5nXG4gICAgICAgICAgICAgIC8vIHJlbmRlciAtIHNvIHdlIG5lZWQgdG8gc3RvcCAncmVhZG9ubHknIGZldGNoZXMgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCBpbiByZW5kZXJcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGFjdGlvbi5tZXRhLm9wdGltaXN0aWNSZXNwb25zZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgKGFjdGlvbi5lbmRwb2ludD8uZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgIGFjdGlvbi5lbmRwb2ludC5zaWRlRWZmZWN0KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgcmVjZWl2ZSBhZnRlciBuZXcgc3RhdGUgaXMgY29tcHV0ZWRcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLm1ldGEua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ubWV0YS5rZXldPy5lcnJvcjtcbiAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgZXJyb3JzIHJlc3VsdCBpbiBzdGF0ZSBtZXRhIGhhdmluZyBlcnJvciwgc28gd2Ugc2hvdWxkIHJlamVjdCB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBvbmx5IG5ldyBhY3Rpb24gdHlwZXNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWNlaXZlKGNyZWF0ZVJlY2VpdmVFcnJvcihlcnJvciwgYWN0aW9uLm1ldGEpKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVjZWl2ZShhY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlIFJFU0VUX1RZUEU6IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVqZWN0b3JzID0geyAuLi50aGlzLnJlamVjdG9ycyB9O1xuXG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBjb3VsZCBiZSBleHRlcm5hbCBsaXN0ZW5lcnMgdG8gdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAvLyB0aGlzIG11c3QgaGFwcGVuIGFmdGVyIGNvbW1pdCBzbyBvdXIgb3duIHJlamVjdG9yIGtub3dzIG5vdCB0byBkaXNwYXRjaCBhbiBlcnJvciBiYXNlZCBvbiB0aGlzXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrIGluIHJlamVjdG9ycykge1xuICAgICAgICAgICAgICAgICAgcmVqZWN0b3JzW2tdKG5ldyBSZXNldEVycm9yKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIFVzZWQgYnkgRGV2dG9vbHNNYW5hZ2VyIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGxvZyBhbiBhY3Rpb24gKi9cbiAgc2tpcExvZ2dpbmcoYWN0aW9uOiBBY3Rpb25UeXBlcykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBGRVRDSF9UWVBFICYmIGFjdGlvbi5tZXRhLmtleSBpbiB0aGlzLmZldGNoZWQ7XG4gIH1cblxuICAvKiogT24gbW91bnQgKi9cbiAgaW5pdCgpIHtcbiAgICBkZWxldGUgdGhpcy5jbGVhbnVwRGF0ZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBwcm9taXNlcyBhcmUgY29tcGxldGVkIGJ5IHJlamVjdGluZyByZW1haW5pbmcuICovXG4gIGNsZWFudXAoKSB7XG4gICAgLy8gZW5zdXJlIG5vIGRpc3BhdGNoZXMgYWZ0ZXIgdW5tb3VudFxuICAgIC8vIHRoaXMgbXVzdCBiZSByZXZlcnNpYmxlIChkb25lIGluIGluaXQpIHNvIHVzZUVmZmVjdCgpIHJlbWFpbnMgc3ltbWV0cmljXG4gICAgdGhpcy5jbGVhbnVwRGF0ZSA9IERhdGUubm93KCk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGNvbnN0IGZldGNoZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmV0Y2hlZCk7XG4gICAgaWYgKGZldGNoZXMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGZldGNoZXMpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBwcm9taXNlIHN0YXRlICovXG4gIHByb3RlY3RlZCBjbGVhckFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5yZWplY3RvcnMpIHtcbiAgICAgIHRoaXMuY2xlYXIoayk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsZWFyIHByb21pc2Ugc3RhdGUgZm9yIGEgZ2l2ZW4ga2V5ICovXG4gIHByb3RlY3RlZCBjbGVhcihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZmV0Y2hlZFtrZXldLmNhdGNoKCgpID0+IHt9KTtcbiAgICBkZWxldGUgdGhpcy5yZXNvbHZlcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5yZWplY3RvcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5mZXRjaGVkW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZEF0W2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFzdFJlc2V0KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBEYXRlKSByZXR1cm4gdGhpcy5jbGVhbnVwRGF0ZTtcbiAgICBjb25zdCBsYXN0UmVzZXQgPSB0aGlzLmNvbnRyb2xsZXIuZ2V0U3RhdGUoKS5sYXN0UmVzZXQ7XG4gICAgaWYgKGxhc3RSZXNldCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBsYXN0UmVzZXQudmFsdWVPZigpO1xuICAgIGlmICh0eXBlb2YgbGFzdFJlc2V0ICE9PSAnbnVtYmVyJykgcmV0dXJuIC1JbmZpbml0eTtcbiAgICByZXR1cm4gbGFzdFJlc2V0O1xuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyAncmVzdC1ob29rcy9mZXRjaCcgYWN0aW9uLlxuICAgKlxuICAgKiBXaWxsIHRoZW4gc3RhcnQgYSBwcm9taXNlIGZvciBhIGtleSBhbmQgcG90ZW50aWFsbHkgc3RhcnQgdGhlIG5ldHdvcmtcbiAgICogZmV0Y2guXG4gICAqXG4gICAqIFVzZXMgdGhyb3R0bGUgb25seSB3aGVuIGluc3RydWN0ZWQgYnkgYWN0aW9uIG1ldGEuIFRoaXMgaXMgdmFsdWFibGVcbiAgICogZm9yIGVuc3VyZXMgbXV0YXRpb24gcmVxdWVzdHMgYWx3YXlzIGdvIHRocm91Z2guXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRmV0Y2goXG4gICAgYWN0aW9uOiBGZXRjaEFjdGlvbixcbiAgICBkaXNwYXRjaDogKGFjdGlvbjogYW55KSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4gICkge1xuICAgIGNvbnN0IGZldGNoID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgY29uc3QgeyBrZXksIHRocm90dGxlLCByZXNvbHZlLCByZWplY3QgfSA9IGFjdGlvbi5tZXRhO1xuICAgIC8vIFRPRE8oYnJlYWtpbmcpOiByZW1vdmUgc3VwcG9ydCBmb3IgRGF0ZSB0eXBlIGluICdSZWNlaXZlJyBhY3Rpb25cbiAgICBjb25zdCBjcmVhdGVkQXQgPVxuICAgICAgdHlwZW9mIGFjdGlvbi5tZXRhLmNyZWF0ZWRBdCAhPT0gJ251bWJlcidcbiAgICAgICAgPyBhY3Rpb24ubWV0YS5jcmVhdGVkQXQuZ2V0VGltZSgpXG4gICAgICAgIDogYWN0aW9uLm1ldGEuY3JlYXRlZEF0O1xuXG4gICAgY29uc3QgZGVmZXJlZEZldGNoID0gKCkgPT4ge1xuICAgICAgbGV0IHByb21pc2UgPSBmZXRjaCgpO1xuICAgICAgY29uc3QgcmVzb2x2ZVByb21pc2UgPSAoXG4gICAgICAgIHByb21pc2U6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgbnVsbD4sXG4gICAgICApID0+XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAvLyBzY2hlZHVsZSBub24tdGhyb3R0bGVkIHJlc29sdXRpb25zIGluIGEgbWljcm90YXNrIGJlZm9yZSByZWNlaXZlXG4gICAgICAvLyB0aGlzIGVuYWJsZXMgdXNlcnMgYXdhaXRpbmcgdGhlaXIgZmV0Y2ggdG8gdHJpZ2dlciBhbnkgcmVhY3QgdXBkYXRlcyBuZWVkZWQgdG8gZGVhbFxuICAgICAgLy8gd2l0aCB1cGNvbWluZyBjaGFuZ2VzIGJlY2F1c2Ugb2YgdGhlIGZldGNoIChmb3IgaW5zdGFuY2UgYXZvaWRpbmcgc3VzcGVuc2UgaWYgc29tZXRoaW5nIGlzIGRlbGV0ZWQpXG4gICAgICBpZiAoIXRocm90dGxlICYmIGFjdGlvbi5lbmRwb2ludCkge1xuICAgICAgICBwcm9taXNlID0gcmVzb2x2ZVByb21pc2UocHJvbWlzZSk7XG4gICAgICB9XG4gICAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICBsZXQgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNOYU4obGFzdFJlc2V0KSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ3N0YXRlLmxhc3RSZXNldCBpcyBOYU4uIE9ubHkgcG9zaXRpdmUgdGltZXN0YW1wcyBhcmUgdmFsaWQuJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsYXN0UmVzZXQgPSAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGRvbid0IHVwZGF0ZSBzdGF0ZSB3aXRoIHByb21pc2VzIHN0YXJ0ZWQgYmVmb3JlIGxhc3QgY2xlYXJcbiAgICAgICAgICBpZiAoY3JlYXRlZEF0ID49IGxhc3RSZXNldCkge1xuICAgICAgICAgICAgLy8gd2Ugc3RpbGwgY2hlY2sgZm9yIGNvbnRyb2xsZXIgaW4gY2FzZSBzb21lb25lIGRpZG4ndCBoYXZlIHR5cGUgcHJvdGVjdGlvbiBzaW5jZSB0aGlzIGRpZG4ndCBhbHdheXMgZXhpc3RcbiAgICAgICAgICAgIGlmIChhY3Rpb24uZW5kcG9pbnQgJiYgdGhpcy5jb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5tZXRhLmFyZ3MgYXMgYW55LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgICAgICAgICAgICAgIGZldGNoZWRBdDogY3JlYXRlZEF0LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRPRE8oYnJlYWtpbmcpOiBpcyB0aGlzIGJyYW5jaCBzdGlsbCBwb3NzaWJsZT8gcmVtb3ZlIGluIG5leHQgbWFqb3IgdXBkYXRlXG4gICAgICAgICAgICAgIC8vIGRvZXMgdGhpcyB0aHJvdyBpZiB0aGUgcmVkdWNlciBmYWlscz8gLSBubyBiZWNhdXNlIHJlZHVjZXIgaXMgd3JhcHBlZCBpbiB0cnkvY2F0Y2hcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIGNyZWF0ZVJlY2VpdmUoZGF0YSwge1xuICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLm1ldGEsXG4gICAgICAgICAgICAgICAgICBmZXRjaGVkQXQ6IGNyZWF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgIGRhdGFFeHBpcnlMZW5ndGg6XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5tZXRhLm9wdGlvbnM/LmRhdGFFeHBpcnlMZW5ndGggPz9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zdCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuICAgICAgICAgIC8vIGRvbid0IHVwZGF0ZSBzdGF0ZSB3aXRoIHByb21pc2VzIHN0YXJ0ZWQgYmVmb3JlIGxhc3QgY2xlYXJcbiAgICAgICAgICBpZiAoY3JlYXRlZEF0ID49IGxhc3RSZXNldCkge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludCAmJiB0aGlzLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLnJlc29sdmUoYWN0aW9uLmVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgYXJnczogYWN0aW9uLm1ldGEuYXJncyBhcyBhbnksXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICAgIGZldGNoZWRBdDogY3JlYXRlZEF0LFxuICAgICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5kaXNwYXRjaChcbiAgICAgICAgICAgICAgICBjcmVhdGVSZWNlaXZlRXJyb3IoZXJyb3IsIHtcbiAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbi5tZXRhLFxuICAgICAgICAgICAgICAgICAgZXJyb3JFeHBpcnlMZW5ndGg6XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5tZXRhLm9wdGlvbnM/LmVycm9yRXhwaXJ5TGVuZ3RoID8/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JFeHBpcnlMZW5ndGgsXG4gICAgICAgICAgICAgICAgICBmZXRjaGVkQXQ6IGNyZWF0ZWRBdCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgLy8gbGVnYWN5IGJlaGF2aW9yIHNjaGVkdWxlcyByZXNvbHV0aW9uIGFmdGVyIGRpc3BhdGNoXG4gICAgICBpZiAoIXRocm90dGxlICYmICFhY3Rpb24uZW5kcG9pbnQpIHtcbiAgICAgICAgcHJvbWlzZSA9IHJlc29sdmVQcm9taXNlKHByb21pc2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIGlmICh0aHJvdHRsZSkge1xuICAgICAgcmV0dXJuIHRoaXMudGhyb3R0bGUoa2V5LCBkZWZlcmVkRmV0Y2gsIGNyZWF0ZWRBdClcbiAgICAgICAgLnRoZW4oZGF0YSA9PiByZXNvbHZlKGRhdGEpKVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkZWZlcmVkRmV0Y2goKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyBhIHJlY2VpdmUgYWN0aW9uLlxuICAgKlxuICAgKiBXaWxsIHJlc29sdmUgdGhlIHByb21pc2UgYXNzb2NpYXRlZCB3aXRoIHJlY2VpdmUga2V5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJlY2VpdmUoYWN0aW9uOiBSZWNlaXZlQWN0aW9uKSB7XG4gICAgLy8gdGhpcyBjYW4gc3RpbGwgdHVybiBvdXQgdG8gYmUgdW50cnVlIHNpbmNlIHRoaXMgaXMgYXN5bmNcbiAgICBpZiAoYWN0aW9uLm1ldGEua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgbGV0IHByb21pc2VIYW5kbGVyOiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gICAgICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgICAgIHByb21pc2VIYW5kbGVyID0gdGhpcy5yZWplY3RvcnNbYWN0aW9uLm1ldGEua2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb21pc2VIYW5kbGVyID0gdGhpcy5yZXNvbHZlcnNbYWN0aW9uLm1ldGEua2V5XTtcbiAgICAgIH1cbiAgICAgIHByb21pc2VIYW5kbGVyKGFjdGlvbi5wYXlsb2FkKTtcbiAgICAgIC8vIHNpbmNlIHdlJ3JlIHJlc29sdmVkIHdlIG5vIGxvbmdlciBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyBwcm9taXNlXG4gICAgICB0aGlzLmNsZWFyKGFjdGlvbi5tZXRhLmtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEF0dGFjaGVzIE5ldHdvcmtNYW5hZ2VyIHRvIHN0b3JlXG4gICAqXG4gICAqIEludGVyY2VwdHMgJ3Jlc3QtaG9va3MvZmV0Y2gnIGFjdGlvbnMgdG8gc3RhcnQgcmVxdWVzdHMuXG4gICAqXG4gICAqIFJlc29sdmUvcmVqZWN0cyBhIHJlcXVlc3Qgd2hlbiBtYXRjaGluZyAncmVzdC1ob29rcy9yZWNlaXZlJyBldmVudFxuICAgKiBpcyBzZWVuLlxuICAgKi9cbiAgZ2V0TWlkZGxld2FyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5taWRkbGV3YXJlO1xuICB9XG5cbiAgLyoqIEVuc3VyZXMgb25seSBvbmUgcmVxdWVzdCBmb3IgYSBnaXZlbiBrZXkgaXMgaW4gZmxpZ2h0IGF0IGFueSB0aW1lXG4gICAqXG4gICAqIFVzZXMga2V5IHRvIGVpdGhlciByZXRyaWV2ZSBpbi1mbGlnaHQgcHJvbWlzZSwgb3IgaWYgbm90XG4gICAqIGNyZWF0ZSBhIG5ldyBwcm9taXNlIGFuZCBjYWxsIGZldGNoLlxuICAgKlxuICAgKiBOb3RlOiBUaGUgbmV3IHByb21pc2UgaXMgbm90IGFjdHVhbGx5IHRpZWQgdG8gZmV0Y2ggYXQgYWxsLFxuICAgKiBidXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgZXhwZWN0ZWQgJ3JlY2lldmUnIGFjdGlvbiBpcyBwcm9jZXNzZWQuXG4gICAqIFRoaXMgZW5zdXJlcyBwcm9taXNlcyBhcmUgcmVzb2x2ZWQgb25seSBvbmNlIHRoZWlyIGRhdGEgaXMgcHJvY2Vzc2VkXG4gICAqIGJ5IHRoZSByZWR1Y2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRocm90dGxlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZldGNoOiAoKSA9PiBQcm9taXNlPGFueT4sXG4gICAgY3JlYXRlZEF0OiBudW1iZXIsXG4gICkge1xuICAgIGNvbnN0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG4gICAgLy8gd2UncmUgYWxyZWFkeSBmZXRjaGluZyBzbyByZXVzZSB0aGUgcHJvbWlzZVxuICAgIC8vIGZldGNoZXMgYWZ0ZXIgcmVzZXQgZG8gbm90IGNvdW50XG4gICAgaWYgKGtleSBpbiB0aGlzLmZldGNoZWQgJiYgdGhpcy5mZXRjaGVkQXRba2V5XSA+IGxhc3RSZXNldCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hlZFtrZXldO1xuICAgIH1cblxuICAgIHRoaXMuZmV0Y2hlZFtrZXldID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlcnNba2V5XSA9IHJlc29sdmU7XG4gICAgICB0aGlzLnJlamVjdG9yc1trZXldID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHRoaXMuZmV0Y2hlZEF0W2tleV0gPSBjcmVhdGVkQXQ7XG5cbiAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAvLyB3ZSBzaG91bGQganVzdCBzdG9wIGFsbCBlcnJvcnMgaGVyZS5cbiAgICAvLyBUT0RPOiBkZWNvdXBsZSB0aGlzIGZyb20gdXNlRmV0Y2hlcigpICh0aGF0J3Mgd2hhdCdzIGRpc3BhdGNoaW5nIHRoZSBlcnJvciB0aGUgcmVzb2x2ZXMgaW4gaGVyZSlcbiAgICBSSUMoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGZldGNoKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICB9LFxuICAgICAgeyB0aW1lb3V0OiA1MDAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hlZFtrZXldO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLFFBQVEsbUJBQW1CO0FBQ3BFLE9BQU9DLFVBQVUsTUFBTSw2QkFBNkI7QUFDcEQsU0FBU0MsWUFBWSxRQUFRLGdCQUFnQjtBQUM3QyxTQUNFQyxhQUFhLEVBQ2JDLGtCQUFrQixRQUNiLGtDQUFrQztBQUN6QyxPQUFPQyxHQUFHLE1BQU0saUJBQWlCO0FBV2pDLE9BQU8sTUFBTUMsVUFBVSxTQUFTQyxLQUFLLENBQUM7RUFHcENDLFdBQVdBLENBQUEsRUFBRztJQUNaLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztJQUFDLEtBSGhDQyxJQUFJLEdBQUcsWUFBWTtFQUluQjtBQUNG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
|
|
262
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiQ29udHJvbGxlciIsImNyZWF0ZVNldCIsIlJJQyIsIlJlc2V0RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIk5ldHdvcmtNYW5hZ2VyIiwiZGF0YUV4cGlyeUxlbmd0aCIsImVycm9yRXhwaXJ5TGVuZ3RoIiwiZmV0Y2hlZCIsIk9iamVjdCIsImNyZWF0ZSIsInJlc29sdmVycyIsInJlamVjdG9ycyIsImZldGNoZWRBdCIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVGZXRjaCIsImVuZHBvaW50IiwiZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlIiwidW5kZWZpbmVkIiwic2lkZUVmZmVjdCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm1ldGEiLCJrZXkiLCJfY29udHJvbGxlciRnZXRTdGF0ZSQiLCJlcnJvciIsImdldFN0YXRlIiwiaGFuZGxlUmVjZWl2ZSIsImFyZ3MiLCJyZXNwb25zZSIsImNsZWFyQWxsIiwiayIsInNraXBMb2dnaW5nIiwiaW5pdCIsImNsZWFudXBEYXRlIiwiY2xlYW51cCIsIkRhdGUiLCJub3ciLCJhbGxTZXR0bGVkIiwiZmV0Y2hlcyIsInZhbHVlcyIsImxlbmd0aCIsImNsZWFyIiwiY2F0Y2giLCJnZXRMYXN0UmVzZXQiLCJsYXN0UmVzZXQiLCJmZXRjaCIsInBheWxvYWQiLCJ0aHJvdHRsZSIsInJlamVjdCIsImNyZWF0ZWRBdCIsImRlZmVyZWRGZXRjaCIsInByb21pc2UiLCJyZXNvbHZlUHJvbWlzZSIsImRhdGEiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJpc05hTiIsImNvbnNvbGUiLCJwcm9taXNlSGFuZGxlciIsImdldE1pZGRsZXdhcmUiLCJ0aW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IGNyZWF0ZVNldCBmcm9tICcuLi9jb250cm9sbGVyL2NyZWF0ZVNldC5qcyc7XG5pbXBvcnQgUklDIGZyb20gJy4uL3N0YXRlL1JJQy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZldGNoQWN0aW9uLFxuICBNYW5hZ2VyLFxuICBBY3Rpb25UeXBlcyxcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgU2V0QWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbi8qKiBIYW5kbGVzIGFsbCBhc3luYyBuZXR3b3JrIGRpc3BhdGNoZXNcbiAqXG4gKiBEZWR1cGVzIGNvbmN1cnJlbnQgcmVxdWVzdHMgYnkga2VlcGluZyB0cmFjayBvZiBhbGwgZmV0Y2hlcyBpbiBmbGlnaHRcbiAqIGFuZCByZXR1cm5pbmcgZXhpc3RpbmcgcHJvbWlzZXMgZm9yIHJlcXVlc3RzIGFscmVhZHkgaW4gZmxpZ2h0LlxuICpcbiAqIEludGVyZmFjZXMgd2l0aCBzdG9yZSB2aWEgYSByZWR1eC1jb21wYXRpYmxlIG1pZGRsZXdhcmUuXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTmV0d29ya01hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGZldGNoZWQ6IHsgW2s6IHN0cmluZ106IFByb21pc2U8YW55PiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcHJvdGVjdGVkIHJlc29sdmVyczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIHJlamVjdG9yczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIGZldGNoZWRBdDogeyBbazogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZGVjbGFyZSByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICBkZWNsYXJlIGNsZWFudXBEYXRlPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFFeHBpcnlMZW5ndGggPSA2MDAwMCwgZXJyb3JFeHBpcnlMZW5ndGggPSAxMDAwKSB7XG4gICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoID0gZGF0YUV4cGlyeUxlbmd0aDtcbiAgICB0aGlzLmVycm9yRXhwaXJ5TGVuZ3RoID0gZXJyb3JFeHBpcnlMZW5ndGg7XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIChhY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZFVENIX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmV0Y2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gaW50ZXJjZXB0IG90aGVyIGZldGNoZXMgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHJlZHVjZXJzIGR1cmluZ1xuICAgICAgICAgICAgICAvLyByZW5kZXIgLSBzbyB3ZSBuZWVkIHRvIHN0b3AgJ3JlYWRvbmx5JyBmZXRjaGVzIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgaW4gcmVuZGVyXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2lkZUVmZmVjdFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgcmVjZWl2ZSBhZnRlciBuZXcgc3RhdGUgaXMgY29tcHV0ZWRcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLm1ldGEua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ubWV0YS5rZXldPy5lcnJvcjtcbiAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgZXJyb3JzIHJlc3VsdCBpbiBzdGF0ZSBtZXRhIGhhdmluZyBlcnJvciwgc28gd2Ugc2hvdWxkIHJlamVjdCB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVjZWl2ZShcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXQoYWN0aW9uLmVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24ubWV0YS5hcmdzIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoZWRBdDogYWN0aW9uLm1ldGEuZmV0Y2hlZEF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlY2VpdmUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSBSRVNFVF9UWVBFOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlamVjdG9ycyA9IHsgLi4udGhpcy5yZWplY3RvcnMgfTtcblxuICAgICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdGhlcmUgY291bGQgYmUgZXh0ZXJuYWwgbGlzdGVuZXJzIHRvIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBtdXN0IGhhcHBlbiBhZnRlciBjb21taXQgc28gb3VyIG93biByZWplY3RvciBrbm93cyBub3QgdG8gZGlzcGF0Y2ggYW4gZXJyb3IgYmFzZWQgb24gdGhpc1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgayBpbiByZWplY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlamVjdG9yc1trXShuZXcgUmVzZXRFcnJvcigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBVc2VkIGJ5IERldnRvb2xzTWFuYWdlciB0byBkZXRlcm1pbmUgd2hldGhlciB0byBsb2cgYW4gYWN0aW9uICovXG4gIHNraXBMb2dnaW5nKGFjdGlvbjogQWN0aW9uVHlwZXMpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiBhY3Rpb24udHlwZSA9PT0gRkVUQ0hfVFlQRSAmJiBhY3Rpb24ubWV0YS5rZXkgaW4gdGhpcy5mZXRjaGVkO1xuICB9XG5cbiAgLyoqIE9uIG1vdW50ICovXG4gIGluaXQoKSB7XG4gICAgZGVsZXRlIHRoaXMuY2xlYW51cERhdGU7XG4gIH1cblxuICAvKiogRW5zdXJlcyBhbGwgcHJvbWlzZXMgYXJlIGNvbXBsZXRlZCBieSByZWplY3RpbmcgcmVtYWluaW5nLiAqL1xuICBjbGVhbnVwKCkge1xuICAgIC8vIGVuc3VyZSBubyBkaXNwYXRjaGVzIGFmdGVyIHVubW91bnRcbiAgICAvLyB0aGlzIG11c3QgYmUgcmV2ZXJzaWJsZSAoZG9uZSBpbiBpbml0KSBzbyB1c2VFZmZlY3QoKSByZW1haW5zIHN5bW1ldHJpY1xuICAgIHRoaXMuY2xlYW51cERhdGUgPSBEYXRlLm5vdygpO1xuICB9XG5cbiAgYWxsU2V0dGxlZCgpIHtcbiAgICBjb25zdCBmZXRjaGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZldGNoZWQpO1xuICAgIGlmIChmZXRjaGVzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChmZXRjaGVzKTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgcHJvbWlzZSBzdGF0ZSAqL1xuICBwcm90ZWN0ZWQgY2xlYXJBbGwoKSB7XG4gICAgZm9yIChjb25zdCBrIGluIHRoaXMucmVqZWN0b3JzKSB7XG4gICAgICB0aGlzLmNsZWFyKGspO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhciBwcm9taXNlIHN0YXRlIGZvciBhIGdpdmVuIGtleSAqL1xuICBwcm90ZWN0ZWQgY2xlYXIoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmZldGNoZWRba2V5XS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgZGVsZXRlIHRoaXMucmVzb2x2ZXJzW2tleV07XG4gICAgZGVsZXRlIHRoaXMucmVqZWN0b3JzW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZFtrZXldO1xuICAgIGRlbGV0ZSB0aGlzLmZldGNoZWRBdFtrZXldO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExhc3RSZXNldCgpIHtcbiAgICBpZiAodGhpcy5jbGVhbnVwRGF0ZSkgcmV0dXJuIHRoaXMuY2xlYW51cERhdGU7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpLmxhc3RSZXNldDtcbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3Jlc3QtaG9va3MvZmV0Y2gnIGFjdGlvbi5cbiAgICpcbiAgICogV2lsbCB0aGVuIHN0YXJ0IGEgcHJvbWlzZSBmb3IgYSBrZXkgYW5kIHBvdGVudGlhbGx5IHN0YXJ0IHRoZSBuZXR3b3JrXG4gICAqIGZldGNoLlxuICAgKlxuICAgKiBVc2VzIHRocm90dGxlIG9ubHkgd2hlbiBpbnN0cnVjdGVkIGJ5IGFjdGlvbiBtZXRhLiBUaGlzIGlzIHZhbHVhYmxlXG4gICAqIGZvciBlbnN1cmVzIG11dGF0aW9uIHJlcXVlc3RzIGFsd2F5cyBnbyB0aHJvdWdoLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUZldGNoKGFjdGlvbjogRmV0Y2hBY3Rpb24pIHtcbiAgICBjb25zdCBmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIGNvbnN0IHsga2V5LCB0aHJvdHRsZSwgcmVzb2x2ZSwgcmVqZWN0LCBjcmVhdGVkQXQgfSA9IGFjdGlvbi5tZXRhO1xuXG4gICAgY29uc3QgZGVmZXJlZEZldGNoID0gKCkgPT4ge1xuICAgICAgbGV0IHByb21pc2UgPSBmZXRjaCgpO1xuICAgICAgY29uc3QgcmVzb2x2ZVByb21pc2UgPSAoXG4gICAgICAgIHByb21pc2U6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgbnVsbD4sXG4gICAgICApID0+XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAvLyBzY2hlZHVsZSBub24tdGhyb3R0bGVkIHJlc29sdXRpb25zIGluIGEgbWljcm90YXNrIGJlZm9yZSByZWNlaXZlXG4gICAgICAvLyB0aGlzIGVuYWJsZXMgdXNlcnMgYXdhaXRpbmcgdGhlaXIgZmV0Y2ggdG8gdHJpZ2dlciBhbnkgcmVhY3QgdXBkYXRlcyBuZWVkZWQgdG8gZGVhbFxuICAgICAgLy8gd2l0aCB1cGNvbWluZyBjaGFuZ2VzIGJlY2F1c2Ugb2YgdGhlIGZldGNoIChmb3IgaW5zdGFuY2UgYXZvaWRpbmcgc3VzcGVuc2UgaWYgc29tZXRoaW5nIGlzIGRlbGV0ZWQpXG4gICAgICBpZiAoIXRocm90dGxlKSB7XG4gICAgICAgIHByb21pc2UgPSByZXNvbHZlUHJvbWlzZShwcm9taXNlKTtcbiAgICAgIH1cbiAgICAgIHByb21pc2UgPSBwcm9taXNlXG4gICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgIGxldCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc05hTihsYXN0UmVzZXQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnc3RhdGUubGFzdFJlc2V0IGlzIE5hTi4gT25seSBwb3NpdGl2ZSB0aW1lc3RhbXBzIGFyZSB2YWxpZC4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxhc3RSZXNldCA9IDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHN0YXRlIHdpdGggcHJvbWlzZXMgc3RhcnRlZCBiZWZvcmUgbGFzdCBjbGVhclxuICAgICAgICAgIGlmIChjcmVhdGVkQXQgPj0gbGFzdFJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzb2x2ZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgYXJnczogYWN0aW9uLm1ldGEuYXJncyBhcyBhbnksXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQ6IGNyZWF0ZWRBdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zdCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuICAgICAgICAgIC8vIGRvbid0IHVwZGF0ZSBzdGF0ZSB3aXRoIHByb21pc2VzIHN0YXJ0ZWQgYmVmb3JlIGxhc3QgY2xlYXJcbiAgICAgICAgICBpZiAoY3JlYXRlZEF0ID49IGxhc3RSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLnJlc29sdmUoYWN0aW9uLmVuZHBvaW50LCB7XG4gICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5tZXRhLmFyZ3MgYXMgYW55LFxuICAgICAgICAgICAgICByZXNwb25zZTogZXJyb3IsXG4gICAgICAgICAgICAgIGZldGNoZWRBdDogY3JlYXRlZEF0LFxuICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgaWYgKHRocm90dGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy50aHJvdHRsZShrZXksIGRlZmVyZWRGZXRjaCwgY3JlYXRlZEF0KVxuICAgICAgICAudGhlbihkYXRhID0+IHJlc29sdmUoZGF0YSkpXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmVyZWRGZXRjaCgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzIGEgcmVjZWl2ZSBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgcmVzb2x2ZSB0aGUgcHJvbWlzZSBhc3NvY2lhdGVkIHdpdGggcmVjZWl2ZSBrZXkuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVjZWl2ZShhY3Rpb246IFNldEFjdGlvbikge1xuICAgIC8vIHRoaXMgY2FuIHN0aWxsIHR1cm4gb3V0IHRvIGJlIHVudHJ1ZSBzaW5jZSB0aGlzIGlzIGFzeW5jXG4gICAgaWYgKGFjdGlvbi5tZXRhLmtleSBpbiB0aGlzLmZldGNoZWQpIHtcbiAgICAgIGxldCBwcm9taXNlSGFuZGxlcjogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVqZWN0b3JzW2FjdGlvbi5tZXRhLmtleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVzb2x2ZXJzW2FjdGlvbi5tZXRhLmtleV07XG4gICAgICB9XG4gICAgICBwcm9taXNlSGFuZGxlcihhY3Rpb24ucGF5bG9hZCk7XG4gICAgICAvLyBzaW5jZSB3ZSdyZSByZXNvbHZlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgcHJvbWlzZVxuICAgICAgdGhpcy5jbGVhcihhY3Rpb24ubWV0YS5rZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBdHRhY2hlcyBOZXR3b3JrTWFuYWdlciB0byBzdG9yZVxuICAgKlxuICAgKiBJbnRlcmNlcHRzICdyZXN0LWhvb2tzL2ZldGNoJyBhY3Rpb25zIHRvIHN0YXJ0IHJlcXVlc3RzLlxuICAgKlxuICAgKiBSZXNvbHZlL3JlamVjdHMgYSByZXF1ZXN0IHdoZW4gbWF0Y2hpbmcgJ3Jlc3QtaG9va3MvcmVjZWl2ZScgZXZlbnRcbiAgICogaXMgc2Vlbi5cbiAgICovXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIG9ubHkgb25lIHJlcXVlc3QgZm9yIGEgZ2l2ZW4ga2V5IGlzIGluIGZsaWdodCBhdCBhbnkgdGltZVxuICAgKlxuICAgKiBVc2VzIGtleSB0byBlaXRoZXIgcmV0cmlldmUgaW4tZmxpZ2h0IHByb21pc2UsIG9yIGlmIG5vdFxuICAgKiBjcmVhdGUgYSBuZXcgcHJvbWlzZSBhbmQgY2FsbCBmZXRjaC5cbiAgICpcbiAgICogTm90ZTogVGhlIG5ldyBwcm9taXNlIGlzIG5vdCBhY3R1YWxseSB0aWVkIHRvIGZldGNoIGF0IGFsbCxcbiAgICogYnV0IGlzIHJlc29sdmVkIHdoZW4gdGhlIGV4cGVjdGVkICdyZWNpZXZlJyBhY3Rpb24gaXMgcHJvY2Vzc2VkLlxuICAgKiBUaGlzIGVuc3VyZXMgcHJvbWlzZXMgYXJlIHJlc29sdmVkIG9ubHkgb25jZSB0aGVpciBkYXRhIGlzIHByb2Nlc3NlZFxuICAgKiBieSB0aGUgcmVkdWNlci5cbiAgICovXG4gIHByb3RlY3RlZCB0aHJvdHRsZShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmZXRjaDogKCkgPT4gUHJvbWlzZTxhbnk+LFxuICAgIGNyZWF0ZWRBdDogbnVtYmVyLFxuICApIHtcbiAgICBjb25zdCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuICAgIC8vIHdlJ3JlIGFscmVhZHkgZmV0Y2hpbmcgc28gcmV1c2UgdGhlIHByb21pc2VcbiAgICAvLyBmZXRjaGVzIGFmdGVyIHJlc2V0IGRvIG5vdCBjb3VudFxuICAgIGlmIChrZXkgaW4gdGhpcy5mZXRjaGVkICYmIHRoaXMuZmV0Y2hlZEF0W2tleV0gPiBsYXN0UmVzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgICB9XG5cbiAgICB0aGlzLmZldGNoZWRba2V5XSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZXJzW2tleV0gPSByZXNvbHZlO1xuICAgICAgdGhpcy5yZWplY3RvcnNba2V5XSA9IHJlamVjdDtcbiAgICB9KTtcbiAgICB0aGlzLmZldGNoZWRBdFtrZXldID0gY3JlYXRlZEF0O1xuXG4gICAgLy8gc2luY2Ugb3VyIHJlYWwgcHJvbWlzZSBpcyByZXNvbHZlZCB2aWEgdGhlIHdyYXBSZWR1Y2VyKCksXG4gICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgLy8gVE9ETzogZGVjb3VwbGUgdGhpcyBmcm9tIHVzZUZldGNoZXIoKSAodGhhdCdzIHdoYXQncyBkaXNwYXRjaGluZyB0aGUgZXJyb3IgdGhlIHJlc29sdmVzIGluIGhlcmUpXG4gICAgUklDKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFRLG1CQUFtQjtBQUNwRSxPQUFPQyxVQUFVLE1BQU0sNkJBQTZCO0FBQ3BELE9BQU9DLFNBQVMsTUFBTSw0QkFBNEI7QUFDbEQsT0FBT0MsR0FBRyxNQUFNLGlCQUFpQjtBQVVqQyxPQUFPLE1BQU1DLFVBQVUsU0FBU0MsS0FBSyxDQUFDO0VBR3BDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFBQyxLQUhoQ0MsSUFBSSxHQUFHLFlBQVk7RUFJbkI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFXckRGLFdBQVdBLENBQUNHLGdCQUFnQixHQUFHLEtBQUssRUFBRUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFO0lBQUEsS0FWdERDLE9BQU8sR0FBa0NDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQztJQUFBLEtBQzVEQyxTQUFTLEdBQTJDLENBQUMsQ0FBQztJQUFBLEtBQ3REQyxTQUFTLEdBQTJDLENBQUMsQ0FBQztJQUFBLEtBQ3REQyxTQUFTLEdBQTRCLENBQUMsQ0FBQztJQUFBLEtBSXZDQyxVQUFVLEdBQWUsSUFBSWhCLFVBQVUsQ0FBQyxDQUFDO0lBSWpELElBQUksQ0FBQ1EsZ0JBQWdCLEdBQUdBLGdCQUFnQjtJQUN4QyxJQUFJLENBQUNDLGlCQUFpQixHQUFHQSxpQkFBaUI7SUFFMUMsSUFBSSxDQUFDUSxVQUFVLEdBQTZCRCxVQUFhLElBQUs7TUFDNUQs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
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EndpointInterface } from '@data-client/normalizr';
|
|
2
2
|
import ConnectionListener from './ConnectionListener.js';
|
|
3
|
-
import { Subscription
|
|
4
|
-
import type
|
|
3
|
+
import type { Subscription } from './SubscriptionManager.js';
|
|
4
|
+
import type Controller from '../controller/Controller.js';
|
|
5
|
+
import type { SubscribeAction } from '../types.js';
|
|
5
6
|
/**
|
|
6
7
|
* PollingSubscription keeps a given resource updated by
|
|
7
8
|
* dispatching a fetch at a rate equal to the minimum update
|
|
8
9
|
* interval requested.
|
|
9
10
|
*
|
|
10
|
-
* @see https://
|
|
11
|
+
* @see https://dataclient.io/docs/api/PollingSubscription
|
|
11
12
|
*/
|
|
12
13
|
export default class PollingSubscription implements Subscription {
|
|
13
|
-
protected readonly
|
|
14
|
-
protected readonly
|
|
14
|
+
protected readonly endpoint: EndpointInterface;
|
|
15
|
+
protected readonly args: readonly any[];
|
|
15
16
|
protected readonly key: string;
|
|
16
17
|
protected frequency: number;
|
|
17
18
|
protected frequencyHistogram: Map<number, number>;
|
|
18
|
-
protected
|
|
19
|
-
protected getState: () => State<unknown>;
|
|
19
|
+
protected controller: Controller;
|
|
20
20
|
protected intervalId?: ReturnType<typeof setInterval>;
|
|
21
21
|
protected lastIntervalId?: ReturnType<typeof setInterval>;
|
|
22
22
|
protected startId?: ReturnType<typeof setTimeout>;
|
|
23
23
|
private connectionListener;
|
|
24
|
-
constructor(
|
|
24
|
+
constructor(action: Omit<SubscribeAction, 'type'>, controller: Controller, connectionListener?: ConnectionListener);
|
|
25
25
|
/** Subscribe to a frequency */
|
|
26
26
|
add(frequency?: number): void;
|
|
27
27
|
/** Unsubscribe from a frequency */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PollingSubscription.d.ts","sourceRoot":"","sources":["../../src/manager/PollingSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PollingSubscription.d.ts","sourceRoot":"","sources":["../../src/manager/PollingSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,YAAY;IAC9D,mBAA2B,QAAQ,EAAE,iBAAiB,CAAC;IACvD,mBAA2B,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IAChD,mBAA2B,GAAG,EAAE,MAAM,CAAC;IACvC,UAAkB,SAAS,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAC9D,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,UAAkB,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9D,UAAkB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAClE,UAAkB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC1D,QAAgB,kBAAkB,CAAqB;gBAGrD,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,EACrC,UAAU,EAAE,UAAU,EACtB,kBAAkB,CAAC,EAAE,kBAAkB;IAqBzC,+BAA+B;IAC/B,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM;IAkBtB,mCAAmC;IACnC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM;IAgCzB,sDAAsD;IACtD,OAAO;IAiBP,0CAA0C;IAC1C,SAAS,CAAC,MAAM;IAchB,6CAA6C;IAC7C,SAAS,CAAC,eAAe,aAIvB;IAEF,6CAA6C;IAC7C,SAAS,CAAC,cAAc,aAkBtB;IAEF;;;OAGG;IACH,SAAS,CAAC,GAAG;IAmBb,sBAAsB;IACtB,SAAS,CAAC,aAAa;CAGxB"}
|
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import DefaultConnectionListener from './DefaultConnectionListener.js';
|
|
2
|
-
import createFetch from '../controller/createFetch.js';
|
|
3
2
|
/**
|
|
4
3
|
* PollingSubscription keeps a given resource updated by
|
|
5
4
|
* dispatching a fetch at a rate equal to the minimum update
|
|
6
5
|
* interval requested.
|
|
7
6
|
*
|
|
8
|
-
* @see https://
|
|
7
|
+
* @see https://dataclient.io/docs/api/PollingSubscription
|
|
9
8
|
*/
|
|
10
9
|
export default class PollingSubscription {
|
|
11
|
-
constructor({
|
|
12
|
-
key,
|
|
13
|
-
schema,
|
|
14
|
-
fetch,
|
|
15
|
-
frequency,
|
|
16
|
-
getState
|
|
17
|
-
}, dispatch, connectionListener) {
|
|
10
|
+
constructor(action, controller, connectionListener) {
|
|
18
11
|
this.frequencyHistogram = new Map();
|
|
19
12
|
/** What happens when browser goes offline */
|
|
20
13
|
this.offlineListener = () => {
|
|
@@ -37,14 +30,13 @@ export default class PollingSubscription {
|
|
|
37
30
|
}, Math.max(0, this.lastFetchTime() - now + this.frequency));
|
|
38
31
|
this.connectionListener.addOfflineListener(this.offlineListener);
|
|
39
32
|
};
|
|
40
|
-
if (
|
|
41
|
-
this.
|
|
42
|
-
this.
|
|
43
|
-
this.
|
|
44
|
-
this.key = key;
|
|
33
|
+
if (action.endpoint.pollFrequency === undefined) throw new Error('frequency needed for polling subscription');
|
|
34
|
+
this.endpoint = action.endpoint;
|
|
35
|
+
this.frequency = action.endpoint.pollFrequency;
|
|
36
|
+
this.args = action.meta.args;
|
|
37
|
+
this.key = action.meta.key;
|
|
45
38
|
this.frequencyHistogram.set(this.frequency, 1);
|
|
46
|
-
this.
|
|
47
|
-
this.getState = getState;
|
|
39
|
+
this.controller = controller;
|
|
48
40
|
this.connectionListener = connectionListener || new DefaultConnectionListener();
|
|
49
41
|
|
|
50
42
|
// Kickstart running since this is initialized after the online notif is sent
|
|
@@ -117,18 +109,17 @@ export default class PollingSubscription {
|
|
|
117
109
|
|
|
118
110
|
/** Trigger request for latest resource */
|
|
119
111
|
update() {
|
|
120
|
-
const
|
|
121
|
-
endpoint
|
|
122
|
-
|
|
112
|
+
const sup = this.endpoint;
|
|
113
|
+
const endpoint = function (...args) {
|
|
114
|
+
return sup.call(this, ...args);
|
|
115
|
+
};
|
|
116
|
+
Object.assign(endpoint, this.endpoint);
|
|
123
117
|
endpoint.dataExpiryLength = this.frequency / 2;
|
|
124
118
|
endpoint.errorExpiryLength = this.frequency / 10;
|
|
125
119
|
endpoint.errorPolicy = () => 'soft';
|
|
126
|
-
|
|
127
|
-
args: []
|
|
128
|
-
});
|
|
120
|
+
endpoint.key = () => this.key;
|
|
129
121
|
// stop any errors here from bubbling
|
|
130
|
-
|
|
131
|
-
this.dispatch(action);
|
|
122
|
+
this.controller.fetch(endpoint, ...this.args).catch(() => null);
|
|
132
123
|
}
|
|
133
124
|
/** Run polling process with current frequency
|
|
134
125
|
*
|
|
@@ -152,8 +143,8 @@ export default class PollingSubscription {
|
|
|
152
143
|
|
|
153
144
|
/** Last fetch time */
|
|
154
145
|
lastFetchTime() {
|
|
155
|
-
var _this$
|
|
156
|
-
return (_this$
|
|
146
|
+
var _this$controller$getS, _this$controller$getS2;
|
|
147
|
+
return (_this$controller$getS = (_this$controller$getS2 = this.controller.getState().meta[this.key]) == null ? void 0 : _this$controller$getS2.date) != null ? _this$controller$getS : 0;
|
|
157
148
|
}
|
|
158
149
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyIiwiY3JlYXRlRmV0Y2giLCJQb2xsaW5nU3Vic2NyaXB0aW9uIiwiY29uc3RydWN0b3IiLCJrZXkiLCJzY2hlbWEiLCJmZXRjaCIsImZyZXF1ZW5jeSIsImdldFN0YXRlIiwiZGlzcGF0Y2giLCJjb25uZWN0aW9uTGlzdGVuZXIiLCJmcmVxdWVuY3lIaXN0b2dyYW0iLCJNYXAiLCJvZmZsaW5lTGlzdGVuZXIiLCJjbGVhbnVwIiwiYWRkT25saW5lTGlzdGVuZXIiLCJvbmxpbmVMaXN0ZW5lciIsInJlbW92ZU9ubGluZUxpc3RlbmVyIiwibm93IiwiRGF0ZSIsInN0YXJ0SWQiLCJzZXRUaW1lb3V0IiwidXBkYXRlIiwicnVuIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIndhcm4iLCJNYXRoIiwibWF4IiwibGFzdEZldGNoVGltZSIsImFkZE9mZmxpbmVMaXN0ZW5lciIsInVuZGVmaW5lZCIsIkVycm9yIiwic2V0IiwiaXNPbmxpbmUiLCJhZGQiLCJoYXMiLCJnZXQiLCJyZW1vdmUiLCJkZWxldGUiLCJzaXplIiwibWluIiwia2V5cyIsImVycm9yIiwiaW50ZXJ2YWxJZCIsImNsZWFySW50ZXJ2YWwiLCJsYXN0SW50ZXJ2YWxJZCIsImNsZWFyVGltZW91dCIsInJlbW92ZU9mZmxpbmVMaXN0ZW5lciIsImVuZHBvaW50IiwiZGF0YUV4cGlyeUxlbmd0aCIsImVycm9yRXhwaXJ5TGVuZ3RoIiwiZXJyb3JQb2xpY3kiLCJhY3Rpb24iLCJhcmdzIiwibWV0YSIsInByb21pc2UiLCJjYXRjaCIsImUiLCJzZXRJbnRlcnZhbCIsIl90aGlzJGdldFN0YXRlJG1ldGEkdCIsIl90aGlzJGdldFN0YXRlJG1ldGEkdDIiLCJkYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvUG9sbGluZ1N1YnNjcmlwdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBTY2hlbWEgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IENvbm5lY3Rpb25MaXN0ZW5lciBmcm9tICcuL0Nvbm5lY3Rpb25MaXN0ZW5lci5qcyc7XG5pbXBvcnQgRGVmYXVsdENvbm5lY3Rpb25MaXN0ZW5lciBmcm9tICcuL0RlZmF1bHRDb25uZWN0aW9uTGlzdGVuZXIuanMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJzY3JpcHRpb25Jbml0IH0gZnJvbSAnLi9TdWJzY3JpcHRpb25NYW5hZ2VyLmpzJztcbmltcG9ydCBjcmVhdGVGZXRjaCBmcm9tICcuLi9jb250cm9sbGVyL2NyZWF0ZUZldGNoLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhdGUsIERpc3BhdGNoIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIFBvbGxpbmdTdWJzY3JpcHRpb24ga2VlcHMgYSBnaXZlbiByZXNvdXJjZSB1cGRhdGVkIGJ5XG4gKiBkaXNwYXRjaGluZyBhIGZldGNoIGF0IGEgcmF0ZSBlcXVhbCB0byB0aGUgbWluaW11bSB1cGRhdGVcbiAqIGludGVydmFsIHJlcXVlc3RlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL1BvbGxpbmdTdWJzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9sbGluZ1N1YnNjcmlwdGlvbiBpbXBsZW1lbnRzIFN1YnNjcmlwdGlvbiB7XG4gIHByb3RlY3RlZCBkZWNsYXJlIHJlYWRvbmx5IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBmZXRjaDogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGRlY2xhcmUgZnJlcXVlbmN5OiBudW1iZXI7XG4gIHByb3RlY3RlZCBmcmVxdWVuY3lIaXN0b2dyYW06IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gIHByb3RlY3RlZCBkZWNsYXJlIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+O1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIHByb3RlY3RlZCBkZWNsYXJlIGludGVydmFsSWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIHByb3RlY3RlZCBkZWNsYXJlIGxhc3RJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGFydElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgZGVjbGFyZSBjb25uZWN0aW9uTGlzdGVuZXI6IENvbm5lY3Rpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB7IGtleSwgc2NoZW1hLCBmZXRjaCwgZnJlcXVlbmN5LCBnZXRTdGF0ZSB9OiBTdWJzY3JpcHRpb25Jbml0LFxuICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+LFxuICAgIGNvbm5lY3Rpb25MaXN0ZW5lcj86IENvbm5lY3Rpb25MaXN0ZW5lcixcbiAgKSB7XG4gICAgaWYgKGZyZXF1ZW5jeSA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmcmVxdWVuY3kgbmVlZGVkIGZvciBwb2xsaW5nIHN1YnNjcmlwdGlvbicpO1xuICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuICAgIHRoaXMuZmV0Y2ggPSBmZXRjaDtcbiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQodGhpcy5mcmVxdWVuY3ksIDEpO1xuICAgIHRoaXMuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIgPVxuICAgICAgY29ubmVjdGlvbkxpc3RlbmVyIHx8IG5ldyBEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyKCk7XG5cbiAgICAvLyBLaWNrc3RhcnQgcnVubmluZyBzaW5jZSB0aGlzIGlzIGluaXRpYWxpemVkIGFmdGVyIHRoZSBvbmxpbmUgbm90aWYgaXMgc2VudFxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25MaXN0ZW5lci5pc09ubGluZSgpKSB7XG4gICAgICB0aGlzLm9ubGluZUxpc3RlbmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2ZmbGluZUxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN1YnNjcmliZSB0byBhIGZyZXF1ZW5jeSAqL1xuICBhZGQoZnJlcXVlbmN5PzogbnVtYmVyKSB7XG4gICAgaWYgKGZyZXF1ZW5jeSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmhhcyhmcmVxdWVuY3kpKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQoXG4gICAgICAgIGZyZXF1ZW5jeSxcbiAgICAgICAgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgKyAxLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KGZyZXF1ZW5jeSwgMSk7XG5cbiAgICAgIC8vIG5ldyBtaW4gc28gcmVzdGFydCBzZXJ2aWNlXG4gICAgICBpZiAoZnJlcXVlbmN5IDwgdGhpcy5mcmVxdWVuY3kpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFVuc3Vic2NyaWJlIGZyb20gYSBmcmVxdWVuY3kgKi9cbiAgcmVtb3ZlKGZyZXF1ZW5jeT86IG51bWJlcikge1xuICAgIGlmIChmcmVxdWVuY3kgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5oYXMoZnJlcXVlbmN5KSkge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KFxuICAgICAgICBmcmVxdWVuY3ksXG4gICAgICAgICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5nZXQoZnJlcXVlbmN5KSBhcyBudW1iZXIpIC0gMSxcbiAgICAgICk7XG4gICAgICBpZiAoKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgPCAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmRlbGV0ZShmcmVxdWVuY3kpO1xuXG4gICAgICAgIC8vIG5vdGhpbmcgc3Vic2NyaWJlZCB0byB0aGlzIGFueW1vcmUuLi5pdCBpcyBpbnZhbGlkXG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zaXplID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzIHdhcyB0aGUgbWluLCBzbyBmaW5kIHRoZSBuZXh0IHNpemVcbiAgICAgICAgaWYgKGZyZXF1ZW5jeSA8PSB0aGlzLmZyZXF1ZW5jeSkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5ID0gTWF0aC5taW4oLi4udGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0ua2V5cygpKTtcbiAgICAgICAgICB0aGlzLnJ1bigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBlbHNlIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBNaXNtYXRjaGVkIHJlbW92ZTogJHtmcmVxdWVuY3l9IGlzIG5vdCBzdWJzY3JpYmVkIGZvciAke3RoaXMua2V5fWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQ2xlYW51cCBtZWFucyBjbGVhcmluZyBvdXQgYmFja2dyb3VuZCBpbnRlcnZhbC4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgICBkZWxldGUgdGhpcy5pbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXN0SW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmxhc3RJbnRlcnZhbElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zdGFydElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0YXJ0SWQ7XG4gICAgfVxuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9mZmxpbmVMaXN0ZW5lcih0aGlzLm9mZmxpbmVMaXN0ZW5lcik7XG4gIH1cblxuICAvKiogVHJpZ2dlciByZXF1ZXN0IGZvciBsYXRlc3QgcmVzb3VyY2UgKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UgPSAoKSA9PiB0aGlzLmZldGNoKCk7XG4gICAgKGVuZHBvaW50IGFzIGFueSkuc2NoZW1hID0gdGhpcy5zY2hlbWE7XG4gICAgZW5kcG9pbnQua2V5ID0gKCkgPT4gdGhpcy5rZXk7XG4gICAgKGVuZHBvaW50IGFzIGFueSkuZGF0YUV4cGlyeUxlbmd0aCA9IHRoaXMuZnJlcXVlbmN5IC8gMjtcbiAgICAoZW5kcG9pbnQgYXMgYW55KS5lcnJvckV4cGlyeUxlbmd0aCA9IHRoaXMuZnJlcXVlbmN5IC8gMTA7XG4gICAgZW5kcG9pbnQuZXJyb3JQb2xpY3kgPSAoKSA9PiAnc29mdCcgYXMgY29uc3Q7XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlRmV0Y2goZW5kcG9pbnQsIHsgYXJnczogW10gfSk7XG4gICAgLy8gc3RvcCBhbnkgZXJyb3JzIGhlcmUgZnJvbSBidWJibGluZ1xuICAgIChhY3Rpb24ubWV0YS5wcm9taXNlIGFzIFByb21pc2U8YW55PikuY2F0Y2goZSA9PiBudWxsKTtcbiAgICB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH1cblxuICAvKiogV2hhdCBoYXBwZW5zIHdoZW4gYnJvd3NlciBnb2VzIG9mZmxpbmUgKi9cbiAgcHJvdGVjdGVkIG9mZmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAvLyB0aGlzIGNsZWFycyBleGlzdGluZyBsaXN0ZW5lcnMsIHNvIG5vIG5lZWQgdG8gY2xlYXIgb2ZmbGluZSBsaXN0ZW5lclxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLmFkZE9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICB9O1xuXG4gIC8qKiBXaGF0IGhhcHBlbnMgd2hlbiBicm93c2VyIGNvbWVzIG9ubGluZSAqL1xuICBwcm90ZWN0ZWQgb25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIucmVtb3ZlT25saW5lTGlzdGVuZXIodGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnN0YXJ0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0SWQpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuc3RhcnRJZDtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgdGhpcy5ydW4oKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFBvbGwgc2V0VGltZW91dCBmb3IgJHt0aGlzLmtleX0gc3RpbGwgcnVubmluZywgYnV0IHRpbWVvdXRJZCBkZWxldGVkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LCBNYXRoLm1heCgwLCB0aGlzLmxhc3RGZXRjaFRpbWUoKSAtIG5vdyArIHRoaXMuZnJlcXVlbmN5KSk7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIuYWRkT2ZmbGluZUxpc3RlbmVyKHRoaXMub2ZmbGluZUxpc3RlbmVyKTtcbiAgfTtcblxuICAvKiogUnVuIHBvbGxpbmcgcHJvY2VzcyB3aXRoIGN1cnJlbnQgZnJlcXVlbmN5XG4gICAqXG4gICAqIFdpbGwgY2xlYW4gdXAgb2xkIHBvbGwgaW50ZXJ2YWwgb24gbmV4dCBydW5cbiAgICovXG4gIHByb3RlY3RlZCBydW4oKSB7XG4gICAgaWYgKHRoaXMuc3RhcnRJZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHRoaXMubGFzdEludGVydmFsSWQgPSB0aGlzLmludGVydmFsSWQ7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbG9uZyBpbnRvIHRoZSBsYXN0IHBvbGwgaXQgd2FzIGJlZm9yZSByZXNldHRpbmdcbiAgICAgIC8vIHdlIHdhaXQgdGlsIHRoZSBuZXh0IGZldGNoIHRvIGNsZWFyIG9sZCBpbnRlcnZhbHNcbiAgICAgIGlmICh0aGlzLmxhc3RJbnRlcnZhbElkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sYXN0SW50ZXJ2YWxJZCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkgdGhpcy51cGRhdGUoKTtcbiAgICAgIGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBQb2xsIGludGVydmFsSWQgZm9yICR7dGhpcy5rZXl9IHN0aWxsIHJ1bm5pbmcsIGJ1dCBpbnRlcnZhbElkIGRlbGV0ZWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIHRoaXMuZnJlcXVlbmN5KTtcbiAgfVxuXG4gIC8qKiBMYXN0IGZldGNoIHRpbWUgKi9cbiAgcHJvdGVjdGVkIGxhc3RGZXRjaFRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGUoKS5tZXRhW3RoaXMua2V5XT8uZGF0ZSA/PyAwO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUdBLE9BQU9BLHlCQUF5QixNQUFNLGdDQUFnQztBQUV0RSxPQUFPQyxXQUFXLE1BQU0sOEJBQThCO0FBR3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxNQUFNQyxtQkFBbUIsQ0FBeUI7RUFhL0RDLFdBQVdBLENBQ1Q7SUFBRUMsR0FBRztJQUFFQyxNQUFNO0lBQUVDLEtBQUs7SUFBRUMsU0FBUztJQUFFQztFQUEyQixDQUFDLEVBQzdEQyxRQUF1QixFQUN2QkMsa0JBQXVDLEVBQ3ZDO0lBQUEsS0FaUUMsa0JBQWtCLEdBQXdCLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBcUg3RDtJQUFBLEtBQ1VDLGVBQWUsR0FBRyxNQUFNO01BQ2hDO01BQ0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUNkLElBQUksQ0FBQ0osa0JBQWtCLENBQUNLLGlCQUFpQixDQUFDLElBQUksQ0FBQ0MsY0FBYyxDQUFDO0lBQ2hFLENBQUM7SUFFRDtJQUFBLEtBQ1VBLGNBQWMsR0FBRyxNQUFNO01BQy9CLElBQUksQ0FBQ04sa0JBQWtCLENBQUNPLG9CQUFvQixDQUFDLElBQUksQ0FBQ0QsY0FBYyxDQUFDO01BQ2pFLE1BQU1FLEdBQUcsR0FBR0MsSUFBSSxDQUFDRCxHQUFHLENB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
|
|
150
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyIiwiUG9sbGluZ1N1YnNjcmlwdGlvbiIsImNvbnN0cnVjdG9yIiwiYWN0aW9uIiwiY29udHJvbGxlciIsImNvbm5lY3Rpb25MaXN0ZW5lciIsImZyZXF1ZW5jeUhpc3RvZ3JhbSIsIk1hcCIsIm9mZmxpbmVMaXN0ZW5lciIsImNsZWFudXAiLCJhZGRPbmxpbmVMaXN0ZW5lciIsIm9ubGluZUxpc3RlbmVyIiwicmVtb3ZlT25saW5lTGlzdGVuZXIiLCJub3ciLCJEYXRlIiwic3RhcnRJZCIsInNldFRpbWVvdXQiLCJ1cGRhdGUiLCJydW4iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsImtleSIsIk1hdGgiLCJtYXgiLCJsYXN0RmV0Y2hUaW1lIiwiZnJlcXVlbmN5IiwiYWRkT2ZmbGluZUxpc3RlbmVyIiwiZW5kcG9pbnQiLCJwb2xsRnJlcXVlbmN5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJhcmdzIiwibWV0YSIsInNldCIsImlzT25saW5lIiwiYWRkIiwiaGFzIiwiZ2V0IiwicmVtb3ZlIiwiZGVsZXRlIiwic2l6ZSIsIm1pbiIsImtleXMiLCJlcnJvciIsImludGVydmFsSWQiLCJjbGVhckludGVydmFsIiwibGFzdEludGVydmFsSWQiLCJjbGVhclRpbWVvdXQiLCJyZW1vdmVPZmZsaW5lTGlzdGVuZXIiLCJzdXAiLCJjYWxsIiwiT2JqZWN0IiwiYXNzaWduIiwiZGF0YUV4cGlyeUxlbmd0aCIsImVycm9yRXhwaXJ5TGVuZ3RoIiwiZXJyb3JQb2xpY3kiLCJmZXRjaCIsImNhdGNoIiwic2V0SW50ZXJ2YWwiLCJfdGhpcyRjb250cm9sbGVyJGdldFMiLCJfdGhpcyRjb250cm9sbGVyJGdldFMyIiwiZ2V0U3RhdGUiLCJkYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvUG9sbGluZ1N1YnNjcmlwdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb25uZWN0aW9uTGlzdGVuZXIgZnJvbSAnLi9Db25uZWN0aW9uTGlzdGVuZXIuanMnO1xuaW1wb3J0IERlZmF1bHRDb25uZWN0aW9uTGlzdGVuZXIgZnJvbSAnLi9EZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb25NYW5hZ2VyLmpzJztcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3Vic2NyaWJlQWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIFBvbGxpbmdTdWJzY3JpcHRpb24ga2VlcHMgYSBnaXZlbiByZXNvdXJjZSB1cGRhdGVkIGJ5XG4gKiBkaXNwYXRjaGluZyBhIGZldGNoIGF0IGEgcmF0ZSBlcXVhbCB0byB0aGUgbWluaW11bSB1cGRhdGVcbiAqIGludGVydmFsIHJlcXVlc3RlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Qb2xsaW5nU3Vic2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbGxpbmdTdWJzY3JpcHRpb24gaW1wbGVtZW50cyBTdWJzY3JpcHRpb24ge1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBkZWNsYXJlIHJlYWRvbmx5IGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGRlY2xhcmUgZnJlcXVlbmN5OiBudW1iZXI7XG4gIHByb3RlY3RlZCBmcmVxdWVuY3lIaXN0b2dyYW06IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gIHByb3RlY3RlZCBkZWNsYXJlIGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7XG4gIHByb3RlY3RlZCBkZWNsYXJlIGludGVydmFsSWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIHByb3RlY3RlZCBkZWNsYXJlIGxhc3RJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGFydElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgZGVjbGFyZSBjb25uZWN0aW9uTGlzdGVuZXI6IENvbm5lY3Rpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhY3Rpb246IE9taXQ8U3Vic2NyaWJlQWN0aW9uLCAndHlwZSc+LFxuICAgIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4gICAgY29ubmVjdGlvbkxpc3RlbmVyPzogQ29ubmVjdGlvbkxpc3RlbmVyLFxuICApIHtcbiAgICBpZiAoYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3kgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignZnJlcXVlbmN5IG5lZWRlZCBmb3IgcG9sbGluZyBzdWJzY3JpcHRpb24nKTtcbiAgICB0aGlzLmVuZHBvaW50ID0gYWN0aW9uLmVuZHBvaW50O1xuICAgIHRoaXMuZnJlcXVlbmN5ID0gYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3k7XG4gICAgdGhpcy5hcmdzID0gYWN0aW9uLm1ldGEuYXJncztcbiAgICB0aGlzLmtleSA9IGFjdGlvbi5tZXRhLmtleTtcbiAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQodGhpcy5mcmVxdWVuY3ksIDEpO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIgPVxuICAgICAgY29ubmVjdGlvbkxpc3RlbmVyIHx8IG5ldyBEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyKCk7XG5cbiAgICAvLyBLaWNrc3RhcnQgcnVubmluZyBzaW5jZSB0aGlzIGlzIGluaXRpYWxpemVkIGFmdGVyIHRoZSBvbmxpbmUgbm90aWYgaXMgc2VudFxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25MaXN0ZW5lci5pc09ubGluZSgpKSB7XG4gICAgICB0aGlzLm9ubGluZUxpc3RlbmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2ZmbGluZUxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN1YnNjcmliZSB0byBhIGZyZXF1ZW5jeSAqL1xuICBhZGQoZnJlcXVlbmN5PzogbnVtYmVyKSB7XG4gICAgaWYgKGZyZXF1ZW5jeSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmhhcyhmcmVxdWVuY3kpKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQoXG4gICAgICAgIGZyZXF1ZW5jeSxcbiAgICAgICAgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgKyAxLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KGZyZXF1ZW5jeSwgMSk7XG5cbiAgICAgIC8vIG5ldyBtaW4gc28gcmVzdGFydCBzZXJ2aWNlXG4gICAgICBpZiAoZnJlcXVlbmN5IDwgdGhpcy5mcmVxdWVuY3kpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFVuc3Vic2NyaWJlIGZyb20gYSBmcmVxdWVuY3kgKi9cbiAgcmVtb3ZlKGZyZXF1ZW5jeT86IG51bWJlcikge1xuICAgIGlmIChmcmVxdWVuY3kgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5oYXMoZnJlcXVlbmN5KSkge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KFxuICAgICAgICBmcmVxdWVuY3ksXG4gICAgICAgICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5nZXQoZnJlcXVlbmN5KSBhcyBudW1iZXIpIC0gMSxcbiAgICAgICk7XG4gICAgICBpZiAoKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgPCAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmRlbGV0ZShmcmVxdWVuY3kpO1xuXG4gICAgICAgIC8vIG5vdGhpbmcgc3Vic2NyaWJlZCB0byB0aGlzIGFueW1vcmUuLi5pdCBpcyBpbnZhbGlkXG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zaXplID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzIHdhcyB0aGUgbWluLCBzbyBmaW5kIHRoZSBuZXh0IHNpemVcbiAgICAgICAgaWYgKGZyZXF1ZW5jeSA8PSB0aGlzLmZyZXF1ZW5jeSkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5ID0gTWF0aC5taW4oLi4udGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0ua2V5cygpKTtcbiAgICAgICAgICB0aGlzLnJ1bigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBlbHNlIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBNaXNtYXRjaGVkIHJlbW92ZTogJHtmcmVxdWVuY3l9IGlzIG5vdCBzdWJzY3JpYmVkIGZvciAke3RoaXMua2V5fWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQ2xlYW51cCBtZWFucyBjbGVhcmluZyBvdXQgYmFja2dyb3VuZCBpbnRlcnZhbC4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgICBkZWxldGUgdGhpcy5pbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXN0SW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmxhc3RJbnRlcnZhbElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zdGFydElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0YXJ0SWQ7XG4gICAgfVxuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9mZmxpbmVMaXN0ZW5lcih0aGlzLm9mZmxpbmVMaXN0ZW5lcik7XG4gIH1cblxuICAvKiogVHJpZ2dlciByZXF1ZXN0IGZvciBsYXRlc3QgcmVzb3VyY2UgKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBzdXAgPSB0aGlzLmVuZHBvaW50O1xuICAgIGNvbnN0IGVuZHBvaW50ID0gZnVuY3Rpb24gKHRoaXM6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICAgIHJldHVybiBzdXAuY2FsbCh0aGlzLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIE9iamVjdC5hc3NpZ24oZW5kcG9pbnQsIHRoaXMuZW5kcG9pbnQpO1xuICAgIGVuZHBvaW50LmRhdGFFeHBpcnlMZW5ndGggPSB0aGlzLmZyZXF1ZW5jeSAvIDI7XG4gICAgZW5kcG9pbnQuZXJyb3JFeHBpcnlMZW5ndGggPSB0aGlzLmZyZXF1ZW5jeSAvIDEwO1xuICAgIGVuZHBvaW50LmVycm9yUG9saWN5ID0gKCkgPT4gJ3NvZnQnIGFzIGNvbnN0O1xuICAgIGVuZHBvaW50LmtleSA9ICgpID0+IHRoaXMua2V5O1xuICAgIC8vIHN0b3AgYW55IGVycm9ycyBoZXJlIGZyb20gYnViYmxpbmdcbiAgICB0aGlzLmNvbnRyb2xsZXIuZmV0Y2goZW5kcG9pbnQsIC4uLnRoaXMuYXJncykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gIH1cblxuICAvKiogV2hhdCBoYXBwZW5zIHdoZW4gYnJvd3NlciBnb2VzIG9mZmxpbmUgKi9cbiAgcHJvdGVjdGVkIG9mZmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAvLyB0aGlzIGNsZWFycyBleGlzdGluZyBsaXN0ZW5lcnMsIHNvIG5vIG5lZWQgdG8gY2xlYXIgb2ZmbGluZSBsaXN0ZW5lclxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLmFkZE9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICB9O1xuXG4gIC8qKiBXaGF0IGhhcHBlbnMgd2hlbiBicm93c2VyIGNvbWVzIG9ubGluZSAqL1xuICBwcm90ZWN0ZWQgb25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIucmVtb3ZlT25saW5lTGlzdGVuZXIodGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnN0YXJ0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGFydElkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuc3RhcnRJZDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBQb2xsIHNldFRpbWVvdXQgZm9yICR7dGhpcy5rZXl9IHN0aWxsIHJ1bm5pbmcsIGJ1dCB0aW1lb3V0SWQgZGVsZXRlZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIE1hdGgubWF4KDAsIHRoaXMubGFzdEZldGNoVGltZSgpIC0gbm93ICsgdGhpcy5mcmVxdWVuY3kpLFxuICAgICk7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIuYWRkT2ZmbGluZUxpc3RlbmVyKHRoaXMub2ZmbGluZUxpc3RlbmVyKTtcbiAgfTtcblxuICAvKiogUnVuIHBvbGxpbmcgcHJvY2VzcyB3aXRoIGN1cnJlbnQgZnJlcXVlbmN5XG4gICAqXG4gICAqIFdpbGwgY2xlYW4gdXAgb2xkIHBvbGwgaW50ZXJ2YWwgb24gbmV4dCBydW5cbiAgICovXG4gIHByb3RlY3RlZCBydW4oKSB7XG4gICAgaWYgKHRoaXMuc3RhcnRJZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHRoaXMubGFzdEludGVydmFsSWQgPSB0aGlzLmludGVydmFsSWQ7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbG9uZyBpbnRvIHRoZSBsYXN0IHBvbGwgaXQgd2FzIGJlZm9yZSByZXNldHRpbmdcbiAgICAgIC8vIHdlIHdhaXQgdGlsIHRoZSBuZXh0IGZldGNoIHRvIGNsZWFyIG9sZCBpbnRlcnZhbHNcbiAgICAgIGlmICh0aGlzLmxhc3RJbnRlcnZhbElkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sYXN0SW50ZXJ2YWxJZCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkgdGhpcy51cGRhdGUoKTtcbiAgICAgIGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBQb2xsIGludGVydmFsSWQgZm9yICR7dGhpcy5rZXl9IHN0aWxsIHJ1bm5pbmcsIGJ1dCBpbnRlcnZhbElkIGRlbGV0ZWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIHRoaXMuZnJlcXVlbmN5KTtcbiAgfVxuXG4gIC8qKiBMYXN0IGZldGNoIHRpbWUgKi9cbiAgcHJvdGVjdGVkIGxhc3RGZXRjaFRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpLm1ldGFbdGhpcy5rZXldPy5kYXRlID8/IDA7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsT0FBT0EseUJBQXlCLE1BQU0sZ0NBQWdDO0FBS3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxNQUFNQyxtQkFBbUIsQ0FBeUI7RUFZL0RDLFdBQVdBLENBQ1RDLE1BQXFDLEVBQ3JDQyxVQUFzQixFQUN0QkMsa0JBQXVDLEVBQ3ZDO0lBQUEsS0FYUUMsa0JBQWtCLEdBQXdCLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBb0g3RDtJQUFBLEtBQ1VDLGVBQWUsR0FBRyxNQUFNO01BQ2hDO01BQ0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUNkLElBQUksQ0FBQ0osa0JBQWtCLENBQUNLLGlCQUFpQixDQUFDLElBQUksQ0FBQ0MsY0FBYyxDQUFDO0lBQ2hFLENBQUM7SUFFRDtJQUFBLEtBQ1VBLGNBQWMsR0FBRyxNQUFNO01BQy9CLElBQUksQ0FBQ04sa0JBQWtCLENBQUNPLG9CQUFvQixDQUFDLElBQUksQ0FBQ0QsY0FBYyxDQUFDO01BQ2pFLE1BQU1FLEdBQUcsR0FBR0MsSUFBSSxDQUFDRCxHQUFHLENBQUMsQ0FBQztNQUN0QixJQUFJLENBQUNFLE9BQU8sR0FBR0MsVUFBVSxDQUN2QixNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUNELE9BQU8sRUFBRTtVQUNo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
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Manager,
|
|
3
|
-
|
|
4
|
-
export interface SubscriptionInit {
|
|
5
|
-
schema?: Schema | undefined;
|
|
6
|
-
fetch: () => Promise<any>;
|
|
7
|
-
key: string;
|
|
8
|
-
getState: () => State<unknown>;
|
|
9
|
-
frequency?: number | undefined;
|
|
10
|
-
}
|
|
1
|
+
import Controller from '../controller/Controller.js';
|
|
2
|
+
import type { Manager, Middleware, UnsubscribeAction, SubscribeAction } from '../types.js';
|
|
3
|
+
type Actions = UnsubscribeAction | SubscribeAction;
|
|
11
4
|
/** Interface handling a single resource subscription */
|
|
12
5
|
export interface Subscription {
|
|
13
6
|
add(frequency?: number): void;
|
|
@@ -16,32 +9,33 @@ export interface Subscription {
|
|
|
16
9
|
}
|
|
17
10
|
/** The static class that constructs Subscription */
|
|
18
11
|
export interface SubscriptionConstructable {
|
|
19
|
-
new (
|
|
12
|
+
new (action: Omit<SubscribeAction, 'type'>, controller: Controller): Subscription;
|
|
20
13
|
}
|
|
21
14
|
/** Handles subscription actions -> fetch or receive actions
|
|
22
15
|
*
|
|
23
16
|
* Constructor takes a SubscriptionConstructable class to control how
|
|
24
17
|
* subscriptions are handled. (e.g., polling, websockets)
|
|
25
18
|
*
|
|
26
|
-
* @see https://
|
|
19
|
+
* @see https://dataclient.io/docs/api/SubscriptionManager
|
|
27
20
|
*/
|
|
28
|
-
export default class SubscriptionManager<S extends SubscriptionConstructable> implements Manager {
|
|
21
|
+
export default class SubscriptionManager<S extends SubscriptionConstructable> implements Manager<Actions> {
|
|
29
22
|
protected subscriptions: {
|
|
30
23
|
[key: string]: InstanceType<S>;
|
|
31
24
|
};
|
|
32
25
|
protected readonly Subscription: S;
|
|
33
26
|
protected middleware: Middleware;
|
|
27
|
+
protected controller: Controller;
|
|
34
28
|
constructor(Subscription: S);
|
|
35
29
|
/** Ensures all subscriptions are cleaned up. */
|
|
36
30
|
cleanup(): void;
|
|
37
31
|
/** Called when middleware intercepts 'rest-hooks/subscribe' action.
|
|
38
32
|
*
|
|
39
33
|
*/
|
|
40
|
-
protected handleSubscribe(action: SubscribeAction
|
|
34
|
+
protected handleSubscribe(action: SubscribeAction): void;
|
|
41
35
|
/** Called when middleware intercepts 'rest-hooks/unsubscribe' action.
|
|
42
36
|
*
|
|
43
37
|
*/
|
|
44
|
-
protected handleUnsubscribe(action: UnsubscribeAction
|
|
38
|
+
protected handleUnsubscribe(action: UnsubscribeAction): void;
|
|
45
39
|
/** Attaches Manager to store
|
|
46
40
|
*
|
|
47
41
|
* Intercepts 'rest-hooks/subscribe'/'rest-hooks/unsubscribe' to register resources that
|
|
@@ -52,4 +46,5 @@ export default class SubscriptionManager<S extends SubscriptionConstructable> im
|
|
|
52
46
|
*/
|
|
53
47
|
getMiddleware(): Middleware;
|
|
54
48
|
}
|
|
49
|
+
export {};
|
|
55
50
|
//# sourceMappingURL=SubscriptionManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/manager/SubscriptionManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/manager/SubscriptionManager.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEnD,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,yBAAyB;IACxC,KACE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,EACrC,UAAU,EAAE,UAAU,GACrB,YAAY,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB,CAAC,CAAC,SAAS,yBAAyB,CAC1E,YAAW,OAAO,CAAC,OAAO,CAAC;IAE3B,SAAS,CAAC,aAAa,EAAE;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;KAChC,CAAM;IAEP,mBAA2B,YAAY,EAAE,CAAC,CAAC;IAC3C,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAoB;gBAExC,YAAY,EAAE,CAAC;IAyB3B,gDAAgD;IAChD,OAAO;IAMP;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe;IAcjD;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB;IAerD;;;;;;;OAOG;IACH,aAAa;CAGd"}
|