@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.
Files changed (115) hide show
  1. package/README.md +2 -1
  2. package/dist/index.js +122 -89
  3. package/dist/index.umd.min.js +1 -1
  4. package/legacy/actionTypes.js +1 -1
  5. package/legacy/actions.js +1 -1
  6. package/legacy/controller/AbortOptimistic.js +2 -0
  7. package/legacy/controller/Controller.js +108 -76
  8. package/legacy/controller/createExpireAll.js +1 -1
  9. package/legacy/controller/createFetch.js +1 -1
  10. package/legacy/controller/createInvalidate.js +1 -1
  11. package/legacy/controller/createInvalidateAll.js +1 -1
  12. package/legacy/controller/createOptimistic.js +1 -1
  13. package/legacy/controller/createReset.js +1 -1
  14. package/legacy/controller/createSet.js +1 -1
  15. package/legacy/controller/createSubscription.js +1 -1
  16. package/legacy/controller/ensurePojo.js +1 -1
  17. package/legacy/controller/types.js +1 -1
  18. package/legacy/index.js +1 -1
  19. package/legacy/internal.js +2 -2
  20. package/legacy/manager/ConnectionListener.js +1 -1
  21. package/legacy/manager/DefaultConnectionListener.js +1 -1
  22. package/legacy/manager/DevtoolsManager.js +1 -1
  23. package/legacy/manager/LogoutManager.js +1 -1
  24. package/legacy/manager/NetworkManager.js +1 -1
  25. package/legacy/manager/PollingSubscription.js +1 -1
  26. package/legacy/manager/SubscriptionManager.js +1 -1
  27. package/legacy/manager/applyManager.js +1 -1
  28. package/legacy/manager/devtoolsTypes.js +1 -1
  29. package/legacy/manager/index.js +1 -1
  30. package/legacy/middlewareTypes.js +1 -1
  31. package/legacy/next/index.js +1 -1
  32. package/legacy/state/RIC.js +1 -1
  33. package/legacy/state/reducer/createReducer.js +4 -4
  34. package/legacy/state/reducer/expireReducer.js +1 -1
  35. package/legacy/state/reducer/fetchReducer.js +1 -1
  36. package/legacy/state/reducer/invalidateReducer.js +5 -5
  37. package/legacy/state/reducer/setReducer.js +7 -7
  38. package/legacy/state/selectMeta.js +1 -1
  39. package/legacy/types.js +1 -1
  40. package/lib/actionTypes.js +1 -1
  41. package/lib/actions.d.ts +1 -1
  42. package/lib/actions.d.ts.map +1 -1
  43. package/lib/actions.js +1 -1
  44. package/lib/controller/AbortOptimistic.d.ts +3 -0
  45. package/lib/controller/AbortOptimistic.d.ts.map +1 -0
  46. package/lib/controller/AbortOptimistic.js +2 -0
  47. package/lib/controller/Controller.d.ts +36 -11
  48. package/lib/controller/Controller.d.ts.map +1 -1
  49. package/lib/controller/Controller.js +108 -76
  50. package/lib/controller/createExpireAll.js +1 -1
  51. package/lib/controller/createFetch.js +1 -1
  52. package/lib/controller/createInvalidate.js +1 -1
  53. package/lib/controller/createInvalidateAll.js +1 -1
  54. package/lib/controller/createOptimistic.js +1 -1
  55. package/lib/controller/createReset.js +1 -1
  56. package/lib/controller/createSet.js +1 -1
  57. package/lib/controller/createSubscription.js +1 -1
  58. package/lib/controller/ensurePojo.js +1 -1
  59. package/lib/controller/types.js +1 -1
  60. package/lib/index.d.ts +1 -1
  61. package/lib/index.d.ts.map +1 -1
  62. package/lib/index.js +1 -1
  63. package/lib/internal.d.ts +1 -1
  64. package/lib/internal.d.ts.map +1 -1
  65. package/lib/internal.js +2 -2
  66. package/lib/manager/ConnectionListener.js +1 -1
  67. package/lib/manager/DefaultConnectionListener.js +1 -1
  68. package/lib/manager/DevtoolsManager.js +1 -1
  69. package/lib/manager/LogoutManager.js +1 -1
  70. package/lib/manager/NetworkManager.js +1 -1
  71. package/lib/manager/PollingSubscription.js +1 -1
  72. package/lib/manager/SubscriptionManager.js +1 -1
  73. package/lib/manager/applyManager.js +1 -1
  74. package/lib/manager/devtoolsTypes.js +1 -1
  75. package/lib/manager/index.js +1 -1
  76. package/lib/middlewareTypes.js +1 -1
  77. package/lib/next/index.js +1 -1
  78. package/lib/state/RIC.js +1 -1
  79. package/lib/state/reducer/createReducer.js +4 -4
  80. package/lib/state/reducer/expireReducer.d.ts +1 -1
  81. package/lib/state/reducer/expireReducer.js +1 -1
  82. package/lib/state/reducer/fetchReducer.js +1 -1
  83. package/lib/state/reducer/invalidateReducer.d.ts +1 -1
  84. package/lib/state/reducer/invalidateReducer.js +6 -6
  85. package/lib/state/reducer/setReducer.d.ts.map +1 -1
  86. package/lib/state/reducer/setReducer.js +8 -8
  87. package/lib/state/selectMeta.js +1 -1
  88. package/lib/types.d.ts +1 -1
  89. package/lib/types.d.ts.map +1 -1
  90. package/lib/types.js +1 -1
  91. package/package.json +3 -3
  92. package/src/actions.ts +1 -1
  93. package/src/controller/AbortOptimistic.ts +1 -0
  94. package/src/controller/Controller.ts +185 -63
  95. package/src/controller/__tests__/Controller.ts +2 -4
  96. package/src/controller/__tests__/__snapshots__/get.ts.snap +120 -0
  97. package/src/controller/__tests__/get.ts +285 -0
  98. package/src/controller/__tests__/getResponse.ts +2 -2
  99. package/src/index.ts +3 -1
  100. package/src/internal.ts +1 -1
  101. package/src/manager/__tests__/logoutManager.ts +0 -2
  102. package/src/state/__tests__/__snapshots__/reducer.ts.snap +4 -4
  103. package/src/state/__tests__/reducer.ts +25 -25
  104. package/src/state/reducer/createReducer.ts +3 -3
  105. package/src/state/reducer/invalidateReducer.ts +4 -4
  106. package/src/state/reducer/setReducer.ts +7 -6
  107. package/src/types.ts +3 -1
  108. package/ts3.4/actions.d.ts +1 -1
  109. package/ts3.4/controller/AbortOptimistic.d.ts +3 -0
  110. package/ts3.4/controller/Controller.d.ts +47 -19
  111. package/ts3.4/index.d.ts +1 -1
  112. package/ts3.4/internal.d.ts +1 -1
  113. package/ts3.4/state/reducer/expireReducer.d.ts +1 -1
  114. package/ts3.4/state/reducer/invalidateReducer.d.ts +1 -1
  115. 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.results[key];
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 results = {
104
- ...state.results
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 results[key];
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(results).forEach(key => {
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
- results,
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 (((_e$constructor = e.constructor) == null ? void 0 : _e$constructor.name) === 'AbortOptimistic') {
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 results = {
167
- ...state.results,
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
- results[key] = updaters[key](results[key]);
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
- results,
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 results inline
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.results.forEach(fetchKey => {
256
- delete state.results[fetchKey];
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
- results: {},
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
- inferResults: normalizr.inferResults,
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
- globalCache = {
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 results = state.results[key];
588
- if (results !== undefined && (meta == null ? void 0 : meta.errorPolicy) === 'soft') return;
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
- * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
593
- * @see https://dataclient.io/docs/api/Controller#getResponse
594
- */
595
- this.getResponse = (endpoint, ...rest) => {
596
- const state = rest[rest.length - 1];
597
- // this is typescript generics breaking
598
- const args = rest.slice(0, rest.length - 1).map(ensurePojo$1);
599
- const isActive = args.length !== 1 || args[0] !== null;
600
- const key = isActive ? endpoint.key(...args) : '';
601
- const cacheResults = isActive ? state.results[key] : undefined;
602
- const schema = endpoint.schema;
603
- const meta = selectMeta(state, key);
604
- let expiresAt = meta == null ? void 0 : meta.expiresAt;
605
- let invalidResults = false;
606
- let results;
607
- if (cacheResults === undefined && endpoint.schema !== undefined) {
608
- results = normalizr.inferResults(endpoint.schema, args, state.indexes, state.entities);
609
- invalidResults = !normalizr.validateInference(results);
610
- if (!expiresAt && invalidResults) expiresAt = 1;
611
- } else {
612
- results = cacheResults;
613
- }
614
- if (!isActive) {
615
- return {
616
- data: results,
617
- expiryStatus: normalizr.ExpiryStatus.Valid,
618
- expiresAt: Infinity
619
- };
620
- }
621
- if (!endpoint.schema || !schemaHasEntity(endpoint.schema)) {
622
- return {
623
- data: results,
624
- expiryStatus: meta != null && meta.invalidated ? normalizr.ExpiryStatus.Invalid : cacheResults && !endpoint.invalidIfStale ? normalizr.ExpiryStatus.Valid : normalizr.ExpiryStatus.InvalidIfStale,
625
- expiresAt: expiresAt || 0
626
- };
627
- }
628
- if (!this.globalCache.results[key]) this.globalCache.results[key] = new normalizr.WeakEntityMap();
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
- // second argument is false if any entities are missing
631
- // eslint-disable-next-line prefer-const
632
- const {
633
- data,
634
- paths
635
- } = normalizr.denormalizeCached(results, schema, state.entities, this.globalCache.entities, this.globalCache.results[key], args);
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
- // fallback to entity expiry time
639
- if (!expiresAt) {
640
- expiresAt = entityExpiresAt(paths, state.entityMeta);
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
- // https://dataclient.io/docs/concepts/expiry-policy#expiry-status
644
- // we don't track the difference between stale or fresh because that is tied to triggering
645
- // conditions
646
- const expiryStatus = meta != null && meta.invalidated || invalidDenormalize && !(meta != null && meta.error) ? normalizr.ExpiryStatus.Invalid : invalidDenormalize || endpoint.invalidIfStale || invalidResults ? normalizr.ExpiryStatus.InvalidIfStale : normalizr.ExpiryStatus.Valid;
647
- return {
648
- data,
649
- expiryStatus,
650
- expiresAt
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 inferred.
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
- /*************** Data Access ***************/
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 {
@@ -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})}));
@@ -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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiU0VUX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJSRVNFVF9UWVBFIiwiU1VCU0NSSUJFX1RZUEUiLCJVTlNVQlNDUklCRV9UWVBFIiwiSU5WQUxJREFURV9UWVBFIiwiSU5WQUxJREFURUFMTF9UWVBFIiwiRVhQSVJFQUxMX1RZUEUiLCJHQ19UWVBFIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvblR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGRVRDSF9UWVBFID0gJ3JkYy9mZXRjaCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU0VUX1RZUEUgPSAncmRjL3NldCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgT1BUSU1JU1RJQ19UWVBFID0gJ3JkYy9vcHRpbWlzdGljJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBSRVNFVF9UWVBFID0gJ3JkYy9yZXNldCcgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU1VCU0NSSUJFX1RZUEUgPSAncmRjL3N1YnNjcmliZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgVU5TVUJTQ1JJQkVfVFlQRSA9ICdyZGMvdW5zdWJzY3JpYmUnIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IElOVkFMSURBVEVfVFlQRSA9ICdyZGMvaW52YWxpZGF0ZScgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgSU5WQUxJREFURUFMTF9UWVBFID0gJ3JkYy9pbnZhbGlkYXRlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBFWFBJUkVBTExfVFlQRSA9ICdyZGMvZXhwaXJlYWxsJyBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBHQ19UWVBFID0gJ3JkYy9nYycgYXMgY29uc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTUEsVUFBVSxHQUFHLFdBQW9CO0FBQzlDLE9BQU8sTUFBTUMsUUFBUSxHQUFHLFNBQWtCO0FBQzFDLE9BQU8sTUFBTUMsZUFBZSxHQUFHLGdCQUF5QjtBQUN4RCxPQUFPLE1BQU1DLFVBQVUsR0FBRyxXQUFvQjtBQUM5QyxPQUFPLE1BQU1DLGNBQWMsR0FBRyxlQUF3QjtBQUN0RCxPQUFPLE1BQU1DLGdCQUFnQixHQUFHLGlCQUEwQjtBQUMxRCxPQUFPLE1BQU1DLGVBQWUsR0FBRyxnQkFBeUI7QUFDeEQsT0FBTyxNQUFNQyxrQkFBa0IsR0FBRyxtQkFBNEI7QUFDOUQsT0FBTyxNQUFNQyxjQUFjLEdBQUcsZUFBd0I7QUFDdEQsT0FBTyxNQUFNQyxPQUFPLEdBQUcsUUFBaUIifQ==
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+IHtcbiAgdHlwZTogdHlwZW9mIFVOU1VCU0NSSUJFX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiB7XG4gICAgYXJnczogcmVhZG9ubHkgYW55W107XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qIEVYUElSWSAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBpcmVBbGxBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgRVhQSVJFQUxMX1RZUEU7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuLyogSU5WQUxJREFURSAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVBTExfVFlQRTtcbiAgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRhdGVBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgSU5WQUxJREFURV9UWVBFO1xuICBtZXRhOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qIFJFU0VUICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0QWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIFJFU0VUX1RZUEU7XG4gIGRhdGU6IG51bWJlcjtcbn1cblxuLyogR0MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR0NBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgR0NfVFlQRTtcbiAgZW50aXRpZXM6IFtzdHJpbmcsIHN0cmluZ11bXTtcbiAgcmVzdWx0czogc3RyaW5nW107XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGVzID1cbiAgfCBGZXRjaEFjdGlvblxuICB8IE9wdGltaXN0aWNBY3Rpb25cbiAgfCBTZXRBY3Rpb25cbiAgfCBTdWJzY3JpYmVBY3Rpb25cbiAgfCBVbnN1YnNjcmliZUFjdGlvblxuICB8IEludmFsaWRhdGVBY3Rpb25cbiAgfCBJbnZhbGlkYXRlQWxsQWN0aW9uXG4gIHwgRXhwaXJlQWxsQWN0aW9uXG4gIHwgUmVzZXRBY3Rpb25cbiAgfCBHQ0FjdGlvbjtcbiJdLCJtYXBwaW5ncyI6IiJ9
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