@data-client/core 0.10.0 → 0.11.4
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/README.md +2 -1
- package/dist/index.js +122 -89
- package/dist/index.umd.min.js +1 -1
- package/legacy/actionTypes.js +1 -1
- package/legacy/actions.js +1 -1
- package/legacy/controller/AbortOptimistic.js +2 -0
- package/legacy/controller/Controller.js +108 -76
- package/legacy/controller/createExpireAll.js +1 -1
- package/legacy/controller/createFetch.js +1 -1
- package/legacy/controller/createInvalidate.js +1 -1
- package/legacy/controller/createInvalidateAll.js +1 -1
- package/legacy/controller/createOptimistic.js +1 -1
- package/legacy/controller/createReset.js +1 -1
- package/legacy/controller/createSet.js +1 -1
- package/legacy/controller/createSubscription.js +1 -1
- package/legacy/controller/ensurePojo.js +1 -1
- package/legacy/controller/types.js +1 -1
- package/legacy/index.js +1 -1
- package/legacy/internal.js +2 -2
- package/legacy/manager/ConnectionListener.js +1 -1
- package/legacy/manager/DefaultConnectionListener.js +1 -1
- package/legacy/manager/DevtoolsManager.js +1 -1
- package/legacy/manager/LogoutManager.js +1 -1
- package/legacy/manager/NetworkManager.js +1 -1
- package/legacy/manager/PollingSubscription.js +1 -1
- package/legacy/manager/SubscriptionManager.js +1 -1
- package/legacy/manager/applyManager.js +1 -1
- package/legacy/manager/devtoolsTypes.js +1 -1
- package/legacy/manager/index.js +1 -1
- package/legacy/middlewareTypes.js +1 -1
- package/legacy/next/index.js +1 -1
- package/legacy/state/RIC.js +1 -1
- package/legacy/state/reducer/createReducer.js +4 -4
- package/legacy/state/reducer/expireReducer.js +1 -1
- package/legacy/state/reducer/fetchReducer.js +1 -1
- package/legacy/state/reducer/invalidateReducer.js +5 -5
- package/legacy/state/reducer/setReducer.js +7 -7
- package/legacy/state/selectMeta.js +1 -1
- package/legacy/types.js +1 -1
- package/lib/actionTypes.js +1 -1
- package/lib/actions.d.ts +1 -1
- package/lib/actions.d.ts.map +1 -1
- package/lib/actions.js +1 -1
- package/lib/controller/AbortOptimistic.d.ts +3 -0
- package/lib/controller/AbortOptimistic.d.ts.map +1 -0
- package/lib/controller/AbortOptimistic.js +2 -0
- package/lib/controller/Controller.d.ts +36 -11
- package/lib/controller/Controller.d.ts.map +1 -1
- package/lib/controller/Controller.js +108 -76
- package/lib/controller/createExpireAll.js +1 -1
- package/lib/controller/createFetch.js +1 -1
- package/lib/controller/createInvalidate.js +1 -1
- package/lib/controller/createInvalidateAll.js +1 -1
- package/lib/controller/createOptimistic.js +1 -1
- package/lib/controller/createReset.js +1 -1
- package/lib/controller/createSet.js +1 -1
- package/lib/controller/createSubscription.js +1 -1
- package/lib/controller/ensurePojo.js +1 -1
- package/lib/controller/types.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/internal.d.ts +1 -1
- package/lib/internal.d.ts.map +1 -1
- package/lib/internal.js +2 -2
- package/lib/manager/ConnectionListener.js +1 -1
- package/lib/manager/DefaultConnectionListener.js +1 -1
- package/lib/manager/DevtoolsManager.js +1 -1
- package/lib/manager/LogoutManager.js +1 -1
- package/lib/manager/NetworkManager.js +1 -1
- package/lib/manager/PollingSubscription.js +1 -1
- package/lib/manager/SubscriptionManager.js +1 -1
- package/lib/manager/applyManager.js +1 -1
- package/lib/manager/devtoolsTypes.js +1 -1
- package/lib/manager/index.js +1 -1
- package/lib/middlewareTypes.js +1 -1
- package/lib/next/index.js +1 -1
- package/lib/state/RIC.js +1 -1
- package/lib/state/reducer/createReducer.js +4 -4
- package/lib/state/reducer/expireReducer.d.ts +1 -1
- package/lib/state/reducer/expireReducer.js +1 -1
- package/lib/state/reducer/fetchReducer.js +1 -1
- package/lib/state/reducer/invalidateReducer.d.ts +1 -1
- package/lib/state/reducer/invalidateReducer.js +6 -6
- package/lib/state/reducer/setReducer.d.ts.map +1 -1
- package/lib/state/reducer/setReducer.js +8 -8
- package/lib/state/selectMeta.js +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -1
- package/package.json +3 -3
- package/src/actions.ts +1 -1
- package/src/controller/AbortOptimistic.ts +1 -0
- package/src/controller/Controller.ts +185 -63
- package/src/controller/__tests__/Controller.ts +2 -4
- package/src/controller/__tests__/__snapshots__/get.ts.snap +120 -0
- package/src/controller/__tests__/get.ts +285 -0
- package/src/controller/__tests__/getResponse.ts +2 -2
- package/src/index.ts +3 -1
- package/src/internal.ts +1 -1
- package/src/manager/__tests__/logoutManager.ts +0 -2
- package/src/state/__tests__/__snapshots__/reducer.ts.snap +4 -4
- package/src/state/__tests__/reducer.ts +25 -25
- package/src/state/reducer/createReducer.ts +3 -3
- package/src/state/reducer/invalidateReducer.ts +4 -4
- package/src/state/reducer/setReducer.ts +7 -6
- package/src/types.ts +3 -1
- package/ts3.4/actions.d.ts +1 -1
- package/ts3.4/controller/AbortOptimistic.d.ts +3 -0
- package/ts3.4/controller/Controller.d.ts +47 -19
- package/ts3.4/index.d.ts +1 -1
- package/ts3.4/internal.d.ts +1 -1
- package/ts3.4/state/reducer/expireReducer.d.ts +1 -1
- package/ts3.4/state/reducer/invalidateReducer.d.ts +1 -1
- package/ts3.4/types.d.ts +1 -1
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ function useSuspense(endpoint, ...args)
|
|
|
31
31
|
const controller = useController();
|
|
32
32
|
|
|
33
33
|
const key = args[0] !== null ? endpoint.key(...args) : '';
|
|
34
|
-
const cacheResults = key && state.
|
|
34
|
+
const cacheResults = key && state.endpoints[key];
|
|
35
35
|
const meta = state.meta[key];
|
|
36
36
|
|
|
37
37
|
// Compute denormalized value
|
|
@@ -85,6 +85,7 @@ function useSuspense(endpoint, ...args)
|
|
|
85
85
|
- [ctrl.resolve](https://dataclient.io/docs/api/Controller#resolve)
|
|
86
86
|
- [ctrl.subscribe](https://dataclient.io/docs/api/Controller#subscribe)
|
|
87
87
|
- [ctrl.unsubscribe](https://dataclient.io/docs/api/Controller#unsubscribe)
|
|
88
|
+
- [ctrl.get](https://dataclient.io/docs/api/Controller#get)
|
|
88
89
|
- [ctrl.getResponse](https://dataclient.io/docs/api/Controller#getResponse)
|
|
89
90
|
- [ctrl.getError](https://dataclient.io/docs/api/Controller#getError)
|
|
90
91
|
- [ctrl.snapshot](https://dataclient.io/docs/api/Controller#snapshot)
|
package/dist/index.js
CHANGED
|
@@ -100,14 +100,14 @@ function fetchReducer(state, action) {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
function invalidateReducer(state, action) {
|
|
103
|
-
const
|
|
104
|
-
...state.
|
|
103
|
+
const endpoints = {
|
|
104
|
+
...state.endpoints
|
|
105
105
|
};
|
|
106
106
|
const meta = {
|
|
107
107
|
...state.meta
|
|
108
108
|
};
|
|
109
109
|
const invalidateKey = key => {
|
|
110
|
-
delete
|
|
110
|
+
delete endpoints[key];
|
|
111
111
|
const itemMeta = {
|
|
112
112
|
...meta[key],
|
|
113
113
|
expiresAt: 0,
|
|
@@ -119,7 +119,7 @@ function invalidateReducer(state, action) {
|
|
|
119
119
|
if (action.type === INVALIDATE_TYPE) {
|
|
120
120
|
invalidateKey(action.meta.key);
|
|
121
121
|
} else {
|
|
122
|
-
Object.keys(
|
|
122
|
+
Object.keys(endpoints).forEach(key => {
|
|
123
123
|
if (action.testKey(key)) {
|
|
124
124
|
invalidateKey(key);
|
|
125
125
|
}
|
|
@@ -127,11 +127,13 @@ function invalidateReducer(state, action) {
|
|
|
127
127
|
}
|
|
128
128
|
return {
|
|
129
129
|
...state,
|
|
130
|
-
|
|
130
|
+
endpoints,
|
|
131
131
|
meta
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
class AbortOptimistic extends Error {}
|
|
136
|
+
|
|
135
137
|
function setReducer(state, action, controller) {
|
|
136
138
|
if (action.error) {
|
|
137
139
|
return reduceError(state, action, action.payload);
|
|
@@ -147,9 +149,8 @@ function setReducer(state, action, controller) {
|
|
|
147
149
|
// compute optimistic response based on current state
|
|
148
150
|
payload = action.endpoint.getOptimisticResponse.call(action.endpoint, controller.snapshot(state, action.meta.fetchedAt), ...action.meta.args);
|
|
149
151
|
} catch (e) {
|
|
150
|
-
var _e$constructor;
|
|
151
152
|
// AbortOptimistic means 'do nothing', otherwise we count the exception as endpoint failure
|
|
152
|
-
if (
|
|
153
|
+
if (e.constructor === AbortOptimistic) {
|
|
153
154
|
return state;
|
|
154
155
|
}
|
|
155
156
|
throw e;
|
|
@@ -163,15 +164,15 @@ function setReducer(state, action, controller) {
|
|
|
163
164
|
indexes,
|
|
164
165
|
entityMeta
|
|
165
166
|
} = normalizr.normalize(payload, action.endpoint.schema, action.meta.args, state.entities, state.indexes, state.entityMeta, action.meta);
|
|
166
|
-
const
|
|
167
|
-
...state.
|
|
167
|
+
const endpoints = {
|
|
168
|
+
...state.endpoints,
|
|
168
169
|
[action.meta.key]: result
|
|
169
170
|
};
|
|
170
171
|
try {
|
|
171
172
|
if (action.endpoint.update) {
|
|
172
173
|
const updaters = action.endpoint.update(result, ...action.meta.args);
|
|
173
174
|
Object.keys(updaters).forEach(key => {
|
|
174
|
-
|
|
175
|
+
endpoints[key] = updaters[key](endpoints[key]);
|
|
175
176
|
});
|
|
176
177
|
}
|
|
177
178
|
// no reason to completely fail because of user-code error
|
|
@@ -183,7 +184,7 @@ function setReducer(state, action, controller) {
|
|
|
183
184
|
return {
|
|
184
185
|
entities,
|
|
185
186
|
indexes,
|
|
186
|
-
|
|
187
|
+
endpoints,
|
|
187
188
|
entityMeta,
|
|
188
189
|
meta: {
|
|
189
190
|
...state.meta,
|
|
@@ -196,7 +197,7 @@ function setReducer(state, action, controller) {
|
|
|
196
197
|
optimistic: filterOptimistic(state, action),
|
|
197
198
|
lastReset: state.lastReset
|
|
198
199
|
};
|
|
199
|
-
// reducer must update the state, so in case of processing errors we simply compute the
|
|
200
|
+
// reducer must update the state, so in case of processing errors we simply compute the endpoints inline
|
|
200
201
|
} catch (error) {
|
|
201
202
|
if (typeof error === 'object') {
|
|
202
203
|
error.message = `Error processing ${action.meta.key}\n\nFull Schema: ${JSON.stringify(action.endpoint.schema, undefined, 2)}\n\nError:\n${error.message}`;
|
|
@@ -252,8 +253,8 @@ function createReducer(controller) {
|
|
|
252
253
|
(_entities$key = state.entities[key]) == null || delete _entities$key[pk];
|
|
253
254
|
(_entityMeta$key = state.entityMeta[key]) == null || delete _entityMeta$key[pk];
|
|
254
255
|
});
|
|
255
|
-
action.
|
|
256
|
-
delete state.
|
|
256
|
+
action.endpoints.forEach(fetchKey => {
|
|
257
|
+
delete state.endpoints[fetchKey];
|
|
257
258
|
delete state.meta[fetchKey];
|
|
258
259
|
});
|
|
259
260
|
return state;
|
|
@@ -283,7 +284,7 @@ function createReducer(controller) {
|
|
|
283
284
|
const initialState = {
|
|
284
285
|
entities: {},
|
|
285
286
|
indexes: {},
|
|
286
|
-
|
|
287
|
+
endpoints: {},
|
|
287
288
|
meta: {},
|
|
288
289
|
entityMeta: {},
|
|
289
290
|
optimistic: [],
|
|
@@ -292,7 +293,7 @@ const initialState = {
|
|
|
292
293
|
|
|
293
294
|
var internal = /*#__PURE__*/Object.freeze({
|
|
294
295
|
__proto__: null,
|
|
295
|
-
|
|
296
|
+
MemoCache: normalizr.MemoCache,
|
|
296
297
|
INVALID: normalizr.INVALID,
|
|
297
298
|
RIC: RIC$1,
|
|
298
299
|
initialState: initialState
|
|
@@ -453,13 +454,14 @@ class Controller {
|
|
|
453
454
|
* @see https://dataclient.io/docs/api/Controller#getState
|
|
454
455
|
*/
|
|
455
456
|
|
|
457
|
+
/**
|
|
458
|
+
* Singleton to maintain referential equality between calls
|
|
459
|
+
*/
|
|
460
|
+
|
|
456
461
|
constructor({
|
|
457
462
|
dispatch = unsetDispatch,
|
|
458
463
|
getState = unsetState,
|
|
459
|
-
|
|
460
|
-
entities: {},
|
|
461
|
-
results: {}
|
|
462
|
-
}
|
|
464
|
+
memo = new normalizr.MemoCache()
|
|
463
465
|
} = {}) {
|
|
464
466
|
/*************** Action Dispatchers ***************/
|
|
465
467
|
/**
|
|
@@ -584,75 +586,96 @@ class Controller {
|
|
|
584
586
|
const args = rest.slice(0, rest.length - 1);
|
|
585
587
|
const key = endpoint.key(...args);
|
|
586
588
|
const meta = selectMeta(state, key);
|
|
587
|
-
const
|
|
588
|
-
if (
|
|
589
|
+
const error = state.endpoints[key];
|
|
590
|
+
if (error !== undefined && (meta == null ? void 0 : meta.errorPolicy) === 'soft') return;
|
|
589
591
|
return meta == null ? void 0 : meta.error;
|
|
590
592
|
};
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
593
|
+
this.dispatch = dispatch;
|
|
594
|
+
this.getState = getState;
|
|
595
|
+
this.memo = memo;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
|
|
599
|
+
* @see https://dataclient.io/docs/api/Controller#getResponse
|
|
600
|
+
*/
|
|
601
|
+
getResponse(endpoint, ...rest) {
|
|
602
|
+
const state = rest[rest.length - 1];
|
|
603
|
+
// this is typescript generics breaking
|
|
604
|
+
const args = rest.slice(0, rest.length - 1)
|
|
605
|
+
// handle FormData
|
|
606
|
+
.map(ensurePojo$1);
|
|
607
|
+
const isActive = args.length !== 1 || args[0] !== null;
|
|
608
|
+
const key = isActive ? endpoint.key(...args) : '';
|
|
609
|
+
const cacheEndpoints = isActive ? state.endpoints[key] : undefined;
|
|
610
|
+
const schema = endpoint.schema;
|
|
611
|
+
const meta = selectMeta(state, key);
|
|
612
|
+
let expiresAt = meta == null ? void 0 : meta.expiresAt;
|
|
613
|
+
// if we have no endpoint entry, and our endpoint has a schema - try querying the store
|
|
614
|
+
const shouldQuery = cacheEndpoints === undefined && schema !== undefined;
|
|
615
|
+
const input = shouldQuery ?
|
|
616
|
+
// nothing in endpoints cache, so try querying if we have a schema to do so
|
|
617
|
+
this.memo.buildQueryKey(key, schema, args, state.entities, state.indexes) : cacheEndpoints;
|
|
618
|
+
if (!isActive) {
|
|
619
|
+
// when not active simply return the query input without denormalizing
|
|
620
|
+
return {
|
|
621
|
+
data: input,
|
|
622
|
+
expiryStatus: normalizr.ExpiryStatus.Valid,
|
|
623
|
+
expiresAt: Infinity
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
let isInvalid = false;
|
|
627
|
+
if (shouldQuery) {
|
|
628
|
+
isInvalid = !normalizr.validateQueryKey(input);
|
|
629
|
+
} else if (!schema || !schemaHasEntity(schema)) {
|
|
630
|
+
return {
|
|
631
|
+
data: cacheEndpoints,
|
|
632
|
+
expiryStatus: meta != null && meta.invalidated ? normalizr.ExpiryStatus.Invalid : cacheEndpoints && !endpoint.invalidIfStale ? normalizr.ExpiryStatus.Valid : normalizr.ExpiryStatus.InvalidIfStale,
|
|
633
|
+
expiresAt: expiresAt || 0
|
|
634
|
+
};
|
|
635
|
+
}
|
|
629
636
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
const invalidDenormalize = typeof data === 'symbol';
|
|
637
|
+
// second argument is false if any entities are missing
|
|
638
|
+
// eslint-disable-next-line prefer-const
|
|
639
|
+
const {
|
|
640
|
+
data,
|
|
641
|
+
paths
|
|
642
|
+
} = this.memo.denormalize(input, schema, state.entities, args);
|
|
637
643
|
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
644
|
+
// note: isInvalid can only be true if shouldQuery is true
|
|
645
|
+
if (!expiresAt && isInvalid) expiresAt = 1;
|
|
646
|
+
return this.getSchemaResponse(data, paths, state.entityMeta, expiresAt, endpoint.invalidIfStale || isInvalid, meta);
|
|
647
|
+
}
|
|
642
648
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
649
|
+
/**
|
|
650
|
+
* Queries the store for a Querable schema
|
|
651
|
+
* @see https://dataclient.io/docs/api/Controller#get
|
|
652
|
+
*/
|
|
653
|
+
get(schema, ...rest) {
|
|
654
|
+
const state = rest[rest.length - 1];
|
|
655
|
+
// this is typescript generics breaking
|
|
656
|
+
const args = rest.slice(0, rest.length - 1).map(ensurePojo$1);
|
|
657
|
+
|
|
658
|
+
// NOTE: different orders can result in cache busting here; but since it's just a perf penalty we will allow for now
|
|
659
|
+
const key = JSON.stringify(args);
|
|
660
|
+
return this.memo.query(key, schema, args, state.entities, state.indexes);
|
|
661
|
+
}
|
|
662
|
+
getSchemaResponse(data, paths, entityMeta, expiresAt, invalidIfStale, meta = {}) {
|
|
663
|
+
const invalidDenormalize = typeof data === 'symbol';
|
|
664
|
+
|
|
665
|
+
// fallback to entity expiry time
|
|
666
|
+
if (!expiresAt) {
|
|
667
|
+
expiresAt = entityExpiresAt(paths, entityMeta);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
// https://dataclient.io/docs/concepts/expiry-policy#expiry-status
|
|
671
|
+
// we don't track the difference between stale or fresh because that is tied to triggering
|
|
672
|
+
// conditions
|
|
673
|
+
const expiryStatus = meta != null && meta.invalidated || invalidDenormalize && !(meta != null && meta.error) ? normalizr.ExpiryStatus.Invalid : invalidDenormalize || invalidIfStale ? normalizr.ExpiryStatus.InvalidIfStale : normalizr.ExpiryStatus.Valid;
|
|
674
|
+
return {
|
|
675
|
+
data,
|
|
676
|
+
expiryStatus,
|
|
677
|
+
expiresAt
|
|
652
678
|
};
|
|
653
|
-
this.dispatch = dispatch;
|
|
654
|
-
this.getState = getState;
|
|
655
|
-
this.globalCache = globalCache;
|
|
656
679
|
}
|
|
657
680
|
}
|
|
658
681
|
|
|
@@ -674,7 +697,7 @@ function entityExpiresAt(paths, entityMeta) {
|
|
|
674
697
|
|
|
675
698
|
/** Determine whether the schema has any entities.
|
|
676
699
|
*
|
|
677
|
-
* Without entities, denormalization is not needed, and results should not be
|
|
700
|
+
* Without entities, denormalization is not needed, and results should not be queried.
|
|
678
701
|
*/
|
|
679
702
|
function schemaHasEntity(schema) {
|
|
680
703
|
if (normalizr.isEntity(schema)) return true;
|
|
@@ -693,11 +716,7 @@ class Snapshot {
|
|
|
693
716
|
this.state = void 0;
|
|
694
717
|
this.controller = void 0;
|
|
695
718
|
this.fetchedAt = void 0;
|
|
696
|
-
|
|
697
|
-
/** @see https://dataclient.io/docs/api/Snapshot#getResponse */
|
|
698
|
-
this.getResponse = (endpoint, ...args) => {
|
|
699
|
-
return this.controller.getResponse(endpoint, ...args, this.state);
|
|
700
|
-
};
|
|
719
|
+
this.abort = new AbortOptimistic();
|
|
701
720
|
/** @see https://dataclient.io/docs/api/Snapshot#getError */
|
|
702
721
|
this.getError = (endpoint, ...args) => {
|
|
703
722
|
return this.controller.getError(endpoint, ...args, this.state);
|
|
@@ -706,6 +725,20 @@ class Snapshot {
|
|
|
706
725
|
this.controller = controller;
|
|
707
726
|
this.fetchedAt = fetchedAt;
|
|
708
727
|
}
|
|
728
|
+
|
|
729
|
+
/*************** Data Access ***************/
|
|
730
|
+
/** @see https://dataclient.io/docs/api/Snapshot#getResponse */
|
|
731
|
+
|
|
732
|
+
getResponse(endpoint, ...args) {
|
|
733
|
+
return this.controller.getResponse(endpoint, ...args, this.state);
|
|
734
|
+
}
|
|
735
|
+
/**
|
|
736
|
+
* Retrieved memoized value for any Querable schema
|
|
737
|
+
* @see https://dataclient.io/docs/api/Snapshot#get
|
|
738
|
+
*/
|
|
739
|
+
get(schema, ...args) {
|
|
740
|
+
return this.controller.get(schema, ...args, this.state);
|
|
741
|
+
}
|
|
709
742
|
}
|
|
710
743
|
|
|
711
744
|
class ResetError extends Error {
|
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).RDC=e.RDC||{},e.RDC.Core={}),e.normalizr)}(this,(function(e,t){"use strict";var s="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);const i="rdc/fetch",r="rdc/set",n="rdc/optimistic",a="rdc/reset",o="rdc/subscribe",l="rdc/unsubscribe",c="rdc/invalidate",h="rdc/invalidateall",d="rdc/expireall",u="rdc/gc";var p=Object.freeze({__proto__:null,FETCH_TYPE:i,SET_TYPE:r,OPTIMISTIC_TYPE:n,RESET_TYPE:a,SUBSCRIBE_TYPE:o,UNSUBSCRIBE_TYPE:l,INVALIDATE_TYPE:c,INVALIDATEALL_TYPE:h,EXPIREALL_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,a=Date.now(),o={args:t,fetchedAt:s,date:a,expiresAt:a+r,key:e.key(...t)};return{type:n,endpoint:e,meta:o}}(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===n?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function g(e){return function(s,o){switch(s||(s=v),o.type){case u:return o.entities.forEach((([e,t])=>{var i,r;null==(i=s.entities[e])||delete i[t],null==(r=s.entityMeta[e])||delete r[t]})),o.results.forEach((e=>{delete s.results[e],delete s.meta[e]})),s;case i:return f(s,o);case n:case r:return function(e,s,i){if(s.error)return m(e,s,s.payload);try{var r;let o;if(s.type===n){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 a;if("AbortOptimistic"===(null==(a=t.constructor)?void 0:a.name))return e;throw t}}else o=s.payload;const{result:l,entities:c,indexes:h,entityMeta:d}=t.normalize(o,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,o,e);case h:case c: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===c?r(t.meta.key):Object.keys(s).forEach((e=>{t.testKey(e)&&r(e)})),Object.assign({},e,{results:s,meta:i})}(s,o);case d: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,o);case a:return Object.assign({},v,{lastReset:o.date});default:return s}}}const v={entities:{},indexes:{},results:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var b=Object.freeze({__proto__:null,inferResults:t.inferResults,INVALID:t.INVALID,RIC:s,initialState:v});function E(e,{args:t}){const s=e.key(...t);let r=0,n=0;const a=new Promise(((e,t)=>{[r,n]=[e,t]})),o={args:t,key:s,throttle:!e.sideEffect,resolve:r,reject:n,promise:a,createdAt:Date.now(),nm:!1};return{type:i,payload:()=>e(...t),meta:o,endpoint:e}}var L="undefined"!=typeof FormData?e=>e instanceof FormData?Object.fromEntries(e.entries()):e:e=>e;function O(e,{args:t,fetchedAt:s,response:i,error:n=!1}){var a,o;const l=n?null!=(a=e.errorExpiryLength)?a:1e3:null!=(o=e.dataExpiryLength)?o:6e4,c=Date.now(),h={args:t.map(L),fetchedAt:null!=s?s:c,date:c,expiresAt:c+l,key:e.key(...t)},d={type:r,payload:i,endpoint:e,meta:h};return n&&(d.error=!0),d}function I(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.")},w=()=>v;class A{constructor({dispatch:e=S,getState:s=w,globalCache:i={entities:{},results:{}}}={}){this.fetch=(e,...s)=>{const i=E(e,{args:s});return this.dispatch(i),e.schema?i.meta.promise.then((i=>t.denormalize(i,e.schema,{},s))):i.meta.promise},this.fetchIfStale=(e,...s)=>{const{data:i,expiresAt:r,expiryStatus:n}=this.getResponse(e,...s,this.getState());return n!==t.ExpiryStatus.Invalid&&Date.now()<=r?i:this.fetch(e,...s)},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:c,meta:{key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch({type:h,testKey:t=>e.testKey(t)}),this.expireAll=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=O(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},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.resolve=(e,t)=>this.dispatch(O(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:o,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:l,endpoint:e,meta:{args:t,key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new k(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).map(L),n=1!==r.length||null!==r[0],a=n?e.key(...r):"",o=n?i.results[a]:void 0,l=e.schema,c=I(i,a);let h,d=null==c?void 0:c.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||!x(e.schema))return{data:h,expiryStatus:null!=c&&c.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:f}=t.denormalizeCached(h,l,i.entities,this.globalCache.entities,this.globalCache.results[a],r),m="symbol"==typeof p;d||(d=function(e,t){let s=1/0;for(const{pk:r,key:n}of e){var i;const e=null==(i=t[n])||null==(i=i[r])?void 0:i.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 x(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&x(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?x(t):Object.values(t).some((e=>x(e)))}return!1}class k{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 j extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}class T{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 _;_="undefined"!=typeof navigator&&"function"==typeof addEventListener?T:R;var q=_;let P={};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=q,e.DevToolsManager=class{constructor(e,t){this.started=!1,this.actions=[],this.maxBufferLength=100,this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},P,{config:e})),this.devTools?this.middleware=e=>{this.controller=e;const s=g(e);let i=e.getState();return r=>n=>{const a=r(n);return i=this.started?s(i,n):e.getState(),a.then((()=>{null!=t&&t(n)||this.handleAction(n,i.optimistic.reduce(s,i))})),a}}:this.middleware=()=>e=>t=>e(t)}handleAction(e,t){this.started?this.devTools.send(e,t,void 0,"RDC"):(this.actions.length>this.maxBufferLength&&(this.actions=this.actions.slice(this.maxBufferLength/2)),this.actions.push([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===r&&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 r: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.handleSet(O(s.endpoint,{args:s.meta.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleSet(s)}}));case a:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(s).then((()=>{for(const t in e)e[t](new j)}))}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:a}=e.meta,o=()=>{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 a>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:a}),t})).catch((t=>{const s=this.getLastReset();throw a>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:a,error:!0}),t})),s};return i?this.throttle(s,o,a).then((e=>r(e))).catch((e=>n(e))):o().catch((()=>{}))}handleSet(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 q,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=j,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 o:try{this.handleSubscribe(t)}catch(e){console.error(e)}return Promise.resolve();case l: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=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,s(t))}))},e.createFetch=E,e.createReducer=g,e.createSet=O,e.initialState=v,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).RDC=e.RDC||{},e.RDC.Core={}),e.normalizr)}(this,(function(e,t){"use strict";var s="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);const i="rdc/fetch",n="rdc/set",r="rdc/optimistic",a="rdc/reset",o="rdc/subscribe",c="rdc/unsubscribe",l="rdc/invalidate",h="rdc/invalidateall",d="rdc/expireall",u="rdc/gc";var p=Object.freeze({__proto__:null,FETCH_TYPE:i,SET_TYPE:n,OPTIMISTIC_TYPE:r,RESET_TYPE:a,SUBSCRIBE_TYPE:o,UNSUBSCRIBE_TYPE:c,INVALIDATE_TYPE:l,INVALIDATEALL_TYPE:h,EXPIREALL_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 n=null!=(i=e.dataExpiryLength)?i:6e4,a=Date.now(),o={args:t,fetchedAt:s,date:a,expiresAt:a+n,key:e.key(...t)};return{type:r,endpoint:e,meta:o}}(t.endpoint,{args:t.meta.args,fetchedAt:t.meta.createdAt}),Object.assign({},e,{optimistic:[...e.optimistic,s]})):e}class m extends Error{}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===r?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function v(e){return function(s,o){switch(s||(s=E),o.type){case u:return o.entities.forEach((([e,t])=>{var i,n;null==(i=s.entities[e])||delete i[t],null==(n=s.entityMeta[e])||delete n[t]})),o.endpoints.forEach((e=>{delete s.endpoints[e],delete s.meta[e]})),s;case i:return f(s,o);case r:case n:return function(e,s,i){if(s.error)return y(e,s,s.payload);try{var n;let a;if(s.type===r){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){if(t.constructor===m)return e;throw t}}else a=s.payload;const{result:o,entities:c,indexes:l,entityMeta:h}=t.normalize(a,s.endpoint.schema,s.meta.args,e.entities,e.indexes,e.entityMeta,s.meta),d=Object.assign({},e.endpoints,{[s.meta.key]:o});try{if(s.endpoint.update){const e=s.endpoint.update(o,...s.meta.args);Object.keys(e).forEach((t=>{d[t]=e[t](d[t])}))}}catch(e){console.error(`The following error occured during Endpoint.update() for ${s.meta.key}`),console.error(e)}return{entities:c,indexes:l,endpoints:d,entityMeta:h,meta:Object.assign({},e.meta,{[s.meta.key]:{date:s.meta.date,expiresAt:s.meta.expiresAt,prevExpiresAt:null==(n=e.meta[s.meta.key])?void 0:n.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,o,e);case h:case l:return function(e,t){const s=Object.assign({},e.endpoints),i=Object.assign({},e.meta),n=e=>{delete s[e];const t=Object.assign({},i[e],{expiresAt:0,invalidated:!0});delete t.error,i[e]=t};return t.type===l?n(t.meta.key):Object.keys(s).forEach((e=>{t.testKey(e)&&n(e)})),Object.assign({},e,{endpoints:s,meta:i})}(s,o);case d: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,o);case a:return Object.assign({},E,{lastReset:o.date});default:return s}}}const E={entities:{},indexes:{},endpoints:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var b=Object.freeze({__proto__:null,MemoCache:t.MemoCache,INVALID:t.INVALID,RIC:s,initialState:E});function L(e,{args:t}){const s=e.key(...t);let n=0,r=0;const a=new Promise(((e,t)=>{[n,r]=[e,t]})),o={args:t,key:s,throttle:!e.sideEffect,resolve:n,reject:r,promise:a,createdAt:Date.now(),nm:!1};return{type:i,payload:()=>e(...t),meta:o,endpoint:e}}var O="undefined"!=typeof FormData?e=>e instanceof FormData?Object.fromEntries(e.entries()):e:e=>e;function I(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.map(O),fetchedAt:null!=s?s:l,date:l,expiresAt:l+c,key:e.key(...t)},d={type:n,payload:i,endpoint:e,meta:h};return r&&(d.error=!0),d}function S(e,t){return e.meta[t]}const w=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},A=()=>E;class x{constructor({dispatch:e=w,getState:s=A,memo:i=new t.MemoCache}={}){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.fetchIfStale=(e,...s)=>{const{data:i,expiresAt:n,expiryStatus:r}=this.getResponse(e,...s,this.getState());return r!==t.ExpiryStatus.Invalid&&Date.now()<=n?i:this.fetch(e,...s)},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:l,meta:{key:e.key(...t)}}}(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch({type:h,testKey:t=>e.testKey(t)}),this.expireAll=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=I(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},this.setError=(e,...t)=>{const s=t[t.length-1],i=I(e,{args:t.slice(0,t.length-1),response:s,error:!0});return this.dispatch(i)},this.resolve=(e,t)=>this.dispatch(I(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(function(e,{args:t}){return{type:o,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 j(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),n=e.key(...i),r=S(s,n);return void 0===s.endpoints[n]||"soft"!==(null==r?void 0:r.errorPolicy)?null==r?void 0:r.error:void 0},this.dispatch=e,this.getState=s,this.memo=i}getResponse(e,...s){const i=s[s.length-1],n=s.slice(0,s.length-1).map(O),r=1!==n.length||null!==n[0],a=r?e.key(...n):"",o=r?i.endpoints[a]:void 0,c=e.schema,l=S(i,a);let h=null==l?void 0:l.expiresAt;const d=void 0===o&&void 0!==c,u=d?this.memo.buildQueryKey(a,c,n,i.entities,i.indexes):o;if(!r)return{data:u,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};let p=!1;if(d)p=!t.validateQueryKey(u);else if(!c||!k(c))return{data:o,expiryStatus:null!=l&&l.invalidated?t.ExpiryStatus.Invalid:o&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:h||0};const{data:f,paths:m}=this.memo.denormalize(u,c,i.entities,n);return!h&&p&&(h=1),this.getSchemaResponse(f,m,i.entityMeta,h,e.invalidIfStale||p,l)}get(e,...t){const s=t[t.length-1],i=t.slice(0,t.length-1).map(O),n=JSON.stringify(i);return this.memo.query(n,e,i,s.entities,s.indexes)}getSchemaResponse(e,s,i,n,r,a={}){const o="symbol"==typeof e;n||(n=function(e,t){let s=1/0;for(const{pk:n,key:r}of e){var i;const e=null==(i=t[r])||null==(i=i[n])?void 0:i.expiresAt;e<s&&(s=e)}return s}(s,i));return{data:e,expiryStatus:null!=a&&a.invalidated||o&&(null==a||!a.error)?t.ExpiryStatus.Invalid:o||r?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:n}}}function k(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&k(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?k(t):Object.values(t).some((e=>k(e)))}return!1}class j{constructor(e,t,s=0){this.state=void 0,this.controller=void 0,this.fetchedAt=void 0,this.abort=new m,this.getError=(e,...t)=>this.controller.getError(e,...t,this.state),this.state=t,this.controller=e,this.fetchedAt=s}getResponse(e,...t){return this.controller.getResponse(e,...t,this.state)}get(e,...t){return this.controller.get(e,...t,this.state)}}class T extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}class R{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 _{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let q;q="undefined"!=typeof navigator&&"function"==typeof addEventListener?R:_;var P=q;let D={};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=x,e.DefaultConnectionListener=P,e.DevToolsManager=class{constructor(e,t){this.started=!1,this.actions=[],this.maxBufferLength=100,this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},D,{config:e})),this.devTools?this.middleware=e=>{this.controller=e;const s=v(e);let i=e.getState();return n=>r=>{const a=n(r);return i=this.started?s(i,r):e.getState(),a.then((()=>{null!=t&&t(r)||this.handleAction(r,i.optimistic.reduce(s,i))})),a}}:this.middleware=()=>e=>t=>e(t)}handleAction(e,t){this.started?this.devTools.send(e,t,void 0,"RDC"):(this.actions.length>this.maxBufferLength&&(this.actions=this.actions.slice(this.maxBufferLength/2)),this.actions.push([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 x,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.handleSet(I(s.endpoint,{args:s.meta.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleSet(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:n,reject:r,createdAt:a}=e.meta,o=()=>{let s=t();return i||(s=(e=>e.then((e=>(n(e),e))).catch((e=>{throw r(e),e})))(s)),s=s.then((t=>{let s=this.getLastReset();return a>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:a}),t})).catch((t=>{const s=this.getLastReset();throw a>=s&&this.controller.resolve(e.endpoint,{args:e.meta.args,response:t,fetchedAt:a,error:!0}),t})),s};return i?this.throttle(s,o,a).then((e=>n(e))).catch((e=>r(e))):o().catch((()=>{}))}handleSet(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 n=this.getLastReset();return e in this.fetched&&this.fetchedAt[e]>n||(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=T,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.controller=new x,this.Subscription=e,this.middleware=e=>(this.controller=e,e=>t=>{switch(t.type){case o: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=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,s(t))}))},e.createFetch=L,e.createReducer=v,e.createSet=I,e.initialState=E,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/legacy/actionTypes.js
CHANGED
|
@@ -8,4 +8,4 @@ export const INVALIDATE_TYPE = 'rdc/invalidate';
|
|
|
8
8
|
export const INVALIDATEALL_TYPE = 'rdc/invalidateall';
|
|
9
9
|
export const EXPIREALL_TYPE = 'rdc/expireall';
|
|
10
10
|
export const GC_TYPE = 'rdc/gc';
|
|
11
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiU0VUX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJSRVNFVF9UWVBFIiwiU1VCU0NSSUJFX1RZUEUiLCJVTlNVQlNDUklCRV9UWVBFIiwiSU5WQUxJREFURV9UWVBFIiwiSU5WQUxJREFURUFMTF9UWVBFIiwiRVhQSVJFQUxMX1RZUEUiLCJHQ19UWVBFIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvblR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGRVRDSF9UWVBFID0gJ3JkYy9mZXRjaCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU0VUX1RZUEUgPSAncmRjL3NldCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgT1BUSU1JU1RJQ19UWVBFID0gJ3JkYy9vcHRpbWlzdGljJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBSRVNFVF9UWVBFID0gJ3JkYy9yZXNldCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU1VCU0NSSUJFX1RZUEUgPSAncmRjL3N1YnNjcmliZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgVU5TVUJTQ1JJQkVfVFlQRSA9ICdyZGMvdW5zdWJzY3JpYmUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IElOVkFMSURBVEVfVFlQRSA9ICdyZGMvaW52YWxpZGF0ZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgSU5WQUxJREFURUFMTF9UWVBFID0gJ3JkYy9pbnZhbGlkYXRlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBFWFBJUkVBTExfVFlQRSA9ICdyZGMvZXhwaXJlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBHQ19UWVBFID0gJ3JkYy9nYycgYXMgY29uc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTUEsVUFBVSxHQUFHLFdBQW9CO0FBQzlDLE9BQU8sTUFBTUMsUUFBUSxHQUFHLFNBQWtCO0FBQzFDLE9BQU8sTUFBTUMsZUFBZSxHQUFHLGdCQUF5QjtBQUN4RCxPQUFPLE1BQU1DLFVBQVUsR0FBRyxXQUFvQjtBQUM5QyxPQUFPLE1BQU1DLGNBQWMsR0FBRyxlQUF3QjtBQUN0RCxPQUFPLE1BQU1DLGdCQUFnQixHQUFHLGlCQUEwQjtBQUMxRCxPQUFPLE1BQU1DLGVBQWUsR0FBRyxnQkFBeUI7QUFDeEQsT0FBTyxNQUFNQyxrQkFBa0IsR0FBRyxtQkFBNEI7QUFDOUQsT0FBTyxNQUFNQyxjQUFjLEdBQUcsZUFBd0I7QUFDdEQsT0FBTyxNQUFNQyxPQUFPLEdBQUcsUUFBaUIiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/legacy/actions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFbmRwb2ludEludGVyZmFjZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VUX1RZUEUsXG4gIFJFU0VUX1RZUEUsXG4gIEZFVENIX1RZUEUsXG4gIFNVQlNDUklCRV9UWVBFLFxuICBVTlNVQlNDUklCRV9UWVBFLFxuICBJTlZBTElEQVRFX1RZUEUsXG4gIEdDX1RZUEUsXG4gIE9QVElNSVNUSUNfVFlQRSxcbiAgSU5WQUxJREFURUFMTF9UWVBFLFxuICBFWFBJUkVBTExfVFlQRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qIFNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRNZXRhIHtcbiAgYXJnczogcmVhZG9ubHkgYW55W107XG4gIGtleTogc3RyaW5nO1xuICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgZGF0ZTogbnVtYmVyO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0QWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IFNldE1ldGE7XG4gIHBheWxvYWQ6IFJlc29sdmVUeXBlPEU+O1xuICBlcnJvcj86IGZhbHNlO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IFNldE1ldGE7XG4gIHBheWxvYWQ6IFVua25vd25FcnJvcjtcbiAgZXJyb3I6IHRydWU7XG59XG5leHBvcnQgdHlwZSBTZXRBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiA9XG4gIHwgU2V0QWN0aW9uU3VjY2VzczxFPlxuICB8IFNldEFjdGlvbkVycm9yPEU+O1xuXG4vKiBGRVRDSCAqL1xuZXhwb3J0IGludGVyZmFjZSBGZXRjaE1ldGEge1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIHRocm90dGxlOiBib29sZWFuO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIHByb21pc2U6IFByb21pc2VMaWtlPGFueT47XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICAvLyBpbmRpY2F0ZXMgd2hldGhlciBuZXR3b3JrIG1hbmFnZXIgcHJvY2Vzc2VkIGl0XG4gIG5tPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaEFjdGlvbjxFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQ+IHtcbiAgdHlwZTogdHlwZW9mIEZFVENIX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBGZXRjaE1ldGE7XG4gIHBheWxvYWQ6ICgpID0+IFJldHVyblR5cGU8RT47XG59XG5cbi8qIE9QVElNSVNUSUMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pc3RpY0FjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBPUFRJTUlTVElDX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBlcnJvcj86IGZhbHNlO1xufVxuXG4vKiBTVUJTQ1JJQkUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaWJlQWN0aW9uPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQsXG4+IHtcbiAgdHlwZTogdHlwZW9mIFNVQlNDUklCRV9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YToge1xuICAgIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuc3Vic2NyaWJlQWN0aW9uPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQsXG4+
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFbmRwb2ludEludGVyZmFjZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VUX1RZUEUsXG4gIFJFU0VUX1RZUEUsXG4gIEZFVENIX1RZUEUsXG4gIFNVQlNDUklCRV9UWVBFLFxuICBVTlNVQlNDUklCRV9UWVBFLFxuICBJTlZBTElEQVRFX1RZUEUsXG4gIEdDX1RZUEUsXG4gIE9QVElNSVNUSUNfVFlQRSxcbiAgSU5WQUxJREFURUFMTF9UWVBFLFxuICBFWFBJUkVBTExfVFlQRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qIFNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRNZXRhIHtcbiAgYXJnczogcmVhZG9ubHkgYW55W107XG4gIGtleTogc3RyaW5nO1xuICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgZGF0ZTogbnVtYmVyO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0QWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IFNldE1ldGE7XG4gIHBheWxvYWQ6IFJlc29sdmVUeXBlPEU+O1xuICBlcnJvcj86IGZhbHNlO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IFNldE1ldGE7XG4gIHBheWxvYWQ6IFVua25vd25FcnJvcjtcbiAgZXJyb3I6IHRydWU7XG59XG5leHBvcnQgdHlwZSBTZXRBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiA9XG4gIHwgU2V0QWN0aW9uU3VjY2VzczxFPlxuICB8IFNldEFjdGlvbkVycm9yPEU+O1xuXG4vKiBGRVRDSCAqL1xuZXhwb3J0IGludGVyZmFjZSBGZXRjaE1ldGEge1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIHRocm90dGxlOiBib29sZWFuO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIHByb21pc2U6IFByb21pc2VMaWtlPGFueT47XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICAvLyBpbmRpY2F0ZXMgd2hldGhlciBuZXR3b3JrIG1hbmFnZXIgcHJvY2Vzc2VkIGl0XG4gIG5tPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaEFjdGlvbjxFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQ+IHtcbiAgdHlwZTogdHlwZW9mIEZFVENIX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBGZXRjaE1ldGE7XG4gIHBheWxvYWQ6ICgpID0+IFJldHVyblR5cGU8RT47XG59XG5cbi8qIE9QVElNSVNUSUMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pc3RpY0FjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBPUFRJTUlTVElDX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBlcnJvcj86IGZhbHNlO1xufVxuXG4vKiBTVUJTQ1JJQkUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaWJlQWN0aW9uPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQsXG4+IHtcbiAgdHlwZTogdHlwZW9mIFNVQlNDUklCRV9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YToge1xuICAgIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuc3Vic2NyaWJlQWN0aW9uPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQsXG4+IHtcbiAgdHlwZTogdHlwZW9mIFVOU1VCU0NSSUJFX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiB7XG4gICAgYXJnczogcmVhZG9ubHkgYW55W107XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qIEVYUElSWSAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBpcmVBbGxBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgRVhQSVJFQUxMX1RZUEU7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuLyogSU5WQUxJREFURSAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVBTExfVFlQRTtcbiAgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRhdGVBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgSU5WQUxJREFURV9UWVBFO1xuICBtZXRhOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qIFJFU0VUICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0QWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIFJFU0VUX1RZUEU7XG4gIGRhdGU6IG51bWJlcjtcbn1cblxuLyogR0MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR0NBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgR0NfVFlQRTtcbiAgZW50aXRpZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcbiAgZW5kcG9pbnRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uVHlwZXMgPVxuICB8IEZldGNoQWN0aW9uXG4gIHwgT3B0aW1pc3RpY0FjdGlvblxuICB8IFNldEFjdGlvblxuICB8IFN1YnNjcmliZUFjdGlvblxuICB8IFVuc3Vic2NyaWJlQWN0aW9uXG4gIHwgSW52YWxpZGF0ZUFjdGlvblxuICB8IEludmFsaWRhdGVBbGxBY3Rpb25cbiAgfCBFeHBpcmVBbGxBY3Rpb25cbiAgfCBSZXNldEFjdGlvblxuICB8IEdDQWN0aW9uO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default class AbortOptimistic extends Error {}
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBYm9ydE9wdGltaXN0aWMiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0Fib3J0T3B0aW1pc3RpYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBBYm9ydE9wdGltaXN0aWMgZXh0ZW5kcyBFcnJvciB7fVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLE1BQU1BLGVBQWUsU0FBU0MsS0FBSyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|