@ngrx-traits/common 12.1.2 → 13.0.0-beta.2

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 (227) hide show
  1. package/crud-entities/crud-entities.model.d.ts +1 -3
  2. package/entities-pagination/entities-pagination.model.d.ts +8 -11
  3. package/entities-pagination/entities-pagination.model.internal.d.ts +9 -1
  4. package/esm2020/async-action/async-action.model.mjs +2 -0
  5. package/esm2020/async-action/async-action.trait.mjs +110 -0
  6. package/esm2020/async-action/index.mjs +3 -0
  7. package/esm2020/crud-entities/crud-entities.model.mjs +8 -0
  8. package/esm2020/crud-entities/crud-entities.trait.actions.mjs +20 -0
  9. package/esm2020/crud-entities/crud-entities.trait.mjs +57 -0
  10. package/esm2020/crud-entities/crud-entities.trait.mutators.mjs +121 -0
  11. package/esm2020/crud-entities/crud-entities.trait.reducer.mjs +17 -0
  12. package/esm2020/crud-entities/crud-entities.trait.selectors.mjs +54 -0
  13. package/esm2020/crud-entities/index.mjs +3 -0
  14. package/esm2020/entities-pagination/entities-pagination.model.internal.mjs +2 -0
  15. package/esm2020/entities-pagination/entities-pagination.model.mjs +2 -0
  16. package/esm2020/entities-pagination/entities-pagination.trait.actions.mjs +20 -0
  17. package/esm2020/entities-pagination/entities-pagination.trait.effects.mjs +62 -0
  18. package/esm2020/entities-pagination/entities-pagination.trait.mjs +94 -0
  19. package/esm2020/entities-pagination/entities-pagination.trait.mutators.mjs +55 -0
  20. package/esm2020/entities-pagination/entities-pagination.trait.reducer.mjs +87 -0
  21. package/esm2020/entities-pagination/entities-pagination.trait.selectors.mjs +84 -0
  22. package/esm2020/entities-pagination/index.mjs +3 -0
  23. package/esm2020/filter-entities/filter-entities.model.internal.mjs +2 -0
  24. package/esm2020/filter-entities/filter-entities.model.mjs +2 -0
  25. package/esm2020/filter-entities/filter-entities.trait.actions.mjs +16 -0
  26. package/esm2020/filter-entities/filter-entities.trait.effect.mjs +59 -0
  27. package/esm2020/filter-entities/filter-entities.trait.mjs +73 -0
  28. package/esm2020/filter-entities/filter-entities.trait.mutators.mjs +10 -0
  29. package/esm2020/filter-entities/filter-entities.trait.reducer.mjs +11 -0
  30. package/esm2020/filter-entities/filter-entities.trait.selectors.mjs +9 -0
  31. package/esm2020/filter-entities/index.mjs +3 -0
  32. package/esm2020/index.mjs +12 -0
  33. package/esm2020/load-entities/index.mjs +3 -0
  34. package/esm2020/load-entities/load-entities.model.mjs +2 -0
  35. package/esm2020/load-entities/load-entities.mutators.mjs +7 -0
  36. package/esm2020/load-entities/load-entities.trait.actions.mjs +10 -0
  37. package/esm2020/load-entities/load-entities.trait.mjs +62 -0
  38. package/esm2020/load-entities/load-entities.trait.reducer.mjs +27 -0
  39. package/esm2020/load-entities/load-entities.trait.selectors.mjs +38 -0
  40. package/esm2020/load-entities/load-entities.utils.mjs +10 -0
  41. package/esm2020/load-entity/index.mjs +3 -0
  42. package/esm2020/load-entity/load-entity.model.mjs +2 -0
  43. package/esm2020/load-entity/load-entity.traits.mjs +74 -0
  44. package/esm2020/ngrx-traits-common.mjs +5 -0
  45. package/esm2020/public_api.mjs +2 -0
  46. package/esm2020/reset/index.mjs +2 -0
  47. package/esm2020/reset/reset.trait.mjs +39 -0
  48. package/esm2020/select-entities/index.mjs +4 -0
  49. package/esm2020/select-entities/select-entities.model.mjs +2 -0
  50. package/esm2020/select-entities/select-entities.trait.actions.mjs +11 -0
  51. package/esm2020/select-entities/select-entities.trait.mjs +54 -0
  52. package/esm2020/select-entities/select-entities.trait.mutators.mjs +27 -0
  53. package/esm2020/select-entities/select-entities.trait.reducer.mjs +42 -0
  54. package/esm2020/select-entities/select-entities.trait.selectors.mjs +28 -0
  55. package/esm2020/select-entities/select-entities.utils.mjs +30 -0
  56. package/esm2020/select-entity/index.mjs +3 -0
  57. package/esm2020/select-entity/select-entity.model.mjs +2 -0
  58. package/esm2020/select-entity/select-entity.trait.actions.mjs +9 -0
  59. package/esm2020/select-entity/select-entity.trait.mjs +51 -0
  60. package/esm2020/select-entity/select-entity.trait.mutators.mjs +26 -0
  61. package/esm2020/select-entity/select-entity.trait.reducer.mjs +35 -0
  62. package/esm2020/select-entity/select-entity.trait.selectors.mjs +13 -0
  63. package/esm2020/set-entity/index.mjs +3 -0
  64. package/esm2020/set-entity/set-entity.model.mjs +2 -0
  65. package/esm2020/set-entity/set-entity.trait.mjs +58 -0
  66. package/esm2020/sort-entities/index.mjs +4 -0
  67. package/esm2020/sort-entities/sort-entities.model.mjs +2 -0
  68. package/esm2020/sort-entities/sort-entities.trait.actions.mjs +8 -0
  69. package/esm2020/sort-entities/sort-entities.trait.effect.mjs +28 -0
  70. package/esm2020/sort-entities/sort-entities.trait.mjs +59 -0
  71. package/esm2020/sort-entities/sort-entities.trait.mutators.mjs +17 -0
  72. package/esm2020/sort-entities/sort-entities.trait.reducer.mjs +28 -0
  73. package/esm2020/sort-entities/sort-entities.trait.selectors.mjs +9 -0
  74. package/esm2020/sort-entities/sort-entities.utils.mjs +63 -0
  75. package/fesm2015/{ngrx-traits-common.js → ngrx-traits-common.mjs} +57 -77
  76. package/fesm2015/ngrx-traits-common.mjs.map +1 -0
  77. package/fesm2020/ngrx-traits-common.mjs +1748 -0
  78. package/fesm2020/ngrx-traits-common.mjs.map +1 -0
  79. package/load-entity/load-entity.traits.d.ts +1 -1
  80. package/package.json +27 -15
  81. package/reset/reset.trait.d.ts +3 -4
  82. package/set-entity/set-entity.trait.d.ts +1 -1
  83. package/bundles/ngrx-traits-common.umd.js +0 -2194
  84. package/bundles/ngrx-traits-common.umd.js.map +0 -1
  85. package/esm2015/async-action/async-action.model.js +0 -2
  86. package/esm2015/async-action/async-action.model.js.map +0 -1
  87. package/esm2015/async-action/async-action.trait.js +0 -101
  88. package/esm2015/async-action/async-action.trait.js.map +0 -1
  89. package/esm2015/async-action/index.js +0 -3
  90. package/esm2015/async-action/index.js.map +0 -1
  91. package/esm2015/crud-entities/crud-entities.model.js +0 -8
  92. package/esm2015/crud-entities/crud-entities.model.js.map +0 -1
  93. package/esm2015/crud-entities/crud-entities.trait.actions.js +0 -20
  94. package/esm2015/crud-entities/crud-entities.trait.actions.js.map +0 -1
  95. package/esm2015/crud-entities/crud-entities.trait.js +0 -57
  96. package/esm2015/crud-entities/crud-entities.trait.js.map +0 -1
  97. package/esm2015/crud-entities/crud-entities.trait.mutators.js +0 -101
  98. package/esm2015/crud-entities/crud-entities.trait.mutators.js.map +0 -1
  99. package/esm2015/crud-entities/crud-entities.trait.reducer.js +0 -15
  100. package/esm2015/crud-entities/crud-entities.trait.reducer.js.map +0 -1
  101. package/esm2015/crud-entities/crud-entities.trait.selectors.js +0 -70
  102. package/esm2015/crud-entities/crud-entities.trait.selectors.js.map +0 -1
  103. package/esm2015/crud-entities/index.js +0 -3
  104. package/esm2015/crud-entities/index.js.map +0 -1
  105. package/esm2015/entities-pagination/entities-pagination.model.internal.js +0 -2
  106. package/esm2015/entities-pagination/entities-pagination.model.internal.js.map +0 -1
  107. package/esm2015/entities-pagination/entities-pagination.model.js +0 -2
  108. package/esm2015/entities-pagination/entities-pagination.model.js.map +0 -1
  109. package/esm2015/entities-pagination/entities-pagination.trait.actions.js +0 -20
  110. package/esm2015/entities-pagination/entities-pagination.trait.actions.js.map +0 -1
  111. package/esm2015/entities-pagination/entities-pagination.trait.effects.js +0 -54
  112. package/esm2015/entities-pagination/entities-pagination.trait.effects.js.map +0 -1
  113. package/esm2015/entities-pagination/entities-pagination.trait.js +0 -94
  114. package/esm2015/entities-pagination/entities-pagination.trait.js.map +0 -1
  115. package/esm2015/entities-pagination/entities-pagination.trait.mutators.js +0 -23
  116. package/esm2015/entities-pagination/entities-pagination.trait.mutators.js.map +0 -1
  117. package/esm2015/entities-pagination/entities-pagination.trait.reducer.js +0 -33
  118. package/esm2015/entities-pagination/entities-pagination.trait.reducer.js.map +0 -1
  119. package/esm2015/entities-pagination/entities-pagination.trait.selectors.js +0 -65
  120. package/esm2015/entities-pagination/entities-pagination.trait.selectors.js.map +0 -1
  121. package/esm2015/entities-pagination/index.js +0 -3
  122. package/esm2015/entities-pagination/index.js.map +0 -1
  123. package/esm2015/filter-entities/filter-entities.model.internal.js +0 -2
  124. package/esm2015/filter-entities/filter-entities.model.internal.js.map +0 -1
  125. package/esm2015/filter-entities/filter-entities.model.js +0 -2
  126. package/esm2015/filter-entities/filter-entities.model.js.map +0 -1
  127. package/esm2015/filter-entities/filter-entities.trait.actions.js +0 -16
  128. package/esm2015/filter-entities/filter-entities.trait.actions.js.map +0 -1
  129. package/esm2015/filter-entities/filter-entities.trait.effect.js +0 -56
  130. package/esm2015/filter-entities/filter-entities.trait.effect.js.map +0 -1
  131. package/esm2015/filter-entities/filter-entities.trait.js +0 -73
  132. package/esm2015/filter-entities/filter-entities.trait.js.map +0 -1
  133. package/esm2015/filter-entities/filter-entities.trait.mutators.js +0 -7
  134. package/esm2015/filter-entities/filter-entities.trait.mutators.js.map +0 -1
  135. package/esm2015/filter-entities/filter-entities.trait.reducer.js +0 -9
  136. package/esm2015/filter-entities/filter-entities.trait.reducer.js.map +0 -1
  137. package/esm2015/filter-entities/filter-entities.trait.selectors.js +0 -9
  138. package/esm2015/filter-entities/filter-entities.trait.selectors.js.map +0 -1
  139. package/esm2015/filter-entities/index.js +0 -3
  140. package/esm2015/filter-entities/index.js.map +0 -1
  141. package/esm2015/index.js +0 -12
  142. package/esm2015/index.js.map +0 -1
  143. package/esm2015/load-entities/index.js +0 -3
  144. package/esm2015/load-entities/index.js.map +0 -1
  145. package/esm2015/load-entities/load-entities.model.js +0 -2
  146. package/esm2015/load-entities/load-entities.model.js.map +0 -1
  147. package/esm2015/load-entities/load-entities.mutators.js +0 -8
  148. package/esm2015/load-entities/load-entities.mutators.js.map +0 -1
  149. package/esm2015/load-entities/load-entities.trait.actions.js +0 -10
  150. package/esm2015/load-entities/load-entities.trait.actions.js.map +0 -1
  151. package/esm2015/load-entities/load-entities.trait.js +0 -62
  152. package/esm2015/load-entities/load-entities.trait.js.map +0 -1
  153. package/esm2015/load-entities/load-entities.trait.reducer.js +0 -12
  154. package/esm2015/load-entities/load-entities.trait.reducer.js.map +0 -1
  155. package/esm2015/load-entities/load-entities.trait.selectors.js +0 -33
  156. package/esm2015/load-entities/load-entities.trait.selectors.js.map +0 -1
  157. package/esm2015/load-entities/load-entities.utils.js +0 -10
  158. package/esm2015/load-entities/load-entities.utils.js.map +0 -1
  159. package/esm2015/load-entity/index.js +0 -3
  160. package/esm2015/load-entity/index.js.map +0 -1
  161. package/esm2015/load-entity/load-entity.model.js +0 -2
  162. package/esm2015/load-entity/load-entity.model.js.map +0 -1
  163. package/esm2015/load-entity/load-entity.traits.js +0 -71
  164. package/esm2015/load-entity/load-entity.traits.js.map +0 -1
  165. package/esm2015/ngrx-traits-common.js +0 -5
  166. package/esm2015/ngrx-traits-common.js.map +0 -1
  167. package/esm2015/public_api.js +0 -2
  168. package/esm2015/public_api.js.map +0 -1
  169. package/esm2015/reset/index.js +0 -2
  170. package/esm2015/reset/index.js.map +0 -1
  171. package/esm2015/reset/reset.trait.js +0 -69
  172. package/esm2015/reset/reset.trait.js.map +0 -1
  173. package/esm2015/select-entities/index.js +0 -4
  174. package/esm2015/select-entities/index.js.map +0 -1
  175. package/esm2015/select-entities/select-entities.model.js +0 -2
  176. package/esm2015/select-entities/select-entities.model.js.map +0 -1
  177. package/esm2015/select-entities/select-entities.trait.actions.js +0 -11
  178. package/esm2015/select-entities/select-entities.trait.actions.js.map +0 -1
  179. package/esm2015/select-entities/select-entities.trait.js +0 -54
  180. package/esm2015/select-entities/select-entities.trait.js.map +0 -1
  181. package/esm2015/select-entities/select-entities.trait.mutators.js +0 -21
  182. package/esm2015/select-entities/select-entities.trait.mutators.js.map +0 -1
  183. package/esm2015/select-entities/select-entities.trait.reducer.js +0 -40
  184. package/esm2015/select-entities/select-entities.trait.reducer.js.map +0 -1
  185. package/esm2015/select-entities/select-entities.trait.selectors.js +0 -28
  186. package/esm2015/select-entities/select-entities.trait.selectors.js.map +0 -1
  187. package/esm2015/select-entities/select-entities.utils.js +0 -25
  188. package/esm2015/select-entities/select-entities.utils.js.map +0 -1
  189. package/esm2015/select-entity/index.js +0 -3
  190. package/esm2015/select-entity/index.js.map +0 -1
  191. package/esm2015/select-entity/select-entity.model.js +0 -2
  192. package/esm2015/select-entity/select-entity.model.js.map +0 -1
  193. package/esm2015/select-entity/select-entity.trait.actions.js +0 -9
  194. package/esm2015/select-entity/select-entity.trait.actions.js.map +0 -1
  195. package/esm2015/select-entity/select-entity.trait.js +0 -51
  196. package/esm2015/select-entity/select-entity.trait.js.map +0 -1
  197. package/esm2015/select-entity/select-entity.trait.mutators.js +0 -17
  198. package/esm2015/select-entity/select-entity.trait.mutators.js.map +0 -1
  199. package/esm2015/select-entity/select-entity.trait.reducer.js +0 -26
  200. package/esm2015/select-entity/select-entity.trait.reducer.js.map +0 -1
  201. package/esm2015/select-entity/select-entity.trait.selectors.js +0 -13
  202. package/esm2015/select-entity/select-entity.trait.selectors.js.map +0 -1
  203. package/esm2015/set-entity/index.js +0 -3
  204. package/esm2015/set-entity/index.js.map +0 -1
  205. package/esm2015/set-entity/set-entity.model.js +0 -2
  206. package/esm2015/set-entity/set-entity.model.js.map +0 -1
  207. package/esm2015/set-entity/set-entity.trait.js +0 -55
  208. package/esm2015/set-entity/set-entity.trait.js.map +0 -1
  209. package/esm2015/sort-entities/index.js +0 -4
  210. package/esm2015/sort-entities/index.js.map +0 -1
  211. package/esm2015/sort-entities/sort-entities.model.js +0 -2
  212. package/esm2015/sort-entities/sort-entities.model.js.map +0 -1
  213. package/esm2015/sort-entities/sort-entities.trait.actions.js +0 -8
  214. package/esm2015/sort-entities/sort-entities.trait.actions.js.map +0 -1
  215. package/esm2015/sort-entities/sort-entities.trait.effect.js +0 -28
  216. package/esm2015/sort-entities/sort-entities.trait.effect.js.map +0 -1
  217. package/esm2015/sort-entities/sort-entities.trait.js +0 -59
  218. package/esm2015/sort-entities/sort-entities.trait.js.map +0 -1
  219. package/esm2015/sort-entities/sort-entities.trait.mutators.js +0 -13
  220. package/esm2015/sort-entities/sort-entities.trait.mutators.js.map +0 -1
  221. package/esm2015/sort-entities/sort-entities.trait.reducer.js +0 -22
  222. package/esm2015/sort-entities/sort-entities.trait.reducer.js.map +0 -1
  223. package/esm2015/sort-entities/sort-entities.trait.selectors.js +0 -10
  224. package/esm2015/sort-entities/sort-entities.trait.selectors.js.map +0 -1
  225. package/esm2015/sort-entities/sort-entities.utils.js +0 -63
  226. package/esm2015/sort-entities/sort-entities.utils.js.map +0 -1
  227. package/fesm2015/ngrx-traits-common.js.map +0 -1
@@ -1,101 +0,0 @@
1
- import { createAction, createReducer, on } from '@ngrx/store';
2
- import { camelCaseToSentence, createTraitFactory } from '@ngrx-traits/core';
3
- /**
4
- * Generates the typical ngrx code need to make a async action with
5
- * a request, success and failure actions, plus a status property to track its progress
6
- * and selectors to query the status. This trait can be added more thant once as long
7
- * as the name prop is different.
8
- *
9
- * @param options - Config object for the trait factory
10
- * @param options.name - Name of the main request action, should be in camel case
11
- * @param options.actionProps - Optional param for the main request action, use the props()
12
- * function for its value, if not present action will have no params,
13
- * @param options.actionSuccessProps - Optional param for the request success action,
14
- * use the props() function for its value, if not present action success will have no params
15
- * @param options.actionFailProps - Optional param for the request fail action,
16
- * use the props() function for its value, if not present action fail will have no params
17
- * @returns the trait factory
18
- *
19
- * @example
20
- * // The following trait config
21
- * const traits = createEntityFeatureFactory(
22
- * {entityName: 'Todo'},
23
- * addAsyncActionTrait({
24
- * name: 'createClient',
25
- * actionProps: props<{ name: string }>(),
26
- * actionSuccessProps: props<{ id: string }>(),
27
- * }),
28
- * )({
29
- * actionsGroupKey: 'Client',
30
- * featureSelector: createFeatureSelector<AsyncActionState<'createClient'>>(
31
- * 'client',
32
- * ),
33
- * });
34
- * // adds following props to the state:
35
- * // createClientStatus?: 'loading' | 'success' | 'fail';
36
- *
37
- * // generated actions
38
- * traits.actions.createClient({name:'Pedro'})
39
- * traits.actions.createClientSuccess({id:'123'})
40
- * traits.actions.createClientFail();
41
- * //generated selectors
42
- * traits.selectors.isLoadingCreateClient
43
- * traits.selectors.isSuccessCreateClient
44
- * traits.selectors.isFailCreateClient
45
- */
46
- export function addAsyncActionTrait({ name, actionProps, actionSuccessProps, actionFailProps, }) {
47
- const nameAsSentence = camelCaseToSentence(name);
48
- let internalActions;
49
- return createTraitFactory({
50
- key: name + '-call',
51
- config: {
52
- name,
53
- actionProps,
54
- actionSuccessProps,
55
- actionFailProps,
56
- },
57
- actions: ({ actionsGroupKey, }) => {
58
- internalActions = {
59
- request: (actionProps
60
- ? createAction(`${actionsGroupKey} ${nameAsSentence}`, actionProps)
61
- : createAction(`${actionsGroupKey} ${nameAsSentence}`)),
62
- requestSuccess: (actionSuccessProps
63
- ? createAction(`${actionsGroupKey} ${nameAsSentence} Success`, actionSuccessProps)
64
- : createAction(`${actionsGroupKey} ${nameAsSentence} Success`)),
65
- requestFail: (actionFailProps
66
- ? createAction(`${actionsGroupKey} ${nameAsSentence} Failure`, actionFailProps)
67
- : createAction(`${actionsGroupKey} ${nameAsSentence} Failure`)),
68
- };
69
- if (name) {
70
- return {
71
- [`${name}`]: internalActions.request,
72
- [`${name}Success`]: internalActions.requestSuccess,
73
- [`${name}Fail`]: internalActions.requestFail,
74
- };
75
- }
76
- return internalActions;
77
- },
78
- selectors: () => {
79
- function isLoadingEntity(state) {
80
- return state[`${name}Status`] === 'loading';
81
- }
82
- function isSuccessEntity(state) {
83
- return state[`${name}Status`] === 'success';
84
- }
85
- function isFailEntity(state) {
86
- return state[`${name}Status`] === 'fail';
87
- }
88
- const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);
89
- return {
90
- [`isLoading${capitalizedName}`]: isLoadingEntity,
91
- [`isSuccess${capitalizedName}`]: isSuccessEntity,
92
- [`isFail${capitalizedName}`]: isFailEntity,
93
- };
94
- },
95
- initialState: ({ previousInitialState }) => previousInitialState,
96
- reducer: ({ initialState }) => {
97
- return createReducer(initialState, on(internalActions.request, (state) => (Object.assign(Object.assign({}, state), { [`${name}Status`]: 'loading' }))), on(internalActions.requestFail, (state) => (Object.assign(Object.assign({}, state), { [`${name}Status`]: 'fail' }))), on(internalActions.requestSuccess, (state) => (Object.assign(Object.assign({}, state), { [`${name}Status`]: 'success' }))));
98
- },
99
- });
100
- }
101
- //# sourceMappingURL=async-action.trait.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-action.trait.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/async-action/async-action.trait.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAction, createReducer, on } from '@ngrx/store';\nimport { ActionCreatorProps } from '@ngrx/store/src/models';\nimport { camelCaseToSentence, createTraitFactory } from '@ngrx-traits/core';\nimport {\n ActionCreatorWithOptionalProps,\n AsyncActionActions,\n AsyncActionSelectors,\n AsyncActionState,\n} from './async-action.model';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n} from '@ngrx-traits/core';\n\n/**\n * Generates the typical ngrx code need to make a async action with\n * a request, success and failure actions, plus a status property to track its progress\n * and selectors to query the status. This trait can be added more thant once as long\n * as the name prop is different.\n *\n * @param options - Config object for the trait factory\n * @param options.name - Name of the main request action, should be in camel case\n * @param options.actionProps - Optional param for the main request action, use the props()\n * function for its value, if not present action will have no params,\n * @param options.actionSuccessProps - Optional param for the request success action,\n * use the props() function for its value, if not present action success will have no params\n * @param options.actionFailProps - Optional param for the request fail action,\n * use the props() function for its value, if not present action fail will have no params\n * @returns the trait factory\n *\n * @example\n * // The following trait config\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addAsyncActionTrait({\n * name: 'createClient',\n * actionProps: props<{ name: string }>(),\n * actionSuccessProps: props<{ id: string }>(),\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<AsyncActionState<'createClient'>>(\n * 'client',\n * ),\n * });\n * // adds following props to the state:\n * // createClientStatus?: 'loading' | 'success' | 'fail';\n *\n * // generated actions\n * traits.actions.createClient({name:'Pedro'})\n * traits.actions.createClientSuccess({id:'123'})\n * traits.actions.createClientFail();\n * //generated selectors\n * traits.selectors.isLoadingCreateClient\n * traits.selectors.isSuccessCreateClient\n * traits.selectors.isFailCreateClient\n */\nexport function addAsyncActionTrait<\n J extends string,\n Request extends object | undefined = undefined,\n Response extends object | undefined = undefined,\n Failure extends object | undefined = undefined\n>({\n name,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n}: {\n name: J;\n actionProps?: ActionCreatorProps<Request>;\n actionSuccessProps?: ActionCreatorProps<Response>;\n actionFailProps?: ActionCreatorProps<Failure>;\n}) {\n const nameAsSentence = camelCaseToSentence(name);\n\n let internalActions: AsyncActionActions<\n Request,\n Response,\n Failure,\n 'request'\n >;\n return createTraitFactory({\n key: name + '-call',\n config: {\n name,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n },\n actions: ({\n actionsGroupKey,\n }: TraitActionsFactoryConfig): AsyncActionActions<\n Request,\n Response,\n Failure,\n J\n > => {\n internalActions = {\n request: (actionProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence}`,\n actionProps as any\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence}`\n )) as ActionCreatorWithOptionalProps<Request>,\n requestSuccess: (actionSuccessProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence} Success`,\n actionSuccessProps as any\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence} Success`\n )) as ActionCreatorWithOptionalProps<Response>,\n requestFail: (actionFailProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence} Failure`,\n actionFailProps as any\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence} Failure`\n )) as ActionCreatorWithOptionalProps<Failure>,\n };\n if (name) {\n return {\n [`${name}`]: internalActions.request,\n [`${name}Success`]: internalActions.requestSuccess,\n [`${name}Fail`]: internalActions.requestFail,\n } as AsyncActionActions<Request, Response, Failure, J>;\n }\n return internalActions;\n },\n selectors: () => {\n function isLoadingEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'loading';\n }\n function isSuccessEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'success';\n }\n function isFailEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'fail';\n }\n const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);\n return {\n [`isLoading${capitalizedName}`]: isLoadingEntity,\n [`isSuccess${capitalizedName}`]: isSuccessEntity,\n [`isFail${capitalizedName}`]: isFailEntity,\n } as AsyncActionSelectors<J, AsyncActionState<J>>;\n },\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n previousInitialState as AsyncActionState<J>,\n reducer: ({ initialState }) => {\n return createReducer(\n initialState,\n on(\n internalActions.request,\n (state) =>\n ({\n ...state,\n [`${name}Status`]: 'loading',\n } as AsyncActionState<J>)\n ),\n on(\n internalActions.requestFail,\n (state) =>\n ({\n ...state,\n [`${name}Status`]: 'fail',\n } as AsyncActionState<J>)\n ),\n on(\n internalActions.requestSuccess,\n (state) =>\n ({\n ...state,\n [`${name}Status`]: 'success',\n } as AsyncActionState<J>)\n )\n );\n },\n });\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from './async-action.model';
2
- export * from './async-action.trait';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/async-action/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC","sourcesContent":["export * from './async-action.model';\nexport * from './async-action.trait';\n"]}
@@ -1,8 +0,0 @@
1
- export var ChangeType;
2
- (function (ChangeType) {
3
- ChangeType["CREATED"] = "c";
4
- ChangeType["UPDATED"] = "u";
5
- ChangeType["DELETED"] = "d";
6
- })(ChangeType || (ChangeType = {}));
7
- export const crudEntitiesTraitKey = 'crud';
8
- //# sourceMappingURL=crud-entities.model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.model.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.model.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,2BAAa,CAAA;AACf,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAsID,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC","sourcesContent":["import { Predicate, Update } from '@ngrx/entity/src/models';\nimport { LoadEntitiesState } from '../load-entities/load-entities.model';\nimport { ActionCreator } from '@ngrx/store';\nimport { TypedAction } from '@ngrx/store/src/models';\n\nexport enum ChangeType {\n CREATED = 'c',\n UPDATED = 'u',\n DELETED = 'd',\n}\nexport interface Change<T> {\n id: string | number;\n changeType: ChangeType;\n entityChanges?: Partial<T>;\n}\nexport interface EntityChange<T> {\n entity: T;\n changeType: ChangeType;\n}\nexport interface CrudEntitiesState<T> {\n changes: Change<T>[];\n}\n\nexport type CrudEntitiesActions<T> = {\n addEntities: ActionCreator<\n string,\n (...entities: T[]) => { entities: T[] } & TypedAction<string>\n >;\n removeEntities: ActionCreator<\n string,\n (\n ...keys: string[] | number[]\n ) => { keys: string[] | number[] } & TypedAction<string>\n >;\n updateEntities: ActionCreator<\n string,\n (...updates: Update<T>[]) => { updates: Update<T>[] } & TypedAction<string>\n >;\n upsertEntities: ActionCreator<\n string,\n (...entities: T[]) => { entities: T[] } & TypedAction<string>\n >;\n\n removeAllEntities: ActionCreator<\n string,\n (\n predicate?: Predicate<T>\n ) => { predicate?: Predicate<T> } & TypedAction<string>\n >;\n clearEntitiesChanges: ActionCreator<string, () => TypedAction<string>>;\n};\n\nexport type CrudEntitiesSelectors<Entity> = {\n // /**\n // * Return all changes made to the list\n // * @param state\n // */\n // selectChanges: (state: EntityAndCrudState<T>) => Change<T>[];\n /**\n * Return all changes made to the list plus entities, and can be filtered\n * by change type\n * @param state\n * @param props\n */\n selectEntitiesChangesList: (\n state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n props: { type: ChangeType }\n ) => EntityChange<Entity>[];\n // /**\n // * filters redundant changes ideal for a batch update\n // * if you add and remove the same and items this changes are remove from the list\n // * if you add and then update one or more times, the updates are discarded\n // * if you update one or more times and then remove, the updates are discarded\n // * @param state\n // */\n // selectFilteredChanges: (state: EntityAndCrudState<T>) => Change<T>[];\n /**\n * Returns the entities plus the kind of change,\n * filters redundant changes ideal for a batch update\n * if you add and remove the same and items this changes are remove from the list\n * if you add and then update one or more times, the updates are discarded\n * if you update one or more times and then remove, the updates are discarded\n * @param state\n */\n selectFilteredEntitiesChangesList: (\n state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n ) => EntityChange<Entity>[];\n};\n\nexport type CrudEntitiesMutators<Entity> = {\n addEntities<S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>>(\n entities: Entity[],\n state: S\n ): S;\n\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n keys: string[],\n state: S\n ): S;\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n keys: number[],\n state: S\n ): S;\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n predicate: Predicate<Entity>,\n state: S\n ): S;\n\n removeAllEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n state: S\n ): S;\n\n clearEntitiesChanges<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n state: S\n ): S;\n\n updateEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n updates: Update<Entity>[],\n state: S\n ): S;\n upsertEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(\n entities: Entity[],\n state: S\n ): S;\n};\n\nexport interface CrudEntitiesConfig {\n storeChanges?: boolean;\n}\nexport const crudEntitiesTraitKey = 'crud';\n\nexport interface CrudEntitiesKeyedConfig {\n crud?: CrudEntitiesConfig;\n}\n"]}
@@ -1,20 +0,0 @@
1
- import { createAction } from '@ngrx/store';
2
- export function createCrudTraitActions(actionsGroupKey, entitiesName) {
3
- return {
4
- addEntities: createAction(`${actionsGroupKey} Add ${entitiesName}`, (...entities) => ({
5
- entities,
6
- })),
7
- removeEntities: createAction(`${actionsGroupKey} Remove ${entitiesName}`, (...keys) => ({
8
- keys,
9
- })),
10
- updateEntities: createAction(`${actionsGroupKey} Update ${entitiesName}`, (...updates) => ({
11
- updates,
12
- })),
13
- upsertEntities: createAction(`${actionsGroupKey} Upsert ${entitiesName}`, (...entities) => ({
14
- entities,
15
- })),
16
- removeAllEntities: createAction(`${actionsGroupKey} Remove All ${entitiesName}`, (predicate) => ({ predicate })),
17
- clearEntitiesChanges: createAction(`${actionsGroupKey} Clear ${entitiesName} Changes`),
18
- };
19
- }
20
- //# sourceMappingURL=crud-entities.trait.actions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.trait.actions.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,UAAU,sBAAsB,CACpC,eAAuB,EACvB,YAAoB;IAEpB,OAAO;QACL,WAAW,EAAE,YAAY,CACvB,GAAG,eAAe,QAAQ,YAAY,EAAE,EACxC,CAAC,GAAG,QAAkB,EAAE,EAAE,CAAC,CAAC;YAC1B,QAAQ;SACT,CAAC,CACH;QACD,cAAc,EAAE,YAAY,CAC1B,GAAG,eAAe,WAAW,YAAY,EAAE,EAC3C,CAAC,GAAG,IAAyB,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI;SACL,CAAC,CACH;QACD,cAAc,EAAE,YAAY,CAC1B,GAAG,eAAe,WAAW,YAAY,EAAE,EAC3C,CAAC,GAAG,OAAyB,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO;SACR,CAAC,CACH;QACD,cAAc,EAAE,YAAY,CAC1B,GAAG,eAAe,WAAW,YAAY,EAAE,EAC3C,CAAC,GAAG,QAAkB,EAAE,EAAE,CAAC,CAAC;YAC1B,QAAQ;SACT,CAAC,CACH;QACD,iBAAiB,EAAE,YAAY,CAC7B,GAAG,eAAe,eAAe,YAAY,EAAE,EAC/C,CAAC,SAA6B,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CACnD;QACD,oBAAoB,EAAE,YAAY,CAChC,GAAG,eAAe,WAAW,YAAY,UAAU,CACpD;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { CrudEntitiesActions } from './crud-entities.model';\nimport { createAction } from '@ngrx/store';\nimport { Predicate, Update } from '@ngrx/entity';\n\nexport function createCrudTraitActions<Entity>(\n actionsGroupKey: string,\n entitiesName: string\n): CrudEntitiesActions<Entity> {\n return {\n addEntities: createAction(\n `${actionsGroupKey} Add ${entitiesName}`,\n (...entities: Entity[]) => ({\n entities,\n })\n ),\n removeEntities: createAction(\n `${actionsGroupKey} Remove ${entitiesName}`,\n (...keys: string[] | number[]) => ({\n keys,\n })\n ),\n updateEntities: createAction(\n `${actionsGroupKey} Update ${entitiesName}`,\n (...updates: Update<Entity>[]) => ({\n updates,\n })\n ),\n upsertEntities: createAction(\n `${actionsGroupKey} Upsert ${entitiesName}`,\n (...entities: Entity[]) => ({\n entities,\n })\n ),\n removeAllEntities: createAction(\n `${actionsGroupKey} Remove All ${entitiesName}`,\n (predicate?: Predicate<Entity>) => ({ predicate })\n ),\n clearEntitiesChanges: createAction(\n `${actionsGroupKey} Clear ${entitiesName} Changes`\n ),\n };\n}\n"]}
@@ -1,57 +0,0 @@
1
- import { createTraitFactory, } from '@ngrx-traits/core';
2
- import { createCrudTraitActions } from './crud-entities.trait.actions';
3
- import { createCrudTraitSelectors } from './crud-entities.trait.selectors';
4
- import { createCrudInitialState, createCrudTraitReducer, } from './crud-entities.trait.reducer';
5
- import { crudEntitiesTraitKey, } from './crud-entities.model';
6
- import { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';
7
- import { createCrudTraitMutators } from './crud-entities.trait.mutators';
8
- /**
9
- * Generates ngrx code to add, remove update, upsert entities on a list, it also
10
- * tracks the changes made, helpful for implementing batch updates. The `storeChanges` (false by default),
11
- * will store for add and update the changed entity props in the property `entityChanges` of the `Change` object.
12
- * @param config
13
- * @param config.storeChanges - Will store the changes made, default fals
14
- *
15
- * @example
16
- * // The following trait config
17
- *
18
- * export interface TestState
19
- * extends EntityAndStatusState<Todo>, CrudState<Todo>{}
20
- *
21
- * const traits = createEntityFeatureFactory(
22
- * addLoadEntitiesTrait<Todo>(),
23
- * addCrudEntitiesTrait<Todo>()
24
- * )({
25
- * actionsGroupKey: '[Todos]',
26
- * featureSelector: createFeatureSelector<TestState>>(
27
- * 'todos',
28
- * ),
29
- * });
30
- *
31
- * // adds following props to the state:
32
- * // changes: Change<Todo>[];
33
- *
34
- * // generated actions
35
- * traits.actions.addTodos(entity1,entity2...)
36
- * traits.actions.updateTodos({id: id1, changes:{prop1}},{id: id2, changes:{prop2}} ...)
37
- * traits.actions.upsertTodos(entity1,entity2...)
38
- * traits.actions.removeAllTodos()
39
- * traits.actions.clearTodosChanges()
40
- * // generated selectors
41
- * traits.selectors.selectTodosChangesList()
42
- * traits.selectors.selectFilteredTodosChangesList()
43
- * traits.selectors.selectAllFilteredChanges()
44
- */
45
- export function addCrudEntitiesTrait({ storeChanges = false, } = {}) {
46
- return createTraitFactory({
47
- key: crudEntitiesTraitKey,
48
- depends: [loadEntitiesTraitKey],
49
- config: { storeChanges },
50
- actions: ({ actionsGroupKey, entitiesName }) => createCrudTraitActions(actionsGroupKey, entitiesName),
51
- selectors: ({ previousSelectors }) => createCrudTraitSelectors(previousSelectors),
52
- mutators: ({ allConfigs }) => createCrudTraitMutators(allConfigs),
53
- initialState: ({ previousInitialState }) => createCrudInitialState(previousInitialState),
54
- reducer: ({ initialState, allActions, allMutators, allConfigs }) => createCrudTraitReducer(initialState, allActions, allMutators, allConfigs),
55
- });
56
- }
57
- //# sourceMappingURL=crud-entities.trait.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.trait.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAIL,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAIL,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,oBAAoB,CAAS,EAC3C,YAAY,GAAG,KAAK,MACE,EAAE;IACxB,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,oBAAoB;QACzB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,MAAM,EAAE,EAAE,YAAY,EAAwB;QAC9C,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,YAAY,EAA6B,EAAE,EAAE,CACxE,sBAAsB,CAAS,eAAe,EAAE,YAAY,CAAC;QAC/D,SAAS,EAAE,CAAC,EAAE,iBAAiB,EAA+B,EAAE,EAAE,CAChE,wBAAwB,CACtB,iBAAkD,CACnD;QACH,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAmC,EAAE,EAAE,CAC5D,uBAAuB,CACrB,UAAuE,CACxE;QACH,YAAY,EAAE,CAAC,EAAE,oBAAoB,EAAkC,EAAE,EAAE,CACzE,sBAAsB,CAAS,oBAAoB,CAAC;QACtD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,CACjE,sBAAsB,CACpB,YAAY,EACZ,UAI2B,EAC3B,WAAW,EACX,UAI+B,CAChC;KACJ,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n createTraitFactory,\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitSelectorsFactoryConfig,\n TraitStateMutatorsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { createCrudTraitActions } from './crud-entities.trait.actions';\nimport { createCrudTraitSelectors } from './crud-entities.trait.selectors';\nimport {\n createCrudInitialState,\n createCrudTraitReducer,\n} from './crud-entities.trait.reducer';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from '../sort-entities/sort-entities.model';\nimport {\n CrudEntitiesActions,\n CrudEntitiesConfig,\n CrudEntitiesKeyedConfig,\n crudEntitiesTraitKey,\n} from './crud-entities.model';\nimport {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { createCrudTraitMutators } from './crud-entities.trait.mutators';\n\n/**\n * Generates ngrx code to add, remove update, upsert entities on a list, it also\n * tracks the changes made, helpful for implementing batch updates. The `storeChanges` (false by default),\n * will store for add and update the changed entity props in the property `entityChanges` of the `Change` object.\n * @param config\n * @param config.storeChanges - Will store the changes made, default fals\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>, CrudState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * addLoadEntitiesTrait<Todo>(),\n * addCrudEntitiesTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // changes: Change<Todo>[];\n *\n * // generated actions\n * traits.actions.addTodos(entity1,entity2...)\n * traits.actions.updateTodos({id: id1, changes:{prop1}},{id: id2, changes:{prop2}} ...)\n * traits.actions.upsertTodos(entity1,entity2...)\n * traits.actions.removeAllTodos()\n * traits.actions.clearTodosChanges()\n * // generated selectors\n * traits.selectors.selectTodosChangesList()\n * traits.selectors.selectFilteredTodosChangesList()\n * traits.selectors.selectAllFilteredChanges()\n */\nexport function addCrudEntitiesTrait<Entity>({\n storeChanges = false,\n}: CrudEntitiesConfig = {}) {\n return createTraitFactory({\n key: crudEntitiesTraitKey,\n depends: [loadEntitiesTraitKey],\n config: { storeChanges } as CrudEntitiesConfig,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createCrudTraitActions<Entity>(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors }: TraitSelectorsFactoryConfig) =>\n createCrudTraitSelectors<Entity>(\n previousSelectors as LoadEntitiesSelectors<Entity>\n ),\n mutators: ({ allConfigs }: TraitStateMutatorsFactoryConfig) =>\n createCrudTraitMutators<Entity>(\n allConfigs as CrudEntitiesKeyedConfig & LoadEntitiesKeyedConfig<Entity>\n ),\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n createCrudInitialState<Entity>(previousInitialState),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createCrudTraitReducer(\n initialState,\n allActions as CrudEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators,\n allConfigs as CrudEntitiesKeyedConfig &\n FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n SortEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n });\n}\n"]}
@@ -1,101 +0,0 @@
1
- import { ChangeType, } from './crud-entities.model';
2
- export function createCrudTraitMutators(allConfigs) {
3
- const { storeChanges } = allConfigs.crud || {};
4
- const adapter = allConfigs.loadEntities.adapter;
5
- function generateChangeEntry(entity, changeType, customId) {
6
- return {
7
- id: customId !== null && customId !== void 0 ? customId : adapter.selectId(entity),
8
- changeType,
9
- entityChanges: (storeChanges && entity) || undefined,
10
- };
11
- }
12
- function addEntities(entities, state, addFirst = false) {
13
- const changes = [
14
- ...state.changes,
15
- ...entities.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),
16
- ];
17
- if (!addFirst)
18
- return adapter.addMany(entities, Object.assign(Object.assign({}, state), { changes }));
19
- const newIds = entities.map((e) => adapter.selectId(e));
20
- const newEntities = Object.assign({}, state.entities);
21
- entities.forEach((e) => {
22
- const id = adapter.selectId(e);
23
- newEntities[id] = e;
24
- });
25
- return Object.assign(Object.assign({}, state), { ids: [...newIds, ...state.ids], entities: newEntities, changes });
26
- }
27
- function upsertEntities(entities, state) {
28
- const oldChanges = [...state.changes];
29
- const existingIds = adapter.getSelectors().selectIds(state);
30
- const [additions, updates] = entities.reduce(([a, u], entity) => existingIds.indexOf(adapter.selectId(entity)) !== -1
31
- ? [a, [...u, entity]]
32
- : [[...a, entity], u], [new Array(), new Array()]);
33
- return adapter.upsertMany(entities, Object.assign(Object.assign({}, state), { changes: [
34
- ...oldChanges,
35
- ...additions.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),
36
- ...updates.map((entity) => generateChangeEntry(entity, ChangeType.UPDATED)),
37
- ] }));
38
- }
39
- function removeEntities(keysOrPredicate, state) {
40
- if (typeof keysOrPredicate === 'function') {
41
- return adapter.removeMany(keysOrPredicate, Object.assign(Object.assign({}, state), { changes: [
42
- ...state.changes,
43
- ...state.ids.map((id) => ({
44
- id,
45
- changeType: ChangeType.DELETED,
46
- })),
47
- ] }));
48
- }
49
- return adapter.removeMany(keysOrPredicate, Object.assign(Object.assign({}, state), { changes: [
50
- ...state.changes,
51
- ...keysOrPredicate.map((key) => ({
52
- id: key,
53
- changeType: ChangeType.DELETED,
54
- })),
55
- ] }));
56
- }
57
- function removeAllEntities(state) {
58
- return adapter.removeAll(Object.assign(Object.assign({}, state), { changes: [
59
- ...state.changes,
60
- ...state.ids.map((id) => ({
61
- id,
62
- changeType: ChangeType.DELETED,
63
- })),
64
- ] }));
65
- }
66
- function clearEntitiesChanges(state) {
67
- return Object.assign(Object.assign({}, state), { changes: [] });
68
- }
69
- function updateEntities(updates, state) {
70
- const oldChanges = [...state.changes];
71
- updates.forEach((updated) => {
72
- const id = adapter.selectId(updated.changes);
73
- if (id && id !== updated.id) {
74
- // if the id changes update the id of pold changes
75
- const index = oldChanges.findIndex((v) => v.id === updated.id);
76
- const oldChange = oldChanges[index];
77
- oldChanges[index] = Object.assign(Object.assign({}, oldChange), { id });
78
- }
79
- });
80
- return adapter.updateMany(updates, Object.assign(Object.assign({}, state), { changes: [
81
- ...oldChanges,
82
- ...updates.map((updated) => {
83
- var _a;
84
- return ({
85
- id: (_a = adapter.selectId(updated.changes)) !== null && _a !== void 0 ? _a : updated.id,
86
- changeType: ChangeType.UPDATED,
87
- entityChanges: (storeChanges && updated.changes) || undefined,
88
- });
89
- }),
90
- ] }));
91
- }
92
- return {
93
- addEntities,
94
- removeEntities,
95
- updateEntities,
96
- removeAllEntities,
97
- clearEntitiesChanges,
98
- upsertEntities,
99
- };
100
- }
101
- //# sourceMappingURL=crud-entities.trait.mutators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.trait.mutators.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.mutators.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Change,\n ChangeType,\n CrudEntitiesKeyedConfig,\n CrudEntitiesMutators,\n CrudEntitiesState,\n} from './crud-entities.model';\nimport { Predicate, Update } from '@ngrx/entity';\nimport {\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\n\nexport function createCrudTraitMutators<Entity>(\n allConfigs: CrudEntitiesKeyedConfig & LoadEntitiesKeyedConfig<Entity>\n): CrudEntitiesMutators<Entity> {\n const { storeChanges } = allConfigs.crud || {};\n const adapter = allConfigs!.loadEntities!.adapter;\n\n function generateChangeEntry(\n entity: Entity,\n changeType: ChangeType,\n customId?: string | number\n ) {\n return {\n id: customId ?? adapter.selectId(entity),\n changeType,\n entityChanges: (storeChanges && entity) || undefined,\n };\n }\n\n function addEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(entities: Entity[], state: S, addFirst = false) {\n const changes = [\n ...state.changes,\n ...entities.map((entity) =>\n generateChangeEntry(entity, ChangeType.CREATED)\n ),\n ];\n if (!addFirst)\n return adapter.addMany(entities, {\n ...state,\n changes,\n });\n\n const newIds = entities.map((e) => adapter.selectId(e));\n const newEntities = { ...state.entities };\n entities.forEach((e) => {\n const id = adapter.selectId(e);\n newEntities[id] = e;\n });\n return {\n ...state,\n ids: [...newIds, ...state.ids],\n entities: newEntities,\n changes,\n };\n }\n\n function upsertEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(entities: Entity[], state: S) {\n const oldChanges = [...state.changes];\n const existingIds = adapter.getSelectors().selectIds(state) as string[];\n\n const [additions, updates] = entities.reduce(\n ([a, u], entity) =>\n existingIds.indexOf(adapter.selectId(entity as Entity) as string) !== -1\n ? [a, [...u, entity]]\n : [[...a, entity], u],\n [new Array<Entity>(), new Array<Entity>()]\n );\n\n return adapter.upsertMany(entities, {\n ...state,\n changes: [\n ...oldChanges,\n\n ...additions.map((entity) =>\n generateChangeEntry(entity, ChangeType.CREATED)\n ),\n ...updates.map((entity) =>\n generateChangeEntry(entity, ChangeType.UPDATED)\n ),\n ],\n });\n }\n\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keys: number[], state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keys: string[], state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(predicate: Predicate<Entity>, state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keysOrPredicate: Predicate<Entity> | string[] | number[], state: S): S {\n if (typeof keysOrPredicate === 'function') {\n return adapter.removeMany(keysOrPredicate, {\n ...state,\n changes: [\n ...state.changes,\n ...(state.ids as any[]).map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n\n return adapter.removeMany(keysOrPredicate as string[], {\n ...state,\n changes: [\n ...state.changes,\n ...(keysOrPredicate as string[]).map((key: string) => ({\n id: key,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function removeAllEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(state: S): S {\n return adapter.removeAll({\n ...state,\n changes: [\n ...state.changes,\n ...(state.ids as any[]).map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function clearEntitiesChanges<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(state: S) {\n return { ...state, changes: [] };\n }\n\n function updateEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(updates: Update<Entity>[], state: S) {\n const oldChanges = [...state.changes];\n updates.forEach((updated) => {\n const id = adapter.selectId(updated.changes as Entity);\n if (id && id !== updated.id) {\n // if the id changes update the id of pold changes\n const index = oldChanges.findIndex((v) => v.id === updated.id);\n const oldChange = oldChanges[index];\n oldChanges[index] = { ...oldChange, id };\n }\n });\n return adapter.updateMany(updates, {\n ...state,\n changes: [\n ...oldChanges,\n ...updates.map(\n (updated) =>\n ({\n id: adapter.selectId(updated.changes as Entity) ?? updated.id,\n changeType: ChangeType.UPDATED,\n entityChanges: (storeChanges && updated.changes) || undefined,\n } as Change<Entity>)\n ),\n ],\n });\n }\n\n return {\n addEntities,\n removeEntities,\n updateEntities,\n removeAllEntities,\n clearEntitiesChanges,\n upsertEntities,\n };\n}\n"]}
@@ -1,15 +0,0 @@
1
- import { createReducer, on } from '@ngrx/store';
2
- import { insertIf } from '@ngrx-traits/core';
3
- export function createCrudInitialState(previousInitialState) {
4
- return Object.assign(Object.assign({}, previousInitialState), { changes: [] });
5
- }
6
- export function createCrudTraitReducer(initialState, allActions, allMutators, allConfigs) {
7
- var _a, _b, _c;
8
- const sortRemote = (_a = allConfigs.sort) === null || _a === void 0 ? void 0 : _a.remote;
9
- const filterRemote = allConfigs.filter && !((_b = allConfigs.filter) === null || _b === void 0 ? void 0 : _b.filterFn);
10
- const paginationCacheType = (_c = allConfigs.pagination) === null || _c === void 0 ? void 0 : _c.cacheType;
11
- return createReducer(initialState, on(allActions.addEntities, (state, { entities }) => allMutators.addEntities(entities, state)), on(allActions.updateEntities, (state, { updates }) => allMutators.updateEntities(updates, state)), on(allActions.upsertEntities, (state, { entities }) => allMutators.upsertEntities(entities, state)), on(allActions.removeEntities, (state, { keys }) => allMutators.removeEntities(keys, state)), on(allActions.removeAllEntities, (state, { predicate }) => predicate
12
- ? allMutators.removeEntities(predicate, state)
13
- : allMutators.removeAllEntities(state)), on(allActions.clearEntitiesChanges, (state) => allMutators.clearEntitiesChanges(state)), ...insertIf(sortRemote, () => on(allActions.sortEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(filterRemote, () => on(allActions.filterEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!allActions.loadEntitiesPageSuccess, () => on(allActions.loadEntitiesSuccess, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial', () => on(allActions.loadEntitiesPageSuccess, (state) => allMutators.clearEntitiesChanges(state))));
14
- }
15
- //# sourceMappingURL=crud-entities.trait.reducer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.trait.reducer.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.reducer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAiBhD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CACpC,oBAAyB;IAEzB,uCACK,oBAAoB,KACvB,OAAO,EAAE,EAAE,IACX;AACJ,CAAC;AACD,MAAM,UAAU,sBAAsB,CAIpC,YAAe,EACf,UAI2B,EAC3B,WAAyC,EACzC,UAI+B;;IAE/B,MAAM,UAAU,GAAG,MAAA,UAAU,CAAC,IAAI,0CAAE,MAAM,CAAC;IAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA,MAAA,UAAU,CAAC,MAAM,0CAAE,QAAQ,CAAA,CAAC;IACvE,MAAM,mBAAmB,GAAG,MAAA,UAAU,CAAC,UAAU,0CAAE,SAAS,CAAC;IAE7D,OAAO,aAAa,CAClB,YAAY,EACZ,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjD,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CACzC,EACD,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACnD,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3C,EACD,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACpD,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC5C,EACD,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAChD,WAAW,CAAC,cAAc,CAAC,IAAa,EAAE,KAAK,CAAC,CACjD,EACD,EAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACxD,SAAS;QACP,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;QAC9C,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACzC,EACD,EAAE,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5C,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CACxC,EACD,GAAG,QAAQ,CAAI,UAAU,EAAE,GAAG,EAAE,CAC9B,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CACpC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CACxC,CACF,EACD,GAAG,QAAQ,CAAI,YAAY,EAAE,GAAG,EAAE,CAChC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CACtC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CACxC,CACF,EACD,GAAG,QAAQ,CAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACvD,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC3C,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CACxC,CACF,EACD,GAAG,QAAQ,CACT,CAAC,CAAC,UAAU,CAAC,uBAAuB,IAAI,mBAAmB,KAAK,SAAS,EACzE,GAAG,EAAE,CACH,EAAE,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/C,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CACxC,CACJ,CACF,CAAC;AACJ,CAAC","sourcesContent":["import {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport { createReducer, on } from '@ngrx/store';\nimport {\n CrudEntitiesActions,\n CrudEntitiesKeyedConfig,\n CrudEntitiesMutators,\n CrudEntitiesState,\n} from './crud-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities';\nimport { SortEntitiesActions, SortEntitiesKeyedConfig } from '../sort-entities';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination';\nimport { insertIf } from '@ngrx-traits/core';\n\nexport function createCrudInitialState<Entity>(\n previousInitialState: any\n): LoadEntitiesState<Entity> & CrudEntitiesState<Entity> {\n return {\n ...previousInitialState,\n changes: [],\n };\n}\nexport function createCrudTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n>(\n initialState: S,\n allActions: CrudEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators: CrudEntitiesMutators<Entity>,\n allConfigs: CrudEntitiesKeyedConfig &\n FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n SortEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n) {\n const sortRemote = allConfigs.sort?.remote;\n const filterRemote = allConfigs.filter && !allConfigs.filter?.filterFn;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n\n return createReducer(\n initialState,\n on(allActions.addEntities, (state, { entities }) =>\n allMutators.addEntities(entities, state)\n ),\n on(allActions.updateEntities, (state, { updates }) =>\n allMutators.updateEntities(updates, state)\n ),\n on(allActions.upsertEntities, (state, { entities }) =>\n allMutators.upsertEntities(entities, state)\n ),\n on(allActions.removeEntities, (state, { keys }) =>\n allMutators.removeEntities(keys as any[], state)\n ),\n on(allActions.removeAllEntities, (state, { predicate }) =>\n predicate\n ? allMutators.removeEntities(predicate, state)\n : allMutators.removeAllEntities(state)\n ),\n on(allActions.clearEntitiesChanges, (state) =>\n allMutators.clearEntitiesChanges(state)\n ),\n ...insertIf<S>(sortRemote, () =>\n on(allActions.sortEntities, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(filterRemote, () =>\n on(allActions.filterEntities, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(!allActions.loadEntitiesPageSuccess, () =>\n on(allActions.loadEntitiesSuccess, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(\n !!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial',\n () =>\n on(allActions.loadEntitiesPageSuccess, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n )\n );\n}\n"]}
@@ -1,70 +0,0 @@
1
- import { createSelector } from '@ngrx/store';
2
- import { ChangeType, } from './crud-entities.model';
3
- export function createCrudTraitSelectors(previousSelectors) {
4
- function selectChanges(state) {
5
- return state.changes;
6
- }
7
- function selectFilteredChanges(state) {
8
- const cache = {};
9
- return state.changes.reduce((acc, value) => {
10
- const changes = cache[value.id];
11
- if (!changes) {
12
- cache[value.id] = [value.changeType];
13
- acc.push(value);
14
- return acc;
15
- }
16
- if (value.changeType === ChangeType.UPDATED) {
17
- return acc;
18
- }
19
- if (value.changeType === ChangeType.DELETED &&
20
- changes.includes(ChangeType.CREATED)) {
21
- delete cache[value.id];
22
- return acc.filter((v) => v.id !== value.id);
23
- }
24
- if (value.changeType === ChangeType.DELETED) {
25
- delete cache[value.id];
26
- const newAcc = acc.filter((v) => v.id !== value.id);
27
- newAcc.push(value);
28
- return newAcc;
29
- }
30
- return acc;
31
- }, []);
32
- }
33
- const { selectEntitiesMap } = previousSelectors;
34
- const selectEntitiesChangesList = createSelector((state) => selectEntitiesMap(state), selectChanges, (entities, changed, { type }) => {
35
- if (type)
36
- return changed
37
- .filter((c) => c.changeType === type)
38
- .map((change) => {
39
- var _a;
40
- return ({
41
- changeType: change.changeType,
42
- entity: (_a = entities[change.id]) !== null && _a !== void 0 ? _a : {
43
- id: change.id,
44
- },
45
- });
46
- });
47
- const map = changed.map((change) => {
48
- var _a;
49
- return ({
50
- changeType: change.changeType,
51
- entity: (_a = entities[change.id]) !== null && _a !== void 0 ? _a : {
52
- id: change.id,
53
- },
54
- });
55
- });
56
- return map;
57
- });
58
- const selectFilteredEntitiesChangesList = createSelector(selectFilteredChanges, (state) => selectEntitiesMap(state), (changes, entities) => changes.map((c) => {
59
- var _a;
60
- return {
61
- entity: (_a = entities[c.id]) !== null && _a !== void 0 ? _a : { id: c.id },
62
- changeType: c.changeType,
63
- };
64
- }));
65
- return {
66
- selectEntitiesChangesList,
67
- selectFilteredEntitiesChangesList,
68
- };
69
- }
70
- //# sourceMappingURL=crud-entities.trait.selectors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-entities.trait.selectors.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAEL,UAAU,GAIX,MAAM,uBAAuB,CAAC;AAO/B,MAAM,UAAU,wBAAwB,CACtC,iBAAgD;IAEhD,SAAS,aAAa,CAAsC,KAAQ;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,SAAS,qBAAqB,CAC5B,KAAQ;QAER,MAAM,KAAK,GAAmC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE;gBACZ,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO,GAAG,CAAC;aACZ;YAED,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE;gBAC3C,OAAO,GAAG,CAAC;aACZ;YAED,IACE,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO;gBACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EACpC;gBACA,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;aAC7C;YAED,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE;gBAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,MAAM,CAAC;aACf;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAsB,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAAC;IAEhD,MAAM,yBAAyB,GAAG,cAAc,CAC9C,CAAC,KAA4D,EAAE,EAAE,CAC/D,iBAAiB,CAAC,KAAK,CAAC,EAC1B,aAAa,EACb,CACE,QAA4B,EAC5B,OAAyB,EACzB,EAAE,IAAI,EAAwB,EAC9B,EAAE;QACF,IAAI,IAAI;YACN,OAAO,OAAO;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;iBACpC,GAAG,CACF,CAAC,MAAM,EAAE,EAAE;;gBACT,OAAA,CAAC;oBACC,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,MAAM,EAAE,MAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,mCAAI;wBAC7B,EAAE,EAAE,MAAM,CAAC,EAAE;qBACd;iBACuB,CAAA,CAAA;aAAA,CAC7B,CAAC;QAEN,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CACrB,CAAC,MAAM,EAAE,EAAE;;YACT,OAAA,CAAC;gBACC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,mCAAI;oBAC7B,EAAE,EAAE,MAAM,CAAC,EAAE;iBACd;aACuB,CAAA,CAAA;SAAA,CAC7B,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,CACF,CAAC;IAEF,MAAM,iCAAiC,GAAG,cAAc,CACtD,qBAAqB,EACrB,CAAC,KAA4D,EAAE,EAAE,CAC/D,iBAAiB,CAAC,KAAK,CAAC,EAC1B,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;QAChB,OAAO;YACL,MAAM,EAAE,MAAA,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,mCAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YACtC,UAAU,EAAE,CAAC,CAAC,UAAU;SACD,CAAC;IAC5B,CAAC,CAAC,CACL,CAAC;IAEF,OAAO;QACL,yBAAyB;QACzB,iCAAiC;KAClC,CAAC;AACJ,CAAC","sourcesContent":["import { createSelector } from '@ngrx/store';\nimport {\n Change,\n ChangeType,\n CrudEntitiesSelectors,\n CrudEntitiesState,\n EntityChange,\n} from './crud-entities.model';\nimport {\n LoadEntitiesSelectors,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport { Dictionary } from '@ngrx/entity';\n\nexport function createCrudTraitSelectors<Entity>(\n previousSelectors: LoadEntitiesSelectors<Entity>\n): CrudEntitiesSelectors<Entity> {\n function selectChanges<S extends CrudEntitiesState<Entity>>(state: S) {\n return state.changes;\n }\n\n function selectFilteredChanges<S extends CrudEntitiesState<Entity>>(\n state: S\n ) {\n const cache: { [id: string]: ChangeType[] } = {};\n return state.changes.reduce((acc, value) => {\n const changes = cache[value.id];\n if (!changes) {\n cache[value.id] = [value.changeType];\n acc.push(value);\n return acc;\n }\n\n if (value.changeType === ChangeType.UPDATED) {\n return acc;\n }\n\n if (\n value.changeType === ChangeType.DELETED &&\n changes.includes(ChangeType.CREATED)\n ) {\n delete cache[value.id];\n return acc.filter((v) => v.id !== value.id);\n }\n\n if (value.changeType === ChangeType.DELETED) {\n delete cache[value.id];\n const newAcc = acc.filter((v) => v.id !== value.id);\n newAcc.push(value);\n return newAcc;\n }\n return acc;\n }, [] as Change<Entity>[]);\n }\n\n const { selectEntitiesMap } = previousSelectors;\n\n const selectEntitiesChangesList = createSelector(\n (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>) =>\n selectEntitiesMap(state),\n selectChanges,\n (\n entities: Dictionary<Entity>,\n changed: Change<Entity>[],\n { type }: { type: ChangeType }\n ) => {\n if (type)\n return changed\n .filter((c) => c.changeType === type)\n .map(\n (change) =>\n ({\n changeType: change.changeType,\n entity: entities[change.id] ?? {\n id: change.id,\n },\n } as EntityChange<Entity>)\n );\n\n const map = changed.map(\n (change) =>\n ({\n changeType: change.changeType,\n entity: entities[change.id] ?? {\n id: change.id,\n },\n } as EntityChange<Entity>)\n );\n return map;\n }\n );\n\n const selectFilteredEntitiesChangesList = createSelector(\n selectFilteredChanges,\n (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>) =>\n selectEntitiesMap(state),\n (changes, entities) =>\n changes.map((c) => {\n return {\n entity: entities[c.id] ?? { id: c.id },\n changeType: c.changeType,\n } as EntityChange<Entity>;\n })\n );\n\n return {\n selectEntitiesChangesList,\n selectFilteredEntitiesChangesList,\n };\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from './crud-entities.model';
2
- export * from './crud-entities.trait';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/crud-entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from './crud-entities.model';\nexport * from './crud-entities.trait';\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=entities-pagination.model.internal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entities-pagination.model.internal.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.model.internal.ts"],"names":[],"mappings":"","sourcesContent":["import { ActionCreator, TypedAction } from '@ngrx/store/src/models';\nimport { EntitiesPaginationActions } from './entities-pagination.model';\n\n/**\n * @internal\n */\nexport type ƟPaginationActions = EntitiesPaginationActions & {\n setEntitiesRequestPage: ActionCreator<\n string,\n (props: { index: number }) => { index: number } & TypedAction<string>\n >;\n};\n"]}
@@ -1,2 +0,0 @@
1
- export const entitiesPaginationTraitKey = 'pagination';
2
- //# sourceMappingURL=entities-pagination.model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entities-pagination.model.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.model.ts"],"names":[],"mappings":"AAkGA,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { LoadEntitiesState } from '../load-entities';\n\nimport { ActionCreator, TypedAction } from '@ngrx/store/src/models';\n\nexport type CacheType = 'full' | 'partial' | 'grow';\nexport interface EntitiesPaginationState {\n pagination: {\n currentPage: number;\n requestPage: number;\n pageSize: number;\n total?: number;\n pagesToCache: number;\n cache: {\n type: CacheType;\n start: number;\n end: number;\n };\n };\n}\n\nexport type EntitiesPaginationActions = {\n loadEntitiesPage: ActionCreator<\n string,\n (props: {\n index: number;\n forceLoad?: boolean;\n }) => { index: number; forceLoad?: boolean } & TypedAction<string>\n >;\n loadEntitiesPageSuccess: ActionCreator<string, () => TypedAction<string>>;\n loadEntitiesPageFail: ActionCreator<string, () => TypedAction<string>>;\n loadEntitiesNextPage: ActionCreator<string, () => TypedAction<string>>;\n loadEntitiesPreviousPage: ActionCreator<string, () => TypedAction<string>>;\n loadEntitiesFirstPage: ActionCreator<\n string,\n (forceLoad?: boolean) => { forceLoad?: boolean } & TypedAction<string>\n >;\n loadEntitiesLastPage: ActionCreator<string, () => TypedAction<string>>;\n clearEntitiesPagesCache: ActionCreator<string, () => TypedAction<string>>;\n};\n\nexport type EntitiesPaginationSelectors<T> = {\n isEntitiesPageInCache: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n props?: { page?: number }\n ) => boolean;\n selectPageEntitiesList: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n props?: { page?: number }\n ) => T[];\n selectEntitiesPage: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n props?: { page?: number }\n ) => PageModel<T>;\n selectEntitiesPagedRequest: (\n state: LoadEntitiesState<T> & EntitiesPaginationState\n ) => PagedRequest;\n selectEntitiesPageInfo: (\n state: LoadEntitiesState<T> & EntitiesPaginationState\n ) => PageInfoModel;\n isLoadingEntitiesPage: (\n state: LoadEntitiesState<T> & EntitiesPaginationState\n ) => boolean;\n};\n\nexport type EntitiesPaginationMutators<T> = {\n mergePaginatedEntities<\n S extends LoadEntitiesState<T> & EntitiesPaginationState\n >(\n entities: T[],\n total: number | undefined,\n state: S\n ): S;\n};\n\nexport interface PageModel<T> {\n entities: T[];\n pageIndex: number;\n total: number | undefined;\n pageSize: number;\n}\n\nexport interface PageInfoModel {\n pageIndex: number;\n total: number | undefined;\n pageSize: number;\n pagesCount: number | undefined;\n hasPrevious: boolean;\n hasNext: boolean;\n cacheType: CacheType;\n}\n\nexport interface PagedRequest {\n startIndex: number;\n size: number;\n page: number;\n}\n\nexport const entitiesPaginationTraitKey = 'pagination';\n\nexport interface EntitiesPaginationConfig {\n cacheType?: CacheType;\n pageSize?: number;\n currentPage?: number;\n pagesToCache?: number;\n}\n\nexport interface EntitiesPaginationKeyedConfig {\n pagination?: EntitiesPaginationConfig;\n}\n"]}
@@ -1,20 +0,0 @@
1
- import { createAction, props } from '@ngrx/store';
2
- export function createPaginationTraitActions(actionsGroupKey, entitiesName) {
3
- const actions = {
4
- loadEntitiesPage: createAction(`${actionsGroupKey} Load ${entitiesName} Page`, ({ index, forceLoad }) => ({
5
- index,
6
- forceLoad,
7
- })),
8
- loadEntitiesPageSuccess: createAction(`${actionsGroupKey} Load ${entitiesName}
9
- Page Success`),
10
- loadEntitiesPageFail: createAction(`${actionsGroupKey} Load ${entitiesName} Page Fail`),
11
- loadEntitiesPreviousPage: createAction(`${actionsGroupKey} Load Previous ${entitiesName} Page`),
12
- loadEntitiesNextPage: createAction(`${actionsGroupKey} Load Next ${entitiesName} Page`),
13
- loadEntitiesFirstPage: createAction(`${actionsGroupKey} Load First ${entitiesName} Page`, (forceLoad) => ({ forceLoad })),
14
- loadEntitiesLastPage: createAction(`${actionsGroupKey} Load Last ${entitiesName} Page`),
15
- clearEntitiesPagesCache: createAction(`${actionsGroupKey} Clear ${entitiesName} Cache`),
16
- setEntitiesRequestPage: createAction(`${actionsGroupKey} Set ${entitiesName} Request Page`, props()),
17
- };
18
- return actions;
19
- }
20
- //# sourceMappingURL=entities-pagination.trait.actions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entities-pagination.trait.actions.js","sourceRoot":"","sources":["../../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,UAAU,4BAA4B,CAC1C,eAAuB,EACvB,YAAoB;IAEpB,MAAM,OAAO,GAAuB;QAClC,gBAAgB,EAAE,YAAY,CAC5B,GAAG,eAAe,SAAS,YAAY,OAAO,EAC9C,CAAC,EAAE,KAAK,EAAE,SAAS,EAA0C,EAAE,EAAE,CAAC,CAAC;YACjE,KAAK;YACL,SAAS;SACV,CAAC,CACH;QACD,uBAAuB,EAAE,YAAY,CACnC,GAAG,eAAe,UAAU,YAAY;uBACvB,CAClB;QACD,oBAAoB,EAAE,YAAY,CAChC,GAAG,eAAe,SAAS,YAAY,YAAY,CACpD;QACD,wBAAwB,EAAE,YAAY,CACpC,GAAG,eAAe,kBAAkB,YAAY,OAAO,CACxD;QACD,oBAAoB,EAAE,YAAY,CAChC,GAAG,eAAe,cAAc,YAAY,OAAO,CACpD;QACD,qBAAqB,EAAE,YAAY,CACjC,GAAG,eAAe,eAAe,YAAY,OAAO,EACpD,CAAC,SAAmB,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CACzC;QACD,oBAAoB,EAAE,YAAY,CAChC,GAAG,eAAe,cAAc,YAAY,OAAO,CACpD;QACD,uBAAuB,EAAE,YAAY,CACnC,GAAG,eAAe,UAAU,YAAY,QAAQ,CACjD;QACD,sBAAsB,EAAE,YAAY,CAClC,GAAG,eAAe,QAAQ,YAAY,eAAe,EACrD,KAAK,EAAqB,CAC3B;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { EntitiesPaginationActions } from './entities-pagination.model';\nimport { createAction, props } from '@ngrx/store';\nimport { ƟPaginationActions } from './entities-pagination.model.internal';\n\nexport function createPaginationTraitActions(\n actionsGroupKey: string,\n entitiesName: string\n): EntitiesPaginationActions {\n const actions: ƟPaginationActions = {\n loadEntitiesPage: createAction(\n `${actionsGroupKey} Load ${entitiesName} Page`,\n ({ index, forceLoad }: { index: number; forceLoad?: boolean }) => ({\n index,\n forceLoad,\n })\n ),\n loadEntitiesPageSuccess: createAction(\n `${actionsGroupKey} Load ${entitiesName}\n Page Success`\n ),\n loadEntitiesPageFail: createAction(\n `${actionsGroupKey} Load ${entitiesName} Page Fail`\n ),\n loadEntitiesPreviousPage: createAction(\n `${actionsGroupKey} Load Previous ${entitiesName} Page`\n ),\n loadEntitiesNextPage: createAction(\n `${actionsGroupKey} Load Next ${entitiesName} Page`\n ),\n loadEntitiesFirstPage: createAction(\n `${actionsGroupKey} Load First ${entitiesName} Page`,\n (forceLoad?: boolean) => ({ forceLoad })\n ),\n loadEntitiesLastPage: createAction(\n `${actionsGroupKey} Load Last ${entitiesName} Page`\n ),\n clearEntitiesPagesCache: createAction(\n `${actionsGroupKey} Clear ${entitiesName} Cache`\n ),\n setEntitiesRequestPage: createAction(\n `${actionsGroupKey} Set ${entitiesName} Request Page`,\n props<{ index: number }>()\n ),\n };\n return actions;\n}\n"]}
@@ -1,54 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { TraitEffect } from '@ngrx-traits/core';
3
- import { concatMap, concatMapTo, filter, first, map } from 'rxjs/operators';
4
- import { concatLatestFrom, createEffect, ofType } from '@ngrx/effects';
5
- import * as i0 from "@angular/core";
6
- export function createPaginationTraitEffects(allActions, allSelectors) {
7
- class PaginationEffect extends TraitEffect {
8
- constructor() {
9
- super(...arguments);
10
- this.loadPage$ = createEffect(() => {
11
- return this.actions$.pipe(ofType(allActions.loadEntitiesPage), concatLatestFrom(() => this.store.select(allSelectors.isEntitiesPageInCache)), map(([{ forceLoad }, isInCache]) => !forceLoad && isInCache
12
- ? allActions.loadEntitiesPageSuccess()
13
- : allActions.loadEntities()));
14
- });
15
- this.preloadNextPage$ = createEffect(() => {
16
- return this.actions$.pipe(ofType(allActions.loadEntitiesPageSuccess), concatMapTo(this.store.select(allSelectors.selectEntitiesPageInfo).pipe(first())), filter((pageInfo) => !!pageInfo.total &&
17
- pageInfo.hasNext &&
18
- pageInfo.cacheType !== 'full'), concatMap((pageInfo) => this.store
19
- .select(allSelectors.isEntitiesPageInCache, {
20
- page: pageInfo.pageIndex + 1,
21
- })
22
- .pipe(first(), map((isInCache) => (!isInCache && pageInfo) || undefined))), filter((pageInfo) => !!pageInfo), concatMap((pageInfo) => [
23
- allActions.setEntitiesRequestPage({ index: pageInfo.pageIndex + 1 }),
24
- allActions.loadEntities(),
25
- ]));
26
- });
27
- this.loadFirstPage$ = createEffect(() => {
28
- return this.actions$.pipe(ofType(allActions.loadEntitiesFirstPage), map(() => allActions.loadEntitiesPage({ index: 0 })));
29
- });
30
- this.loadPreviousPage$ = createEffect(() => {
31
- return this.actions$.pipe(ofType(allActions.loadEntitiesPreviousPage), concatMapTo(this.store.select(allSelectors.selectEntitiesPageInfo).pipe(first())), map((page) => page.hasPrevious
32
- ? allActions.loadEntitiesPage({ index: page.pageIndex - 1 })
33
- : allActions.loadEntitiesPageFail()));
34
- });
35
- this.loadNextPage$ = createEffect(() => {
36
- return this.actions$.pipe(ofType(allActions.loadEntitiesNextPage), concatMapTo(this.store.select(allSelectors.selectEntitiesPageInfo).pipe(first())), map((page) => page.hasNext
37
- ? allActions.loadEntitiesPage({ index: page.pageIndex + 1 })
38
- : allActions.loadEntitiesPageFail()));
39
- });
40
- this.loadLastPage$ = createEffect(() => {
41
- return this.actions$.pipe(ofType(allActions.loadEntitiesLastPage), concatMapTo(this.store.select(allSelectors.selectEntitiesPageInfo).pipe(first())), map((page) => page.hasNext && page.pagesCount
42
- ? allActions.loadEntitiesPage({ index: page.pagesCount - 1 })
43
- : allActions.loadEntitiesPageFail()));
44
- });
45
- }
46
- }
47
- PaginationEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PaginationEffect, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
48
- PaginationEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PaginationEffect });
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PaginationEffect, decorators: [{
50
- type: Injectable
51
- }] });
52
- return [PaginationEffect];
53
- }
54
- //# sourceMappingURL=entities-pagination.trait.effects.js.map