|
18 | 18 | import static software.amazon.smithy.typescript.codegen.TypeScriptDependency.DEV_DEPENDENCY;
|
19 | 19 | import static software.amazon.smithy.typescript.codegen.TypeScriptDependency.NORMAL_DEPENDENCY;
|
20 | 20 |
|
| 21 | +import java.io.IOException; |
| 22 | +import java.io.StringReader; |
21 | 23 | import java.util.Collections;
|
| 24 | +import java.util.HashMap; |
22 | 25 | import java.util.List;
|
| 26 | +import java.util.Map; |
| 27 | +import java.util.Properties; |
23 | 28 | import software.amazon.smithy.codegen.core.SymbolDependency;
|
24 | 29 | import software.amazon.smithy.codegen.core.SymbolDependencyContainer;
|
| 30 | +import software.amazon.smithy.utils.IoUtils; |
25 | 31 | import software.amazon.smithy.utils.SmithyInternalApi;
|
26 | 32 |
|
27 | 33 | /**
|
|
31 | 37 | @SmithyInternalApi
|
32 | 38 | public enum AwsDependency implements SymbolDependencyContainer {
|
33 | 39 |
|
34 |
| - MIDDLEWARE_SIGNING(NORMAL_DEPENDENCY, "@aws-sdk/middleware-signing", "3.15.0"), |
35 |
| - CREDENTIAL_PROVIDER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/credential-provider-node", "3.15.0"), |
36 |
| - ACCEPT_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-api-gateway", "3.15.0"), |
37 |
| - S3_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-s3", "3.15.0"), |
38 |
| - ADD_EXPECT_CONTINUE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-expect-continue", "3.15.0"), |
39 |
| - GLACIER_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-glacier", "3.15.0"), |
40 |
| - MACHINELEARNING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-machinelearning", "3.15.0"), |
41 |
| - S3_CONTROL_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-s3-control", "3.15.0"), |
42 |
| - SSEC_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-ssec", "3.15.0"), |
43 |
| - RDS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-rds", "3.15.0"), |
44 |
| - LOCATION_CONSTRAINT(NORMAL_DEPENDENCY, "@aws-sdk/middleware-location-constraint", "3.15.0"), |
45 |
| - ROUTE53_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-route53", "3.15.0"), |
46 |
| - EC2_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-ec2", "3.15.0"), |
47 |
| - BUCKET_ENDPOINT_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-bucket-endpoint", "3.15.0"), |
48 |
| - MIDDLEWARE_HOST_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-host-header", "3.15.0"), |
49 |
| - SQS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sqs", "3.15.0"), |
50 |
| - BODY_CHECKSUM_GENERATOR_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-browser", "3.15.0"), |
51 |
| - BODY_CHECKSUM_GENERATOR_NODE(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-node", "3.15.0"), |
52 |
| - XML_BUILDER(NORMAL_DEPENDENCY, "@aws-sdk/xml-builder", "3.14.0"), |
| 40 | + MIDDLEWARE_SIGNING(NORMAL_DEPENDENCY, "@aws-sdk/middleware-signing"), |
| 41 | + CREDENTIAL_PROVIDER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/credential-provider-node"), |
| 42 | + ACCEPT_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-api-gateway"), |
| 43 | + S3_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-s3"), |
| 44 | + ADD_EXPECT_CONTINUE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-expect-continue"), |
| 45 | + GLACIER_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-glacier"), |
| 46 | + MACHINELEARNING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-machinelearning"), |
| 47 | + S3_CONTROL_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-s3-control"), |
| 48 | + SSEC_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-ssec"), |
| 49 | + RDS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-rds"), |
| 50 | + LOCATION_CONSTRAINT(NORMAL_DEPENDENCY, "@aws-sdk/middleware-location-constraint"), |
| 51 | + ROUTE53_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-route53"), |
| 52 | + EC2_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-ec2"), |
| 53 | + BUCKET_ENDPOINT_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-bucket-endpoint"), |
| 54 | + MIDDLEWARE_HOST_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-host-header"), |
| 55 | + SQS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sqs"), |
| 56 | + BODY_CHECKSUM_GENERATOR_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-browser"), |
| 57 | + BODY_CHECKSUM_GENERATOR_NODE(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-node"), |
| 58 | + XML_BUILDER(NORMAL_DEPENDENCY, "@aws-sdk/xml-builder"), |
53 | 59 | XML_PARSER(NORMAL_DEPENDENCY, "fast-xml-parser", "3.19.0"),
|
54 | 60 | HTML_ENTITIES(NORMAL_DEPENDENCY, "entities", "2.2.0"),
|
55 | 61 | UUID_GENERATOR(NORMAL_DEPENDENCY, "uuid", "^8.3.2"),
|
56 | 62 | UUID_GENERATOR_TYPES(DEV_DEPENDENCY, "@types/uuid", "^8.3.0"),
|
57 |
| - MIDDLEWARE_EVENTSTREAM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream", "3.15.0"), |
58 |
| - AWS_SDK_EVENTSTREAM_HANDLER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler-node", "3.15.0"), |
59 |
| - TRANSCRIBE_STREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-transcribe-streaming", |
60 |
| - "3.15.0"), |
61 |
| - STS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sts", "3.15.0"), |
62 |
| - STS_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sts", "3.15.0"), |
63 |
| - NODE_CONFIG_PROVIDER(NORMAL_DEPENDENCY, "@aws-sdk/node-config-provider", "3.15.0"), |
64 |
| - MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger", "3.15.0"), |
65 |
| - MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent", "3.15.0"), |
66 |
| - AWS_SDK_UTIL_USER_AGENT_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-browser", "3.15.0"), |
67 |
| - AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node", "3.15.0"), |
68 |
| - MIDDLEWARE_ENDPOINT_DISCOVERY(NORMAL_DEPENDENCY, "@aws-sdk/middleware-endpoint-discovery", "3.0.0"); |
| 63 | + MIDDLEWARE_EVENTSTREAM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream"), |
| 64 | + AWS_SDK_EVENTSTREAM_HANDLER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler-node"), |
| 65 | + TRANSCRIBE_STREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-transcribe-streaming"), |
| 66 | + STS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sts"), |
| 67 | + STS_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sts"), |
| 68 | + NODE_CONFIG_PROVIDER(NORMAL_DEPENDENCY, "@aws-sdk/node-config-provider"), |
| 69 | + MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger"), |
| 70 | + MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent"), |
| 71 | + AWS_SDK_UTIL_USER_AGENT_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-browser"), |
| 72 | + AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node"), |
| 73 | + MIDDLEWARE_ENDPOINT_DISCOVERY(NORMAL_DEPENDENCY, "@aws-sdk/middleware-endpoint-discovery"); |
69 | 74 |
|
70 | 75 | public final String packageName;
|
71 | 76 | public final String version;
|
72 | 77 | public final SymbolDependency dependency;
|
73 | 78 |
|
| 79 | + AwsDependency(String type, String name) { |
| 80 | + this(type, name, SdkVersion.expectVersion(name)); |
| 81 | + } |
| 82 | + |
74 | 83 | AwsDependency(String type, String name, String version) {
|
75 | 84 | this.dependency = SymbolDependency.builder().dependencyType(type).packageName(name).version(version).build();
|
76 | 85 | this.packageName = name;
|
77 | 86 | this.version = version;
|
78 | 87 | }
|
79 | 88 |
|
| 89 | + |
80 | 90 | @Override
|
81 | 91 | public List<SymbolDependency> getDependencies() {
|
82 | 92 | return Collections.singletonList(dependency);
|
83 | 93 | }
|
| 94 | + |
| 95 | + private static final class SdkVersion { |
| 96 | + private static final Map<String, String> VERSIONS; |
| 97 | + |
| 98 | + static { |
| 99 | + String rawProperties = |
| 100 | + IoUtils.readUtf8Url(AwsDependency.class.getResource("sdkVersions.properties")).trim(); |
| 101 | + Properties p = new Properties(); |
| 102 | + try { |
| 103 | + p.load(new StringReader(rawProperties)); |
| 104 | + } catch (IOException e) { |
| 105 | + throw new IllegalArgumentException("Could not read sdkVersions.properties"); |
| 106 | + } |
| 107 | + |
| 108 | + final Map<String, String> versions = new HashMap<>(p.size()); |
| 109 | + p.forEach((k, v) -> { |
| 110 | + if (versions.put(k.toString(), v.toString()) != null) { |
| 111 | + throw new IllegalArgumentException("Multiple versions defined for " + k.toString()); |
| 112 | + } |
| 113 | + }); |
| 114 | + VERSIONS = Collections.unmodifiableMap(versions); |
| 115 | + } |
| 116 | + |
| 117 | + private static String expectVersion(String packageName) { |
| 118 | + if (!VERSIONS.containsKey(packageName)) { |
| 119 | + throw new IllegalArgumentException("No version for " + packageName); |
| 120 | + } |
| 121 | + return VERSIONS.get(packageName); |
| 122 | + } |
| 123 | + } |
84 | 124 | }
|
| 125 | + |
0 commit comments