Skip to content

Commit 709bc14

Browse files
committed
feat(codegen): do not pull client versions from packageInfo
To avoid having to @ts-ignore importing packageInfo from package.json, write the version contained in the typescript settings into the UserAgent provider's arguments. This removes the need to postprocess clients after they are generated.
1 parent 980e1a2 commit 709bc14

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

codegen/sdk-codegen/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,17 @@ tasks.register("generate-smithy-build") {
7979
File("smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/package.json.template")
8080
.readText()
8181
).expectObjectNode()
82+
83+
val rootPackageVersion = Node.parse(File("../package.json").readText()).expectObjectNode()
84+
.expectStringMember("version").getValue()
85+
8286
val projectionContents = Node.objectNodeBuilder()
8387
.withMember("imports", Node.fromStrings("${models.getAbsolutePath()}${File.separator}${file.name}"))
8488
.withMember("plugins", Node.objectNode()
8589
.withMember("typescript-codegen", Node.objectNodeBuilder()
8690
.withMember("package", "@aws-sdk/client-" + sdkId.toLowerCase())
8791
// Note that this version is replaced by Lerna when publishing.
88-
.withMember("packageVersion", "3.0.0")
92+
.withMember("packageVersion", rootPackageVersion)
8993
.withMember("packageJson", manifestOverwrites)
9094
.withMember("packageDescription", "AWS SDK for JavaScript "
9195
+ clientName + " Client for Node.js, Browser and React Native")

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddUserAgentDependency.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
7373
writer.addDependency(AwsDependency.AWS_SDK_UTIL_USER_AGENT_NODE.dependency);
7474
writer.addImport("defaultUserAgent", "defaultUserAgent",
7575
AwsDependency.AWS_SDK_UTIL_USER_AGENT_NODE.packageName);
76-
writer.addDefaultImport("packageInfo", "./package.json");
7776
writeDefaultUserAgentProvider(writer, settings, model);
7877
}
7978
);
@@ -83,7 +82,6 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
8382
writer.addDependency(AwsDependency.AWS_SDK_UTIL_USER_AGENT_BROWSER.dependency);
8483
writer.addImport("defaultUserAgent", "defaultUserAgent",
8584
AwsDependency.AWS_SDK_UTIL_USER_AGENT_BROWSER.packageName);
86-
writer.addDefaultImport("packageInfo", "./package.json");
8785
writeDefaultUserAgentProvider(writer, settings, model);
8886
}
8987
);
@@ -96,6 +94,6 @@ private void writeDefaultUserAgentProvider(TypeScriptWriter writer, TypeScriptSe
9694
writer.write("defaultUserAgent({"
9795
// serviceId is optional in defaultUserAgent. serviceId exists only for AWS services
9896
+ (isAwsService(settings, model) ? "serviceId: clientSharedValues.serviceId, " : "")
99-
+ "clientVersion: packageInfo.version})");
97+
+ "clientVersion: $S})", settings.getPackageVersion());
10098
}
10199
}

codegen/smithy-aws-typescript-codegen/src/test/java/software/amazon/smithy/aws/typescript/codegen/AddUserAgentDependencyTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,15 @@ public void awsClient() {
4242

4343
// Check config files
4444
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("defaultUserAgent"));
45-
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("packageInfo.version"));
45+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("clientVersion: \"1.0.0\""));
4646
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("clientSharedValues.serviceId"));
47+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), not(containsString("import packageInfo")));
48+
4749

4850
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("defaultUserAgent"));
49-
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("packageInfo.version"));
51+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("clientVersion: \"1.0.0\""));
5052
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("clientSharedValues.serviceId"));
53+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), not(containsString("import packageInfo")));
5154

5255
// Check the config resolution and middleware plugin
5356
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/NotSameClient.ts").get(), containsString("resolveUserAgentConfig"));
@@ -83,12 +86,14 @@ public void genericClient() {
8386

8487
// Check config files
8588
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("defaultUserAgent"));
86-
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("packageInfo.version"));
89+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), containsString("clientVersion: \"1.0.0\""));
8790
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), not(containsString("ClientSharedValues.serviceId")));
91+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(), not(containsString("import packageInfo")));
8892

8993
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("defaultUserAgent"));
90-
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("packageInfo.version"));
94+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), containsString("clientVersion: \"1.0.0\""));
9195
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), not(containsString("ClientSharedValues.serviceId")));
96+
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(), not(containsString("import packageInfo")));
9297

9398
// Check the config resolution and middleware plugin
9499
assertThat(manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/ExampleServiceClient.ts").get(), containsString("resolveUserAgentConfig"));

0 commit comments

Comments
 (0)