MCPcopy Create free account
hub / github.com/Effect-TS/effect / appendExampleImportDiagnostics

Function appendExampleImportDiagnostics

packages/tools/jsdocs/src/Jsdocs.ts:2584–2625  ·  view source on GitHub ↗
(files: ReadonlyArray<JSDocModelFile>)

Source from the content-addressed store, hash-verified

2582}
2583
2584function 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
2627function uniqueModelDiagnostics(
2628 diagnostics: ReadonlyArray<JSDocModelDiagnostic>

Callers 1

extractJSDocsSyncFunction · 0.85

Calls 7

checkModuleExamplesFunction · 0.85
checkExamplesFunction · 0.85
checkMembersFunction · 0.85
uniqueModelDiagnosticsFunction · 0.85
checkNamespacesFunction · 0.70
mapMethod · 0.45

Tested by

no test coverage detected