imng-ngrx-utils 4.110.8 → 4.112.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.
package/esm2020/index.mjs CHANGED
@@ -5,6 +5,6 @@ export { findAndMerge } from './lib/find-and-merge';
5
5
  export { matchAndSpread } from './lib/match-and-spread';
6
6
  export { removeById } from './lib/remove-by-id';
7
7
  export { Subscriptions } from './lib/subscriptions';
8
- export * from './lib/error-handler';
8
+ export * from './lib/error-handlers';
9
9
  export * from './lib/get-by-id';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2ltbmctbmdyeC11dGlscy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQYXlsb2FkLCBjcmVhdGVQYXlsb2FkQWN0aW9uIH0gZnJvbSAnLi9saWIvcGF5bG9hZCc7XG5leHBvcnQgeyBpc1RydXRoeSwgaXNGYWxzeSB9IGZyb20gJy4vbGliL2lzVHJ1dGh5JztcbmV4cG9ydCB7IGZpbmRBbmRNb2RpZnkgfSBmcm9tICcuL2xpYi9maW5kLWFuZC1tb2RpZnknO1xuZXhwb3J0IHsgZmluZEFuZE1lcmdlIH0gZnJvbSAnLi9saWIvZmluZC1hbmQtbWVyZ2UnO1xuZXhwb3J0IHsgbWF0Y2hBbmRTcHJlYWQgfSBmcm9tICcuL2xpYi9tYXRjaC1hbmQtc3ByZWFkJztcbmV4cG9ydCB7IHJlbW92ZUJ5SWQgfSBmcm9tICcuL2xpYi9yZW1vdmUtYnktaWQnO1xuZXhwb3J0IHsgU3Vic2NyaXB0aW9ucyB9IGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbnMnO1xuZXhwb3J0IHsgU3Vic2NyaWJhYmxlIH0gZnJvbSAnLi9saWIvc3Vic2NyaWJhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vycm9yLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2V0LWJ5LWlkJztcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2ltbmctbmdyeC11dGlscy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQYXlsb2FkLCBjcmVhdGVQYXlsb2FkQWN0aW9uIH0gZnJvbSAnLi9saWIvcGF5bG9hZCc7XG5leHBvcnQgeyBpc1RydXRoeSwgaXNGYWxzeSB9IGZyb20gJy4vbGliL2lzVHJ1dGh5JztcbmV4cG9ydCB7IGZpbmRBbmRNb2RpZnkgfSBmcm9tICcuL2xpYi9maW5kLWFuZC1tb2RpZnknO1xuZXhwb3J0IHsgZmluZEFuZE1lcmdlIH0gZnJvbSAnLi9saWIvZmluZC1hbmQtbWVyZ2UnO1xuZXhwb3J0IHsgbWF0Y2hBbmRTcHJlYWQgfSBmcm9tICcuL2xpYi9tYXRjaC1hbmQtc3ByZWFkJztcbmV4cG9ydCB7IHJlbW92ZUJ5SWQgfSBmcm9tICcuL2xpYi9yZW1vdmUtYnktaWQnO1xuZXhwb3J0IHsgU3Vic2NyaXB0aW9ucyB9IGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbnMnO1xuZXhwb3J0IHsgU3Vic2NyaWJhYmxlIH0gZnJvbSAnLi9saWIvc3Vic2NyaWJhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vycm9yLWhhbmRsZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dldC1ieS1pZCc7XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { catchError, of } from 'rxjs';
2
+ import { createPayloadAction } from './payload';
3
+ export const imngEffectError = createPayloadAction('[IMNG] Error Occured');
4
+ /**
5
+ * Will handle effect error and dispatch an imngEffectError action
6
+ * @param action
7
+ * @returns
8
+ */
9
+ export function handleEffectError(action) {
10
+ return catchError((error) => of(imngEffectError({ action, error })));
11
+ }
12
+ export function imngEffectErrorReducer(state, effectError) {
13
+ return ({
14
+ ...state,
15
+ loading: false,
16
+ error: effectError.payload.error
17
+ });
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2ltbmctbmdyeC11dGlscy9zcmMvbGliL2Vycm9yLWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFvQixNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUNoRCxzQkFBc0IsQ0FBQyxDQUFDO0FBRTFCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYztJQUM5QyxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUFRLEVBQ1IsV0FBNEM7SUFFNUMsT0FBTyxDQUFDO1FBQ04sR0FBRyxLQUFLO1FBQ1IsT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLO0tBQ2pDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBvZiwgT3BlcmF0b3JGdW5jdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlUGF5bG9hZEFjdGlvbiB9IGZyb20gJy4vcGF5bG9hZCc7XG5cbmV4cG9ydCBjb25zdCBpbW5nRWZmZWN0RXJyb3IgPSBjcmVhdGVQYXlsb2FkQWN0aW9uPHsgYWN0aW9uOiBBY3Rpb24sIGVycm9yOiBFcnJvcjsgfT4oXG4gICdbSU1OR10gRXJyb3IgT2NjdXJlZCcpO1xuXG4vKipcbiAqICBXaWxsIGhhbmRsZSBlZmZlY3QgZXJyb3IgYW5kIGRpc3BhdGNoIGFuIGltbmdFZmZlY3RFcnJvciBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24gXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUVmZmVjdEVycm9yKGFjdGlvbjogQWN0aW9uKTogT3BlcmF0b3JGdW5jdGlvbjxBY3Rpb24sIEFjdGlvbj4ge1xuICByZXR1cm4gY2F0Y2hFcnJvcigoZXJyb3IpID0+IG9mKGltbmdFZmZlY3RFcnJvcih7IGFjdGlvbiwgZXJyb3IgfSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltbmdFZmZlY3RFcnJvclJlZHVjZXI8VCBleHRlbmRzIHsgbG9hZGluZzogYm9vbGVhbiwgZXJyb3I6IHVua25vd247IH0+KFxuICBzdGF0ZTogVCxcbiAgZWZmZWN0RXJyb3I6IHsgcGF5bG9hZDogeyBlcnJvcjogRXJyb3I7IH07IH0pXG4gIDogVCB7XG4gIHJldHVybiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBlZmZlY3RFcnJvci5wYXlsb2FkLmVycm9yXG4gIH0pO1xufVxuIl19
@@ -75,10 +75,17 @@ class Subscriptions {
75
75
  }
76
76
  }
77
77
 
78
- const effectError = createPayloadAction('[IMNG] Error Occured');
78
+ const imngEffectError = createPayloadAction('[IMNG] Error Occured');
79
+ /**
80
+ * Will handle effect error and dispatch an imngEffectError action
81
+ * @param action
82
+ * @returns
83
+ */
79
84
  function handleEffectError(action) {
80
- return catchError((error) => of(effectError({ action, error })));
81
- ;
85
+ return catchError((error) => of(imngEffectError({ action, error })));
86
+ }
87
+ function imngEffectErrorReducer(state, effectError) {
88
+ return (Object.assign(Object.assign({}, state), { loading: false, error: effectError.payload.error }));
82
89
  }
83
90
 
84
91
  function getById(source, id) {
@@ -93,5 +100,5 @@ function getById(source, id) {
93
100
  * Generated bundle index. Do not edit.
94
101
  */
95
102
 
96
- export { Subscriptions, createPayloadAction, effectError, findAndMerge, findAndModify, getById, handleEffectError, isFalsy, isTruthy, matchAndSpread, removeById };
103
+ export { Subscriptions, createPayloadAction, findAndMerge, findAndModify, getById, handleEffectError, imngEffectError, imngEffectErrorReducer, isFalsy, isTruthy, matchAndSpread, removeById };
97
104
  //# sourceMappingURL=imng-ngrx-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"imng-ngrx-utils.mjs","sources":["../../../../libs/imng-ngrx-utils/src/lib/payload.ts","../../../../libs/imng-ngrx-utils/src/lib/isTruthy.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-modify.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-merge.ts","../../../../libs/imng-ngrx-utils/src/lib/match-and-spread.ts","../../../../libs/imng-ngrx-utils/src/lib/remove-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/subscriptions.ts","../../../../libs/imng-ngrx-utils/src/lib/error-handler.ts","../../../../libs/imng-ngrx-utils/src/lib/get-by-id.ts","../../../../libs/imng-ngrx-utils/src/imng-ngrx-utils.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\n\nexport interface Payload<T> {\n payload: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createPayloadAction<T>(\n actionType: string,\n) {\n return createAction(actionType, (payload: T) => ({ payload }));\n}\n","export function isTruthy(value: unknown): boolean {\n return !!value;\n}\n\nexport function isFalsy(value: unknown): boolean {\n return !value;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndModify<ENTITY extends { id?: IdType }>(\n data: ENTITY[],\n lookupId: IdType,\n modificationLogic: (matchingRecord: ENTITY) => void,\n): ENTITY[] {\n return [...data.map((m) => (m.id === lookupId ? applyChanges(m, modificationLogic) : m))];\n}\n\nfunction applyChanges<ENTITY>(record: ENTITY, modificationLogic: (matchingRecord: ENTITY) => void): ENTITY {\n const spreadRecord = { ...record };\n modificationLogic(spreadRecord);\n return spreadRecord;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndMerge<ENTITY extends { id?: IdType }, COLLECTION_ENTITY extends { id?: IdType }>(\n record: ENTITY,\n data: COLLECTION_ENTITY[],\n): ENTITY {\n return {\n ...data.find((f) => f.id === record.id),\n ...record,\n };\n}\n","import { findAndMerge } from './find-and-merge';\nimport { IdType } from 'imng-nrsrx-client-utils';\n/**\n * Spreads the objects in the dataset1, with a matching id object from the dataset2.\n * @param dataset1 The original dataset, these are the records you can expect to get back.\n * @param dataset2 This dataset will be used to augment the individuals records in dataSet1, records will be matched based on 'id'.\n * @returns dataset1\n */\nexport function matchAndSpread<ENTITY1 extends { id?: IdType }, ENTITY2 extends { id?: IdType }>(\n dataset1: ENTITY1[],\n dataset2: ENTITY2[],\n): ENTITY1[] {\n return dataset1.map((d1) => findAndMerge(d1, dataset2));\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function removeById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): { data: T[]; total: number; } | Array<T> | null {\n if (Array.isArray(source)) {\n const result = source;\n return result?.filter((f) => f.id !== id);\n } else if (source) {\n const data = source.data?.filter((f) => f.id !== id);\n return {\n total: source.total + (data?.length - source.data?.length) || 0,\n data,\n };\n }\n return null;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n private readonly _subscriptions: (Subscription | undefined)[];\n\n public constructor(...items: Subscription[]) {\n this._subscriptions = items;\n }\n public get length(): number {\n return this._subscriptions.length;\n }\n\n public push(...items: (Subscription | undefined)[]): void {\n this._subscriptions.push(...items.filter((t) => t));\n }\n public forEach(\n callbackfn: (\n value: Subscription,\n index: number,\n array: Subscription[]\n ) => void,\n thisArg?: unknown\n ): void {\n this._subscriptions\n .map((t) => t as Subscription)\n .forEach(callbackfn, thisArg);\n }\n\n public unsubscribeAll(): void {\n while (this._subscriptions.length > 0) {\n const val = this._subscriptions.pop();\n val?.unsubscribe();\n }\n }\n}\n","import { Action } from '@ngrx/store';\nimport { catchError, of, OperatorFunction } from 'rxjs';\nimport { createPayloadAction } from './payload';\n\nexport const effectError = createPayloadAction<{ action: Action, error: Error; }>(\n '[IMNG] Error Occured');\n\nexport function handleEffectError(action: Action): OperatorFunction<Action, Action> {\n return catchError((error) => of(effectError({ action, error })));;\n} \n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function getById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): T | undefined {\n if (Array.isArray(source)) {\n return source.find((f) => f.id === id);\n }\n return source.data?.find((f) => f.id === id);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imng-ngrx-utils.mjs","sources":["../../../../libs/imng-ngrx-utils/src/lib/payload.ts","../../../../libs/imng-ngrx-utils/src/lib/isTruthy.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-modify.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-merge.ts","../../../../libs/imng-ngrx-utils/src/lib/match-and-spread.ts","../../../../libs/imng-ngrx-utils/src/lib/remove-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/subscriptions.ts","../../../../libs/imng-ngrx-utils/src/lib/error-handlers.ts","../../../../libs/imng-ngrx-utils/src/lib/get-by-id.ts","../../../../libs/imng-ngrx-utils/src/imng-ngrx-utils.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\n\nexport interface Payload<T> {\n payload: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createPayloadAction<T>(\n actionType: string,\n) {\n return createAction(actionType, (payload: T) => ({ payload }));\n}\n","export function isTruthy(value: unknown): boolean {\n return !!value;\n}\n\nexport function isFalsy(value: unknown): boolean {\n return !value;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndModify<ENTITY extends { id?: IdType }>(\n data: ENTITY[],\n lookupId: IdType,\n modificationLogic: (matchingRecord: ENTITY) => void,\n): ENTITY[] {\n return [...data.map((m) => (m.id === lookupId ? applyChanges(m, modificationLogic) : m))];\n}\n\nfunction applyChanges<ENTITY>(record: ENTITY, modificationLogic: (matchingRecord: ENTITY) => void): ENTITY {\n const spreadRecord = { ...record };\n modificationLogic(spreadRecord);\n return spreadRecord;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndMerge<ENTITY extends { id?: IdType }, COLLECTION_ENTITY extends { id?: IdType }>(\n record: ENTITY,\n data: COLLECTION_ENTITY[],\n): ENTITY {\n return {\n ...data.find((f) => f.id === record.id),\n ...record,\n };\n}\n","import { findAndMerge } from './find-and-merge';\nimport { IdType } from 'imng-nrsrx-client-utils';\n/**\n * Spreads the objects in the dataset1, with a matching id object from the dataset2.\n * @param dataset1 The original dataset, these are the records you can expect to get back.\n * @param dataset2 This dataset will be used to augment the individuals records in dataSet1, records will be matched based on 'id'.\n * @returns dataset1\n */\nexport function matchAndSpread<ENTITY1 extends { id?: IdType }, ENTITY2 extends { id?: IdType }>(\n dataset1: ENTITY1[],\n dataset2: ENTITY2[],\n): ENTITY1[] {\n return dataset1.map((d1) => findAndMerge(d1, dataset2));\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function removeById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): { data: T[]; total: number; } | Array<T> | null {\n if (Array.isArray(source)) {\n const result = source;\n return result?.filter((f) => f.id !== id);\n } else if (source) {\n const data = source.data?.filter((f) => f.id !== id);\n return {\n total: source.total + (data?.length - source.data?.length) || 0,\n data,\n };\n }\n return null;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n private readonly _subscriptions: (Subscription | undefined)[];\n\n public constructor(...items: Subscription[]) {\n this._subscriptions = items;\n }\n public get length(): number {\n return this._subscriptions.length;\n }\n\n public push(...items: (Subscription | undefined)[]): void {\n this._subscriptions.push(...items.filter((t) => t));\n }\n public forEach(\n callbackfn: (\n value: Subscription,\n index: number,\n array: Subscription[]\n ) => void,\n thisArg?: unknown\n ): void {\n this._subscriptions\n .map((t) => t as Subscription)\n .forEach(callbackfn, thisArg);\n }\n\n public unsubscribeAll(): void {\n while (this._subscriptions.length > 0) {\n const val = this._subscriptions.pop();\n val?.unsubscribe();\n }\n }\n}\n","import { Action } from '@ngrx/store';\nimport { catchError, of, OperatorFunction } from 'rxjs';\nimport { createPayloadAction } from './payload';\n\nexport const imngEffectError = createPayloadAction<{ action: Action, error: Error; }>(\n '[IMNG] Error Occured');\n\n/**\n * Will handle effect error and dispatch an imngEffectError action\n * @param action \n * @returns \n */\nexport function handleEffectError(action: Action): OperatorFunction<Action, Action> {\n return catchError((error) => of(imngEffectError({ action, error })));\n}\n\nexport function imngEffectErrorReducer<T extends { loading: boolean, error: unknown; }>(\n state: T,\n effectError: { payload: { error: Error; }; })\n : T {\n return ({\n ...state,\n loading: false,\n error: effectError.payload.error\n });\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function getById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): T | undefined {\n if (Array.isArray(source)) {\n return source.find((f) => f.id === id);\n }\n return source.data?.find((f) => f.id === id);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -77,10 +77,21 @@ class Subscriptions {
77
77
  }
78
78
  }
79
79
 
80
- const effectError = createPayloadAction('[IMNG] Error Occured');
80
+ const imngEffectError = createPayloadAction('[IMNG] Error Occured');
81
+ /**
82
+ * Will handle effect error and dispatch an imngEffectError action
83
+ * @param action
84
+ * @returns
85
+ */
81
86
  function handleEffectError(action) {
82
- return catchError((error) => of(effectError({ action, error })));
83
- ;
87
+ return catchError((error) => of(imngEffectError({ action, error })));
88
+ }
89
+ function imngEffectErrorReducer(state, effectError) {
90
+ return ({
91
+ ...state,
92
+ loading: false,
93
+ error: effectError.payload.error
94
+ });
84
95
  }
85
96
 
86
97
  function getById(source, id) {
@@ -94,5 +105,5 @@ function getById(source, id) {
94
105
  * Generated bundle index. Do not edit.
95
106
  */
96
107
 
97
- export { Subscriptions, createPayloadAction, effectError, findAndMerge, findAndModify, getById, handleEffectError, isFalsy, isTruthy, matchAndSpread, removeById };
108
+ export { Subscriptions, createPayloadAction, findAndMerge, findAndModify, getById, handleEffectError, imngEffectError, imngEffectErrorReducer, isFalsy, isTruthy, matchAndSpread, removeById };
98
109
  //# sourceMappingURL=imng-ngrx-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"imng-ngrx-utils.mjs","sources":["../../../../libs/imng-ngrx-utils/src/lib/payload.ts","../../../../libs/imng-ngrx-utils/src/lib/isTruthy.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-modify.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-merge.ts","../../../../libs/imng-ngrx-utils/src/lib/match-and-spread.ts","../../../../libs/imng-ngrx-utils/src/lib/remove-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/subscriptions.ts","../../../../libs/imng-ngrx-utils/src/lib/error-handler.ts","../../../../libs/imng-ngrx-utils/src/lib/get-by-id.ts","../../../../libs/imng-ngrx-utils/src/imng-ngrx-utils.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\n\nexport interface Payload<T> {\n payload: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createPayloadAction<T>(\n actionType: string,\n) {\n return createAction(actionType, (payload: T) => ({ payload }));\n}\n","export function isTruthy(value: unknown): boolean {\n return !!value;\n}\n\nexport function isFalsy(value: unknown): boolean {\n return !value;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndModify<ENTITY extends { id?: IdType }>(\n data: ENTITY[],\n lookupId: IdType,\n modificationLogic: (matchingRecord: ENTITY) => void,\n): ENTITY[] {\n return [...data.map((m) => (m.id === lookupId ? applyChanges(m, modificationLogic) : m))];\n}\n\nfunction applyChanges<ENTITY>(record: ENTITY, modificationLogic: (matchingRecord: ENTITY) => void): ENTITY {\n const spreadRecord = { ...record };\n modificationLogic(spreadRecord);\n return spreadRecord;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndMerge<ENTITY extends { id?: IdType }, COLLECTION_ENTITY extends { id?: IdType }>(\n record: ENTITY,\n data: COLLECTION_ENTITY[],\n): ENTITY {\n return {\n ...data.find((f) => f.id === record.id),\n ...record,\n };\n}\n","import { findAndMerge } from './find-and-merge';\nimport { IdType } from 'imng-nrsrx-client-utils';\n/**\n * Spreads the objects in the dataset1, with a matching id object from the dataset2.\n * @param dataset1 The original dataset, these are the records you can expect to get back.\n * @param dataset2 This dataset will be used to augment the individuals records in dataSet1, records will be matched based on 'id'.\n * @returns dataset1\n */\nexport function matchAndSpread<ENTITY1 extends { id?: IdType }, ENTITY2 extends { id?: IdType }>(\n dataset1: ENTITY1[],\n dataset2: ENTITY2[],\n): ENTITY1[] {\n return dataset1.map((d1) => findAndMerge(d1, dataset2));\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function removeById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): { data: T[]; total: number; } | Array<T> | null {\n if (Array.isArray(source)) {\n const result = source;\n return result?.filter((f) => f.id !== id);\n } else if (source) {\n const data = source.data?.filter((f) => f.id !== id);\n return {\n total: source.total + (data?.length - source.data?.length) || 0,\n data,\n };\n }\n return null;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n private readonly _subscriptions: (Subscription | undefined)[];\n\n public constructor(...items: Subscription[]) {\n this._subscriptions = items;\n }\n public get length(): number {\n return this._subscriptions.length;\n }\n\n public push(...items: (Subscription | undefined)[]): void {\n this._subscriptions.push(...items.filter((t) => t));\n }\n public forEach(\n callbackfn: (\n value: Subscription,\n index: number,\n array: Subscription[]\n ) => void,\n thisArg?: unknown\n ): void {\n this._subscriptions\n .map((t) => t as Subscription)\n .forEach(callbackfn, thisArg);\n }\n\n public unsubscribeAll(): void {\n while (this._subscriptions.length > 0) {\n const val = this._subscriptions.pop();\n val?.unsubscribe();\n }\n }\n}\n","import { Action } from '@ngrx/store';\nimport { catchError, of, OperatorFunction } from 'rxjs';\nimport { createPayloadAction } from './payload';\n\nexport const effectError = createPayloadAction<{ action: Action, error: Error; }>(\n '[IMNG] Error Occured');\n\nexport function handleEffectError(action: Action): OperatorFunction<Action, Action> {\n return catchError((error) => of(effectError({ action, error })));;\n} \n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function getById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): T | undefined {\n if (Array.isArray(source)) {\n return source.find((f) => f.id === id);\n }\n return source.data?.find((f) => f.id === id);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imng-ngrx-utils.mjs","sources":["../../../../libs/imng-ngrx-utils/src/lib/payload.ts","../../../../libs/imng-ngrx-utils/src/lib/isTruthy.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-modify.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-merge.ts","../../../../libs/imng-ngrx-utils/src/lib/match-and-spread.ts","../../../../libs/imng-ngrx-utils/src/lib/remove-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/subscriptions.ts","../../../../libs/imng-ngrx-utils/src/lib/error-handlers.ts","../../../../libs/imng-ngrx-utils/src/lib/get-by-id.ts","../../../../libs/imng-ngrx-utils/src/imng-ngrx-utils.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\n\nexport interface Payload<T> {\n payload: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createPayloadAction<T>(\n actionType: string,\n) {\n return createAction(actionType, (payload: T) => ({ payload }));\n}\n","export function isTruthy(value: unknown): boolean {\n return !!value;\n}\n\nexport function isFalsy(value: unknown): boolean {\n return !value;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndModify<ENTITY extends { id?: IdType }>(\n data: ENTITY[],\n lookupId: IdType,\n modificationLogic: (matchingRecord: ENTITY) => void,\n): ENTITY[] {\n return [...data.map((m) => (m.id === lookupId ? applyChanges(m, modificationLogic) : m))];\n}\n\nfunction applyChanges<ENTITY>(record: ENTITY, modificationLogic: (matchingRecord: ENTITY) => void): ENTITY {\n const spreadRecord = { ...record };\n modificationLogic(spreadRecord);\n return spreadRecord;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndMerge<ENTITY extends { id?: IdType }, COLLECTION_ENTITY extends { id?: IdType }>(\n record: ENTITY,\n data: COLLECTION_ENTITY[],\n): ENTITY {\n return {\n ...data.find((f) => f.id === record.id),\n ...record,\n };\n}\n","import { findAndMerge } from './find-and-merge';\nimport { IdType } from 'imng-nrsrx-client-utils';\n/**\n * Spreads the objects in the dataset1, with a matching id object from the dataset2.\n * @param dataset1 The original dataset, these are the records you can expect to get back.\n * @param dataset2 This dataset will be used to augment the individuals records in dataSet1, records will be matched based on 'id'.\n * @returns dataset1\n */\nexport function matchAndSpread<ENTITY1 extends { id?: IdType }, ENTITY2 extends { id?: IdType }>(\n dataset1: ENTITY1[],\n dataset2: ENTITY2[],\n): ENTITY1[] {\n return dataset1.map((d1) => findAndMerge(d1, dataset2));\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function removeById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): { data: T[]; total: number; } | Array<T> | null {\n if (Array.isArray(source)) {\n const result = source;\n return result?.filter((f) => f.id !== id);\n } else if (source) {\n const data = source.data?.filter((f) => f.id !== id);\n return {\n total: source.total + (data?.length - source.data?.length) || 0,\n data,\n };\n }\n return null;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n private readonly _subscriptions: (Subscription | undefined)[];\n\n public constructor(...items: Subscription[]) {\n this._subscriptions = items;\n }\n public get length(): number {\n return this._subscriptions.length;\n }\n\n public push(...items: (Subscription | undefined)[]): void {\n this._subscriptions.push(...items.filter((t) => t));\n }\n public forEach(\n callbackfn: (\n value: Subscription,\n index: number,\n array: Subscription[]\n ) => void,\n thisArg?: unknown\n ): void {\n this._subscriptions\n .map((t) => t as Subscription)\n .forEach(callbackfn, thisArg);\n }\n\n public unsubscribeAll(): void {\n while (this._subscriptions.length > 0) {\n const val = this._subscriptions.pop();\n val?.unsubscribe();\n }\n }\n}\n","import { Action } from '@ngrx/store';\nimport { catchError, of, OperatorFunction } from 'rxjs';\nimport { createPayloadAction } from './payload';\n\nexport const imngEffectError = createPayloadAction<{ action: Action, error: Error; }>(\n '[IMNG] Error Occured');\n\n/**\n * Will handle effect error and dispatch an imngEffectError action\n * @param action \n * @returns \n */\nexport function handleEffectError(action: Action): OperatorFunction<Action, Action> {\n return catchError((error) => of(imngEffectError({ action, error })));\n}\n\nexport function imngEffectErrorReducer<T extends { loading: boolean, error: unknown; }>(\n state: T,\n effectError: { payload: { error: Error; }; })\n : T {\n return ({\n ...state,\n loading: false,\n error: effectError.payload.error\n });\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function getById<T extends { id?: IdType; }>(\n source: { data: T[]; total: number; } | Array<T>,\n id: IdType,\n): T | undefined {\n if (Array.isArray(source)) {\n return source.find((f) => f.id === id);\n }\n return source.data?.find((f) => f.id === id);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -6,5 +6,5 @@ export { matchAndSpread } from './lib/match-and-spread';
6
6
  export { removeById } from './lib/remove-by-id';
7
7
  export { Subscriptions } from './lib/subscriptions';
8
8
  export { Subscribable } from './lib/subscribable';
9
- export * from './lib/error-handler';
9
+ export * from './lib/error-handlers';
10
10
  export * from './lib/get-by-id';
@@ -1,6 +1,6 @@
1
1
  import { Action } from '@ngrx/store';
2
2
  import { OperatorFunction } from 'rxjs';
3
- export declare const effectError: import("@ngrx/store").FunctionWithParametersType<[payload: {
3
+ export declare const imngEffectError: import("@ngrx/store").FunctionWithParametersType<[payload: {
4
4
  action: Action;
5
5
  error: Error;
6
6
  }], {
@@ -9,4 +9,17 @@ export declare const effectError: import("@ngrx/store").FunctionWithParametersTy
9
9
  error: Error;
10
10
  };
11
11
  } & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/store/src/models").TypedAction<string>;
12
+ /**
13
+ * Will handle effect error and dispatch an imngEffectError action
14
+ * @param action
15
+ * @returns
16
+ */
12
17
  export declare function handleEffectError(action: Action): OperatorFunction<Action, Action>;
18
+ export declare function imngEffectErrorReducer<T extends {
19
+ loading: boolean;
20
+ error: unknown;
21
+ }>(state: T, effectError: {
22
+ payload: {
23
+ error: Error;
24
+ };
25
+ }): T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imng-ngrx-utils",
3
- "version": "4.110.8",
3
+ "version": "4.112.1",
4
4
  "keywords": [
5
5
  "Angular",
6
6
  "NGRX"
@@ -1,8 +0,0 @@
1
- import { catchError, of } from 'rxjs';
2
- import { createPayloadAction } from './payload';
3
- export const effectError = createPayloadAction('[IMNG] Error Occured');
4
- export function handleEffectError(action) {
5
- return catchError((error) => of(effectError({ action, error })));
6
- ;
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvaW1uZy1uZ3J4LXV0aWxzL3NyYy9saWIvZXJyb3ItaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBb0IsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FDNUMsc0JBQXNCLENBQUMsQ0FBQztBQUUxQixNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYztJQUM5QyxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlsb2FkQWN0aW9uIH0gZnJvbSAnLi9wYXlsb2FkJztcblxuZXhwb3J0IGNvbnN0IGVmZmVjdEVycm9yID0gY3JlYXRlUGF5bG9hZEFjdGlvbjx7IGFjdGlvbjogQWN0aW9uLCBlcnJvcjogRXJyb3I7IH0+KFxuICAnW0lNTkddIEVycm9yIE9jY3VyZWQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUVmZmVjdEVycm9yKGFjdGlvbjogQWN0aW9uKTogT3BlcmF0b3JGdW5jdGlvbjxBY3Rpb24sIEFjdGlvbj4ge1xuICByZXR1cm4gY2F0Y2hFcnJvcigoZXJyb3IpID0+IG9mKGVmZmVjdEVycm9yKHsgYWN0aW9uLCBlcnJvciB9KSkpOztcbn0gXG4iXX0=