Skip to content

Commit c888af2

Browse files
authored
docs(clients): descriptive client title (#2327)
1 parent 7c7fb7b commit c888af2

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

packages/client-documentation-generator/src/sdk-client-rename-project.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,34 @@ import { readFileSync } from "fs";
22
import { Component, RendererComponent } from "typedoc/dist/lib/output/components";
33
import { RendererEvent } from "typedoc/dist/lib/output/events";
44

5+
import { getCurrentClientDirectory } from "./utils";
6+
57
/**
68
* Correct the package name in the navigator.
79
*/
810
@Component({ name: "SdkClientRenameProject" })
911
export class SdkClientRenameProjectPlugin extends RendererComponent {
12+
private projectName: string | undefined = undefined;
1013
initialize() {
1114
this.listenTo(this.owner, {
1215
[RendererEvent.BEGIN]: this.onRenderedBegin,
1316
});
1417
}
1518

1619
onRenderedBegin(event: RendererEvent) {
17-
const { fullFileName } = event.project.files.filter((sourceFile) =>
18-
sourceFile.fileName.endsWith("/package.json")
19-
)[0];
20-
const { name } = JSON.parse(readFileSync(fullFileName).toString());
21-
event.project.name = name;
20+
if (!this.projectName) {
21+
const clientDirectory = getCurrentClientDirectory(event);
22+
const metadataDir = clientDirectory.files.filter((sourceFile) =>
23+
sourceFile.fileName.endsWith("/package.json")
24+
)?.[0]?.fullFileName;
25+
const { name } = metadataDir || JSON.parse(readFileSync(metadataDir).toString());
26+
const serviceIdReflection = clientDirectory.files
27+
?.filter((sourceFile) => sourceFile.fileName.endsWith("/runtimeConfig.shared.ts"))?.[0]
28+
.reflections.filter((reflection) => reflection.name === "serviceId")?.[0];
29+
this.projectName = serviceIdReflection /* serviceIdReflection.defaultValue looks like '"S3"' */
30+
? `${(serviceIdReflection as any).defaultValue.match(/"(.*)"/)[1]} Client - AWS SDK for JavaScript v3`
31+
: name;
32+
}
33+
event.project.name = this.projectName;
2234
}
2335
}

packages/client-documentation-generator/src/sdk-client-toc-plugin.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import { Component, RendererComponent } from "typedoc/dist/lib/output/components
1010
import { PageEvent } from "typedoc/dist/lib/output/events";
1111
import { NavigationItem } from "typedoc/dist/lib/output/models/NavigationItem";
1212

13+
import { getCurrentClientDirectory } from "./utils";
14+
1315
/**
1416
* Group the ToC for easier observability.
1517
*/
@@ -164,10 +166,7 @@ export class SdkClientTocPlugin extends RendererComponent {
164166
while (projectModel.constructor.name !== "ProjectReflection" && !projectModel.kindOf(ReflectionKind.SomeModule)) {
165167
projectModel = projectModel.parent as ProjectReflection;
166168
}
167-
const clientsDirectory = (projectModel as ProjectReflection).directory.directories["clients"].directories;
168-
const dir = Object.values(clientsDirectory).filter((directory) =>
169-
directory?.files.find((file) => file.name.endsWith("Client.ts"))
170-
)[0];
171-
return dirname(dir?.files.find((file) => file.name.endsWith("Client.ts")).fullFileName);
169+
const clientsDirectory = getCurrentClientDirectory({ project: projectModel as ProjectReflection });
170+
return dirname(clientsDirectory?.files.find((file) => file.name.endsWith("Client.ts")).fullFileName);
172171
}
173172
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { ProjectReflection, SourceDirectory } from "typedoc/dist/lib/models";
2+
3+
export const getCurrentClientDirectory = (event: { project: ProjectReflection }): SourceDirectory => {
4+
const clientsDirectory = event.project.directory.directories["clients"].directories;
5+
return Object.values(clientsDirectory).filter((directory) =>
6+
directory?.files.find((file) => file.name.endsWith("Client.ts"))
7+
)[0];
8+
};

0 commit comments

Comments
 (0)