( issue: Issue, path: ReadonlyArray<PropertyKey>, leafHook: LeafHook, checkHook: CheckHook )
| 1053 | } |
| 1054 | |
| 1055 | function toDefaultIssues( |
| 1056 | issue: Issue, |
| 1057 | path: ReadonlyArray<PropertyKey>, |
| 1058 | leafHook: LeafHook, |
| 1059 | checkHook: CheckHook |
| 1060 | ): Array<DefaultIssue> { |
| 1061 | switch (issue._tag) { |
| 1062 | case "Filter": { |
| 1063 | const message = checkHook(issue) |
| 1064 | if (message !== undefined) { |
| 1065 | return [{ path, message }] |
| 1066 | } |
| 1067 | if (issue.issue._tag !== "InvalidValue") { |
| 1068 | return toDefaultIssues(issue.issue, path, leafHook, checkHook) |
| 1069 | } |
| 1070 | const expected = findExpected(issue.issue) |
| 1071 | return [{ |
| 1072 | path, |
| 1073 | message: expected === undefined |
| 1074 | ? getExpectedMessage(formatCheck(issue.filter), issue) |
| 1075 | : getExpectedMessage(expected, issue.issue) |
| 1076 | }] |
| 1077 | } |
| 1078 | case "Encoding": |
| 1079 | return toDefaultIssues(issue.issue, path, leafHook, checkHook) |
| 1080 | case "Pointer": |
| 1081 | return toDefaultIssues(issue.issue, [...path, ...issue.path], leafHook, checkHook) |
| 1082 | case "Composite": |
| 1083 | return issue.issues.flatMap((issue) => toDefaultIssues(issue, path, leafHook, checkHook)) |
| 1084 | case "AnyOf": { |
| 1085 | if (issue.issues.length === 0) { |
| 1086 | return [{ |
| 1087 | path, |
| 1088 | message: findMessage(issue) ?? getExpectedMessage(InternalAnnotations.getExpected(issue.ast), issue) |
| 1089 | }] |
| 1090 | } |
| 1091 | return issue.issues.flatMap((issue) => toDefaultIssues(issue, path, leafHook, checkHook)) |
| 1092 | } |
| 1093 | default: |
| 1094 | return [{ path, message: leafHook(issue) }] |
| 1095 | } |
| 1096 | } |
| 1097 | |
| 1098 | function formatCheck<T>(check: SchemaAST.Check<T>): string { |
| 1099 | const expected = check.annotations?.expected |
no test coverage detected