diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aa73d8..b918b89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# 1.2.5 (2020-06-18) + +## Improvement +- Add getView selector [ebrehault] + +## Bug fix +- Clean up implicit any [ebrehault] + # 1.2.4 (2020-06-08) - No implicit return diff --git a/projects/ngx-state-traverser/package.json b/projects/ngx-state-traverser/package.json index 0c896e8..15a8aff 100644 --- a/projects/ngx-state-traverser/package.json +++ b/projects/ngx-state-traverser/package.json @@ -1,6 +1,6 @@ { "name": "@guillotinaweb/ngx-state-traverser", - "version": "1.2.4", + "version": "1.2.5", "license": "MIT", "author": { "name": "Eric Brehault", diff --git a/projects/ngx-state-traverser/src/lib/reducer.ts b/projects/ngx-state-traverser/src/lib/reducer.ts index 051f1fc..ec4fbb1 100644 --- a/projects/ngx-state-traverser/src/lib/reducer.ts +++ b/projects/ngx-state-traverser/src/lib/reducer.ts @@ -8,8 +8,8 @@ import { TraverserActions } from './actions'; * @author inspired by [jhildenbiddle](https://stackoverflow.com/a/48218209). * @source https://gist.github.com/ahtcx/0cd94e62691f539160b32ecda18af3d6#gistcomment-2930530 */ -export function deepMerge(target, source) { - const isObject = (obj) => obj && typeof obj === 'object'; +export function deepMerge(target: any, source: any) { + const isObject = (obj: any) => obj && typeof obj === 'object'; if (!isObject(target) || !isObject(source)) { return source; @@ -67,7 +67,7 @@ export function reducer(state = initialState, action: TraverserActions.Actions): } } case TraverserActions.Types.ResolveMany: { - const collection = action.payload.reduce((all, current) => { + const collection = action.payload.reduce((all: {[path: string]: any}, current) => { let path = current.path; if (!!path && path.endsWith('/')) { path = path.slice(0, -1); @@ -86,7 +86,7 @@ export function reducer(state = initialState, action: TraverserActions.Actions): case TraverserActions.Types.CleanTraverserResources: { const exactPathes = action.payload.filter(path => !path.endsWith('*')); const startPathes = action.payload.filter(path => path.endsWith('*')).map(path => path.slice(0, -1)); - const collection = Object.entries(state.collection).reduce((all, [path, obj]) => { + const collection = Object.entries(state.collection).reduce((all: {[path: string]: any}, [path, obj]) => { if (!exactPathes.includes(path) && !startPathes.some(p => path.startsWith(p))) { all[path] = obj; } diff --git a/projects/ngx-state-traverser/src/lib/selector.ts b/projects/ngx-state-traverser/src/lib/selector.ts index 6054cfb..74db90e 100644 --- a/projects/ngx-state-traverser/src/lib/selector.ts +++ b/projects/ngx-state-traverser/src/lib/selector.ts @@ -72,6 +72,11 @@ export namespace TraverserSelectors { (state: TraversingState): string => state.target.prefixedPath ); + export const getView = createSelector( + traversalSelector, + (state: TraversingState): string => state.target.view + ); + export const isForbidden = createSelector( traversalSelector, (state: TraversingState): boolean => !!state.target.context.isForbidden @@ -133,7 +138,7 @@ export namespace TraverserSelectors { }, [] as string[]); const ancestors: ContextOrMissing[] = ancestorPaths.map(ancestor => state.collection[ancestor] || new Missing(ancestor)); - return ancestors.filter(ancestor => !ancestor['isForbidden']); + return ancestors.filter(ancestor => !(ancestor as any).isForbidden); } );