@o3r/core 13.2.0-prerelease.9 → 14.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/builders/app-version/index.js.map +1 -0
  2. package/builders/app-version/schema.js.map +1 -0
  3. package/builders/lib-build/index.js.map +1 -0
  4. package/builders/lib-build/schema.js.map +1 -0
  5. package/builders/multi-watcher/index.js.map +1 -0
  6. package/builders/multi-watcher/schema.js.map +1 -0
  7. package/builders/ngc/index.js.map +1 -0
  8. package/builders/ngc/schema.js.map +1 -0
  9. package/builders/pattern-replacement/index.js.map +1 -0
  10. package/builders/pattern-replacement/schema.js.map +1 -0
  11. package/builders/run-script/index.js.map +1 -0
  12. package/builders/run-script/schema.js.map +1 -0
  13. package/builders/utils.js.map +1 -0
  14. package/core/application/build-properties.d.ts +50 -0
  15. package/core/application/build-properties.d.ts.map +1 -0
  16. package/core/application/build-properties.js +17 -0
  17. package/core/application/build-properties.js.map +1 -0
  18. package/core/application/dgp.interfaces.d.ts +35 -0
  19. package/core/application/dgp.interfaces.d.ts.map +1 -0
  20. package/core/application/dgp.interfaces.js +2 -0
  21. package/core/application/dgp.interfaces.js.map +1 -0
  22. package/core/application/index.d.ts +4 -0
  23. package/core/application/index.d.ts.map +1 -0
  24. package/core/application/index.js +4 -0
  25. package/core/application/index.js.map +1 -0
  26. package/core/application/runtime.d.ts +14 -0
  27. package/core/application/runtime.d.ts.map +1 -0
  28. package/core/application/runtime.js +2 -0
  29. package/core/application/runtime.js.map +1 -0
  30. package/core/common/index.d.ts +3 -0
  31. package/core/common/index.d.ts.map +1 -0
  32. package/core/common/index.js +3 -0
  33. package/core/common/index.js.map +1 -0
  34. package/core/common/interface-utils.d.ts +7 -0
  35. package/core/common/interface-utils.d.ts.map +1 -0
  36. package/core/common/interface-utils.js +2 -0
  37. package/core/common/interface-utils.js.map +1 -0
  38. package/core/common/label-value.d.ts +8 -0
  39. package/core/common/label-value.d.ts.map +1 -0
  40. package/core/common/label-value.js +2 -0
  41. package/core/common/label-value.js.map +1 -0
  42. package/core/devkit/devtools.interface.d.ts +34 -0
  43. package/core/devkit/devtools.interface.d.ts.map +1 -0
  44. package/core/devkit/devtools.interface.js +2 -0
  45. package/core/devkit/devtools.interface.js.map +1 -0
  46. package/core/devkit/index.d.ts +2 -0
  47. package/core/devkit/index.d.ts.map +1 -0
  48. package/core/devkit/index.js +2 -0
  49. package/core/devkit/index.js.map +1 -0
  50. package/core/index.d.ts +7 -0
  51. package/core/index.d.ts.map +1 -0
  52. package/core/index.js +7 -0
  53. package/core/index.js.map +1 -0
  54. package/core/interfaces/configuration.d.ts +90 -0
  55. package/core/interfaces/configuration.d.ts.map +1 -0
  56. package/core/interfaces/configuration.js +2 -0
  57. package/core/interfaces/configuration.js.map +1 -0
  58. package/core/interfaces/context.d.ts +57 -0
  59. package/core/interfaces/context.d.ts.map +1 -0
  60. package/core/interfaces/context.js +2 -0
  61. package/core/interfaces/context.js.map +1 -0
  62. package/core/interfaces/index.d.ts +5 -0
  63. package/core/interfaces/index.d.ts.map +1 -0
  64. package/core/interfaces/index.js +5 -0
  65. package/core/interfaces/index.js.map +1 -0
  66. package/core/interfaces/item-identifier.d.ts +14 -0
  67. package/core/interfaces/item-identifier.d.ts.map +1 -0
  68. package/core/interfaces/item-identifier.js +2 -0
  69. package/core/interfaces/item-identifier.js.map +1 -0
  70. package/core/interfaces/translation.d.ts +7 -0
  71. package/core/interfaces/translation.d.ts.map +1 -0
  72. package/core/interfaces/translation.js +2 -0
  73. package/core/interfaces/translation.js.map +1 -0
  74. package/core/metadata/component.decorator.d.ts +32 -0
  75. package/core/metadata/component.decorator.d.ts.map +1 -0
  76. package/core/metadata/component.decorator.js +18 -0
  77. package/core/metadata/component.decorator.js.map +1 -0
  78. package/core/metadata/component.identifier.d.ts +7 -0
  79. package/core/metadata/component.identifier.d.ts.map +1 -0
  80. package/core/metadata/component.identifier.js +9 -0
  81. package/core/metadata/component.identifier.js.map +1 -0
  82. package/core/metadata/index.d.ts +4 -0
  83. package/core/metadata/index.d.ts.map +1 -0
  84. package/core/metadata/index.js +4 -0
  85. package/core/metadata/index.js.map +1 -0
  86. package/core/metadata/metadata.interface.d.ts +10 -0
  87. package/core/metadata/metadata.interface.d.ts.map +1 -0
  88. package/core/metadata/metadata.interface.js +2 -0
  89. package/core/metadata/metadata.interface.js.map +1 -0
  90. package/core/rules-engine/index.d.ts +2 -0
  91. package/core/rules-engine/index.d.ts.map +1 -0
  92. package/core/rules-engine/index.js +2 -0
  93. package/core/rules-engine/index.js.map +1 -0
  94. package/core/rules-engine/rules-engine.interfaces.d.ts +24 -0
  95. package/core/rules-engine/rules-engine.interfaces.d.ts.map +1 -0
  96. package/core/rules-engine/rules-engine.interfaces.js +2 -0
  97. package/core/rules-engine/rules-engine.interfaces.js.map +1 -0
  98. package/log/index.d.ts +2 -0
  99. package/log/index.d.ts.map +1 -0
  100. package/log/index.js +2 -0
  101. package/log/index.js.map +1 -0
  102. package/log/logger.d.ts +36 -0
  103. package/log/logger.d.ts.map +1 -0
  104. package/log/logger.js +2 -0
  105. package/log/logger.js.map +1 -0
  106. package/messages/common-message.interface.d.ts +17 -0
  107. package/messages/common-message.interface.d.ts.map +1 -0
  108. package/messages/common-message.interface.js +2 -0
  109. package/messages/common-message.interface.js.map +1 -0
  110. package/messages/index.d.ts +4 -0
  111. package/messages/index.d.ts.map +1 -0
  112. package/messages/index.js +4 -0
  113. package/messages/index.js.map +1 -0
  114. package/messages/message.helpers.d.ts +24 -0
  115. package/messages/message.helpers.d.ts.map +1 -0
  116. package/messages/message.helpers.js +54 -0
  117. package/messages/message.helpers.js.map +1 -0
  118. package/messages/message.interfaces.d.ts +26 -0
  119. package/messages/message.interfaces.d.ts.map +1 -0
  120. package/messages/message.interfaces.js +5 -0
  121. package/messages/message.interfaces.js.map +1 -0
  122. package/migration.json +10 -0
  123. package/package.json +6 -6
  124. package/public_api.d.ts +6 -0
  125. package/public_api.d.ts.map +1 -0
  126. package/public_api.js +6 -0
  127. package/public_api.js.map +1 -0
  128. package/schematics/add-modules/index.js.map +1 -0
  129. package/schematics/add-modules/schema.js.map +1 -0
  130. package/schematics/component/container/index.js.map +1 -0
  131. package/schematics/component/container/schema.js.map +1 -0
  132. package/schematics/component/index.js.map +1 -0
  133. package/schematics/component/presenter/index.js.map +1 -0
  134. package/schematics/component/presenter/schema.js.map +1 -0
  135. package/schematics/component/schema.js.map +1 -0
  136. package/schematics/component/structures.types.js.map +1 -0
  137. package/schematics/context-to-component/index.js.map +1 -0
  138. package/schematics/context-to-component/schema.js.map +1 -0
  139. package/schematics/convert-component/index.js.map +1 -0
  140. package/schematics/convert-component/schema.d.ts +1 -1
  141. package/schematics/convert-component/schema.d.ts.map +1 -1
  142. package/schematics/convert-component/schema.js.map +1 -0
  143. package/schematics/ng-add/component-decorator/index.js.map +1 -0
  144. package/schematics/ng-add/index.js.map +1 -0
  145. package/schematics/ng-add/project-setup/index.js.map +1 -0
  146. package/schematics/ng-add/schema.js.map +1 -0
  147. package/schematics/ng-add/updates-for-v8/cms-adapters/update-builders-names.js.map +1 -0
  148. package/schematics/ng-add/updates-for-v8/generators/update-generators-names.js.map +1 -0
  149. package/schematics/ng-add/updates-for-v8/replaced-packages.js.map +1 -0
  150. package/schematics/ng-add-create/index.js.map +1 -0
  151. package/schematics/ng-add-create/schema.js.map +1 -0
  152. package/schematics/ng-update/index.d.ts +8 -0
  153. package/schematics/ng-update/index.d.ts.map +1 -1
  154. package/schematics/ng-update/index.js +13 -1
  155. package/schematics/ng-update/index.js.map +1 -0
  156. package/schematics/ng-update/v10.0/configuration.js.map +1 -0
  157. package/schematics/ng-update/v8.2/import-map.js.map +1 -0
  158. package/schematics/page/index.js.map +1 -0
  159. package/schematics/page/schema.js.map +1 -0
  160. package/schematics/renovate/index.js.map +1 -0
  161. package/schematics/renovate/schema.js.map +1 -0
  162. package/schematics/rule-factories/additional-modules/index.js.map +1 -0
  163. package/schematics/rule-factories/component/analytics.js.map +1 -0
  164. package/schematics/rule-factories/component/common.js.map +1 -0
  165. package/schematics/rule-factories/component/configuration.js.map +1 -0
  166. package/schematics/rule-factories/component/context.js.map +1 -0
  167. package/schematics/rule-factories/component/design-token.js.map +1 -0
  168. package/schematics/rule-factories/component/fixture.js.map +1 -0
  169. package/schematics/rule-factories/component/localization.js.map +1 -0
  170. package/schematics/rule-factories/component/rules-engine.js.map +1 -0
  171. package/schematics/rule-factories/component/theming.js.map +1 -0
  172. package/schematics/rule-factories/customization-environment/index.js.map +1 -0
  173. package/schematics/rule-factories/index.js.map +1 -0
  174. package/schematics/rule-factories/o3r-basic-updates/index.js.map +1 -0
  175. package/schematics/rule-factories/otter-environment/index.js.map +1 -0
  176. package/schematics/rule-factories/store/index.js.map +1 -0
  177. package/schematics/rule-factories/update-package-json/index.js.map +1 -0
  178. package/schematics/schematics-update/index.js.map +1 -0
  179. package/schematics/schematics-update/schema.js.map +1 -0
  180. package/schematics/service/index.js.map +1 -0
  181. package/schematics/service/schema.js.map +1 -0
  182. package/schematics/shared/presets/all.preset.js.map +1 -0
  183. package/schematics/shared/presets/basic.preset.js.map +1 -0
  184. package/schematics/shared/presets/cms.preset.js.map +1 -0
  185. package/schematics/shared/presets/external.preset.js.map +1 -0
  186. package/schematics/shared/presets/helpers.js.map +1 -0
  187. package/schematics/shared/presets/index.js.map +1 -0
  188. package/schematics/shared/presets/preset.interface.js.map +1 -0
  189. package/schematics/shared/presets/recommended.preset.js.map +1 -0
  190. package/schematics/show-modules/index.js.map +1 -0
  191. package/schematics/show-modules/schema.js.map +1 -0
  192. package/schematics/store/common/helpers.js.map +1 -0
  193. package/schematics/store/common/schema.js.map +1 -0
  194. package/schematics/store/entity-async/index.js.map +1 -0
  195. package/schematics/store/entity-async/schema.js.map +1 -0
  196. package/schematics/store/entity-sync/index.js.map +1 -0
  197. package/schematics/store/entity-sync/schema.js.map +1 -0
  198. package/schematics/store/index.js.map +1 -0
  199. package/schematics/store/schema.js.map +1 -0
  200. package/schematics/store/simple-async/index.js.map +1 -0
  201. package/schematics/store/simple-async/schema.js.map +1 -0
  202. package/schematics/store/simple-sync/index.js.map +1 -0
  203. package/schematics/store/simple-sync/schema.js.map +1 -0
  204. package/schematics/store-action/index.js.map +1 -0
  205. package/schematics/store-action/schema.js.map +1 -0
  206. package/store/async/async-entity.adapter.d.ts +62 -0
  207. package/store/async/async-entity.adapter.d.ts.map +1 -0
  208. package/store/async/async-entity.adapter.js +49 -0
  209. package/store/async/async-entity.adapter.js.map +1 -0
  210. package/store/async/async.adapter.d.ts +91 -0
  211. package/store/async/async.adapter.d.ts.map +1 -0
  212. package/store/async/async.adapter.js +94 -0
  213. package/store/async/async.adapter.js.map +1 -0
  214. package/store/async/async.helpers.d.ts +17 -0
  215. package/store/async/async.helpers.d.ts.map +1 -0
  216. package/store/async/async.helpers.js +25 -0
  217. package/store/async/async.helpers.js.map +1 -0
  218. package/store/async/async.interfaces.d.ts +91 -0
  219. package/store/async/async.interfaces.d.ts.map +1 -0
  220. package/store/async/async.interfaces.js +2 -0
  221. package/store/async/async.interfaces.js.map +1 -0
  222. package/store/async/async.operators.d.ts +22 -0
  223. package/store/async/async.operators.d.ts.map +1 -0
  224. package/store/async/async.operators.js +75 -0
  225. package/store/async/async.operators.js.map +1 -0
  226. package/store/async/async.props.d.ts +7 -0
  227. package/store/async/async.props.d.ts.map +1 -0
  228. package/store/async/async.props.js +10 -0
  229. package/store/async/async.props.js.map +1 -0
  230. package/store/async/async.serializer.d.ts +29 -0
  231. package/store/async/async.serializer.d.ts.map +1 -0
  232. package/store/async/async.serializer.js +34 -0
  233. package/store/async/async.serializer.js.map +1 -0
  234. package/store/async/index.d.ts +8 -0
  235. package/store/async/index.d.ts.map +1 -0
  236. package/store/async/index.js +8 -0
  237. package/store/async/index.js.map +1 -0
  238. package/store/index.d.ts +3 -0
  239. package/store/index.d.ts.map +1 -0
  240. package/store/index.js +3 -0
  241. package/store/index.js.map +1 -0
  242. package/store/types.d.ts +95 -0
  243. package/store/types.d.ts.map +1 -0
  244. package/store/types.js +11 -0
  245. package/store/types.js.map +1 -0
  246. package/utils/debug/debug.helper.d.ts +14 -0
  247. package/utils/debug/debug.helper.d.ts.map +1 -0
  248. package/utils/debug/debug.helper.js +19 -0
  249. package/utils/debug/debug.helper.js.map +1 -0
  250. package/utils/deep-fill/deep-fill.d.ts +37 -0
  251. package/utils/deep-fill/deep-fill.d.ts.map +1 -0
  252. package/utils/deep-fill/deep-fill.js +71 -0
  253. package/utils/deep-fill/deep-fill.js.map +1 -0
  254. package/utils/index.d.ts +4 -0
  255. package/utils/index.d.ts.map +1 -0
  256. package/utils/index.js +4 -0
  257. package/utils/index.js.map +1 -0
  258. package/utils/rendering/rendering.helpers.d.ts +10 -0
  259. package/utils/rendering/rendering.helpers.d.ts.map +1 -0
  260. package/utils/rendering/rendering.helpers.js +31 -0
  261. package/utils/rendering/rendering.helpers.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-entity.adapter.d.ts","sourceRoot":"","sources":["../../../src/store/async/async-entity.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEZ,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAE3F;;;;;OAKG;IACH,eAAe,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAEvH;;;;;OAKG;IACH,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAEjI;;;;;OAKG;IACH,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAEnG;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAEtK;;;;;;OAMG;IACH,iBAAiB,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEtM;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAExI;;;;;;OAMG;IACH,kBAAkB,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACzK;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CA2DjI"}
@@ -0,0 +1,49 @@
1
+ import { asyncStoreItemAdapter, } from './async.adapter';
2
+ /**
3
+ * Create an Asynchronous Request Entity Adapter
4
+ * @param adapter Entity Adapter
5
+ */
6
+ export function createEntityAsyncRequestAdapter(adapter) {
7
+ const addRequestOne = (state, id, requestId) => {
8
+ const currentEntity = typeof id !== 'undefined' && id !== null && state.entities[id];
9
+ if (currentEntity) {
10
+ const changes = asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity), requestId);
11
+ return adapter.updateOne({ id, changes }, state);
12
+ }
13
+ return asyncStoreItemAdapter.addRequest(state, requestId);
14
+ };
15
+ const addRequestMany = (state, ids, requestId) => adapter.updateMany(ids.filter((id) => !!state.entities[id]).map((id) => ({
16
+ id,
17
+ changes: asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]), requestId)
18
+ })), state);
19
+ const resolveRequestOne = (state, entity, requestId, idProperty = 'id') => {
20
+ const currentEntity = state.entities[entity[idProperty]];
21
+ const newEntity = currentEntity
22
+ ? asyncStoreItemAdapter.resolveRequest({ ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity) }, requestId)
23
+ : asyncStoreItemAdapter.initialize(entity);
24
+ state = asyncStoreItemAdapter.resolveRequest(state, requestId);
25
+ return adapter.upsertOne(newEntity, state);
26
+ };
27
+ const resolveRequestMany = (state, entities, requestId, idProperty = 'id') => adapter.updateMany(entities.filter((entity) => !!state.entities[entity[idProperty]]).map((entity) => {
28
+ const model = { ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[entity[idProperty]]) };
29
+ return { id: entity[idProperty], changes: asyncStoreItemAdapter.resolveRequest(model, requestId) };
30
+ }), state);
31
+ const failRequestMany = (state, ids = [], requestId) => {
32
+ if (ids.length > 0 && !ids.some((id) => state.entities[id] === undefined)) {
33
+ return adapter.updateMany(ids.map((id) => ({
34
+ id,
35
+ changes: asyncStoreItemAdapter.failRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]), requestId)
36
+ })), state);
37
+ }
38
+ return asyncStoreItemAdapter.failRequest(state, requestId);
39
+ };
40
+ return {
41
+ ...adapter,
42
+ failRequestMany,
43
+ addRequestOne,
44
+ addRequestMany,
45
+ resolveRequestOne,
46
+ resolveRequestMany
47
+ };
48
+ }
49
+ //# sourceMappingURL=async-entity.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-entity.adapter.js","sourceRoot":"","sources":["../../../src/store/async/async-entity.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { AsyncStoreItem, EntityStatus } from './async.interfaces';
2
+ /**
3
+ * Adapter to help manipulate AsyncStoreItems to register new request and update the status when they fail or resolve.
4
+ */
5
+ export interface AsyncStoreItemAdapter {
6
+ /**
7
+ * Adds a request to an AsyncStoreItem.
8
+ * If the item had a failure and no ongoing requests, sets it's failure status back to false
9
+ * @param item
10
+ * @param requestId
11
+ */
12
+ addRequest<T extends AsyncStoreItem>(item: T, requestId: string): T;
13
+ /**
14
+ * Updates an AsyncStoreItem when a request has resolved.
15
+ * Removes it from its requestIds array.
16
+ * If no requestId provided, the method returns the current status of the AsyncStoreItem
17
+ * @param item
18
+ * @param requestId
19
+ */
20
+ resolveRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;
21
+ /**
22
+ * Updates an AsyncStoreItem when a request has failed.
23
+ * Removes it from its requestIds array and set its failure status.
24
+ * @param item
25
+ * @param requestId
26
+ */
27
+ failRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;
28
+ /**
29
+ * Add AsyncStoreItem properties (with initial values) to the given entity
30
+ * @param entityItem
31
+ * @returns Given item improved with AsyncStoreItem properties
32
+ */
33
+ initialize<T extends object>(entityItem: T): T & AsyncStoreItem;
34
+ /**
35
+ * Extract only AsyncStoreItem properties from the given entity
36
+ * @param entityItem A model containing AsyncStoreItem properties
37
+ * @returns Object containing only AsyncStoreItem properties
38
+ */
39
+ extractAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): AsyncStoreItem;
40
+ /**
41
+ * Clear AsyncStoreItem properties from the given entity
42
+ * @param entityItem A model containing AsyncStoreItem properties
43
+ */
44
+ clearAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): T;
45
+ /**
46
+ * Merges an AsyncStoreItem collection into one item that gives an overall status.
47
+ * @param items
48
+ */
49
+ merge(...items: (AsyncStoreItem | undefined)[]): AsyncStoreItem;
50
+ /**
51
+ * Add a request to the given subResource of an EntityStatus object
52
+ * @param status
53
+ * @param subResource
54
+ * @param requestId
55
+ */
56
+ entityStatusAddRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId: string): T;
57
+ /**
58
+ * Resolve a request on the given subResource of an EntityStatus object
59
+ * @param status
60
+ * @param subResource
61
+ * @param requestId
62
+ */
63
+ entityStatusResolveRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;
64
+ /**
65
+ * Fail a request to the given subResource of an EntityStatus object
66
+ * @param status
67
+ * @param subResource
68
+ * @param requestId
69
+ */
70
+ entityStatusFailRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;
71
+ /**
72
+ * Reset the failure status of the given subResource of an EntityStatus object
73
+ * @param status
74
+ * @param subResource
75
+ */
76
+ entityStatusResetFailure<T extends EntityStatus<T>>(status: T, subResource: keyof T): T;
77
+ /**
78
+ * Reset the failure status of the given AsyncStoreItem to false
79
+ * @param entityItem
80
+ * @returns AsyncStoreItem with the updated failure status
81
+ */
82
+ resetFailureStatus<T extends AsyncStoreItem>(entityItem: T): T;
83
+ /**
84
+ * Set the pending status of the given AsyncStoreItem to true
85
+ * @param entityItem
86
+ * @returns AsyncStoreItem with the updated pending status
87
+ */
88
+ setLoadingStatus<T extends AsyncStoreItem>(entityItem: T): T;
89
+ }
90
+ export declare const asyncStoreItemAdapter: AsyncStoreItemAdapter;
91
+ //# sourceMappingURL=async.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.adapter.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAEzE;;;;;OAKG;IACH,WAAW,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAEtE;;;;OAIG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;IAEhE;;;;OAIG;IACH,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAAE,UAAU,EAAE,CAAC,GAAG,cAAc,CAAC;IAE/E;;;OAGG;IACH,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAEhE;;;OAGG;IACH,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,GAAG,cAAc,CAAC;IAEhE;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAEzG;;;;;OAKG;IACH,0BAA0B,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAE9G;;;;;OAKG;IACH,uBAAuB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAE3G;;;;OAIG;IACH,wBAAwB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAExF;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,SAAS,cAAc,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAE/D;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,cAAc,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,qBAAqB,EAAE,qBAwGnC,CAAC"}
@@ -0,0 +1,94 @@
1
+ export const asyncStoreItemAdapter = {
2
+ addRequest: (item, requestId) => {
3
+ return {
4
+ ...item,
5
+ requestIds: [...item.requestIds, requestId],
6
+ isFailure: item.requestIds.length === 0 ? false : item.isFailure,
7
+ isPending: true
8
+ };
9
+ },
10
+ failRequest: (item, requestId) => {
11
+ const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;
12
+ return {
13
+ ...item,
14
+ isFailure: true,
15
+ isPending: requestIds.length > 0,
16
+ requestIds
17
+ };
18
+ },
19
+ resolveRequest: (item, requestId) => {
20
+ const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;
21
+ return {
22
+ ...item,
23
+ requestIds,
24
+ isPending: requestIds.length > 0
25
+ };
26
+ },
27
+ initialize: (entityItem) => {
28
+ return {
29
+ ...entityItem,
30
+ requestIds: []
31
+ };
32
+ },
33
+ extractAsyncStoreItem: (entityItem) => {
34
+ return {
35
+ requestIds: [...entityItem.requestIds],
36
+ isFailure: entityItem.isFailure,
37
+ isPending: entityItem.isPending
38
+ };
39
+ },
40
+ clearAsyncStoreItem: (entityItem) => {
41
+ const { isPending, isFailure, ...newResponse } = { ...entityItem, requestIds: [] };
42
+ return newResponse;
43
+ },
44
+ merge: (...items) => {
45
+ return items.reduce((mergedItem, item) => item
46
+ ? {
47
+ requestIds: [...mergedItem.requestIds, ...item.requestIds],
48
+ isFailure: mergedItem.isFailure || item.isFailure,
49
+ isPending: mergedItem.isPending || item.isPending
50
+ }
51
+ : mergedItem, asyncStoreItemAdapter.initialize({}));
52
+ },
53
+ entityStatusAddRequest: (status, subResource, requestId) => {
54
+ const currentSubStatus = status[subResource] || asyncStoreItemAdapter.initialize({});
55
+ return {
56
+ ...status,
57
+ [subResource]: asyncStoreItemAdapter.addRequest(currentSubStatus, requestId)
58
+ };
59
+ },
60
+ entityStatusResolveRequest: (status, subResource, requestId) => {
61
+ const currentSubStatus = status[subResource];
62
+ return {
63
+ ...status,
64
+ [subResource]: currentSubStatus ? asyncStoreItemAdapter.resolveRequest(currentSubStatus, requestId) : { requestIds: [] }
65
+ };
66
+ },
67
+ entityStatusFailRequest: (status, subResource, requestId) => {
68
+ const currentSubStatus = status[subResource];
69
+ return {
70
+ ...status,
71
+ [subResource]: currentSubStatus ? asyncStoreItemAdapter.failRequest(currentSubStatus, requestId) : { requestIds: [], isFailure: true }
72
+ };
73
+ },
74
+ entityStatusResetFailure: (status, subResource) => {
75
+ const currentSubStatus = status[subResource];
76
+ return {
77
+ ...status,
78
+ [subResource]: currentSubStatus ? asyncStoreItemAdapter.resetFailureStatus(currentSubStatus) : { requestIds: [] }
79
+ };
80
+ },
81
+ resetFailureStatus: (entityItem) => {
82
+ return {
83
+ ...entityItem,
84
+ isFailure: false
85
+ };
86
+ },
87
+ setLoadingStatus: (entityItem) => {
88
+ return {
89
+ ...entityItem,
90
+ isPending: true
91
+ };
92
+ }
93
+ };
94
+ //# sourceMappingURL=async.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.adapter.js","sourceRoot":"","sources":["../../../src/store/async/async.adapter.ts"],"names":[],"mappings":"AA2GA,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IAC1D,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC9B,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YAChE,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAClG,OAAO;YACL,GAAG,IAAI;YACP,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;YAChC,UAAU;SACX,CAAC;IACJ,CAAC;IAED,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAClG,OAAO;YACL,GAAG,IAAI;YACP,UAAU;YACV,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;QACzB,OAAO;YACL,GAAG,UAAU;YACb,UAAU,EAAE,EAAiB;SAC9B,CAAC;IACJ,CAAC;IAED,qBAAqB,EAAE,CAAC,UAAU,EAAE,EAAE;QACpC,OAAO;YACL,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;YACtC,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC;IACJ,CAAC;IAED,mBAAmB,EAAE,CAA2B,UAAa,EAAE,EAAE;QAC/D,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,GAAM,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACtF,OAAO,WAAgB,CAAC;IAC1B,CAAC;IAED,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE;QAClB,OAAO,KAAK,CAAC,MAAM,CAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;YAC5D,CAAC,CAAC;gBACA,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1D,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;gBACjD,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;aAClD;YACD,CAAC,CAAC,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sBAAsB,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;QACzD,MAAM,gBAAgB,GAAmB,MAAM,CAAC,WAAW,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrG,OAAO;YACL,GAAG,MAAM;YACT,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,0BAA0B,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;QAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG,MAAM;YACT,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAiB,EAAE;SACxI,CAAC;IACJ,CAAC;IAED,uBAAuB,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;QAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG,MAAM;YACT,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAiB,EAAE,SAAS,EAAE,IAAI,EAAE;SACtJ,CAAC;IACJ,CAAC;IAED,wBAAwB,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAChD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG,MAAM;YACT,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAiB,EAAE;SACjI,CAAC;IACJ,CAAC;IAED,kBAAkB,EAAE,CAAC,UAAU,EAAE,EAAE;QACjC,OAAO;YACL,GAAG,UAAU;YACb,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,gBAAgB,EAAE,CAAC,UAAU,EAAE,EAAE;QAC/B,OAAO;YACL,GAAG,UAAU;YACb,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AsyncRequest, FromApiActionPayload } from './async.interfaces';
2
+ /**
3
+ * Determine if the action is an AsyncRequest action
4
+ * @param action Redux Action
5
+ */
6
+ export declare function isCallAction<T = any>(action?: any): action is FromApiActionPayload<T>;
7
+ /**
8
+ * Determine if the action is an AsyncRequest action with a Request ID
9
+ * @param action Redux Action
10
+ */
11
+ export declare function isIdentifiedCallAction<T = any>(action?: any): action is FromApiActionPayload<T> & AsyncRequest;
12
+ /**
13
+ * Determine if the given item implements the AsyncRequest interface
14
+ * @param item
15
+ */
16
+ export declare function isAsyncRequest<T>(item: any): item is T & AsyncRequest;
17
+ //# sourceMappingURL=async.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.helpers.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAMrF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,YAAY,CAE9G;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,YAAY,CAErE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Determine if the action is an AsyncRequest action
3
+ * @param action Redux Action
4
+ */
5
+ export function isCallAction(action) {
6
+ if (!action) {
7
+ return false;
8
+ }
9
+ return !!action.call && action.call instanceof Promise;
10
+ }
11
+ /**
12
+ * Determine if the action is an AsyncRequest action with a Request ID
13
+ * @param action Redux Action
14
+ */
15
+ export function isIdentifiedCallAction(action) {
16
+ return isCallAction(action) && typeof action.requestId !== 'undefined';
17
+ }
18
+ /**
19
+ * Determine if the given item implements the AsyncRequest interface
20
+ * @param item
21
+ */
22
+ export function isAsyncRequest(item) {
23
+ return typeof item.requestId !== 'undefined';
24
+ }
25
+ //# sourceMappingURL=async.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.helpers.js","sourceRoot":"","sources":["../../../src/store/async/async.helpers.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAU,MAAY;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,YAAY,OAAO,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAU,MAAY;IAC1D,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAI,IAAS;IACzC,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { FailActionPayload, FailEntitiesActionPayload, SetActionPayload, SetEntitiesActionPayload, SetEntityActionPayload, UpdateEntitiesActionPayload, UpdateEntitiesActionPayloadWithId, UpdateEntityActionPayload, UpdateEntityActionPayloadWithId } from '../types';
2
+ export type RequestId = string;
3
+ /**
4
+ * Interface representing an asynchronous request
5
+ */
6
+ export interface AsyncRequest {
7
+ /** ID of the request */
8
+ requestId: RequestId;
9
+ }
10
+ /**
11
+ * Represents a store item that can be manipulated via asynchronous calls
12
+ */
13
+ export interface AsyncStoreItem {
14
+ /**
15
+ * IDs of the active asynchronous requests for this item.
16
+ */
17
+ requestIds: RequestId[];
18
+ /**
19
+ * Has a recent call failed.
20
+ * This is reset back to false the next time a new async process is started and there are no active requests.
21
+ */
22
+ isFailure?: boolean;
23
+ /**
24
+ * Is an asynchronous process ongoing on that item
25
+ */
26
+ isPending?: boolean;
27
+ }
28
+ /**
29
+ * Payload for actions relying on asynchronous requests
30
+ */
31
+ export interface FromApiActionPayload<T> extends Partial<AsyncRequest> {
32
+ /** Promise call from API */
33
+ call: Promise<T>;
34
+ }
35
+ /**
36
+ * Unwraps the type of a FromApiActionPayload
37
+ */
38
+ export type ExtractFromApiActionPayloadType<T extends FromApiActionPayload<any>> = T['call'] extends Promise<infer U> ? U : never;
39
+ /**
40
+ * Payload for actions relying on asynchronous requests
41
+ */
42
+ export interface FromApiActionPayloadWithEntityId<T> extends FromApiActionPayload<T> {
43
+ /** ID of the entity affected by the call */
44
+ id?: string;
45
+ }
46
+ /** Add an optional request ID to the given object */
47
+ export type WithRequestId<T> = T & Partial<AsyncRequest>;
48
+ /** Payload to set entities actions from async */
49
+ export interface SetAsyncStoreItemActionPayload<T> extends SetActionPayload<T>, Partial<AsyncRequest> {
50
+ }
51
+ /** Payload to update entities actions from async */
52
+ export interface UpdateAsyncStoreItemEntitiesActionPayload<T extends object, K extends keyof T> extends UpdateEntitiesActionPayload<T, K>, Partial<AsyncRequest> {
53
+ }
54
+ /** Payload to update entities actions from async with a field ID */
55
+ export interface UpdateAsyncStoreItemEntitiesActionPayloadWithId<T extends {
56
+ id: string | number;
57
+ }> extends UpdateEntitiesActionPayloadWithId<T>, Partial<AsyncRequest> {
58
+ }
59
+ /** Payload to update entity actions from async */
60
+ export interface UpdateAsyncStoreItemEntityActionPayload<T extends object, K extends keyof T> extends UpdateEntityActionPayload<T, K>, Partial<AsyncRequest> {
61
+ }
62
+ /** Payload to update entity actions from async with a field ID */
63
+ export interface UpdateAsyncStoreItemEntityActionPayloadWithId<T extends {
64
+ id: string | number;
65
+ }> extends UpdateEntityActionPayloadWithId<T>, Partial<AsyncRequest> {
66
+ }
67
+ /** Payload to set/upsert entities actions from async */
68
+ export interface SetAsyncStoreItemEntitiesActionPayload<T extends object> extends SetEntitiesActionPayload<T>, Partial<AsyncRequest> {
69
+ }
70
+ /** Payload to set/upsert entity actions from async */
71
+ export interface SetAsyncStoreItemEntityActionPayload<T extends object> extends SetEntityActionPayload<T>, Partial<AsyncRequest> {
72
+ }
73
+ /** Payload to fail entity actions from async */
74
+ export interface FailAsyncStoreItemEntityActionPayload<T extends object> extends FailActionPayload<T>, Partial<AsyncRequest> {
75
+ }
76
+ /** Payload to fail entities actions from async */
77
+ export interface FailAsyncStoreItemEntitiesActionPayload<T extends object> extends FailEntitiesActionPayload<T>, Partial<AsyncRequest> {
78
+ }
79
+ /** Status for all the elements inside a cart */
80
+ export type EntityStatus<T, U extends keyof T = never> = {
81
+ [P in keyof Omit<T, 'id' | U>]?: AsyncStoreItem;
82
+ };
83
+ /**
84
+ * Extends an Entity model with a status property that holds async information for each of its sub-resources
85
+ */
86
+ export type EntityWithStatus<T> = T & {
87
+ status: EntityStatus<T>;
88
+ };
89
+ /** Modifies the given type that extends AsyncStoreItem to remove those properties */
90
+ export type EntityWithoutAsyncStoreItem<T extends AsyncStoreItem> = Omit<T, keyof AsyncStoreItem>;
91
+ //# sourceMappingURL=async.interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.interfaces.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,iCAAiC,EACjC,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,YAAY,CAAC;IACpE,4BAA4B;IAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,+BAA+B,CAAC,CAAC,SAAS,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAElI;;GAEG;AACH,MAAM,WAAW,gCAAgC,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAClF,4CAA4C;IAC5C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qDAAqD;AACrD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEzD,iDAAiD;AACjD,MAAM,WAAW,8BAA8B,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAExG,oDAAoD;AACpD,MAAM,WAAW,yCAAyC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,CAAE,SAAQ,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAEnK,oEAAoE;AACpE,MAAM,WAAW,+CAA+C,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAE,SAAQ,iCAAiC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAE1K,kDAAkD;AAClD,MAAM,WAAW,uCAAuC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,CAAE,SAAQ,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAE/J,kEAAkE;AAClE,MAAM,WAAW,6CAA6C,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAE,SAAQ,+BAA+B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAEtK,wDAAwD;AACxD,MAAM,WAAW,sCAAsC,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAEvI,sDAAsD;AACtD,MAAM,WAAW,oCAAoC,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAEnI,gDAAgD;AAChD,MAAM,WAAW,qCAAqC,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAE/H,kDAAkD;AAClD,MAAM,WAAW,uCAAuC,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,yBAAyB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;CAAG;AAEzI,gDAAgD;AAChD,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,KAAK,IAAI;KACtD,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc;CAChD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAElE,qFAAqF;AACrF,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,cAAc,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,cAAc,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=async.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.interfaces.js","sourceRoot":"","sources":["../../../src/store/async/async.interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { Action } from '@ngrx/store';
2
+ import { Observable, OperatorFunction } from 'rxjs';
3
+ import { AsyncRequest, ExtractFromApiActionPayloadType, FromApiActionPayload } from './async.interfaces';
4
+ /**
5
+ * Custom operator to use instead of SwitchMap with effects based on FromApi actions.
6
+ * It makes sure to emit an action when the inner subscription is unsubscribed in order to keep the store up-to-date with pending information.
7
+ * @param successHandler function that returns the action to emit in case the FromApi call is a success
8
+ * @param errorHandler function that returns the action to emit in case the FromApi call fails
9
+ * @param cancelRequestActionFactory function that returns the action to emit in case the FromApi action is 'cancelled' because a new action was received by the switchMap
10
+ */
11
+ export declare function fromApiEffectSwitchMap<T extends FromApiActionPayload<any>, S extends ExtractFromApiActionPayloadType<T>, U extends Action, V extends Action, W extends Action>(successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>, errorHandler?: (error: any, action: T) => Observable<V>, cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W): OperatorFunction<T, U | V | W>;
12
+ /**
13
+ * Same as {@link fromApiEffectSwitchMap}, instead one inner subscription is kept by id.
14
+ * @param successHandler
15
+ * @param errorHandler
16
+ * @param cancelRequestActionFactory
17
+ * @param cleanUpTimer
18
+ */
19
+ export declare function fromApiEffectSwitchMapById<T extends FromApiActionPayload<any> & {
20
+ id: string;
21
+ }, S extends ExtractFromApiActionPayloadType<T>, U extends Action, V extends Action, W extends Action>(successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>, errorHandler?: (error: any, action: T) => Observable<V>, cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W, cleanUpTimer?: number): OperatorFunction<T, U | V | W>;
22
+ //# sourceMappingURL=async.operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.operators.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.operators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACP,MAAM,aAAa,CAAC;AACrB,OAAO,EAOL,UAAU,EAEV,gBAAgB,EAEjB,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAQ5B;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC1K,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvD,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAmCtG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,oBAAoB,CAAC,GAAG,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC7F,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAC5C,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvD,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAClE,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAwChC"}
@@ -0,0 +1,75 @@
1
+ import { BehaviorSubject, EMPTY, from, identity, isObservable, merge, of, } from 'rxjs';
2
+ import { catchError, delay, filter, finalize, pairwise, startWith, switchMap, tap, } from 'rxjs/operators';
3
+ import { isIdentifiedCallAction, } from './async.helpers';
4
+ /**
5
+ * Determine if the given parameter is a Promise
6
+ * @param object
7
+ */
8
+ const isPromise = (object) => object && typeof object === 'object' && typeof object.then !== 'undefined';
9
+ /**
10
+ * Custom operator to use instead of SwitchMap with effects based on FromApi actions.
11
+ * It makes sure to emit an action when the inner subscription is unsubscribed in order to keep the store up-to-date with pending information.
12
+ * @param successHandler function that returns the action to emit in case the FromApi call is a success
13
+ * @param errorHandler function that returns the action to emit in case the FromApi call fails
14
+ * @param cancelRequestActionFactory function that returns the action to emit in case the FromApi action is 'cancelled' because a new action was received by the switchMap
15
+ */
16
+ export function fromApiEffectSwitchMap(successHandler, errorHandler, cancelRequestActionFactory) {
17
+ const pendingRequestIdsContext = {};
18
+ return (source$) => source$.pipe(tap((action) => {
19
+ if (isIdentifiedCallAction(action)) {
20
+ pendingRequestIdsContext[action.requestId] = true;
21
+ }
22
+ }), startWith(undefined), pairwise(), switchMap(([previousAction, action]) => {
23
+ if (!action) {
24
+ return EMPTY;
25
+ }
26
+ const isPreviousActionStillRunning = isIdentifiedCallAction(previousAction) && pendingRequestIdsContext[previousAction.requestId];
27
+ const cleanStack = () => {
28
+ if (isIdentifiedCallAction(action)) {
29
+ delete pendingRequestIdsContext[action.requestId];
30
+ }
31
+ };
32
+ return from(action.call).pipe(tap(cleanStack), switchMap((result) => {
33
+ const success = successHandler(result, action);
34
+ return isObservable(success) ? success : (isPromise(success) ? success : of(success));
35
+ }), catchError((error) => {
36
+ cleanStack();
37
+ return errorHandler?.(error, action) || EMPTY;
38
+ }), isPreviousActionStillRunning && cancelRequestActionFactory ? startWith(cancelRequestActionFactory({ requestId: previousAction.requestId }, action)) : identity);
39
+ }));
40
+ }
41
+ /**
42
+ * Same as {@link fromApiEffectSwitchMap}, instead one inner subscription is kept by id.
43
+ * @param successHandler
44
+ * @param errorHandler
45
+ * @param cancelRequestActionFactory
46
+ * @param cleanUpTimer
47
+ */
48
+ export function fromApiEffectSwitchMapById(successHandler, errorHandler, cancelRequestActionFactory, cleanUpTimer) {
49
+ const innerSourcesById = {};
50
+ return (source$) => {
51
+ return source$.pipe(filter((action) => {
52
+ if (!isIdentifiedCallAction(action) || !action.id) {
53
+ return false;
54
+ }
55
+ if (isIdentifiedCallAction(action) && innerSourcesById[action.id]) {
56
+ innerSourcesById[action.id][0].next(action);
57
+ return false;
58
+ }
59
+ return true;
60
+ }), switchMap((action) => {
61
+ const newIdSubject = new BehaviorSubject(action);
62
+ const newId$ = newIdSubject.pipe(fromApiEffectSwitchMap(successHandler, errorHandler, cancelRequestActionFactory));
63
+ innerSourcesById[action.id] = [newIdSubject, newId$];
64
+ if (cleanUpTimer !== undefined) {
65
+ newIdSubject.pipe(switchMap((myAction) => from(myAction.call).pipe(delay(cleanUpTimer), finalize(() => {
66
+ delete innerSourcesById[myAction.id];
67
+ newIdSubject.complete();
68
+ })))).subscribe();
69
+ }
70
+ const streams = Object.values(innerSourcesById).map(([_, obs]) => obs);
71
+ return merge(...streams);
72
+ }));
73
+ };
74
+ }
75
+ //# sourceMappingURL=async.operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.operators.js","sourceRoot":"","sources":["../../../src/store/async/async.operators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { AsyncRequest } from './async.interfaces';
2
+ /**
3
+ * Returns a creator that makes sure that requestId is defined in the action's properties by generating one
4
+ * if needed.
5
+ */
6
+ export declare const asyncProps: <P extends object>() => (props: P) => P & AsyncRequest;
7
+ //# sourceMappingURL=async.props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.props.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.props.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,OAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,YAEjE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { v4, } from 'uuid';
2
+ import { isAsyncRequest, } from './async.helpers';
3
+ /**
4
+ * Returns a creator that makes sure that requestId is defined in the action's properties by generating one
5
+ * if needed.
6
+ */
7
+ export const asyncProps = () => {
8
+ return (props) => isAsyncRequest(props) ? props : { ...props, requestId: v4() };
9
+ };
10
+ //# sourceMappingURL=async.props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.props.js","sourceRoot":"","sources":["../../../src/store/async/async.props.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,GACH,MAAM,MAAM,CAAC;AACd,OAAO,EACL,cAAc,GACf,MAAM,iBAAiB,CAAC;AAKzB;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAqD,EAAE;IAC/E,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;AACrF,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { EntityState } from '@ngrx/entity';
2
+ import { AsyncStoreItem, EntityStatus } from './async.interfaces';
3
+ /**
4
+ * Serializer for asynchronous store.
5
+ * @param state State of an asynchronous store to serialize
6
+ * @returns a plain json object to pass to json.stringify
7
+ */
8
+ export declare function asyncSerializer<T extends AsyncStoreItem>(state: T): T;
9
+ /**
10
+ * Serializer for asynchronous entity store.
11
+ * @param state State of an asynchronous entity store to serialize
12
+ * @returns a plain json object to pass to json.stringify
13
+ */
14
+ export declare function asyncEntitySerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem>>(state: T): T & {
15
+ entities: import("@ngrx/entity").Dictionary<AsyncStoreItem>;
16
+ };
17
+ /**
18
+ * Serializer for asynchronous entity store with status.
19
+ * @param state State of an asynchronous entity store with status to serialize
20
+ * @returns a plain json object to pass to json.stringify
21
+ */
22
+ export declare function asyncEntityWithStatusSerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem & {
23
+ status: EntityStatus<T['entities']['status']>;
24
+ }>>(state: T): T & {
25
+ entities: import("@ngrx/entity").Dictionary<AsyncStoreItem & {
26
+ status: EntityStatus<T["entities"]["status"]>;
27
+ }>;
28
+ };
29
+ //# sourceMappingURL=async.serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.serializer.d.ts","sourceRoot":"","sources":["../../../src/store/async/async.serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,cAAc,EACd,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,KAEjE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;;EAOrG;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,cAAc,GAAG,WAAW,CAAC,cAAc,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;CAAE,CAAC,EAAE,KAAK,EAAE,CAAC;;gBAAlD,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;;EAOtJ"}
@@ -0,0 +1,34 @@
1
+ import { asyncStoreItemAdapter, } from './async.adapter';
2
+ /**
3
+ * Serializer for asynchronous store.
4
+ * @param state State of an asynchronous store to serialize
5
+ * @returns a plain json object to pass to json.stringify
6
+ */
7
+ export function asyncSerializer(state) {
8
+ return asyncStoreItemAdapter.clearAsyncStoreItem(state);
9
+ }
10
+ /**
11
+ * Serializer for asynchronous entity store.
12
+ * @param state State of an asynchronous entity store to serialize
13
+ * @returns a plain json object to pass to json.stringify
14
+ */
15
+ export function asyncEntitySerializer(state) {
16
+ const entities = state.ids.reduce((entitiesAcc, entityId) => {
17
+ entitiesAcc[entityId] = asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]);
18
+ return entitiesAcc;
19
+ }, {});
20
+ return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };
21
+ }
22
+ /**
23
+ * Serializer for asynchronous entity store with status.
24
+ * @param state State of an asynchronous entity store with status to serialize
25
+ * @returns a plain json object to pass to json.stringify
26
+ */
27
+ export function asyncEntityWithStatusSerializer(state) {
28
+ const entities = state.ids.reduce((entitiesAcc, entityId) => {
29
+ entitiesAcc[entityId] = { ...asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]), status: {} };
30
+ return entitiesAcc;
31
+ }, {});
32
+ return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };
33
+ }
34
+ //# sourceMappingURL=async.serializer.js.map