Skip to content

Commit efb2668

Browse files
AllanZhengYPsrchase
authored andcommitted
load different sdk defaults value from defaults mode (smithy-lang#11) (smithy-lang#495)
* load different sdk defaults value from defaults mode * resolveDefaultsModeConfig to accept a hash * simplify node runtime config defaults mode resolution * import defaults mode interfaces from smithy-client package
1 parent 9d87f76 commit efb2668

File tree

6 files changed

+65
-5
lines changed

6 files changed

+65
-5
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ final class RuntimeConfigGenerator {
4444
private final Map<String, Consumer<TypeScriptWriter>> nodeRuntimeConfigDefaults = MapUtils.of(
4545
"requestHandler", writer -> {
4646
writer.addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER);
47-
writer.addImport("NodeHttpHandler", "NodeHttpHandler",
47+
writer.addImport("NodeHttpHandler", "RequestHandler",
4848
TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER.packageName);
49-
writer.write("new NodeHttpHandler()");
49+
writer.write("new RequestHandler(defaultConfigProvider)");
5050
},
5151
"sha256", writer -> {
5252
writer.addDependency(TypeScriptDependency.AWS_SDK_HASH_NODE);
@@ -94,9 +94,9 @@ final class RuntimeConfigGenerator {
9494
private final Map<String, Consumer<TypeScriptWriter>> browserRuntimeConfigDefaults = MapUtils.of(
9595
"requestHandler", writer -> {
9696
writer.addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER);
97-
writer.addImport("FetchHttpHandler", "FetchHttpHandler",
97+
writer.addImport("FetchHttpHandler", "RequestHandler",
9898
TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER.packageName);
99-
writer.write("new FetchHttpHandler()");
99+
writer.write("new RequestHandler(defaultConfigProvider)");
100100
},
101101
"sha256", writer -> {
102102
writer.addDependency(TypeScriptDependency.AWS_CRYPTO_SHA256_BROWSER);

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptDependency.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ public enum TypeScriptDependency implements SymbolDependencyContainer {
6969

7070
AWS_SDK_UTIL_WAITERS("dependencies", "@aws-sdk/util-waiter", false),
7171

72+
AWS_SDK_UTIL_DEFAULTS_MODE_NODE("dependencies", "@aws-sdk/util-defaults-mode-node", true),
73+
AWS_SDK_UTIL_DEFAULTS_MODE_BROWSER("dependencies", "@aws-sdk/util-defaults-mode-browser", true),
74+
7275
// Conditionally added when httpChecksumRequired trait exists
7376
MD5_BROWSER("dependencies", "@aws-sdk/md5-js", false),
7477
STREAM_HASHER_NODE("dependencies", "@aws-sdk/hash-stream-node", false),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
package software.amazon.smithy.typescript.codegen.integration;
17+
18+
import software.amazon.smithy.codegen.core.SymbolProvider;
19+
import software.amazon.smithy.model.Model;
20+
import software.amazon.smithy.typescript.codegen.TypeScriptDependency;
21+
import software.amazon.smithy.typescript.codegen.TypeScriptSettings;
22+
import software.amazon.smithy.typescript.codegen.TypeScriptWriter;
23+
import software.amazon.smithy.utils.SmithyInternalApi;
24+
25+
/**
26+
* Adds defaults mode dependencies if needed.
27+
*/
28+
@SmithyInternalApi
29+
public class AddDefaultsModeDependency implements TypeScriptIntegration {
30+
@Override
31+
public void addConfigInterfaceFields(
32+
TypeScriptSettings settings,
33+
Model model,
34+
SymbolProvider symbolProvider,
35+
TypeScriptWriter writer
36+
) {
37+
// Dependencies used in the default runtime config template.
38+
writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_BROWSER);
39+
writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_NODE);
40+
writer.addImport("DefaultsMode", "DefaultsMode", TypeScriptDependency.AWS_SMITHY_CLIENT.packageName);
41+
writer.addImport("Provider", "Provider", TypeScriptDependency.AWS_SDK_TYPES.packageName);
42+
writer.writeDocs("The {@link DefaultsMode} that will be used to determine how certain default configuration "
43+
+ "options are resolved in the SDK.");
44+
writer.write("defaultsMode?: DefaultsMode | Provider<DefaultsMode>;");
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
software.amazon.smithy.typescript.codegen.integration.AddEventStreamDependency
2-
software.amazon.smithy.typescript.codegen.integration.AddChecksumRequiredDependency
2+
software.amazon.smithy.typescript.codegen.integration.AddChecksumRequiredDependency
3+
software.amazon.smithy.typescript.codegen.integration.AddDefaultsModeDependency
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import { ${clientConfigName} } from "${clientModuleName}";
22
import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared";
3+
import { loadConfigsForDefaultMode } from "@aws-sdk/smithy-client";
4+
import { resolveDefaultsModeConfig } from "@aws-sdk/util-defaults-mode-browser";
35

46
/**
57
* @internal
68
*/
79
export const getRuntimeConfig = (config: ${clientConfigName}) => {
10+
const defaultsMode = resolveDefaultsModeConfig(config);
11+
const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);
812
const clientSharedValues = getSharedRuntimeConfig(config);
913
return {
1014
...clientSharedValues,
1115
...config,
1216
runtime: "browser",
17+
defaultsMode,
1318
${customizations}
1419
};
1520
};
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import { ${clientConfigName} } from "${clientModuleName}";
22
import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared";
3+
import { loadConfigsForDefaultMode } from "@aws-sdk/smithy-client";
4+
import { resolveDefaultsModeConfig } from "@aws-sdk/util-defaults-mode-node";
35

46
/**
57
* @internal
68
*/
79
export const getRuntimeConfig = (config: ${clientConfigName}) => {
10+
const defaultsMode = resolveDefaultsModeConfig(config);
11+
const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);
812
const clientSharedValues = getSharedRuntimeConfig(config);
913
return {
1014
...clientSharedValues,
1115
...config,
1216
runtime: "node",
17+
defaultsMode,
1318
${customizations}
1419
};
1520
};

0 commit comments

Comments
 (0)