import type { DeclarationReflection, SignatureReflection, TypeDocOptions, } from 'typedoc'; import { loadProject, selectApiMethodSignatures, selectApiModules, } from '../../../scripts/apidoc/typedoc'; import { mapByName } from '../../../scripts/apidoc/utils'; /** * Returns a record with the (Module-Name -> (Method-Name -> Method-Signature)) for the project. */ export function loadProjectModules( options?: Partial, includeTestModules = false ): Record< string, [DeclarationReflection, Record] > { const [, project] = loadProject(options); const modules = selectApiModules(project, includeTestModules); return mapByName(modules, (m) => [m, selectApiMethodSignatures(m)]); } /** * Loads the example methods using TypeDoc. */ export function loadExampleMethods(): Record { return loadProjectModules( { entryPoints: ['test/scripts/apidoc/signature.example.ts'], tsconfig: 'test/scripts/apidoc/tsconfig.json', }, true )['SignatureTest'][1]; } /** * Loads the example modules using TypeDoc. */ export function loadExampleModules(): Record { const modules = loadProjectModules( { entryPoints: ['test/scripts/apidoc/module.example.ts'], tsconfig: 'test/scripts/apidoc/tsconfig.json', }, true ); const result: Record = {}; for (const key in modules) { result[key] = modules[key][0]; } return result; }