(files: ReadonlyArray<JSDocModelFile>)
| 2582 | } |
| 2583 | |
| 2584 | function appendExampleImportDiagnostics(files: ReadonlyArray<JSDocModelFile>): ReadonlyArray<JSDocModelFile> { |
| 2585 | const policy = createExampleImportPolicy(files) |
| 2586 | const checkExamples = ( |
| 2587 | examples: ReadonlyArray<ParsedExample>, |
| 2588 | range: readonly [number, number] = [0, 0] as const |
| 2589 | ): ReadonlyArray<JSDocModelDiagnostic> => |
| 2590 | examples.flatMap((example) => validateExampleImports(example.code, policy).map((item) => ({ ...item, range }))) |
| 2591 | const checkModuleExamples = (moduleJSDoc: ParsedModuleJSDoc | undefined): ReadonlyArray<JSDocModelDiagnostic> => { |
| 2592 | if (moduleJSDoc === undefined) return [] |
| 2593 | const block = parseLooseJSDocBlock(moduleJSDoc.raw, [moduleJSDoc.range[0], moduleJSDoc.range[1]]) |
| 2594 | if (block.internal) return [] |
| 2595 | return checkExamples(parseModuleExamples(block).examples, moduleJSDoc.range) |
| 2596 | } |
| 2597 | const checkMembers = (members: ReadonlyArray<ParsedMember>): ReadonlyArray<JSDocModelDiagnostic> => |
| 2598 | members.flatMap((member) => [ |
| 2599 | ...checkExamples(member.examples), |
| 2600 | ...checkMembers(member.members) |
| 2601 | ]) |
| 2602 | const checkNamespaces = (namespaces: ReadonlyArray<ParsedNamespace>): ReadonlyArray<JSDocModelDiagnostic> => |
| 2603 | namespaces.flatMap((namespace) => [ |
| 2604 | ...checkExamples(namespace.examples), |
| 2605 | ...namespace.declarations.flatMap((declaration) => [ |
| 2606 | ...checkExamples(declaration.examples), |
| 2607 | ...checkMembers(declaration.members) |
| 2608 | ]), |
| 2609 | ...checkNamespaces(namespace.namespaces) |
| 2610 | ]) |
| 2611 | return files.map((file) => { |
| 2612 | const diagnostics = [ |
| 2613 | ...file.diagnostics, |
| 2614 | ...checkModuleExamples(file.moduleJSDoc), |
| 2615 | ...file.declarations.flatMap((declaration) => [ |
| 2616 | ...checkExamples(declaration.examples), |
| 2617 | ...checkMembers(declaration.members) |
| 2618 | ]), |
| 2619 | ...checkNamespaces(file.namespaces) |
| 2620 | ] |
| 2621 | return diagnostics.length === file.diagnostics.length |
| 2622 | ? file |
| 2623 | : { ...file, diagnostics: uniqueModelDiagnostics(diagnostics) } |
| 2624 | }) |
| 2625 | } |
| 2626 | |
| 2627 | function uniqueModelDiagnostics( |
| 2628 | diagnostics: ReadonlyArray<JSDocModelDiagnostic> |
no test coverage detected