@data-client/core 0.2.0 → 0.3.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/dist/index.js +38 -0
- package/dist/index.umd.min.js +1 -1
- package/dist/next.js +15 -0
- package/legacy/actionTypes.js +2 -1
- package/legacy/controller/Controller.js +9 -1
- package/legacy/controller/createExpireAll.js +8 -0
- package/legacy/manager/PollingSubscription.js +1 -1
- package/legacy/manager/applyManager.js +2 -1
- package/legacy/newActions.js +1 -1
- package/legacy/state/reducer/createReducer.js +5 -2
- package/legacy/state/reducer/expireReducer.js +15 -0
- package/lib/actionTypes.d.ts +1 -0
- package/lib/actionTypes.d.ts.map +1 -1
- package/lib/actionTypes.js +2 -1
- package/lib/controller/Controller.d.ts +9 -0
- package/lib/controller/Controller.d.ts.map +1 -1
- package/lib/controller/Controller.js +9 -1
- package/lib/controller/createExpireAll.d.ts +3 -0
- package/lib/controller/createExpireAll.d.ts.map +1 -0
- package/lib/controller/createExpireAll.js +8 -0
- package/lib/manager/PollingSubscription.d.ts.map +1 -1
- package/lib/manager/PollingSubscription.js +1 -1
- package/lib/manager/applyManager.d.ts.map +1 -1
- package/lib/manager/applyManager.js +2 -1
- package/lib/newActions.d.ts +6 -2
- package/lib/newActions.d.ts.map +1 -1
- package/lib/newActions.js +1 -1
- package/lib/state/reducer/createReducer.d.ts.map +1 -1
- package/lib/state/reducer/createReducer.js +5 -2
- package/lib/state/reducer/expireReducer.d.ts +36 -0
- package/lib/state/reducer/expireReducer.d.ts.map +1 -0
- package/lib/state/reducer/expireReducer.js +19 -0
- package/package.json +9 -6
- package/src/actionTypes.ts +1 -0
- package/src/controller/Controller.ts +10 -0
- package/src/controller/createExpireAll.ts +11 -0
- package/src/manager/PollingSubscription.ts +14 -11
- package/src/manager/applyManager.ts +1 -0
- package/src/newActions.ts +8 -0
- package/src/state/reducer/createReducer.ts +5 -0
- package/src/state/reducer/expireReducer.ts +20 -0
- package/ts3.4/actionTypes.d.ts +1 -0
- package/ts3.4/controller/Controller.d.ts +9 -0
- package/ts3.4/controller/createExpireAll.d.ts +3 -0
- package/ts3.4/newActions.d.ts +6 -2
- package/ts3.4/state/reducer/expireReducer.d.ts +36 -0
package/dist/index.js
CHANGED
|
@@ -7,6 +7,25 @@ var normalizr = require('@data-client/normalizr');
|
|
|
7
7
|
const RIC = typeof requestIdleCallback === 'function' ? requestIdleCallback : cb => setTimeout(cb, 0);
|
|
8
8
|
var RIC$1 = RIC;
|
|
9
9
|
|
|
10
|
+
function expireReducer(state, action) {
|
|
11
|
+
const meta = {
|
|
12
|
+
...state.meta
|
|
13
|
+
};
|
|
14
|
+
Object.keys(meta).forEach(key => {
|
|
15
|
+
if (action.testKey(key)) {
|
|
16
|
+
meta[key] = {
|
|
17
|
+
...meta[key],
|
|
18
|
+
// 1 instead of 0 so we can do 'falsy' checks to see if it is set
|
|
19
|
+
expiresAt: 1
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
...state,
|
|
25
|
+
meta
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
10
29
|
const FETCH_TYPE = 'rest-hooks/fetch';
|
|
11
30
|
/** @deprecated use SET_TYPE instead */
|
|
12
31
|
const RECEIVE_TYPE = 'rest-hooks/receive';
|
|
@@ -17,6 +36,7 @@ const SUBSCRIBE_TYPE = 'rest-hooks/subscribe';
|
|
|
17
36
|
const UNSUBSCRIBE_TYPE = 'rest-hook/unsubscribe';
|
|
18
37
|
const INVALIDATE_TYPE = 'rest-hooks/invalidate';
|
|
19
38
|
const INVALIDATEALL_TYPE = 'rest-hooks/invalidateall';
|
|
39
|
+
const EXPIREALL_TYPE = 'rest-hooks/expireall';
|
|
20
40
|
const GC_TYPE = 'rest-hooks/gc';
|
|
21
41
|
|
|
22
42
|
var actionTypes = /*#__PURE__*/Object.freeze({
|
|
@@ -30,6 +50,7 @@ var actionTypes = /*#__PURE__*/Object.freeze({
|
|
|
30
50
|
UNSUBSCRIBE_TYPE: UNSUBSCRIBE_TYPE,
|
|
31
51
|
INVALIDATE_TYPE: INVALIDATE_TYPE,
|
|
32
52
|
INVALIDATEALL_TYPE: INVALIDATEALL_TYPE,
|
|
53
|
+
EXPIREALL_TYPE: EXPIREALL_TYPE,
|
|
33
54
|
GC_TYPE: GC_TYPE
|
|
34
55
|
});
|
|
35
56
|
|
|
@@ -248,6 +269,8 @@ function createReducer(controller) {
|
|
|
248
269
|
case INVALIDATEALL_TYPE:
|
|
249
270
|
case INVALIDATE_TYPE:
|
|
250
271
|
return invalidateReducer(state, action);
|
|
272
|
+
case EXPIREALL_TYPE:
|
|
273
|
+
return expireReducer(state, action);
|
|
251
274
|
case RESET_TYPE:
|
|
252
275
|
return {
|
|
253
276
|
...initialState,
|
|
@@ -279,6 +302,13 @@ var internal = /*#__PURE__*/Object.freeze({
|
|
|
279
302
|
initialState: initialState
|
|
280
303
|
});
|
|
281
304
|
|
|
305
|
+
function createExpireAll(testKey) {
|
|
306
|
+
return {
|
|
307
|
+
type: EXPIREALL_TYPE,
|
|
308
|
+
testKey
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
282
312
|
/**
|
|
283
313
|
* Requesting a fetch to begin
|
|
284
314
|
*/
|
|
@@ -454,8 +484,15 @@ class Controller {
|
|
|
454
484
|
/**
|
|
455
485
|
* Forces refetching and suspense on useSuspense on all matching endpoint result keys.
|
|
456
486
|
* @see https://resthooks.io/docs/api/Controller#invalidateAll
|
|
487
|
+
* @returns Promise that resolves when invalidation is commited.
|
|
457
488
|
*/
|
|
458
489
|
this.invalidateAll = options => this.dispatch(createInvalidateAll(key => options.testKey(key)));
|
|
490
|
+
/**
|
|
491
|
+
* Sets all matching endpoint result keys to be STALE.
|
|
492
|
+
* @see https://dataclient.io/docs/api/Controller#expireAll
|
|
493
|
+
* @returns Promise that resolves when expiry is commited. *NOT* fetch promise
|
|
494
|
+
*/
|
|
495
|
+
this.expireAll = options => this.dispatch(createExpireAll(key => options.testKey(key)));
|
|
459
496
|
/**
|
|
460
497
|
* Resets the entire Rest Hooks cache. All inflight requests will not resolve.
|
|
461
498
|
* @see https://resthooks.io/docs/api/Controller#resetEntireStore
|
|
@@ -934,6 +971,7 @@ class NetworkManager {
|
|
|
934
971
|
function applyManager(managers, controller) {
|
|
935
972
|
return managers.map(manager => {
|
|
936
973
|
const middleware = manager.getMiddleware();
|
|
974
|
+
// TODO(breaking): remove this once controller prop is no longer supported
|
|
937
975
|
return ({
|
|
938
976
|
dispatch,
|
|
939
977
|
getState
|
package/dist/index.umd.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@data-client/normalizr")):"function"==typeof define&&define.amd?define(["exports","@data-client/normalizr"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).dataClientCore={},e.normalizr)}(this,(function(e,t){"use strict";var s="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);const i="rest-hooks/fetch",r="rest-hooks/receive",n=r,o="rest-hooks/optimistic",a="rest-hooks/reset",l="rest-hooks/subscribe",c="rest-hook/unsubscribe",h="rest-hooks/invalidate",d="rest-hooks/invalidateall",u="rest-hooks/gc";var p=Object.freeze({__proto__:null,FETCH_TYPE:i,RECEIVE_TYPE:r,SET_TYPE:n,OPTIMISTIC_TYPE:o,RESET_TYPE:a,SUBSCRIBE_TYPE:l,UNSUBSCRIBE_TYPE:c,INVALIDATE_TYPE:h,INVALIDATEALL_TYPE:d,GC_TYPE:u});function f(e,t){let s;return t.endpoint.getOptimisticResponse&&t.endpoint.sideEffect?(s=function(e,{args:t,fetchedAt:s}){var i;const r=null!=(i=e.dataExpiryLength)?i:6e4,n=Date.now(),a={args:t,fetchedAt:s,date:n,expiresAt:n+r,key:e.key(...t)};return{type:o,endpoint:e,meta:a}}(t.endpoint,{args:t.meta.args,fetchedAt:t.meta.createdAt}),Object.assign({},e,{optimistic:[...e.optimistic,s]})):e}function m(e,t,s){return"AbortError"===s.name?Object.assign({},e,{optimistic:y(e,t)}):Object.assign({},e,{meta:Object.assign({},e.meta,{[t.meta.key]:{date:t.meta.date,error:s,expiresAt:t.meta.expiresAt,errorPolicy:null==t.endpoint.errorPolicy?void 0:t.endpoint.errorPolicy(s)}}),optimistic:y(e,t)})}function y(e,t){return e.optimistic.filter((e=>e.meta.key!==t.meta.key||(e.type===o?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function g(e){return function(s,r){switch(s||(s=v),r.type){case u:return r.entities.forEach((([e,t])=>{var i,r;null==(i=s.entities[e])||delete i[t],null==(r=s.entityMeta[e])||delete r[t]})),r.results.forEach((e=>{delete s.results[e],delete s.meta[e]})),s;case i:return f(s,r);case o:case n:return function(e,s,i){if(s.error)return m(e,s,s.payload);try{var r;let a;if(s.type===o){if(!s.endpoint.getOptimisticResponse)return e;try{a=s.endpoint.getOptimisticResponse.call(s.endpoint,i.snapshot(e,s.meta.fetchedAt),...s.meta.args)}catch(t){var n;if("AbortOptimistic"===(null==(n=t.constructor)?void 0:n.name))return e;throw t}}else a=s.payload;const{result:l,entities:c,indexes:h,entityMeta:d}=t.normalize(a,s.endpoint.schema,s.meta.args,e.entities,e.indexes,e.entityMeta,s.meta),u=Object.assign({},e.results,{[s.meta.key]:l});try{if(s.endpoint.update){const e=s.endpoint.update(l,...s.meta.args);Object.keys(e).forEach((t=>{u[t]=e[t](u[t])}))}}catch(e){console.error(`The following error occured during Endpoint.update() for ${s.meta.key}`),console.error(e)}return{entities:c,indexes:h,results:u,entityMeta:d,meta:Object.assign({},e.meta,{[s.meta.key]:{date:s.meta.date,expiresAt:s.meta.expiresAt,prevExpiresAt:null==(r=e.meta[s.meta.key])?void 0:r.expiresAt}}),optimistic:y(e,s),lastReset:e.lastReset}}catch(t){return"object"==typeof t&&(t.message=`Error processing ${s.meta.key}\n\nFull Schema: ${JSON.stringify(s.endpoint.schema,void 0,2)}\n\nError:\n${t.message}`,"payload"in s&&(t.payload=s.payload),t.status=400),m(e,s,t)}}(s,r,e);case d:case h:return function(e,t){const s=Object.assign({},e.results),i=Object.assign({},e.meta),r=e=>{delete s[e];const t=Object.assign({},i[e],{expiresAt:0,invalidated:!0});delete t.error,i[e]=t};return t.type===h?r(t.meta.key):Object.keys(s).forEach((e=>{t.testKey(e)&&r(e)})),Object.assign({},e,{results:s,meta:i})}(s,r);case a:return Object.assign({},v,{lastReset:r.date});default:return s}}}const v={entities:{},indexes:{},results:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var E=Object.freeze({__proto__:null,inferResults:t.inferResults,DELETED:t.DELETED,INVALID:t.INVALID,RIC:s,initialState:v});function b(e,{args:t}){const s=e.key(...t);let r=0,n=0;const o=new Promise(((e,t)=>{[r,n]=[e,t]})),a={args:t,key:s,throttle:!e.sideEffect,resolve:r,reject:n,promise:o,createdAt:Date.now(),nm:!1};return{type:i,payload:()=>e(...t),meta:a,endpoint:e}}function L(e,{args:t,fetchedAt:s,response:i,error:r=!1}){var o,a;const l=r?null!=(o=e.errorExpiryLength)?o:1e3:null!=(a=e.dataExpiryLength)?a:6e4,c=Date.now(),h={args:t,fetchedAt:null!=s?s:c,date:c,expiresAt:c+l,key:e.key(...t)},d={type:n,payload:i,endpoint:e,meta:h};return r&&(d.error=!0),d}function I(e,t){return e.meta[t]}const O=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},k=()=>v;class w{constructor({dispatch:e=O,getState:s=k,globalCache:i={entities:{},results:{}}}={}){this.fetch=(e,...s)=>{const i=b(e,{args:s});return this.dispatch(i),e.schema?i.meta.promise.then((i=>t.denormalize(i,e.schema,{},s))):i.meta.promise},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:h,meta:{key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch({type:d,testKey:t=>e.testKey(t)}),this.resetEntireStore=()=>this.dispatch({type:a,date:Date.now()}),this.setResponse=(e,...t)=>{const s=t[t.length-1],i=L(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},this.receive=(e,...t)=>this.setResponse(e,...t),this.setError=(e,...t)=>{const s=t[t.length-1],i=L(e,{args:t.slice(0,t.length-1),response:s,error:!0});return this.dispatch(i)},this.receiveError=(e,...t)=>this.setError(e,...t),this.resolve=(e,t)=>this.dispatch(L(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:l,endpoint:e,meta:{args:t,key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.unsubscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:c,endpoint:e,meta:{args:t,key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new A(this,e,t),this.getError=(e,...t)=>{if(null===t[0])return;const s=t[t.length-1],i=t.slice(0,t.length-1),r=e.key(...i),n=I(s,r);return void 0===s.results[r]||"soft"!==(null==n?void 0:n.errorPolicy)?null==n?void 0:n.error:void 0},this.getResponse=(e,...s)=>{const i=s[s.length-1],r=s.slice(0,s.length-1),n=1!==r.length||null!==r[0],o=n?e.key(...r):"",a=n?i.results[o]:void 0,l=e.schema,c=I(i,o);let h,d=null==c?void 0:c.expiresAt,u=!1;if(void 0===a&&void 0!==e.schema?(h=t.inferResults(e.schema,r,i.indexes,i.entities),u=!t.validateInference(h),!d&&u&&(d=1)):h=a,!n)return{data:h,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};if(!e.schema||!S(e.schema))return{data:h,expiryStatus:null!=c&&c.invalidated?t.ExpiryStatus.Invalid:a&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:d||0};this.globalCache.results[o]||(this.globalCache.results[o]=new t.WeakEntityMap);const{data:p,paths:f}=t.denormalizeCached(h,l,i.entities,this.globalCache.entities,this.globalCache.results[o],r),m="symbol"==typeof p;d||(d=function(e,t){let s=1/0;for(const{pk:n,key:o}of e){var i,r;const e=null==(i=t[o])||null==(r=i[n])?void 0:r.expiresAt;e<s&&(s=e)}return s}(f,i.entityMeta));return{data:p,expiryStatus:null!=c&&c.invalidated||m&&(null==c||!c.error)?t.ExpiryStatus.Invalid:m||e.invalidIfStale||u?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:d}},this.dispatch=e,this.getState=s,this.globalCache=i}}function S(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&S(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?S(t):Object.values(t).some((e=>S(e)))}return!1}class A{constructor(e,t,s=0){this.state=void 0,this.controller=void 0,this.fetchedAt=void 0,this.getResponse=(e,...t)=>this.controller.getResponse(e,...t,this.state),this.getError=(e,...t)=>this.controller.getError(e,...t,this.state),this.state=t,this.controller=e,this.fetchedAt=s}}class x extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}var T=Object.freeze({__proto__:null});class _{isOnline(){return void 0===navigator.onLine||navigator.onLine}addOnlineListener(e){addEventListener("online",e)}removeOnlineListener(e){removeEventListener("online",e)}addOfflineListener(e){addEventListener("offline",e)}removeOfflineListener(e){removeEventListener("offline",e)}}class j{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let R;R="undefined"!=typeof navigator&&"function"==typeof addEventListener?_:j;var q,P=R;const D="undefined"!=typeof Intl,M={name:`Rest Hooks: ${null==(q=globalThis.document)?void 0:q.title}`,autoPause:!0,serialize:{options:void 0,replacer:D?(e,t)=>"number"==typeof t&&"string"==typeof e&&isFinite(t)&&("date"===e||e.endsWith("At"))?Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"numeric",second:"numeric",fractionalSecondDigits:3}).format(t):t:void 0}};Object.hasOwn=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},Object.defineProperty(e,"ExpiryStatus",{enumerable:!0,get:function(){return t.ExpiryStatus}}),e.Controller=w,e.DefaultConnectionListener=P,e.DevToolsManager=class{constructor(e,t){this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},M,{config:e})),this.devTools?this.middleware=e=>{const s=g(e);return i=>r=>{const n=i(r);return n.then((()=>{if(null!=t&&t(r))return;const i=e.getState();this.devTools.send(r,i.optimistic.reduce(s,i),void 0,"REST_HOOKS")})),n}}:this.middleware=()=>e=>t=>e(t)}init(e){this.devTools&&this.devTools.init(e)}cleanup(){}getMiddleware(){return this.middleware}},e.LogoutManager=class{constructor({handleLogout:e,shouldLogout:t}={}){e&&(this.handleLogout=e),t&&(this.shouldLogout=t),this.middleware=e=>t=>async s=>{await t(s),s.type===n&&s.error&&this.shouldLogout(s.payload)&&this.handleLogout(e)}}cleanup(){}getMiddleware(){return this.middleware}shouldLogout(e){return 401===e.status}handleLogout(e){e.resetEntireStore()}},e.NetworkManager=class{constructor(e=6e4,t=1e3){this.fetched=Object.create(null),this.resolvers={},this.rejectors={},this.fetchedAt={},this.controller=new w,this.dataExpiryLength=e,this.errorExpiryLength=t,this.middleware=e=>(this.controller=e,t=>s=>{switch(s.type){case i:return this.handleFetch(s),void 0!==s.endpoint.getOptimisticResponse&&s.endpoint.sideEffect?t(s):Promise.resolve();case n:return t(s).then((()=>{if(s.meta.key in this.fetched){var t;const i=null==(t=e.getState().meta[s.meta.key])?void 0:t.error;i?this.handleReceive(L(s.endpoint,{args:s.meta.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleReceive(s)}}));case a:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(s).then((()=>{for(const t in e)e[t](new x)}))}default:return t(s)}})}skipLogging(e){return e.type===i&&e.meta.key in this.fetched}init(){delete this.cleanupDate}cleanup(){this.cleanupDate=Date.now()}allSettled(){const e=Object.values(this.fetched);if(e.length)return Promise.allSettled(e)}clearAll(){for(const e in this.rejectors)this.clear(e)}clear(e){this.fetched[e].catch((()=>{})),delete this.resolvers[e],delete this.rejectors[e],delete this.fetched[e],delete this.fetchedAt[e]}getLastReset(){return this.cleanupDate?this.cleanupDate:this.controller.getState().lastReset}handleFetch(e){const t=e.payload,{key:s,throttle:i,resolve:r,reject:n,createdAt:o}=e.meta,a=()=>{let s=t();return i||(s=(e=>e.then((e=>(r(e),e))).catch((e=>{throw n(e),e})))(s)),s=s.then((t=>{let s=this.getLastReset();return o>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:o}),t})).catch((t=>{const s=this.getLastReset();throw o>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:o,error:!0}),t})),s};return i?this.throttle(s,a,o).then((e=>r(e))).catch((e=>n(e))):a().catch((()=>{}))}handleReceive(e){if(e.meta.key in this.fetched){let t;t=e.error?this.rejectors[e.meta.key]:this.resolvers[e.meta.key],t(e.payload),this.clear(e.meta.key)}}getMiddleware(){return this.middleware}throttle(e,t,i){const r=this.getLastReset();return e in this.fetched&&this.fetchedAt[e]>r||(this.fetched[e]=new Promise(((t,s)=>{this.resolvers[e]=t,this.rejectors[e]=s})),this.fetchedAt[e]=i,s((()=>{t().catch((()=>null))}),{timeout:500})),this.fetched[e]}},e.PollingSubscription=class{constructor(e,t,s){if(this.frequencyHistogram=new Map,this.offlineListener=()=>{this.cleanup(),this.connectionListener.addOnlineListener(this.onlineListener)},this.onlineListener=()=>{this.connectionListener.removeOnlineListener(this.onlineListener);const e=Date.now();this.startId=setTimeout((()=>{this.startId&&(delete this.startId,this.update(),this.run())}),Math.max(0,this.lastFetchTime()-e+this.frequency)),this.connectionListener.addOfflineListener(this.offlineListener)},void 0===e.endpoint.pollFrequency)throw new Error("frequency needed for polling subscription");this.endpoint=e.endpoint,this.frequency=e.endpoint.pollFrequency,this.args=e.meta.args,this.key=e.meta.key,this.frequencyHistogram.set(this.frequency,1),this.controller=t,this.connectionListener=s||new P,this.connectionListener.isOnline()?this.onlineListener():this.offlineListener()}add(e){void 0!==e&&(this.frequencyHistogram.has(e)?this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)+1):(this.frequencyHistogram.set(e,1),e<this.frequency&&(this.frequency=e,this.run())))}remove(e){if(void 0===e)return!1;if(this.frequencyHistogram.has(e)&&(this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)-1),this.frequencyHistogram.get(e)<1)){if(this.frequencyHistogram.delete(e),0===this.frequencyHistogram.size)return this.cleanup(),!0;e<=this.frequency&&(this.frequency=Math.min(...this.frequencyHistogram.keys()),this.run())}return!1}cleanup(){this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId),this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.startId&&(clearTimeout(this.startId),delete this.startId),this.connectionListener.removeOnlineListener(this.onlineListener),this.connectionListener.removeOfflineListener(this.offlineListener)}update(){const e=this.endpoint,t=function(...t){return e.call(this,...t)};Object.assign(t,this.endpoint),t.dataExpiryLength=this.frequency/2,t.errorExpiryLength=this.frequency/10,t.errorPolicy=()=>"soft",t.key=()=>this.key,this.controller.fetch(t,...this.args).catch((()=>null))}run(){this.startId||(this.intervalId&&(this.lastIntervalId=this.intervalId),this.intervalId=setInterval((()=>{this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.intervalId&&this.update()}),this.frequency))}lastFetchTime(){var e,t;return null!=(e=null==(t=this.controller.getState().meta[this.key])?void 0:t.date)?e:0}},e.ResetError=x,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.controller=new w,this.Subscription=e,this.middleware=e=>(this.controller=e,e=>t=>{switch(t.type){case l:try{this.handleSubscribe(t)}catch(e){console.error(e)}return Promise.resolve();case c:return this.handleUnsubscribe(t),Promise.resolve();default:return e(t)}})}cleanup(){for(const e in this.subscriptions)this.subscriptions[e].cleanup()}handleSubscribe(e){const t=e.meta.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].add(s)}else this.subscriptions[t]=new this.Subscription(e,this.controller)}handleUnsubscribe(e){const t=e.meta.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].remove(s)&&delete this.subscriptions[t]}}getMiddleware(){return this.middleware}},e.__INTERNAL__=E,e.actionTypes=p,e.applyManager=function(e,t){return e.map((e=>{const s=e.getMiddleware();return({dispatch:e,getState:i})=>{t.dispatch=e,t.getState=i;const r=Object.create(t,{controller:{value:t}});return s(r)}}))},e.createFetch=b,e.createReceive=L,e.createReducer=g,e.initialState=v,e.newActions=T,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@data-client/normalizr")):"function"==typeof define&&define.amd?define(["exports","@data-client/normalizr"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).dataClientCore={},e.normalizr)}(this,(function(e,t){"use strict";var s="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);const i="rest-hooks/fetch",r="rest-hooks/receive",n=r,o="rest-hooks/optimistic",a="rest-hooks/reset",l="rest-hooks/subscribe",c="rest-hook/unsubscribe",h="rest-hooks/invalidate",d="rest-hooks/invalidateall",u="rest-hooks/expireall",p="rest-hooks/gc";var f=Object.freeze({__proto__:null,FETCH_TYPE:i,RECEIVE_TYPE:r,SET_TYPE:n,OPTIMISTIC_TYPE:o,RESET_TYPE:a,SUBSCRIBE_TYPE:l,UNSUBSCRIBE_TYPE:c,INVALIDATE_TYPE:h,INVALIDATEALL_TYPE:d,EXPIREALL_TYPE:u,GC_TYPE:p});function m(e,t){let s;return t.endpoint.getOptimisticResponse&&t.endpoint.sideEffect?(s=function(e,{args:t,fetchedAt:s}){var i;const r=null!=(i=e.dataExpiryLength)?i:6e4,n=Date.now(),a={args:t,fetchedAt:s,date:n,expiresAt:n+r,key:e.key(...t)};return{type:o,endpoint:e,meta:a}}(t.endpoint,{args:t.meta.args,fetchedAt:t.meta.createdAt}),Object.assign({},e,{optimistic:[...e.optimistic,s]})):e}function y(e,t,s){return"AbortError"===s.name?Object.assign({},e,{optimistic:g(e,t)}):Object.assign({},e,{meta:Object.assign({},e.meta,{[t.meta.key]:{date:t.meta.date,error:s,expiresAt:t.meta.expiresAt,errorPolicy:null==t.endpoint.errorPolicy?void 0:t.endpoint.errorPolicy(s)}}),optimistic:g(e,t)})}function g(e,t){return e.optimistic.filter((e=>e.meta.key!==t.meta.key||(e.type===o?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function v(e){return function(s,r){switch(s||(s=E),r.type){case p:return r.entities.forEach((([e,t])=>{var i,r;null==(i=s.entities[e])||delete i[t],null==(r=s.entityMeta[e])||delete r[t]})),r.results.forEach((e=>{delete s.results[e],delete s.meta[e]})),s;case i:return m(s,r);case o:case n:return function(e,s,i){if(s.error)return y(e,s,s.payload);try{var r;let a;if(s.type===o){if(!s.endpoint.getOptimisticResponse)return e;try{a=s.endpoint.getOptimisticResponse.call(s.endpoint,i.snapshot(e,s.meta.fetchedAt),...s.meta.args)}catch(t){var n;if("AbortOptimistic"===(null==(n=t.constructor)?void 0:n.name))return e;throw t}}else a=s.payload;const{result:l,entities:c,indexes:h,entityMeta:d}=t.normalize(a,s.endpoint.schema,s.meta.args,e.entities,e.indexes,e.entityMeta,s.meta),u=Object.assign({},e.results,{[s.meta.key]:l});try{if(s.endpoint.update){const e=s.endpoint.update(l,...s.meta.args);Object.keys(e).forEach((t=>{u[t]=e[t](u[t])}))}}catch(e){console.error(`The following error occured during Endpoint.update() for ${s.meta.key}`),console.error(e)}return{entities:c,indexes:h,results:u,entityMeta:d,meta:Object.assign({},e.meta,{[s.meta.key]:{date:s.meta.date,expiresAt:s.meta.expiresAt,prevExpiresAt:null==(r=e.meta[s.meta.key])?void 0:r.expiresAt}}),optimistic:g(e,s),lastReset:e.lastReset}}catch(t){return"object"==typeof t&&(t.message=`Error processing ${s.meta.key}\n\nFull Schema: ${JSON.stringify(s.endpoint.schema,void 0,2)}\n\nError:\n${t.message}`,"payload"in s&&(t.payload=s.payload),t.status=400),y(e,s,t)}}(s,r,e);case d:case h:return function(e,t){const s=Object.assign({},e.results),i=Object.assign({},e.meta),r=e=>{delete s[e];const t=Object.assign({},i[e],{expiresAt:0,invalidated:!0});delete t.error,i[e]=t};return t.type===h?r(t.meta.key):Object.keys(s).forEach((e=>{t.testKey(e)&&r(e)})),Object.assign({},e,{results:s,meta:i})}(s,r);case u:return function(e,t){const s=Object.assign({},e.meta);return Object.keys(s).forEach((e=>{t.testKey(e)&&(s[e]=Object.assign({},s[e],{expiresAt:1}))})),Object.assign({},e,{meta:s})}(s,r);case a:return Object.assign({},E,{lastReset:r.date});default:return s}}}const E={entities:{},indexes:{},results:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var b=Object.freeze({__proto__:null,inferResults:t.inferResults,DELETED:t.DELETED,INVALID:t.INVALID,RIC:s,initialState:E});function L(e,{args:t}){const s=e.key(...t);let r=0,n=0;const o=new Promise(((e,t)=>{[r,n]=[e,t]})),a={args:t,key:s,throttle:!e.sideEffect,resolve:r,reject:n,promise:o,createdAt:Date.now(),nm:!1};return{type:i,payload:()=>e(...t),meta:a,endpoint:e}}function O(e,{args:t,fetchedAt:s,response:i,error:r=!1}){var o,a;const l=r?null!=(o=e.errorExpiryLength)?o:1e3:null!=(a=e.dataExpiryLength)?a:6e4,c=Date.now(),h={args:t,fetchedAt:null!=s?s:c,date:c,expiresAt:c+l,key:e.key(...t)},d={type:n,payload:i,endpoint:e,meta:h};return r&&(d.error=!0),d}function I(e,t){return e.meta[t]}const k=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},w=()=>E;class A{constructor({dispatch:e=k,getState:s=w,globalCache:i={entities:{},results:{}}}={}){this.fetch=(e,...s)=>{const i=L(e,{args:s});return this.dispatch(i),e.schema?i.meta.promise.then((i=>t.denormalize(i,e.schema,{},s))):i.meta.promise},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:h,meta:{key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch({type:d,testKey:t=>e.testKey(t)}),this.expireAll=e=>this.dispatch({type:u,testKey:t=>e.testKey(t)}),this.resetEntireStore=()=>this.dispatch({type:a,date:Date.now()}),this.setResponse=(e,...t)=>{const s=t[t.length-1],i=O(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},this.receive=(e,...t)=>this.setResponse(e,...t),this.setError=(e,...t)=>{const s=t[t.length-1],i=O(e,{args:t.slice(0,t.length-1),response:s,error:!0});return this.dispatch(i)},this.receiveError=(e,...t)=>this.setError(e,...t),this.resolve=(e,t)=>this.dispatch(O(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:l,endpoint:e,meta:{args:t,key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.unsubscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:c,endpoint:e,meta:{args:t,key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new x(this,e,t),this.getError=(e,...t)=>{if(null===t[0])return;const s=t[t.length-1],i=t.slice(0,t.length-1),r=e.key(...i),n=I(s,r);return void 0===s.results[r]||"soft"!==(null==n?void 0:n.errorPolicy)?null==n?void 0:n.error:void 0},this.getResponse=(e,...s)=>{const i=s[s.length-1],r=s.slice(0,s.length-1),n=1!==r.length||null!==r[0],o=n?e.key(...r):"",a=n?i.results[o]:void 0,l=e.schema,c=I(i,o);let h,d=null==c?void 0:c.expiresAt,u=!1;if(void 0===a&&void 0!==e.schema?(h=t.inferResults(e.schema,r,i.indexes,i.entities),u=!t.validateInference(h),!d&&u&&(d=1)):h=a,!n)return{data:h,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};if(!e.schema||!S(e.schema))return{data:h,expiryStatus:null!=c&&c.invalidated?t.ExpiryStatus.Invalid:a&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:d||0};this.globalCache.results[o]||(this.globalCache.results[o]=new t.WeakEntityMap);const{data:p,paths:f}=t.denormalizeCached(h,l,i.entities,this.globalCache.entities,this.globalCache.results[o],r),m="symbol"==typeof p;d||(d=function(e,t){let s=1/0;for(const{pk:n,key:o}of e){var i,r;const e=null==(i=t[o])||null==(r=i[n])?void 0:r.expiresAt;e<s&&(s=e)}return s}(f,i.entityMeta));return{data:p,expiryStatus:null!=c&&c.invalidated||m&&(null==c||!c.error)?t.ExpiryStatus.Invalid:m||e.invalidIfStale||u?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:d}},this.dispatch=e,this.getState=s,this.globalCache=i}}function S(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&S(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?S(t):Object.values(t).some((e=>S(e)))}return!1}class x{constructor(e,t,s=0){this.state=void 0,this.controller=void 0,this.fetchedAt=void 0,this.getResponse=(e,...t)=>this.controller.getResponse(e,...t,this.state),this.getError=(e,...t)=>this.controller.getError(e,...t,this.state),this.state=t,this.controller=e,this.fetchedAt=s}}class T extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}var j=Object.freeze({__proto__:null});class _{isOnline(){return void 0===navigator.onLine||navigator.onLine}addOnlineListener(e){addEventListener("online",e)}removeOnlineListener(e){removeEventListener("online",e)}addOfflineListener(e){addEventListener("offline",e)}removeOfflineListener(e){removeEventListener("offline",e)}}class R{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let P;P="undefined"!=typeof navigator&&"function"==typeof addEventListener?_:R;var q,D=P;const M="undefined"!=typeof Intl,C={name:`Rest Hooks: ${null==(q=globalThis.document)?void 0:q.title}`,autoPause:!0,serialize:{options:void 0,replacer:M?(e,t)=>"number"==typeof t&&"string"==typeof e&&isFinite(t)&&("date"===e||e.endsWith("At"))?Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"numeric",second:"numeric",fractionalSecondDigits:3}).format(t):t:void 0}};Object.hasOwn=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},Object.defineProperty(e,"ExpiryStatus",{enumerable:!0,get:function(){return t.ExpiryStatus}}),e.Controller=A,e.DefaultConnectionListener=D,e.DevToolsManager=class{constructor(e,t){this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},C,{config:e})),this.devTools?this.middleware=e=>{const s=v(e);return i=>r=>{const n=i(r);return n.then((()=>{if(null!=t&&t(r))return;const i=e.getState();this.devTools.send(r,i.optimistic.reduce(s,i),void 0,"REST_HOOKS")})),n}}:this.middleware=()=>e=>t=>e(t)}init(e){this.devTools&&this.devTools.init(e)}cleanup(){}getMiddleware(){return this.middleware}},e.LogoutManager=class{constructor({handleLogout:e,shouldLogout:t}={}){e&&(this.handleLogout=e),t&&(this.shouldLogout=t),this.middleware=e=>t=>async s=>{await t(s),s.type===n&&s.error&&this.shouldLogout(s.payload)&&this.handleLogout(e)}}cleanup(){}getMiddleware(){return this.middleware}shouldLogout(e){return 401===e.status}handleLogout(e){e.resetEntireStore()}},e.NetworkManager=class{constructor(e=6e4,t=1e3){this.fetched=Object.create(null),this.resolvers={},this.rejectors={},this.fetchedAt={},this.controller=new A,this.dataExpiryLength=e,this.errorExpiryLength=t,this.middleware=e=>(this.controller=e,t=>s=>{switch(s.type){case i:return this.handleFetch(s),void 0!==s.endpoint.getOptimisticResponse&&s.endpoint.sideEffect?t(s):Promise.resolve();case n:return t(s).then((()=>{if(s.meta.key in this.fetched){var t;const i=null==(t=e.getState().meta[s.meta.key])?void 0:t.error;i?this.handleReceive(O(s.endpoint,{args:s.meta.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleReceive(s)}}));case a:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(s).then((()=>{for(const t in e)e[t](new T)}))}default:return t(s)}})}skipLogging(e){return e.type===i&&e.meta.key in this.fetched}init(){delete this.cleanupDate}cleanup(){this.cleanupDate=Date.now()}allSettled(){const e=Object.values(this.fetched);if(e.length)return Promise.allSettled(e)}clearAll(){for(const e in this.rejectors)this.clear(e)}clear(e){this.fetched[e].catch((()=>{})),delete this.resolvers[e],delete this.rejectors[e],delete this.fetched[e],delete this.fetchedAt[e]}getLastReset(){return this.cleanupDate?this.cleanupDate:this.controller.getState().lastReset}handleFetch(e){const t=e.payload,{key:s,throttle:i,resolve:r,reject:n,createdAt:o}=e.meta,a=()=>{let s=t();return i||(s=(e=>e.then((e=>(r(e),e))).catch((e=>{throw n(e),e})))(s)),s=s.then((t=>{let s=this.getLastReset();return o>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:o}),t})).catch((t=>{const s=this.getLastReset();throw o>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:o,error:!0}),t})),s};return i?this.throttle(s,a,o).then((e=>r(e))).catch((e=>n(e))):a().catch((()=>{}))}handleReceive(e){if(e.meta.key in this.fetched){let t;t=e.error?this.rejectors[e.meta.key]:this.resolvers[e.meta.key],t(e.payload),this.clear(e.meta.key)}}getMiddleware(){return this.middleware}throttle(e,t,i){const r=this.getLastReset();return e in this.fetched&&this.fetchedAt[e]>r||(this.fetched[e]=new Promise(((t,s)=>{this.resolvers[e]=t,this.rejectors[e]=s})),this.fetchedAt[e]=i,s((()=>{t().catch((()=>null))}),{timeout:500})),this.fetched[e]}},e.PollingSubscription=class{constructor(e,t,s){if(this.frequencyHistogram=new Map,this.offlineListener=()=>{this.cleanup(),this.connectionListener.addOnlineListener(this.onlineListener)},this.onlineListener=()=>{this.connectionListener.removeOnlineListener(this.onlineListener);const e=Date.now();this.startId=setTimeout((()=>{this.startId&&(delete this.startId,this.update(),this.run())}),Math.max(0,this.lastFetchTime()-e+this.frequency)),this.connectionListener.addOfflineListener(this.offlineListener)},void 0===e.endpoint.pollFrequency)throw new Error("frequency needed for polling subscription");this.endpoint=e.endpoint,this.frequency=e.endpoint.pollFrequency,this.args=e.meta.args,this.key=e.meta.key,this.frequencyHistogram.set(this.frequency,1),this.controller=t,this.connectionListener=s||new D,this.connectionListener.isOnline()?this.onlineListener():this.offlineListener()}add(e){void 0!==e&&(this.frequencyHistogram.has(e)?this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)+1):(this.frequencyHistogram.set(e,1),e<this.frequency&&(this.frequency=e,this.run())))}remove(e){if(void 0===e)return!1;if(this.frequencyHistogram.has(e)&&(this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)-1),this.frequencyHistogram.get(e)<1)){if(this.frequencyHistogram.delete(e),0===this.frequencyHistogram.size)return this.cleanup(),!0;e<=this.frequency&&(this.frequency=Math.min(...this.frequencyHistogram.keys()),this.run())}return!1}cleanup(){this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId),this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.startId&&(clearTimeout(this.startId),delete this.startId),this.connectionListener.removeOnlineListener(this.onlineListener),this.connectionListener.removeOfflineListener(this.offlineListener)}update(){const e=this.endpoint,t=function(...t){return e.call(this,...t)};Object.assign(t,this.endpoint),t.dataExpiryLength=this.frequency/2,t.errorExpiryLength=this.frequency/10,t.errorPolicy=()=>"soft",t.key=()=>this.key,this.controller.fetch(t,...this.args).catch((()=>null))}run(){this.startId||(this.intervalId&&(this.lastIntervalId=this.intervalId),this.intervalId=setInterval((()=>{this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.intervalId&&this.update()}),this.frequency))}lastFetchTime(){var e,t;return null!=(e=null==(t=this.controller.getState().meta[this.key])?void 0:t.date)?e:0}},e.ResetError=T,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.controller=new A,this.Subscription=e,this.middleware=e=>(this.controller=e,e=>t=>{switch(t.type){case l:try{this.handleSubscribe(t)}catch(e){console.error(e)}return Promise.resolve();case c:return this.handleUnsubscribe(t),Promise.resolve();default:return e(t)}})}cleanup(){for(const e in this.subscriptions)this.subscriptions[e].cleanup()}handleSubscribe(e){const t=e.meta.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].add(s)}else this.subscriptions[t]=new this.Subscription(e,this.controller)}handleUnsubscribe(e){const t=e.meta.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].remove(s)&&delete this.subscriptions[t]}}getMiddleware(){return this.middleware}},e.__INTERNAL__=b,e.actionTypes=f,e.applyManager=function(e,t){return e.map((e=>{const s=e.getMiddleware();return({dispatch:e,getState:i})=>{t.dispatch=e,t.getState=i;const r=Object.create(t,{controller:{value:t}});return s(r)}}))},e.createFetch=L,e.createReceive=O,e.createReducer=v,e.initialState=E,e.newActions=j,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/dist/next.js
CHANGED
|
@@ -13,6 +13,14 @@ const SUBSCRIBE_TYPE = 'rest-hooks/subscribe';
|
|
|
13
13
|
const UNSUBSCRIBE_TYPE = 'rest-hook/unsubscribe';
|
|
14
14
|
const INVALIDATE_TYPE = 'rest-hooks/invalidate';
|
|
15
15
|
const INVALIDATEALL_TYPE = 'rest-hooks/invalidateall';
|
|
16
|
+
const EXPIREALL_TYPE = 'rest-hooks/expireall';
|
|
17
|
+
|
|
18
|
+
function createExpireAll(testKey) {
|
|
19
|
+
return {
|
|
20
|
+
type: EXPIREALL_TYPE,
|
|
21
|
+
testKey
|
|
22
|
+
};
|
|
23
|
+
}
|
|
16
24
|
|
|
17
25
|
/**
|
|
18
26
|
* Requesting a fetch to begin
|
|
@@ -199,8 +207,15 @@ class Controller {
|
|
|
199
207
|
/**
|
|
200
208
|
* Forces refetching and suspense on useSuspense on all matching endpoint result keys.
|
|
201
209
|
* @see https://resthooks.io/docs/api/Controller#invalidateAll
|
|
210
|
+
* @returns Promise that resolves when invalidation is commited.
|
|
202
211
|
*/
|
|
203
212
|
this.invalidateAll = options => this.dispatch(createInvalidateAll(key => options.testKey(key)));
|
|
213
|
+
/**
|
|
214
|
+
* Sets all matching endpoint result keys to be STALE.
|
|
215
|
+
* @see https://dataclient.io/docs/api/Controller#expireAll
|
|
216
|
+
* @returns Promise that resolves when expiry is commited. *NOT* fetch promise
|
|
217
|
+
*/
|
|
218
|
+
this.expireAll = options => this.dispatch(createExpireAll(key => options.testKey(key)));
|
|
204
219
|
/**
|
|
205
220
|
* Resets the entire Rest Hooks cache. All inflight requests will not resolve.
|
|
206
221
|
* @see https://resthooks.io/docs/api/Controller#resetEntireStore
|
package/legacy/actionTypes.js
CHANGED
|
@@ -8,5 +8,6 @@ export const SUBSCRIBE_TYPE = 'rest-hooks/subscribe';
|
|
|
8
8
|
export const UNSUBSCRIBE_TYPE = 'rest-hook/unsubscribe';
|
|
9
9
|
export const INVALIDATE_TYPE = 'rest-hooks/invalidate';
|
|
10
10
|
export const INVALIDATEALL_TYPE = 'rest-hooks/invalidateall';
|
|
11
|
+
export const EXPIREALL_TYPE = 'rest-hooks/expireall';
|
|
11
12
|
export const GC_TYPE = 'rest-hooks/gc';
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiUkVDRUlWRV9UWVBFIiwiU0VUX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJSRVNFVF9UWVBFIiwiU1VCU0NSSUJFX1RZUEUiLCJVTlNVQlNDUklCRV9UWVBFIiwiSU5WQUxJREFURV9UWVBFIiwiSU5WQUxJREFURUFMTF9UWVBFIiwiRVhQSVJFQUxMX1RZUEUiLCJHQ19UWVBFIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvblR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGRVRDSF9UWVBFID0gJ3Jlc3QtaG9va3MvZmV0Y2gnIGFzIGNvbnN0O1xuLyoqIEBkZXByZWNhdGVkIHVzZSBTRVRfVFlQRSBpbnN0ZWFkICovXG5leHBvcnQgY29uc3QgUkVDRUlWRV9UWVBFID0gJ3Jlc3QtaG9va3MvcmVjZWl2ZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU0VUX1RZUEUgPSBSRUNFSVZFX1RZUEU7XG5leHBvcnQgY29uc3QgT1BUSU1JU1RJQ19UWVBFID0gJ3Jlc3QtaG9va3Mvb3B0aW1pc3RpYycgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUkVTRVRfVFlQRSA9ICdyZXN0LWhvb2tzL3Jlc2V0JyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBTVUJTQ1JJQkVfVFlQRSA9ICdyZXN0LWhvb2tzL3N1YnNjcmliZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgVU5TVUJTQ1JJQkVfVFlQRSA9ICdyZXN0LWhvb2svdW5zdWJzY3JpYmUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IElOVkFMSURBVEVfVFlQRSA9ICdyZXN0LWhvb2tzL2ludmFsaWRhdGUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IElOVkFMSURBVEVBTExfVFlQRSA9ICdyZXN0LWhvb2tzL2ludmFsaWRhdGVhbGwnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IEVYUElSRUFMTF9UWVBFID0gJ3Jlc3QtaG9va3MvZXhwaXJlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBHQ19UWVBFID0gJ3Jlc3QtaG9va3MvZ2MnIGFzIGNvbnN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLFVBQVUsR0FBRyxrQkFBMkI7QUFDckQ7QUFDQSxPQUFPLE1BQU1DLFlBQVksR0FBRyxvQkFBNkI7QUFDekQsT0FBTyxNQUFNQyxRQUFRLEdBQUdELFlBQVk7QUFDcEMsT0FBTyxNQUFNRSxlQUFlLEdBQUcsdUJBQWdDO0FBQy9ELE9BQU8sTUFBTUMsVUFBVSxHQUFHLGtCQUEyQjtBQUNyRCxPQUFPLE1BQU1DLGNBQWMsR0FBRyxzQkFBK0I7QUFDN0QsT0FBTyxNQUFNQyxnQkFBZ0IsR0FBRyx1QkFBZ0M7QUFDaEUsT0FBTyxNQUFNQyxlQUFlLEdBQUcsdUJBQWdDO0FBQy9ELE9BQU8sTUFBTUMsa0JBQWtCLEdBQUcsMEJBQW1DO0FBQ3JFLE9BQU8sTUFBTUMsY0FBYyxHQUFHLHNCQUErQjtBQUM3RCxPQUFPLE1BQU1DLE9BQU8sR0FBRyxlQUF3QiJ9
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WeakEntityMap, ExpiryStatus, denormalizeCached, isEntity, denormalize } from '@data-client/normalizr';
|
|
2
2
|
import { inferResults, validateInference } from '@data-client/normalizr';
|
|
3
|
+
import createExpireAll from './createExpireAll.js';
|
|
3
4
|
import createFetch from './createFetch.js';
|
|
4
5
|
import createInvalidate from './createInvalidate.js';
|
|
5
6
|
import createInvalidateAll from './createInvalidateAll.js';
|
|
@@ -69,8 +70,15 @@ export default class Controller {
|
|
|
69
70
|
/**
|
|
70
71
|
* Forces refetching and suspense on useSuspense on all matching endpoint result keys.
|
|
71
72
|
* @see https://resthooks.io/docs/api/Controller#invalidateAll
|
|
73
|
+
* @returns Promise that resolves when invalidation is commited.
|
|
72
74
|
*/
|
|
73
75
|
this.invalidateAll = options => this.dispatch(createInvalidateAll(key => options.testKey(key)));
|
|
76
|
+
/**
|
|
77
|
+
* Sets all matching endpoint result keys to be STALE.
|
|
78
|
+
* @see https://dataclient.io/docs/api/Controller#expireAll
|
|
79
|
+
* @returns Promise that resolves when expiry is commited. *NOT* fetch promise
|
|
80
|
+
*/
|
|
81
|
+
this.expireAll = options => this.dispatch(createExpireAll(key => options.testKey(key)));
|
|
74
82
|
/**
|
|
75
83
|
* Resets the entire Rest Hooks cache. All inflight requests will not resolve.
|
|
76
84
|
* @see https://resthooks.io/docs/api/Controller#resetEntireStore
|
|
@@ -287,4 +295,4 @@ class Snapshot {
|
|
|
287
295
|
this.fetchedAt = fetchedAt;
|
|
288
296
|
}
|
|
289
297
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWFrRW50aXR5TWFwIiwiRXhwaXJ5U3RhdHVzIiwiZGVub3JtYWxpemVDYWNoZWQiLCJpc0VudGl0eSIsImRlbm9ybWFsaXplIiwiaW5mZXJSZXN1bHRzIiwidmFsaWRhdGVJbmZlcmVuY2UiLCJjcmVhdGVGZXRjaCIsImNyZWF0ZUludmFsaWRhdGUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwiY3JlYXRlUmVzZXQiLCJjcmVhdGVTZXQiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImluaXRpYWxTdGF0ZSIsInNlbGVjdE1ldGEiLCJ1bnNldERpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJ1bnNldFN0YXRlIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImdsb2JhbENhY2hlIiwiZW50aXRpZXMiLCJyZXN1bHRzIiwiZmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJzY2hlbWEiLCJtZXRhIiwicHJvbWlzZSIsInRoZW4iLCJpbnB1dCIsImludmFsaWRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImludmFsaWRhdGVBbGwiLCJvcHRpb25zIiwia2V5IiwidGVzdEtleSIsInJlc2V0RW50aXJlU3RvcmUiLCJzZXRSZXNwb25zZSIsInJlc3QiLCJyZXNwb25zZSIsImxlbmd0aCIsInNsaWNlIiwicmVjZWl2ZSIsInNldEVycm9yIiwiZXJyb3IiLCJyZWNlaXZlRXJyb3IiLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsInNuYXBzaG90Iiwic3RhdGUiLCJmZXRjaGVkQXQiLCJTbmFwc2hvdCIsImdldEVycm9yIiwidW5kZWZpbmVkIiwiZXJyb3JQb2xpY3kiLCJnZXRSZXNwb25zZSIsImlzQWN0aXZlIiwiY2FjaGVSZXN1bHRzIiwiZXhwaXJlc0F0IiwiaW52YWxpZFJlc3VsdHMiLCJpbmRleGVzIiwiZGF0YSIsImV4cGlyeVN0YXR1cyIsIlZhbGlkIiwiSW5maW5pdHkiLCJzY2hlbWFIYXNFbnRpdHkiLCJpbnZhbGlkYXRlZCIsIkludmFsaWQiLCJpbnZhbGlkSWZTdGFsZSIsIkludmFsaWRJZlN0YWxlIiwicGF0aHMiLCJpbnZhbGlkRGVub3JtYWxpemUiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdHlNZXRhIiwicGsiLCJfZW50aXR5TWV0YSRrZXkiLCJfZW50aXR5TWV0YSRrZXkkcGsiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJuZXN0ZWRTY2hlbWEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwieCIsImNvbnRyb2xsZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRXJyb3JUeXBlcyxcbiAgU25hcHNob3RJbnRlcmZhY2UsXG4gIERlbm9ybWFsaXplQ2FjaGUsXG4gIFNjaGVtYSxcbiAgRGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHtcbiAgV2Vha0VudGl0eU1hcCxcbiAgRXhwaXJ5U3RhdHVzLFxuICBFbmRwb2ludEludGVyZmFjZSxcbiAgRmV0Y2hGdW5jdGlvbixcbiAgUmVzb2x2ZVR5cGUsXG4gIERlbm9ybWFsaXplTnVsbGFibGUsXG4gIFBhdGgsXG4gIGRlbm9ybWFsaXplQ2FjaGVkLFxuICBpc0VudGl0eSxcbiAgZGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHsgaW5mZXJSZXN1bHRzLCB2YWxpZGF0ZUluZmVyZW5jZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgY3JlYXRlRmV0Y2ggZnJvbSAnLi9jcmVhdGVGZXRjaC5qcyc7XG5pbXBvcnQgY3JlYXRlSW52YWxpZGF0ZSBmcm9tICcuL2NyZWF0ZUludmFsaWRhdGUuanMnO1xuaW1wb3J0IGNyZWF0ZUludmFsaWRhdGVBbGwgZnJvbSAnLi9jcmVhdGVJbnZhbGlkYXRlQWxsLmpzJztcbmltcG9ydCBjcmVhdGVSZXNldCBmcm9tICcuL2NyZWF0ZVJlc2V0LmpzJztcbmltcG9ydCBjcmVhdGVTZXQgZnJvbSAnLi9jcmVhdGVTZXQuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVW5zdWJzY3JpcHRpb24sXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbixcbn0gZnJvbSAnLi9jcmVhdGVTdWJzY3JpcHRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBpbml0aWFsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHNlbGVjdE1ldGEgZnJvbSAnLi4vc3RhdGUvc2VsZWN0TWV0YS5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgR2VuZXJpY0Rpc3BhdGNoID0gKHZhbHVlOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG5leHBvcnQgdHlwZSBEYXRhQ2xpZW50RGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5pbnRlcmZhY2UgQ29uc3RydWN0b3JQcm9wczxEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gRGF0YUNsaWVudERpc3BhdGNoPiB7XG4gIGRpc3BhdGNoPzogRDtcbiAgZ2V0U3RhdGU/OiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgZ2xvYmFsQ2FjaGU/OiBEZW5vcm1hbGl6ZUNhY2hlO1xufVxuXG5jb25zdCB1bnNldERpc3BhdGNoID0gKGFjdGlvbjogdW5rbm93bik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYERpc3BhdGNoaW5nIHdoaWxlIGNvbnN0cnVjdGluZyB5b3VyIG1pZGRsZXdhcmUgaXMgbm90IGFsbG93ZWQuIGAgK1xuICAgICAgYE90aGVyIG1pZGRsZXdhcmUgd291bGQgbm90IGJlIGFwcGxpZWQgdG8gdGhpcyBkaXNwYXRjaC5gLFxuICApO1xufTtcbmNvbnN0IHVuc2V0U3RhdGUgPSAoKTogU3RhdGU8dW5rbm93bj4gPT4ge1xuICAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgQ2FjaGVQcm92aWRlclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gaW5pdGlhbFN0YXRlO1xufTtcblxuLyoqXG4gKiBJbXBlcmF0aXZlIGNvbnRyb2wgb2YgUmVzdCBIb29rcyBzdG9yZVxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRyb2xsZXI8XG4gIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4+IHtcbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIFJlc3QgSG9va3MgcmVkdWNlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2Rpc3BhdGNoXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IGRpc3BhdGNoOiBEO1xuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IHN0YXRlIHNuYXBzaG90IHRoYXQgaXMgZnVsbHkgY29tbWl0dGVkLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGltcGVyYXRpdmUgdXNlLWNhc2VzIGxpa2UgZXZlbnQgaGFuZGxlcnMuXG4gICAqIFRoaXMgc2hvdWxkICpub3QqIGJlIHVzZWQgdG8gcmVuZGVyOyBpbnN0ZWFkIHVzZVN1c3BlbnNlKCkgb3IgdXNlQ2FjaGUoKVxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0U3RhdGVcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgZ2V0U3RhdGU6ICgpID0+IFN0YXRlPHVua25vd24+O1xuICBkZWNsYXJlIHJlYWRvbmx5IGdsb2JhbENhY2hlOiBEZW5vcm1hbGl6ZUNhY2hlO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBkaXNwYXRjaCA9IHVuc2V0RGlzcGF0Y2ggYXMgYW55LFxuICAgIGdldFN0YXRlID0gdW5zZXRTdGF0ZSxcbiAgICBnbG9iYWxDYWNoZSA9IHtcbiAgICAgIGVudGl0aWVzOiB7fSxcbiAgICAgIHJlc3VsdHM6IHt9LFxuICAgIH0sXG4gIH06IENvbnN0cnVjdG9yUHJvcHM8RD4gPSB7fSkge1xuICAgIHRoaXMuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgdGhpcy5nbG9iYWxDYWNoZSA9IGdsb2JhbENhY2hlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKiBBY3Rpb24gRGlzcGF0Y2hlcnMgKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBlbmRwb2ludCB3aXRoIGdpdmVuIGFyZ3MsIHVwZGF0aW5nIHRoZSBSZXN0IEhvb2tzIGNhY2hlIHdpdGggdGhlIHJlc3BvbnNlIG9yIGVycm9yIHVwb24gY29tcGxldGlvbi5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ZldGNoXG4gICAqL1xuICBmZXRjaCA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsXG4gICAgPyBSZXR1cm5UeXBlPEU+XG4gICAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZUZldGNoKGVuZHBvaW50LCB7XG4gICAgICBhcmdzLFxuICAgIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcblxuICAgIGlmIChlbmRwb2ludC5zY2hlbWEpIHtcbiAgICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlLnRoZW4oaW5wdXQgPT5cbiAgICAgICAgZGVub3JtYWxpemUoaW5wdXQsIGVuZHBvaW50LnNjaGVtYSwge30sIGFyZ3MpLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlXG4gICAqL1xuICBpbnZhbGlkYXRlID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgICAgYXJnczogYXJncyBhcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSBvbiBhbGwgbWF0Y2hpbmcgZW5kcG9pbnQgcmVzdWx0IGtleXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqL1xuICBpbnZhbGlkYXRlQWxsID0gKG9wdGlvbnM6IHsgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaChjcmVhdGVJbnZhbGlkYXRlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVzdCBIb29rcyBjYWNoZS4gQWxsIGluZmxpZ2h0IHJlcXVlc3RzIHdpbGwgbm90IHJlc29sdmUuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU3RvcmVzIHJlc3BvbnNlIGluIGNhY2hlIGZvciBnaXZlbiBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0UmVzcG9uc2UgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPiA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVTZXQoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2UgaW5zdGVhZFxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gcmVjZWl2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRSZXNwb25zZShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgcmVzdWx0IG9mIEVuZHBvaW50IGFuZCBhcmdzIGFzIHRoZSBlcnJvciBwcm92aWRlZC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0KGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3I6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQW5vdGhlciBuYW1lIGZvciBzZXRFcnJvclxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvciBpbnN0ZWFkXG4gICAqL1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyByZWNlaXZlRXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRFcnJvcihlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGluZmxpZ2h0IGZldGNoLiBgZmV0Y2hlZEF0YCBzaG91bGQgYGZldGNoYCdzIGBjcmVhdGVkQXRgXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNvbHZlXG4gICAqL1xuICByZXNvbHZlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICBtZXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcjogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBhbnk7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I/OiBmYWxzZTtcbiAgICAgICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY3JlYXRlU2V0KGVuZHBvaW50LCBtZXRhIGFzIGFueSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXJrcyBhIG5ldyBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3N1YnNjcmliZVxuICAgKi9cbiAgc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlU3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogTWFya3MgY29tcGxldGlvbiBvZiBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Vuc3Vic2NyaWJlXG4gICAqL1xuICB1bnN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLmRpc3BhdGNoKFxuICAgICAgICAgIGNyZWF0ZVVuc3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKioqKioqKioqKioqKioqIE1vcmUgKioqKioqKioqKioqKioqL1xuXG4gIC8qIFRPRE86XG4gIGFib3J0ID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IFByb21pc2U8dm9pZD5cbiAgKi9cblxuICAvKipcbiAgICogR2V0cyBhIHNuYXBzaG90IChodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdClcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NuYXBzaG90XG4gICAqL1xuICBzbmFwc2hvdCA9IChzdGF0ZTogU3RhdGU8dW5rbm93bj4sIGZldGNoZWRBdD86IG51bWJlcik6IFNuYXBzaG90SW50ZXJmYWNlID0+IHtcbiAgICByZXR1cm4gbmV3IFNuYXBzaG90KHRoaXMsIHN0YXRlLCBmZXRjaGVkQXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlcnJvciwgaWYgYW55LCBmb3IgYSBnaXZlbiBlbmRwb2ludC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIG5vIGVycm9ycy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldEVycm9yXG4gICAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHJlc3RbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3Qga2V5ID0gZW5kcG9pbnQua2V5KC4uLmFyZ3MpO1xuXG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IHN0YXRlLnJlc3VsdHNba2V5XTtcblxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQgJiYgbWV0YT8uZXJyb3JQb2xpY3kgPT09ICdzb2Z0JykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIG1ldGE/LmVycm9yIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFJlc3BvbnNlXG4gICAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3QgaXNBY3RpdmUgPSBhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdICE9PSBudWxsO1xuICAgIGNvbnN0IGtleSA9IGlzQWN0aXZlID8gZW5kcG9pbnQua2V5KC4uLmFyZ3MpIDogJyc7XG4gICAgY29uc3QgY2FjaGVSZXN1bHRzID0gaXNBY3RpdmUgPyBzdGF0ZS5yZXN1bHRzW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2NoZW1hID0gZW5kcG9pbnQuc2NoZW1hO1xuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGxldCBleHBpcmVzQXQgPSBtZXRhPy5leHBpcmVzQXQ7XG5cbiAgICBsZXQgaW52YWxpZFJlc3VsdHMgPSBmYWxzZTtcbiAgICBsZXQgcmVzdWx0cztcbiAgICBpZiAoY2FjaGVSZXN1bHRzID09PSB1bmRlZmluZWQgJiYgZW5kcG9pbnQuc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdHMgPSBpbmZlclJlc3VsdHMoXG4gICAgICAgIGVuZHBvaW50LnNjaGVtYSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgc3RhdGUuaW5kZXhlcyxcbiAgICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICApO1xuICAgICAgaW52YWxpZFJlc3VsdHMgPSAhdmFsaWRhdGVJbmZlcmVuY2UocmVzdWx0cyk7XG4gICAgICBpZiAoIWV4cGlyZXNBdCAmJiBpbnZhbGlkUmVzdWx0cykgZXhwaXJlc0F0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0cyA9IGNhY2hlUmVzdWx0cztcbiAgICB9XG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiByZXN1bHRzIGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghZW5kcG9pbnQuc2NoZW1hIHx8ICFzY2hlbWFIYXNFbnRpdHkoZW5kcG9pbnQuc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzdWx0cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBtZXRhPy5pbnZhbGlkYXRlZFxuICAgICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgICA6IGNhY2hlUmVzdWx0cyAmJiAhZW5kcG9pbnQuaW52YWxpZElmU3RhbGVcbiAgICAgICAgICA/IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICAgICAgIDogRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgfSBhcyB7XG4gICAgICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICAgICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nbG9iYWxDYWNoZS5yZXN1bHRzW2tleV0pXG4gICAgICB0aGlzLmdsb2JhbENhY2hlLnJlc3VsdHNba2V5XSA9IG5ldyBXZWFrRW50aXR5TWFwKCk7XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IGRlbm9ybWFsaXplQ2FjaGVkKFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgdGhpcy5nbG9iYWxDYWNoZS5lbnRpdGllcyxcbiAgICAgIHRoaXMuZ2xvYmFsQ2FjaGUucmVzdWx0c1trZXldLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47IHBhdGhzOiBQYXRoW10gfTtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBzdGF0ZS5lbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICBjb25zdCBleHBpcnlTdGF0dXMgPVxuICAgICAgbWV0YT8uaW52YWxpZGF0ZWQgfHwgKGludmFsaWREZW5vcm1hbGl6ZSAmJiAhbWV0YT8uZXJyb3IpXG4gICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgOiBpbnZhbGlkRGVub3JtYWxpemUgfHwgZW5kcG9pbnQuaW52YWxpZElmU3RhbGUgfHwgaW52YWxpZFJlc3VsdHNcbiAgICAgICAgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9O1xufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IFBhdGhbXSxcbiAgZW50aXR5TWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjsgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgICAgIH07XG4gICAgfTtcbiAgfSxcbikge1xuICBsZXQgZXhwaXJlc0F0ID0gSW5maW5pdHk7XG4gIGZvciAoY29uc3QgeyBwaywga2V5IH0gb2YgcGF0aHMpIHtcbiAgICBjb25zdCBlbnRpdHlFeHBpcnkgPSBlbnRpdHlNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBhbnkgZW50aXRpZXMuXG4gKlxuICogV2l0aG91dCBlbnRpdGllcywgZGVub3JtYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQsIGFuZCByZXN1bHRzIHNob3VsZCBub3QgYmUgaW5mZXJyZWQuXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUhhc0VudGl0eShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoaXNFbnRpdHkoc2NoZW1hKSkgcmV0dXJuIHRydWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgc2NoZW1hSGFzRW50aXR5KHNjaGVtYVswXSk7XG4gIGlmIChzY2hlbWEgJiYgKHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgY29uc3QgbmVzdGVkU2NoZW1hID1cbiAgICAgICdzY2hlbWEnIGluIHNjaGVtYSA/IChzY2hlbWEuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIFNjaGVtYT4pIDogc2NoZW1hO1xuICAgIGlmICh0eXBlb2YgbmVzdGVkU2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc2NoZW1hSGFzRW50aXR5KG5lc3RlZFNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5lc3RlZFNjaGVtYSkuc29tZSh4ID0+IHNjaGVtYUhhc0VudGl0eSh4KSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBwcml2YXRlIHN0YXRlOiBTdGF0ZTxUPjtcbiAgcHJpdmF0ZSBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyOiBDb250cm9sbGVyLCBzdGF0ZTogU3RhdGU8VD4sIGZldGNoZWRBdCA9IDApIHtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB0aGlzLmZldGNoZWRBdCA9IGZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogRGF0YSBBY2Nlc3MgKioqKioqKioqKioqKioqL1xuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQU9BLFNBQ0VBLGFBQWEsRUFDYkMsWUFBWSxFQU1aQyxpQkFBaUIsRUFDakJDLFFBQVEsRUFDUkMsV0FBVyxRQUNOLHdCQUF3QjtBQUMvQixTQUFTQyxZQUFZLEVBQUVDLGlC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
|
|
298
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWFrRW50aXR5TWFwIiwiRXhwaXJ5U3RhdHVzIiwiZGVub3JtYWxpemVDYWNoZWQiLCJpc0VudGl0eSIsImRlbm9ybWFsaXplIiwiaW5mZXJSZXN1bHRzIiwidmFsaWRhdGVJbmZlcmVuY2UiLCJjcmVhdGVFeHBpcmVBbGwiLCJjcmVhdGVGZXRjaCIsImNyZWF0ZUludmFsaWRhdGUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwiY3JlYXRlUmVzZXQiLCJjcmVhdGVTZXQiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImluaXRpYWxTdGF0ZSIsInNlbGVjdE1ldGEiLCJ1bnNldERpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJ1bnNldFN0YXRlIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImdsb2JhbENhY2hlIiwiZW50aXRpZXMiLCJyZXN1bHRzIiwiZmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJzY2hlbWEiLCJtZXRhIiwicHJvbWlzZSIsInRoZW4iLCJpbnB1dCIsImludmFsaWRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImludmFsaWRhdGVBbGwiLCJvcHRpb25zIiwia2V5IiwidGVzdEtleSIsImV4cGlyZUFsbCIsInJlc2V0RW50aXJlU3RvcmUiLCJzZXRSZXNwb25zZSIsInJlc3QiLCJyZXNwb25zZSIsImxlbmd0aCIsInNsaWNlIiwicmVjZWl2ZSIsInNldEVycm9yIiwiZXJyb3IiLCJyZWNlaXZlRXJyb3IiLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsInNuYXBzaG90Iiwic3RhdGUiLCJmZXRjaGVkQXQiLCJTbmFwc2hvdCIsImdldEVycm9yIiwidW5kZWZpbmVkIiwiZXJyb3JQb2xpY3kiLCJnZXRSZXNwb25zZSIsImlzQWN0aXZlIiwiY2FjaGVSZXN1bHRzIiwiZXhwaXJlc0F0IiwiaW52YWxpZFJlc3VsdHMiLCJpbmRleGVzIiwiZGF0YSIsImV4cGlyeVN0YXR1cyIsIlZhbGlkIiwiSW5maW5pdHkiLCJzY2hlbWFIYXNFbnRpdHkiLCJpbnZhbGlkYXRlZCIsIkludmFsaWQiLCJpbnZhbGlkSWZTdGFsZSIsIkludmFsaWRJZlN0YWxlIiwicGF0aHMiLCJpbnZhbGlkRGVub3JtYWxpemUiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdHlNZXRhIiwicGsiLCJfZW50aXR5TWV0YSRrZXkiLCJfZW50aXR5TWV0YSRrZXkkcGsiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJuZXN0ZWRTY2hlbWEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwieCIsImNvbnRyb2xsZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRXJyb3JUeXBlcyxcbiAgU25hcHNob3RJbnRlcmZhY2UsXG4gIERlbm9ybWFsaXplQ2FjaGUsXG4gIFNjaGVtYSxcbiAgRGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHtcbiAgV2Vha0VudGl0eU1hcCxcbiAgRXhwaXJ5U3RhdHVzLFxuICBFbmRwb2ludEludGVyZmFjZSxcbiAgRmV0Y2hGdW5jdGlvbixcbiAgUmVzb2x2ZVR5cGUsXG4gIERlbm9ybWFsaXplTnVsbGFibGUsXG4gIFBhdGgsXG4gIGRlbm9ybWFsaXplQ2FjaGVkLFxuICBpc0VudGl0eSxcbiAgZGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHsgaW5mZXJSZXN1bHRzLCB2YWxpZGF0ZUluZmVyZW5jZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgY3JlYXRlRXhwaXJlQWxsIGZyb20gJy4vY3JlYXRlRXhwaXJlQWxsLmpzJztcbmltcG9ydCBjcmVhdGVGZXRjaCBmcm9tICcuL2NyZWF0ZUZldGNoLmpzJztcbmltcG9ydCBjcmVhdGVJbnZhbGlkYXRlIGZyb20gJy4vY3JlYXRlSW52YWxpZGF0ZS5qcyc7XG5pbXBvcnQgY3JlYXRlSW52YWxpZGF0ZUFsbCBmcm9tICcuL2NyZWF0ZUludmFsaWRhdGVBbGwuanMnO1xuaW1wb3J0IGNyZWF0ZVJlc2V0IGZyb20gJy4vY3JlYXRlUmVzZXQuanMnO1xuaW1wb3J0IGNyZWF0ZVNldCBmcm9tICcuL2NyZWF0ZVNldC5qcyc7XG5pbXBvcnQge1xuICBjcmVhdGVVbnN1YnNjcmlwdGlvbixcbiAgY3JlYXRlU3Vic2NyaXB0aW9uLFxufSBmcm9tICcuL2NyZWF0ZVN1YnNjcmlwdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgc2VsZWN0TWV0YSBmcm9tICcuLi9zdGF0ZS9zZWxlY3RNZXRhLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZXMsIFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmljRGlzcGF0Y2ggPSAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIERhdGFDbGllbnREaXNwYXRjaCA9ICh2YWx1ZTogQWN0aW9uVHlwZXMpID0+IFByb21pc2U8dm9pZD47XG5cbmludGVyZmFjZSBDb25zdHJ1Y3RvclByb3BzPEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2g+IHtcbiAgZGlzcGF0Y2g/OiBEO1xuICBnZXRTdGF0ZT86ICgpID0+IFN0YXRlPHVua25vd24+O1xuICBnbG9iYWxDYWNoZT86IERlbm9ybWFsaXplQ2FjaGU7XG59XG5cbmNvbnN0IHVuc2V0RGlzcGF0Y2ggPSAoYWN0aW9uOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gYCArXG4gICAgICBgT3RoZXIgbWlkZGxld2FyZSB3b3VsZCBub3QgYmUgYXBwbGllZCB0byB0aGlzIGRpc3BhdGNoLmAsXG4gICk7XG59O1xuY29uc3QgdW5zZXRTdGF0ZSA9ICgpOiBTdGF0ZTx1bmtub3duPiA9PiB7XG4gIC8vIFRoaXMgaXMgb25seSB0aGUgdmFsdWUgdW50aWwgaXQgaXMgc2V0IGJ5IHRoZSBDYWNoZVByb3ZpZGVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuXG4vKipcbiAqIEltcGVyYXRpdmUgY29udHJvbCBvZiBSZXN0IEhvb2tzIHN0b3JlXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udHJvbGxlcjxcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gUmVzdCBIb29rcyByZWR1Y2VyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZGlzcGF0Y2hcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgZGlzcGF0Y2g6IEQ7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsYXRlc3Qgc3RhdGUgc25hcHNob3QgdGhhdCBpcyBmdWxseSBjb21taXR0ZWQuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgaW1wZXJhdGl2ZSB1c2UtY2FzZXMgbGlrZSBldmVudCBoYW5kbGVycy5cbiAgICogVGhpcyBzaG91bGQgKm5vdCogYmUgdXNlZCB0byByZW5kZXI7IGluc3RlYWQgdXNlU3VzcGVuc2UoKSBvciB1c2VDYWNoZSgpXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRTdGF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIGRlY2xhcmUgcmVhZG9ubHkgZ2xvYmFsQ2FjaGU6IERlbm9ybWFsaXplQ2FjaGU7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGRpc3BhdGNoID0gdW5zZXREaXNwYXRjaCBhcyBhbnksXG4gICAgZ2V0U3RhdGUgPSB1bnNldFN0YXRlLFxuICAgIGdsb2JhbENhY2hlID0ge1xuICAgICAgZW50aXRpZXM6IHt9LFxuICAgICAgcmVzdWx0czoge30sXG4gICAgfSxcbiAgfTogQ29uc3RydWN0b3JQcm9wczxEPiA9IHt9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgICB0aGlzLmdsb2JhbENhY2hlID0gZ2xvYmFsQ2FjaGU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIEFjdGlvbiBEaXNwYXRjaGVycyAqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlc3QgSG9va3MgY2FjaGUgd2l0aCB0aGUgcmVzcG9uc2Ugb3IgZXJyb3IgdXBvbiBjb21wbGV0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hcbiAgICovXG4gIGZldGNoID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBFWydzY2hlbWEnXSBleHRlbmRzIHVuZGVmaW5lZCB8IG51bGxcbiAgICA/IFJldHVyblR5cGU8RT5cbiAgICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlRmV0Y2goZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3MsXG4gICAgfSk7XG4gICAgdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuXG4gICAgaWYgKGVuZHBvaW50LnNjaGVtYSkge1xuICAgICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UudGhlbihpbnB1dCA9PlxuICAgICAgICBkZW5vcm1hbGl6ZShpbnB1dCwgZW5kcG9pbnQuc2NoZW1hLCB7fSwgYXJncyksXG4gICAgICApIGFzIGFueTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UgYXMgYW55O1xuICB9O1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgcmVmZXRjaGluZyBhbmQgc3VzcGVuc2Ugb24gdXNlU3VzcGVuc2Ugd2l0aCB0aGUgc2FtZSBFbmRwb2ludCBhbmQgcGFyYW1ldGVycy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVcbiAgICovXG4gIGludmFsaWRhdGUgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGxcbiAgICAgID8gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICBjcmVhdGVJbnZhbGlkYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIG9uIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaW52YWxpZGF0aW9uIGlzIGNvbW1pdGVkLlxuICAgKi9cbiAgaW52YWxpZGF0ZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlSW52YWxpZGF0ZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFNldHMgYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzIHRvIGJlIFNUQUxFLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2V4cGlyZUFsbFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBpcnkgaXMgY29tbWl0ZWQuICpOT1QqIGZldGNoIHByb21pc2VcbiAgICovXG4gIGV4cGlyZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlRXhwaXJlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVzdCBIb29rcyBjYWNoZS4gQWxsIGluZmxpZ2h0IHJlcXVlc3RzIHdpbGwgbm90IHJlc29sdmUuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU3RvcmVzIHJlc3BvbnNlIGluIGNhY2hlIGZvciBnaXZlbiBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0UmVzcG9uc2UgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPiA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVTZXQoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2UgaW5zdGVhZFxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gcmVjZWl2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRSZXNwb25zZShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgcmVzdWx0IG9mIEVuZHBvaW50IGFuZCBhcmdzIGFzIHRoZSBlcnJvciBwcm92aWRlZC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0KGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3I6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQW5vdGhlciBuYW1lIGZvciBzZXRFcnJvclxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvciBpbnN0ZWFkXG4gICAqL1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyByZWNlaXZlRXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRFcnJvcihlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGluZmxpZ2h0IGZldGNoLiBgZmV0Y2hlZEF0YCBzaG91bGQgYGZldGNoYCdzIGBjcmVhdGVkQXRgXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNvbHZlXG4gICAqL1xuICByZXNvbHZlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICBtZXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcjogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBhbnk7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I/OiBmYWxzZTtcbiAgICAgICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY3JlYXRlU2V0KGVuZHBvaW50LCBtZXRhIGFzIGFueSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXJrcyBhIG5ldyBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3N1YnNjcmliZVxuICAgKi9cbiAgc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlU3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogTWFya3MgY29tcGxldGlvbiBvZiBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Vuc3Vic2NyaWJlXG4gICAqL1xuICB1bnN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLmRpc3BhdGNoKFxuICAgICAgICAgIGNyZWF0ZVVuc3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKioqKioqKioqKioqKioqIE1vcmUgKioqKioqKioqKioqKioqL1xuXG4gIC8qIFRPRE86XG4gIGFib3J0ID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IFByb21pc2U8dm9pZD5cbiAgKi9cblxuICAvKipcbiAgICogR2V0cyBhIHNuYXBzaG90IChodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdClcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NuYXBzaG90XG4gICAqL1xuICBzbmFwc2hvdCA9IChzdGF0ZTogU3RhdGU8dW5rbm93bj4sIGZldGNoZWRBdD86IG51bWJlcik6IFNuYXBzaG90SW50ZXJmYWNlID0+IHtcbiAgICByZXR1cm4gbmV3IFNuYXBzaG90KHRoaXMsIHN0YXRlLCBmZXRjaGVkQXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlcnJvciwgaWYgYW55LCBmb3IgYSBnaXZlbiBlbmRwb2ludC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIG5vIGVycm9ycy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldEVycm9yXG4gICAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHJlc3RbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3Qga2V5ID0gZW5kcG9pbnQua2V5KC4uLmFyZ3MpO1xuXG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IHN0YXRlLnJlc3VsdHNba2V5XTtcblxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQgJiYgbWV0YT8uZXJyb3JQb2xpY3kgPT09ICdzb2Z0JykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIG1ldGE/LmVycm9yIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFJlc3BvbnNlXG4gICAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3QgaXNBY3RpdmUgPSBhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdICE9PSBudWxsO1xuICAgIGNvbnN0IGtleSA9IGlzQWN0aXZlID8gZW5kcG9pbnQua2V5KC4uLmFyZ3MpIDogJyc7XG4gICAgY29uc3QgY2FjaGVSZXN1bHRzID0gaXNBY3RpdmUgPyBzdGF0ZS5yZXN1bHRzW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2NoZW1hID0gZW5kcG9pbnQuc2NoZW1hO1xuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGxldCBleHBpcmVzQXQgPSBtZXRhPy5leHBpcmVzQXQ7XG5cbiAgICBsZXQgaW52YWxpZFJlc3VsdHMgPSBmYWxzZTtcbiAgICBsZXQgcmVzdWx0cztcbiAgICBpZiAoY2FjaGVSZXN1bHRzID09PSB1bmRlZmluZWQgJiYgZW5kcG9pbnQuc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdHMgPSBpbmZlclJlc3VsdHMoXG4gICAgICAgIGVuZHBvaW50LnNjaGVtYSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgc3RhdGUuaW5kZXhlcyxcbiAgICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICApO1xuICAgICAgaW52YWxpZFJlc3VsdHMgPSAhdmFsaWRhdGVJbmZlcmVuY2UocmVzdWx0cyk7XG4gICAgICBpZiAoIWV4cGlyZXNBdCAmJiBpbnZhbGlkUmVzdWx0cykgZXhwaXJlc0F0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0cyA9IGNhY2hlUmVzdWx0cztcbiAgICB9XG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiByZXN1bHRzIGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghZW5kcG9pbnQuc2NoZW1hIHx8ICFzY2hlbWFIYXNFbnRpdHkoZW5kcG9pbnQuc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzdWx0cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBtZXRhPy5pbnZhbGlkYXRlZFxuICAgICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgICA6IGNhY2hlUmVzdWx0cyAmJiAhZW5kcG9pbnQuaW52YWxpZElmU3RhbGVcbiAgICAgICAgICA/IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICAgICAgIDogRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgfSBhcyB7XG4gICAgICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICAgICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nbG9iYWxDYWNoZS5yZXN1bHRzW2tleV0pXG4gICAgICB0aGlzLmdsb2JhbENhY2hlLnJlc3VsdHNba2V5XSA9IG5ldyBXZWFrRW50aXR5TWFwKCk7XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IGRlbm9ybWFsaXplQ2FjaGVkKFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgdGhpcy5nbG9iYWxDYWNoZS5lbnRpdGllcyxcbiAgICAgIHRoaXMuZ2xvYmFsQ2FjaGUucmVzdWx0c1trZXldLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47IHBhdGhzOiBQYXRoW10gfTtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBzdGF0ZS5lbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICBjb25zdCBleHBpcnlTdGF0dXMgPVxuICAgICAgbWV0YT8uaW52YWxpZGF0ZWQgfHwgKGludmFsaWREZW5vcm1hbGl6ZSAmJiAhbWV0YT8uZXJyb3IpXG4gICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgOiBpbnZhbGlkRGVub3JtYWxpemUgfHwgZW5kcG9pbnQuaW52YWxpZElmU3RhbGUgfHwgaW52YWxpZFJlc3VsdHNcbiAgICAgICAgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9O1xufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IFBhdGhbXSxcbiAgZW50aXR5TWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjsgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgICAgIH07XG4gICAgfTtcbiAgfSxcbikge1xuICBsZXQgZXhwaXJlc0F0ID0gSW5maW5pdHk7XG4gIGZvciAoY29uc3QgeyBwaywga2V5IH0gb2YgcGF0aHMpIHtcbiAgICBjb25zdCBlbnRpdHlFeHBpcnkgPSBlbnRpdHlNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBhbnkgZW50aXRpZXMuXG4gKlxuICogV2l0aG91dCBlbnRpdGllcywgZGVub3JtYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQsIGFuZCByZXN1bHRzIHNob3VsZCBub3QgYmUgaW5mZXJyZWQuXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUhhc0VudGl0eShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoaXNFbnRpdHkoc2NoZW1hKSkgcmV0dXJuIHRydWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgc2NoZW1hSGFzRW50aXR5KHNjaGVtYVswXSk7XG4gIGlmIChzY2hlbWEgJiYgKHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgY29uc3QgbmVzdGVkU2NoZW1hID1cbiAgICAgICdzY2hlbWEnIGluIHNjaGVtYSA/IChzY2hlbWEuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIFNjaGVtYT4pIDogc2NoZW1hO1xuICAgIGlmICh0eXBlb2YgbmVzdGVkU2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc2NoZW1hSGFzRW50aXR5KG5lc3RlZFNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5lc3RlZFNjaGVtYSkuc29tZSh4ID0+IHNjaGVtYUhhc0VudGl0eSh4KSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBwcml2YXRlIHN0YXRlOiBTdGF0ZTxUPjtcbiAgcHJpdmF0ZSBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyOiBDb250cm9sbGVyLCBzdGF0ZTogU3RhdGU8VD4sIGZldGNoZWRBdCA9IDApIHtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB0aGlzLmZldGNoZWRBdCA9IGZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogRGF0YSBBY2Nlc3MgKioqKioqKioqKioqKioqL1xuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQU9BLFNBQ0VBLGFBQWEsRUFDYkMsWUFBWSxFQU1aQyxpQkFBaUIsRUFDakJDLFFBQVEsRUFDUkMsV0FBVyxRQUNOLHdCQUF3QjtBQUMvQixTQUFTQyxZQUFZLEVBQUVDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUV4RSxPQUFPQyxlQUFlLE1BQU0sc0JBQXNCO0FBQ2xELE9BQU9DLFdBQVcsTUFBTSxrQkFBa0I7QUFDMUMsT0FBT0MsZ0JBQWdCLE1BQU0sdUJBQXVCO0FBQ3BELE9BQU9DLG1CQUFtQixNQUFNLDBCQUEwQjtBQUMxRCxPQUFPQyxXQUFXLE1BQU0sa0JBQWtCO0FBQzFDLE9BQU9DLFNBQVMsTUFBTSxnQkFBZ0I7QUFDdEMsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsUUFDYix5QkFBeUI7QUFFaEMsU0FBU0MsWUFBWSxRQUFRLG1DQUFtQztBQUNoRSxPQUFPQyxVQUFVLE1BQU0sd0JBQXdCO0FBWS9DLE1BQU1DLGFBQWEsR0FBSUMsTUFBZSxJQUFvQjtFQUN4RCxNQUFNLElBQUlDLEtBQUssQ0FDWixpRUFBZ0UsR0FDOUQseURBQ0wsQ0FBQztBQUNI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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EXPIREALL_TYPE } from '../actionTypes.js';
|
|
2
|
+
export default function createExpireAll(testKey) {
|
|
3
|
+
return {
|
|
4
|
+
type: EXPIREALL_TYPE,
|
|
5
|
+
testKey
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFWFBJUkVBTExfVFlQRSIsImNyZWF0ZUV4cGlyZUFsbCIsInRlc3RLZXkiLCJ0eXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY3JlYXRlRXhwaXJlQWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVYUElSRUFMTF9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBFeHBpcmVBbGxBY3Rpb24gfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUV4cGlyZUFsbChcbiAgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuLFxuKTogRXhwaXJlQWxsQWN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBFWFBJUkVBTExfVFlQRSxcbiAgICB0ZXN0S2V5LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFjLFFBQVEsbUJBQW1CO0FBR2xELGVBQWUsU0FBU0MsZUFBZUEsQ0FDckNDLE9BQWlDLEVBQ2hCO0VBQ2pCLE9BQU87SUFDTEMsSUFBSSxFQUFFSCxjQUFjO0lBQ3BCRTtFQUNGLENBQUM7QUFDSCJ9
|
|
@@ -147,4 +147,4 @@ export default class PollingSubscription {
|
|
|
147
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;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyIiwiUG9sbGluZ1N1YnNjcmlwdGlvbiIsImNvbnN0cnVjdG9yIiwiYWN0aW9uIiwiY29udHJvbGxlciIsImNvbm5lY3Rpb25MaXN0ZW5lciIsImZyZXF1ZW5jeUhpc3RvZ3JhbSIsIk1hcCIsIm9mZmxpbmVMaXN0ZW5lciIsImNsZWFudXAiLCJhZGRPbmxpbmVMaXN0ZW5lciIsIm9ubGluZUxpc3RlbmVyIiwicmVtb3ZlT25saW5lTGlzdGVuZXIiLCJub3ciLCJEYXRlIiwic3RhcnRJZCIsInNldFRpbWVvdXQiLCJ1cGRhdGUiLCJydW4iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsImtleSIsIk1hdGgiLCJtYXgiLCJsYXN0RmV0Y2hUaW1lIiwiZnJlcXVlbmN5IiwiYWRkT2ZmbGluZUxpc3RlbmVyIiwiZW5kcG9pbnQiLCJwb2xsRnJlcXVlbmN5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJhcmdzIiwibWV0YSIsInNldCIsImlzT25saW5lIiwiYWRkIiwiaGFzIiwiZ2V0IiwicmVtb3ZlIiwiZGVsZXRlIiwic2l6ZSIsIm1pbiIsImtleXMiLCJlcnJvciIsImludGVydmFsSWQiLCJjbGVhckludGVydmFsIiwibGFzdEludGVydmFsSWQiLCJjbGVhclRpbWVvdXQiLCJyZW1vdmVPZmZsaW5lTGlzdGVuZXIiLCJzdXAiLCJjYWxsIiwiT2JqZWN0IiwiYXNzaWduIiwiZGF0YUV4cGlyeUxlbmd0aCIsImVycm9yRXhwaXJ5TGVuZ3RoIiwiZXJyb3JQb2xpY3kiLCJmZXRjaCIsImNhdGNoIiwic2V0SW50ZXJ2YWwiLCJfdGhpcyRjb250cm9sbGVyJGdldFMiLCJfdGhpcyRjb250cm9sbGVyJGdldFMyIiwiZ2V0U3RhdGUiLCJkYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvUG9sbGluZ1N1YnNjcmlwdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb25uZWN0aW9uTGlzdGVuZXIgZnJvbSAnLi9Db25uZWN0aW9uTGlzdGVuZXIuanMnO1xuaW1wb3J0IERlZmF1bHRDb25uZWN0aW9uTGlzdGVuZXIgZnJvbSAnLi9EZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi9TdWJzY3JpcHRpb25NYW5hZ2VyLmpzJztcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3Vic2NyaWJlQWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIFBvbGxpbmdTdWJzY3JpcHRpb24ga2VlcHMgYSBnaXZlbiByZXNvdXJjZSB1cGRhdGVkIGJ5XG4gKiBkaXNwYXRjaGluZyBhIGZldGNoIGF0IGEgcmF0ZSBlcXVhbCB0byB0aGUgbWluaW11bSB1cGRhdGVcbiAqIGludGVydmFsIHJlcXVlc3RlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Qb2xsaW5nU3Vic2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbGxpbmdTdWJzY3JpcHRpb24gaW1wbGVtZW50cyBTdWJzY3JpcHRpb24ge1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBkZWNsYXJlIHJlYWRvbmx5IGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBwcm90ZWN0ZWQgZGVjbGFyZSByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGRlY2xhcmUgZnJlcXVlbmN5OiBudW1iZXI7XG4gIHByb3RlY3RlZCBmcmVxdWVuY3lIaXN0b2dyYW06IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gIHByb3RlY3RlZCBkZWNsYXJlIGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7XG4gIHByb3RlY3RlZCBkZWNsYXJlIGludGVydmFsSWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIHByb3RlY3RlZCBkZWNsYXJlIGxhc3RJbnRlcnZhbElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGFydElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgZGVjbGFyZSBjb25uZWN0aW9uTGlzdGVuZXI6IENvbm5lY3Rpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhY3Rpb246IE9taXQ8U3Vic2NyaWJlQWN0aW9uLCAndHlwZSc+LFxuICAgIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4gICAgY29ubmVjdGlvbkxpc3RlbmVyPzogQ29ubmVjdGlvbkxpc3RlbmVyLFxuICApIHtcbiAgICBpZiAoYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3kgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignZnJlcXVlbmN5IG5lZWRlZCBmb3IgcG9sbGluZyBzdWJzY3JpcHRpb24nKTtcbiAgICB0aGlzLmVuZHBvaW50ID0gYWN0aW9uLmVuZHBvaW50O1xuICAgIHRoaXMuZnJlcXVlbmN5ID0gYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3k7XG4gICAgdGhpcy5hcmdzID0gYWN0aW9uLm1ldGEuYXJncztcbiAgICB0aGlzLmtleSA9IGFjdGlvbi5tZXRhLmtleTtcbiAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQodGhpcy5mcmVxdWVuY3ksIDEpO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIgPVxuICAgICAgY29ubmVjdGlvbkxpc3RlbmVyIHx8IG5ldyBEZWZhdWx0Q29ubmVjdGlvbkxpc3RlbmVyKCk7XG5cbiAgICAvLyBLaWNrc3RhcnQgcnVubmluZyBzaW5jZSB0aGlzIGlzIGluaXRpYWxpemVkIGFmdGVyIHRoZSBvbmxpbmUgbm90aWYgaXMgc2VudFxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25MaXN0ZW5lci5pc09ubGluZSgpKSB7XG4gICAgICB0aGlzLm9ubGluZUxpc3RlbmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2ZmbGluZUxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN1YnNjcmliZSB0byBhIGZyZXF1ZW5jeSAqL1xuICBhZGQoZnJlcXVlbmN5PzogbnVtYmVyKSB7XG4gICAgaWYgKGZyZXF1ZW5jeSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmhhcyhmcmVxdWVuY3kpKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zZXQoXG4gICAgICAgIGZyZXF1ZW5jeSxcbiAgICAgICAgKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgKyAxLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KGZyZXF1ZW5jeSwgMSk7XG5cbiAgICAgIC8vIG5ldyBtaW4gc28gcmVzdGFydCBzZXJ2aWNlXG4gICAgICBpZiAoZnJlcXVlbmN5IDwgdGhpcy5mcmVxdWVuY3kpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFVuc3Vic2NyaWJlIGZyb20gYSBmcmVxdWVuY3kgKi9cbiAgcmVtb3ZlKGZyZXF1ZW5jeT86IG51bWJlcikge1xuICAgIGlmIChmcmVxdWVuY3kgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5oYXMoZnJlcXVlbmN5KSkge1xuICAgICAgdGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0uc2V0KFxuICAgICAgICBmcmVxdWVuY3ksXG4gICAgICAgICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5nZXQoZnJlcXVlbmN5KSBhcyBudW1iZXIpIC0gMSxcbiAgICAgICk7XG4gICAgICBpZiAoKHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmdldChmcmVxdWVuY3kpIGFzIG51bWJlcikgPCAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5SGlzdG9ncmFtLmRlbGV0ZShmcmVxdWVuY3kpO1xuXG4gICAgICAgIC8vIG5vdGhpbmcgc3Vic2NyaWJlZCB0byB0aGlzIGFueW1vcmUuLi5pdCBpcyBpbnZhbGlkXG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeUhpc3RvZ3JhbS5zaXplID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzIHdhcyB0aGUgbWluLCBzbyBmaW5kIHRoZSBuZXh0IHNpemVcbiAgICAgICAgaWYgKGZyZXF1ZW5jeSA8PSB0aGlzLmZyZXF1ZW5jeSkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5ID0gTWF0aC5taW4oLi4udGhpcy5mcmVxdWVuY3lIaXN0b2dyYW0ua2V5cygpKTtcbiAgICAgICAgICB0aGlzLnJ1bigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBlbHNlIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBNaXNtYXRjaGVkIHJlbW92ZTogJHtmcmVxdWVuY3l9IGlzIG5vdCBzdWJzY3JpYmVkIGZvciAke3RoaXMua2V5fWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQ2xlYW51cCBtZWFucyBjbGVhcmluZyBvdXQgYmFja2dyb3VuZCBpbnRlcnZhbC4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgICBkZWxldGUgdGhpcy5pbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXN0SW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmxhc3RJbnRlcnZhbElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zdGFydElkKTtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0YXJ0SWQ7XG4gICAgfVxuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLnJlbW92ZU9mZmxpbmVMaXN0ZW5lcih0aGlzLm9mZmxpbmVMaXN0ZW5lcik7XG4gIH1cblxuICAvKiogVHJpZ2dlciByZXF1ZXN0IGZvciBsYXRlc3QgcmVzb3VyY2UgKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBzdXAgPSB0aGlzLmVuZHBvaW50O1xuICAgIGNvbnN0IGVuZHBvaW50ID0gZnVuY3Rpb24gKHRoaXM6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICAgIHJldHVybiBzdXAuY2FsbCh0aGlzLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIE9iamVjdC5hc3NpZ24oZW5kcG9pbnQsIHRoaXMuZW5kcG9pbnQpO1xuICAgIGVuZHBvaW50LmRhdGFFeHBpcnlMZW5ndGggPSB0aGlzLmZyZXF1ZW5jeSAvIDI7XG4gICAgZW5kcG9pbnQuZXJyb3JFeHBpcnlMZW5ndGggPSB0aGlzLmZyZXF1ZW5jeSAvIDEwO1xuICAgIGVuZHBvaW50LmVycm9yUG9saWN5ID0gKCkgPT4gJ3NvZnQnIGFzIGNvbnN0O1xuICAgIGVuZHBvaW50LmtleSA9ICgpID0+IHRoaXMua2V5O1xuICAgIC8vIHN0b3AgYW55IGVycm9ycyBoZXJlIGZyb20gYnViYmxpbmdcbiAgICB0aGlzLmNvbnRyb2xsZXIuZmV0Y2goZW5kcG9pbnQsIC4uLnRoaXMuYXJncykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gIH1cblxuICAvKiogV2hhdCBoYXBwZW5zIHdoZW4gYnJvd3NlciBnb2VzIG9mZmxpbmUgKi9cbiAgcHJvdGVjdGVkIG9mZmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAvLyB0aGlzIGNsZWFycyBleGlzdGluZyBsaXN0ZW5lcnMsIHNvIG5vIG5lZWQgdG8gY2xlYXIgb2ZmbGluZSBsaXN0ZW5lclxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkxpc3RlbmVyLmFkZE9ubGluZUxpc3RlbmVyKHRoaXMub25saW5lTGlzdGVuZXIpO1xuICB9O1xuXG4gIC8qKiBXaGF0IGhhcHBlbnMgd2hlbiBicm93c2VyIGNvbWVzIG9ubGluZSAqL1xuICBwcm90ZWN0ZWQgb25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIucmVtb3ZlT25saW5lTGlzdGVuZXIodGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnN0YXJ0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0SWQpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuc3RhcnRJZDtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgdGhpcy5ydW4oKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFBvbGwgc2V0VGltZW91dCBmb3IgJHt0aGlzLmtleX0gc3RpbGwgcnVubmluZywgYnV0IHRpbWVvdXRJZCBkZWxldGVkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LCBNYXRoLm1heCgwLCB0aGlzLmxhc3RGZXRjaFRpbWUoKSAtIG5vdyArIHRoaXMuZnJlcXVlbmN5KSk7XG4gICAgdGhpcy5jb25uZWN0aW9uTGlzdGVuZXIuYWRkT2ZmbGluZUxpc3RlbmVyKHRoaXMub2ZmbGluZUxpc3RlbmVyKTtcbiAgfTtcblxuICAvKiogUnVuIHBvbGxpbmcgcHJvY2VzcyB3aXRoIGN1cnJlbnQgZnJlcXVlbmN5XG4gICAqXG4gICAqIFdpbGwgY2xlYW4gdXAgb2xkIHBvbGwgaW50ZXJ2YWwgb24gbmV4dCBydW5cbiAgICovXG4gIHByb3RlY3RlZCBydW4oKSB7XG4gICAgaWYgKHRoaXMuc3RhcnRJZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHRoaXMubGFzdEludGVydmFsSWQgPSB0aGlzLmludGVydmFsSWQ7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbG9uZyBpbnRvIHRoZSBsYXN0IHBvbGwgaXQgd2FzIGJlZm9yZSByZXNldHRpbmdcbiAgICAgIC8vIHdlIHdhaXQgdGlsIHRoZSBuZXh0IGZldGNoIHRvIGNsZWFyIG9sZCBpbnRlcnZhbHNcbiAgICAgIGlmICh0aGlzLmxhc3RJbnRlcnZhbElkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sYXN0SW50ZXJ2YWxJZCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmxhc3RJbnRlcnZhbElkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkgdGhpcy51cGRhdGUoKTtcbiAgICAgIGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBQb2xsIGludGVydmFsSWQgZm9yICR7dGhpcy5rZXl9IHN0aWxsIHJ1bm5pbmcsIGJ1dCBpbnRlcnZhbElkIGRlbGV0ZWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sIHRoaXMuZnJlcXVlbmN5KTtcbiAgfVxuXG4gIC8qKiBMYXN0IGZldGNoIHRpbWUgKi9cbiAgcHJvdGVjdGVkIGxhc3RGZXRjaFRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpLm1ldGFbdGhpcy5rZXldPy5kYXRlID8/IDA7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsT0FBT0EseUJBQXlCLE1BQU0sZ0NBQWdDO0FBS3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxNQUFNQyxtQkFBbUIsQ0FBeUI7RUFZL0RDLFdBQVdBLENBQ1RDLE1BQXFDLEVBQ3JDQyxVQUFzQixFQUN0QkMsa0JBQXVDLEVBQ3ZDO0lBQUEsS0FYUUMsa0JBQWtCLEdBQXdCLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBb0g3RDtJQUFBLEtBQ1VDLGVBQWUsR0FBRyxNQUFNO01BQ2hDO01BQ0EsSUFBSSxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUNkLElBQUksQ0FBQ0osa0JBQWtCLENBQUNLLGlCQUFpQixDQUFDLElBQUksQ0FBQ0MsY0FBYyxDQUFDO0lBQ2hFLENBQUM7SUFFRDtJQUFBLEtBQ1VBLGNBQWMsR0FBRyxNQUFNO01BQy9CLElBQUksQ0FBQ04sa0JBQWtCLENBQUNPLG9CQUFvQixDQUFDLElBQUksQ0FBQ0QsY0FBYyxDQUFDO01BQ2pFLE1BQU1FLEdBQUcsR0FBR0MsSUFBSSxDQUFDRCxHQUFHLENBQUMsQ0FBQztNQUN0QixJQUFJLENBQUNFLE9BQU8sR0FBR0MsVUFBVSxDQUFDLE1BQU07UUFDOUIsSUFBSSxJQUFJLENBQUNELE9BQU8sRUFBRTtVQUNoQixPQUFPLElBQUksQ0FBQ0EsT0FBTztVQUNuQixJQUFJLENBQUNFLE1B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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,6 +1,7 @@
|
|
|
1
1
|
export default function applyManager(managers, controller) {
|
|
2
2
|
return managers.map(manager => {
|
|
3
3
|
const middleware = manager.getMiddleware();
|
|
4
|
+
// TODO(breaking): remove this once controller prop is no longer supported
|
|
4
5
|
return ({
|
|
5
6
|
dispatch,
|
|
6
7
|
getState
|
|
@@ -20,4 +21,4 @@ export default function applyManager(managers, controller) {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/* These should be compatible with redux */
|
|
23
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHBseU1hbmFnZXIiLCJtYW5hZ2VycyIsImNvbnRyb2xsZXIiLCJtYXAiLCJtYW5hZ2VyIiwibWlkZGxld2FyZSIsImdldE1pZGRsZXdhcmUiLCJkaXNwYXRjaCIsImdldFN0YXRlIiwiQVBJIiwiT2JqZWN0IiwiY3JlYXRlIiwidmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9hcHBseU1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VyLCBEaXNwYXRjaCwgUmVkdWNlclN0YXRlIH0gZnJvbSAnLi4vbWlkZGxld2FyZVR5cGVzLmpzJztcbmltcG9ydCB7IE1hbmFnZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwcGx5TWFuYWdlcihcbiAgbWFuYWdlcnM6IE1hbmFnZXJbXSxcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbik6IE1pZGRsZXdhcmVbXSB7XG4gIHJldHVybiBtYW5hZ2Vycy5tYXAobWFuYWdlciA9PiB7XG4gICAgY29uc3QgbWlkZGxld2FyZSA9IG1hbmFnZXIuZ2V0TWlkZGxld2FyZSgpO1xuICAgIC8vIFRPRE8oYnJlYWtpbmcpOiByZW1vdmUgdGhpcyBvbmNlIGNvbnRyb2xsZXIgcHJvcCBpcyBubyBsb25nZXIgc3VwcG9ydGVkXG4gICAgcmV0dXJuICh7IGRpc3BhdGNoLCBnZXRTdGF0ZSB9KSA9PiB7XG4gICAgICAoY29udHJvbGxlciBhcyBhbnkpLmRpc3BhdGNoID0gZGlzcGF0Y2g7XG4gICAgICAoY29udHJvbGxlciBhcyBhbnkpLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgICAvLyB0aGlzIGlzIG5lZWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYXMgd2UgYWRkZWQgJ2NvbnRyb2xsZXInIHByb3AgcHJldmlvdXNseVxuICAgICAgY29uc3QgQVBJID0gT2JqZWN0LmNyZWF0ZShjb250cm9sbGVyLCB7XG4gICAgICAgIGNvbnRyb2xsZXI6IHsgdmFsdWU6IGNvbnRyb2xsZXIgfSxcbiAgICAgIH0pO1xuICAgICAgLy8gY29udHJvbGxlciBpcyBhIHN1cGVyc2V0IG9mIHRoZSBtaWRkbGV3YXJlIEFQSVxuICAgICAgcmV0dXJuIG1pZGRsZXdhcmUoQVBJKTtcbiAgICB9O1xuICB9KTtcbn1cblxuLyogVGhlc2Ugc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCByZWR1eCAqL1xuZXhwb3J0IGludGVyZmFjZSBNaWRkbGV3YXJlQVBJPFxuICBSIGV4dGVuZHMgUmVkdWNlcjxhbnksIGFueT4gPSBSZWR1Y2VyPGFueSwgYW55Pixcbj4ge1xuICBnZXRTdGF0ZTogKCkgPT4gUmVkdWNlclN0YXRlPFI+O1xuICBkaXNwYXRjaDogRGlzcGF0Y2g8Uj47XG59XG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55Pj4oe1xuICBkaXNwYXRjaCxcbn06IE1pZGRsZXdhcmVBUEk8Uj4pID0+IChuZXh0OiBEaXNwYXRjaDxSPikgPT4gRGlzcGF0Y2g8Uj47XG4iXSwibWFwcGluZ3MiOiJBQUlBLGVBQWUsU0FBU0EsWUFBWUEsQ0FDbENDLFFBQW1CLEVBQ25CQyxVQUFzQixFQUNSO0VBQ2QsT0FBT0QsUUFBUSxDQUFDRSxHQUFHLENBQUNDLE9BQU8sSUFBSTtJQUM3QixNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQ0UsYUFBYSxDQUFDLENBQUM7SUFDMUM7SUFDQSxPQUFPLENBQUM7TUFBRUMsUUFBUTtNQUFFQztJQUFTLENBQUMsS0FBSztNQUNoQ04sVUFBVSxDQUFTSyxRQUFRLEdBQUdBLFFBQVE7TUFDdENMLFVBQVUsQ0FBU00sUUFBUSxHQUFHQSxRQUFRO01BQ3ZDO01BQ0EsTUFBTUMsR0FBRyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1QsVUFBVSxFQUFFO1FBQ3BDQSxVQUFVLEVBQUU7VUFBRVUsS0FBSyxFQUFFVjtRQUFXO01BQ2xDLENBQUMsQ0FBQztNQUNGO01BQ0EsT0FBT0csVUFBVSxDQUFDSSxHQUFHLENBQUM7SUFDeEIsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKOztBQUVBIn0=
|
package/legacy/newActions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL25ld0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFbmRwb2ludEludGVyZmFjZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VUX1RZUEUsXG4gIFJFU0VUX1RZUEUsXG4gIEZFVENIX1RZUEUsXG4gIFNVQlNDUklCRV9UWVBFLFxuICBVTlNVQlNDUklCRV9UWVBFLFxuICBJTlZBTElEQVRFX1RZUEUsXG4gIEdDX1RZUEUsXG4gIE9QVElNSVNUSUNfVFlQRSxcbiAgSU5WQUxJREFURUFMTF9UWVBFLFxuICBFWFBJUkVBTExfVFlQRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qIFJFQ0VJVkUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2V0TWV0YSB7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbiAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldEFjdGlvblN1Y2Nlc3M8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgU0VUX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBwYXlsb2FkOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0QWN0aW9uRXJyb3I8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgU0VUX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBwYXlsb2FkOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuZXhwb3J0IHR5cGUgU2V0QWN0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdD4gPVxuICB8IFNldEFjdGlvblN1Y2Nlc3M8RT5cbiAgfCBTZXRBY3Rpb25FcnJvcjxFPjtcblxuLy8gVE9ETyhicmVha2luZyk6IFJlbW92ZSAtIGxlZ2FjeSBuYW1lIGNvbXBhdGliaWxpdHlcbi8qKiBAZGVwcmVjYXRlZCB1c2UgU2V0QWN0aW9uIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIFJlY2VpdmVBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiA9XG4gIFNldEFjdGlvbjxFPjtcblxuLyogRkVUQ0ggKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hNZXRhIHtcbiAgYXJnczogcmVhZG9ubHkgYW55W107XG4gIGtleTogc3RyaW5nO1xuICB0aHJvdHRsZTogYm9vbGVhbjtcbiAgcmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZDtcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICBwcm9taXNlOiBQcm9taXNlTGlrZTxhbnk+O1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgLy8gaW5kaWNhdGVzIHdoZXRoZXIgbmV0d29yayBtYW5hZ2VyIHByb2Nlc3NlZCBpdFxuICBubT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiB7XG4gIHR5cGU6IHR5cGVvZiBGRVRDSF9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YTogRmV0Y2hNZXRhO1xuICBwYXlsb2FkOiAoKSA9PiBSZXR1cm5UeXBlPEU+O1xufVxuXG4vKiBPUFRJTUlTVElDICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgT1BUSU1JU1RJQ19UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YTogU2V0TWV0YTtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyogU1VCU0NSSUJFICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTVUJTQ1JJQkVfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IHtcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAgICBrZXk6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbnN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBVTlNVQlNDUklCRV9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YToge1xuICAgIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiBFWFBJUlkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwaXJlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEVYUElSRUFMTF9UWVBFO1xuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbi8qIElOVkFMSURBVEUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZGF0ZUFsbEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBJTlZBTElEQVRFQUxMX1RZUEU7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVfVFlQRTtcbiAgbWV0YToge1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiBSRVNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBSRVNFVF9UWVBFO1xuICBkYXRlOiBudW1iZXI7XG59XG5cbi8qIEdDICovXG5leHBvcnQgaW50ZXJmYWNlIEdDQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEdDX1RZUEU7XG4gIGVudGl0aWVzOiBbc3RyaW5nLCBzdHJpbmddW107XG4gIHJlc3VsdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9XG4gIHwgRmV0Y2hBY3Rpb25cbiAgfCBPcHRpbWlzdGljQWN0aW9uXG4gIHwgU2V0QWN0aW9uXG4gIHwgU3Vic2NyaWJlQWN0aW9uXG4gIHwgVW5zdWJzY3JpYmVBY3Rpb25cbiAgfCBJbnZhbGlkYXRlQWN0aW9uXG4gIHwgSW52YWxpZGF0ZUFsbEFjdGlvblxuICB8IEV4cGlyZUFsbEFjdGlvblxuICB8IFJlc2V0QWN0aW9uXG4gIHwgR0NBY3Rpb247XG4iXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { expireReducer } from './expireReducer.js';
|
|
1
2
|
import { fetchReducer } from './fetchReducer.js';
|
|
2
3
|
import { invalidateReducer } from './invalidateReducer.js';
|
|
3
4
|
import { setReducer } from './setReducer.js';
|
|
4
|
-
import { SET_TYPE, INVALIDATE_TYPE, RESET_TYPE, FETCH_TYPE, GC_TYPE, OPTIMISTIC_TYPE, INVALIDATEALL_TYPE } from '../../actionTypes.js';
|
|
5
|
+
import { SET_TYPE, INVALIDATE_TYPE, RESET_TYPE, FETCH_TYPE, GC_TYPE, OPTIMISTIC_TYPE, INVALIDATEALL_TYPE, EXPIREALL_TYPE } from '../../actionTypes.js';
|
|
5
6
|
export default function createReducer(controller) {
|
|
6
7
|
return function reducer(state, action) {
|
|
7
8
|
if (!state) state = initialState;
|
|
@@ -27,6 +28,8 @@ export default function createReducer(controller) {
|
|
|
27
28
|
case INVALIDATEALL_TYPE:
|
|
28
29
|
case INVALIDATE_TYPE:
|
|
29
30
|
return invalidateReducer(state, action);
|
|
31
|
+
case EXPIREALL_TYPE:
|
|
32
|
+
return expireReducer(state, action);
|
|
30
33
|
case RESET_TYPE:
|
|
31
34
|
return Object.assign({}, initialState, {
|
|
32
35
|
lastReset: action.date
|
|
@@ -47,4 +50,4 @@ export const initialState = {
|
|
|
47
50
|
optimistic: [],
|
|
48
51
|
lastReset: 0
|
|
49
52
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwiZmV0Y2hSZWR1Y2VyIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzZXRSZWR1Y2VyIiwiU0VUX1RZUEUiLCJJTlZBTElEQVRFX1RZUEUiLCJSRVNFVF9UWVBFIiwiRkVUQ0hfVFlQRSIsIkdDX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJJTlZBTElEQVRFQUxMX1RZUEUiLCJFWFBJUkVBTExfVFlQRSIsImNyZWF0ZVJlZHVjZXIiLCJjb250cm9sbGVyIiwicmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwiaW5pdGlhbFN0YXRlIiwidHlwZSIsImVudGl0aWVzIiwiZm9yRWFjaCIsImtleSIsInBrIiwiX2VudGl0aWVzJGtleSIsIl9lbnRpdHlNZXRhJGtleSIsImVudGl0eU1ldGEiLCJyZXN1bHRzIiwiZmV0Y2hLZXkiLCJtZXRhIiwiT2JqZWN0IiwiYXNzaWduIiwibGFzdFJlc2V0IiwiZGF0ZSIsImluZGV4ZXMiLCJvcHRpbWlzdGljIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvY3JlYXRlUmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBpcmVSZWR1Y2VyIH0gZnJvbSAnLi9leHBpcmVSZWR1Y2VyLmpzJztcbmltcG9ydCB7IGZldGNoUmVkdWNlciB9IGZyb20gJy4vZmV0Y2hSZWR1Y2VyLmpzJztcbmltcG9ydCB7IGludmFsaWRhdGVSZWR1Y2VyIH0gZnJvbSAnLi9pbnZhbGlkYXRlUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBzZXRSZWR1Y2VyIH0gZnJvbSAnLi9zZXRSZWR1Y2VyLmpzJztcbmltcG9ydCB7XG4gIFNFVF9UWVBFLFxuICBJTlZBTElEQVRFX1RZUEUsXG4gIFJFU0VUX1RZUEUsXG4gIEZFVENIX1RZUEUsXG4gIEdDX1RZUEUsXG4gIE9QVElNSVNUSUNfVFlQRSxcbiAgSU5WQUxJREFURUFMTF9UWVBFLFxuICBFWFBJUkVBTExfVFlQRSxcbn0gZnJvbSAnLi4vLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi8uLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25UeXBlcywgU3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJlZHVjZXIoY29udHJvbGxlcjogQ29udHJvbGxlcik6IFJlZHVjZXJUeXBlIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlZHVjZXIoXG4gICAgc3RhdGU6IFN0YXRlPHVua25vd24+IHwgdW5kZWZpbmVkLFxuICAgIGFjdGlvbjogQWN0aW9uVHlwZXMsXG4gICk6IFN0YXRlPHVua25vd24+IHtcbiAgICBpZiAoIXN0YXRlKSBzdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIEdDX1RZUEU6XG4gICAgICAgIC8vIGlubGluZSBkZWxldGVzIGFyZSBmaW5lIGFzIHRoZXNlIHNob3VsZCBoYXZlIDAgcmVmY291bnRzXG4gICAgICAgIGFjdGlvbi5lbnRpdGllcy5mb3JFYWNoKChba2V5LCBwa10pID0+IHtcbiAgICAgICAgICBkZWxldGUgKHN0YXRlIGFzIGFueSkuZW50aXRpZXNba2V5XT8uW3BrXTtcbiAgICAgICAgICBkZWxldGUgKHN0YXRlIGFzIGFueSkuZW50aXR5TWV0YVtrZXldPy5bcGtdO1xuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uLnJlc3VsdHMuZm9yRWFjaChmZXRjaEtleSA9PiB7XG4gICAgICAgICAgZGVsZXRlIChzdGF0ZSBhcyBhbnkpLnJlc3VsdHNbZmV0Y2hLZXldO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5tZXRhW2ZldGNoS2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIGNhc2UgRkVUQ0hfVFlQRTpcbiAgICAgICAgcmV0dXJuIGZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgY2FzZSBPUFRJTUlTVElDX1RZUEU6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24sIGNvbnRyb2xsZXIpO1xuXG4gICAgICBjYXNlIElOVkFMSURBVEVBTExfVFlQRTpcbiAgICAgIGNhc2UgSU5WQUxJREFURV9UWVBFOlxuICAgICAgICByZXR1cm4gaW52YWxpZGF0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG5cbiAgICAgIGNhc2UgRVhQSVJFQUxMX1RZUEU6XG4gICAgICAgIHJldHVybiBleHBpcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBjYXNlIFJFU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiB7IC4uLmluaXRpYWxTdGF0ZSwgbGFzdFJlc2V0OiBhY3Rpb24uZGF0ZSB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBBIHJlZHVjZXIgbXVzdCBhbHdheXMgcmV0dXJuIGEgdmFsaWQgc3RhdGUuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIGFjdGlvbiBpcyBkaXNwYXRjaGVkLlxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9IGFzIGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogU3RhdGU8dW5rbm93bj4gPSB7XG4gIGVudGl0aWVzOiB7fSxcbiAgaW5kZXhlczoge30sXG4gIHJlc3VsdHM6IHt9LFxuICBtZXRhOiB7fSxcbiAgZW50aXR5TWV0YToge30sXG4gIG9wdGltaXN0aWM6IFtdLFxuICBsYXN0UmVzZXQ6IDAsXG59O1xuXG50eXBlIFJlZHVjZXJUeXBlID0gKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4gfCB1bmRlZmluZWQsXG4gIGFjdGlvbjogQWN0aW9uVHlwZXMsXG4pID0+IFN0YXRlPHVua25vd24+O1xuXG50eXBlIFdyaXRhYmxlPFQ+ID0geyBbUCBpbiBrZXlvZiBUXTogTm9uTnVsbGFibGU8V3JpdGFibGU8VFtQXT4+IH07XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBUSxvQkFBb0I7QUFDbEQsU0FBU0MsWUFBWSxRQUFRLG1CQUFtQjtBQUNoRCxTQUFTQyxpQkFBaUIsUUFBUSx3QkFBd0I7QUFDMUQsU0FBU0MsVUFBVSxRQUFRLGlCQUFpQjtBQUM1QyxTQUNFQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGNBQWMsUUFDVCxzQkFBc0I7QUFJN0IsZUFBZSxTQUFTQyxhQUFhQSxDQUFDQyxVQUFzQixFQUFlO0VBQ3pFLE9BQU8sU0FBU0MsT0FBT0EsQ0FDckJDLEtBQWlDLEVBQ2pDQyxNQUFtQixFQUNIO0lBQ2hCLElBQUksQ0FBQ0QsS0FBSyxFQUFFQSxLQUFLLEdBQUdFLFlBQVk7SUFDaEMsUUFBUUQsTUFBTSxDQUFDRSxJQUFJO01BQ2pCLEtBQUtWLE9BQU87UUFDVjtRQUNBUSxNQUFNLENBQUNHLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxFQUFFLENBQUMsS0FBSztVQUFBLElBQUFDLGFBQUEsRUFBQUMsZUFBQTtVQUNyQyxDQUFBRCxhQUFBLEdBQVFSLEtBQUssQ0FBU0ksUUFBUSxDQUFDRSxHQUFHLENBQUMsbUJBQW5DLE9BQU9FLGFBQUEsQ0FBK0JELEVBQUUsQ0FBQztVQUN6QyxDQUFBRSxlQUFBLEdBQVFULEtBQUssQ0FBU1UsVUFBVSxDQUFDSixHQUFHLENBQUMsbUJBQXJDLE9BQU9HLGVBQUEsQ0FBaUNGLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUM7UUFDRk4sTUFBTSxDQUFDVSxPQUFPLENBQUNOLE9BQU8sQ0FBQ08sUUFBUSxJQUFJO1VBQ2pDLE9BQVFaLEtBQUssQ0FBU1csT0FBTyxDQUFDQyxRQUFRLENBQUM7VUFDdkMsT0FBUVosS0FBSyxDQUFTYSxJQUFJLENBQUNELFFBQVEsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFDRixPQUFPWixLQUFLO01BQ2QsS0FBS1IsVUFBVTtRQUNiLE9BQU9OLFlBQVksQ0FBQ2MsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFFcEMsS0FBS1AsZUFBZTtNQUNwQjtNQUNBLEtBQUtMLFFBQVE7UUFDWCxPQUFPRCxVQUFVLENBQUNZLEtBQUssRUFBRUMsTUFBTSxFQUFFSCxVQUFVLENBQUM7TUFFOUMsS0FBS0gsa0JBQWtCO01BQ3ZCLEtBQUtMLGVBQWU7UUFDbEIsT0FBT0gsaUJBQWlCLENBQUNhLEtBQUssRUFBRUMsTUFBTSxDQUFDO01BRXpDLEtBQUtMLGNBQWM7UUFDakIsT0FBT1gsYUFBYSxDQUFDZSxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUVyQyxLQUFLVixVQUFVO1FBQ2IsT0FBQXVCLE1BQUEsQ0FBQUMsTUFBQSxLQUFZYixZQUFZO1VBQUVjLFNBQVMsRUFBRWYsTUFBTSxDQUFDZ0I7UUFBSTtNQUVsRDtRQUNFO1FBQ0E7UUFDQSxPQUFPakIsS0FBSztJQUNoQjtFQUNGLENBQUM7QUFDSDtBQUVBLE9BQU8sTUFBTUUsWUFBNEIsR0FBRztFQUMxQ0UsUUFBUSxFQUFFLENBQUMsQ0FBQztFQUNaYyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0VBQ1hQLE9BQU8sRUFBRSxDQUFDLENBQUM7RUFDWEUsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSSCxVQUFVLEVBQUUsQ0FBQyxDQUFDO0VBQ2RTLFVBQVUsRUFBRSxFQUFFO0VBQ2RILFNBQVMsRUFBRTtBQUNiLENBQUMifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function expireReducer(state, action) {
|
|
2
|
+
const meta = Object.assign({}, state.meta);
|
|
3
|
+
Object.keys(meta).forEach(key => {
|
|
4
|
+
if (action.testKey(key)) {
|
|
5
|
+
meta[key] = Object.assign({}, meta[key], {
|
|
6
|
+
// 1 instead of 0 so we can do 'falsy' checks to see if it is set
|
|
7
|
+
expiresAt: 1
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
return Object.assign({}, state, {
|
|
12
|
+
meta
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJtZXRhIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJ0ZXN0S2V5IiwiZXhwaXJlc0F0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvZXhwaXJlUmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YXRlLCBFeHBpcmVBbGxBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBpcmVSZWR1Y2VyKHN0YXRlOiBTdGF0ZTx1bmtub3duPiwgYWN0aW9uOiBFeHBpcmVBbGxBY3Rpb24pIHtcbiAgY29uc3QgbWV0YSA9IHsgLi4uc3RhdGUubWV0YSB9O1xuXG4gIE9iamVjdC5rZXlzKG1ldGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAoYWN0aW9uLnRlc3RLZXkoa2V5KSkge1xuICAgICAgbWV0YVtrZXldID0ge1xuICAgICAgICAuLi5tZXRhW2tleV0sXG4gICAgICAgIC8vIDEgaW5zdGVhZCBvZiAwIHNvIHdlIGNhbiBkbyAnZmFsc3knIGNoZWNrcyB0byBzZWUgaWYgaXQgaXMgc2V0XG4gICAgICAgIGV4cGlyZXNBdDogMSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1ldGEsXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBU0EsYUFBYUEsQ0FBQ0MsS0FBcUIsRUFBRUMsTUFBdUIsRUFBRTtFQUM1RSxNQUFNQyxJQUFJLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxLQUFRSixLQUFLLENBQUNFLElBQUksQ0FBRTtFQUU5QkMsTUFBTSxDQUFDRSxJQUFJLENBQUNILElBQUksQ0FBQyxDQUFDSSxPQUFPLENBQUNDLEdBQUcsSUFBSTtJQUMvQixJQUFJTixNQUFNLENBQUNPLE9BQU8sQ0FBQ0QsR0FBRyxDQUFDLEVBQUU7TUFDdkJMLElBQUksQ0FBQ0ssR0FBRyxDQUFDLEdBQUFKLE1BQUEsQ0FBQUMsTUFBQSxLQUNKRixJQUFJLENBQUNLLEdBQUcsQ0FBQztRQUNaO1FBQ0FFLFNBQVMsRUFBRTtNQUFDLEVBQ2I7SUFDSDtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQUFOLE1BQUEsQ0FBQUMsTUFBQSxLQUNLSixLQUFLO0lBQ1JFO0VBQUk7QUFFUiJ9
|