|
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 |
| - MD5_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/md5-js", "3.15.0"), |
46 |
| - STREAM_HASHER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/hash-stream-node", "3.15.0"), |
47 |
| - STREAM_HASHER_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/hash-blob-browser", "3.15.0"), |
48 |
| - ROUTE53_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-route53", "3.15.0"), |
49 |
| - EC2_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-ec2", "3.15.0"), |
50 |
| - BUCKET_ENDPOINT_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-bucket-endpoint", "3.15.0"), |
51 |
| - BODY_CHECKSUM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-apply-body-checksum", "3.15.0"), |
52 |
| - MIDDLEWARE_HOST_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-host-header", "3.15.0"), |
53 |
| - SQS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sqs", "3.15.0"), |
54 |
| - BODY_CHECKSUM_GENERATOR_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-browser", "3.15.0"), |
55 |
| - BODY_CHECKSUM_GENERATOR_NODE(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-node", "3.15.0"), |
56 |
| - 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 | + MD5_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/md5-js"), |
| 52 | + STREAM_HASHER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/hash-stream-node"), |
| 53 | + STREAM_HASHER_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/hash-blob-browser"), |
| 54 | + ROUTE53_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-route53"), |
| 55 | + EC2_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-ec2"), |
| 56 | + BUCKET_ENDPOINT_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-bucket-endpoint"), |
| 57 | + BODY_CHECKSUM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-apply-body-checksum"), |
| 58 | + MIDDLEWARE_HOST_HEADER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-host-header"), |
| 59 | + SQS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sqs"), |
| 60 | + BODY_CHECKSUM_GENERATOR_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-browser"), |
| 61 | + BODY_CHECKSUM_GENERATOR_NODE(NORMAL_DEPENDENCY, "@aws-sdk/body-checksum-node"), |
| 62 | + XML_BUILDER(NORMAL_DEPENDENCY, "@aws-sdk/xml-builder"), |
57 | 63 | XML_PARSER(NORMAL_DEPENDENCY, "fast-xml-parser", "3.19.0"),
|
58 | 64 | HTML_ENTITIES(NORMAL_DEPENDENCY, "entities", "2.2.0"),
|
59 | 65 | UUID_GENERATOR(NORMAL_DEPENDENCY, "uuid", "^8.3.2"),
|
60 | 66 | UUID_GENERATOR_TYPES(DEV_DEPENDENCY, "@types/uuid", "^8.3.0"),
|
61 |
| - MIDDLEWARE_EVENTSTREAM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream", "3.15.0"), |
62 |
| - AWS_SDK_EVENTSTREAM_HANDLER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler-node", "3.15.0"), |
63 |
| - TRANSCRIBE_STREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-transcribe-streaming", |
64 |
| - "3.15.0"), |
65 |
| - STS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sts", "3.15.0"), |
66 |
| - STS_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sts", "3.15.0"), |
67 |
| - NODE_CONFIG_PROVIDER(NORMAL_DEPENDENCY, "@aws-sdk/node-config-provider", "3.15.0"), |
68 |
| - MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger", "3.15.0"), |
69 |
| - MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent", "3.15.0"), |
70 |
| - AWS_SDK_UTIL_USER_AGENT_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-browser", "3.15.0"), |
71 |
| - AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node", "3.15.0"), |
72 |
| - MIDDLEWARE_ENDPOINT_DISCOVERY(NORMAL_DEPENDENCY, "@aws-sdk/middleware-endpoint-discovery", "3.0.0"); |
| 67 | + MIDDLEWARE_EVENTSTREAM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream"), |
| 68 | + AWS_SDK_EVENTSTREAM_HANDLER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler-node"), |
| 69 | + TRANSCRIBE_STREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-transcribe-streaming"), |
| 70 | + STS_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/middleware-sdk-sts"), |
| 71 | + STS_CLIENT(NORMAL_DEPENDENCY, "@aws-sdk/client-sts"), |
| 72 | + NODE_CONFIG_PROVIDER(NORMAL_DEPENDENCY, "@aws-sdk/node-config-provider"), |
| 73 | + MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger"), |
| 74 | + MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent"), |
| 75 | + AWS_SDK_UTIL_USER_AGENT_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-browser"), |
| 76 | + AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node"), |
| 77 | + MIDDLEWARE_ENDPOINT_DISCOVERY(NORMAL_DEPENDENCY, "@aws-sdk/middleware-endpoint-discovery"); |
73 | 78 |
|
74 | 79 | public final String packageName;
|
75 | 80 | public final String version;
|
76 | 81 | public final SymbolDependency dependency;
|
77 | 82 |
|
| 83 | + AwsDependency(String type, String name) { |
| 84 | + this(type, name, SdkVersion.expectVersion(name)); |
| 85 | + } |
| 86 | + |
78 | 87 | AwsDependency(String type, String name, String version) {
|
79 | 88 | this.dependency = SymbolDependency.builder().dependencyType(type).packageName(name).version(version).build();
|
80 | 89 | this.packageName = name;
|
81 | 90 | this.version = version;
|
82 | 91 | }
|
83 | 92 |
|
| 93 | + |
84 | 94 | @Override
|
85 | 95 | public List<SymbolDependency> getDependencies() {
|
86 | 96 | return Collections.singletonList(dependency);
|
87 | 97 | }
|
| 98 | + |
| 99 | + private static final class SdkVersion { |
| 100 | + private static final Map<String, String> VERSIONS; |
| 101 | + |
| 102 | + static { |
| 103 | + String rawProperties = |
| 104 | + IoUtils.readUtf8Url(AwsDependency.class.getResource("sdkVersions.properties")).trim(); |
| 105 | + Properties p = new Properties(); |
| 106 | + try { |
| 107 | + p.load(new StringReader(rawProperties)); |
| 108 | + } catch (IOException e) { |
| 109 | + throw new IllegalArgumentException("Could not read sdkVersions.properties"); |
| 110 | + } |
| 111 | + |
| 112 | + final Map<String, String> versions = new HashMap<>(p.size()); |
| 113 | + p.forEach((k, v) -> { |
| 114 | + if (versions.put(k.toString(), v.toString()) != null) { |
| 115 | + throw new IllegalArgumentException("Multiple versions defined for " + k.toString()); |
| 116 | + } |
| 117 | + }); |
| 118 | + VERSIONS = Collections.unmodifiableMap(versions); |
| 119 | + } |
| 120 | + |
| 121 | + private static String expectVersion(String packageName) { |
| 122 | + if (VERSIONS == null) { |
| 123 | + throw new IllegalArgumentException("WHAT?"); |
| 124 | + } |
| 125 | + if (!VERSIONS.containsKey(packageName)) { |
| 126 | + throw new IllegalArgumentException("No version for " + packageName); |
| 127 | + } |
| 128 | + return VERSIONS.get(packageName); |
| 129 | + } |
| 130 | + } |
88 | 131 | }
|
| 132 | + |
0 commit comments