@data-client/core 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) 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 +2 -1
  100. package/src/internal.ts +1 -1
  101. package/src/state/__tests__/__snapshots__/reducer.ts.snap +4 -4
  102. package/src/state/__tests__/reducer.ts +25 -25
  103. package/src/state/reducer/createReducer.ts +3 -3
  104. package/src/state/reducer/invalidateReducer.ts +4 -4
  105. package/src/state/reducer/setReducer.ts +7 -6
  106. package/src/types.ts +3 -1
  107. package/ts3.4/actions.d.ts +1 -1
  108. package/ts3.4/controller/AbortOptimistic.d.ts +3 -0
  109. package/ts3.4/controller/Controller.d.ts +47 -19
  110. package/ts3.4/index.d.ts +1 -1
  111. package/ts3.4/internal.d.ts +1 -1
  112. package/ts3.4/state/reducer/expireReducer.d.ts +1 -1
  113. package/ts3.4/state/reducer/invalidateReducer.d.ts +1 -1
  114. package/ts3.4/types.d.ts +1 -1
@@ -1,13 +1,13 @@
1
1
  import { INVALIDATE_TYPE } from '../../actionTypes.js';
2
2
  export function invalidateReducer(state, action) {
3
- const results = {
4
- ...state.results
3
+ const endpoints = {
4
+ ...state.endpoints
5
5
  };
6
6
  const meta = {
7
7
  ...state.meta
8
8
  };
9
9
  const invalidateKey = key => {
10
- delete results[key];
10
+ delete endpoints[key];
11
11
  const itemMeta = {
12
12
  ...meta[key],
13
13
  expiresAt: 0,
@@ -19,7 +19,7 @@ export function invalidateReducer(state, action) {
19
19
  if (action.type === INVALIDATE_TYPE) {
20
20
  invalidateKey(action.meta.key);
21
21
  } else {
22
- Object.keys(results).forEach(key => {
22
+ Object.keys(endpoints).forEach(key => {
23
23
  if (action.testKey(key)) {
24
24
  invalidateKey(key);
25
25
  }
@@ -27,8 +27,8 @@ export function invalidateReducer(state, action) {
27
27
  }
28
28
  return {
29
29
  ...state,
30
- results,
30
+ endpoints,
31
31
  meta
32
32
  };
33
33
  }
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFX1RZUEUiLCJpbnZhbGlkYXRlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwicmVzdWx0cyIsIm1ldGEiLCJpbnZhbGlkYXRlS2V5Iiwia2V5IiwiaXRlbU1ldGEiLCJleHBpcmVzQXQiLCJpbnZhbGlkYXRlZCIsImVycm9yIiwidHlwZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwidGVzdEtleSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2ludmFsaWRhdGVSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVkFMSURBVEVfVFlQRSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU3RhdGUsXG4gIEludmFsaWRhdGVBbGxBY3Rpb24sXG4gIEludmFsaWRhdGVBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogSW52YWxpZGF0ZUFjdGlvbiB8IEludmFsaWRhdGVBbGxBY3Rpb24sXG4pIHtcbiAgY29uc3QgcmVzdWx0cyA9IHsgLi4uc3RhdGUucmVzdWx0cyB9O1xuICBjb25zdCBtZXRhID0geyAuLi5zdGF0ZS5tZXRhIH07XG4gIGNvbnN0IGludmFsaWRhdGVLZXkgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBkZWxldGUgcmVzdWx0c1trZXldO1xuICAgIGNvbnN0IGl0ZW1NZXRhID0ge1xuICAgICAgLi4ubWV0YVtrZXldLFxuICAgICAgZXhwaXJlc0F0OiAwLFxuICAgICAgaW52YWxpZGF0ZWQ6IHRydWUsXG4gICAgfTtcbiAgICBkZWxldGUgaXRlbU1ldGEuZXJyb3I7XG4gICAgbWV0YVtrZXldID0gaXRlbU1ldGE7XG4gIH07XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gSU5WQUxJREFURV9UWVBFKSB7XG4gICAgaW52YWxpZGF0ZUtleShhY3Rpb24ubWV0YS5rZXkpO1xuICB9IGVsc2Uge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChhY3Rpb24udGVzdEtleShrZXkpKSB7XG4gICAgICAgIGludmFsaWRhdGVLZXkoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgcmVzdWx0cyxcbiAgICBtZXRhLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsc0JBQXNCO0FBT3RELE9BQU8sU0FBU0MsaUJBQWlCQSxDQUMvQkMsS0FBcUIsRUFDckJDLE1BQThDLEVBQzlDO0VBQ0EsTUFBTUMsT0FBTyxHQUFHO0lBQUUsR0FBR0YsS0FBSyxDQUFDRTtFQUFRLENBQUM7RUFDcEMsTUFBTUMsSUFBSSxHQUFHO0lBQUUsR0FBR0gsS0FBSyxDQUFDRztFQUFLLENBQUM7RUFDOUIsTUFBTUMsYUFBYSxHQUFJQyxHQUFXLElBQUs7SUFDckMsT0FBT0gsT0FBTyxDQUFDRyxHQUFHLENBQUM7SUFDbkIsTUFBTUMsUUFBUSxHQUFHO01BQ2YsR0FBR0gsSUFBSSxDQUFDRSxHQUFHLENBQUM7TUFDWkUsU0FBUyxFQUFFLENBQUM7TUFDWkMsV0FBVyxFQUFFO0lBQ2YsQ0FBQztJQUNELE9BQU9GLFFBQVEsQ0FBQ0csS0FBSztJQUNyQk4sSUFBSSxDQUFDRSxHQUFHLENBQUMsR0FBR0MsUUFBUTtFQUN0QixDQUFDO0VBQ0QsSUFBSUwsTUFBTSxDQUFDUyxJQUFJLEtBQUtaLGVBQWUsRUFBRTtJQUNuQ00sYUFBYSxDQUFDSCxNQUFNLENBQUNFLElBQUksQ0FBQ0UsR0FBRyxDQUFDO0VBQ2hDLENBQUMsTUFBTTtJQUNMTSxNQUFNLENBQUNDLElBQUksQ0FBQ1YsT0FBTyxDQUFDLENBQUNXLE9BQU8sQ0FBQ1IsR0FBRyxJQUFJO01BQ2xDLElBQUlKLE1BQU0sQ0FBQ2EsT0FBTyxDQUFDVCxHQUFHLENBQUMsRUFBRTtRQUN2QkQsYUFBYSxDQUFDQyxHQUFHLENBQUM7TUFDcEI7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBLE9BQU87SUFDTCxHQUFHTCxLQUFLO0lBQ1JFLE9BQU87SUFDUEM7RUFDRixDQUFDO0FBQ0gifQ==
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFX1RZUEUiLCJpbnZhbGlkYXRlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwiZW5kcG9pbnRzIiwibWV0YSIsImludmFsaWRhdGVLZXkiLCJrZXkiLCJpdGVtTWV0YSIsImV4cGlyZXNBdCIsImludmFsaWRhdGVkIiwiZXJyb3IiLCJ0eXBlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJ0ZXN0S2V5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvaW52YWxpZGF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5WQUxJREFURV9UWVBFIH0gZnJvbSAnLi4vLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTdGF0ZSxcbiAgSW52YWxpZGF0ZUFsbEFjdGlvbixcbiAgSW52YWxpZGF0ZUFjdGlvbixcbn0gZnJvbSAnLi4vLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52YWxpZGF0ZVJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBJbnZhbGlkYXRlQWN0aW9uIHwgSW52YWxpZGF0ZUFsbEFjdGlvbixcbikge1xuICBjb25zdCBlbmRwb2ludHMgPSB7IC4uLnN0YXRlLmVuZHBvaW50cyB9O1xuICBjb25zdCBtZXRhID0geyAuLi5zdGF0ZS5tZXRhIH07XG4gIGNvbnN0IGludmFsaWRhdGVLZXkgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBkZWxldGUgZW5kcG9pbnRzW2tleV07XG4gICAgY29uc3QgaXRlbU1ldGEgPSB7XG4gICAgICAuLi5tZXRhW2tleV0sXG4gICAgICBleHBpcmVzQXQ6IDAsXG4gICAgICBpbnZhbGlkYXRlZDogdHJ1ZSxcbiAgICB9O1xuICAgIGRlbGV0ZSBpdGVtTWV0YS5lcnJvcjtcbiAgICBtZXRhW2tleV0gPSBpdGVtTWV0YTtcbiAgfTtcbiAgaWYgKGFjdGlvbi50eXBlID09PSBJTlZBTElEQVRFX1RZUEUpIHtcbiAgICBpbnZhbGlkYXRlS2V5KGFjdGlvbi5tZXRhLmtleSk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmtleXMoZW5kcG9pbnRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoYWN0aW9uLnRlc3RLZXkoa2V5KSkge1xuICAgICAgICBpbnZhbGlkYXRlS2V5KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVuZHBvaW50cyxcbiAgICBtZXRhLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsc0JBQXNCO0FBT3RELE9BQU8sU0FBU0MsaUJBQWlCQSxDQUMvQkMsS0FBcUIsRUFDckJDLE1BQThDLEVBQzlDO0VBQ0EsTUFBTUMsU0FBUyxHQUFHO0lBQUUsR0FBR0YsS0FBSyxDQUFDRTtFQUFVLENBQUM7RUFDeEMsTUFBTUMsSUFBSSxHQUFHO0lBQUUsR0FBR0gsS0FBSyxDQUFDRztFQUFLLENBQUM7RUFDOUIsTUFBTUMsYUFBYSxHQUFJQyxHQUFXLElBQUs7SUFDckMsT0FBT0gsU0FBUyxDQUFDRyxHQUFHLENBQUM7SUFDckIsTUFBTUMsUUFBUSxHQUFHO01BQ2YsR0FBR0gsSUFBSSxDQUFDRSxHQUFHLENBQUM7TUFDWkUsU0FBUyxFQUFFLENBQUM7TUFDWkMsV0FBVyxFQUFFO0lBQ2YsQ0FBQztJQUNELE9BQU9GLFFBQVEsQ0FBQ0csS0FBSztJQUNyQk4sSUFBSSxDQUFDRSxHQUFHLENBQUMsR0FBR0MsUUFBUTtFQUN0QixDQUFDO0VBQ0QsSUFBSUwsTUFBTSxDQUFDUyxJQUFJLEtBQUtaLGVBQWUsRUFBRTtJQUNuQ00sYUFBYSxDQUFDSCxNQUFNLENBQUNFLElBQUksQ0FBQ0UsR0FBRyxDQUFDO0VBQ2hDLENBQUMsTUFBTTtJQUNMTSxNQUFNLENBQUNDLElBQUksQ0FBQ1YsU0FBUyxDQUFDLENBQUNXLE9BQU8sQ0FBQ1IsR0FBRyxJQUFJO01BQ3BDLElBQUlKLE1BQU0sQ0FBQ2EsT0FBTyxDQUFDVCxHQUFHLENBQUMsRUFBRTtRQUN2QkQsYUFBYSxDQUFDQyxHQUFHLENBQUM7TUFDcEI7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBLE9BQU87SUFDTCxHQUFHTCxLQUFLO0lBQ1JFLFNBQVM7SUFDVEM7RUFDRixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"setReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,kBA6FvB"}
1
+ {"version":3,"file":"setReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setReducer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,kBA6FvB"}
@@ -1,5 +1,6 @@
1
1
  import { normalize } from '@data-client/normalizr';
2
2
  import { OPTIMISTIC_TYPE } from '../../actionTypes.js';
3
+ import AbortOptimistic from '../../controller/AbortOptimistic.js';
3
4
  export function setReducer(state, action, controller) {
4
5
  if (action.error) {
5
6
  return reduceError(state, action, action.payload);
@@ -15,9 +16,8 @@ export function setReducer(state, action, controller) {
15
16
  // compute optimistic response based on current state
16
17
  payload = action.endpoint.getOptimisticResponse.call(action.endpoint, controller.snapshot(state, action.meta.fetchedAt), ...action.meta.args);
17
18
  } catch (e) {
18
- var _e$constructor;
19
19
  // AbortOptimistic means 'do nothing', otherwise we count the exception as endpoint failure
20
- if (((_e$constructor = e.constructor) == null ? void 0 : _e$constructor.name) === 'AbortOptimistic') {
20
+ if (e.constructor === AbortOptimistic) {
21
21
  return state;
22
22
  }
23
23
  throw e;
@@ -31,15 +31,15 @@ export function setReducer(state, action, controller) {
31
31
  indexes,
32
32
  entityMeta
33
33
  } = normalize(payload, action.endpoint.schema, action.meta.args, state.entities, state.indexes, state.entityMeta, action.meta);
34
- const results = {
35
- ...state.results,
34
+ const endpoints = {
35
+ ...state.endpoints,
36
36
  [action.meta.key]: result
37
37
  };
38
38
  try {
39
39
  if (action.endpoint.update) {
40
40
  const updaters = action.endpoint.update(result, ...action.meta.args);
41
41
  Object.keys(updaters).forEach(key => {
42
- results[key] = updaters[key](results[key]);
42
+ endpoints[key] = updaters[key](endpoints[key]);
43
43
  });
44
44
  }
45
45
  // no reason to completely fail because of user-code error
@@ -51,7 +51,7 @@ export function setReducer(state, action, controller) {
51
51
  return {
52
52
  entities,
53
53
  indexes,
54
- results,
54
+ endpoints,
55
55
  entityMeta,
56
56
  meta: {
57
57
  ...state.meta,
@@ -64,7 +64,7 @@ export function setReducer(state, action, controller) {
64
64
  optimistic: filterOptimistic(state, action),
65
65
  lastReset: state.lastReset
66
66
  };
67
- // reducer must update the state, so in case of processing errors we simply compute the results inline
67
+ // reducer must update the state, so in case of processing errors we simply compute the endpoints inline
68
68
  } catch (error) {
69
69
  if (typeof error === 'object') {
70
70
  error.message = `Error processing ${action.meta.key}\n\nFull Schema: ${JSON.stringify(action.endpoint.schema, undefined, 2)}\n\nError:\n${error.message}`;
@@ -108,4 +108,4 @@ function reduceError(state, action, error) {
108
108
  function filterOptimistic(state, resolvingAction) {
109
109
  return state.optimistic.filter(optimisticAction => optimisticAction.meta.key !== resolvingAction.meta.key || (optimisticAction.type === OPTIMISTIC_TYPE ? optimisticAction.meta.fetchedAt !== resolvingAction.meta.fetchedAt : optimisticAction.meta.date > resolvingAction.meta.date));
110
110
  }
111
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwiZXJyb3IiLCJyZWR1Y2VFcnJvciIsInBheWxvYWQiLCJfc3RhdGUkbWV0YSRhY3Rpb24kbWUiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJfZSRjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJyZXN1bHRzIiwia2V5IiwidXBkYXRlIiwidXBkYXRlcnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImNvbnNvbGUiLCJkYXRlIiwiZXhwaXJlc0F0IiwicHJldkV4cGlyZXNBdCIsIm9wdGltaXN0aWMiLCJmaWx0ZXJPcHRpbWlzdGljIiwibGFzdFJlc2V0IiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJzdGF0dXMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgeyBPUFRJTUlTVElDX1RZUEUgfSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlLCBTZXRBY3Rpb24sIE9wdGltaXN0aWNBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogT3B0aW1pc3RpY0FjdGlvbiB8IFNldEFjdGlvbixcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbikge1xuICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGFjdGlvbi5wYXlsb2FkKTtcbiAgfVxuICB0cnkge1xuICAgIGxldCBwYXlsb2FkOiBhbnk7XG4gICAgLy8gZm9yIHRydWUgc2V0J3MgcGF5bG9hZCBpcyBjb250YWluZWQgaW4gYWN0aW9uXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgaWYgKCFhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlKSByZXR1cm4gc3RhdGU7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBjb21wdXRlIG9wdGltaXN0aWMgcmVzcG9uc2UgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxuICAgICAgICBwYXlsb2FkID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5tZXRhLmFyZ3MsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gQWJvcnRPcHRpbWlzdGljIG1lYW5zICdkbyBub3RoaW5nJywgb3RoZXJ3aXNlIHdlIGNvdW50IHRoZSBleGNlcHRpb24gYXMgZW5kcG9pbnQgZmFpbHVyZVxuICAgICAgICBpZiAoZS5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0Fib3J0T3B0aW1pc3RpYycpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH1cbiAgICBjb25zdCB7IHJlc3VsdCwgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIHBheWxvYWQsXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgYWN0aW9uLm1ldGEuYXJncyBhcyBhbnksXG4gICAgICBzdGF0ZS5lbnRpdGllcyxcbiAgICAgIHN0YXRlLmluZGV4ZXMsXG4gICAgICBzdGF0ZS5lbnRpdHlNZXRhLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHRzID0ge1xuICAgICAgLi4uc3RhdGUucmVzdWx0cyxcbiAgICAgIFthY3Rpb24ubWV0YS5rZXldOiByZXN1bHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludC51cGRhdGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlcnMgPSBhY3Rpb24uZW5kcG9pbnQudXBkYXRlKHJlc3VsdCwgLi4uYWN0aW9uLm1ldGEuYXJncyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgcmVzdWx0c1trZXldID0gdXBkYXRlcnNba2V5XShyZXN1bHRzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIG5vIHJlYXNvbiB0byBjb21wbGV0ZWx5IGZhaWwgYmVjYXVzZSBvZiB1c2VyLWNvZGUgZXJyb3JcbiAgICAgIC8vIGludGVncml0eSBvZiB0aGlzIHN0YXRlIHVwZGF0ZSBpcyBzdGlsbCBndWFyYW50ZWVkXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBUaGUgZm9sbG93aW5nIGVycm9yIG9jY3VyZWQgZHVyaW5nIEVuZHBvaW50LnVwZGF0ZSgpIGZvciAke2FjdGlvbi5tZXRhLmtleX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBpbmRleGVzLFxuICAgICAgcmVzdWx0cyxcbiAgICAgIGVudGl0eU1ldGEsXG4gICAgICBtZXRhOiB7XG4gICAgICAgIC4uLnN0YXRlLm1ldGEsXG4gICAgICAgIFthY3Rpb24ubWV0YS5rZXldOiB7XG4gICAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgICBwcmV2RXhwaXJlc0F0OiBzdGF0ZS5tZXRhW2FjdGlvbi5tZXRhLmtleV0/LmV4cGlyZXNBdCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgICAgbGFzdFJlc2V0OiBzdGF0ZS5sYXN0UmVzZXQsXG4gICAgfTtcbiAgICAvLyByZWR1Y2VyIG11c3QgdXBkYXRlIHRoZSBzdGF0ZSwgc28gaW4gY2FzZSBvZiBwcm9jZXNzaW5nIGVycm9ycyB3ZSBzaW1wbHkgY29tcHV0ZSB0aGUgcmVzdWx0cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLm1ldGEua2V5XG4gICAgICB9XFxuXFxuRnVsbCBTY2hlbWE6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFjdGlvbi5lbmRwb2ludC5zY2hlbWEsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgMixcbiAgICAgICl9XFxuXFxuRXJyb3I6XFxuJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAoJ3BheWxvYWQnIGluIGFjdGlvbikgZXJyb3IucGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gNDAwO1xuICAgIH1cblxuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVkdWNlRXJyb3Ioc3RhdGUsIGFjdGlvbiwgZXJyb3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUVycm9yKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5tZXRhLmtleV06IHtcbiAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGV4cGlyZXNBdDogYWN0aW9uLm1ldGEuZXhwaXJlc0F0LFxuICAgICAgICBlcnJvclBvbGljeTogYWN0aW9uLmVuZHBvaW50LmVycm9yUG9saWN5Py4oZXJyb3IpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG9wdGltaXN0aWM6IGZpbHRlck9wdGltaXN0aWMoc3RhdGUsIGFjdGlvbiksXG4gIH07XG59XG4vKiogRmlsdGVyIGFsbCByZXF1ZXN0cyB3aXRoIHNhbWUgc2VyaWFsaXphdGlvbiB0aGF0IGRpZCBub3Qgc3RhcnQgYWZ0ZXIgdGhlIHJlc29sdmluZyByZXF1ZXN0ICovXG5mdW5jdGlvbiBmaWx0ZXJPcHRpbWlzdGljKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIHJlc29sdmluZ0FjdGlvbjogU2V0QWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmtleSAhPT0gcmVzb2x2aW5nQWN0aW9uLm1ldGEua2V5IHx8XG4gICAgICAob3B0aW1pc3RpY0FjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUgP1xuICAgICAgICBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZmV0Y2hlZEF0ICE9PSByZXNvbHZpbmdBY3Rpb24ubWV0YS5mZXRjaGVkQXRcbiAgICAgIDogb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmRhdGUgPiByZXNvbHZpbmdBY3Rpb24ubWV0YS5kYXRlKSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUVsRCxTQUFTQyxlQUFlLFFBQVEsc0JBQXNCO0FBSXRELE9BQU8sU0FBU0MsVUFBVUEsQ0FDeEJDLEtBQXFCLEVBQ3JCQyxNQUFvQyxFQUNwQ0MsVUFBc0IsRUFDdEI7RUFDQSxJQUFJRCxNQUFNLENBQUNFLEtBQUssRUFBRTtJQUNoQixPQUFPQyxXQUFXLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFQSxNQUFNLENBQUNJLE9BQU8sQ0FBQztFQUNuRDtFQUNBLElBQUk7SUFBQSxJQUFBQyxxQkFBQTtJQUNGLElBQUlELE9BQVk7SUFDaEI7SUFDQSxJQUFJSixNQUFNLENBQUNNLElBQUksS0FBS1QsZUFBZSxFQUFFO01BQ25DO01BQ0EsSUFBSSxDQUFDRyxNQUFNLENBQUNPLFFBQVEsQ0FBQ0MscUJBQXFCLEVBQUUsT0FBT1QsS0FBSztNQUN4RCxJQUFJO1FBQ0Y7UUFDQUssT0FBTyxHQUFHSixNQUFNLENBQUNPLFFBQVEsQ0FBQ0MscUJBQXFCLENBQUNDLElBQUksQ0FDbERULE1BQU0sQ0FBQ08sUUFBUSxFQUNmTixVQUFVLENBQUNTLFFBQVEsQ0FBQ1gsS0FBSyxFQUFFQyxNQUFNLENBQUNXLElBQUksQ0FBQ0MsU0FBUyxDQUFDLEVBQ2pELEdBQUdaLE1BQU0sQ0FBQ1csSUFBSSxDQUFDRSxJQUNqQixDQUFDO01BQ0gsQ0FBQyxDQUFDLE9BQU9DLENBQU0sRUFBRTtRQUFBLElBQUFDLGNBQUE7UUFDZjtRQUNBLElBQUksRUFBQUEsY0FBQSxHQUFBRCxDQUFDLENBQUNFLFdBQVcscUJBQWJELGNBQUEsQ0FBZUUsSUFBSSxNQUFLLGlCQUFpQixFQUFFO1VBQzdDLE9BQU9sQixLQUFLO1FBQ2Q7UUFDQSxNQUFNZSxDQUFDO01BQ1Q7SUFDRixDQUFDLE1BQU07TUFDTFYsT0FBTyxHQUFHSixNQUFNLENB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
111
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJBYm9ydE9wdGltaXN0aWMiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwiZXJyb3IiLCJyZWR1Y2VFcnJvciIsInBheWxvYWQiLCJfc3RhdGUkbWV0YSRhY3Rpb24kbWUiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJjb25zdHJ1Y3RvciIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgeyBPUFRJTUlTVElDX1RZUEUgfSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgQWJvcnRPcHRpbWlzdGljIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQWJvcnRPcHRpbWlzdGljLmpzJztcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhdGUsIFNldEFjdGlvbiwgT3B0aW1pc3RpY0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBPcHRpbWlzdGljQWN0aW9uIHwgU2V0QWN0aW9uLFxuICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuKSB7XG4gIGlmIChhY3Rpb24uZXJyb3IpIHtcbiAgICByZXR1cm4gcmVkdWNlRXJyb3Ioc3RhdGUsIGFjdGlvbiwgYWN0aW9uLnBheWxvYWQpO1xuICB9XG4gIHRyeSB7XG4gICAgbGV0IHBheWxvYWQ6IGFueTtcbiAgICAvLyBmb3IgdHJ1ZSBzZXQncyBwYXlsb2FkIGlzIGNvbnRhaW5lZCBpbiBhY3Rpb25cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUNfVFlQRSkge1xuICAgICAgLy8gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHBheWxvYWQgPSBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlLmNhbGwoXG4gICAgICAgICAgYWN0aW9uLmVuZHBvaW50LFxuICAgICAgICAgIGNvbnRyb2xsZXIuc25hcHNob3Qoc3RhdGUsIGFjdGlvbi5tZXRhLmZldGNoZWRBdCksXG4gICAgICAgICAgLi4uYWN0aW9uLm1ldGEuYXJncyxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAvLyBBYm9ydE9wdGltaXN0aWMgbWVhbnMgJ2RvIG5vdGhpbmcnLCBvdGhlcndpc2Ugd2UgY291bnQgdGhlIGV4Y2VwdGlvbiBhcyBlbmRwb2ludCBmYWlsdXJlXG4gICAgICAgIGlmIChlLmNvbnN0cnVjdG9yID09PSBBYm9ydE9wdGltaXN0aWMpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH1cbiAgICBjb25zdCB7IHJlc3VsdCwgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIHBheWxvYWQsXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgYWN0aW9uLm1ldGEuYXJncyBhcyBhbnksXG4gICAgICBzdGF0ZS5lbnRpdGllcyxcbiAgICAgIHN0YXRlLmluZGV4ZXMsXG4gICAgICBzdGF0ZS5lbnRpdHlNZXRhLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludHMgPSB7XG4gICAgICAuLi5zdGF0ZS5lbmRwb2ludHMsXG4gICAgICBbYWN0aW9uLm1ldGEua2V5XTogcmVzdWx0LFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhY3Rpb24uZW5kcG9pbnQudXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZXJzID0gYWN0aW9uLmVuZHBvaW50LnVwZGF0ZShyZXN1bHQsIC4uLmFjdGlvbi5tZXRhLmFyZ3MpO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVuZHBvaW50c1trZXldID0gdXBkYXRlcnNba2V5XShlbmRwb2ludHNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbm8gcmVhc29uIHRvIGNvbXBsZXRlbHkgZmFpbCBiZWNhdXNlIG9mIHVzZXItY29kZSBlcnJvclxuICAgICAgLy8gaW50ZWdyaXR5IG9mIHRoaXMgc3RhdGUgdXBkYXRlIGlzIHN0aWxsIGd1YXJhbnRlZWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZCBkdXJpbmcgRW5kcG9pbnQudXBkYXRlKCkgZm9yICR7YWN0aW9uLm1ldGEua2V5fWAsXG4gICAgICApO1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGluZGV4ZXMsXG4gICAgICBlbmRwb2ludHMsXG4gICAgICBlbnRpdHlNZXRhLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICBbYWN0aW9uLm1ldGEua2V5XToge1xuICAgICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgICAgZXhwaXJlc0F0OiBhY3Rpb24ubWV0YS5leHBpcmVzQXQsXG4gICAgICAgICAgcHJldkV4cGlyZXNBdDogc3RhdGUubWV0YVthY3Rpb24ubWV0YS5rZXldPy5leHBpcmVzQXQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLm1ldGEua2V5XG4gICAgICB9XFxuXFxuRnVsbCBTY2hlbWE6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFjdGlvbi5lbmRwb2ludC5zY2hlbWEsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgMixcbiAgICAgICl9XFxuXFxuRXJyb3I6XFxuJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAoJ3BheWxvYWQnIGluIGFjdGlvbikgZXJyb3IucGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gNDAwO1xuICAgIH1cblxuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVkdWNlRXJyb3Ioc3RhdGUsIGFjdGlvbiwgZXJyb3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUVycm9yKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5tZXRhLmtleV06IHtcbiAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGV4cGlyZXNBdDogYWN0aW9uLm1ldGEuZXhwaXJlc0F0LFxuICAgICAgICBlcnJvclBvbGljeTogYWN0aW9uLmVuZHBvaW50LmVycm9yUG9saWN5Py4oZXJyb3IpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG9wdGltaXN0aWM6IGZpbHRlck9wdGltaXN0aWMoc3RhdGUsIGFjdGlvbiksXG4gIH07XG59XG4vKiogRmlsdGVyIGFsbCByZXF1ZXN0cyB3aXRoIHNhbWUgc2VyaWFsaXphdGlvbiB0aGF0IGRpZCBub3Qgc3RhcnQgYWZ0ZXIgdGhlIHJlc29sdmluZyByZXF1ZXN0ICovXG5mdW5jdGlvbiBmaWx0ZXJPcHRpbWlzdGljKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIHJlc29sdmluZ0FjdGlvbjogU2V0QWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmtleSAhPT0gcmVzb2x2aW5nQWN0aW9uLm1ldGEua2V5IHx8XG4gICAgICAob3B0aW1pc3RpY0FjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUgP1xuICAgICAgICBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZmV0Y2hlZEF0ICE9PSByZXNvbHZpbmdBY3Rpb24ubWV0YS5mZXRjaGVkQXRcbiAgICAgIDogb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmRhdGUgPiByZXNvbHZpbmdBY3Rpb24ubWV0YS5kYXRlKSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUVsRCxTQUFTQyxlQUFlLFFBQVEsc0JBQXNCO0FBQ3RELE9BQU9DLGVBQWUsTUFBTSxxQ0FBcUM7QUFJakUsT0FBTyxTQUFTQyxVQUFVQSxDQUN4QkMsS0FBcUIsRUFDckJDLE1BQW9DLEVBQ3BDQyxVQUFzQixFQUN0QjtFQUNBLElBQUlELE1BQU0sQ0FBQ0UsS0FBSyxFQUFFO0lBQ2hCLE9BQU9DLFdBQVcsQ0FBQ0osS0FBSyxFQUFFQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDO0VBQ25EO0VBQ0EsSUFBSTtJQUFBLElBQUFDLHFCQUFBO0lBQ0YsSUFBSUQsT0FBWTtJQUNoQjtJQUNBLElBQUlKLE1BQU0sQ0FBQ00sSUFBSSxLQUFLVixlQUFlLEVBQUU7TUFDbkM7TUFDQSxJQUFJLENBQUNJLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsRUFBRSxPQUFPVCxLQUFLO01BQ3hELElBQUk7UUFDRjtRQUNBSyxPQUFPLEdBQUdKLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUNsRFQsTUFBTSxDQUFDTyxRQUFRLEVBQ2ZOLFVBQVUsQ0FBQ1MsUUFBUSxDQUFDWCxLQUFLLEVBQUVDLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTLENBQUMsRUFDakQsR0FBR1osTUFBTSxDQUFDVyxJQUFJLENBQUNFLElBQ2pCLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBTSxFQUFFO1FBQ2Y7UUFDQSxJQUFJQSxDQUFDLENBQUNDLFdBQVcsS0FBS2xCLGVBQWUsRUFBRTtVQUNyQyxPQUFPRSxLQUFLO1FBQ2Q7UUFDQSxNQUFNZSxD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QUFFO01BQ3pDZCxPQUFPLENBQUMxQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9DLFdBQVcsQ0FBQ0osS0FBSyxFQUFFQyxNQUFNLEVBQUVFLEtBQUssQ0FBQztFQUMxQztBQUNGO0FBRUEsU0FBU0MsV0FBV0EsQ0FDbEJKLEtBQXFCLEVBQ3JCQyxNQUFvQyxFQUNwQ0UsS0FBVSxFQUNNO0VBQ2hCLElBQUlBLEtBQUssQ0FBQ3lDLElBQUksS0FBSyxZQUFZLEVBQUU7SUFDL0I7SUFDQTtJQUNBO0lBQ0EsT0FBTztNQUNMLEdBQUc1QyxLQUFLO01BQ1JpQyxVQUFVLEVBQUVDLGdCQUFnQixDQUFDbEMsS0FBSyxFQUFFQyxNQUFNO0lBQzVDLENBQUM7RUFDSDtFQUNBLE9BQU87SUFDTCxHQUFHRCxLQUFLO0lBQ1JZLElBQUksRUFBRTtNQUNKLEdBQUdaLEtBQUssQ0FBQ1ksSUFBSTtNQUNiLENBQUNYLE1BQU0sQ0FBQ1csSUFBSSxDQUFDVyxHQUFHLEdBQUc7UUFDakJPLElBQUksRUFBRTdCLE1BQU0sQ0FBQ1csSUFBSSxDQUFDa0IsSUFBSTtRQUN0QjNCLEtBQUs7UUFDTDRCLFNBQVMsRUFBRTlCLE1BQU0sQ0FBQ1csSUFBSSxDQUFDbUIsU0FBUztRQUNoQ2MsV0FBVyxFQUFFNUMsTUFBTSxDQUFDTyxRQUFRLENBQUNxQyxXQUFXLG9CQUEzQjVDLE1BQU0sQ0FBQ08sUUFBUSxDQUFDcUMsV0FBVyxDQUFHMUMsS0FBSztNQUNsRDtJQUNGLENBQUM7SUFDRDhCLFVBQVUsRUFBRUMsZ0JBQWdCLENBQUNsQyxLQUFLLEVBQUVDLE1BQU07RUFDNUMsQ0FBQztBQUNIO0FBQ0E7QUFDQSxTQUFTaUMsZ0JBQWdCQSxDQUN2QmxDLEtBQXFCLEVBQ3JCOEMsZUFBNkMsRUFDN0M7RUFDQSxPQUFPOUMsS0FBSyxDQUFDaUMsVUFBVSxDQUFDYyxNQUFNLENBQzVCQyxnQkFBZ0IsSUFDZEEsZ0JBQWdCLENBQUNwQyxJQUFJLENBQUNXLEdBQUcsS0FBS3VCLGVBQWUsQ0FBQ2xDLElBQUksQ0FBQ1csR0FBRyxLQUNyRHlCLGdCQUFnQixDQUFDekMsSUFBSSxLQUFLVixlQUFlLEdBQ3hDbUQsZ0JBQWdCLENBQUNwQyxJQUFJLENBQUNDLFNBQVMsS0FBS2lDLGVBQWUsQ0FBQ2xDLElBQUksQ0FBQ0MsU0FBUyxHQUNsRW1DLGdCQUFnQixDQUFDcEMsSUFBSSxDQUFDa0IsSUFBSSxHQUFHZ0IsZUFBZSxDQUFDbEMsSUFBSSxDQUFDa0IsSUFBSSxDQUM1RCxDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,4 +1,4 @@
1
1
  export default function selectMeta(state, fetchKey) {
2
2
  return state.meta[fetchKey];
3
3
  }
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZWxlY3RNZXRhIiwic3RhdGUiLCJmZXRjaEtleSIsIm1ldGEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGUvc2VsZWN0TWV0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWxlY3RNZXRhPFIgPSBhbnk+KFxuICBzdGF0ZTogU3RhdGU8Uj4sXG4gIGZldGNoS2V5OiBzdHJpbmcsXG4pOiBTdGF0ZTxSPlsnbWV0YSddW3N0cmluZ10ge1xuICByZXR1cm4gc3RhdGUubWV0YVtmZXRjaEtleV07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLGVBQWUsU0FBU0EsVUFBVUEsQ0FDaENDLEtBQWUsRUFDZkMsUUFBZ0IsRUFDVTtFQUMxQixPQUFPRCxLQUFLLENBQUNFLElBQUksQ0FBQ0QsUUFBUSxDQUFDO0FBQzdCIn0=
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZWxlY3RNZXRhIiwic3RhdGUiLCJmZXRjaEtleSIsIm1ldGEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGUvc2VsZWN0TWV0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWxlY3RNZXRhPFIgPSBhbnk+KFxuICBzdGF0ZTogU3RhdGU8Uj4sXG4gIGZldGNoS2V5OiBzdHJpbmcsXG4pOiBTdGF0ZTxSPlsnbWV0YSddW3N0cmluZ10ge1xuICByZXR1cm4gc3RhdGUubWV0YVtmZXRjaEtleV07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLGVBQWUsU0FBU0EsVUFBVUEsQ0FDaENDLEtBQWUsRUFDZkMsUUFBZ0IsRUFDVTtFQUMxQixPQUFPRCxLQUFLLENBQUNFLElBQUksQ0FBQ0QsUUFBUSxDQUFDO0FBQzdCIiwiaWdub3JlTGlzdCI6W119
package/lib/types.d.ts CHANGED
@@ -14,7 +14,7 @@ export interface State<T> {
14
14
  } | undefined;
15
15
  };
16
16
  readonly indexes: NormalizedIndex;
17
- readonly results: {
17
+ readonly endpoints: {
18
18
  readonly [key: string]: unknown | PK[] | PK | undefined;
19
19
  };
20
20
  readonly meta: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhF,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AAEvC,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC;AAExB,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG;YAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAAA;SAAE,GAAG,SAAS,CAAC;KACxE,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG;YACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;YAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;YAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;YAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;SACpD,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG;YAC5B,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG;gBACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;aAC5B,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,cAAc,cAAc,CAAC;AAE7B,MAAM,WAAW,OAAO,CAAC,OAAO,GAAG,WAAW;IAC5C,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACpC;AAED,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhF,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AAEvC,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC;AAExB,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG;YAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAAA;SAAE,GAAG,SAAS,CAAC;KACxE,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;KACzD,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG;YACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;YAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;YAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;YAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;SACpD,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG;YAC5B,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG;gBACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;aAC5B,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,cAAc,cAAc,CAAC;AAE7B,MAAM,WAAW,OAAO,CAAC,OAAO,GAAG,WAAW;IAC5C,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACpC;AAED,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
package/lib/types.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from './actions.js';
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZXMsIFNldEFjdGlvbiwgT3B0aW1pc3RpY0FjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy5qcyc7XG5pbXBvcnQgeyBTRVRfVFlQRSB9IGZyb20gJy4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgU2V0VHlwZXMgPSB0eXBlb2YgU0VUX1RZUEU7XG5cbmV4cG9ydCB0eXBlIFBLID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlPFQ+IHtcbiAgcmVhZG9ubHkgZW50aXRpZXM6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7IHJlYWRvbmx5IFtwazogc3RyaW5nXTogVCB9IHwgdW5kZWZpbmVkO1xuICB9O1xuICByZWFkb25seSBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXg7XG4gIHJlYWRvbmx5IHJlc3VsdHM6IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93biB8IFBLW10gfCBQSyB8IHVuZGVmaW5lZCB9O1xuICByZWFkb25seSBtZXRhOiB7XG4gICAgcmVhZG9ubHkgW2tleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvclR5cGVzO1xuICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICByZWFkb25seSBwcmV2RXhwaXJlc0F0PzogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgaW52YWxpZGF0ZWQ/OiBib29sZWFuO1xuICAgICAgcmVhZG9ubHkgZXJyb3JQb2xpY3k/OiAnaGFyZCcgfCAnc29mdCcgfCB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfTtcbiAgcmVhZG9ubHkgZW50aXR5TWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgcmVhZG9ubHkgb3B0aW1pc3RpYzogKFNldEFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24pW107XG4gIHJlYWRvbmx5IGxhc3RSZXNldDogbnVtYmVyO1xufVxuXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZXI8QWN0aW9ucyA9IEFjdGlvblR5cGVzPiB7XG4gIGdldE1pZGRsZXdhcmUoKTogTWlkZGxld2FyZTxBY3Rpb25zPjtcbiAgY2xlYW51cCgpOiB2b2lkO1xuICBpbml0PzogKHN0YXRlOiBTdGF0ZTxhbnk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSB7IERpc3BhdGNoLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlQVBJIH07XG4iXSwibWFwcGluZ3MiOiJBQThDQSxjQUFjLGNBQWM7QUFBQyJ9
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZXMsIFNldEFjdGlvbiwgT3B0aW1pc3RpY0FjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy5qcyc7XG5pbXBvcnQgeyBTRVRfVFlQRSB9IGZyb20gJy4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgU2V0VHlwZXMgPSB0eXBlb2YgU0VUX1RZUEU7XG5cbmV4cG9ydCB0eXBlIFBLID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlPFQ+IHtcbiAgcmVhZG9ubHkgZW50aXRpZXM6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7IHJlYWRvbmx5IFtwazogc3RyaW5nXTogVCB9IHwgdW5kZWZpbmVkO1xuICB9O1xuICByZWFkb25seSBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXg7XG4gIHJlYWRvbmx5IGVuZHBvaW50czoge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfCBQS1tdIHwgUEsgfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IG1ldGE6IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiB7XG4gICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICByZWFkb25seSBlcnJvcj86IEVycm9yVHlwZXM7XG4gICAgICByZWFkb25seSBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IHByZXZFeHBpcmVzQXQ/OiBudW1iZXI7XG4gICAgICByZWFkb25seSBpbnZhbGlkYXRlZD86IGJvb2xlYW47XG4gICAgICByZWFkb25seSBlcnJvclBvbGljeT86ICdoYXJkJyB8ICdzb2Z0JyB8IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9O1xuICByZWFkb25seSBlbnRpdHlNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICByZWFkb25seSBvcHRpbWlzdGljOiAoU2V0QWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbilbXTtcbiAgcmVhZG9ubHkgbGFzdFJlc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9ucy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlcjxBY3Rpb25zID0gQWN0aW9uVHlwZXM+IHtcbiAgZ2V0TWlkZGxld2FyZSgpOiBNaWRkbGV3YXJlPEFjdGlvbnM+O1xuICBjbGVhbnVwKCk6IHZvaWQ7XG4gIGluaXQ/OiAoc3RhdGU6IFN0YXRlPGFueT4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIHsgRGlzcGF0Y2gsIE1pZGRsZXdhcmUsIE1pZGRsZXdhcmVBUEkgfTtcbiJdLCJtYXBwaW5ncyI6IkFBZ0RBLGNBQWMsY0FBYztBQUFDIiwiaWdub3JlTGlzdCI6W119
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@data-client/core",
3
- "version": "0.10.0",
4
- "description": "High performance reactive framework for async data.",
3
+ "version": "0.11.0",
4
+ "description": "High performance mutable data framework.",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
7
7
  "react-native": "legacy/index.js",
@@ -120,7 +120,7 @@
120
120
  },
121
121
  "dependencies": {
122
122
  "@babel/runtime": "^7.17.0",
123
- "@data-client/normalizr": "^0.10.0",
123
+ "@data-client/normalizr": "^0.11.0",
124
124
  "flux-standard-action": "^2.1.1"
125
125
  },
126
126
  "devDependencies": {
package/src/actions.ts CHANGED
@@ -137,7 +137,7 @@ export interface ResetAction {
137
137
  export interface GCAction {
138
138
  type: typeof GC_TYPE;
139
139
  entities: [string, string][];
140
- results: string[];
140
+ endpoints: string[];
141
141
  }
142
142
 
143
143
  export type ActionTypes =
@@ -0,0 +1 @@
1
+ export default class AbortOptimistic extends Error {}
@@ -1,24 +1,25 @@
1
1
  import type {
2
2
  ErrorTypes,
3
3
  SnapshotInterface,
4
- DenormalizeCache,
5
4
  Schema,
6
5
  Denormalize,
6
+ Queryable,
7
+ SchemaArgs,
7
8
  } from '@data-client/normalizr';
8
9
  import {
9
- WeakEntityMap,
10
10
  ExpiryStatus,
11
11
  EndpointInterface,
12
12
  FetchFunction,
13
13
  ResolveType,
14
14
  DenormalizeNullable,
15
- Path,
16
- denormalizeCached,
15
+ EntityPath,
16
+ MemoCache,
17
17
  isEntity,
18
18
  denormalize,
19
+ validateQueryKey,
19
20
  } from '@data-client/normalizr';
20
- import { inferResults, validateInference } from '@data-client/normalizr';
21
21
 
22
+ import AbortOptimistic from './AbortOptimistic.js';
22
23
  import createExpireAll from './createExpireAll.js';
23
24
  import createFetch from './createFetch.js';
24
25
  import createInvalidate from './createInvalidate.js';
@@ -41,7 +42,7 @@ export type DataClientDispatch = (value: ActionTypes) => Promise<void>;
41
42
  interface ConstructorProps<D extends GenericDispatch = DataClientDispatch> {
42
43
  dispatch?: D;
43
44
  getState?: () => State<unknown>;
44
- globalCache?: DenormalizeCache;
45
+ memo?: Pick<MemoCache, 'denormalize' | 'query' | 'buildQueryKey'>;
45
46
  }
46
47
 
47
48
  const unsetDispatch = (action: unknown): Promise<void> => {
@@ -77,19 +78,22 @@ export default class Controller<
77
78
  * @see https://dataclient.io/docs/api/Controller#getState
78
79
  */
79
80
  declare readonly getState: () => State<unknown>;
80
- declare readonly globalCache: DenormalizeCache;
81
+ /**
82
+ * Singleton to maintain referential equality between calls
83
+ */
84
+ declare readonly memo: Pick<
85
+ MemoCache,
86
+ 'denormalize' | 'query' | 'buildQueryKey'
87
+ >;
81
88
 
82
89
  constructor({
83
90
  dispatch = unsetDispatch as any,
84
91
  getState = unsetState,
85
- globalCache = {
86
- entities: {},
87
- results: {},
88
- },
92
+ memo = new MemoCache(),
89
93
  }: ConstructorProps<D> = {}) {
90
94
  this.dispatch = dispatch;
91
95
  this.getState = getState;
92
- this.globalCache = globalCache;
96
+ this.memo = memo;
93
97
  }
94
98
 
95
99
  /*************** Action Dispatchers ***************/
@@ -239,7 +243,7 @@ export default class Controller<
239
243
  args: readonly [...Parameters<E>];
240
244
  response: any;
241
245
  fetchedAt: number;
242
- error?: false;
246
+ error?: false | undefined;
243
247
  },
244
248
  ): Promise<void> => {
245
249
  return this.dispatch(createSet(endpoint, meta as any));
@@ -324,9 +328,9 @@ export default class Controller<
324
328
  const key = endpoint.key(...args);
325
329
 
326
330
  const meta = selectMeta(state, key);
327
- const results = state.results[key];
331
+ const error = state.endpoints[key];
328
332
 
329
- if (results !== undefined && meta?.errorPolicy === 'soft') return;
333
+ if (error !== undefined && meta?.errorPolicy === 'soft') return;
330
334
 
331
335
  return meta?.error as any;
332
336
  };
@@ -335,85 +339,164 @@ export default class Controller<
335
339
  * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
336
340
  * @see https://dataclient.io/docs/api/Controller#getResponse
337
341
  */
338
- getResponse = <
342
+ getResponse<E extends EndpointInterface>(
343
+ endpoint: E,
344
+ ...rest: readonly [null, State<unknown>]
345
+ ): {
346
+ data: DenormalizeNullable<E['schema']>;
347
+ expiryStatus: ExpiryStatus;
348
+ expiresAt: number;
349
+ };
350
+
351
+ getResponse<E extends EndpointInterface>(
352
+ endpoint: E,
353
+ ...rest: readonly [...Parameters<E>, State<unknown>]
354
+ ): {
355
+ data: DenormalizeNullable<E['schema']>;
356
+ expiryStatus: ExpiryStatus;
357
+ expiresAt: number;
358
+ };
359
+
360
+ getResponse<
339
361
  E extends Pick<EndpointInterface, 'key' | 'schema' | 'invalidIfStale'>,
340
- Args extends readonly [...Parameters<E['key']>] | readonly [null],
341
362
  >(
342
363
  endpoint: E,
343
- ...rest: [...Args, State<unknown>]
364
+ ...rest: readonly [
365
+ ...(readonly [...Parameters<E['key']>] | readonly [null]),
366
+ State<unknown>,
367
+ ]
344
368
  ): {
345
369
  data: DenormalizeNullable<E['schema']>;
346
370
  expiryStatus: ExpiryStatus;
347
371
  expiresAt: number;
348
- } => {
372
+ };
373
+
374
+ getResponse(
375
+ endpoint: EndpointInterface,
376
+ ...rest: readonly [...unknown[], State<unknown>]
377
+ ): {
378
+ data: unknown;
379
+ expiryStatus: ExpiryStatus;
380
+ expiresAt: number;
381
+ } {
349
382
  const state = rest[rest.length - 1] as State<unknown>;
350
383
  // this is typescript generics breaking
351
384
  const args: any = rest
352
385
  .slice(0, rest.length - 1)
353
- .map(ensurePojo) as Parameters<E['key']>;
386
+ // handle FormData
387
+ .map(ensurePojo);
354
388
  const isActive = args.length !== 1 || args[0] !== null;
355
389
  const key = isActive ? endpoint.key(...args) : '';
356
- const cacheResults = isActive ? state.results[key] : undefined;
390
+ const cacheEndpoints = isActive ? state.endpoints[key] : undefined;
357
391
  const schema = endpoint.schema;
358
392
  const meta = selectMeta(state, key);
359
393
  let expiresAt = meta?.expiresAt;
360
-
361
- let invalidResults = false;
362
- let results;
363
- if (cacheResults === undefined && endpoint.schema !== undefined) {
364
- results = inferResults(
365
- endpoint.schema,
366
- args,
367
- state.indexes,
368
- state.entities,
369
- );
370
- invalidResults = !validateInference(results);
371
- if (!expiresAt && invalidResults) expiresAt = 1;
372
- } else {
373
- results = cacheResults;
374
- }
394
+ // if we have no endpoint entry, and our endpoint has a schema - try querying the store
395
+ const shouldQuery = cacheEndpoints === undefined && schema !== undefined;
396
+
397
+ const input =
398
+ shouldQuery ?
399
+ // nothing in endpoints cache, so try querying if we have a schema to do so
400
+ this.memo.buildQueryKey(
401
+ key,
402
+ schema,
403
+ args,
404
+ state.entities as any,
405
+ state.indexes,
406
+ )
407
+ : cacheEndpoints;
375
408
 
376
409
  if (!isActive) {
410
+ // when not active simply return the query input without denormalizing
377
411
  return {
378
- data: results as any,
412
+ data: input as any,
379
413
  expiryStatus: ExpiryStatus.Valid,
380
414
  expiresAt: Infinity,
381
415
  };
382
416
  }
383
417
 
384
- if (!endpoint.schema || !schemaHasEntity(endpoint.schema)) {
418
+ let isInvalid = false;
419
+ if (shouldQuery) {
420
+ isInvalid = !validateQueryKey(input);
421
+ } else if (!schema || !schemaHasEntity(schema)) {
385
422
  return {
386
- data: results,
423
+ data: cacheEndpoints,
387
424
  expiryStatus:
388
425
  meta?.invalidated ? ExpiryStatus.Invalid
389
- : cacheResults && !endpoint.invalidIfStale ? ExpiryStatus.Valid
426
+ : cacheEndpoints && !endpoint.invalidIfStale ? ExpiryStatus.Valid
390
427
  : ExpiryStatus.InvalidIfStale,
391
428
  expiresAt: expiresAt || 0,
392
- } as {
393
- data: DenormalizeNullable<E['schema']>;
394
- expiryStatus: ExpiryStatus;
395
- expiresAt: number;
396
429
  };
397
430
  }
398
431
 
399
- if (!this.globalCache.results[key])
400
- this.globalCache.results[key] = new WeakEntityMap();
401
-
402
432
  // second argument is false if any entities are missing
403
433
  // eslint-disable-next-line prefer-const
404
- const { data, paths } = denormalizeCached(
405
- results,
434
+ const { data, paths } = this.memo.denormalize(
435
+ input,
406
436
  schema,
407
437
  state.entities,
408
- this.globalCache.entities,
409
- this.globalCache.results[key],
410
438
  args,
411
- ) as { data: DenormalizeNullable<E['schema']>; paths: Path[] };
439
+ ) as { data: any; paths: EntityPath[] };
440
+
441
+ // note: isInvalid can only be true if shouldQuery is true
442
+ if (!expiresAt && isInvalid) expiresAt = 1;
443
+
444
+ return this.getSchemaResponse(
445
+ data,
446
+ paths,
447
+ state.entityMeta,
448
+ expiresAt,
449
+ endpoint.invalidIfStale || isInvalid,
450
+ meta,
451
+ );
452
+ }
453
+
454
+ /**
455
+ * Queries the store for a Querable schema
456
+ * @see https://dataclient.io/docs/api/Controller#get
457
+ */
458
+ get<S extends Queryable>(
459
+ schema: S,
460
+ ...rest: readonly [
461
+ ...SchemaArgs<S>,
462
+ Pick<State<unknown>, 'entities' | 'entityMeta'>,
463
+ ]
464
+ ): DenormalizeNullable<S> | undefined {
465
+ const state = rest[rest.length - 1] as State<any>;
466
+ // this is typescript generics breaking
467
+ const args: any = rest
468
+ .slice(0, rest.length - 1)
469
+ .map(ensurePojo) as SchemaArgs<S>;
470
+
471
+ // NOTE: different orders can result in cache busting here; but since it's just a perf penalty we will allow for now
472
+ const key = JSON.stringify(args);
473
+
474
+ return this.memo.query(
475
+ key,
476
+ schema,
477
+ args,
478
+ state.entities as any,
479
+ state.indexes,
480
+ );
481
+ }
482
+
483
+ private getSchemaResponse<T>(
484
+ data: T,
485
+ paths: EntityPath[],
486
+ entityMeta: State<unknown>['entityMeta'],
487
+ expiresAt: number,
488
+ invalidIfStale: boolean,
489
+ meta: { error?: unknown; invalidated?: unknown } = {},
490
+ ): {
491
+ data: T;
492
+ expiryStatus: ExpiryStatus;
493
+ expiresAt: number;
494
+ } {
412
495
  const invalidDenormalize = typeof data === 'symbol';
413
496
 
414
497
  // fallback to entity expiry time
415
498
  if (!expiresAt) {
416
- expiresAt = entityExpiresAt(paths, state.entityMeta);
499
+ expiresAt = entityExpiresAt(paths, entityMeta);
417
500
  }
418
501
 
419
502
  // https://dataclient.io/docs/concepts/expiry-policy#expiry-status
@@ -422,18 +505,17 @@ export default class Controller<
422
505
  const expiryStatus =
423
506
  meta?.invalidated || (invalidDenormalize && !meta?.error) ?
424
507
  ExpiryStatus.Invalid
425
- : invalidDenormalize || endpoint.invalidIfStale || invalidResults ?
426
- ExpiryStatus.InvalidIfStale
508
+ : invalidDenormalize || invalidIfStale ? ExpiryStatus.InvalidIfStale
427
509
  : ExpiryStatus.Valid;
428
510
 
429
511
  return { data, expiryStatus, expiresAt };
430
- };
512
+ }
431
513
  }
432
514
 
433
515
  // benchmark: https://www.measurethat.net/Benchmarks/Show/24691/0/min-reducer-vs-imperative-with-paths
434
516
  // earliest expiry dictates age
435
517
  function entityExpiresAt(
436
- paths: Path[],
518
+ paths: EntityPath[],
437
519
  entityMeta: {
438
520
  readonly [entityKey: string]: {
439
521
  readonly [pk: string]: {
@@ -455,7 +537,7 @@ function entityExpiresAt(
455
537
 
456
538
  /** Determine whether the schema has any entities.
457
539
  *
458
- * Without entities, denormalization is not needed, and results should not be inferred.
540
+ * Without entities, denormalization is not needed, and results should not be queried.
459
541
  */
460
542
  function schemaHasEntity(schema: Schema): boolean {
461
543
  if (isEntity(schema)) return true;
@@ -478,6 +560,7 @@ class Snapshot<T = unknown> implements SnapshotInterface {
478
560
  private state: State<T>;
479
561
  private controller: Controller;
480
562
  readonly fetchedAt: number;
563
+ readonly abort = new AbortOptimistic();
481
564
 
482
565
  constructor(controller: Controller, state: State<T>, fetchedAt = 0) {
483
566
  this.state = state;
@@ -487,20 +570,48 @@ class Snapshot<T = unknown> implements SnapshotInterface {
487
570
 
488
571
  /*************** Data Access ***************/
489
572
  /** @see https://dataclient.io/docs/api/Snapshot#getResponse */
490
- getResponse = <
573
+ getResponse<E extends EndpointInterface>(
574
+ endpoint: E,
575
+ ...args: readonly [null]
576
+ ): {
577
+ data: DenormalizeNullable<E['schema']>;
578
+ expiryStatus: ExpiryStatus;
579
+ expiresAt: number;
580
+ };
581
+
582
+ getResponse<E extends EndpointInterface>(
583
+ endpoint: E,
584
+ ...args: readonly [...Parameters<E>]
585
+ ): {
586
+ data: DenormalizeNullable<E['schema']>;
587
+ expiryStatus: ExpiryStatus;
588
+ expiresAt: number;
589
+ };
590
+
591
+ getResponse<
491
592
  E extends Pick<EndpointInterface, 'key' | 'schema' | 'invalidIfStale'>,
492
- Args extends readonly [...Parameters<E['key']>],
493
593
  >(
494
594
  endpoint: E,
495
- ...args: Args
595
+ ...args: readonly [...Parameters<E['key']>] | readonly [null]
496
596
  ): {
497
597
  data: DenormalizeNullable<E['schema']>;
498
598
  expiryStatus: ExpiryStatus;
499
599
  expiresAt: number;
500
- } => {
501
- return this.controller.getResponse(endpoint, ...args, this.state);
502
600
  };
503
601
 
602
+ getResponse<
603
+ E extends Pick<EndpointInterface, 'key' | 'schema' | 'invalidIfStale'>,
604
+ >(
605
+ endpoint: E,
606
+ ...args: readonly [...Parameters<E['key']>] | readonly [null]
607
+ ): {
608
+ data: DenormalizeNullable<E['schema']>;
609
+ expiryStatus: ExpiryStatus;
610
+ expiresAt: number;
611
+ } {
612
+ return this.controller.getResponse(endpoint, ...args, this.state);
613
+ }
614
+
504
615
  /** @see https://dataclient.io/docs/api/Snapshot#getError */
505
616
  getError = <
506
617
  E extends Pick<EndpointInterface, 'key'>,
@@ -511,4 +622,15 @@ class Snapshot<T = unknown> implements SnapshotInterface {
511
622
  ): ErrorTypes | undefined => {
512
623
  return this.controller.getError(endpoint, ...args, this.state);
513
624
  };
625
+
626
+ /**
627
+ * Retrieved memoized value for any Querable schema
628
+ * @see https://dataclient.io/docs/api/Snapshot#get
629
+ */
630
+ get<S extends Queryable>(
631
+ schema: S,
632
+ ...args: SchemaArgs<S>
633
+ ): DenormalizeNullable<S> | undefined {
634
+ return this.controller.get(schema, ...args, this.state);
635
+ }
514
636
  }