Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | 59x 59x 59x 59x 59x 59x 59x 59x 598x 2368x 594x 594x 1774x 594x 594x 594x 598x | import { FactoryProvider, Optional } from '@angular/core';
import { Actions } from '@ngrx/effects';
import { Action, ActionReducer, Store } from '@ngrx/store';
import { CoreState } from 'ish-core/store/core/core-store';
/* eslint-disable no-console */
export const containsActionWithType = (type: string) => (actions: Action[]) =>
!!actions.filter(a => a.type === type).length;
/**
* meta reducer for logging actions to the console
*/
export function logActionsMeta<T = object>(reducer: ActionReducer<T>): ActionReducer<T> {
return (state: T, action: Action) => {
Iif (action.type !== '@ngrx/store-devtools/recompute') {
console.log('action', action);
}
return reducer(state, action);
};
}
/**
* meta reducer for logging the state after every modification to the console
*/
export function logStateMeta<T = object>(reducer: ActionReducer<T>): ActionReducer<T> {
return (state: T, action: Action) => {
const newState = reducer(state, action);
console.log('state', newState);
return newState;
};
}
/**
* Pseudo class for enriching ngrx {@link Store} with additional properties for testing.
*/
export abstract class StoreWithSnapshots {
/**
* Provides access to a synchronous snapshot of the state.
*/
state: CoreState;
abstract dispatch(action: Action): void;
/**
* Retrieve a list of actions fired since the last reset.
*
* @param regex optional filter
*/
abstract actionsArray(regex?: RegExp): Action[];
/**
* Reset actions history.
*/
abstract reset(): void;
}
/**
* Provider wrapping ngrx {@link Store} for testing.
* use it in combination with {@link StoreWithSnapshots}.
*/
export function provideStoreSnapshots(): FactoryProvider {
const actionList: Action[] = [];
function saveStore(store: StoreWithSnapshots & Store, actions: Actions) {
store.subscribe(state => (store.state = state as CoreState));
if (actions) {
actions.subscribe(action => {
actionList.push(action);
});
}
store.actionsArray = (regex = /.*/) => actionList.filter(action => regex.test(action.type));
store.reset = () => actionList.splice(0, actionList.length);
return store;
}
return {
provide: StoreWithSnapshots,
useFactory: saveStore,
deps: [Store, [new Optional(), Actions]],
};
}
|