@@ -2,22 +2,34 @@ import { readFileSync } from "fs";
2
2
import { Component , RendererComponent } from "typedoc/dist/lib/output/components" ;
3
3
import { RendererEvent } from "typedoc/dist/lib/output/events" ;
4
4
5
+ import { getCurrentClientDirectory } from "./utils" ;
6
+
5
7
/**
6
8
* Correct the package name in the navigator.
7
9
*/
8
10
@Component ( { name : "SdkClientRenameProject" } )
9
11
export class SdkClientRenameProjectPlugin extends RendererComponent {
12
+ private projectName : string | undefined = undefined ;
10
13
initialize ( ) {
11
14
this . listenTo ( this . owner , {
12
15
[ RendererEvent . BEGIN ] : this . onRenderedBegin ,
13
16
} ) ;
14
17
}
15
18
16
19
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 ;
22
34
}
23
35
}
0 commit comments