import type { JSONPointerMap } from '../types' import type { JSONPointer } from 'immutable-json-patch' import { startsWithJSONPointer } from 'immutable-json-patch' // TODO: write unit tests export function filterMapOrUndefined( map: JSONPointerMap | undefined, filter: (pointer: JSONPointer, value: T) => boolean ): JSONPointerMap | undefined { if (!map) { return undefined } const filteredMap = {} for (const p of Object.keys(map)) { if (filter(p, map[p])) { filteredMap[p] = map[p] } } return Object.keys(filteredMap).length > 0 ? filteredMap : undefined } // TODO: write unit tests export function filterPointerOrUndefined( map: JSONPointerMap | undefined, pointer: JSONPointer ): JSONPointerMap | undefined { return filterMapOrUndefined(map, (p) => startsWithJSONPointer(p, pointer)) }