UNPKG

structured-elements

Version:

A TypeScript package for modelling and validating data

62 lines (56 loc) 1.34 kB
import { buildElementPath } from "@/build/elementPath" import type { StructuredElements } from "@" export const buildFailureReport = < Registry extends StructuredElements.BaseRegistry, Element, >({ api, element, expectation, failures, path, }: { api: StructuredElements.API<Registry> element: unknown expectation: StructuredElements.Expectation<Registry, Element> failures: StructuredElements.Failure[] path: string }): StructuredElements.FailureReport[] => { return failures.flatMap((failure) => { if (failure.failures) { return buildFailureReport({ api, element, expectation, failures: failure.failures, path: buildElementPath({ key: failure.key, path }), }) } if (typeof failure.reason === `string`) { return { expectation, failure, path, reason: failure.reason, value: failure.element, } } if (api.debugEnabled()) { api.privateFunctions.debug( `buildFailureReport: failure.failures is blank but reason is not a string`, { element, expectation, failure, path, }, ) } return { expectation, path, reason: JSON.stringify(failure.reason), value: failure.element, } }) }