diff --git a/libs/docs-utils/src/api/role/get-from-ts-doc.ts b/libs/docs-utils/src/api/role/get-from-ts-doc.ts index 308ac1f199..c52c34eae6 100644 --- a/libs/docs-utils/src/api/role/get-from-ts-doc.ts +++ b/libs/docs-utils/src/api/role/get-from-ts-doc.ts @@ -56,6 +56,10 @@ export const daffDocsGetRoleFromTsDoc = (doc: DaffDocsTsDocument): DaffDocsApiRo case DaffDocsApiType.CONST: if (doc.typeChecker.getTypeOfSymbolAtLocation(doc.symbol, doc.variableDeclaration).symbol?.escapedName === 'InjectionToken') { return DaffDocsApiRole.TOKEN; + } else if (doc.name.startsWith('provide')) { + return DaffDocsApiRole.PROVIDER; + } else if (doc.name.endsWith('Reducer')) { + return DaffDocsApiRole.REDUCER; } return DaffDocsApiRole.CONSTANT; diff --git a/tools/dgeni/src/transforms/daffodil-api-package/processors/role.ts b/tools/dgeni/src/transforms/daffodil-api-package/processors/role.ts index 70151ef72d..6ce3bda22e 100644 --- a/tools/dgeni/src/transforms/daffodil-api-package/processors/role.ts +++ b/tools/dgeni/src/transforms/daffodil-api-package/processors/role.ts @@ -2,7 +2,7 @@ import { Document } from 'dgeni'; import { ClassExportDoc } from 'dgeni-packages/typescript/api-doc-types/ClassExportDoc'; import type { ClassLikeExportDoc } from 'dgeni-packages/typescript/api-doc-types/ClassLikeExportDoc'; import type { ConstExportDoc } from 'dgeni-packages/typescript/api-doc-types/ConstExportDoc'; -import type { FunctionExportDoc } from 'dgeni-packages/typescript/api-doc-types/FunctionExportDoc'; +import { FunctionExportDoc } from 'dgeni-packages/typescript/api-doc-types/FunctionExportDoc'; import { MethodMemberDoc } from 'dgeni-packages/typescript/api-doc-types/MethodMemberDoc'; import { ParameterDoc } from 'dgeni-packages/typescript/api-doc-types/ParameterDoc'; import { PropertyMemberDoc } from 'dgeni-packages/typescript/api-doc-types/PropertyMemberDoc'; @@ -337,6 +337,19 @@ export class RoleProcessor implements FilterableProcessor { ], ); + readonly constFuncSerializer = serializeFactory( + [ + 'declaration', + 'docType', + 'overloads', + 'parameterDocs', + 'parameters', + 'symbol', + 'type', + 'typeParameters', + ], + ); + constructor( private markdown: MarkdownCodeProcessor, private inlineTagProcessor: InlineTagProcessor, @@ -449,6 +462,14 @@ export class RoleProcessor implements FilterableProcessor { func(doc: SerializableDoc & IndexableDoc & {parameterDocs: Array} & FunctionExportDoc & DaffDocsApiFunction): SerializableDoc & IndexableDoc & DaffDocsApiFunction { doc.serializer = this.functionSerialize; doc.indexer = this.baseSearchIndexer; + if (!doc.parameterDocs) { + const f = new FunctionExportDoc( + doc.host, + doc.moduleDoc, + (doc).variableDeclaration?.initializer?.symbol || doc.typeChecker.getTypeAtLocation((doc).variableDeclaration.name).getSymbol(), + ); + Object.assign(doc, this.constFuncSerializer(f)); + } if (!doc.type) { const ret = doc.typeChecker.getReturnTypeOfSignature(doc); doc.type = doc.typeChecker.typeToString(ret);