@ethlete/query 4.13.1 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/auth/auth-provider.utils.mjs +4 -1
- package/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +13 -5
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -1
- package/esm2022/lib/entity/entity-store.mjs +6 -2
- package/esm2022/lib/query/query.mjs +61 -7
- package/esm2022/lib/query-creator/query-creator.mjs +18 -5
- package/esm2022/lib/query-form/query-form.mjs +44 -12
- package/esm2022/lib/query-form/query-form.types.mjs +1 -1
- package/esm2022/lib/query-form/query-form.utils.mjs +4 -1
- package/esm2022/lib/request/request.mjs +2 -2
- package/esm2022/lib/request/request.util.mjs +9 -3
- package/esm2022/lib/utils/data.utils.mjs +39 -37
- package/fesm2022/ethlete-query.mjs +187 -65
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/devtools/components/query-devtools/query-devtools.component.d.ts +1 -0
- package/lib/infinite-query/infinity-query.d.ts +1 -1
- package/lib/query-creator/query-creator.d.ts +4 -3
- package/lib/query-form/query-form.d.ts +16 -0
- package/lib/query-form/query-form.types.d.ts +16 -0
- package/lib/utils/data.utils.d.ts +22 -8
- package/package.json +2 -2
|
@@ -74,6 +74,9 @@ export const transformToDateArray = (value) => {
|
|
|
74
74
|
export const transformToSort = (value) => {
|
|
75
75
|
if (typeof value === 'string') {
|
|
76
76
|
const [active, direction] = value.split(':');
|
|
77
|
+
if (!active) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
77
80
|
return {
|
|
78
81
|
active,
|
|
79
82
|
direction: direction,
|
|
@@ -91,4 +94,4 @@ export const transformToSortQueryParam = (value) => {
|
|
|
91
94
|
}
|
|
92
95
|
return null;
|
|
93
96
|
};
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3ZELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUM7S0FDakU7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUNwQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQWEsQ0FBQztLQUMvQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDdkQsSUFB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QyxDQUFDO0tBQ0g7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDMUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLFdBQVcsSUFBSSxLQUFLLEVBQUU7UUFDbkYsTUFBTSxTQUFTLEdBQUcsS0FHakIsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0tBQ2xGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdHJhbnNmb3JtVG9TdHJpbmcgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub1N0cmluZ0FycmF5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAodHJhbnNmb3JtVG9TdHJpbmcpLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFt0cmFuc2Zvcm1Ub1N0cmluZyh2YWx1ZSldIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9OdW1iZXIgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub051bWJlckFycmF5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAodHJhbnNmb3JtVG9OdW1iZXIpLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gbnVsbCkgYXMgbnVtYmVyW107XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbdmFsdWVdIGFzIG51bWJlcltdO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9Cb29sZWFuID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnMSc7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9Cb29sZWFuQXJyYXkgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCh0cmFuc2Zvcm1Ub0Jvb2xlYW4pLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gbnVsbCkgYXMgYm9vbGVhbltdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gW3RyYW5zZm9ybVRvQm9vbGVhbih2YWx1ZSldIGFzIGJvb2xlYW5bXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvRGF0ZSA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvRGF0ZUFycmF5ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAodHJhbnNmb3JtVG9EYXRlKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IG51bGwpIGFzIERhdGVbXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBbdHJhbnNmb3JtVG9EYXRlKHZhbHVlKV0gYXMgRGF0ZVtdO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9Tb3J0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgW2FjdGl2ZSwgZGlyZWN0aW9uXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG5cbiAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzICdhc2MnIHwgJ2Rlc2MnLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub1NvcnRRdWVyeVBhcmFtID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdhY3RpdmUnIGluIHZhbHVlICYmICdkaXJlY3Rpb24nIGluIHZhbHVlKSB7XG4gICAgY29uc3QgdmFsQXNTb3J0ID0gdmFsdWUgYXMge1xuICAgICAgYWN0aXZlOiBzdHJpbmc7XG4gICAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICAgIH07XG5cbiAgICByZXR1cm4gdmFsQXNTb3J0LmRpcmVjdGlvbiA/IGAke3ZhbEFzU29ydC5hY3RpdmV9OiR7dmFsQXNTb3J0LmRpcmVjdGlvbn1gIDogbnVsbDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbiJdfQ==
|
|
@@ -5,7 +5,7 @@ export const request = (config) => {
|
|
|
5
5
|
const headers = config.headers || {};
|
|
6
6
|
const responseType = config.responseType || 'json';
|
|
7
7
|
const body = config.body || null;
|
|
8
|
-
const url = config.urlWithParams.split('?')[0];
|
|
8
|
+
const url = config.urlWithParams.split('?')[0] || '';
|
|
9
9
|
const retryFn = config.retryFn || shouldRetryRequest;
|
|
10
10
|
let currentRetryCount = 0;
|
|
11
11
|
let retryTimeout = null;
|
|
@@ -193,4 +193,4 @@ export const request = (config) => {
|
|
|
193
193
|
};
|
|
194
194
|
});
|
|
195
195
|
};
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBRUwseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGNBQWMsRUFDZCxTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQXFCLE1BQXFCLEVBQXNDLEVBQUU7SUFDdkcsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQztJQUNyRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRXZDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUEwQyxFQUFFLEVBQUU7UUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsTUFB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IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcnRpYWxYaHJTdGF0ZSwgUmVxdWVzdENvbmZpZywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0RXZlbnQgfSBmcm9tICcuL3JlcXVlc3QudHlwZXMnO1xuaW1wb3J0IHtcbiAgSHR0cFN0YXR1c0NvZGUsXG4gIGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMsXG4gIGRldGVjdENvbnRlbnRUeXBlSGVhZGVyLFxuICBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyxcbiAgZm9yRWFjaEhlYWRlcixcbiAgZ2V0UmVzcG9uc2VVcmwsXG4gIGhhc0hlYWRlcixcbiAgcGFyc2VBbGxYaHJSZXNwb25zZUhlYWRlcnMsXG4gIHNlcmlhbGl6ZUJvZHksXG4gIHNob3VsZFJldHJ5UmVxdWVzdCxcbn0gZnJvbSAnLi9yZXF1ZXN0LnV0aWwnO1xuXG5jb25zdCBYU1NJX1BSRUZJWCA9IC9eXFwpXFxdXFx9Jyw/XFxuLztcblxuZXhwb3J0IGNvbnN0IHJlcXVlc3QgPSA8UmVzcG9uc2UgPSB1bmtub3duPihjb25maWc6IFJlcXVlc3RDb25maWcpOiBPYnNlcnZhYmxlPFJlcXVlc3RFdmVudDxSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuICBjb25zdCByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdqc29uJztcbiAgY29uc3QgYm9keSA9IGNvbmZpZy5ib2R5IHx8IG51bGw7XG4gIGNvbnN0IHVybCA9IGNvbmZpZy51cmxXaXRoUGFyYW1zLnNwbGl0KCc/JylbMF07XG4gIGNvbnN0IHJldHJ5Rm4gPSBjb25maWcucmV0cnlGbiB8fCBzaG91bGRSZXRyeVJlcXVlc3Q7XG4gIGxldCBjdXJyZW50UmV0cnlDb3VudCA9IDA7XG4gIGxldCByZXRyeVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFJlcXVlc3RFdmVudDxSZXNwb25zZT4+KSA9PiB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgY29uc3QgcmVxQm9keSA9IHNlcmlhbGl6ZUJvZHkoYm9keSk7XG5cbiAgICBjb25zdCBzZXR1cFhociA9ICgpID0+IHtcbiAgICAgIHhoci5vcGVuKGNvbmZpZy5tZXRob2QsIGNvbmZpZy51cmxXaXRoUGFyYW1zKTtcbiAgICAgIGlmIChjb25maWcud2l0aENyZWRlbnRpYWxzKSB7XG4gICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3JFYWNoSGVhZGVyKGhlYWRlcnMsIChuYW1lLCB2YWx1ZSkgPT4geGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpKTtcblxuICAgICAgaWYgKCFoYXNIZWFkZXIoaGVhZGVycywgJ0FjY2VwdCcpKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzSGVhZGVyKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKSkge1xuICAgICAgICBjb25zdCBkZXRlY3RlZFR5cGUgPSBkZXRlY3RDb250ZW50VHlwZUhlYWRlcihib2R5KTtcblxuICAgICAgICBpZiAoZGV0ZWN0ZWRUeXBlKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGRldGVjdGVkVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nID8gcmVzcG9uc2VUeXBlIDogJ3RleHQnO1xuICAgIH07XG5cbiAgICBzZXR1cFhocigpO1xuXG4gICAgY29uc3QgcGFydGlhbEZyb21YaHIgPSAoKTogUGFydGlhbFhoclN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSB4aHIuc3RhdHVzVGV4dCB8fCAnT0snO1xuICAgICAgY29uc3QgaGVhZGVycyA9IHBhcnNlQWxsWGhyUmVzcG9uc2VIZWFkZXJzKHhocik7XG4gICAgICBjb25zdCBfdXJsID0gZ2V0UmVzcG9uc2VVcmwoeGhyKSB8fCB1cmw7XG5cbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHN0YXR1czogeGhyLnN0YXR1cywgc3RhdHVzVGV4dCwgdXJsOiBfdXJsIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJldHJ5ID0gKGVycm9yOiBSZXF1ZXN0RXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IG5ld1JldHJ5Q291bnQgPSBjdXJyZW50UmV0cnlDb3VudCArIDE7XG4gICAgICBjb25zdCB7IGhlYWRlcnMgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG4gICAgICBjb25zdCB7IHJldHJ5LCBkZWxheSB9ID0gcmV0cnlGbih7IGN1cnJlbnRSZXRyeUNvdW50OiBuZXdSZXRyeUNvdW50LCBoZWFkZXJzLCBlcnJvciB9KTtcblxuICAgICAgaWYgKCFyZXRyeSkge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ2ZhaWx1cmUnLCBoZWFkZXJzLCBlcnJvciB9KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBfZGVsYXkgPSBkZWxheSA/PyAxMDAwO1xuICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdkZWxheS1yZXRyeScsIGhlYWRlcnMsIHJldHJ5TnVtYmVyOiBuZXdSZXRyeUNvdW50LCByZXRyeURlbGF5OiBfZGVsYXkgfSk7XG5cbiAgICAgIHJldHJ5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0dXBYaHIoKTtcbiAgICAgICAgeGhyLnNlbmQocmVxQm9keSk7XG4gICAgICAgIGN1cnJlbnRSZXRyeUNvdW50ID0gbmV3UmV0cnlDb3VudDtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdzdGFydCcsIGhlYWRlcnMsIGlzUmV0cnk6IHRydWUsIHJldHJ5TnVtYmVyOiBjdXJyZW50UmV0cnlDb3VudCwgcmV0cnlEZWxheTogX2RlbGF5IH0pO1xuICAgICAgfSwgX2RlbGF5KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb2FkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgeyBoZWFkZXJzLCBzdGF0dXNUZXh0LCB1cmwgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGxldCB7IHN0YXR1cyB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgbGV0IGJvZHk6IHVua25vd24gfCBudWxsID0gbnVsbDtcblxuICAgICAgaWYgKHN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuTm9Db250ZW50KSB7XG4gICAgICAgIGJvZHkgPSB0eXBlb2YgeGhyLnJlc3BvbnNlID09PSAndW5kZWZpbmVkJyA/IHhoci5yZXNwb25zZVRleHQgOiB4aHIucmVzcG9uc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICAgICAgc3RhdHVzID0gYm9keSA/IEh0dHBTdGF0dXNDb2RlLk9rIDogMDtcbiAgICAgIH1cblxuICAgICAgbGV0IG9rID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG5cbiAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdqc29uJyAmJiB0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxCb2R5ID0gYm9keTtcbiAgICAgICAgYm9keSA9IGJvZHkucmVwbGFjZShYU1NJX1BSRUZJWCwgJycpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGJvZHkgPSBib2R5ICE9PSAnJyA/IEpTT04ucGFyc2UoYm9keSBhcyBzdHJpbmcpIDogbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBib2R5ID0gb3JpZ2luYWxCb2R5O1xuXG4gICAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgICBvayA9IGZhbHNlO1xuICAgICAgICAgICAgYm9keSA9IHsgZXJyb3IsIHRleHQ6IGJvZHkgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIW9rICYmIGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJvZHkudGV4dCgpO1xuXG4gICAgICAgICAgaWYgKGJvZHkudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm9keSA9IHRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIElnbm9yZSB0aGUgZXJyb3IuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9rKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NFdmVudDogUmVxdWVzdEV2ZW50PFJlc3BvbnNlPiA9IHtcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICByZXNwb25zZTogYm9keSBhcyBSZXNwb25zZSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBleHBpcmVzSW5TZWNvbmRzID0gY29uZmlnLmNhY2hlQWRhcHRlcj8uKGhlYWRlcnMpID8/IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzKGhlYWRlcnMpO1xuICAgICAgICBjb25zdCBleHBpcmVzSW5UaW1lc3RhbXAgPSBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzKGV4cGlyZXNJblNlY29uZHMpO1xuXG4gICAgICAgIGlmIChleHBpcmVzSW5UaW1lc3RhbXApIHtcbiAgICAgICAgICBzdWNjZXNzRXZlbnQuZXhwaXJlc0luVGltZXN0YW1wID0gZXhwaXJlc0luVGltZXN0YW1wO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzZXJ2ZXIubmV4dChzdWNjZXNzRXZlbnQpO1xuXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVSZXRyeSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGRldGFpbDogYm9keSxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyb3I6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHVybCB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgaGFuZGxlUmV0cnkoe1xuICAgICAgICB1cmwsXG4gICAgICAgIGRldGFpbDogZXJyb3IsXG4gICAgICAgIHN0YXR1czogeGhyLnN0YXR1cyB8fCAwLFxuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCB8fCAnVW5rbm93biBFcnJvcicsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Eb3duUHJvZ3Jlc3MgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IFJlcXVlc3RFdmVudCA9IHtcbiAgICAgICAgdHlwZTogJ2Rvd25sb2FkLXByb2dyZXNzJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICBjdXJyZW50OiBldmVudC5sb2FkZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAoZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICBjb25zdCBwcm9ncmVzc1BlcmNlbnQgPSAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChwcm9ncmVzc1BlcmNlbnQgKiAxMDApIC8gMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy50b3RhbCA9IGV2ZW50LnRvdGFsO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAndGV4dCcgJiYgISF4aHIucmVzcG9uc2VUZXh0KSB7XG4gICAgICAgIHByb2dyZXNzLnBhcnRpYWxUZXh0ID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2ZXIubmV4dChwcm9ncmVzcyk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uVXBQcm9ncmVzcyA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBoZWFkZXJzIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBjb25zdCBwcm9ncmVzczogUmVxdWVzdEV2ZW50ID0ge1xuICAgICAgICB0eXBlOiAndXBsb2FkLXByb2dyZXNzJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICBjdXJyZW50OiBldmVudC5sb2FkZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAoZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICBjb25zdCBwcm9ncmVzc1BlcmNlbnQgPSAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChwcm9ncmVzc1BlcmNlbnQgKiAxMDApIC8gMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy50b3RhbCA9IGV2ZW50LnRvdGFsO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5uZXh0KHByb2dyZXNzKTtcbiAgICB9O1xuXG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCd0aW1lb3V0Jywgb25FcnJvcik7XG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25FcnJvcik7XG5cbiAgICBpZiAoY29uZmlnLnJlcG9ydFByb2dyZXNzKSB7XG4gICAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvbkRvd25Qcm9ncmVzcyk7XG5cbiAgICAgIGlmIChyZXFCb2R5ICE9PSBudWxsICYmIHhoci51cGxvYWQpIHtcbiAgICAgICAgeGhyLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uVXBQcm9ncmVzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQocmVxQm9keSk7XG4gICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdzdGFydCcsIGhlYWRlcnMgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkVycm9yKTtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1lb3V0Jywgb25FcnJvcik7XG5cbiAgICAgIGlmIChyZXRyeVRpbWVvdXQpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChyZXRyeVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnJlcG9ydFByb2dyZXNzKSB7XG4gICAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uRG93blByb2dyZXNzKTtcblxuICAgICAgICBpZiAocmVxQm9keSAhPT0gbnVsbCAmJiB4aHIudXBsb2FkKSB7XG4gICAgICAgICAgeGhyLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uVXBQcm9ncmVzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSB4aHIuRE9ORSkge1xuICAgICAgICB4aHIuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdjYW5jZWwnLCBoZWFkZXJzIH0pO1xuICAgIH07XG4gIH0pO1xufTtcbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBRUwseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGNBQWMsRUFDZCxTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQXFCLE1BQXFCLEVBQXNDLEVBQUU7SUFDdkcsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksa0JBQWtCLENBQUM7SUFDckQsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsSUFBSSxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUV2QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBMEMsRUFBRSxFQUFFO1FBQ25FLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFD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IjpbImltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQYXJ0aWFsWGhyU3RhdGUsIFJlcXVlc3RDb25maWcsIFJlcXVlc3RFcnJvciwgUmVxdWVzdEV2ZW50IH0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcbmltcG9ydCB7XG4gIEh0dHBTdGF0dXNDb2RlLFxuICBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzLFxuICBkZXRlY3RDb250ZW50VHlwZUhlYWRlcixcbiAgZXh0cmFjdEV4cGlyZXNJblNlY29uZHMsXG4gIGZvckVhY2hIZWFkZXIsXG4gIGdldFJlc3BvbnNlVXJsLFxuICBoYXNIZWFkZXIsXG4gIHBhcnNlQWxsWGhyUmVzcG9uc2VIZWFkZXJzLFxuICBzZXJpYWxpemVCb2R5LFxuICBzaG91bGRSZXRyeVJlcXVlc3QsXG59IGZyb20gJy4vcmVxdWVzdC51dGlsJztcblxuY29uc3QgWFNTSV9QUkVGSVggPSAvXlxcKVxcXVxcfScsP1xcbi87XG5cbmV4cG9ydCBjb25zdCByZXF1ZXN0ID0gPFJlc3BvbnNlID0gdW5rbm93bj4oY29uZmlnOiBSZXF1ZXN0Q29uZmlnKTogT2JzZXJ2YWJsZTxSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcbiAgY29uc3QgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZSB8fCAnanNvbic7XG4gIGNvbnN0IGJvZHkgPSBjb25maWcuYm9keSB8fCBudWxsO1xuICBjb25zdCB1cmwgPSBjb25maWcudXJsV2l0aFBhcmFtcy5zcGxpdCgnPycpWzBdIHx8ICcnO1xuICBjb25zdCByZXRyeUZuID0gY29uZmlnLnJldHJ5Rm4gfHwgc2hvdWxkUmV0cnlSZXF1ZXN0O1xuICBsZXQgY3VycmVudFJldHJ5Q291bnQgPSAwO1xuICBsZXQgcmV0cnlUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+PikgPT4ge1xuICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIGNvbnN0IHJlcUJvZHkgPSBzZXJpYWxpemVCb2R5KGJvZHkpO1xuXG4gICAgY29uc3Qgc2V0dXBYaHIgPSAoKSA9PiB7XG4gICAgICB4aHIub3Blbihjb25maWcubWV0aG9kLCBjb25maWcudXJsV2l0aFBhcmFtcyk7XG4gICAgICBpZiAoY29uZmlnLndpdGhDcmVkZW50aWFscykge1xuICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZm9yRWFjaEhlYWRlcihoZWFkZXJzLCAobmFtZSwgdmFsdWUpID0+IHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKSk7XG5cbiAgICAgIGlmICghaGFzSGVhZGVyKGhlYWRlcnMsICdBY2NlcHQnKSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0hlYWRlcihoZWFkZXJzLCAnQ29udGVudC1UeXBlJykpIHtcbiAgICAgICAgY29uc3QgZGV0ZWN0ZWRUeXBlID0gZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIoYm9keSk7XG5cbiAgICAgICAgaWYgKGRldGVjdGVkVHlwZSkge1xuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBkZXRlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHhoci5yZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgIT09ICdqc29uJyA/IHJlc3BvbnNlVHlwZSA6ICd0ZXh0JztcbiAgICB9O1xuXG4gICAgc2V0dXBYaHIoKTtcblxuICAgIGNvbnN0IHBhcnRpYWxGcm9tWGhyID0gKCk6IFBhcnRpYWxYaHJTdGF0ZSA9PiB7XG4gICAgICBjb25zdCBzdGF0dXNUZXh0ID0geGhyLnN0YXR1c1RleHQgfHwgJ09LJztcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyh4aHIpO1xuICAgICAgY29uc3QgX3VybCA9IGdldFJlc3BvbnNlVXJsKHhocikgfHwgdXJsO1xuXG4gICAgICByZXR1cm4geyBoZWFkZXJzLCBzdGF0dXM6IHhoci5zdGF0dXMsIHN0YXR1c1RleHQsIHVybDogX3VybCB9O1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVSZXRyeSA9IChlcnJvcjogUmVxdWVzdEVycm9yKSA9PiB7XG4gICAgICBjb25zdCBuZXdSZXRyeUNvdW50ID0gY3VycmVudFJldHJ5Q291bnQgKyAxO1xuICAgICAgY29uc3QgeyBoZWFkZXJzIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuICAgICAgY29uc3QgeyByZXRyeSwgZGVsYXkgfSA9IHJldHJ5Rm4oeyBjdXJyZW50UmV0cnlDb3VudDogbmV3UmV0cnlDb3VudCwgaGVhZGVycywgZXJyb3IgfSk7XG5cbiAgICAgIGlmICghcmV0cnkpIHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdmYWlsdXJlJywgaGVhZGVycywgZXJyb3IgfSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgX2RlbGF5ID0gZGVsYXkgPz8gMTAwMDtcbiAgICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnZGVsYXktcmV0cnknLCBoZWFkZXJzLCByZXRyeU51bWJlcjogbmV3UmV0cnlDb3VudCwgcmV0cnlEZWxheTogX2RlbGF5IH0pO1xuXG4gICAgICByZXRyeVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldHVwWGhyKCk7XG4gICAgICAgIHhoci5zZW5kKHJlcUJvZHkpO1xuICAgICAgICBjdXJyZW50UmV0cnlDb3VudCA9IG5ld1JldHJ5Q291bnQ7XG4gICAgICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnc3RhcnQnLCBoZWFkZXJzLCBpc1JldHJ5OiB0cnVlLCByZXRyeU51bWJlcjogY3VycmVudFJldHJ5Q291bnQsIHJldHJ5RGVsYXk6IF9kZWxheSB9KTtcbiAgICAgIH0sIF9kZWxheSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTG9hZCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaGVhZGVycywgc3RhdHVzVGV4dCwgdXJsIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBsZXQgeyBzdGF0dXMgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGxldCBib2R5OiB1bmtub3duIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGlmIChzdGF0dXMgIT09IEh0dHBTdGF0dXNDb2RlLk5vQ29udGVudCkge1xuICAgICAgICBib2R5ID0gdHlwZW9mIHhoci5yZXNwb25zZSA9PT0gJ3VuZGVmaW5lZCcgPyB4aHIucmVzcG9uc2VUZXh0IDogeGhyLnJlc3BvbnNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHN0YXR1cyA9IGJvZHkgPyBIdHRwU3RhdHVzQ29kZS5PayA6IDA7XG4gICAgICB9XG5cbiAgICAgIGxldCBvayA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuXG4gICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAnanNvbicgJiYgdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQm9keSA9IGJvZHk7XG4gICAgICAgIGJvZHkgPSBib2R5LnJlcGxhY2UoWFNTSV9QUkVGSVgsICcnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBib2R5ID0gYm9keSAhPT0gJycgPyBKU09OLnBhcnNlKGJvZHkgYXMgc3RyaW5nKSA6IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgYm9keSA9IG9yaWdpbmFsQm9keTtcblxuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgb2sgPSBmYWxzZTtcbiAgICAgICAgICAgIGJvZHkgPSB7IGVycm9yLCB0ZXh0OiBib2R5IH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFvayAmJiBib2R5IGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBib2R5LnRleHQoKTtcblxuICAgICAgICAgIGlmIChib2R5LnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJvZHkgPSB0ZXh0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgdGhlIGVycm9yLlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvaykge1xuICAgICAgICBjb25zdCBzdWNjZXNzRXZlbnQ6IFJlcXVlc3RFdmVudDxSZXNwb25zZT4gPSB7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgcmVzcG9uc2U6IGJvZHkgYXMgUmVzcG9uc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0luU2Vjb25kcyA9IGNvbmZpZy5jYWNoZUFkYXB0ZXI/LihoZWFkZXJzKSA/PyBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyhoZWFkZXJzKTtcbiAgICAgICAgY29uc3QgZXhwaXJlc0luVGltZXN0YW1wID0gYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyhleHBpcmVzSW5TZWNvbmRzKTtcblxuICAgICAgICBpZiAoZXhwaXJlc0luVGltZXN0YW1wKSB7XG4gICAgICAgICAgc3VjY2Vzc0V2ZW50LmV4cGlyZXNJblRpbWVzdGFtcCA9IGV4cGlyZXNJblRpbWVzdGFtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVyLm5leHQoc3VjY2Vzc0V2ZW50KTtcblxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlUmV0cnkoe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBkZXRhaWw6IGJvZHksXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHN0YXR1c1RleHQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKGVycm9yOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyB1cmwgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGhhbmRsZVJldHJ5KHtcbiAgICAgICAgdXJsLFxuICAgICAgICBkZXRhaWw6IGVycm9yLFxuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMgfHwgMCxcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQgfHwgJ1Vua25vd24gRXJyb3InLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRG93blByb2dyZXNzID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGhlYWRlcnMgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGNvbnN0IHByb2dyZXNzOiBSZXF1ZXN0RXZlbnQgPSB7XG4gICAgICAgIHR5cGU6ICdkb3dubG9hZC1wcm9ncmVzcycsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgY3VycmVudDogZXZlbnQubG9hZGVkLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgY29uc3QgcHJvZ3Jlc3NQZXJjZW50ID0gKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMDtcbiAgICAgICAgcHJvZ3Jlc3MucHJvZ3Jlc3MucGVyY2VudGFnZSA9IE1hdGgucm91bmQocHJvZ3Jlc3NQZXJjZW50ICogMTAwKSAvIDEwMDtcbiAgICAgICAgcHJvZ3Jlc3MucHJvZ3Jlc3MudG90YWwgPSBldmVudC50b3RhbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnICYmICEheGhyLnJlc3BvbnNlVGV4dCkge1xuICAgICAgICBwcm9ncmVzcy5wYXJ0aWFsVGV4dCA9IHhoci5yZXNwb25zZVRleHQ7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLm5leHQocHJvZ3Jlc3MpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblVwUHJvZ3Jlc3MgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IFJlcXVlc3RFdmVudCA9IHtcbiAgICAgICAgdHlwZTogJ3VwbG9hZC1wcm9ncmVzcycsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgY3VycmVudDogZXZlbnQubG9hZGVkLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgY29uc3QgcHJvZ3Jlc3NQZXJjZW50ID0gKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMDtcbiAgICAgICAgcHJvZ3Jlc3MucHJvZ3Jlc3MucGVyY2VudGFnZSA9IE1hdGgucm91bmQocHJvZ3Jlc3NQZXJjZW50ICogMTAwKSAvIDEwMDtcbiAgICAgICAgcHJvZ3Jlc3MucHJvZ3Jlc3MudG90YWwgPSBldmVudC50b3RhbDtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2ZXIubmV4dChwcm9ncmVzcyk7XG4gICAgfTtcblxuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigndGltZW91dCcsIG9uRXJyb3IpO1xuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uRXJyb3IpO1xuXG4gICAgaWYgKGNvbmZpZy5yZXBvcnRQcm9ncmVzcykge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgb25Eb3duUHJvZ3Jlc3MpO1xuXG4gICAgICBpZiAocmVxQm9keSAhPT0gbnVsbCAmJiB4aHIudXBsb2FkKSB7XG4gICAgICAgIHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvblVwUHJvZ3Jlc3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHJlcUJvZHkpO1xuICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnc3RhcnQnLCBoZWFkZXJzIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25FcnJvcik7XG4gICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uTG9hZCk7XG4gICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGltZW91dCcsIG9uRXJyb3IpO1xuXG4gICAgICBpZiAocmV0cnlUaW1lb3V0KSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocmV0cnlUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5yZXBvcnRQcm9ncmVzcykge1xuICAgICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvbkRvd25Qcm9ncmVzcyk7XG5cbiAgICAgICAgaWYgKHJlcUJvZHkgIT09IG51bGwgJiYgeGhyLnVwbG9hZCkge1xuICAgICAgICAgIHhoci51cGxvYWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvblVwUHJvZ3Jlc3MpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSAhPT0geGhyLkRPTkUpIHtcbiAgICAgICAgeGhyLmFib3J0KCk7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnY2FuY2VsJywgaGVhZGVycyB9KTtcbiAgICB9O1xuICB9KTtcbn07XG4iXX0=
|
|
@@ -82,10 +82,16 @@ export const extractExpiresInSeconds = (headers) => {
|
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
84
|
if (cacheControl?.includes('max-age')) {
|
|
85
|
-
|
|
85
|
+
const m = cacheControl.split('max-age=')[1];
|
|
86
|
+
if (m) {
|
|
87
|
+
maxAge = parseInt(m);
|
|
88
|
+
}
|
|
86
89
|
}
|
|
87
90
|
else if (cacheControl?.includes('s-maxage')) {
|
|
88
|
-
|
|
91
|
+
const m = cacheControl.split('s-maxage=')[1];
|
|
92
|
+
if (m) {
|
|
93
|
+
maxAge = parseInt(m);
|
|
94
|
+
}
|
|
89
95
|
}
|
|
90
96
|
if (maxAge && age) {
|
|
91
97
|
const ageSeconds = parseInt(age);
|
|
@@ -243,4 +249,4 @@ export const shouldRetryRequest = (config) => {
|
|
|
243
249
|
}
|
|
244
250
|
return { retry: false };
|
|
245
251
|
};
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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LE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEY7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUNsRDtJQUVELCtFQUErRTtJQUMvRSwrRUFBK0U7SUFDL0UsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhbGlkQmFzZVJvdXRlRXJyb3IsIGludmFsaWRSb3V0ZUVycm9yLCBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IgfSBmcm9tICcuLi9zeW1mb255JztcbmltcG9ydCB7XG4gIEJ1aWxkUXVlcnlTdHJpbmdDb25maWcsXG4gIE1ldGhvZCxcbiAgUXVlcnlQYXJhbXMsXG4gIFJlcXVlc3RFcnJvcixcbiAgUmVxdWVzdEhlYWRlcnMsXG4gIFJlcXVlc3RSZXRyeUZuLFxufSBmcm9tICcuL3JlcXVlc3QudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNOYU4gPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTmFOKHZhbHVlKTtcbmV4cG9ydCBjb25zdCBpc0VtcHR5U3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJyc7XG5cbmV4cG9ydCBjb25zdCBpc1JlcXVlc3RFcnJvciA9IDxUID0gdW5rbm93bj4oZXJyb3I6IHVua25vd24pOiBlcnJvciBpcyBSZXF1ZXN0RXJyb3I8VD4gPT5cbiAgZXJyb3IgaW5zdGFuY2VvZiBPYmplY3QgJiYgJ3N0YXR1cycgaW4gZXJyb3IgJiYgJ3N0YXR1c1RleHQnIGluIGVycm9yICYmICd1cmwnIGluIGVycm9yO1xuXG5leHBvcnQgY29uc3QgYnVpbGRSb3V0ZSA9IChvcHRpb25zOiB7XG4gIGJhc2U6IHN0cmluZztcbiAgcm91dGU6ICgoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHN0cmluZykgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXRoUGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXM7XG4gIHF1ZXJ5UGFyYW1Db25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnO1xufSkgPT4ge1xuICBpZiAob3B0aW9ucy5iYXNlLmVuZHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkQmFzZVJvdXRlRXJyb3Iob3B0aW9ucy5iYXNlKTtcbiAgfVxuXG4gIGxldCByb3V0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhdGhQYXJhbXMpIHtcbiAgICAgIHRocm93IHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3Iob3B0aW9ucy5yb3V0ZSh7fSkpO1xuICAgIH1cblxuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZShvcHRpb25zLnBhdGhQYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZSA/PyBudWxsO1xuICB9XG5cbiAgaWYgKHJvdXRlICYmICFyb3V0ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkUm91dGVFcnJvcihyb3V0ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYnVpbGRRdWVyeVN0cmluZyhvcHRpb25zLnF1ZXJ5UGFyYW1zLCBvcHRpb25zLnF1ZXJ5UGFyYW1Db25maWcpO1xuXG4gICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICByb3V0ZSA9IHJvdXRlID8gYCR7cm91dGV9PyR7cXVlcnlTdHJpbmd9YCA6IGAvPyR7cXVlcnlTdHJpbmd9YDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYCR7b3B0aW9ucy5iYXNlfSR7cm91dGUgPz8gJyd9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5U3RyaW5nID0gKHBhcmFtczogUXVlcnlQYXJhbXMsIGNvbmZpZz86IEJ1aWxkUXVlcnlTdHJpbmdDb25maWcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgb2JqZWN0Tm90YXRpb24gPSBjb25maWc/Lm9iamVjdE5vdGF0aW9uID8/ICdicmFja2V0JztcbiAgY29uc3Qgd3JpdGVBcnJheUluZGV4ZXMgPSBjb25maWc/LndyaXRlQXJyYXlJbmRleGVzID8/IGZhbHNlO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzID8/IFt1bmRlZmluZWQsIG51bGwsIEluZmluaXR5LCAtSW5maW5pdHldO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzRm5zID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzRm5zID8/IFtpc05hTiwgaXNFbXB0eVN0cmluZ107XG5cbiAgY29uc3QgcXVlcnlQYXJhbXM6IHN0cmluZ1tdID0gW107XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgbGV0IGN1cnJlbnRGaWx0ZXJlZEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgYXJyYXlWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSB3cml0ZUFycmF5SW5kZXhlcyA/IGAke2tleX1bJHtjdXJyZW50RmlsdGVyZWRJbmRleH1dYCA6IGAke2tleX1bXWA7XG5cbiAgICAgICAgY29uc3QgZGlkQWRkVmFsdWUgPSBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCBhcnJheVZhbHVlKTtcblxuICAgICAgICBpZiAoZGlkQWRkVmFsdWUpIHtcbiAgICAgICAgICBjdXJyZW50RmlsdGVyZWRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBbb2JqS2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSBvYmplY3ROb3RhdGlvbiA9PT0gJ2RvdCcgPyBgJHtrZXl9LiR7b2JqS2V5fWAgOiBgJHtrZXl9WyR7b2JqS2V5fV1gO1xuICAgICAgICBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXNGbnMuc29tZSgoZm4pID0+IGZuKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XG4gICAgICBjb25zdCBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUgYXMgc3RyaW5nKTtcblxuICAgICAgcXVlcnlQYXJhbXMucHVzaChgJHtlbmNvZGVkS2V5fT0ke2VuY29kZWRWYWx1ZX1gKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBwcm9jZXNzVmFsdWUoa2V5LCB2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5UGFyYW1zLmxlbmd0aCA/IHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKSA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdEV4cGlyZXNJblNlY29uZHMgPSAoaGVhZGVyczogUmVxdWVzdEhlYWRlcnMpID0+IHtcbiAgY29uc3QgY2FjaGVDb250cm9sID0gaGVhZGVyc1snY2FjaGUtY29udHJvbCddO1xuICBjb25zdCBhZ2UgPSBoZWFkZXJzWydhZ2UnXTtcbiAgY29uc3QgZXhwaXJlcyA9IGhlYWRlcnNbJ2V4cGlyZXMnXTtcblxuICAvLyBJbiBzZWNvbmRzXG4gIGxldCBleHBpcmVzSW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4QWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygnbm8tY2FjaGUnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ21heC1hZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgnbWF4LWFnZT0nKVsxXSk7XG4gIH0gZWxzZSBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygncy1tYXhhZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV0pO1xuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAobWF4QWdlKSB7XG4gICAgZXhwaXJlc0luID0gbWF4QWdlIC8gMjsgLy8gV2UgYXNzdW1lIHRoZSByZXNwb25zZSBpcyBoYWxmIHdheSB0byBpdHMgZXhwaXJhdGlvblxuICB9IGVsc2UgaWYgKGV4cGlyZXMpIHtcbiAgICAvLyBVc2VkIGJ5IHNvbWUgYXBpcyB0byB0ZWxsIHRoZSByZXNwb25zZSB3aWxsIG5ldmVyIGV4cGlyZVxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBsZXQgdGhlIHJlc3BvbnNlIGV4cGlyZSBhZnRlciAxIGhvdXJcbiAgICBpZiAoZXhwaXJlcyA9PT0gJy0xJykge1xuICAgICAgZXhwaXJlc0luID0gMzYwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgdmFsaWRcbiAgICAgIGlmIChleHBpcmVzRGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICBleHBpcmVzSW4gPSBNYXRoLmZsb29yKChleHBpcmVzRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpKSAvIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBpcmVzSW47XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gIGlmIChzZWNvbmRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIHNlY29uZHMgKiAxMDAwKS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplQm9keSA9IChib2R5OiB1bmtub3duKTogQXJyYXlCdWZmZXIgfCBVUkxTZWFyY2hQYXJhbXMgfCBCbG9iIHwgRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoXG4gICAgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIEJsb2IgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8XG4gICAgdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYm9keSA9PT0gJ2Jvb2xlYW4nIHx8IEFycmF5LmlzQXJyYXkoYm9keSkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gKGJvZHkgYXMgYW55KS50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IChjb25maWc6IHsgbWV0aG9kOiBNZXRob2Q7IHRyYW5zZmVyVmlhPzogJ0dFVCcgfCAnUE9TVCcgfSkgPT4ge1xuICBpZiAoY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9NVVRBVEUnKSB7XG4gICAgaWYgKCFjb25maWcudHJhbnNmZXJWaWEpIHtcbiAgICAgIHJldHVybiAnUE9TVCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZy50cmFuc2ZlclZpYTtcbiAgfVxuXG4gIHJldHVybiBjb25maWcubWV0aG9kO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdENvbnRlbnRUeXBlSGVhZGVyID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgLy8gQW4gZW1wdHkgYm9keSBoYXMgbm8gY29udGVudCB0eXBlLlxuICBpZiAoYm9keSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEZvcm1EYXRhIGJvZGllcyByZWx5IG9uIHRoZSBicm93c2VyJ3MgY29udGVudCB0eXBlIGFzc2lnbm1lbnQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBCbG9icyB1c3VhbGx5IGhhdmUgdGhlaXIgb3duIGNvbnRlbnQgdHlwZS4gSWYgaXQgZG9lc24ndCwgdGhlblxuICAvLyBubyB0eXBlIGNhbiBiZSBpbmZlcnJlZC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgcmV0dXJuIGJvZHkudHlwZSB8fCBudWxsO1xuICB9XG4gIC8vIEFycmF5IGJ1ZmZlcnMgaGF2ZSB1bmtub3duIGNvbnRlbnRzIGFuZCB0aHVzIG5vIHR5cGUgY2FuIGJlIGluZmVycmVkLlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gVGVjaG5pY2FsbHksIHN0cmluZ3MgY291bGQgYmUgYSBmb3JtIG9mIEpTT04gZGF0YSwgYnV0IGl0J3Mgc2FmZSBlbm91Z2hcbiAgLy8gdG8gYXNzdW1lIHRoZXkncmUgcGxhaW4gc3RyaW5ncy5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAndGV4dC9wbGFpbic7XG4gIH1cblxuICAvLyBBcnJheXMsIG9iamVjdHMsIGJvb2xlYW4gYW5kIG51bWJlcnMgd2lsbCBiZSBlbmNvZGVkIGFzIEpTT04uXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGJvZHkgPT09ICdudW1iZXInIHx8IHR5cGVvZiBib2R5ID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICB9XG4gIC8vIE5vIHR5cGUgY291bGQgYmUgaW5mZXJyZWQuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0hlYWRlciA9IChoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycywgaGVhZGVyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGhlYWRlcnMpLnNvbWUoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlci50b0xvd2VyQ2FzZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JFYWNoSGVhZGVyID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLCBjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNhbGxiYWNrKGtleSwgdmFsdWUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyA9ICh4aHI6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XG4gIGNvbnN0IHBhcnNlZEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge307XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGhlYWRlcnMuc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBuYW1lID0gbGluZS5zbGljZSgwLCBpbmRleCk7XG4gICAgICBjb25zdCBrZXkgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG5cbiAgICAgIHBhcnNlZEhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRIZWFkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc3BvbnNlVXJsID0gKHhocjogWE1MSHR0cFJlcXVlc3QpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyICYmIHhoci5yZXNwb25zZVVSTCkge1xuICAgIHJldHVybiB4aHIucmVzcG9uc2VVUkw7XG4gIH1cbiAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmV0cnlSZXF1ZXN0OiBSZXF1ZXN0UmV0cnlGbiA9IChjb25maWcpID0+IHtcbiAgY29uc3QgZGVmYXVsdFJldHJ5RGVsYXkgPSAxMDAwICsgMTAwMCAqIGNvbmZpZy5jdXJyZW50UmV0cnlDb3VudDtcblxuICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUNvdW50ID4gMykge1xuICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICB9XG5cbiAgaWYgKCFpc1JlcXVlc3RFcnJvcihjb25maWcuZXJyb3IpKSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gIH1cblxuICBjb25zdCB7IHN0YXR1cywgZGV0YWlsIH0gPSBjb25maWcuZXJyb3I7XG5cbiAgLy8gUmV0cnkgb24gNXh4IGVycm9yc1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIC8vIERvbid0IHJldHJ5IGlmIGEgcmVxdWVzdGVkIHBhZ2UgaXMgb3V0IG9mIHJhbmdlXG4gICAgaWYgKGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IoZGV0YWlsKSkge1xuICAgICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gUmV0cnkgb24gNDA4IG9yIDQyNSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQgfHwgc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseSkge1xuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIC8vIFJldHJ5IG9uIDQyOSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9XG4gICAgICBjb25maWcuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ1JldHJ5LUFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWyd4LXJldHJ5LWFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWydYLVJldHJ5LUFmdGVyJ107XG5cbiAgICBpZiAocmV0cnlBZnRlcikge1xuICAgICAgY29uc3QgZGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyKSAqIDEwMDA7XG4gICAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IE51bWJlci5pc05hTihkZWxheSkgPyBkZWZhdWx0UmV0cnlEZWxheSA6IGRlbGF5IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gQ29kZSAwIHVzdWFsbHkgbWVhbnMgdGhlIGludGVybmV0IGNvbm5lY3Rpb24gaXMgZG93bi4gV2UgcmV0cnkgaW4gdGhpcyBjYXNlLlxuICAvLyBJdCBjb3VsZCBhbHNvIGJlIGEgQ09SUyBpc3N1ZSBidXQgdGhhdCBzaG91bGQgbm90IGJlIHRoZSBjYXNlIGluIHByb2R1Y3Rpb24uXG4gIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnVtIEh0dHBTdGF0dXNDb2RlIHtcbiAgVW5rbm93biA9IDAsXG5cbiAgQ29udGludWUgPSAxMDAsXG4gIFN3aXRjaGluZ1Byb3RvY29scyA9IDEwMSxcbiAgUHJvY2Vzc2luZyA9IDEwMixcbiAgRWFybHlIaW50cyA9IDEwMyxcblxuICBPayA9IDIwMCxcbiAgQ3JlYXRlZCA9IDIwMSxcbiAgQWNjZXB0ZWQgPSAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbiA9IDIwMyxcbiAgTm9Db250ZW50ID0gMjA0LFxuICBSZXNldENvbnRlbnQgPSAyMDUsXG4gIFBhcnRpYWxDb250ZW50ID0gMjA2LFxuICBNdWx0aVN0YXR1cyA9IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkID0gMjA4LFxuICBJbVVzZWQgPSAyMjYsXG5cbiAgTXVsdGlwbGVDaG9pY2VzID0gMzAwLFxuICBNb3ZlZFBlcm1hbmVudGx5ID0gMzAxLFxuICBGb3VuZCA9IDMwMixcbiAgU2VlT3RoZXIgPSAzMDMsXG4gIE5vdE1vZGlmaWVkID0gMzA0LFxuICBVc2VQcm94eSA9IDMwNSxcbiAgVW51c2VkID0gMzA2LFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG5cbiAgQmFkUmVxdWVzdCA9IDQwMCxcbiAgVW5hdXRob3JpemVkID0gNDAxLFxuICBQYXltZW50UmVxdWlyZWQgPSA0MDIsXG4gIEZvcmJpZGRlbiA9IDQwMyxcbiAgTm90Rm91bmQgPSA0MDQsXG4gIE1ldGhvZE5vdEFsbG93ZWQgPSA0MDUsXG4gIE5vdEFjY2VwdGFibGUgPSA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDQwNyxcbiAgUmVxdWVzdFRpbWVvdXQgPSA0MDgsXG4gIENvbmZsaWN0ID0gNDA5LFxuICBHb25lID0gNDEwLFxuICBMZW5ndGhSZXF1aXJlZCA9IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkID0gNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2UgPSA0MTMsXG4gIFVyaVRvb0xvbmcgPSA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlID0gNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2LFxuICBFeHBlY3RhdGlvbkZhaWxlZCA9IDQxNyxcbiAgSW1BVGVhcG90ID0gNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3QgPSA0MjEsXG4gIFVucHJvY2Vzc2FibGVFbnRpdHkgPSA0MjIsXG4gIExvY2tlZCA9IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeSA9IDQyNCxcbiAgVG9vRWFybHkgPSA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZCA9IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQgPSA0MjgsXG4gIFRvb01hbnlSZXF1ZXN0cyA9IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlID0gNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29ucyA9IDQ1MSxcblxuICBJbnRlcm5hbFNlcnZlckVycm9yID0gNTAwLFxuICBOb3RJbXBsZW1lbnRlZCA9IDUwMSxcbiAgQmFkR2F0ZXdheSA9IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlID0gNTAzLFxuICBHYXRld2F5VGltZW91dCA9IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQgPSA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlcyA9IDUwNixcbiAgSW5zdWZmaWNpZW50U3RvcmFnZSA9IDUwNyxcbiAgTG9vcERldGVjdGVkID0gNTA4LFxuICBOb3RFeHRlbmRlZCA9IDUxMCxcbiAgTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQgPSA1MTEsXG59XG4iXX0=
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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RUFBRSxDQUFDO0tBQ2xEO0lBRUQsc0JBQXNCO0lBQ3RCLElBQUksTUFBTSw2Q0FBbUMsRUFBRTtRQUM3QyxNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxDLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hGO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLENBQUM7S0FDbEQ7SUFFRCwrRUFBK0U7SUFDL0UsK0VBQStFO0lBQy9FLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUNsRDtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YWxpZEJhc2VSb3V0ZUVycm9yLCBpbnZhbGlkUm91dGVFcnJvciwgcGF0aFBhcmFtc01pc3NpbmdJblJvdXRlRnVuY3Rpb25FcnJvciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBpc1N5bWZvbnlQYWdlcmZhbnRhT3V0T2ZSYW5nZUVycm9yIH0gZnJvbSAnLi4vc3ltZm9ueSc7XG5pbXBvcnQge1xuICBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnLFxuICBNZXRob2QsXG4gIFF1ZXJ5UGFyYW1zLFxuICBSZXF1ZXN0RXJyb3IsXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0UmV0cnlGbixcbn0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmFOID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc05hTih2YWx1ZSk7XG5leHBvcnQgY29uc3QgaXNFbXB0eVN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnO1xuXG5leHBvcnQgY29uc3QgaXNSZXF1ZXN0RXJyb3IgPSA8VCA9IHVua25vd24+KGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yPFQ+ID0+XG4gIGVycm9yIGluc3RhbmNlb2YgT2JqZWN0ICYmICdzdGF0dXMnIGluIGVycm9yICYmICdzdGF0dXNUZXh0JyBpbiBlcnJvciAmJiAndXJsJyBpbiBlcnJvcjtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUm91dGUgPSAob3B0aW9uczoge1xuICBiYXNlOiBzdHJpbmc7XG4gIHJvdXRlOiAoKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcpIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xuICBxdWVyeVBhcmFtQ29uZmlnPzogQnVpbGRRdWVyeVN0cmluZ0NvbmZpZztcbn0pID0+IHtcbiAgaWYgKG9wdGlvbnMuYmFzZS5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZEJhc2VSb3V0ZUVycm9yKG9wdGlvbnMuYmFzZSk7XG4gIH1cblxuICBsZXQgcm91dGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICghb3B0aW9ucy5wYXRoUGFyYW1zKSB7XG4gICAgICB0aHJvdyBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yKG9wdGlvbnMucm91dGUoe30pKTtcbiAgICB9XG5cbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUob3B0aW9ucy5wYXRoUGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUgPz8gbnVsbDtcbiAgfVxuXG4gIGlmIChyb3V0ZSAmJiAhcm91dGUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZFJvdXRlRXJyb3Iocm91dGUpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucXVlcnlQYXJhbXMpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGJ1aWxkUXVlcnlTdHJpbmcob3B0aW9ucy5xdWVyeVBhcmFtcywgb3B0aW9ucy5xdWVyeVBhcmFtQ29uZmlnKTtcblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgcm91dGUgPSByb3V0ZSA/IGAke3JvdXRlfT8ke3F1ZXJ5U3RyaW5nfWAgOiBgLz8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke29wdGlvbnMuYmFzZX0ke3JvdXRlID8/ICcnfWA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRRdWVyeVN0cmluZyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zLCBjb25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IG9iamVjdE5vdGF0aW9uID0gY29uZmlnPy5vYmplY3ROb3RhdGlvbiA/PyAnYnJhY2tldCc7XG4gIGNvbnN0IHdyaXRlQXJyYXlJbmRleGVzID0gY29uZmlnPy53cml0ZUFycmF5SW5kZXhlcyA/PyBmYWxzZTtcbiAgY29uc3QgaWdub3JlZFZhbHVlcyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlcyA/PyBbdW5kZWZpbmVkLCBudWxsLCBJbmZpbml0eSwgLUluZmluaXR5XTtcbiAgY29uc3QgaWdub3JlZFZhbHVlc0ZucyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlc0ZucyA/PyBbaXNOYU4sIGlzRW1wdHlTdHJpbmddO1xuXG4gIGNvbnN0IHF1ZXJ5UGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHByb2Nlc3NWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGxldCBjdXJyZW50RmlsdGVyZWRJbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGFycmF5VmFsdWUgb2YgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gd3JpdGVBcnJheUluZGV4ZXMgPyBgJHtrZXl9WyR7Y3VycmVudEZpbHRlcmVkSW5kZXh9XWAgOiBgJHtrZXl9W11gO1xuXG4gICAgICAgIGNvbnN0IGRpZEFkZFZhbHVlID0gcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgYXJyYXlWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGRpZEFkZFZhbHVlKSB7XG4gICAgICAgICAgY3VycmVudEZpbHRlcmVkSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgW29iaktleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gb2JqZWN0Tm90YXRpb24gPT09ICdkb3QnID8gYCR7a2V5fS4ke29iaktleX1gIDogYCR7a2V5fVske29iaktleX1dYDtcbiAgICAgICAgcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgdmFsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzRm5zLnNvbWUoKGZuKSA9PiBmbih2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgICAgY29uc3QgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlIGFzIHN0cmluZyk7XG5cbiAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7ZW5jb2RlZEtleX09JHtlbmNvZGVkVmFsdWV9YCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgcHJvY2Vzc1ZhbHVlKGtleSwgdmFsKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyeVBhcmFtcy5sZW5ndGggPyBxdWVyeVBhcmFtcy5qb2luKCcmJykgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzKSA9PiB7XG4gIGNvbnN0IGNhY2hlQ29udHJvbCA9IGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXTtcbiAgY29uc3QgYWdlID0gaGVhZGVyc1snYWdlJ107XG4gIGNvbnN0IGV4cGlyZXMgPSBoZWFkZXJzWydleHBpcmVzJ107XG5cbiAgLy8gSW4gc2Vjb25kc1xuICBsZXQgZXhwaXJlc0luOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IG1heEFnZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ25vLWNhY2hlJykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjYWNoZUNvbnRyb2w/LmluY2x1ZGVzKCdtYXgtYWdlJykpIHtcbiAgICBjb25zdCBtID0gY2FjaGVDb250cm9sLnNwbGl0KCdtYXgtYWdlPScpWzFdO1xuXG4gICAgaWYgKG0pIHtcbiAgICAgIG1heEFnZSA9IHBhcnNlSW50KG0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjYWNoZUNvbnRyb2w/LmluY2x1ZGVzKCdzLW1heGFnZScpKSB7XG4gICAgY29uc3QgbSA9IGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV07XG5cbiAgICBpZiAobSkge1xuICAgICAgbWF4QWdlID0gcGFyc2VJbnQobSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAobWF4QWdlKSB7XG4gICAgZXhwaXJlc0luID0gbWF4QWdlIC8gMjsgLy8gV2UgYXNzdW1lIHRoZSByZXNwb25zZSBpcyBoYWxmIHdheSB0byBpdHMgZXhwaXJhdGlvblxuICB9IGVsc2UgaWYgKGV4cGlyZXMpIHtcbiAgICAvLyBVc2VkIGJ5IHNvbWUgYXBpcyB0byB0ZWxsIHRoZSByZXNwb25zZSB3aWxsIG5ldmVyIGV4cGlyZVxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBsZXQgdGhlIHJlc3BvbnNlIGV4cGlyZSBhZnRlciAxIGhvdXJcbiAgICBpZiAoZXhwaXJlcyA9PT0gJy0xJykge1xuICAgICAgZXhwaXJlc0luID0gMzYwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgdmFsaWRcbiAgICAgIGlmIChleHBpcmVzRGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICBleHBpcmVzSW4gPSBNYXRoLmZsb29yKChleHBpcmVzRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpKSAvIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBpcmVzSW47XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gIGlmIChzZWNvbmRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIHNlY29uZHMgKiAxMDAwKS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplQm9keSA9IChib2R5OiB1bmtub3duKTogQXJyYXlCdWZmZXIgfCBVUkxTZWFyY2hQYXJhbXMgfCBCbG9iIHwgRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoXG4gICAgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIEJsb2IgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8XG4gICAgdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYm9keSA9PT0gJ2Jvb2xlYW4nIHx8IEFycmF5LmlzQXJyYXkoYm9keSkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gKGJvZHkgYXMgYW55KS50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IChjb25maWc6IHsgbWV0aG9kOiBNZXRob2Q7IHRyYW5zZmVyVmlhPzogJ0dFVCcgfCAnUE9TVCcgfSkgPT4ge1xuICBpZiAoY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9NVVRBVEUnKSB7XG4gICAgaWYgKCFjb25maWcudHJhbnNmZXJWaWEpIHtcbiAgICAgIHJldHVybiAnUE9TVCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZy50cmFuc2ZlclZpYTtcbiAgfVxuXG4gIHJldHVybiBjb25maWcubWV0aG9kO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdENvbnRlbnRUeXBlSGVhZGVyID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgLy8gQW4gZW1wdHkgYm9keSBoYXMgbm8gY29udGVudCB0eXBlLlxuICBpZiAoYm9keSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEZvcm1EYXRhIGJvZGllcyByZWx5IG9uIHRoZSBicm93c2VyJ3MgY29udGVudCB0eXBlIGFzc2lnbm1lbnQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBCbG9icyB1c3VhbGx5IGhhdmUgdGhlaXIgb3duIGNvbnRlbnQgdHlwZS4gSWYgaXQgZG9lc24ndCwgdGhlblxuICAvLyBubyB0eXBlIGNhbiBiZSBpbmZlcnJlZC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgcmV0dXJuIGJvZHkudHlwZSB8fCBudWxsO1xuICB9XG4gIC8vIEFycmF5IGJ1ZmZlcnMgaGF2ZSB1bmtub3duIGNvbnRlbnRzIGFuZCB0aHVzIG5vIHR5cGUgY2FuIGJlIGluZmVycmVkLlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gVGVjaG5pY2FsbHksIHN0cmluZ3MgY291bGQgYmUgYSBmb3JtIG9mIEpTT04gZGF0YSwgYnV0IGl0J3Mgc2FmZSBlbm91Z2hcbiAgLy8gdG8gYXNzdW1lIHRoZXkncmUgcGxhaW4gc3RyaW5ncy5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAndGV4dC9wbGFpbic7XG4gIH1cblxuICAvLyBBcnJheXMsIG9iamVjdHMsIGJvb2xlYW4gYW5kIG51bWJlcnMgd2lsbCBiZSBlbmNvZGVkIGFzIEpTT04uXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGJvZHkgPT09ICdudW1iZXInIHx8IHR5cGVvZiBib2R5ID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICB9XG4gIC8vIE5vIHR5cGUgY291bGQgYmUgaW5mZXJyZWQuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0hlYWRlciA9IChoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycywgaGVhZGVyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGhlYWRlcnMpLnNvbWUoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlci50b0xvd2VyQ2FzZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JFYWNoSGVhZGVyID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLCBjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNhbGxiYWNrKGtleSwgdmFsdWUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyA9ICh4aHI6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XG4gIGNvbnN0IHBhcnNlZEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge307XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGhlYWRlcnMuc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBuYW1lID0gbGluZS5zbGljZSgwLCBpbmRleCk7XG4gICAgICBjb25zdCBrZXkgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG5cbiAgICAgIHBhcnNlZEhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRIZWFkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc3BvbnNlVXJsID0gKHhocjogWE1MSHR0cFJlcXVlc3QpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyICYmIHhoci5yZXNwb25zZVVSTCkge1xuICAgIHJldHVybiB4aHIucmVzcG9uc2VVUkw7XG4gIH1cbiAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmV0cnlSZXF1ZXN0OiBSZXF1ZXN0UmV0cnlGbiA9IChjb25maWcpID0+IHtcbiAgY29uc3QgZGVmYXVsdFJldHJ5RGVsYXkgPSAxMDAwICsgMTAwMCAqIGNvbmZpZy5jdXJyZW50UmV0cnlDb3VudDtcblxuICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUNvdW50ID4gMykge1xuICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICB9XG5cbiAgaWYgKCFpc1JlcXVlc3RFcnJvcihjb25maWcuZXJyb3IpKSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gIH1cblxuICBjb25zdCB7IHN0YXR1cywgZGV0YWlsIH0gPSBjb25maWcuZXJyb3I7XG5cbiAgLy8gUmV0cnkgb24gNXh4IGVycm9yc1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIC8vIERvbid0IHJldHJ5IGlmIGEgcmVxdWVzdGVkIHBhZ2UgaXMgb3V0IG9mIHJhbmdlXG4gICAgaWYgKGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IoZGV0YWlsKSkge1xuICAgICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gUmV0cnkgb24gNDA4IG9yIDQyNSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQgfHwgc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseSkge1xuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIC8vIFJldHJ5IG9uIDQyOSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9XG4gICAgICBjb25maWcuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ1JldHJ5LUFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWyd4LXJldHJ5LWFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWydYLVJldHJ5LUFmdGVyJ107XG5cbiAgICBpZiAocmV0cnlBZnRlcikge1xuICAgICAgY29uc3QgZGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyKSAqIDEwMDA7XG4gICAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IE51bWJlci5pc05hTihkZWxheSkgPyBkZWZhdWx0UmV0cnlEZWxheSA6IGRlbGF5IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gQ29kZSAwIHVzdWFsbHkgbWVhbnMgdGhlIGludGVybmV0IGNvbm5lY3Rpb24gaXMgZG93bi4gV2UgcmV0cnkgaW4gdGhpcyBjYXNlLlxuICAvLyBJdCBjb3VsZCBhbHNvIGJlIGEgQ09SUyBpc3N1ZSBidXQgdGhhdCBzaG91bGQgbm90IGJlIHRoZSBjYXNlIGluIHByb2R1Y3Rpb24uXG4gIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnVtIEh0dHBTdGF0dXNDb2RlIHtcbiAgVW5rbm93biA9IDAsXG5cbiAgQ29udGludWUgPSAxMDAsXG4gIFN3aXRjaGluZ1Byb3RvY29scyA9IDEwMSxcbiAgUHJvY2Vzc2luZyA9IDEwMixcbiAgRWFybHlIaW50cyA9IDEwMyxcblxuICBPayA9IDIwMCxcbiAgQ3JlYXRlZCA9IDIwMSxcbiAgQWNjZXB0ZWQgPSAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbiA9IDIwMyxcbiAgTm9Db250ZW50ID0gMjA0LFxuICBSZXNldENvbnRlbnQgPSAyMDUsXG4gIFBhcnRpYWxDb250ZW50ID0gMjA2LFxuICBNdWx0aVN0YXR1cyA9IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkID0gMjA4LFxuICBJbVVzZWQgPSAyMjYsXG5cbiAgTXVsdGlwbGVDaG9pY2VzID0gMzAwLFxuICBNb3ZlZFBlcm1hbmVudGx5ID0gMzAxLFxuICBGb3VuZCA9IDMwMixcbiAgU2VlT3RoZXIgPSAzMDMsXG4gIE5vdE1vZGlmaWVkID0gMzA0LFxuICBVc2VQcm94eSA9IDMwNSxcbiAgVW51c2VkID0gMzA2LFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG5cbiAgQmFkUmVxdWVzdCA9IDQwMCxcbiAgVW5hdXRob3JpemVkID0gNDAxLFxuICBQYXltZW50UmVxdWlyZWQgPSA0MDIsXG4gIEZvcmJpZGRlbiA9IDQwMyxcbiAgTm90Rm91bmQgPSA0MDQsXG4gIE1ldGhvZE5vdEFsbG93ZWQgPSA0MDUsXG4gIE5vdEFjY2VwdGFibGUgPSA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDQwNyxcbiAgUmVxdWVzdFRpbWVvdXQgPSA0MDgsXG4gIENvbmZsaWN0ID0gNDA5LFxuICBHb25lID0gNDEwLFxuICBMZW5ndGhSZXF1aXJlZCA9IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkID0gNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2UgPSA0MTMsXG4gIFVyaVRvb0xvbmcgPSA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlID0gNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2LFxuICBFeHBlY3RhdGlvbkZhaWxlZCA9IDQxNyxcbiAgSW1BVGVhcG90ID0gNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3QgPSA0MjEsXG4gIFVucHJvY2Vzc2FibGVFbnRpdHkgPSA0MjIsXG4gIExvY2tlZCA9IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeSA9IDQyNCxcbiAgVG9vRWFybHkgPSA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZCA9IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQgPSA0MjgsXG4gIFRvb01hbnlSZXF1ZXN0cyA9IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlID0gNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29ucyA9IDQ1MSxcblxuICBJbnRlcm5hbFNlcnZlckVycm9yID0gNTAwLFxuICBOb3RJbXBsZW1lbnRlZCA9IDUwMSxcbiAgQmFkR2F0ZXdheSA9IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlID0gNTAzLFxuICBHYXRld2F5VGltZW91dCA9IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQgPSA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlcyA9IDUwNixcbiAgSW5zdWZmaWNpZW50U3RvcmFnZSA9IDUwNyxcbiAgTG9vcERldGVjdGVkID0gNTA4LFxuICBOb3RFeHRlbmRlZCA9IDUxMCxcbiAgTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQgPSA1MTEsXG59XG4iXX0=
|
|
@@ -1,40 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { Injector, assertInInjectionContext, inject } from '@angular/core';
|
|
2
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { createDestroy } from '@ethlete/core';
|
|
4
|
+
import { pairwise, startWith, takeUntil, tap } from 'rxjs';
|
|
5
|
+
export const addQueryContainerHandling = (obs, valueFn, config) => {
|
|
6
|
+
assertInInjectionContext(addQueryContainerHandling);
|
|
7
|
+
const { abortPrevious, abortOnDestroy } = config ?? {};
|
|
8
|
+
const injector = inject(Injector);
|
|
9
|
+
const destroy$ = createDestroy();
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
const tNode = injector._tNode;
|
|
12
|
+
const componentId = tNode?.index ?? -1;
|
|
13
|
+
obs
|
|
14
|
+
.pipe(takeUntil(destroy$), startWith(null), pairwise(), tap(([prevQuery, currQuery]) => {
|
|
15
|
+
prevQuery?._removeDependent(componentId);
|
|
16
|
+
currQuery?._addDependent(componentId);
|
|
17
|
+
if (!prevQuery?._hasDependents() &&
|
|
18
|
+
((abortPrevious === undefined && prevQuery?.canBeCached) || abortPrevious)) {
|
|
19
|
+
prevQuery?.abort();
|
|
11
20
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const origSet = _signal.set.bind(_signal);
|
|
20
|
-
_signal.mutate = (mutatorFn) => {
|
|
21
|
-
if (config?.abortPrevious) {
|
|
22
|
-
_signal()?.abort();
|
|
23
|
-
}
|
|
24
|
-
origMutate(mutatorFn);
|
|
25
|
-
};
|
|
26
|
-
_signal.update = (updateFn) => {
|
|
27
|
-
if (config?.abortPrevious) {
|
|
28
|
-
_signal()?.abort();
|
|
29
|
-
}
|
|
30
|
-
origUpdate(updateFn);
|
|
31
|
-
};
|
|
32
|
-
_signal.set = (value) => {
|
|
33
|
-
if (config?.abortPrevious) {
|
|
34
|
-
_signal()?.abort();
|
|
21
|
+
}))
|
|
22
|
+
.subscribe();
|
|
23
|
+
destroy$.subscribe(() => {
|
|
24
|
+
const query = valueFn();
|
|
25
|
+
query?._removeDependent(componentId);
|
|
26
|
+
if (!query?._hasDependents() && ((query?.canBeCached && abortOnDestroy === undefined) || abortOnDestroy)) {
|
|
27
|
+
query?.abort();
|
|
35
28
|
}
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
return _signal;
|
|
29
|
+
});
|
|
39
30
|
};
|
|
40
|
-
|
|
31
|
+
export function toQuerySignal(source, options) {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
const s = toSignal(source, options);
|
|
34
|
+
addQueryContainerHandling(source, () => s(), options);
|
|
35
|
+
return s;
|
|
36
|
+
}
|
|
37
|
+
export function toQuerySubject(source, options) {
|
|
38
|
+
const obs = toObservable(source, options);
|
|
39
|
+
addQueryContainerHandling(obs, () => source(), options);
|
|
40
|
+
return obs;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQVUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0MsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUE0QixRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFpQnJGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLEdBQWdDLEVBQ2hDLE9BQTBDLEVBQzFDLE1BQTZCLEVBQzdCLEVBQUU7SUFDRix3QkFBd0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUV2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFakMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFJLFFBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFdkMsR0FBRztTQUNBLElBQUksQ0FDSCxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ25CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1FBQzdCLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRDLElBQ0UsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVCLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsRUFDMUU7WUFDQSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDLENBQUMsQ0FDSDtTQUNBLFNBQVMsRUFBRSxDQUFDO0lBRWYsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFeEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksY0FBYyxLQUFLLFNBQVMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFO1lBQ3hHLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBaUJGLE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQXVDLEVBQ3ZDLE9BQW1EO0lBRW5ELDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQWMsQ0FBQyxDQUFDO0lBRTNDLHlCQUF5QixDQUFDLE1BQXVCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUUsT0FBTyxDQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixNQUFpQixFQUNqQixPQUFvRDtJQUVwRCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgU2lnbmFsLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9PYnNlcnZhYmxlT3B0aW9ucywgVG9TaWduYWxPcHRpb25zLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJhYmxlLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDb250YWluZXJDb25maWcge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBjYWNoZWQgKEdFVCwgT1BUSU9OUywgSEVBRCBhbmQgR1FMX1FVRVJZKS4gT3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgYWJvcnRQcmV2aW91cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHF1ZXJ5IHdpbGwgYmUgYWJvcnRlZCB3aGVuIHRoZSBjb250YWluZXIgaXMgZGVzdHJveWVkLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydE9uRGVzdHJveT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nID0gKFxuICBvYnM6IE9ic2VydmFibGU8QW55UXVlcnkgfCBudWxsPixcbiAgdmFsdWVGbjogKCkgPT4gQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbikgPT4ge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyk7XG5cbiAgY29uc3QgeyBhYm9ydFByZXZpb3VzLCBhYm9ydE9uRGVzdHJveSB9ID0gY29uZmlnID8/IHt9O1xuXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgdE5vZGUgPSAoaW5qZWN0b3IgYXMgYW55KS5fdE5vZGU7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gdE5vZGU/LmluZGV4ID8/IC0xO1xuXG4gIG9ic1xuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICB0YXAoKFtwcmV2UXVlcnksIGN1cnJRdWVyeV0pID0+IHtcbiAgICAgICAgcHJldlF1ZXJ5Py5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcbiAgICAgICAgY3VyclF1ZXJ5Py5fYWRkRGVwZW5kZW50KGNvbXBvbmVudElkKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXByZXZRdWVyeT8uX2hhc0RlcGVuZGVudHMoKSAmJlxuICAgICAgICAgICgoYWJvcnRQcmV2aW91cyA9PT0gdW5kZWZpbmVkICYmIHByZXZRdWVyeT8uY2FuQmVDYWNoZWQpIHx8IGFib3J0UHJldmlvdXMpXG4gICAgICAgICkge1xuICAgICAgICAgIHByZXZRdWVyeT8uYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdmFsdWVGbigpO1xuXG4gICAgcXVlcnk/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgaWYgKCFxdWVyeT8uX2hhc0RlcGVuZGVudHMoKSAmJiAoKHF1ZXJ5Py5jYW5CZUNhY2hlZCAmJiBhYm9ydE9uRGVzdHJveSA9PT0gdW5kZWZpbmVkKSB8fCBhYm9ydE9uRGVzdHJveSkpIHtcbiAgICAgIHF1ZXJ5Py5hYm9ydCgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9ucz86IFRvU2lnbmFsT3B0aW9uczx1bmRlZmluZWQ+ICYgeyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIFUgZXh0ZW5kcyBUIHwgbnVsbCB8IHVuZGVmaW5lZD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zPFU+ICYgeyBpbml0aWFsVmFsdWU6IFU7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCBVPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9uczx1bmRlZmluZWQ+ICYgeyByZXF1aXJlU3luYzogdHJ1ZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VD47XG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsLCBVID0gdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zPFU+ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IFU+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgcyA9IHRvU2lnbmFsKHNvdXJjZSwgb3B0aW9ucyBhcyBhbnkpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcoc291cmNlIGFzIE9ic2VydmFibGU8VD4sICgpID0+IHMoKSBhcyBULCBvcHRpb25zKTtcblxuICByZXR1cm4gcyBhcyBTaWduYWw8VCB8IFU+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVN1YmplY3Q8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogU2lnbmFsPFQ+LFxuICBvcHRpb25zPzogVG9PYnNlcnZhYmxlT3B0aW9ucyAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBzb3VyY2UoKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9icztcbn1cbiJdfQ==
|