@data-client/core 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +134 -409
- package/dist/index.umd.min.js +1 -1
- package/dist/next.js +61 -101
- package/legacy/actionTypes.js +2 -2
- package/legacy/controller/Controller.js +276 -6
- package/legacy/controller/createFetch.js +3 -14
- package/legacy/controller/createInvalidate.js +1 -1
- package/legacy/controller/createInvalidateAll.js +1 -1
- package/legacy/controller/createOptimistic.js +1 -7
- package/legacy/controller/createReset.js +1 -1
- package/legacy/controller/createSet.js +31 -0
- package/legacy/controller/createSubscription.js +3 -7
- package/legacy/index.js +2 -5
- package/legacy/internal.js +2 -2
- package/legacy/manager/DevtoolsManager.js +2 -2
- package/legacy/manager/LogoutManager.js +2 -2
- package/legacy/manager/NetworkManager.js +28 -59
- package/legacy/manager/PollingSubscription.js +18 -27
- package/legacy/manager/SubscriptionManager.js +16 -42
- package/legacy/manager/applyManager.js +2 -1
- package/legacy/middlewareTypes.js +1 -1
- package/legacy/newActions.js +1 -1
- package/legacy/next/index.js +3 -3
- package/legacy/state/reducer/createReducer.js +2 -6
- package/legacy/state/reducer/fetchReducer.js +3 -13
- package/legacy/state/reducer/invalidateReducer.js +1 -1
- package/legacy/state/reducer/setReducer.js +9 -16
- package/legacy/types.js +2 -6
- package/lib/actionTypes.d.ts +1 -0
- package/lib/actionTypes.d.ts.map +1 -1
- package/lib/actionTypes.js +2 -2
- package/lib/controller/Controller.d.ts +126 -6
- package/lib/controller/Controller.d.ts.map +1 -1
- package/lib/controller/Controller.js +276 -6
- package/lib/controller/createFetch.d.ts +2 -2
- package/lib/controller/createFetch.d.ts.map +1 -1
- package/lib/controller/createFetch.js +3 -14
- package/lib/controller/createInvalidate.d.ts +1 -1
- package/lib/controller/createInvalidate.d.ts.map +1 -1
- package/lib/controller/createInvalidate.js +1 -1
- package/lib/controller/createInvalidateAll.d.ts +1 -1
- package/lib/controller/createInvalidateAll.d.ts.map +1 -1
- package/lib/controller/createInvalidateAll.js +1 -1
- package/lib/controller/createOptimistic.d.ts +2 -2
- package/lib/controller/createOptimistic.d.ts.map +1 -1
- package/lib/controller/createOptimistic.js +1 -7
- package/lib/controller/createReset.d.ts +1 -1
- package/lib/controller/createReset.d.ts.map +1 -1
- package/lib/controller/createReset.js +1 -1
- package/lib/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
- package/lib/controller/createSet.d.ts.map +1 -0
- package/lib/controller/createSet.js +31 -0
- package/lib/controller/createSubscription.d.ts +3 -3
- package/lib/controller/createSubscription.d.ts.map +1 -1
- package/lib/controller/createSubscription.js +3 -7
- package/lib/index.d.ts +2 -6
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -5
- package/lib/internal.d.ts +1 -1
- package/lib/internal.d.ts.map +1 -1
- package/lib/internal.js +2 -2
- package/lib/manager/DevtoolsManager.d.ts +1 -1
- package/lib/manager/DevtoolsManager.js +2 -2
- package/lib/manager/LogoutManager.d.ts +4 -5
- package/lib/manager/LogoutManager.d.ts.map +1 -1
- package/lib/manager/LogoutManager.js +2 -2
- package/lib/manager/NetworkManager.d.ts +4 -5
- package/lib/manager/NetworkManager.d.ts.map +1 -1
- package/lib/manager/NetworkManager.js +28 -61
- package/lib/manager/PollingSubscription.d.ts +9 -9
- package/lib/manager/PollingSubscription.d.ts.map +1 -1
- package/lib/manager/PollingSubscription.js +18 -27
- package/lib/manager/SubscriptionManager.d.ts +10 -15
- package/lib/manager/SubscriptionManager.d.ts.map +1 -1
- package/lib/manager/SubscriptionManager.js +16 -42
- package/lib/manager/applyManager.d.ts.map +1 -1
- package/lib/manager/applyManager.js +2 -1
- package/lib/middlewareTypes.d.ts +5 -5
- package/lib/middlewareTypes.d.ts.map +1 -1
- package/lib/middlewareTypes.js +1 -1
- package/lib/newActions.d.ts +26 -18
- package/lib/newActions.d.ts.map +1 -1
- package/lib/newActions.js +1 -1
- package/lib/next/index.d.ts +2 -2
- package/lib/next/index.d.ts.map +1 -1
- package/lib/next/index.js +3 -3
- package/lib/state/reducer/createReducer.d.ts.map +1 -1
- package/lib/state/reducer/createReducer.js +2 -6
- package/lib/state/reducer/fetchReducer.d.ts +1 -2
- package/lib/state/reducer/fetchReducer.d.ts.map +1 -1
- package/lib/state/reducer/fetchReducer.js +3 -14
- package/lib/state/reducer/invalidateReducer.d.ts +3 -4
- package/lib/state/reducer/invalidateReducer.d.ts.map +1 -1
- package/lib/state/reducer/invalidateReducer.js +1 -1
- package/lib/state/reducer/setReducer.d.ts +2 -38
- package/lib/state/reducer/setReducer.d.ts.map +1 -1
- package/lib/state/reducer/setReducer.js +9 -17
- package/lib/types.d.ts +9 -30
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +2 -6
- package/package.json +10 -7
- package/src/actionTypes.ts +1 -1
- package/src/controller/Controller.ts +491 -10
- package/src/controller/createFetch.ts +4 -19
- package/src/controller/createInvalidate.ts +1 -1
- package/src/controller/createInvalidateAll.ts +1 -1
- package/src/controller/createOptimistic.ts +3 -9
- package/src/controller/createReset.ts +1 -1
- package/src/controller/{createReceive.ts → createSet.ts} +9 -17
- package/src/controller/createSubscription.ts +3 -10
- package/src/index.ts +2 -16
- package/src/internal.ts +1 -1
- package/src/manager/DevtoolsManager.ts +1 -1
- package/src/manager/LogoutManager.ts +4 -5
- package/src/manager/NetworkManager.ts +31 -80
- package/src/manager/PollingSubscription.ts +40 -38
- package/src/manager/SubscriptionManager.ts +22 -54
- package/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +10 -8
- package/src/manager/__tests__/logoutManager.ts +5 -5
- package/src/manager/__tests__/manager.ts +2 -4
- package/src/manager/__tests__/networkManager.ts +8 -42
- package/src/manager/__tests__/pollingSubscription.ts +259 -151
- package/src/manager/__tests__/subscriptionManager.ts +7 -13
- package/src/manager/applyManager.ts +1 -0
- package/src/middlewareTypes.ts +5 -10
- package/src/newActions.ts +33 -23
- package/src/next/index.ts +2 -2
- package/src/state/__tests__/reducer.ts +59 -297
- package/src/state/reducer/createReducer.ts +3 -11
- package/src/state/reducer/fetchReducer.ts +5 -18
- package/src/state/reducer/invalidateReducer.ts +2 -2
- package/src/state/reducer/setReducer.ts +10 -22
- package/src/types.ts +9 -78
- package/ts3.4/actionTypes.d.ts +1 -0
- package/ts3.4/controller/Controller.d.ts +168 -6
- package/ts3.4/controller/createFetch.d.ts +2 -2
- package/ts3.4/controller/createInvalidate.d.ts +1 -1
- package/ts3.4/controller/createInvalidateAll.d.ts +1 -1
- package/ts3.4/controller/createOptimistic.d.ts +1 -1
- package/ts3.4/controller/createReset.d.ts +1 -1
- package/ts3.4/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
- package/ts3.4/controller/createSubscription.d.ts +3 -3
- package/ts3.4/index.d.ts +2 -7
- package/ts3.4/internal.d.ts +1 -1
- package/ts3.4/manager/DevtoolsManager.d.ts +1 -1
- package/ts3.4/manager/LogoutManager.d.ts +4 -5
- package/ts3.4/manager/NetworkManager.d.ts +4 -5
- package/ts3.4/manager/PollingSubscription.d.ts +9 -9
- package/ts3.4/manager/SubscriptionManager.d.ts +10 -15
- package/ts3.4/middlewareTypes.d.ts +5 -5
- package/ts3.4/newActions.d.ts +26 -18
- package/ts3.4/next/index.d.ts +2 -2
- package/ts3.4/state/reducer/fetchReducer.d.ts +1 -2
- package/ts3.4/state/reducer/invalidateReducer.d.ts +3 -4
- package/ts3.4/state/reducer/setReducer.d.ts +2 -38
- package/ts3.4/types.d.ts +8 -30
- package/legacy/compatibleActions.js +0 -2
- package/legacy/controller/BaseController.js +0 -289
- package/legacy/controller/createReceive.js +0 -36
- package/legacy/endpoint/index.js +0 -2
- package/legacy/endpoint/shapes.js +0 -2
- package/legacy/endpoint/types.js +0 -2
- package/legacy/legacyActions.js +0 -2
- package/legacy/next/Controller.js +0 -24
- package/legacy/previousActions.js +0 -2
- package/legacy/state/applyUpdatersToResults.js +0 -4
- package/legacy/state/legacy-actions/createFetch.js +0 -62
- package/legacy/state/legacy-actions/createReceive.js +0 -37
- package/legacy/state/legacy-actions/createReceiveError.js +0 -28
- package/legacy/state/legacy-actions/index.js +0 -4
- package/legacy/state/reducerInstance.js +0 -9
- package/lib/compatibleActions.d.ts +0 -47
- package/lib/compatibleActions.d.ts.map +0 -1
- package/lib/compatibleActions.js +0 -2
- package/lib/controller/BaseController.d.ts +0 -128
- package/lib/controller/BaseController.d.ts.map +0 -1
- package/lib/controller/BaseController.js +0 -289
- package/lib/controller/createReceive.d.ts.map +0 -1
- package/lib/controller/createReceive.js +0 -36
- package/lib/endpoint/index.d.ts +0 -3
- package/lib/endpoint/index.d.ts.map +0 -1
- package/lib/endpoint/index.js +0 -2
- package/lib/endpoint/shapes.d.ts +0 -25
- package/lib/endpoint/shapes.d.ts.map +0 -1
- package/lib/endpoint/shapes.js +0 -2
- package/lib/endpoint/types.d.ts +0 -45
- package/lib/endpoint/types.d.ts.map +0 -1
- package/lib/endpoint/types.js +0 -2
- package/lib/legacyActions.d.ts +0 -92
- package/lib/legacyActions.d.ts.map +0 -1
- package/lib/legacyActions.js +0 -2
- package/lib/next/Controller.d.ts +0 -14
- package/lib/next/Controller.d.ts.map +0 -1
- package/lib/next/Controller.js +0 -24
- package/lib/previousActions.d.ts +0 -91
- package/lib/previousActions.d.ts.map +0 -1
- package/lib/previousActions.js +0 -2
- package/lib/state/applyUpdatersToResults.d.ts +0 -13
- package/lib/state/applyUpdatersToResults.d.ts.map +0 -1
- package/lib/state/applyUpdatersToResults.js +0 -7
- package/lib/state/legacy-actions/createFetch.d.ts +0 -19
- package/lib/state/legacy-actions/createFetch.d.ts.map +0 -1
- package/lib/state/legacy-actions/createFetch.js +0 -62
- package/lib/state/legacy-actions/createReceive.d.ts +0 -14
- package/lib/state/legacy-actions/createReceive.d.ts.map +0 -1
- package/lib/state/legacy-actions/createReceive.js +0 -37
- package/lib/state/legacy-actions/createReceiveError.d.ts +0 -9
- package/lib/state/legacy-actions/createReceiveError.d.ts.map +0 -1
- package/lib/state/legacy-actions/createReceiveError.js +0 -28
- package/lib/state/legacy-actions/index.d.ts +0 -4
- package/lib/state/legacy-actions/index.d.ts.map +0 -1
- package/lib/state/legacy-actions/index.js +0 -4
- package/lib/state/reducerInstance.d.ts +0 -7
- package/lib/state/reducerInstance.d.ts.map +0 -1
- package/lib/state/reducerInstance.js +0 -9
- package/src/compatibleActions.ts +0 -96
- package/src/controller/BaseController.ts +0 -508
- package/src/endpoint/index.ts +0 -14
- package/src/endpoint/shapes.ts +0 -53
- package/src/endpoint/types.ts +0 -72
- package/src/legacyActions.ts +0 -163
- package/src/manager/__tests__/__snapshots__/pollingSubscription-endpoint.ts.snap +0 -49
- package/src/manager/__tests__/networkManager-legacy.ts +0 -394
- package/src/manager/__tests__/pollingSubscription-endpoint.ts +0 -423
- package/src/next/Controller.ts +0 -39
- package/src/previousActions.ts +0 -159
- package/src/state/__tests__/applyUpdatersToResults.ts +0 -40
- package/src/state/applyUpdatersToResults.ts +0 -29
- package/src/state/legacy-actions/createFetch.ts +0 -95
- package/src/state/legacy-actions/createReceive.ts +0 -68
- package/src/state/legacy-actions/createReceiveError.ts +0 -43
- package/src/state/legacy-actions/index.ts +0 -3
- package/src/state/reducerInstance.ts +0 -14
- package/ts3.4/compatibleActions.d.ts +0 -47
- package/ts3.4/controller/BaseController.d.ts +0 -170
- package/ts3.4/endpoint/index.d.ts +0 -3
- package/ts3.4/endpoint/shapes.d.ts +0 -25
- package/ts3.4/endpoint/types.d.ts +0 -45
- package/ts3.4/legacyActions.d.ts +0 -95
- package/ts3.4/next/Controller.d.ts +0 -14
- package/ts3.4/previousActions.d.ts +0 -94
- package/ts3.4/state/applyUpdatersToResults.d.ts +0 -13
- package/ts3.4/state/legacy-actions/createFetch.d.ts +0 -19
- package/ts3.4/state/legacy-actions/createReceive.d.ts +0 -14
- package/ts3.4/state/legacy-actions/createReceiveError.d.ts +0 -9
- package/ts3.4/state/legacy-actions/index.d.ts +0 -4
- package/ts3.4/state/reducerInstance.d.ts +0 -7
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,a="rest-hooks/optimistic",o="rest-hooks/reset",c="rest-hooks/subscribe",l="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:a,RESET_TYPE:o,SUBSCRIBE_TYPE:c,UNSUBSCRIBE_TYPE:l,INVALIDATE_TYPE:h,INVALIDATEALL_TYPE:d,GC_TYPE:u});function m(e,{schema:t,key:s,args:i,updaters:n,fetchedAt:a=0,update:o,dataExpiryLength:c}){const l=Date.now(),h={schema:t,key:s,args:i,date:l,fetchedAt:a,expiresAt:l+c};return h.updaters=n,h.update=o,{type:r,payload:e,meta:h}}function f(e,{schema:t,key:s,options:i,errorExpiryLength:n=6e4,fetchedAt:a=0}){const o=Date.now();return{type:r,payload:e,meta:{schema:t,key:s,date:o,fetchedAt:a,expiresAt:o+n,errorPolicy:null==i?void 0:i.errorPolicy},error:!0}}var y=Object.freeze({__proto__:null,createFetch:function(e,{params:t,body:s,throttle:r,updateParams:n}){const{schema:a,type:o,getFetchKey:c,options:l}=e,h=c(t);let d=0,u=0;const p=new Promise(((e,t)=>{[d,u]=[e,t]})),m={schema:a,type:o,args:[t,s],key:h,throttle:r,options:l,resolve:d,reject:u,promise:p,createdAt:Date.now()};return e.update&&(m.update=e.update),n&&(m.update=e=>{const t={};return n.forEach((([s,i,r])=>{t[s.getFetchKey(i)]=t=>r(e,t)})),t}),null!=l&&l.optimisticUpdate&&(m.optimisticResponse=l.optimisticUpdate(t,s)),{type:i,payload:()=>e.fetch(t,s),meta:m}},createReceive:m,createReceiveError:f});function g(e,t){var s;const i=t.meta.optimisticResponse;let r;if((null==(s=t.endpoint)?void 0:s.getOptimisticResponse)&&t.endpoint&&t.endpoint.sideEffect)r=function(e,{args:t,fetchedAt:s}){var i;const r=null!=(i=e.dataExpiryLength)?i:6e4,n=Date.now(),o={args:t,fetchedAt:s,date:n,expiresAt:n+r,schema:e.schema,key:e.key(...t)};return e.update&&(o.update=e.update),e.errorPolicy&&(o.errorPolicy=e.errorPolicy),{type:a,endpoint:e,meta:o}}(t.endpoint,{args:t.meta.args,fetchedAt:"number"!=typeof t.meta.createdAt?t.meta.createdAt.getTime():t.meta.createdAt});else{if(!i)return e;r=m(i,Object.assign({},t.meta,{dataExpiryLength:1/0}))}return Object.assign({},e,{optimistic:[...e.optimistic,r]})}function v(e,s,i){if(s.error)return E(e,s,s.payload);try{var r;let o;if(s.type===a){if(!s.endpoint.getOptimisticResponse)return e;try{o=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 o=s.payload;const{result:c,entities:l,indexes:h,entityMeta:d}=t.normalize(o,s.meta.schema,s.meta.args,e.entities,e.indexes,e.entityMeta,Object.assign({fetchedAt:s.meta.date},s.meta));let u=Object.assign({},e.results,{[s.meta.key]:c});try{if("updaters"in s.meta&&s.meta.updaters&&(u=function(e,t,s){return Object.assign({},e,Object.fromEntries(Object.entries(s).map((([s,i])=>[s,i(t,e[s])]))))}(u,c,s.meta.updaters)),s.meta.update){const e=s.meta.update(c,...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:l,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:b(e,s),lastReset:e.lastReset}}catch(t){return"object"==typeof t&&(t.message=`Error processing ${s.meta.key}\n\nFull Schema: ${JSON.stringify(s.meta.schema,void 0,2)}\n\nError:\n${t.message}`,"payload"in s&&(t.payload=s.payload),t.status=400),E(e,s,t)}}function E(e,t,s){return"AbortError"===s.name?Object.assign({},e,{optimistic:b(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.meta.errorPolicy?void 0:t.meta.errorPolicy(s)}}),optimistic:b(e,t)})}function b(e,t){return e.optimistic.filter((e=>e.meta.key!==t.meta.key||(e.type===a?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function L(e){return function(t,s){var r;switch(t||(t=O),s.type){case u:return s.entities.forEach((([e,s])=>{var i,r;null==(i=t.entities[e])||delete i[s],null==(r=t.entityMeta[e])||delete r[s]})),s.results.forEach((e=>{delete t.results[e],delete t.meta[e]})),t;case i:return g(t,s);case a:case n:return v(t,s,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})}(t,s);case o:return Object.assign({},O,{lastReset:null!=(r=s.date)?r:Date.now()});default:return t}}}const O={entities:{},indexes:{},results:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var k=Object.freeze({__proto__:null,inferResults:t.inferResults,DELETED:t.DELETED,RIC:s,initialState:O});function A(e,{args:t,fetchedAt:s,response:i,error:r=!1}){var a,o;const c=r?null!=(a=e.errorExpiryLength)?a:1e3:null!=(o=e.dataExpiryLength)?o:6e4,l=Date.now(),h={args:t,fetchedAt:null!=s?s:l,date:l,expiresAt:l+c,schema:e.schema,key:e.key(...t)};e.update&&(h.update=e.update),e.errorPolicy&&(h.errorPolicy=e.errorPolicy);const d={type:n,payload:i,endpoint:e,meta:h};return r&&(d.error=!0),d}function w(e,t){return e.meta[t]}const S=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},I=()=>O;class x{constructor({dispatch:e=S,getState:s=I,globalCache:i={entities:{},results:{}}}={}){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:o,date:Date.now()}),this.setResponse=(e,...t)=>{const s=t[t.length-1],i=A(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=A(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(A(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:c,endpoint:e,meta:{args:t,key:e.key(...t),fetch:()=>e(...t),schema:e.schema,options:e}}}(e,{args:t})):Promise.resolve(),this.unsubscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:l,endpoint:e,meta:{args:t,key:e.key(...t),options:e}}}(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new R(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=w(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],a=n?e.key(...r):"",o=n?i.results[a]:void 0,c=e.schema,l=w(i,a);let h,d=null==l?void 0:l.expiresAt,u=!1;if(void 0===o&&void 0!==e.schema?(h=t.inferResults(e.schema,r,i.indexes,i.entities),u=!t.validateInference(h),!d&&u&&(d=1)):h=o,!n)return{data:h,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};if(!e.schema||!j(e.schema))return{data:h,expiryStatus:null!=l&&l.invalidated?t.ExpiryStatus.Invalid:o&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:d||0};this.globalCache.results[a]||(this.globalCache.results[a]=new t.WeakEntityMap);const{data:p,paths:m}=t.denormalizeCached(h,c,i.entities,this.globalCache.entities,this.globalCache.results[a],r),f="symbol"==typeof p;d||(d=function(e,t){let s=1/0;for(const{pk:n,key:a}of e){var i,r;const e=null==(i=t[a])||null==(r=i[n])?void 0:r.expiresAt;e<s&&(s=e)}return s}(m,i.entityMeta));return{data:p,expiryStatus:null!=l&&l.invalidated||f&&(null==l||!l.error)?t.ExpiryStatus.Invalid:f||e.invalidIfStale||u?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:d}},this.dispatch=e,this.getState=s,this.globalCache=i}}function j(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&j(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?j(t):Object.values(t).some((e=>j(e)))}return!1}class R{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}}function T(e,{args:t}){const s=e.key(...t);let r=0,n=0;const a=new Promise(((e,t)=>{[r,n]=[e,t]})),o={schema:e.schema,type:e.sideEffect?"mutate":"read",args:t,key:s,throttle:!e.sideEffect,options:e,resolve:r,reject:n,promise:a,createdAt:Date.now()};return e.update&&(o.update=e.update),e.optimisticUpdate&&(o.optimisticResponse=e.optimisticUpdate(...t)),{type:i,payload:()=>e(...t),meta:o,endpoint:e}}class _ extends x{constructor(...e){super(...e),this.fetch=(e,...t)=>{const s=T(e,{args:t});return this.dispatch(s),s.meta.promise}}}class P extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}var q=L(new _);var D=Object.freeze({__proto__:null});class M{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 C{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let H;H="undefined"!=typeof navigator&&"function"==typeof addEventListener?M:C;var F,U=H;const z="undefined"!=typeof Intl,N={name:`Rest Hooks: ${null==(F=globalThis.document)?void 0:F.title}`,autoPause:!0,serialize:{options:void 0,replacer:z?(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=_,e.DefaultConnectionListener=U,e.DevToolsManager=class{constructor(e,t){this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},N,{config:e})),this.devTools?this.middleware=e=>{const s=L(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.getState=()=>O,this.controller=new _,this.dataExpiryLength=e,this.errorExpiryLength=t,this.middleware=({dispatch:e,getState:t,controller:s})=>(this.getState=t,this.controller=s,t=>r=>{var a;switch(r.type){case i:return this.handleFetch(r,e,s),void 0!==r.meta.optimisticResponse||void 0!==(null==(a=r.endpoint)?void 0:a.getOptimisticResponse)&&r.endpoint.sideEffect?t(r):Promise.resolve();case n:return t(r).then((()=>{if(r.meta.key in this.fetched){var e;const t=null==(e=s.getState().meta[r.meta.key])?void 0:e.error;t?this.handleReceive(f(t,r.meta)):this.handleReceive(r)}}));case o:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(r).then((()=>{for(const t in e)e[t](new P)}))}default:return t(r)}})}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(){if(this.cleanupDate)return this.cleanupDate;const e=this.controller.getState().lastReset;return e instanceof Date?e.valueOf():"number"!=typeof e?-1/0:e}handleFetch(e,t,s){const i=e.payload,{key:r,throttle:n,resolve:a,reject:o}=e.meta,c="number"!=typeof e.meta.createdAt?e.meta.createdAt.getTime():e.meta.createdAt,l=()=>{let t=i();const s=e=>e.then((e=>(a(e),e))).catch((e=>{throw o(e),e}));return!n&&e.endpoint&&(t=s(t)),t=t.then((t=>{let s=this.getLastReset();var i,r;c>=s&&(e.endpoint&&this.controller?this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:c}):this.controller.dispatch(m(t,Object.assign({},e.meta,{fetchedAt:c,dataExpiryLength:null!=(i=null==(r=e.meta.options)?void 0:r.dataExpiryLength)?i:this.dataExpiryLength}))));return t})).catch((t=>{const s=this.getLastReset();var i,r;c>=s&&(e.endpoint&&this.controller?this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:c,error:!0}):this.controller.dispatch(f(t,Object.assign({},e.meta,{errorExpiryLength:null!=(i=null==(r=e.meta.options)?void 0:r.errorExpiryLength)?i:this.errorExpiryLength,fetchedAt:c}))));throw t})),n||e.endpoint||(t=s(t)),t};return n?this.throttle(r,l,c).then((e=>a(e))).catch((e=>o(e))):l().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({key:e,schema:t,fetch:s,frequency:i,getState:r},n,a){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===i)throw new Error("frequency needed for polling subscription");this.schema=t,this.fetch=s,this.frequency=i,this.key=e,this.frequencyHistogram.set(this.frequency,1),this.dispatch=n,this.getState=r,this.connectionListener=a||new U,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.fetch();e.schema=this.schema,e.key=()=>this.key,e.dataExpiryLength=this.frequency/2,e.errorExpiryLength=this.frequency/10,e.errorPolicy=()=>"soft";const t=T(e,{args:[]});t.meta.promise.catch((e=>null)),this.dispatch(t)}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.getState().meta[this.key])?void 0:t.date)?e:0}},e.ResetError=P,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.Subscription=e,this.middleware=({dispatch:e,getState:t})=>s=>i=>{switch(i.type){case c:try{this.handleSubscribe(i,e,t)}catch(e){console.error(e)}return Promise.resolve();case l:return this.handleUnsubscribe(i,e),Promise.resolve();default:return s(i)}}}cleanup(){for(const e in this.subscriptions)this.subscriptions[e].cleanup()}handleSubscribe(e,t,s){let i;if(e.endpoint){const{endpoint:t}=e,{args:r}=e.meta;i={schema:t.schema,fetch:()=>t(...r),frequency:t.pollFrequency,key:t.key(...r),getState:s}}else{var r;i={key:e.meta.key,frequency:null==(r=e.meta.options)?void 0:r.pollFrequency,schema:e.meta.schema,fetch:e.meta.fetch,getState:s}}i.key in this.subscriptions?this.subscriptions[i.key].add(i.frequency):this.subscriptions[i.key]=new this.Subscription(i,t)}handleUnsubscribe(e,t){var s;const i=e.meta.key,r=null==(s=e.meta.options)?void 0:s.pollFrequency;if(i in this.subscriptions){this.subscriptions[i].remove(r)&&delete this.subscriptions[i]}}getMiddleware(){return this.middleware}},e.__INTERNAL__=k,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=T,e.createReceive=A,e.createReducer=L,e.initialState=O,e.legacyActions=y,e.newActions=D,e.reducer=q,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/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})}));
|
package/dist/next.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var normalizr = require('@data-client/normalizr');
|
|
6
6
|
|
|
7
7
|
const FETCH_TYPE = 'rest-hooks/fetch';
|
|
8
|
-
|
|
8
|
+
/** @deprecated use SET_TYPE instead */
|
|
9
9
|
const RECEIVE_TYPE = 'rest-hooks/receive';
|
|
10
10
|
const SET_TYPE = RECEIVE_TYPE;
|
|
11
11
|
const RESET_TYPE = 'rest-hooks/reset';
|
|
@@ -14,6 +14,36 @@ const UNSUBSCRIBE_TYPE = 'rest-hook/unsubscribe';
|
|
|
14
14
|
const INVALIDATE_TYPE = 'rest-hooks/invalidate';
|
|
15
15
|
const INVALIDATEALL_TYPE = 'rest-hooks/invalidateall';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Requesting a fetch to begin
|
|
19
|
+
*/
|
|
20
|
+
function createFetch(endpoint, {
|
|
21
|
+
args
|
|
22
|
+
}) {
|
|
23
|
+
const key = endpoint.key(...args);
|
|
24
|
+
let resolve = 0;
|
|
25
|
+
let reject = 0;
|
|
26
|
+
const promise = new Promise((a, b) => {
|
|
27
|
+
[resolve, reject] = [a, b];
|
|
28
|
+
});
|
|
29
|
+
const meta = {
|
|
30
|
+
args,
|
|
31
|
+
key,
|
|
32
|
+
throttle: !endpoint.sideEffect,
|
|
33
|
+
resolve,
|
|
34
|
+
reject,
|
|
35
|
+
promise,
|
|
36
|
+
createdAt: Date.now(),
|
|
37
|
+
nm: false
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
type: FETCH_TYPE,
|
|
41
|
+
payload: () => endpoint(...args),
|
|
42
|
+
meta,
|
|
43
|
+
endpoint
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
17
47
|
function createInvalidate(endpoint, {
|
|
18
48
|
args
|
|
19
49
|
}) {
|
|
@@ -32,7 +62,14 @@ function createInvalidateAll(testKey) {
|
|
|
32
62
|
};
|
|
33
63
|
}
|
|
34
64
|
|
|
35
|
-
function
|
|
65
|
+
function createReset() {
|
|
66
|
+
return {
|
|
67
|
+
type: RESET_TYPE,
|
|
68
|
+
date: Date.now()
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function createSet(endpoint, {
|
|
36
73
|
args,
|
|
37
74
|
fetchedAt,
|
|
38
75
|
response,
|
|
@@ -50,13 +87,8 @@ function createReceive(endpoint, {
|
|
|
50
87
|
fetchedAt: fetchedAt != null ? fetchedAt : now,
|
|
51
88
|
date: now,
|
|
52
89
|
expiresAt: now + expiryLength,
|
|
53
|
-
// For legacy support; TODO: remove
|
|
54
|
-
schema: endpoint.schema,
|
|
55
90
|
key: endpoint.key(...args)
|
|
56
91
|
};
|
|
57
|
-
// For legacy support; TODO: remove
|
|
58
|
-
if (endpoint.update) meta.update = endpoint.update;
|
|
59
|
-
if (endpoint.errorPolicy) meta.errorPolicy = endpoint.errorPolicy;
|
|
60
92
|
const action = {
|
|
61
93
|
type: SET_TYPE,
|
|
62
94
|
payload: response,
|
|
@@ -67,13 +99,6 @@ function createReceive(endpoint, {
|
|
|
67
99
|
return action;
|
|
68
100
|
}
|
|
69
101
|
|
|
70
|
-
function createReset() {
|
|
71
|
-
return {
|
|
72
|
-
type: RESET_TYPE,
|
|
73
|
-
date: Date.now()
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
102
|
function createSubscription(endpoint, {
|
|
78
103
|
args
|
|
79
104
|
}) {
|
|
@@ -82,10 +107,7 @@ function createSubscription(endpoint, {
|
|
|
82
107
|
endpoint,
|
|
83
108
|
meta: {
|
|
84
109
|
args,
|
|
85
|
-
key: endpoint.key(...args)
|
|
86
|
-
fetch: () => endpoint(...args),
|
|
87
|
-
schema: endpoint.schema,
|
|
88
|
-
options: endpoint
|
|
110
|
+
key: endpoint.key(...args)
|
|
89
111
|
}
|
|
90
112
|
};
|
|
91
113
|
}
|
|
@@ -97,8 +119,7 @@ function createUnsubscription(endpoint, {
|
|
|
97
119
|
endpoint,
|
|
98
120
|
meta: {
|
|
99
121
|
args,
|
|
100
|
-
key: endpoint.key(...args)
|
|
101
|
-
options: endpoint
|
|
122
|
+
key: endpoint.key(...args)
|
|
102
123
|
}
|
|
103
124
|
};
|
|
104
125
|
}
|
|
@@ -130,7 +151,7 @@ const unsetState = () => {
|
|
|
130
151
|
* Imperative control of Rest Hooks store
|
|
131
152
|
* @see https://resthooks.io/docs/api/Controller
|
|
132
153
|
*/
|
|
133
|
-
class Controller
|
|
154
|
+
class Controller {
|
|
134
155
|
/**
|
|
135
156
|
* Dispatches an action to Rest Hooks reducer.
|
|
136
157
|
*
|
|
@@ -154,6 +175,20 @@ class Controller$1 {
|
|
|
154
175
|
}
|
|
155
176
|
} = {}) {
|
|
156
177
|
/*************** Action Dispatchers ***************/
|
|
178
|
+
/**
|
|
179
|
+
* Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
|
|
180
|
+
* @see https://resthooks.io/docs/api/Controller#fetch
|
|
181
|
+
*/
|
|
182
|
+
this.fetch = (endpoint, ...args) => {
|
|
183
|
+
const action = createFetch(endpoint, {
|
|
184
|
+
args
|
|
185
|
+
});
|
|
186
|
+
this.dispatch(action);
|
|
187
|
+
if (endpoint.schema) {
|
|
188
|
+
return action.meta.promise.then(input => normalizr.denormalize(input, endpoint.schema, {}, args));
|
|
189
|
+
}
|
|
190
|
+
return action.meta.promise;
|
|
191
|
+
};
|
|
157
192
|
/**
|
|
158
193
|
* Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
|
|
159
194
|
* @see https://resthooks.io/docs/api/Controller#invalidate
|
|
@@ -177,16 +212,14 @@ class Controller$1 {
|
|
|
177
212
|
*/
|
|
178
213
|
this.setResponse = (endpoint, ...rest) => {
|
|
179
214
|
const response = rest[rest.length - 1];
|
|
180
|
-
const action =
|
|
215
|
+
const action = createSet(endpoint, {
|
|
181
216
|
args: rest.slice(0, rest.length - 1),
|
|
182
217
|
response
|
|
183
218
|
});
|
|
184
219
|
return this.dispatch(action);
|
|
185
220
|
};
|
|
186
|
-
// TODO: deprecate
|
|
187
221
|
/**
|
|
188
|
-
*
|
|
189
|
-
* @see https://resthooks.io/docs/api/Controller#setResponse
|
|
222
|
+
* @deprecated use https://resthooks.io/docs/api/Controller#setResponse instead
|
|
190
223
|
*/
|
|
191
224
|
/* istanbul ignore next */
|
|
192
225
|
this.receive = (endpoint, ...rest) => {
|
|
@@ -199,17 +232,16 @@ class Controller$1 {
|
|
|
199
232
|
*/
|
|
200
233
|
this.setError = (endpoint, ...rest) => {
|
|
201
234
|
const response = rest[rest.length - 1];
|
|
202
|
-
const action =
|
|
235
|
+
const action = createSet(endpoint, {
|
|
203
236
|
args: rest.slice(0, rest.length - 1),
|
|
204
237
|
response,
|
|
205
238
|
error: true
|
|
206
239
|
});
|
|
207
240
|
return this.dispatch(action);
|
|
208
241
|
};
|
|
209
|
-
// TODO: deprecate
|
|
210
242
|
/**
|
|
211
243
|
* Another name for setError
|
|
212
|
-
* @
|
|
244
|
+
* @deprecated use https://resthooks.io/docs/api/Controller#setError instead
|
|
213
245
|
*/
|
|
214
246
|
/* istanbul ignore next */
|
|
215
247
|
this.receiveError = (endpoint, ...rest) => {
|
|
@@ -221,7 +253,7 @@ class Controller$1 {
|
|
|
221
253
|
* @see https://resthooks.io/docs/api/Controller#resolve
|
|
222
254
|
*/
|
|
223
255
|
this.resolve = (endpoint, meta) => {
|
|
224
|
-
return this.dispatch(
|
|
256
|
+
return this.dispatch(createSet(endpoint, meta));
|
|
225
257
|
};
|
|
226
258
|
/**
|
|
227
259
|
* Marks a new subscription to a given Endpoint.
|
|
@@ -303,17 +335,6 @@ class Controller$1 {
|
|
|
303
335
|
expiresAt: expiresAt || 0
|
|
304
336
|
};
|
|
305
337
|
}
|
|
306
|
-
|
|
307
|
-
// Warn users with bad configurations
|
|
308
|
-
/* istanbul ignore next */
|
|
309
|
-
if (process.env.NODE_ENV !== 'production' && schema && normalizr.isEntity(schema)) {
|
|
310
|
-
if (Array.isArray(results)) {
|
|
311
|
-
throw new Error(`fetch key ${key} has list results when single result is expected`);
|
|
312
|
-
}
|
|
313
|
-
if (typeof results === 'object') {
|
|
314
|
-
throw new Error(`fetch key ${key} has object results when entity's primary key (string) result is expected`);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
338
|
if (!this.globalCache.results[key]) this.globalCache.results[key] = new normalizr.WeakEntityMap();
|
|
318
339
|
|
|
319
340
|
// second argument is false if any entities are missing
|
|
@@ -397,65 +418,4 @@ class Snapshot {
|
|
|
397
418
|
}
|
|
398
419
|
}
|
|
399
420
|
|
|
400
|
-
/**
|
|
401
|
-
* Requesting a fetch to begin
|
|
402
|
-
*/
|
|
403
|
-
function createFetch(endpoint, {
|
|
404
|
-
args
|
|
405
|
-
}) {
|
|
406
|
-
const key = endpoint.key(...args);
|
|
407
|
-
let resolve = 0;
|
|
408
|
-
let reject = 0;
|
|
409
|
-
const promise = new Promise((a, b) => {
|
|
410
|
-
[resolve, reject] = [a, b];
|
|
411
|
-
});
|
|
412
|
-
const meta = {
|
|
413
|
-
schema: endpoint.schema,
|
|
414
|
-
type: endpoint.sideEffect ? 'mutate' : 'read',
|
|
415
|
-
args,
|
|
416
|
-
key,
|
|
417
|
-
throttle: !endpoint.sideEffect,
|
|
418
|
-
options: endpoint,
|
|
419
|
-
resolve,
|
|
420
|
-
reject,
|
|
421
|
-
promise,
|
|
422
|
-
createdAt: Date.now()
|
|
423
|
-
};
|
|
424
|
-
if (endpoint.update) {
|
|
425
|
-
meta.update = endpoint.update;
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
// TODO: Remove once EOL on this deprecated piece
|
|
429
|
-
/* istanbul ignore if */
|
|
430
|
-
if (endpoint.optimisticUpdate) {
|
|
431
|
-
meta.optimisticResponse = endpoint.optimisticUpdate(...args);
|
|
432
|
-
}
|
|
433
|
-
return {
|
|
434
|
-
type: FETCH_TYPE,
|
|
435
|
-
payload: () => endpoint(...args),
|
|
436
|
-
meta,
|
|
437
|
-
endpoint
|
|
438
|
-
};
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
class Controller extends Controller$1 {
|
|
442
|
-
constructor(..._args) {
|
|
443
|
-
super(..._args);
|
|
444
|
-
/**
|
|
445
|
-
* Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
|
|
446
|
-
* @see https://resthooks.io/docs/api/Controller#fetch
|
|
447
|
-
*/
|
|
448
|
-
this.fetch = (endpoint, ...args) => {
|
|
449
|
-
const action = createFetch(endpoint, {
|
|
450
|
-
args
|
|
451
|
-
});
|
|
452
|
-
this.dispatch(action);
|
|
453
|
-
if (endpoint.schema) {
|
|
454
|
-
return action.meta.promise.then(input => normalizr.denormalize(input, endpoint.schema, {}, args));
|
|
455
|
-
}
|
|
456
|
-
return action.meta.promise;
|
|
457
|
-
};
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
421
|
exports.Controller = Controller;
|
package/legacy/actionTypes.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const FETCH_TYPE = 'rest-hooks/fetch';
|
|
2
|
-
|
|
2
|
+
/** @deprecated use SET_TYPE instead */
|
|
3
3
|
export const RECEIVE_TYPE = 'rest-hooks/receive';
|
|
4
4
|
export const SET_TYPE = RECEIVE_TYPE;
|
|
5
5
|
export const OPTIMISTIC_TYPE = 'rest-hooks/optimistic';
|
|
@@ -9,4 +9,4 @@ 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
11
|
export const GC_TYPE = 'rest-hooks/gc';
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiUkVDRUlWRV9UWVBFIiwiU0VUX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJSRVNFVF9UWVBFIiwiU1VCU0NSSUJFX1RZUEUiLCJVTlNVQlNDUklCRV9UWVBFIiwiSU5WQUxJREFURV9UWVBFIiwiSU5WQUxJREFURUFMTF9UWVBFIiwiR0NfVFlQRSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25UeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRkVUQ0hfVFlQRSA9ICdyZXN0LWhvb2tzL2ZldGNoJyBhcyBjb25zdDtcbi8qKiBAZGVwcmVjYXRlZCB1c2UgU0VUX1RZUEUgaW5zdGVhZCAqL1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVFlQRSA9ICdyZXN0LWhvb2tzL3JlY2VpdmUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFNFVF9UWVBFID0gUkVDRUlWRV9UWVBFO1xuZXhwb3J0IGNvbnN0IE9QVElNSVNUSUNfVFlQRSA9ICdyZXN0LWhvb2tzL29wdGltaXN0aWMnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RZUEUgPSAncmVzdC1ob29rcy9yZXNldCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU1VCU0NSSUJFX1RZUEUgPSAncmVzdC1ob29rcy9zdWJzY3JpYmUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFVOU1VCU0NSSUJFX1RZUEUgPSAncmVzdC1ob29rL3Vuc3Vic2NyaWJlJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBJTlZBTElEQVRFX1RZUEUgPSAncmVzdC1ob29rcy9pbnZhbGlkYXRlJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBJTlZBTElEQVRFQUxMX1RZUEUgPSAncmVzdC1ob29rcy9pbnZhbGlkYXRlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBHQ19UWVBFID0gJ3Jlc3QtaG9va3MvZ2MnIGFzIGNvbnN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLFVBQVUsR0FBRyxrQkFBMkI7QUFDckQ7QUFDQSxPQUFPLE1BQU1DLFlBQVksR0FBRyxvQkFBNkI7QUFDekQsT0FBTyxNQUFNQyxRQUFRLEdBQUdELFlBQVk7QUFDcEMsT0FBTyxNQUFNRSxlQUFlLEdBQUcsdUJBQWdDO0FBQy9ELE9BQU8sTUFBTUMsVUFBVSxHQUFHLGtCQUEyQjtBQUNyRCxPQUFPLE1BQU1DLGNBQWMsR0FBRyxzQkFBK0I7QUFDN0QsT0FBTyxNQUFNQyxnQkFBZ0IsR0FBRyx1QkFBZ0M7QUFDaEUsT0FBTyxNQUFNQyxlQUFlLEdBQUcsdUJBQWdDO0FBQy9ELE9BQU8sTUFBTUMsa0JBQWtCLEdBQUcsMEJBQW1DO0FBQ3JFLE9BQU8sTUFBTUMsT0FBTyxHQUFHLGVBQXdCIn0=
|