From 8570d674dbdc71475ddcffc919e2dccd656cd3cb Mon Sep 17 00:00:00 2001 From: George Fu Date: Sun, 23 Nov 2025 15:55:08 -0500 Subject: [PATCH] feat: type import API for TypeScriptWriter --- .changeset/plenty-baboons-heal.md | 2 + .../my-local-model-schema/src/XYZService.ts | 17 +- .../src/XYZServiceClient.ts | 68 ++--- .../auth/httpAuthExtensionConfiguration.ts | 5 +- .../src/auth/httpAuthSchemeProvider.ts | 5 +- .../src/commands/GetNumbersCommand.ts | 11 +- .../src/commands/TradeEventStreamCommand.ts | 11 +- .../src/endpoint/EndpointParameters.ts | 2 +- .../src/endpoint/endpointResolver.ts | 7 +- .../src/endpoint/ruleset.ts | 2 +- .../src/extensionConfiguration.ts | 7 +- .../XYZServiceSyntheticServiceException.ts | 2 +- .../src/models/errors.ts | 3 +- .../src/models/models_0.ts | 2 +- .../src/runtimeConfig.browser.ts | 7 +- .../src/runtimeConfig.native.ts | 3 +- .../src/runtimeConfig.shared.ts | 9 +- .../src/runtimeConfig.ts | 8 +- .../src/runtimeExtensions.ts | 5 +- .../src/schemas/schemas_0.ts | 7 +- private/my-local-model/src/XYZService.ts | 7 +- .../my-local-model/src/XYZServiceClient.ts | 62 +++-- .../auth/httpAuthExtensionConfiguration.ts | 5 +- .../src/auth/httpAuthSchemeProvider.ts | 5 +- .../src/commands/GetNumbersCommand.ts | 11 +- .../src/commands/TradeEventStreamCommand.ts | 15 +- .../src/endpoint/EndpointParameters.ts | 2 +- .../src/endpoint/endpointResolver.ts | 7 +- .../my-local-model/src/endpoint/ruleset.ts | 2 +- .../src/extensionConfiguration.ts | 7 +- .../XYZServiceSyntheticServiceException.ts | 2 +- private/my-local-model/src/models/errors.ts | 3 +- .../my-local-model/src/protocols/Rpcv2cbor.ts | 35 +-- .../src/runtimeConfig.browser.ts | 7 +- .../src/runtimeConfig.native.ts | 3 +- .../src/runtimeConfig.shared.ts | 9 +- private/my-local-model/src/runtimeConfig.ts | 8 +- .../my-local-model/src/runtimeExtensions.ts | 5 +- .../src/RpcV2Protocol.ts | 57 ++-- .../src/RpcV2ProtocolClient.ts | 125 +++++---- .../auth/httpAuthExtensionConfiguration.ts | 5 +- .../src/auth/httpAuthSchemeProvider.ts | 5 +- .../src/commands/EmptyInputOutputCommand.ts | 11 +- .../src/commands/Float16Command.ts | 11 +- .../src/commands/FractionalSecondsCommand.ts | 11 +- .../src/commands/GreetingWithErrorsCommand.ts | 11 +- .../src/commands/NoInputOutputCommand.ts | 9 +- .../commands/OperationWithDefaultsCommand.ts | 11 +- .../commands/OptionalInputOutputCommand.ts | 11 +- .../src/commands/RecursiveShapesCommand.ts | 11 +- .../src/commands/RpcV2CborDenseMapsCommand.ts | 11 +- .../src/commands/RpcV2CborListsCommand.ts | 11 +- .../commands/RpcV2CborSparseMapsCommand.ts | 11 +- .../commands/SimpleScalarPropertiesCommand.ts | 11 +- .../commands/SparseNullsOperationCommand.ts | 11 +- .../src/endpoint/EndpointParameters.ts | 2 +- .../src/endpoint/endpointResolver.ts | 7 +- .../src/endpoint/ruleset.ts | 2 +- .../src/extensionConfiguration.ts | 7 +- .../models/RpcV2ProtocolServiceException.ts | 2 +- .../src/models/errors.ts | 5 +- .../src/models/models_0.ts | 2 +- .../src/runtimeConfig.browser.ts | 7 +- .../src/runtimeConfig.native.ts | 3 +- .../src/runtimeConfig.shared.ts | 9 +- .../src/runtimeConfig.ts | 8 +- .../src/runtimeExtensions.ts | 5 +- .../src/schemas/schemas_0.ts | 15 +- .../test/functional/rpcv2cbor.spec.ts | 13 +- .../smithy-rpcv2-cbor/src/RpcV2Protocol.ts | 7 +- .../src/RpcV2ProtocolClient.ts | 88 +++--- .../auth/httpAuthExtensionConfiguration.ts | 5 +- .../src/auth/httpAuthSchemeProvider.ts | 5 +- .../src/commands/EmptyInputOutputCommand.ts | 11 +- .../src/commands/Float16Command.ts | 11 +- .../src/commands/FractionalSecondsCommand.ts | 11 +- .../src/commands/GreetingWithErrorsCommand.ts | 11 +- .../src/commands/NoInputOutputCommand.ts | 9 +- .../commands/OperationWithDefaultsCommand.ts | 11 +- .../commands/OptionalInputOutputCommand.ts | 11 +- .../src/commands/RecursiveShapesCommand.ts | 11 +- .../src/commands/RpcV2CborDenseMapsCommand.ts | 11 +- .../src/commands/RpcV2CborListsCommand.ts | 11 +- .../commands/RpcV2CborSparseMapsCommand.ts | 11 +- .../commands/SimpleScalarPropertiesCommand.ts | 11 +- .../commands/SparseNullsOperationCommand.ts | 11 +- .../src/endpoint/EndpointParameters.ts | 2 +- .../src/endpoint/endpointResolver.ts | 7 +- .../smithy-rpcv2-cbor/src/endpoint/ruleset.ts | 2 +- .../src/extensionConfiguration.ts | 7 +- .../models/RpcV2ProtocolServiceException.ts | 2 +- .../smithy-rpcv2-cbor/src/models/errors.ts | 5 +- .../src/protocols/Rpcv2cbor.ts | 69 ++--- .../src/runtimeConfig.browser.ts | 7 +- .../src/runtimeConfig.native.ts | 3 +- .../src/runtimeConfig.shared.ts | 9 +- .../smithy-rpcv2-cbor/src/runtimeConfig.ts | 8 +- .../src/runtimeExtensions.ts | 5 +- .../test/functional/rpcv2cbor.spec.ts | 13 +- ...leWeatherCustomEndpointsRuntimeConfig.java | 22 +- .../codegen/ApplicationProtocol.java | 54 ++-- .../typescript/codegen/CodegenUtils.java | 20 +- .../typescript/codegen/CommandGenerator.java | 38 ++- .../ExtensionConfigurationGenerator.java | 2 +- .../codegen/HttpProtocolTestGenerator.java | 14 +- .../codegen/ImportDeclarations.java | 164 ++++++++--- .../codegen/PaginationGenerator.java | 24 +- .../codegen/RuntimeConfigGenerator.java | 255 ++++++++++-------- .../ServiceAggregatedClientGenerator.java | 36 ++- .../ServiceBareBonesClientGenerator.java | 49 ++-- .../codegen/StructuredMemberWriter.java | 2 +- .../typescript/codegen/SymbolVisitor.java | 198 +++++++++----- .../typescript/codegen/TypeScriptWriter.java | 75 ++++-- .../http/HttpAuthSchemeProviderGenerator.java | 22 +- .../integration/AddHttpAuthSchemePlugin.java | 30 +-- .../HttpAuthRuntimeExtensionIntegration.java | 20 +- .../endpointsV2/EndpointsV2Generator.java | 14 +- .../endpointsV2/RuleSetParametersVisitor.java | 6 +- .../AddBaseServiceExceptionClass.java | 2 +- .../AddChecksumRequiredDependency.java | 8 +- .../integration/AddClientRuntimeConfig.java | 6 +- .../AddDefaultsModeDependency.java | 4 +- .../integration/AddEventStreamDependency.java | 2 +- .../integration/AddProtocolConfig.java | 6 +- .../AddSdkStreamMixinDependency.java | 2 +- .../integration/EventStreamGenerator.java | 8 +- .../HttpBindingProtocolGenerator.java | 13 +- .../HttpProtocolGeneratorUtils.java | 4 +- .../integration/HttpRpcProtocolGenerator.java | 23 +- .../integration/RuntimeClientPlugin.java | 20 +- .../protocols/cbor/SmithyRpcV2Cbor.java | 6 +- .../codegen/schema/SchemaGenerator.java | 20 +- .../typescript/codegen/protocol-test-stub.ts | 6 +- .../resolveRuntimeExtensions1.template | 13 +- .../codegen/runtimeConfig.browser.ts.template | 8 +- .../codegen/runtimeConfig.native.ts.template | 6 +- .../codegen/runtimeConfig.shared.ts.template | 9 +- .../codegen/runtimeConfig.ts.template | 9 +- .../codegen/runtimeExtensions1.template | 10 +- .../codegen/ImportDeclarationsTest.java | 39 ++- .../codegen/RuntimeConfigGeneratorTest.java | 6 +- .../codegen/TypeScriptWriterTest.java | 14 +- 142 files changed, 1439 insertions(+), 1033 deletions(-) create mode 100644 .changeset/plenty-baboons-heal.md diff --git a/.changeset/plenty-baboons-heal.md b/.changeset/plenty-baboons-heal.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/plenty-baboons-heal.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/private/my-local-model-schema/src/XYZService.ts b/private/my-local-model-schema/src/XYZService.ts index 3b6f3dd7761..e2174085f02 100644 --- a/private/my-local-model-schema/src/XYZService.ts +++ b/private/my-local-model-schema/src/XYZService.ts @@ -1,13 +1,18 @@ // smithy-typescript generated code -import { XYZServiceClient, XYZServiceClientConfig } from "./XYZServiceClient"; -import { GetNumbersCommand, GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; +import { createAggregatedClient } from "@smithy/smithy-client"; +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; + import { + type GetNumbersCommandInput, + type GetNumbersCommandOutput, + GetNumbersCommand, +} from "./commands/GetNumbersCommand"; +import { + type TradeEventStreamCommandInput, + type TradeEventStreamCommandOutput, TradeEventStreamCommand, - TradeEventStreamCommandInput, - TradeEventStreamCommandOutput, } from "./commands/TradeEventStreamCommand"; -import { createAggregatedClient } from "@smithy/smithy-client"; -import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { XYZServiceClient } from "./XYZServiceClient"; const commands = { GetNumbersCommand, diff --git a/private/my-local-model-schema/src/XYZServiceClient.ts b/private/my-local-model-schema/src/XYZServiceClient.ts index aa9e3b5f3df..979586fe62e 100644 --- a/private/my-local-model-schema/src/XYZServiceClient.ts +++ b/private/my-local-model-schema/src/XYZServiceClient.ts @@ -1,20 +1,4 @@ // smithy-typescript generated code -import { - HttpAuthSchemeInputConfig, - HttpAuthSchemeResolvedConfig, - defaultXYZServiceHttpAuthSchemeParametersProvider, - resolveHttpAuthSchemeConfig, -} from "./auth/httpAuthSchemeProvider"; -import { GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; -import { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "./commands/TradeEventStreamCommand"; -import { - ClientInputEndpointParameters, - ClientResolvedEndpointParameters, - EndpointParameters, - resolveClientEndpointParameters, -} from "./endpoint/EndpointParameters"; -import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; -import { RuntimeExtension, RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, @@ -22,45 +6,67 @@ import { } from "@smithy/core"; import { getSchemaSerdePlugin } from "@smithy/core/schema"; import { - EventStreamSerdeInputConfig, - EventStreamSerdeResolvedConfig, + type EventStreamSerdeInputConfig, + type EventStreamSerdeResolvedConfig, resolveEventStreamSerdeConfig, } from "@smithy/eventstream-serde-config-resolver"; import { getContentLengthPlugin } from "@smithy/middleware-content-length"; import { - EndpointInputConfig, - EndpointRequiredInputConfig, - EndpointRequiredResolvedConfig, - EndpointResolvedConfig, + type EndpointInputConfig, + type EndpointRequiredInputConfig, + type EndpointRequiredResolvedConfig, + type EndpointResolvedConfig, resolveEndpointConfig, resolveEndpointRequiredConfig, } from "@smithy/middleware-endpoint"; -import { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from "@smithy/middleware-retry"; -import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; import { + type RetryInputConfig, + type RetryResolvedConfig, + getRetryPlugin, + resolveRetryConfig, +} from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + type DefaultsMode as __DefaultsMode, + type SmithyConfiguration as __SmithyConfiguration, + type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client, - DefaultsMode as __DefaultsMode, - SmithyConfiguration as __SmithyConfiguration, - SmithyResolvedConfiguration as __SmithyResolvedConfiguration, } from "@smithy/smithy-client"; -import { - ClientProtocol, - HttpRequest, - HttpResponse, +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, + ClientProtocol, Decoder as __Decoder, Encoder as __Encoder, EventStreamSerdeProvider as __EventStreamSerdeProvider, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, + HttpRequest, + HttpResponse, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, } from "@smithy/types"; +import { + type HttpAuthSchemeInputConfig, + type HttpAuthSchemeResolvedConfig, + defaultXYZServiceHttpAuthSchemeParametersProvider, + resolveHttpAuthSchemeConfig, +} from "./auth/httpAuthSchemeProvider"; +import type { GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; +import type { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "./commands/TradeEventStreamCommand"; +import { + type ClientInputEndpointParameters, + type ClientResolvedEndpointParameters, + type EndpointParameters, + resolveClientEndpointParameters, +} from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { type RuntimeExtension, type RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; + export { __Client }; /** diff --git a/private/my-local-model-schema/src/auth/httpAuthExtensionConfiguration.ts b/private/my-local-model-schema/src/auth/httpAuthExtensionConfiguration.ts index 2da21a04eec..65d4e02cbd7 100644 --- a/private/my-local-model-schema/src/auth/httpAuthExtensionConfiguration.ts +++ b/private/my-local-model-schema/src/auth/httpAuthExtensionConfiguration.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code -import { XYZServiceHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; -import { HttpAuthScheme } from "@smithy/types"; +import type { HttpAuthScheme } from "@smithy/types"; + +import type { XYZServiceHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; /** * @internal diff --git a/private/my-local-model-schema/src/auth/httpAuthSchemeProvider.ts b/private/my-local-model-schema/src/auth/httpAuthSchemeProvider.ts index 49476d65613..ff178de097d 100644 --- a/private/my-local-model-schema/src/auth/httpAuthSchemeProvider.ts +++ b/private/my-local-model-schema/src/auth/httpAuthSchemeProvider.ts @@ -1,6 +1,5 @@ // smithy-typescript generated code -import { XYZServiceClientResolvedConfig } from "../XYZServiceClient"; -import { +import type { HandlerExecutionContext, HttpAuthOption, HttpAuthScheme, @@ -11,6 +10,8 @@ import { } from "@smithy/types"; import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import type { XYZServiceClientResolvedConfig } from "../XYZServiceClient"; + /** * @internal */ diff --git a/private/my-local-model-schema/src/commands/GetNumbersCommand.ts b/private/my-local-model-schema/src/commands/GetNumbersCommand.ts index 4fd6db7116a..ea46d633848 100644 --- a/private/my-local-model-schema/src/commands/GetNumbersCommand.ts +++ b/private/my-local-model-schema/src/commands/GetNumbersCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { GetNumbersRequest, GetNumbersResponse } from "../models/models_0"; -import { GetNumbers } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { GetNumbersRequest, GetNumbersResponse } from "../models/models_0"; +import { GetNumbers } from "../schemas/schemas_0"; +import type { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; /** * @public diff --git a/private/my-local-model-schema/src/commands/TradeEventStreamCommand.ts b/private/my-local-model-schema/src/commands/TradeEventStreamCommand.ts index 2dd2c42781f..a86781205af 100644 --- a/private/my-local-model-schema/src/commands/TradeEventStreamCommand.ts +++ b/private/my-local-model-schema/src/commands/TradeEventStreamCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { TradeEventStreamRequest, TradeEventStreamResponse } from "../models/models_0"; -import { TradeEventStream } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { TradeEventStreamRequest, TradeEventStreamResponse } from "../models/models_0"; +import { TradeEventStream } from "../schemas/schemas_0"; +import type { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; /** * @public diff --git a/private/my-local-model-schema/src/endpoint/EndpointParameters.ts b/private/my-local-model-schema/src/endpoint/EndpointParameters.ts index 9eb4c922345..ed18778e1fd 100644 --- a/private/my-local-model-schema/src/endpoint/EndpointParameters.ts +++ b/private/my-local-model-schema/src/endpoint/EndpointParameters.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { Endpoint, EndpointV2, Provider, EndpointParameters as __EndpointParameters } from "@smithy/types"; +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; /** * @public diff --git a/private/my-local-model-schema/src/endpoint/endpointResolver.ts b/private/my-local-model-schema/src/endpoint/endpointResolver.ts index c7fbb6d7f36..b706521d052 100644 --- a/private/my-local-model-schema/src/endpoint/endpointResolver.ts +++ b/private/my-local-model-schema/src/endpoint/endpointResolver.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { EndpointParameters } from "./EndpointParameters"; +import type { EndpointV2, Logger } from "@smithy/types"; +import { type EndpointParams, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; + +import type { EndpointParameters } from "./EndpointParameters"; import { ruleSet } from "./ruleset"; -import { EndpointV2, Logger } from "@smithy/types"; -import { EndpointCache, EndpointParams, resolveEndpoint } from "@smithy/util-endpoints"; const cache = new EndpointCache({ size: 50, diff --git a/private/my-local-model-schema/src/endpoint/ruleset.ts b/private/my-local-model-schema/src/endpoint/ruleset.ts index 14416a50b26..d8b2ce3d908 100644 --- a/private/my-local-model-schema/src/endpoint/ruleset.ts +++ b/private/my-local-model-schema/src/endpoint/ruleset.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { RuleSetObject } from "@smithy/types"; +import type { RuleSetObject } from "@smithy/types"; export const ruleSet: RuleSetObject = { version: "1.0", diff --git a/private/my-local-model-schema/src/extensionConfiguration.ts b/private/my-local-model-schema/src/extensionConfiguration.ts index 4d0aeaf2477..ffbf4ef34d7 100644 --- a/private/my-local-model-schema/src/extensionConfiguration.ts +++ b/private/my-local-model-schema/src/extensionConfiguration.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code -import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; -import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; -import { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; + +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; /** * @internal diff --git a/private/my-local-model-schema/src/models/XYZServiceSyntheticServiceException.ts b/private/my-local-model-schema/src/models/XYZServiceSyntheticServiceException.ts index 9e5c1c5ac41..d611a6a041e 100644 --- a/private/my-local-model-schema/src/models/XYZServiceSyntheticServiceException.ts +++ b/private/my-local-model-schema/src/models/XYZServiceSyntheticServiceException.ts @@ -1,7 +1,7 @@ // smithy-typescript generated code import { + type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException, - ServiceExceptionOptions as __ServiceExceptionOptions, } from "@smithy/smithy-client"; export type { __ServiceExceptionOptions }; diff --git a/private/my-local-model-schema/src/models/errors.ts b/private/my-local-model-schema/src/models/errors.ts index e100057ce44..6ae3754be39 100644 --- a/private/my-local-model-schema/src/models/errors.ts +++ b/private/my-local-model-schema/src/models/errors.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; + import { XYZServiceSyntheticServiceException as __BaseException } from "./XYZServiceSyntheticServiceException"; -import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; /** * @public diff --git a/private/my-local-model-schema/src/models/models_0.ts b/private/my-local-model-schema/src/models/models_0.ts index d74f4fae121..87e27cebf33 100644 --- a/private/my-local-model-schema/src/models/models_0.ts +++ b/private/my-local-model-schema/src/models/models_0.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { NumericValue } from "@smithy/core/serde"; +import type { NumericValue } from "@smithy/core/serde"; /** * @public diff --git a/private/my-local-model-schema/src/runtimeConfig.browser.ts b/private/my-local-model-schema/src/runtimeConfig.browser.ts index c2e6c05ad0e..9dbcb3d85f0 100644 --- a/private/my-local-model-schema/src/runtimeConfig.browser.ts +++ b/private/my-local-model-schema/src/runtimeConfig.browser.ts @@ -2,12 +2,13 @@ import { Sha256 } from "@aws-crypto/sha256-browser"; import { eventStreamSerdeProvider } from "@smithy/eventstream-serde-browser"; import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model-schema/src/runtimeConfig.native.ts b/private/my-local-model-schema/src/runtimeConfig.native.ts index 15d9026d38c..3b904db21c7 100644 --- a/private/my-local-model-schema/src/runtimeConfig.native.ts +++ b/private/my-local-model-schema/src/runtimeConfig.native.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-js"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model-schema/src/runtimeConfig.shared.ts b/private/my-local-model-schema/src/runtimeConfig.shared.ts index 3b6a365aef8..636f6d578ab 100644 --- a/private/my-local-model-schema/src/runtimeConfig.shared.ts +++ b/private/my-local-model-schema/src/runtimeConfig.shared.ts @@ -1,14 +1,15 @@ // smithy-typescript generated code -import { defaultXYZServiceHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; -import { defaultEndpointResolver } from "./endpoint/endpointResolver"; import { NoAuthSigner } from "@smithy/core"; import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; import { NoOpLogger } from "@smithy/smithy-client"; -import { IdentityProviderConfig } from "@smithy/types"; +import type { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; import { fromBase64, toBase64 } from "@smithy/util-base64"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + +import { defaultXYZServiceHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model-schema/src/runtimeConfig.ts b/private/my-local-model-schema/src/runtimeConfig.ts index 0a45f2ae5aa..010af0daa56 100644 --- a/private/my-local-model-schema/src/runtimeConfig.ts +++ b/private/my-local-model-schema/src/runtimeConfig.ts @@ -4,13 +4,13 @@ import { Hash } from "@smithy/hash-node"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; -import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model-schema/src/runtimeExtensions.ts b/private/my-local-model-schema/src/runtimeExtensions.ts index 4568fb2e395..b034ea65c42 100644 --- a/private/my-local-model-schema/src/runtimeExtensions.ts +++ b/private/my-local-model-schema/src/runtimeExtensions.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; -import { XYZServiceExtensionConfiguration } from "./extensionConfiguration"; + +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +import type { XYZServiceExtensionConfiguration } from "./extensionConfiguration"; /** * @public diff --git a/private/my-local-model-schema/src/schemas/schemas_0.ts b/private/my-local-model-schema/src/schemas/schemas_0.ts index a2a0b90444d..3ccd1b0d5f8 100644 --- a/private/my-local-model-schema/src/schemas/schemas_0.ts +++ b/private/my-local-model-schema/src/schemas/schemas_0.ts @@ -29,7 +29,9 @@ const _t = "timestamp"; const n0 = "org.xyz.v1"; // smithy-typescript generated code -import { XYZServiceSyntheticServiceException as __XYZServiceSyntheticServiceException } from "../models/XYZServiceSyntheticServiceException"; +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; + import { CodedThrottlingError as __CodedThrottlingError, HaltError as __HaltError, @@ -37,8 +39,7 @@ import { RetryableError as __RetryableError, XYZServiceServiceException as __XYZServiceServiceException, } from "../models/errors"; -import { TypeRegistry } from "@smithy/core/schema"; -import { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +import { XYZServiceSyntheticServiceException as __XYZServiceSyntheticServiceException } from "../models/XYZServiceSyntheticServiceException"; /* eslint no-var: 0 */ diff --git a/private/my-local-model/src/XYZService.ts b/private/my-local-model/src/XYZService.ts index 3b6f3dd7761..edd7ee80ef3 100644 --- a/private/my-local-model/src/XYZService.ts +++ b/private/my-local-model/src/XYZService.ts @@ -1,13 +1,14 @@ // smithy-typescript generated code -import { XYZServiceClient, XYZServiceClientConfig } from "./XYZServiceClient"; +import { createAggregatedClient } from "@smithy/smithy-client"; +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; + import { GetNumbersCommand, GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; import { TradeEventStreamCommand, TradeEventStreamCommandInput, TradeEventStreamCommandOutput, } from "./commands/TradeEventStreamCommand"; -import { createAggregatedClient } from "@smithy/smithy-client"; -import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { XYZServiceClient } from "./XYZServiceClient"; const commands = { GetNumbersCommand, diff --git a/private/my-local-model/src/XYZServiceClient.ts b/private/my-local-model/src/XYZServiceClient.ts index 43a8d41b54c..6e0298456ea 100644 --- a/private/my-local-model/src/XYZServiceClient.ts +++ b/private/my-local-model/src/XYZServiceClient.ts @@ -1,48 +1,37 @@ // smithy-typescript generated code -import { - HttpAuthSchemeInputConfig, - HttpAuthSchemeResolvedConfig, - defaultXYZServiceHttpAuthSchemeParametersProvider, - resolveHttpAuthSchemeConfig, -} from "./auth/httpAuthSchemeProvider"; -import { GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; -import { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "./commands/TradeEventStreamCommand"; -import { - ClientInputEndpointParameters, - ClientResolvedEndpointParameters, - EndpointParameters, - resolveClientEndpointParameters, -} from "./endpoint/EndpointParameters"; -import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; -import { RuntimeExtension, RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; import { - EventStreamSerdeInputConfig, - EventStreamSerdeResolvedConfig, + type EventStreamSerdeInputConfig, + type EventStreamSerdeResolvedConfig, resolveEventStreamSerdeConfig, } from "@smithy/eventstream-serde-config-resolver"; import { getContentLengthPlugin } from "@smithy/middleware-content-length"; import { - EndpointInputConfig, - EndpointRequiredInputConfig, - EndpointRequiredResolvedConfig, - EndpointResolvedConfig, + type EndpointInputConfig, + type EndpointRequiredInputConfig, + type EndpointRequiredResolvedConfig, + type EndpointResolvedConfig, resolveEndpointConfig, resolveEndpointRequiredConfig, } from "@smithy/middleware-endpoint"; -import { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from "@smithy/middleware-retry"; -import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; import { + type RetryInputConfig, + type RetryResolvedConfig, + getRetryPlugin, + resolveRetryConfig, +} from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + type DefaultsMode as __DefaultsMode, + type SmithyConfiguration as __SmithyConfiguration, + type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client, - DefaultsMode as __DefaultsMode, - SmithyConfiguration as __SmithyConfiguration, - SmithyResolvedConfiguration as __SmithyResolvedConfiguration, } from "@smithy/smithy-client"; -import { +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, @@ -57,6 +46,23 @@ import { UrlParser as __UrlParser, } from "@smithy/types"; +import { + type HttpAuthSchemeInputConfig, + type HttpAuthSchemeResolvedConfig, + defaultXYZServiceHttpAuthSchemeParametersProvider, + resolveHttpAuthSchemeConfig, +} from "./auth/httpAuthSchemeProvider"; +import { GetNumbersCommandInput, GetNumbersCommandOutput } from "./commands/GetNumbersCommand"; +import { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "./commands/TradeEventStreamCommand"; +import { + type ClientInputEndpointParameters, + type ClientResolvedEndpointParameters, + type EndpointParameters, + resolveClientEndpointParameters, +} from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { type RuntimeExtension, type RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; + export { __Client }; /** diff --git a/private/my-local-model/src/auth/httpAuthExtensionConfiguration.ts b/private/my-local-model/src/auth/httpAuthExtensionConfiguration.ts index 2da21a04eec..65d4e02cbd7 100644 --- a/private/my-local-model/src/auth/httpAuthExtensionConfiguration.ts +++ b/private/my-local-model/src/auth/httpAuthExtensionConfiguration.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code -import { XYZServiceHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; -import { HttpAuthScheme } from "@smithy/types"; +import type { HttpAuthScheme } from "@smithy/types"; + +import type { XYZServiceHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; /** * @internal diff --git a/private/my-local-model/src/auth/httpAuthSchemeProvider.ts b/private/my-local-model/src/auth/httpAuthSchemeProvider.ts index 49476d65613..ff178de097d 100644 --- a/private/my-local-model/src/auth/httpAuthSchemeProvider.ts +++ b/private/my-local-model/src/auth/httpAuthSchemeProvider.ts @@ -1,6 +1,5 @@ // smithy-typescript generated code -import { XYZServiceClientResolvedConfig } from "../XYZServiceClient"; -import { +import type { HandlerExecutionContext, HttpAuthOption, HttpAuthScheme, @@ -11,6 +10,8 @@ import { } from "@smithy/types"; import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import type { XYZServiceClientResolvedConfig } from "../XYZServiceClient"; + /** * @internal */ diff --git a/private/my-local-model/src/commands/GetNumbersCommand.ts b/private/my-local-model/src/commands/GetNumbersCommand.ts index df10ab47821..7a71ff923ee 100644 --- a/private/my-local-model/src/commands/GetNumbersCommand.ts +++ b/private/my-local-model/src/commands/GetNumbersCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { GetNumbersRequest, GetNumbersResponse } from "../models/models_0"; -import { de_GetNumbersCommand, se_GetNumbersCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { GetNumbersRequest, GetNumbersResponse } from "../models/models_0"; +import { de_GetNumbersCommand, se_GetNumbersCommand } from "../protocols/Rpcv2cbor"; +import type { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; /** * @public diff --git a/private/my-local-model/src/commands/TradeEventStreamCommand.ts b/private/my-local-model/src/commands/TradeEventStreamCommand.ts index a81e33b73f9..7604b4959ae 100644 --- a/private/my-local-model/src/commands/TradeEventStreamCommand.ts +++ b/private/my-local-model/src/commands/TradeEventStreamCommand.ts @@ -1,17 +1,18 @@ // smithy-typescript generated code -import { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + import { commonParams } from "../endpoint/EndpointParameters"; import { - TradeEventStreamRequest, + type TradeEventStreamRequest, + type TradeEventStreamResponse, TradeEventStreamRequestFilterSensitiveLog, - TradeEventStreamResponse, TradeEventStreamResponseFilterSensitiveLog, } from "../models/models_0"; import { de_TradeEventStreamCommand, se_TradeEventStreamCommand } from "../protocols/Rpcv2cbor"; -import { getEndpointPlugin } from "@smithy/middleware-endpoint"; -import { getSerdePlugin } from "@smithy/middleware-serde"; -import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ServiceInputTypes, ServiceOutputTypes, XYZServiceClientResolvedConfig } from "../XYZServiceClient"; /** * @public diff --git a/private/my-local-model/src/endpoint/EndpointParameters.ts b/private/my-local-model/src/endpoint/EndpointParameters.ts index 9eb4c922345..ed18778e1fd 100644 --- a/private/my-local-model/src/endpoint/EndpointParameters.ts +++ b/private/my-local-model/src/endpoint/EndpointParameters.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { Endpoint, EndpointV2, Provider, EndpointParameters as __EndpointParameters } from "@smithy/types"; +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; /** * @public diff --git a/private/my-local-model/src/endpoint/endpointResolver.ts b/private/my-local-model/src/endpoint/endpointResolver.ts index c7fbb6d7f36..b706521d052 100644 --- a/private/my-local-model/src/endpoint/endpointResolver.ts +++ b/private/my-local-model/src/endpoint/endpointResolver.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { EndpointParameters } from "./EndpointParameters"; +import type { EndpointV2, Logger } from "@smithy/types"; +import { type EndpointParams, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; + +import type { EndpointParameters } from "./EndpointParameters"; import { ruleSet } from "./ruleset"; -import { EndpointV2, Logger } from "@smithy/types"; -import { EndpointCache, EndpointParams, resolveEndpoint } from "@smithy/util-endpoints"; const cache = new EndpointCache({ size: 50, diff --git a/private/my-local-model/src/endpoint/ruleset.ts b/private/my-local-model/src/endpoint/ruleset.ts index 14416a50b26..d8b2ce3d908 100644 --- a/private/my-local-model/src/endpoint/ruleset.ts +++ b/private/my-local-model/src/endpoint/ruleset.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { RuleSetObject } from "@smithy/types"; +import type { RuleSetObject } from "@smithy/types"; export const ruleSet: RuleSetObject = { version: "1.0", diff --git a/private/my-local-model/src/extensionConfiguration.ts b/private/my-local-model/src/extensionConfiguration.ts index 4d0aeaf2477..ffbf4ef34d7 100644 --- a/private/my-local-model/src/extensionConfiguration.ts +++ b/private/my-local-model/src/extensionConfiguration.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code -import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; -import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; -import { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; + +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; /** * @internal diff --git a/private/my-local-model/src/models/XYZServiceSyntheticServiceException.ts b/private/my-local-model/src/models/XYZServiceSyntheticServiceException.ts index 9e5c1c5ac41..d611a6a041e 100644 --- a/private/my-local-model/src/models/XYZServiceSyntheticServiceException.ts +++ b/private/my-local-model/src/models/XYZServiceSyntheticServiceException.ts @@ -1,7 +1,7 @@ // smithy-typescript generated code import { + type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException, - ServiceExceptionOptions as __ServiceExceptionOptions, } from "@smithy/smithy-client"; export type { __ServiceExceptionOptions }; diff --git a/private/my-local-model/src/models/errors.ts b/private/my-local-model/src/models/errors.ts index e100057ce44..6ae3754be39 100644 --- a/private/my-local-model/src/models/errors.ts +++ b/private/my-local-model/src/models/errors.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; + import { XYZServiceSyntheticServiceException as __BaseException } from "./XYZServiceSyntheticServiceException"; -import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; /** * @public diff --git a/private/my-local-model/src/protocols/Rpcv2cbor.ts b/private/my-local-model/src/protocols/Rpcv2cbor.ts index ad782b8ad87..3314edf0525 100644 --- a/private/my-local-model/src/protocols/Rpcv2cbor.ts +++ b/private/my-local-model/src/protocols/Rpcv2cbor.ts @@ -1,46 +1,47 @@ // smithy-typescript generated code -import { GetNumbersCommandInput, GetNumbersCommandOutput } from "../commands/GetNumbersCommand"; -import { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "../commands/TradeEventStreamCommand"; -import { XYZServiceSyntheticServiceException as __BaseException } from "../models/XYZServiceSyntheticServiceException"; -import { - CodedThrottlingError, - HaltError, - MysteryThrottlingError, - RetryableError, - XYZServiceServiceException, -} from "../models/errors"; -import { Alpha, GetNumbersRequest, GetNumbersResponse, TradeEvents, Unit } from "../models/models_0"; import { - dateToTag as __dateToTag, buildHttpRpcRequest, cbor, checkCborResponse as cr, + dateToTag as __dateToTag, loadSmithyRpcV2CborErrorCode, parseCborBody as parseBody, parseCborErrorBody as parseErrorBody, } from "@smithy/core/cbor"; import { nv as __nv } from "@smithy/core/serde"; -import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; +import type { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; import { + _json, + collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectString as __expectString, parseEpochTimestamp as __parseEpochTimestamp, - _json, - collectBody, take, withBaseException, } from "@smithy/smithy-client"; -import { +import type { Endpoint as __Endpoint, EventStreamSerdeContext as __EventStreamSerdeContext, HeaderBag as __HeaderBag, - Message as __Message, MessageHeaders as __MessageHeaders, + Message as __Message, ResponseMetadata as __ResponseMetadata, SerdeContext as __SerdeContext, } from "@smithy/types"; +import { GetNumbersCommandInput, GetNumbersCommandOutput } from "../commands/GetNumbersCommand"; +import { TradeEventStreamCommandInput, TradeEventStreamCommandOutput } from "../commands/TradeEventStreamCommand"; +import { + CodedThrottlingError, + HaltError, + MysteryThrottlingError, + RetryableError, + XYZServiceServiceException, +} from "../models/errors"; +import { Alpha, GetNumbersRequest, GetNumbersResponse, TradeEvents, Unit } from "../models/models_0"; +import { XYZServiceSyntheticServiceException as __BaseException } from "../models/XYZServiceSyntheticServiceException"; + /** * serializeRpcv2cborGetNumbersCommand */ diff --git a/private/my-local-model/src/runtimeConfig.browser.ts b/private/my-local-model/src/runtimeConfig.browser.ts index c2e6c05ad0e..9dbcb3d85f0 100644 --- a/private/my-local-model/src/runtimeConfig.browser.ts +++ b/private/my-local-model/src/runtimeConfig.browser.ts @@ -2,12 +2,13 @@ import { Sha256 } from "@aws-crypto/sha256-browser"; import { eventStreamSerdeProvider } from "@smithy/eventstream-serde-browser"; import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model/src/runtimeConfig.native.ts b/private/my-local-model/src/runtimeConfig.native.ts index 15d9026d38c..3b904db21c7 100644 --- a/private/my-local-model/src/runtimeConfig.native.ts +++ b/private/my-local-model/src/runtimeConfig.native.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-js"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model/src/runtimeConfig.shared.ts b/private/my-local-model/src/runtimeConfig.shared.ts index 9c0c7de8437..13ac7264c70 100644 --- a/private/my-local-model/src/runtimeConfig.shared.ts +++ b/private/my-local-model/src/runtimeConfig.shared.ts @@ -1,13 +1,14 @@ // smithy-typescript generated code -import { defaultXYZServiceHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; -import { defaultEndpointResolver } from "./endpoint/endpointResolver"; import { NoAuthSigner } from "@smithy/core"; import { NoOpLogger } from "@smithy/smithy-client"; -import { IdentityProviderConfig } from "@smithy/types"; +import type { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; import { fromBase64, toBase64 } from "@smithy/util-base64"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + +import { defaultXYZServiceHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model/src/runtimeConfig.ts b/private/my-local-model/src/runtimeConfig.ts index 0a45f2ae5aa..010af0daa56 100644 --- a/private/my-local-model/src/runtimeConfig.ts +++ b/private/my-local-model/src/runtimeConfig.ts @@ -4,13 +4,13 @@ import { Hash } from "@smithy/hash-node"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { XYZServiceClientConfig } from "./XYZServiceClient"; + import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; -import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; +import type { XYZServiceClientConfig } from "./XYZServiceClient"; /** * @internal diff --git a/private/my-local-model/src/runtimeExtensions.ts b/private/my-local-model/src/runtimeExtensions.ts index 4568fb2e395..b034ea65c42 100644 --- a/private/my-local-model/src/runtimeExtensions.ts +++ b/private/my-local-model/src/runtimeExtensions.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; -import { XYZServiceExtensionConfiguration } from "./extensionConfiguration"; + +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +import type { XYZServiceExtensionConfiguration } from "./extensionConfiguration"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/RpcV2Protocol.ts b/private/smithy-rpcv2-cbor-schema/src/RpcV2Protocol.ts index cde70ffa0c1..a5cb9e46d0b 100644 --- a/private/smithy-rpcv2-cbor-schema/src/RpcV2Protocol.ts +++ b/private/smithy-rpcv2-cbor-schema/src/RpcV2Protocol.ts @@ -1,68 +1,69 @@ // smithy-typescript generated code -import { RpcV2ProtocolClient, RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; +import { createAggregatedClient } from "@smithy/smithy-client"; +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; + import { + type EmptyInputOutputCommandInput, + type EmptyInputOutputCommandOutput, EmptyInputOutputCommand, - EmptyInputOutputCommandInput, - EmptyInputOutputCommandOutput, } from "./commands/EmptyInputOutputCommand"; -import { Float16Command, Float16CommandInput, Float16CommandOutput } from "./commands/Float16Command"; +import { type Float16CommandInput, type Float16CommandOutput, Float16Command } from "./commands/Float16Command"; import { + type FractionalSecondsCommandInput, + type FractionalSecondsCommandOutput, FractionalSecondsCommand, - FractionalSecondsCommandInput, - FractionalSecondsCommandOutput, } from "./commands/FractionalSecondsCommand"; import { + type GreetingWithErrorsCommandInput, + type GreetingWithErrorsCommandOutput, GreetingWithErrorsCommand, - GreetingWithErrorsCommandInput, - GreetingWithErrorsCommandOutput, } from "./commands/GreetingWithErrorsCommand"; import { + type NoInputOutputCommandInput, + type NoInputOutputCommandOutput, NoInputOutputCommand, - NoInputOutputCommandInput, - NoInputOutputCommandOutput, } from "./commands/NoInputOutputCommand"; import { + type OperationWithDefaultsCommandInput, + type OperationWithDefaultsCommandOutput, OperationWithDefaultsCommand, - OperationWithDefaultsCommandInput, - OperationWithDefaultsCommandOutput, } from "./commands/OperationWithDefaultsCommand"; import { + type OptionalInputOutputCommandInput, + type OptionalInputOutputCommandOutput, OptionalInputOutputCommand, - OptionalInputOutputCommandInput, - OptionalInputOutputCommandOutput, } from "./commands/OptionalInputOutputCommand"; import { + type RecursiveShapesCommandInput, + type RecursiveShapesCommandOutput, RecursiveShapesCommand, - RecursiveShapesCommandInput, - RecursiveShapesCommandOutput, } from "./commands/RecursiveShapesCommand"; import { + type RpcV2CborDenseMapsCommandInput, + type RpcV2CborDenseMapsCommandOutput, RpcV2CborDenseMapsCommand, - RpcV2CborDenseMapsCommandInput, - RpcV2CborDenseMapsCommandOutput, } from "./commands/RpcV2CborDenseMapsCommand"; import { + type RpcV2CborListsCommandInput, + type RpcV2CborListsCommandOutput, RpcV2CborListsCommand, - RpcV2CborListsCommandInput, - RpcV2CborListsCommandOutput, } from "./commands/RpcV2CborListsCommand"; import { + type RpcV2CborSparseMapsCommandInput, + type RpcV2CborSparseMapsCommandOutput, RpcV2CborSparseMapsCommand, - RpcV2CborSparseMapsCommandInput, - RpcV2CborSparseMapsCommandOutput, } from "./commands/RpcV2CborSparseMapsCommand"; import { + type SimpleScalarPropertiesCommandInput, + type SimpleScalarPropertiesCommandOutput, SimpleScalarPropertiesCommand, - SimpleScalarPropertiesCommandInput, - SimpleScalarPropertiesCommandOutput, } from "./commands/SimpleScalarPropertiesCommand"; import { + type SparseNullsOperationCommandInput, + type SparseNullsOperationCommandOutput, SparseNullsOperationCommand, - SparseNullsOperationCommandInput, - SparseNullsOperationCommandOutput, } from "./commands/SparseNullsOperationCommand"; -import { createAggregatedClient } from "@smithy/smithy-client"; -import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { RpcV2ProtocolClient } from "./RpcV2ProtocolClient"; const commands = { EmptyInputOutputCommand, diff --git a/private/smithy-rpcv2-cbor-schema/src/RpcV2ProtocolClient.ts b/private/smithy-rpcv2-cbor-schema/src/RpcV2ProtocolClient.ts index b00d5438653..4674ecaee2f 100644 --- a/private/smithy-rpcv2-cbor-schema/src/RpcV2ProtocolClient.ts +++ b/private/smithy-rpcv2-cbor-schema/src/RpcV2ProtocolClient.ts @@ -1,46 +1,4 @@ // smithy-typescript generated code -import { - HttpAuthSchemeInputConfig, - HttpAuthSchemeResolvedConfig, - defaultRpcV2ProtocolHttpAuthSchemeParametersProvider, - resolveHttpAuthSchemeConfig, -} from "./auth/httpAuthSchemeProvider"; -import { EmptyInputOutputCommandInput, EmptyInputOutputCommandOutput } from "./commands/EmptyInputOutputCommand"; -import { Float16CommandInput, Float16CommandOutput } from "./commands/Float16Command"; -import { FractionalSecondsCommandInput, FractionalSecondsCommandOutput } from "./commands/FractionalSecondsCommand"; -import { GreetingWithErrorsCommandInput, GreetingWithErrorsCommandOutput } from "./commands/GreetingWithErrorsCommand"; -import { NoInputOutputCommandInput, NoInputOutputCommandOutput } from "./commands/NoInputOutputCommand"; -import { - OperationWithDefaultsCommandInput, - OperationWithDefaultsCommandOutput, -} from "./commands/OperationWithDefaultsCommand"; -import { - OptionalInputOutputCommandInput, - OptionalInputOutputCommandOutput, -} from "./commands/OptionalInputOutputCommand"; -import { RecursiveShapesCommandInput, RecursiveShapesCommandOutput } from "./commands/RecursiveShapesCommand"; -import { RpcV2CborDenseMapsCommandInput, RpcV2CborDenseMapsCommandOutput } from "./commands/RpcV2CborDenseMapsCommand"; -import { RpcV2CborListsCommandInput, RpcV2CborListsCommandOutput } from "./commands/RpcV2CborListsCommand"; -import { - RpcV2CborSparseMapsCommandInput, - RpcV2CborSparseMapsCommandOutput, -} from "./commands/RpcV2CborSparseMapsCommand"; -import { - SimpleScalarPropertiesCommandInput, - SimpleScalarPropertiesCommandOutput, -} from "./commands/SimpleScalarPropertiesCommand"; -import { - SparseNullsOperationCommandInput, - SparseNullsOperationCommandOutput, -} from "./commands/SparseNullsOperationCommand"; -import { - ClientInputEndpointParameters, - ClientResolvedEndpointParameters, - EndpointParameters, - resolveClientEndpointParameters, -} from "./endpoint/EndpointParameters"; -import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; -import { RuntimeExtension, RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, @@ -49,38 +7,95 @@ import { import { getSchemaSerdePlugin } from "@smithy/core/schema"; import { getContentLengthPlugin } from "@smithy/middleware-content-length"; import { - EndpointInputConfig, - EndpointRequiredInputConfig, - EndpointRequiredResolvedConfig, - EndpointResolvedConfig, + type EndpointInputConfig, + type EndpointRequiredInputConfig, + type EndpointRequiredResolvedConfig, + type EndpointResolvedConfig, resolveEndpointConfig, resolveEndpointRequiredConfig, } from "@smithy/middleware-endpoint"; -import { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from "@smithy/middleware-retry"; -import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; import { + type RetryInputConfig, + type RetryResolvedConfig, + getRetryPlugin, + resolveRetryConfig, +} from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + type DefaultsMode as __DefaultsMode, + type SmithyConfiguration as __SmithyConfiguration, + type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client, - DefaultsMode as __DefaultsMode, - SmithyConfiguration as __SmithyConfiguration, - SmithyResolvedConfiguration as __SmithyResolvedConfiguration, } from "@smithy/smithy-client"; -import { - ClientProtocol, - HttpRequest, - HttpResponse, +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, + ClientProtocol, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, + HttpRequest, + HttpResponse, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, } from "@smithy/types"; +import { + type HttpAuthSchemeInputConfig, + type HttpAuthSchemeResolvedConfig, + defaultRpcV2ProtocolHttpAuthSchemeParametersProvider, + resolveHttpAuthSchemeConfig, +} from "./auth/httpAuthSchemeProvider"; +import type { EmptyInputOutputCommandInput, EmptyInputOutputCommandOutput } from "./commands/EmptyInputOutputCommand"; +import type { Float16CommandInput, Float16CommandOutput } from "./commands/Float16Command"; +import type { + FractionalSecondsCommandInput, + FractionalSecondsCommandOutput, +} from "./commands/FractionalSecondsCommand"; +import type { + GreetingWithErrorsCommandInput, + GreetingWithErrorsCommandOutput, +} from "./commands/GreetingWithErrorsCommand"; +import type { NoInputOutputCommandInput, NoInputOutputCommandOutput } from "./commands/NoInputOutputCommand"; +import type { + OperationWithDefaultsCommandInput, + OperationWithDefaultsCommandOutput, +} from "./commands/OperationWithDefaultsCommand"; +import type { + OptionalInputOutputCommandInput, + OptionalInputOutputCommandOutput, +} from "./commands/OptionalInputOutputCommand"; +import type { RecursiveShapesCommandInput, RecursiveShapesCommandOutput } from "./commands/RecursiveShapesCommand"; +import type { + RpcV2CborDenseMapsCommandInput, + RpcV2CborDenseMapsCommandOutput, +} from "./commands/RpcV2CborDenseMapsCommand"; +import type { RpcV2CborListsCommandInput, RpcV2CborListsCommandOutput } from "./commands/RpcV2CborListsCommand"; +import type { + RpcV2CborSparseMapsCommandInput, + RpcV2CborSparseMapsCommandOutput, +} from "./commands/RpcV2CborSparseMapsCommand"; +import type { + SimpleScalarPropertiesCommandInput, + SimpleScalarPropertiesCommandOutput, +} from "./commands/SimpleScalarPropertiesCommand"; +import type { + SparseNullsOperationCommandInput, + SparseNullsOperationCommandOutput, +} from "./commands/SparseNullsOperationCommand"; +import { + type ClientInputEndpointParameters, + type ClientResolvedEndpointParameters, + type EndpointParameters, + resolveClientEndpointParameters, +} from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { type RuntimeExtension, type RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; + export { __Client }; /** diff --git a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthExtensionConfiguration.ts b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthExtensionConfiguration.ts index ef06738c086..4a26f904232 100644 --- a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthExtensionConfiguration.ts +++ b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthExtensionConfiguration.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code -import { RpcV2ProtocolHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; -import { HttpAuthScheme } from "@smithy/types"; +import type { HttpAuthScheme } from "@smithy/types"; + +import type { RpcV2ProtocolHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; /** * @internal diff --git a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts index e4ed6a53747..6f4572bd04d 100644 --- a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts +++ b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts @@ -1,6 +1,5 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig } from "../RpcV2ProtocolClient"; -import { +import type { HandlerExecutionContext, HttpAuthOption, HttpAuthScheme, @@ -11,6 +10,8 @@ import { } from "@smithy/types"; import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import type { RpcV2ProtocolClientResolvedConfig } from "../RpcV2ProtocolClient"; + /** * @internal */ diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/EmptyInputOutputCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/EmptyInputOutputCommand.ts index c3d41f06cac..a2866eead41 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/EmptyInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/EmptyInputOutputCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { EmptyStructure } from "../models/models_0"; -import { EmptyInputOutput } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { EmptyStructure } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { EmptyInputOutput } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/Float16Command.ts b/private/smithy-rpcv2-cbor-schema/src/commands/Float16Command.ts index 9d59e6e72e3..c1ef8cc9ed6 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/Float16Command.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/Float16Command.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { Float16Output } from "../models/models_0"; -import { Float16 } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { Float16Output } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { Float16 } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/FractionalSecondsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/FractionalSecondsCommand.ts index 28c498feccd..4129fd87467 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/FractionalSecondsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/FractionalSecondsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { FractionalSecondsOutput } from "../models/models_0"; -import { FractionalSeconds } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { FractionalSecondsOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { FractionalSeconds } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/GreetingWithErrorsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/GreetingWithErrorsCommand.ts index 08e0e78adaf..ee2cf397b8f 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/GreetingWithErrorsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/GreetingWithErrorsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { GreetingWithErrorsOutput } from "../models/models_0"; -import { GreetingWithErrors } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { GreetingWithErrorsOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { GreetingWithErrors } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/NoInputOutputCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/NoInputOutputCommand.ts index 3bb36ad9665..b798e5b5b53 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/NoInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/NoInputOutputCommand.ts @@ -1,10 +1,11 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { NoInputOutput } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { NoInputOutput } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/OperationWithDefaultsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/OperationWithDefaultsCommand.ts index bccb5ba3186..4b0c2550114 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/OperationWithDefaultsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/OperationWithDefaultsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { OperationWithDefaultsInput, OperationWithDefaultsOutput } from "../models/models_0"; -import { OperationWithDefaults } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { OperationWithDefaultsInput, OperationWithDefaultsOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { OperationWithDefaults } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/OptionalInputOutputCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/OptionalInputOutputCommand.ts index 5dd233c817e..5bf68f496db 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/OptionalInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/OptionalInputOutputCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SimpleStructure } from "../models/models_0"; -import { OptionalInputOutput } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SimpleStructure } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { OptionalInputOutput } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/RecursiveShapesCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/RecursiveShapesCommand.ts index d72b623f57a..1ae70689143 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/RecursiveShapesCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/RecursiveShapesCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RecursiveShapesInputOutput } from "../models/models_0"; -import { RecursiveShapes } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RecursiveShapesInputOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { RecursiveShapes } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborDenseMapsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborDenseMapsCommand.ts index 70b0761241e..007d8fd7ee0 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborDenseMapsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborDenseMapsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborDenseMapsInputOutput } from "../models/models_0"; -import { RpcV2CborDenseMaps } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborDenseMapsInputOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { RpcV2CborDenseMaps } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborListsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborListsCommand.ts index a9744f5f37c..85a123675e2 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborListsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborListsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborListInputOutput } from "../models/models_0"; -import { RpcV2CborLists } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborListInputOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { RpcV2CborLists } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborSparseMapsCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborSparseMapsCommand.ts index 70bc737cb63..5aff3493b4c 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborSparseMapsCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/RpcV2CborSparseMapsCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborSparseMapsInputOutput } from "../models/models_0"; -import { RpcV2CborSparseMaps } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborSparseMapsInputOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { RpcV2CborSparseMaps } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/SimpleScalarPropertiesCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/SimpleScalarPropertiesCommand.ts index a7570d27547..6840fbb2699 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/SimpleScalarPropertiesCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/SimpleScalarPropertiesCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SimpleScalarStructure } from "../models/models_0"; -import { SimpleScalarProperties } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SimpleScalarStructure } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { SimpleScalarProperties } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/commands/SparseNullsOperationCommand.ts b/private/smithy-rpcv2-cbor-schema/src/commands/SparseNullsOperationCommand.ts index e682281c792..6b9fe5e9a44 100644 --- a/private/smithy-rpcv2-cbor-schema/src/commands/SparseNullsOperationCommand.ts +++ b/private/smithy-rpcv2-cbor-schema/src/commands/SparseNullsOperationCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SparseNullsOperationInputOutput } from "../models/models_0"; -import { SparseNullsOperation } from "../schemas/schemas_0"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SparseNullsOperationInputOutput } from "../models/models_0"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; +import { SparseNullsOperation } from "../schemas/schemas_0"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/endpoint/EndpointParameters.ts b/private/smithy-rpcv2-cbor-schema/src/endpoint/EndpointParameters.ts index 9eb4c922345..ed18778e1fd 100644 --- a/private/smithy-rpcv2-cbor-schema/src/endpoint/EndpointParameters.ts +++ b/private/smithy-rpcv2-cbor-schema/src/endpoint/EndpointParameters.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { Endpoint, EndpointV2, Provider, EndpointParameters as __EndpointParameters } from "@smithy/types"; +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/endpoint/endpointResolver.ts b/private/smithy-rpcv2-cbor-schema/src/endpoint/endpointResolver.ts index c7fbb6d7f36..b706521d052 100644 --- a/private/smithy-rpcv2-cbor-schema/src/endpoint/endpointResolver.ts +++ b/private/smithy-rpcv2-cbor-schema/src/endpoint/endpointResolver.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { EndpointParameters } from "./EndpointParameters"; +import type { EndpointV2, Logger } from "@smithy/types"; +import { type EndpointParams, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; + +import type { EndpointParameters } from "./EndpointParameters"; import { ruleSet } from "./ruleset"; -import { EndpointV2, Logger } from "@smithy/types"; -import { EndpointCache, EndpointParams, resolveEndpoint } from "@smithy/util-endpoints"; const cache = new EndpointCache({ size: 50, diff --git a/private/smithy-rpcv2-cbor-schema/src/endpoint/ruleset.ts b/private/smithy-rpcv2-cbor-schema/src/endpoint/ruleset.ts index 14416a50b26..d8b2ce3d908 100644 --- a/private/smithy-rpcv2-cbor-schema/src/endpoint/ruleset.ts +++ b/private/smithy-rpcv2-cbor-schema/src/endpoint/ruleset.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { RuleSetObject } from "@smithy/types"; +import type { RuleSetObject } from "@smithy/types"; export const ruleSet: RuleSetObject = { version: "1.0", diff --git a/private/smithy-rpcv2-cbor-schema/src/extensionConfiguration.ts b/private/smithy-rpcv2-cbor-schema/src/extensionConfiguration.ts index 7fa5c7ff1fc..00ca28a55cc 100644 --- a/private/smithy-rpcv2-cbor-schema/src/extensionConfiguration.ts +++ b/private/smithy-rpcv2-cbor-schema/src/extensionConfiguration.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code -import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; -import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; -import { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; + +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; /** * @internal diff --git a/private/smithy-rpcv2-cbor-schema/src/models/RpcV2ProtocolServiceException.ts b/private/smithy-rpcv2-cbor-schema/src/models/RpcV2ProtocolServiceException.ts index 792f7ba0caf..995041583c1 100644 --- a/private/smithy-rpcv2-cbor-schema/src/models/RpcV2ProtocolServiceException.ts +++ b/private/smithy-rpcv2-cbor-schema/src/models/RpcV2ProtocolServiceException.ts @@ -1,7 +1,7 @@ // smithy-typescript generated code import { + type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException, - ServiceExceptionOptions as __ServiceExceptionOptions, } from "@smithy/smithy-client"; export type { __ServiceExceptionOptions }; diff --git a/private/smithy-rpcv2-cbor-schema/src/models/errors.ts b/private/smithy-rpcv2-cbor-schema/src/models/errors.ts index cae36af1f34..8c1df69d67a 100644 --- a/private/smithy-rpcv2-cbor-schema/src/models/errors.ts +++ b/private/smithy-rpcv2-cbor-schema/src/models/errors.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; + +import type { ComplexNestedErrorData, ValidationExceptionField } from "./models_0"; import { RpcV2ProtocolServiceException as __BaseException } from "./RpcV2ProtocolServiceException"; -import { ComplexNestedErrorData, ValidationExceptionField } from "./models_0"; -import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; /** * A standard error for input validation failures. diff --git a/private/smithy-rpcv2-cbor-schema/src/models/models_0.ts b/private/smithy-rpcv2-cbor-schema/src/models/models_0.ts index 334dbcef5f7..1a8118714d9 100644 --- a/private/smithy-rpcv2-cbor-schema/src/models/models_0.ts +++ b/private/smithy-rpcv2-cbor-schema/src/models/models_0.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { FooEnum, IntegerEnum, TestEnum, TestIntEnum } from "./enums"; +import type { FooEnum, IntegerEnum, TestEnum, TestIntEnum } from "./enums"; /** * Describes one specific validation failure for an input member. diff --git a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.browser.ts b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.browser.ts index 6c7d4fa35a0..dde20972bf3 100644 --- a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.browser.ts +++ b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.browser.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-browser"; import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; /** * @internal diff --git a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.native.ts b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.native.ts index efbf0075ed3..68bd5a12da8 100644 --- a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.native.ts +++ b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.native.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-js"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; /** diff --git a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.shared.ts b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.shared.ts index 8ccd0329ed7..4506577c8ea 100644 --- a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.shared.ts +++ b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.shared.ts @@ -1,14 +1,15 @@ // smithy-typescript generated code -import { defaultRpcV2ProtocolHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; -import { defaultEndpointResolver } from "./endpoint/endpointResolver"; import { NoAuthSigner } from "@smithy/core"; import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; import { NoOpLogger } from "@smithy/smithy-client"; -import { IdentityProviderConfig } from "@smithy/types"; +import type { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; import { fromBase64, toBase64 } from "@smithy/util-base64"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import { defaultRpcV2ProtocolHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; /** * @internal diff --git a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.ts b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.ts index 3922226f4c9..3eddaa7bfeb 100644 --- a/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.ts +++ b/private/smithy-rpcv2-cbor-schema/src/runtimeConfig.ts @@ -3,13 +3,13 @@ import { Hash } from "@smithy/hash-node"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; -import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; /** * @internal diff --git a/private/smithy-rpcv2-cbor-schema/src/runtimeExtensions.ts b/private/smithy-rpcv2-cbor-schema/src/runtimeExtensions.ts index 22f43123e01..cbba00a4458 100644 --- a/private/smithy-rpcv2-cbor-schema/src/runtimeExtensions.ts +++ b/private/smithy-rpcv2-cbor-schema/src/runtimeExtensions.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; -import { RpcV2ProtocolExtensionConfiguration } from "./extensionConfiguration"; + +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +import type { RpcV2ProtocolExtensionConfiguration } from "./extensionConfiguration"; /** * @public diff --git a/private/smithy-rpcv2-cbor-schema/src/schemas/schemas_0.ts b/private/smithy-rpcv2-cbor-schema/src/schemas/schemas_0.ts index 6acd25c002c..483f91b9fe5 100644 --- a/private/smithy-rpcv2-cbor-schema/src/schemas/schemas_0.ts +++ b/private/smithy-rpcv2-cbor-schema/src/schemas/schemas_0.ts @@ -131,14 +131,8 @@ const n1 = "smithy.protocoltests.rpcv2Cbor"; const n2 = "smithy.protocoltests.shared"; // smithy-typescript generated code -import { RpcV2ProtocolServiceException as __RpcV2ProtocolServiceException } from "../models/RpcV2ProtocolServiceException"; -import { - ComplexError as __ComplexError, - InvalidGreeting as __InvalidGreeting, - ValidationException as __ValidationException, -} from "../models/errors"; import { TypeRegistry } from "@smithy/core/schema"; -import { +import type { StaticErrorSchema, StaticListSchema, StaticMapSchema, @@ -146,6 +140,13 @@ import { StaticStructureSchema, } from "@smithy/types"; +import { + ComplexError as __ComplexError, + InvalidGreeting as __InvalidGreeting, + ValidationException as __ValidationException, +} from "../models/errors"; +import { RpcV2ProtocolServiceException as __RpcV2ProtocolServiceException } from "../models/RpcV2ProtocolServiceException"; + /* eslint no-var: 0 */ export var __Unit = "unit" as const; diff --git a/private/smithy-rpcv2-cbor-schema/test/functional/rpcv2cbor.spec.ts b/private/smithy-rpcv2-cbor-schema/test/functional/rpcv2cbor.spec.ts index 648f9e14c9a..3cc12a8322f 100644 --- a/private/smithy-rpcv2-cbor-schema/test/functional/rpcv2cbor.spec.ts +++ b/private/smithy-rpcv2-cbor-schema/test/functional/rpcv2cbor.spec.ts @@ -1,5 +1,7 @@ // smithy-typescript generated code -import { RpcV2ProtocolClient } from "../../src/RpcV2ProtocolClient"; +import { cbor } from "@smithy/core/cbor"; +import { expect, test as it } from "vitest"; + import { EmptyInputOutputCommand } from "../../src/commands/EmptyInputOutputCommand"; import { Float16Command } from "../../src/commands/Float16Command"; import { FractionalSecondsCommand } from "../../src/commands/FractionalSecondsCommand"; @@ -13,11 +15,10 @@ import { RpcV2CborListsCommand } from "../../src/commands/RpcV2CborListsCommand" import { RpcV2CborSparseMapsCommand } from "../../src/commands/RpcV2CborSparseMapsCommand"; import { SimpleScalarPropertiesCommand } from "../../src/commands/SimpleScalarPropertiesCommand"; import { SparseNullsOperationCommand } from "../../src/commands/SparseNullsOperationCommand"; -import { cbor } from "@smithy/core/cbor"; -import { expect, test as it } from "vitest"; -import { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; -import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; -import { Readable } from "stream"; +import { RpcV2ProtocolClient } from "../../src/RpcV2ProtocolClient"; +import type { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; +import { type HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { Readable } from "node:stream"; /** * Throws an expected exception that contains the serialized request. diff --git a/private/smithy-rpcv2-cbor/src/RpcV2Protocol.ts b/private/smithy-rpcv2-cbor/src/RpcV2Protocol.ts index cde70ffa0c1..f75c14289a9 100644 --- a/private/smithy-rpcv2-cbor/src/RpcV2Protocol.ts +++ b/private/smithy-rpcv2-cbor/src/RpcV2Protocol.ts @@ -1,5 +1,7 @@ // smithy-typescript generated code -import { RpcV2ProtocolClient, RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; +import { createAggregatedClient } from "@smithy/smithy-client"; +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; + import { EmptyInputOutputCommand, EmptyInputOutputCommandInput, @@ -61,8 +63,7 @@ import { SparseNullsOperationCommandInput, SparseNullsOperationCommandOutput, } from "./commands/SparseNullsOperationCommand"; -import { createAggregatedClient } from "@smithy/smithy-client"; -import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { RpcV2ProtocolClient } from "./RpcV2ProtocolClient"; const commands = { EmptyInputOutputCommand, diff --git a/private/smithy-rpcv2-cbor/src/RpcV2ProtocolClient.ts b/private/smithy-rpcv2-cbor/src/RpcV2ProtocolClient.ts index 2f1cddca96e..9b99bd1f7e1 100644 --- a/private/smithy-rpcv2-cbor/src/RpcV2ProtocolClient.ts +++ b/private/smithy-rpcv2-cbor/src/RpcV2ProtocolClient.ts @@ -1,7 +1,48 @@ // smithy-typescript generated code import { - HttpAuthSchemeInputConfig, - HttpAuthSchemeResolvedConfig, + DefaultIdentityProviderConfig, + getHttpAuthSchemeEndpointRuleSetPlugin, + getHttpSigningPlugin, +} from "@smithy/core"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { + type EndpointInputConfig, + type EndpointRequiredInputConfig, + type EndpointRequiredResolvedConfig, + type EndpointResolvedConfig, + resolveEndpointConfig, + resolveEndpointRequiredConfig, +} from "@smithy/middleware-endpoint"; +import { + type RetryInputConfig, + type RetryResolvedConfig, + getRetryPlugin, + resolveRetryConfig, +} from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + type DefaultsMode as __DefaultsMode, + type SmithyConfiguration as __SmithyConfiguration, + type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import type { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, +} from "@smithy/types"; + +import { + type HttpAuthSchemeInputConfig, + type HttpAuthSchemeResolvedConfig, defaultRpcV2ProtocolHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; @@ -34,48 +75,13 @@ import { SparseNullsOperationCommandOutput, } from "./commands/SparseNullsOperationCommand"; import { - ClientInputEndpointParameters, - ClientResolvedEndpointParameters, - EndpointParameters, + type ClientInputEndpointParameters, + type ClientResolvedEndpointParameters, + type EndpointParameters, resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; -import { RuntimeExtension, RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; -import { - DefaultIdentityProviderConfig, - getHttpAuthSchemeEndpointRuleSetPlugin, - getHttpSigningPlugin, -} from "@smithy/core"; -import { getContentLengthPlugin } from "@smithy/middleware-content-length"; -import { - EndpointInputConfig, - EndpointRequiredInputConfig, - EndpointRequiredResolvedConfig, - EndpointResolvedConfig, - resolveEndpointConfig, - resolveEndpointRequiredConfig, -} from "@smithy/middleware-endpoint"; -import { RetryInputConfig, RetryResolvedConfig, getRetryPlugin, resolveRetryConfig } from "@smithy/middleware-retry"; -import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; -import { - Client as __Client, - DefaultsMode as __DefaultsMode, - SmithyConfiguration as __SmithyConfiguration, - SmithyResolvedConfiguration as __SmithyResolvedConfiguration, -} from "@smithy/smithy-client"; -import { - BodyLengthCalculator as __BodyLengthCalculator, - CheckOptionalClientConfig as __CheckOptionalClientConfig, - ChecksumConstructor as __ChecksumConstructor, - Decoder as __Decoder, - Encoder as __Encoder, - HashConstructor as __HashConstructor, - HttpHandlerOptions as __HttpHandlerOptions, - Logger as __Logger, - Provider as __Provider, - StreamCollector as __StreamCollector, - UrlParser as __UrlParser, -} from "@smithy/types"; +import { type RuntimeExtension, type RuntimeExtensionsConfig, resolveRuntimeExtensions } from "./runtimeExtensions"; export { __Client }; diff --git a/private/smithy-rpcv2-cbor/src/auth/httpAuthExtensionConfiguration.ts b/private/smithy-rpcv2-cbor/src/auth/httpAuthExtensionConfiguration.ts index ef06738c086..4a26f904232 100644 --- a/private/smithy-rpcv2-cbor/src/auth/httpAuthExtensionConfiguration.ts +++ b/private/smithy-rpcv2-cbor/src/auth/httpAuthExtensionConfiguration.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code -import { RpcV2ProtocolHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; -import { HttpAuthScheme } from "@smithy/types"; +import type { HttpAuthScheme } from "@smithy/types"; + +import type { RpcV2ProtocolHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; /** * @internal diff --git a/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts b/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts index e4ed6a53747..6f4572bd04d 100644 --- a/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts +++ b/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts @@ -1,6 +1,5 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig } from "../RpcV2ProtocolClient"; -import { +import type { HandlerExecutionContext, HttpAuthOption, HttpAuthScheme, @@ -11,6 +10,8 @@ import { } from "@smithy/types"; import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import type { RpcV2ProtocolClientResolvedConfig } from "../RpcV2ProtocolClient"; + /** * @internal */ diff --git a/private/smithy-rpcv2-cbor/src/commands/EmptyInputOutputCommand.ts b/private/smithy-rpcv2-cbor/src/commands/EmptyInputOutputCommand.ts index 1f5c7db0028..2ef806e1fb9 100644 --- a/private/smithy-rpcv2-cbor/src/commands/EmptyInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/EmptyInputOutputCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { EmptyStructure } from "../models/models_0"; -import { de_EmptyInputOutputCommand, se_EmptyInputOutputCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { EmptyStructure } from "../models/models_0"; +import { de_EmptyInputOutputCommand, se_EmptyInputOutputCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/Float16Command.ts b/private/smithy-rpcv2-cbor/src/commands/Float16Command.ts index 651a39b01f1..209a70e7ce5 100644 --- a/private/smithy-rpcv2-cbor/src/commands/Float16Command.ts +++ b/private/smithy-rpcv2-cbor/src/commands/Float16Command.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { Float16Output } from "../models/models_0"; -import { de_Float16Command, se_Float16Command } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { Float16Output } from "../models/models_0"; +import { de_Float16Command, se_Float16Command } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/FractionalSecondsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/FractionalSecondsCommand.ts index 9d28c842877..bb8d2e402a1 100644 --- a/private/smithy-rpcv2-cbor/src/commands/FractionalSecondsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/FractionalSecondsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { FractionalSecondsOutput } from "../models/models_0"; -import { de_FractionalSecondsCommand, se_FractionalSecondsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { FractionalSecondsOutput } from "../models/models_0"; +import { de_FractionalSecondsCommand, se_FractionalSecondsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/GreetingWithErrorsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/GreetingWithErrorsCommand.ts index dc76839f0d2..2cefccb8cd3 100644 --- a/private/smithy-rpcv2-cbor/src/commands/GreetingWithErrorsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/GreetingWithErrorsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { GreetingWithErrorsOutput } from "../models/models_0"; -import { de_GreetingWithErrorsCommand, se_GreetingWithErrorsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { GreetingWithErrorsOutput } from "../models/models_0"; +import { de_GreetingWithErrorsCommand, se_GreetingWithErrorsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/NoInputOutputCommand.ts b/private/smithy-rpcv2-cbor/src/commands/NoInputOutputCommand.ts index 28c245a4de6..26cdeea6d29 100644 --- a/private/smithy-rpcv2-cbor/src/commands/NoInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/NoInputOutputCommand.ts @@ -1,11 +1,12 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { de_NoInputOutputCommand, se_NoInputOutputCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { de_NoInputOutputCommand, se_NoInputOutputCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/OperationWithDefaultsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/OperationWithDefaultsCommand.ts index d34158da94d..4ed2107ebd0 100644 --- a/private/smithy-rpcv2-cbor/src/commands/OperationWithDefaultsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/OperationWithDefaultsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { OperationWithDefaultsInput, OperationWithDefaultsOutput } from "../models/models_0"; -import { de_OperationWithDefaultsCommand, se_OperationWithDefaultsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { OperationWithDefaultsInput, OperationWithDefaultsOutput } from "../models/models_0"; +import { de_OperationWithDefaultsCommand, se_OperationWithDefaultsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/OptionalInputOutputCommand.ts b/private/smithy-rpcv2-cbor/src/commands/OptionalInputOutputCommand.ts index d0d2f7e0b27..66a58657888 100644 --- a/private/smithy-rpcv2-cbor/src/commands/OptionalInputOutputCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/OptionalInputOutputCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SimpleStructure } from "../models/models_0"; -import { de_OptionalInputOutputCommand, se_OptionalInputOutputCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SimpleStructure } from "../models/models_0"; +import { de_OptionalInputOutputCommand, se_OptionalInputOutputCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/RecursiveShapesCommand.ts b/private/smithy-rpcv2-cbor/src/commands/RecursiveShapesCommand.ts index 997bee6766f..ae6bf1054c6 100644 --- a/private/smithy-rpcv2-cbor/src/commands/RecursiveShapesCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/RecursiveShapesCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RecursiveShapesInputOutput } from "../models/models_0"; -import { de_RecursiveShapesCommand, se_RecursiveShapesCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RecursiveShapesInputOutput } from "../models/models_0"; +import { de_RecursiveShapesCommand, se_RecursiveShapesCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborDenseMapsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborDenseMapsCommand.ts index f444e178752..4a605e224ca 100644 --- a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborDenseMapsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborDenseMapsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborDenseMapsInputOutput } from "../models/models_0"; -import { de_RpcV2CborDenseMapsCommand, se_RpcV2CborDenseMapsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborDenseMapsInputOutput } from "../models/models_0"; +import { de_RpcV2CborDenseMapsCommand, se_RpcV2CborDenseMapsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborListsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborListsCommand.ts index b9d51ee2fa8..25ee15b4ec8 100644 --- a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborListsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborListsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborListInputOutput } from "../models/models_0"; -import { de_RpcV2CborListsCommand, se_RpcV2CborListsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborListInputOutput } from "../models/models_0"; +import { de_RpcV2CborListsCommand, se_RpcV2CborListsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborSparseMapsCommand.ts b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborSparseMapsCommand.ts index 27b67c295a6..65fcfc7c871 100644 --- a/private/smithy-rpcv2-cbor/src/commands/RpcV2CborSparseMapsCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/RpcV2CborSparseMapsCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { RpcV2CborSparseMapsInputOutput } from "../models/models_0"; -import { de_RpcV2CborSparseMapsCommand, se_RpcV2CborSparseMapsCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { RpcV2CborSparseMapsInputOutput } from "../models/models_0"; +import { de_RpcV2CborSparseMapsCommand, se_RpcV2CborSparseMapsCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/SimpleScalarPropertiesCommand.ts b/private/smithy-rpcv2-cbor/src/commands/SimpleScalarPropertiesCommand.ts index 66174b1aaa9..72604dedc31 100644 --- a/private/smithy-rpcv2-cbor/src/commands/SimpleScalarPropertiesCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/SimpleScalarPropertiesCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SimpleScalarStructure } from "../models/models_0"; -import { de_SimpleScalarPropertiesCommand, se_SimpleScalarPropertiesCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SimpleScalarStructure } from "../models/models_0"; +import { de_SimpleScalarPropertiesCommand, se_SimpleScalarPropertiesCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/commands/SparseNullsOperationCommand.ts b/private/smithy-rpcv2-cbor/src/commands/SparseNullsOperationCommand.ts index 096589079b5..92b7867d95e 100644 --- a/private/smithy-rpcv2-cbor/src/commands/SparseNullsOperationCommand.ts +++ b/private/smithy-rpcv2-cbor/src/commands/SparseNullsOperationCommand.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code -import { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; -import { commonParams } from "../endpoint/EndpointParameters"; -import { SparseNullsOperationInputOutput } from "../models/models_0"; -import { de_SparseNullsOperationCommand, se_SparseNullsOperationCommand } from "../protocols/Rpcv2cbor"; import { getEndpointPlugin } from "@smithy/middleware-endpoint"; import { getSerdePlugin } from "@smithy/middleware-serde"; import { Command as $Command } from "@smithy/smithy-client"; -import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import type { SparseNullsOperationInputOutput } from "../models/models_0"; +import { de_SparseNullsOperationCommand, se_SparseNullsOperationCommand } from "../protocols/Rpcv2cbor"; +import type { RpcV2ProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RpcV2ProtocolClient"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/endpoint/EndpointParameters.ts b/private/smithy-rpcv2-cbor/src/endpoint/EndpointParameters.ts index 9eb4c922345..ed18778e1fd 100644 --- a/private/smithy-rpcv2-cbor/src/endpoint/EndpointParameters.ts +++ b/private/smithy-rpcv2-cbor/src/endpoint/EndpointParameters.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { Endpoint, EndpointV2, Provider, EndpointParameters as __EndpointParameters } from "@smithy/types"; +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; /** * @public diff --git a/private/smithy-rpcv2-cbor/src/endpoint/endpointResolver.ts b/private/smithy-rpcv2-cbor/src/endpoint/endpointResolver.ts index c7fbb6d7f36..b706521d052 100644 --- a/private/smithy-rpcv2-cbor/src/endpoint/endpointResolver.ts +++ b/private/smithy-rpcv2-cbor/src/endpoint/endpointResolver.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { EndpointParameters } from "./EndpointParameters"; +import type { EndpointV2, Logger } from "@smithy/types"; +import { type EndpointParams, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; + +import type { EndpointParameters } from "./EndpointParameters"; import { ruleSet } from "./ruleset"; -import { EndpointV2, Logger } from "@smithy/types"; -import { EndpointCache, EndpointParams, resolveEndpoint } from "@smithy/util-endpoints"; const cache = new EndpointCache({ size: 50, diff --git a/private/smithy-rpcv2-cbor/src/endpoint/ruleset.ts b/private/smithy-rpcv2-cbor/src/endpoint/ruleset.ts index 14416a50b26..d8b2ce3d908 100644 --- a/private/smithy-rpcv2-cbor/src/endpoint/ruleset.ts +++ b/private/smithy-rpcv2-cbor/src/endpoint/ruleset.ts @@ -1,5 +1,5 @@ // smithy-typescript generated code -import { RuleSetObject } from "@smithy/types"; +import type { RuleSetObject } from "@smithy/types"; export const ruleSet: RuleSetObject = { version: "1.0", diff --git a/private/smithy-rpcv2-cbor/src/extensionConfiguration.ts b/private/smithy-rpcv2-cbor/src/extensionConfiguration.ts index 7fa5c7ff1fc..00ca28a55cc 100644 --- a/private/smithy-rpcv2-cbor/src/extensionConfiguration.ts +++ b/private/smithy-rpcv2-cbor/src/extensionConfiguration.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code -import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; -import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; -import { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; + +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; /** * @internal diff --git a/private/smithy-rpcv2-cbor/src/models/RpcV2ProtocolServiceException.ts b/private/smithy-rpcv2-cbor/src/models/RpcV2ProtocolServiceException.ts index 792f7ba0caf..995041583c1 100644 --- a/private/smithy-rpcv2-cbor/src/models/RpcV2ProtocolServiceException.ts +++ b/private/smithy-rpcv2-cbor/src/models/RpcV2ProtocolServiceException.ts @@ -1,7 +1,7 @@ // smithy-typescript generated code import { + type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException, - ServiceExceptionOptions as __ServiceExceptionOptions, } from "@smithy/smithy-client"; export type { __ServiceExceptionOptions }; diff --git a/private/smithy-rpcv2-cbor/src/models/errors.ts b/private/smithy-rpcv2-cbor/src/models/errors.ts index cae36af1f34..e0602e01c0a 100644 --- a/private/smithy-rpcv2-cbor/src/models/errors.ts +++ b/private/smithy-rpcv2-cbor/src/models/errors.ts @@ -1,7 +1,8 @@ // smithy-typescript generated code -import { RpcV2ProtocolServiceException as __BaseException } from "./RpcV2ProtocolServiceException"; +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; + import { ComplexNestedErrorData, ValidationExceptionField } from "./models_0"; -import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { RpcV2ProtocolServiceException as __BaseException } from "./RpcV2ProtocolServiceException"; /** * A standard error for input validation failures. diff --git a/private/smithy-rpcv2-cbor/src/protocols/Rpcv2cbor.ts b/private/smithy-rpcv2-cbor/src/protocols/Rpcv2cbor.ts index 51db653f0e9..edfa90947ef 100644 --- a/private/smithy-rpcv2-cbor/src/protocols/Rpcv2cbor.ts +++ b/private/smithy-rpcv2-cbor/src/protocols/Rpcv2cbor.ts @@ -1,4 +1,38 @@ // smithy-typescript generated code +import { + buildHttpRpcRequest, + cbor, + checkCborResponse as cr, + dateToTag as __dateToTag, + loadSmithyRpcV2CborErrorCode, + parseCborBody as parseBody, + parseCborErrorBody as parseErrorBody, +} from "@smithy/core/cbor"; +import type { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; +import { + _json, + collectBody, + decorateServiceException as __decorateServiceException, + expectBoolean as __expectBoolean, + expectByte as __expectByte, + expectInt32 as __expectInt32, + expectLong as __expectLong, + expectNonNull as __expectNonNull, + expectShort as __expectShort, + expectString as __expectString, + limitedParseDouble as __limitedParseDouble, + limitedParseFloat32 as __limitedParseFloat32, + parseEpochTimestamp as __parseEpochTimestamp, + take, + withBaseException, +} from "@smithy/smithy-client"; +import type { + Endpoint as __Endpoint, + HeaderBag as __HeaderBag, + ResponseMetadata as __ResponseMetadata, + SerdeContext as __SerdeContext, +} from "@smithy/types"; + import { EmptyInputOutputCommandInput, EmptyInputOutputCommandOutput } from "../commands/EmptyInputOutputCommand"; import { Float16CommandInput, Float16CommandOutput } from "../commands/Float16Command"; import { FractionalSecondsCommandInput, FractionalSecondsCommandOutput } from "../commands/FractionalSecondsCommand"; @@ -27,7 +61,6 @@ import { SparseNullsOperationCommandInput, SparseNullsOperationCommandOutput, } from "../commands/SparseNullsOperationCommand"; -import { RpcV2ProtocolServiceException as __BaseException } from "../models/RpcV2ProtocolServiceException"; import { FooEnum, IntegerEnum } from "../models/enums"; import { ComplexError, InvalidGreeting, ValidationException } from "../models/errors"; import { @@ -50,39 +83,7 @@ import { SparseNullsOperationInputOutput, StructureListMember, } from "../models/models_0"; -import { - dateToTag as __dateToTag, - buildHttpRpcRequest, - cbor, - checkCborResponse as cr, - loadSmithyRpcV2CborErrorCode, - parseCborBody as parseBody, - parseCborErrorBody as parseErrorBody, -} from "@smithy/core/cbor"; -import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; -import { - decorateServiceException as __decorateServiceException, - expectBoolean as __expectBoolean, - expectByte as __expectByte, - expectInt32 as __expectInt32, - expectLong as __expectLong, - expectNonNull as __expectNonNull, - expectShort as __expectShort, - expectString as __expectString, - limitedParseDouble as __limitedParseDouble, - limitedParseFloat32 as __limitedParseFloat32, - parseEpochTimestamp as __parseEpochTimestamp, - _json, - collectBody, - take, - withBaseException, -} from "@smithy/smithy-client"; -import { - Endpoint as __Endpoint, - HeaderBag as __HeaderBag, - ResponseMetadata as __ResponseMetadata, - SerdeContext as __SerdeContext, -} from "@smithy/types"; +import { RpcV2ProtocolServiceException as __BaseException } from "../models/RpcV2ProtocolServiceException"; /** * serializeRpcv2cborEmptyInputOutputCommand diff --git a/private/smithy-rpcv2-cbor/src/runtimeConfig.browser.ts b/private/smithy-rpcv2-cbor/src/runtimeConfig.browser.ts index 6c7d4fa35a0..dde20972bf3 100644 --- a/private/smithy-rpcv2-cbor/src/runtimeConfig.browser.ts +++ b/private/smithy-rpcv2-cbor/src/runtimeConfig.browser.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-browser"; import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; /** * @internal diff --git a/private/smithy-rpcv2-cbor/src/runtimeConfig.native.ts b/private/smithy-rpcv2-cbor/src/runtimeConfig.native.ts index efbf0075ed3..68bd5a12da8 100644 --- a/private/smithy-rpcv2-cbor/src/runtimeConfig.native.ts +++ b/private/smithy-rpcv2-cbor/src/runtimeConfig.native.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code import { Sha256 } from "@aws-crypto/sha256-js"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; /** diff --git a/private/smithy-rpcv2-cbor/src/runtimeConfig.shared.ts b/private/smithy-rpcv2-cbor/src/runtimeConfig.shared.ts index 3711e9114ce..9a8dcb0c145 100644 --- a/private/smithy-rpcv2-cbor/src/runtimeConfig.shared.ts +++ b/private/smithy-rpcv2-cbor/src/runtimeConfig.shared.ts @@ -1,13 +1,14 @@ // smithy-typescript generated code -import { defaultRpcV2ProtocolHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; -import { defaultEndpointResolver } from "./endpoint/endpointResolver"; import { NoAuthSigner } from "@smithy/core"; import { NoOpLogger } from "@smithy/smithy-client"; -import { IdentityProviderConfig } from "@smithy/types"; +import type { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; import { fromBase64, toBase64 } from "@smithy/util-base64"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import { defaultRpcV2ProtocolHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; /** * @internal diff --git a/private/smithy-rpcv2-cbor/src/runtimeConfig.ts b/private/smithy-rpcv2-cbor/src/runtimeConfig.ts index 3922226f4c9..3eddaa7bfeb 100644 --- a/private/smithy-rpcv2-cbor/src/runtimeConfig.ts +++ b/private/smithy-rpcv2-cbor/src/runtimeConfig.ts @@ -3,13 +3,13 @@ import { Hash } from "@smithy/hash-node"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; -import { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; + +import type { RpcV2ProtocolClientConfig } from "./RpcV2ProtocolClient"; import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; -import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; /** * @internal diff --git a/private/smithy-rpcv2-cbor/src/runtimeExtensions.ts b/private/smithy-rpcv2-cbor/src/runtimeExtensions.ts index 22f43123e01..cbba00a4458 100644 --- a/private/smithy-rpcv2-cbor/src/runtimeExtensions.ts +++ b/private/smithy-rpcv2-cbor/src/runtimeExtensions.ts @@ -1,8 +1,9 @@ // smithy-typescript generated code -import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; -import { RpcV2ProtocolExtensionConfiguration } from "./extensionConfiguration"; + +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +import type { RpcV2ProtocolExtensionConfiguration } from "./extensionConfiguration"; /** * @public diff --git a/private/smithy-rpcv2-cbor/test/functional/rpcv2cbor.spec.ts b/private/smithy-rpcv2-cbor/test/functional/rpcv2cbor.spec.ts index 5bcfa791a91..51c85447793 100644 --- a/private/smithy-rpcv2-cbor/test/functional/rpcv2cbor.spec.ts +++ b/private/smithy-rpcv2-cbor/test/functional/rpcv2cbor.spec.ts @@ -1,5 +1,7 @@ // smithy-typescript generated code -import { RpcV2ProtocolClient } from "../../src/RpcV2ProtocolClient"; +import { cbor } from "@smithy/core/cbor"; +import { expect, test as it } from "vitest"; + import { EmptyInputOutputCommand } from "../../src/commands/EmptyInputOutputCommand"; import { Float16Command } from "../../src/commands/Float16Command"; import { FractionalSecondsCommand } from "../../src/commands/FractionalSecondsCommand"; @@ -13,11 +15,10 @@ import { RpcV2CborListsCommand } from "../../src/commands/RpcV2CborListsCommand" import { RpcV2CborSparseMapsCommand } from "../../src/commands/RpcV2CborSparseMapsCommand"; import { SimpleScalarPropertiesCommand } from "../../src/commands/SimpleScalarPropertiesCommand"; import { SparseNullsOperationCommand } from "../../src/commands/SparseNullsOperationCommand"; -import { cbor } from "@smithy/core/cbor"; -import { expect, test as it } from "vitest"; -import { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; -import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; -import { Readable } from "stream"; +import { RpcV2ProtocolClient } from "../../src/RpcV2ProtocolClient"; +import type { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; +import { type HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { Readable } from "node:stream"; /** * Throws an expected exception that contains the serialized request. diff --git a/smithy-typescript-codegen-test/example-weather-customizations/src/main/java/example/weather/ExampleWeatherCustomEndpointsRuntimeConfig.java b/smithy-typescript-codegen-test/example-weather-customizations/src/main/java/example/weather/ExampleWeatherCustomEndpointsRuntimeConfig.java index ee7b5ce98db..8766b5393d0 100644 --- a/smithy-typescript-codegen-test/example-weather-customizations/src/main/java/example/weather/ExampleWeatherCustomEndpointsRuntimeConfig.java +++ b/smithy-typescript-codegen-test/example-weather-customizations/src/main/java/example/weather/ExampleWeatherCustomEndpointsRuntimeConfig.java @@ -71,28 +71,26 @@ public void customize(TypeScriptCodegenContext codegenContext) { }); codegenContext.writerDelegator().useFileWriter(ADD_CUSTOM_ENDPOINTS_FILE, w -> { - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); - w.addDependency(TypeScriptDependency.UTIL_MIDDLEWARE); + w.addTypeImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); w.addImport("normalizeProvider", null, TypeScriptDependency.UTIL_MIDDLEWARE); w.write(""" export interface GenericCustomEndpointsInputConfig { - region?: string | __Provider; - endpointProvider?: any; + region?: string | __Provider; + endpointProvider?: any; } export interface GenericCustomEndpointsResolvedConfig { - region: __Provider; - endpointProvider: any; + region: __Provider; + endpointProvider: any; } export const resolveGenericCustomEndpointsConfig = (config: T & GenericCustomEndpointsInputConfig): \ T & GenericCustomEndpointsResolvedConfig => { - return { - ...config, - endpointProvider: normalizeProvider(config.endpointProvider || "www.amazon.com"), - region: normalizeProvider(config.region || "us-west-2"), - }; + return { + ...config, + endpointProvider: normalizeProvider(config.endpointProvider || "www.amazon.com"), + region: normalizeProvider(config.region || "us-west-2"), + }; } """); }); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ApplicationProtocol.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ApplicationProtocol.java index aef35bc8ded..9255a7261c9 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ApplicationProtocol.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ApplicationProtocol.java @@ -41,10 +41,10 @@ public final class ApplicationProtocol { * @param responseType The type used to represent response messages for the protocol. */ public ApplicationProtocol( - String name, - SymbolReference optionsType, - SymbolReference requestType, - SymbolReference responseType + String name, + SymbolReference optionsType, + SymbolReference requestType, + SymbolReference responseType ) { this.name = name; this.optionsType = optionsType; @@ -59,30 +59,34 @@ public ApplicationProtocol( */ public static ApplicationProtocol createDefaultHttpApplicationProtocol() { return new ApplicationProtocol( - "http", - SymbolReference.builder() - .symbol(createHttpSymbol(TypeScriptDependency.SMITHY_TYPES, "HttpHandlerOptions")) - .alias("__HttpHandlerOptions") - .build(), - SymbolReference.builder() - .symbol(createHttpSymbol(TypeScriptDependency.PROTOCOL_HTTP, "HttpRequest")) - .alias("__HttpRequest") - .build(), - SymbolReference.builder() - .symbol(createHttpSymbol(TypeScriptDependency.PROTOCOL_HTTP, "HttpResponse")) - .alias("__HttpResponse") - .build() + "http", + SymbolReference.builder() + .symbol(createHttpSymbol(TypeScriptDependency.SMITHY_TYPES, "HttpHandlerOptions", true)) + .alias("__HttpHandlerOptions") + .build(), + SymbolReference.builder() + .symbol(createHttpSymbol(TypeScriptDependency.PROTOCOL_HTTP, "HttpRequest", true)) + .alias("__HttpRequest") + .build(), + SymbolReference.builder() + .symbol(createHttpSymbol(TypeScriptDependency.PROTOCOL_HTTP, "HttpResponse", true)) + .alias("__HttpResponse") + .build() ); } - private static Symbol createHttpSymbol(TypeScriptDependency dependency, String symbolName) { - return Symbol.builder() - .namespace(dependency.packageName, "/") - .name(symbolName) - .addDependency(dependency) - .addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER) - .addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER) - .build(); + private static Symbol createHttpSymbol(TypeScriptDependency dependency, String symbolName, boolean typeOnly) { + Symbol.Builder builder = Symbol.builder() + .namespace(dependency.packageName, "/") + .name(symbolName) + .addDependency(dependency) + .addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER) + .addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); + if (typeOnly) { + builder.putProperty("typeOnly", true); + } + return builder + .build(); } /** diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenUtils.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenUtils.java index 4c189c560aa..b9447fa5799 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenUtils.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenUtils.java @@ -71,7 +71,7 @@ public static String getOperationSerializerContextType( // If event stream trait exists, add corresponding serde context type to the intersection type. EventStreamIndex eventStreamIndex = EventStreamIndex.of(model); if (eventStreamIndex.getInputInfo(operation).isPresent()) { - writer.addImport("EventStreamSerdeContext", "__EventStreamSerdeContext", + writer.addTypeImport("EventStreamSerdeContext", "__EventStreamSerdeContext", TypeScriptDependency.SMITHY_TYPES); contextInterfaceList.add("__EventStreamSerdeContext"); } @@ -97,12 +97,12 @@ public static String getOperationDeserializerContextType( // If event stream trait exists, add corresponding serde context type to the intersection type. EventStreamIndex eventStreamIndex = EventStreamIndex.of(model); if (eventStreamIndex.getOutputInfo(operation).isPresent()) { - writer.addImport("EventStreamSerdeContext", "__EventStreamSerdeContext", + writer.addTypeImport("EventStreamSerdeContext", "__EventStreamSerdeContext", TypeScriptDependency.SMITHY_TYPES); contextInterfaceList.add("__EventStreamSerdeContext"); } if (AddSdkStreamMixinDependency.hasStreamingBlobDeser(settings, model, operation)) { - writer.addImport("SdkStreamSerdeContext", "__SdkStreamSerdeContext", + writer.addTypeImport("SdkStreamSerdeContext", "__SdkStreamSerdeContext", TypeScriptDependency.SMITHY_TYPES); contextInterfaceList.add("__SdkStreamSerdeContext"); } @@ -112,7 +112,7 @@ public static String getOperationDeserializerContextType( private static List getDefaultOperationSerdeContextTypes(TypeScriptWriter writer) { List contextInterfaceList = new ArrayList<>(); // Get default SerdeContext. - writer.addImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); contextInterfaceList.add("__SerdeContext"); return contextInterfaceList; } @@ -143,7 +143,7 @@ static void writeClientCommandStreamingInputType( MemberShape streamingMember, String commandName ) { - writer.addImport("StreamingBlobPayloadInputTypes", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StreamingBlobPayloadInputTypes", null, TypeScriptDependency.SMITHY_TYPES); String memberName = streamingMember.getMemberName(); String optionalSuffix = streamingMember.isRequired() ? "" : "?"; @@ -151,7 +151,7 @@ static void writeClientCommandStreamingInputType( writer.write( """ export interface $L extends Omit<$T, $S> { - $L$L: StreamingBlobPayloadInputTypes; + $L$L: StreamingBlobPayloadInputTypes; } """, typeName, @@ -176,14 +176,14 @@ static void writeClientCommandStreamingOutputType( ) { String memberName = streamingMember.getMemberName(); String optionalSuffix = streamingMember.isRequired() ? "" : "?"; - writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("StreamingBlobPayloadOutputTypes", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StreamingBlobPayloadOutputTypes", null, TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("@public\n\nThe output of {@link " + commandName + "}."); writer.write( """ export interface $L extends Omit<$T, $S>, __MetadataBearer { - $L$L: StreamingBlobPayloadOutputTypes; + $L$L: StreamingBlobPayloadOutputTypes; } """, typeName, @@ -215,7 +215,7 @@ static void writeClientCommandBlobPayloadInputType( String memberName = payloadMember.getMemberName(); String optionalSuffix = payloadMember.isRequired() ? "" : "?"; - writer.addImport("BlobPayloadInputTypes", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("BlobPayloadInputTypes", null, TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("@public"); writer.write( diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java index 85e8980ec10..115bba74a26 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java @@ -22,6 +22,7 @@ import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeClientCommandStreamingInputType; import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeClientCommandStreamingOutputType; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.HashSet; @@ -137,9 +138,9 @@ private void generateClientCommand() { String configType = ServiceBareBonesClientGenerator.getResolvedConfigTypeName(serviceSymbol); // Add required imports. - writer.addRelativeImport(configType, null, Paths.get(".", serviceSymbol.getNamespace())); - writer.addRelativeImport("ServiceInputTypes", null, Paths.get(".", serviceSymbol.getNamespace())); - writer.addRelativeImport("ServiceOutputTypes", null, Paths.get(".", serviceSymbol.getNamespace())); + writer.addRelativeTypeImport(configType, null, Paths.get(".", serviceSymbol.getNamespace())); + writer.addRelativeTypeImport("ServiceInputTypes", null, Paths.get(".", serviceSymbol.getNamespace())); + writer.addRelativeTypeImport("ServiceOutputTypes", null, Paths.get(".", serviceSymbol.getNamespace())); writer.addImport("Command", "$Command", TypeScriptDependency.AWS_SMITHY_CLIENT); String name = symbol.getName(); @@ -231,9 +232,18 @@ private void generateClientCommand() { // in IDEs. Shape operationInputShape = model.expectShape(operation.getInputShape()); Symbol baseInput = symbolProvider.toSymbol(operationInputShape); + Shape operationOutputShape = model.expectShape(operation.getOutputShape()); Symbol baseOutput = symbolProvider.toSymbol(operationOutputShape); + if (!operationInputShape.getAllMembers().isEmpty()) { + writer.addRelativeTypeImport(baseInput.getName(), null, Path.of(baseInput.getNamespace())); + } + if (!operationOutputShape.getAllMembers().isEmpty()) { + writer.addRelativeTypeImport(baseOutput.getName(), null, Path.of(baseOutput.getNamespace())); + } + + writer.indent(); writer.write("/** @internal type navigation helper, not in runtime. */"); writer.openBlock("declare protected static __types: {", "};", () -> { String baseInputStr = operationInputShape.getAllMembers().isEmpty() @@ -253,6 +263,7 @@ private void generateClientCommand() { output: $T; };""", inputType, outputType); }); + writer.dedent(); } writer.write("}"); // class close bracket. @@ -576,7 +587,13 @@ private void writeInputType(String typeName, Optional inputShape ); } else { writer.writeDocs("@public\n\nThe input for {@link " + commandName + "}."); - writer.write("export interface $L extends $T {}", typeName, symbolProvider.toSymbol(input)); + Symbol inputSymbol = symbolProvider.toSymbol(input); + writer.addRelativeTypeImport( + inputSymbol.getName(), + null, + Path.of(inputSymbol.getNamespace()) + ); + writer.write("export interface $L extends $L {}", typeName, inputSymbol.getName()); } } else { // If the input is non-existent, then use an empty object. @@ -588,7 +605,7 @@ private void writeInputType(String typeName, Optional inputShape private void writeOutputType(String typeName, Optional outputShape, String commandName) { // Output types should always be MetadataBearers, possibly in addition // to a defined output shape. - writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); if (outputShape.isPresent()) { StructureShape output = outputShape.get(); List blobStreamingMembers = getBlobStreamingMembers(model, output); @@ -606,8 +623,14 @@ private void writeOutputType(String typeName, Optional outputSha ); } else { writer.writeDocs("@public\n\nThe output of {@link " + commandName + "}."); - writer.write("export interface $L extends $T, __MetadataBearer {}", - typeName, symbolProvider.toSymbol(outputShape.get())); + Symbol outputSymbol = symbolProvider.toSymbol(output); + writer.addRelativeTypeImport( + outputSymbol.getName(), + null, + Path.of(outputSymbol.getNamespace()) + ); + writer.write("export interface $L extends $L, __MetadataBearer {}", + typeName, outputSymbol.getName()); } } else { writer.writeDocs("@public\n\nThe output of {@link " + commandName + "}."); @@ -626,7 +649,6 @@ private void addCommandSpecificPlugins() { Map paramsMap = plugin.getAdditionalPluginFunctionParameters( model, service, operation); - // Construct writer context Map symbolMap = new HashMap<>(); symbolMap.put("pluginFn", pluginSymbol); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ExtensionConfigurationGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ExtensionConfigurationGenerator.java index a35a4fd20b8..18e24fbd2bb 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ExtensionConfigurationGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ExtensionConfigurationGenerator.java @@ -79,7 +79,7 @@ void generate() { delegator.useFileWriter(Paths.get(CodegenUtils.SOURCE_FOLDER, FILENAME).toString(), writer -> { interfaces.entrySet().forEach(entry -> { writer.addDependency(entry.getValue()); - writer.addImport(entry.getKey(), null, entry.getValue()); + writer.addTypeImport(entry.getKey(), null, entry.getValue()); }); writer.write(clientConfigurationContent); }); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/HttpProtocolTestGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/HttpProtocolTestGenerator.java index 235286e5b46..5c440d367ae 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/HttpProtocolTestGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/HttpProtocolTestGenerator.java @@ -118,7 +118,10 @@ public HttpProtocolTestGenerator( this.service = settings.getService(model); this.symbolProvider = context.getSymbolProvider(); this.protocolGenerator = protocolGenerator; - serviceSymbol = symbolProvider.toSymbol(service); + serviceSymbol = symbolProvider.toSymbol(service) + .toBuilder() + .putProperty("typeOnly", false) + .build(); this.testFilter = testFilter; this.malformedRequestTestFilter = malformedRequestTestFilter; this.context = context; @@ -230,7 +233,6 @@ private void initializeWriterIfNeeded() { if (writer == null) { context.getWriterDelegator().useFileWriter(createTestCaseFilename(), writer -> this.writer = writer); writer.addDependency(TypeScriptDependency.SMITHY_TYPES); - writer.addDependency(TypeScriptDependency.SMITHY_TYPES); writer.addDependency(TypeScriptDependency.PROTOCOL_HTTP); // Add the template to each generated test. writer.write(IoUtils.readUtf8Resource(getClass(), "protocol-test-stub.ts")); @@ -610,7 +612,7 @@ private String registerBodyComparatorStub(String mediaType) { additionalStubs.add("protocol-test-xml-stub.ts"); return "compareEquivalentXmlBodies(bodyString, r.body.toString())"; case "application/octet-stream": - writer.addImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); additionalStubs.add("protocol-test-octet-stream-stub.ts"); return "compareEquivalentOctetStreamBodies(utf8Encoder, bodyString, r.body)"; case "text/plain": @@ -624,7 +626,7 @@ private String registerBodyComparatorStub(String mediaType) { default: LOGGER.warning("Unable to compare bodies with unknown media type `" + mediaType + "`, defaulting to direct comparison."); - writer.addImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); additionalStubs.add("protocol-test-unknown-type-stub.ts"); return "compareEquivalentUnknownTypeBodies(utf8Encoder, bodyString, r.body)"; } @@ -964,7 +966,7 @@ private void openTestBlock( ) { // Skipped tests are still generated, just not run. if (testFilter.skip(service, operation, testCase, settings)) { - writer.openBlock("it.skip($S, async() => {", "});\n", testName, f); + writer.openBlock("it.skip($S, async () => {", "});\n", testName, f); } else { writer.openBlock("it($S, async () => {", "});\n", testName, f); } @@ -978,7 +980,7 @@ private void openTestBlock( ) { // Skipped tests are still generated, just not run. if (malformedRequestTestFilter.skip(service, operation, testCase, settings)) { - writer.openBlock("it.skip($S, async() => {", "});\n", testName, f); + writer.openBlock("it.skip($S, async () => {", "});\n", testName, f); } else { writer.openBlock("it($S, async () => {", "});\n", testName, f); } diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ImportDeclarations.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ImportDeclarations.java index 9b30121ec93..1744ca1f3ee 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ImportDeclarations.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ImportDeclarations.java @@ -18,9 +18,11 @@ import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.ImportContainer; import software.amazon.smithy.codegen.core.Symbol; @@ -37,6 +39,7 @@ final class ImportDeclarations implements ImportContainer { private final String relativize; private final Map> defaultImports = new TreeMap<>(); private final Map> namedImports = new TreeMap<>(); + private final Map> namedTypeImports = new TreeMap<>(); ImportDeclarations(String relativize) { relativize = relativize.replace(File.separatorChar, '/'); @@ -76,20 +79,32 @@ ImportDeclarations addImport(String name, String alias, String module) { if (alias == null || alias.isEmpty()) { alias = name; } - module = getRelativizedModule(relativize, module); - if (!module.isEmpty() && (relativize == null || !module.equals(relativize.toString()))) { namedImports.computeIfAbsent(module, m -> new TreeMap<>()).put(alias, name); } + return this; + } + ImportDeclarations addTypeImport(String name, String alias, String module) { + if (alias == null || alias.isEmpty()) { + alias = name; + } + module = getRelativizedModule(relativize, module); + if (!module.isEmpty() && (relativize == null || !module.equals(relativize.toString()))) { + namedTypeImports.computeIfAbsent(module, m -> new TreeMap<>()).put(alias, name); + } return this; } @Override public void importSymbol(Symbol symbol, String alias) { if (!symbol.getNamespace().isEmpty() && !symbol.getNamespace().equals(moduleNameString)) { - addImport(symbol.getName(), alias, symbol.getNamespace()); + if (symbol.getProperty("typeOnly").map(o -> (Boolean) o).orElse(false)) { + addTypeImport(symbol.getName(), alias, symbol.getNamespace()); + } else { + addImport(symbol.getName(), alias, symbol.getNamespace()); + } } } @@ -104,10 +119,10 @@ public String toString() { result.append("// @ts-ignore: ").append(importEntry.getValue().getRight().reason).append("\n"); } result.append("import ") - .append(importEntry.getValue().getLeft()) - .append(" from \"") - .append(importEntry.getKey()) - .append("\";"); + .append(importEntry.getValue().getLeft()) + .append(" from \"") + .append(importEntry.getKey()) + .append("\";"); if (ignore) { result.append(" // eslint-disable-line"); } @@ -116,46 +131,119 @@ public String toString() { result.append('\n'); } - if (!namedImports.isEmpty()) { - for (Map.Entry> entry : namedImports.entrySet()) { - String module = entry.getKey(); - Map moduleImports = entry.getValue(); - Set> entries = moduleImports.entrySet(); + createImports(namedImports, namedTypeImports, result); + + return result.toString(); + } + + private static void createImports(Map> namedImports, + Map> namedTypeImports, + StringBuilder buffer) { + TreeSet mergedModuleKeys = new TreeSet<>((a, b) -> { + if (a.startsWith(".") && !b.startsWith(".")) { + return 1; + } + if (!a.startsWith(".") && b.startsWith(".")) { + return -1; + } + if (a.equalsIgnoreCase(b)) { + return a.compareTo(b); + } + return a.toLowerCase().compareTo(b.toLowerCase()); + }); + mergedModuleKeys.addAll(namedImports.keySet()); + mergedModuleKeys.addAll(namedTypeImports.keySet()); + + // separate non-relative and relative imports. + long separatorIndex = mergedModuleKeys.stream() + .filter(k -> !k.startsWith(".")) + .count(); + int i = 0; + boolean needsSeparator = separatorIndex > 0 && separatorIndex < mergedModuleKeys.size(); + + for (String module : mergedModuleKeys) { + if (i++ == separatorIndex && needsSeparator) { + buffer.append("\n"); + } + Map moduleImports = namedImports.getOrDefault(module, Collections.emptyMap()); + Map typeImports = namedTypeImports.getOrDefault(module, Collections.emptyMap()); + + TreeSet mergedSymbolKeys = new TreeSet<>(); + mergedSymbolKeys.addAll(moduleImports.keySet()); + mergedSymbolKeys.addAll(typeImports.keySet()); + + Set imports = new TreeSet<>((a, b) -> { + boolean aType = a.startsWith("type "); + boolean bType = b.startsWith("type "); + if (aType && !bType) { + return -1; + } + if (!aType && bType) { + return 1; + } + String normalA = a.replaceAll("(type )|( as (.*?))", ""); + String normalB = b.replaceAll("(type )|( as (.*?))", ""); + if (normalA.equals(normalB)) { + return a.compareTo(b); + } + return normalA.compareTo(normalB); + }); + + for (String alias : mergedSymbolKeys) { + String runtimeSymbol = moduleImports.get(alias); + String typeSymbol = typeImports.get(alias); // "*" imports are not supported https://github.com/smithy-lang/smithy-typescript/issues/211 - for (Map.Entry importEntry : entries) { - if (importEntry.getValue().equals("*")) { - throw new CodegenException("Star imports are not supported, attempted for " + module - + ". Use default import instead."); - } + if ("*".equals(runtimeSymbol) || "*".equals(typeSymbol)) { + throw new CodegenException("Star imports are not supported, attempted for " + module + + ". Use default import instead."); } - if (entries.size() == 1) { - result.append("import { ") - .append(createImportStatement(entries.iterator().next())) - .append(" } from \"") - .append(module) - .append("\";\n"); - } else if (!entries.isEmpty()) { - result.append("import {\n"); - for (Map.Entry importEntry : entries) { - result.append(" "); - result.append(createImportStatement(importEntry)); - result.append(",\n"); + if (runtimeSymbol != null) { + if (!alias.equals(runtimeSymbol)) { + imports.add("%s as %s".formatted(runtimeSymbol, alias)); + } else { + imports.add(runtimeSymbol); + } + } else if (typeSymbol != null) { + if (!alias.equals(typeSymbol)) { + imports.add("type %s as %s".formatted(typeSymbol, alias)); + } else { + imports.add("type " + typeSymbol); } - result.append("} from \"").append(module).append("\";\n"); } } - result.append("\n"); - } - return result.toString(); - } + if (!imports.isEmpty()) { + String head; + String symbols; + String source; + String tail; - private static String createImportStatement(Map.Entry entry) { - return entry.getKey().equals(entry.getValue()) - ? entry.getKey() - : entry.getValue() + " as " + entry.getKey(); + if (imports.size() <= 2) { + head = "import { "; + symbols = String.join(", ", imports); + source = " } from \"" + module; + tail = "\";\n"; + } else { + head = "import {\n "; + symbols = String.join(",\n ", imports); + source = ",\n} from \"" + module; + tail = "\";\n"; + } + + boolean allImportsAreTypes = imports.stream().allMatch(s -> s.startsWith("type ")); + if (allImportsAreTypes) { + head = head.replace("import ", "import type "); + symbols = symbols.replaceAll("type ", ""); + } + + buffer.append(head).append(symbols).append(source).append(tail); + } + } + if (!namedImports.isEmpty() || !namedTypeImports.isEmpty()) { + buffer.append("\n"); + } } private static String getRelativizedModule(String relativize, String module) { diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PaginationGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PaginationGenerator.java index 9fc7d5ac60d..9c68e2ccaa9 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PaginationGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PaginationGenerator.java @@ -97,7 +97,7 @@ public void run() { Paths.get(".", serviceSymbol.getNamespace())); // Import Pagination types - writer.addImport("Paginator", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Paginator", null, TypeScriptDependency.SMITHY_TYPES); writer.addRelativeImport(paginationType, paginationType, Paths.get(".", PAGINATION_INTERFACE_FILE.replace(".ts", ""))); @@ -114,7 +114,7 @@ static void generateServicePaginationInterfaces( Symbol service, TypeScriptWriter writer ) { - writer.addImport("PaginationConfiguration", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("PaginationConfiguration", null, TypeScriptDependency.SMITHY_TYPES); writer.addRelativeImport(service.getName(), service.getName(), Paths.get(".", service.getNamespace())); writer.writeDocs("@public") .openBlock("export interface $LPaginationConfiguration extends PaginationConfiguration {", @@ -183,17 +183,17 @@ private void writePager() { .write( """ export const paginate${operation:L}: ( - config: ${aggClient:L}PaginationConfiguration, - input: ${inputType:L}, - ...rest: any[] + config: ${aggClient:L}PaginationConfiguration, + input: ${inputType:L}, + ...rest: any[] ) => Paginator<${outputType:L}> = - createPaginator<${paginationType:L}, ${inputType:L}, ${outputType:L}>( - ${serviceTypeName:L}, - ${operationName:L}, - ${inputToken:S}, - ${outputToken:S}, - ${pageSizeMember:S} - ); + createPaginator<${paginationType:L}, ${inputType:L}, ${outputType:L}>( + ${serviceTypeName:L}, + ${operationName:L}, + ${inputToken:S}, + ${outputToken:S}, + ${pageSizeMember:S} + ); """ ) .popState(); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java index 9fce5fa7693..412e9d5d21d 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java @@ -15,6 +15,7 @@ package software.amazon.smithy.typescript.codegen; +import java.nio.file.Paths; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -54,108 +55,94 @@ final class RuntimeConfigGenerator { private final List integrations; private final ApplicationProtocol applicationProtocol; private final Map> nodeRuntimeConfigDefaults = MapUtils.of( - "requestHandler", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); - writer.addImport("NodeHttpHandler", "RequestHandler", - TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); - writer.write("RequestHandler.create(config?.requestHandler ?? defaultConfigProvider)"); - }, - "sha256", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_HASH_NODE); - writer.addImport("Hash", null, TypeScriptDependency.AWS_SDK_HASH_NODE); - writer.write("Hash.bind(null, \"sha256\")"); - }, - "bodyLengthChecker", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_NODE); - writer.addImport("calculateBodyLength", null, TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_NODE); - writer.write("calculateBodyLength"); - }, - "streamCollector", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); - writer.addImport("streamCollector", null, TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); - writer.write("streamCollector"); - } + "requestHandler", writer -> { + writer.addImport("NodeHttpHandler", "RequestHandler", + TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); + writer.write("RequestHandler.create(config?.requestHandler ?? defaultConfigProvider)"); + }, + "sha256", writer -> { + writer.addImport("Hash", null, TypeScriptDependency.AWS_SDK_HASH_NODE); + writer.write("Hash.bind(null, \"sha256\")"); + }, + "bodyLengthChecker", writer -> { + writer.addImport("calculateBodyLength", null, TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_NODE); + writer.write("calculateBodyLength"); + }, + "streamCollector", writer -> { + writer.addImport("streamCollector", null, TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER); + writer.write("streamCollector"); + } ); private final Map> browserRuntimeConfigDefaults = MapUtils.of( - "requestHandler", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); - writer.addImport("FetchHttpHandler", "RequestHandler", - TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); - writer.write("RequestHandler.create(config?.requestHandler ?? defaultConfigProvider)"); - }, - "sha256", writer -> { - writer.addDependency(TypeScriptDependency.AWS_CRYPTO_SHA256_BROWSER); - writer.addImport("Sha256", null, TypeScriptDependency.AWS_CRYPTO_SHA256_BROWSER); - writer.write("Sha256"); - }, - "bodyLengthChecker", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_BROWSER); - writer.addImport("calculateBodyLength", null, TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_BROWSER); - writer.write("calculateBodyLength"); - }, - "streamCollector", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); - writer.addImport("streamCollector", null, - TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); - writer.write("streamCollector"); - } + "requestHandler", writer -> { + writer.addImport("FetchHttpHandler", "RequestHandler", + TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); + writer.write("RequestHandler.create(config?.requestHandler ?? defaultConfigProvider)"); + }, + "sha256", writer -> { + writer.addImport("Sha256", null, TypeScriptDependency.AWS_CRYPTO_SHA256_BROWSER); + writer.write("Sha256"); + }, + "bodyLengthChecker", writer -> { + writer.addImport("calculateBodyLength", null, TypeScriptDependency.AWS_SDK_UTIL_BODY_LENGTH_BROWSER); + writer.write("calculateBodyLength"); + }, + "streamCollector", writer -> { + writer.addImport("streamCollector", null, + TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER); + writer.write("streamCollector"); + } ); private final Map> reactNativeRuntimeConfigDefaults = MapUtils.of( - "sha256", writer -> { - writer.addDependency(TypeScriptDependency.AWS_CRYPTO_SHA256_JS); - writer.addImport("Sha256", null, TypeScriptDependency.AWS_CRYPTO_SHA256_JS); - writer.write("Sha256"); - } + "sha256", writer -> { + writer.addImport("Sha256", null, TypeScriptDependency.AWS_CRYPTO_SHA256_JS); + writer.write("Sha256"); + } ); private final Map> sharedRuntimeConfigDefaults = MapUtils.of( - "base64Decoder", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_BASE64); - writer.addImport("fromBase64", null, - TypeScriptDependency.AWS_SDK_UTIL_BASE64); - writer.write("fromBase64"); - }, - "base64Encoder", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_BASE64); - writer.addImport("toBase64", null, - TypeScriptDependency.AWS_SDK_UTIL_BASE64); - writer.write("toBase64"); - }, - "disableHostPrefix", writer -> { - writer.write("false"); - }, - "urlParser", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_URL_PARSER); - writer.addImport("parseUrl", null, - TypeScriptDependency.AWS_SDK_URL_PARSER); - writer.write("parseUrl"); - }, - "utf8Decoder", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_UTF8); - writer.addImport("fromUtf8", null, - TypeScriptDependency.AWS_SDK_UTIL_UTF8); - writer.write("fromUtf8"); - }, - "utf8Encoder", writer -> { - writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_UTF8); - writer.addImport("toUtf8", null, - TypeScriptDependency.AWS_SDK_UTIL_UTF8); - writer.write("toUtf8"); - }, - "extensions", writer -> { - writer.write("[]"); - } + "base64Decoder", writer -> { + writer.addImport("fromBase64", null, + TypeScriptDependency.AWS_SDK_UTIL_BASE64); + writer.write("fromBase64"); + }, + "base64Encoder", writer -> { + writer.addImport("toBase64", null, + TypeScriptDependency.AWS_SDK_UTIL_BASE64); + writer.write("toBase64"); + }, + "disableHostPrefix", writer -> { + writer.write("false"); + }, + "urlParser", writer -> { + writer.addImport("parseUrl", null, + TypeScriptDependency.AWS_SDK_URL_PARSER); + writer.write("parseUrl"); + }, + "utf8Decoder", writer -> { + writer.addImport("fromUtf8", null, + TypeScriptDependency.AWS_SDK_UTIL_UTF8); + writer.write("fromUtf8"); + }, + "utf8Encoder", writer -> { + writer.addImport("toUtf8", null, + TypeScriptDependency.AWS_SDK_UTIL_UTF8); + writer.write("toUtf8"); + }, + "extensions", writer -> { + writer.write("[]"); + } ); private final Map runtimeConfigDefaultValuePrefixes = MapUtils.of( "requestHandler", "" ); RuntimeConfigGenerator( - TypeScriptSettings settings, - Model model, - SymbolProvider symbolProvider, - TypeScriptDelegator delegator, - List integrations, - ApplicationProtocol applicationProtocol + TypeScriptSettings settings, + Model model, + SymbolProvider symbolProvider, + TypeScriptDelegator delegator, + List integrations, + ApplicationProtocol applicationProtocol ) { this.settings = settings; this.model = model; @@ -167,17 +154,21 @@ final class RuntimeConfigGenerator { } void generate(LanguageTarget target) { + String clientConfigName = symbolProvider.toSymbol(service).getName() + "Config"; + String clientModuleName = symbolProvider.toSymbol(service).getNamespace() + .replaceFirst(CodegenUtils.SOURCE_FOLDER + "/", ""); + String template = TypeScriptUtils.loadResourceAsString(target.getTemplateFileName()); String contents = template - .replace("${clientModuleName}", symbolProvider.toSymbol(service).getNamespace() - .replaceFirst(CodegenUtils.SOURCE_FOLDER + "/", "")) - .replace("${clientConfigName}", symbolProvider.toSymbol(service).getName() + "Config") - .replace("${apiVersion}", service.getVersion()) - .replace("${", "$${") // sanitize template place holders. - .replace("$${customizations}", "${L@customizations}") - .replace("$${prepareCustomizations}", "${L@prepareCustomizations}"); + .replace("${clientConfigName}", clientConfigName) + .replace("${apiVersion}", service.getVersion()) + .replace("${", "$${") // sanitize template place holders. + .replace("$${customizations}", "${L@customizations}") + .replace("$${prepareCustomizations}", "${L@prepareCustomizations}"); delegator.useFileWriter(target.getTargetFilename(), writer -> { + writer.trimBlankLines(0); + // Inject customizations into the ~template. writer.onSection("prepareCustomizations", original -> { for (TypeScriptIntegration integration : integrations) { @@ -217,6 +208,53 @@ void generate(LanguageTarget target) { }); }); writer.dedent(); + + writer.addRelativeTypeImport( + clientConfigName, null, + Paths.get(".", CodegenUtils.SOURCE_FOLDER, clientModuleName)); + + switch (target) { + case NODE: + case BROWSER: + writer.addRelativeImport( + "getRuntimeConfig", + "getSharedRuntimeConfig", + Paths.get(".", CodegenUtils.SOURCE_FOLDER, "runtimeConfig.shared") + ); + writer.addImport( + "loadConfigsForDefaultMode", null, TypeScriptDependency.AWS_SMITHY_CLIENT); + break; + default: + break; + } + + switch (target) { + case NODE -> { + writer.addImport( + "emitWarningIfUnsupportedVersion", null, TypeScriptDependency.AWS_SMITHY_CLIENT); + writer.addImport( + "resolveDefaultsModeConfig", null, + TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_NODE + ); + } + case BROWSER -> { + writer.addImport( + "resolveDefaultsModeConfig", null, + TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_BROWSER + ); + } + case REACT_NATIVE -> { + writer.addRelativeImport( + "getRuntimeConfig", + "getBrowserRuntimeConfig", + Paths.get(".", CodegenUtils.SOURCE_FOLDER, "runtimeConfig.browser") + ); + } + default -> { + // checkstyle + } + } + writer.write(contents, "", ""); }); } @@ -231,11 +269,11 @@ private void generateHttpAuthSchemeConfig( if (target.equals(LanguageTarget.SHARED)) { configs.put("httpAuthSchemeProvider", w -> { w.write("$T", Symbol.builder() - .name("default" - + CodegenUtils.getServiceName(settings, model, symbolProvider) - + "HttpAuthSchemeProvider") - .namespace(AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY.getPackageName(), "/") - .build()); + .name("default" + + CodegenUtils.getServiceName(settings, model, symbolProvider) + + "HttpAuthSchemeProvider") + .namespace(AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY.getPackageName(), "/") + .build()); }); } @@ -245,15 +283,15 @@ private void generateHttpAuthSchemeConfig( AuthUtils.getAllEffectiveNoAuthAwareAuthSchemes(service, serviceIndex, authIndex, topDownIndex); List targetAuthSchemes = getHttpAuthSchemeTargets(target, allEffectiveHttpAuthSchemes); - // Generate only if the "inherited" target is different than the current target + // Generate only if the "inherited" target is different from the current target List inheritedAuthSchemes = Collections.emptyList(); // Always generated the SHARED target if (target.equals(LanguageTarget.SHARED)) { // no-op - // NODE and BROWSER inherit from SHARED + // NODE and BROWSER inherit from SHARED } else if (target.equals(LanguageTarget.NODE) || target.equals(LanguageTarget.BROWSER)) { inheritedAuthSchemes = getHttpAuthSchemeTargets(LanguageTarget.SHARED, allEffectiveHttpAuthSchemes); - // REACT_NATIVE inherits from BROWSER + // REACT_NATIVE inherits from BROWSER } else if (target.equals(LanguageTarget.REACT_NATIVE)) { inheritedAuthSchemes = getHttpAuthSchemeTargets(LanguageTarget.BROWSER, allEffectiveHttpAuthSchemes); } else { @@ -266,8 +304,7 @@ private void generateHttpAuthSchemeConfig( } configs.put("httpAuthSchemes", w -> { - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("IdentityProviderConfig", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("IdentityProviderConfig", null, TypeScriptDependency.SMITHY_TYPES); w.openBlock("[", "]", () -> { Iterator iter = targetAuthSchemes.iterator(); while (iter.hasNext()) { @@ -326,8 +363,8 @@ public boolean equals(Object other) { } HttpAuthSchemeTarget o = (HttpAuthSchemeTarget) other; return Objects.equals(httpAuthScheme, o.httpAuthScheme) - && Objects.equals(identityProvider, o.identityProvider) - && Objects.equals(signer, o.signer); + && Objects.equals(identityProvider, o.identityProvider) + && Objects.equals(signer, o.signer); } @Override diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceAggregatedClientGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceAggregatedClientGenerator.java index cde823dc291..e35f9d08ae8 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceAggregatedClientGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceAggregatedClientGenerator.java @@ -15,7 +15,6 @@ package software.amazon.smithy.typescript.codegen; -import java.nio.file.Paths; import java.util.Set; import java.util.TreeSet; import software.amazon.smithy.codegen.core.Symbol; @@ -49,12 +48,12 @@ final class ServiceAggregatedClientGenerator implements Runnable { private final ApplicationProtocol applicationProtocol; ServiceAggregatedClientGenerator( - TypeScriptSettings settings, - Model model, - SymbolProvider symbolProvider, - String aggregateClientName, - TypeScriptWriter writer, - ApplicationProtocol applicationProtocol + TypeScriptSettings settings, + Model model, + SymbolProvider symbolProvider, + String aggregateClientName, + TypeScriptWriter writer, + ApplicationProtocol applicationProtocol ) { this.settings = settings; this.model = model; @@ -63,17 +62,23 @@ final class ServiceAggregatedClientGenerator implements Runnable { this.writer = writer; this.aggregateClientName = aggregateClientName; this.applicationProtocol = applicationProtocol; - serviceSymbol = symbolProvider.toSymbol(service); + serviceSymbol = symbolProvider.toSymbol(service) + .toBuilder() + .putProperty("typeOnly", false) + .build(); } @Override public void run() { TopDownIndex topDownIndex = TopDownIndex.of(model); final Set containedOperations = new TreeSet<>(topDownIndex.getContainedOperations(service)); - writer.openBlock("const commands = {", "}", () -> { + writer.openBlock("const commands = {", "};", () -> { for (OperationShape operation : containedOperations) { - Symbol operationSymbol = symbolProvider.toSymbol(operation); - writer.write("$L,", operationSymbol.getName()); + Symbol operationSymbol = symbolProvider.toSymbol(operation) + .toBuilder() + .putProperty("typeOnly", false) + .build(); + writer.write("$T,", operationSymbol); } }); @@ -85,10 +90,9 @@ public void run() { Symbol operationSymbol = symbolProvider.toSymbol(operation); Symbol input = operationSymbol.expectProperty("inputType", Symbol.class); Symbol output = operationSymbol.expectProperty("outputType", Symbol.class); - writer.addUseImports(operationSymbol); String methodName = StringUtils.uncapitalize( - operationSymbol.getName().replaceAll("Command$", "") + operationSymbol.getName().replaceAll("Command$", "") ); // Generate a multiple overloaded methods for each command. @@ -123,12 +127,6 @@ public void run() { writer.write(""); - writer.addRelativeImport( - ServiceBareBonesClientGenerator.getConfigTypeName(serviceSymbol), - null, - Paths.get(".", serviceSymbol.getNamespace()) - ); - // Generate the client and extend from the bare-bones client. writer.writeShapeDocs(service); writer.write("export class $L extends $T implements $L {}", diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceBareBonesClientGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceBareBonesClientGenerator.java index ca11cc5e69b..69a3beebce6 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceBareBonesClientGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceBareBonesClientGenerator.java @@ -115,7 +115,7 @@ public void run() { writeInputOutputTypeUnion("ServiceOutputTypes", writer, operationSymbol -> operationSymbol.getProperty("outputType", Symbol.class), writer -> { // Use a MetadataBearer if an operation doesn't define output. - writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.SMITHY_TYPES); writer.write("| __MetadataBearer"); }); @@ -125,10 +125,10 @@ public void run() { } private void writeInputOutputTypeUnion( - String typeName, - TypeScriptWriter writer, - Function> mapper, - Consumer defaultTypeGenerator + String typeName, + TypeScriptWriter writer, + Function> mapper, + Consumer defaultTypeGenerator ) { TopDownIndex topDownIndex = TopDownIndex.of(model); Set containedOperations = topDownIndex.getContainedOperations(service); @@ -154,10 +154,10 @@ private void writeInputOutputTypeUnion( } private void generateConfig() { - writer.addRelativeImport("RuntimeExtensionsConfig", null, + writer.addRelativeTypeImport("RuntimeExtensionsConfig", null, Paths.get(".", CodegenUtils.SOURCE_FOLDER, "runtimeExtensions")); - writer.addImport("SmithyConfiguration", "__SmithyConfiguration", TypeScriptDependency.AWS_SMITHY_CLIENT); - writer.addImport("SmithyResolvedConfiguration", "__SmithyResolvedConfiguration", + writer.addTypeImport("SmithyConfiguration", "__SmithyConfiguration", TypeScriptDependency.AWS_SMITHY_CLIENT); + writer.addTypeImport("SmithyResolvedConfiguration", "__SmithyResolvedConfiguration", TypeScriptDependency.AWS_SMITHY_CLIENT); // Hook for intercepting the client configuration. @@ -191,7 +191,7 @@ private void generateConfig() { writer.indent(); for (SymbolReference symbolReference : inputTypes) { if (symbolReference.getAlias().equals("EndpointInputConfig")) { - writer.addImport( + writer.addTypeImport( "EndpointParameters", null, EndpointsV2Generator.ENDPOINT_PARAMETERS_DEPENDENCY @@ -201,7 +201,7 @@ private void generateConfig() { writer.write("& $T", symbolReference); } } - writer.addImport("ClientInputEndpointParameters", null, + writer.addTypeImport("ClientInputEndpointParameters", null, EndpointsV2Generator.ENDPOINT_PARAMETERS_DEPENDENCY); writer.write("& ClientInputEndpointParameters"); writer.dedent(); @@ -226,7 +226,7 @@ private void generateConfig() { .flatMap(p -> OptionalUtils.stream(p.getResolvedConfig())) .forEach(symbol -> { if (symbol.getAlias().equals("EndpointResolvedConfig")) { - writer.addImport( + writer.addTypeImport( "EndpointParameters", null, EndpointsV2Generator.ENDPOINT_PARAMETERS_DEPENDENCY @@ -236,7 +236,7 @@ private void generateConfig() { writer.write("& $T", symbol); } }); - writer.addImport("ClientResolvedEndpointParameters", null, + writer.addTypeImport("ClientResolvedEndpointParameters", null, EndpointsV2Generator.ENDPOINT_PARAMETERS_DEPENDENCY); writer.write("& ClientResolvedEndpointParameters"); writer.dedent(); @@ -257,41 +257,40 @@ private void generateClientDefaults() { } writer.writeDocs("@public") - .openBlock("export interface ClientDefaults\n" - + " extends Partial<__SmithyConfiguration<$T>> {", "}", + .openBlock("export interface ClientDefaults extends Partial<__SmithyConfiguration<$T>> {", "}", applicationProtocol.getOptionsType(), () -> { - writer.addImport("HttpHandlerUserInput", "__HttpHandlerUserInput", TypeScriptDependency.PROTOCOL_HTTP); + writer.addTypeImport("HttpHandlerUserInput", "__HttpHandlerUserInput", TypeScriptDependency.PROTOCOL_HTTP); writer.writeDocs( "The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs." ); writer.write("requestHandler?: __HttpHandlerUserInput;\n"); - writer.addImport("HashConstructor", "__HashConstructor", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("ChecksumConstructor", "__ChecksumConstructor", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HashConstructor", "__HashConstructor", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("ChecksumConstructor", "__ChecksumConstructor", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs(""" A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface that computes the SHA-256 HMAC or checksum of a string or binary buffer. @internal"""); writer.write("sha256?: __ChecksumConstructor | __HashConstructor;\n"); - writer.addImport("UrlParser", "__UrlParser", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("UrlParser", "__UrlParser", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("The function that will be used to convert strings into HTTP endpoints.\n" + "@internal"); writer.write("urlParser?: __UrlParser;\n"); - writer.addImport("BodyLengthCalculator", "__BodyLengthCalculator", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("BodyLengthCalculator", "__BodyLengthCalculator", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("A function that can calculate the length of a request body.\n" + "@internal"); writer.write("bodyLengthChecker?: __BodyLengthCalculator;\n"); - writer.addImport("StreamCollector", "__StreamCollector", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StreamCollector", "__StreamCollector", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("A function that converts a stream into an array of bytes.\n" + "@internal"); writer.write("streamCollector?: __StreamCollector;\n"); // Note: Encoder and Decoder are both used for base64 and UTF. - writer.addImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Decoder", "__Decoder", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Encoder", "__Encoder", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Decoder", "__Decoder", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("The function that will be used to convert a base64-encoded string to a byte array.\n" + "@internal"); @@ -368,7 +367,7 @@ private void generateClientProperties() { } private void generateConstructor() { - writer.addImport("CheckOptionalClientConfig", "__CheckOptionalClientConfig", + writer.addTypeImport("CheckOptionalClientConfig", "__CheckOptionalClientConfig", TypeScriptDependency.SMITHY_TYPES); writer.openBlock("constructor(...[configuration]: __CheckOptionalClientConfig<$L>) {", "}", configType, () -> { // Hook for adding/changing the client constructor. @@ -394,10 +393,10 @@ private void generateConstructor() { generateConfigVariable(configVariable - 1)); // Add runtime plugin "resolve" method calls. These are invoked one - // after the other until all of the runtime plugins have been called. + // after the other until all the runtime plugins have been called. // Only plugins that have configuration are called. Each time the // configuration is updated, the configuration variable is incremented - // (e.g., _config_0, _config_1, etc). + // (e.g., _config_0, _config_1, etc.). for (RuntimeClientPlugin plugin : runtimePlugins) { if (plugin.getResolveFunction().isPresent()) { configVariable++; diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/StructuredMemberWriter.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/StructuredMemberWriter.java index cbfbece087c..283ff141cdd 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/StructuredMemberWriter.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/StructuredMemberWriter.java @@ -160,7 +160,7 @@ void writeErrorConstructor(TypeScriptWriter writer, Shape shape, boolean isServe if (!isServerSdk) { writer.writeDocs("@internal"); } - writer.addImport("ExceptionOptionType", "__ExceptionOptionType", + writer.addTypeImport("ExceptionOptionType", "__ExceptionOptionType", TypeScriptDependency.AWS_SMITHY_CLIENT); writer.openBlock("constructor(opts: __ExceptionOptionType<$L, __BaseException>) {", symbol.getName()); writer.openBlock("super({", "});", () -> { diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java index 90c7ab96c2a..1aa5c929923 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java @@ -45,6 +45,7 @@ import software.amazon.smithy.model.shapes.ByteShape; import software.amazon.smithy.model.shapes.DocumentShape; import software.amazon.smithy.model.shapes.DoubleShape; +import software.amazon.smithy.model.shapes.EnumShape; import software.amazon.smithy.model.shapes.FloatShape; import software.amazon.smithy.model.shapes.IntEnumShape; import software.amazon.smithy.model.shapes.IntegerShape; @@ -70,6 +71,7 @@ import software.amazon.smithy.model.traits.MediaTypeTrait; import software.amazon.smithy.model.traits.StreamingTrait; import software.amazon.smithy.model.traits.UnitTypeTrait; +import software.amazon.smithy.typescript.codegen.schema.SchemaGenerationAllowlist; import software.amazon.smithy.utils.SmithyInternalApi; import software.amazon.smithy.utils.StringUtils; @@ -90,6 +92,7 @@ final class SymbolVisitor implements SymbolProvider, ShapeVisitor { private final ReservedWordSymbolProvider.Escaper escaper; private final Set errorShapes = new HashSet<>(); private final ModuleNameDelegator moduleNameDelegator; + private final boolean schemaMode; SymbolVisitor(Model model, TypeScriptSettings settings) { this(model, settings, ModuleNameDelegator.DEFAULT_CHUNK_SIZE); @@ -98,22 +101,23 @@ final class SymbolVisitor implements SymbolProvider, ShapeVisitor { SymbolVisitor(Model model, TypeScriptSettings settings, int shapeChunkSize) { this.model = model; this.settings = settings; + schemaMode = SchemaGenerationAllowlist.allows(settings.getService(), settings); // Load reserved words from a new-line delimited file. ReservedWords reservedWords = new ReservedWordsBuilder() - .loadWords(TypeScriptCodegenPlugin.class.getResource("reserved-words.txt")) - .build(); + .loadWords(TypeScriptCodegenPlugin.class.getResource("reserved-words.txt")) + .build(); ReservedWords memberReservedWords = new ReservedWordsBuilder() - .loadWords(TypeScriptCodegenPlugin.class.getResource("reserved-words-members.txt")) - .build(); + .loadWords(TypeScriptCodegenPlugin.class.getResource("reserved-words-members.txt")) + .build(); escaper = ReservedWordSymbolProvider.builder() - .nameReservedWords(reservedWords) - .memberReservedWords(memberReservedWords) - // Only escape words when the symbol has a definition file to - // prevent escaping intentional references to built-in types. - .escapePredicate((shape, symbol) -> !StringUtils.isEmpty(symbol.getDefinitionFile())) - .buildEscaper(); + .nameReservedWords(reservedWords) + .memberReservedWords(memberReservedWords) + // Only escape words when the symbol has a definition file to + // prevent escaping intentional references to built-in types. + .escapePredicate((shape, symbol) -> !StringUtils.isEmpty(symbol.getDefinitionFile())) + .buildEscaper(); // Get each structure that's used an error. OperationIndex operationIndex = OperationIndex.of(model); @@ -130,7 +134,19 @@ static TypeScriptWriter modelIndexer(Collection shapes, SymbolProvider sy @Override public Symbol toSymbol(Shape shape) { - Symbol symbol = shape.accept(this); + boolean typeOnly = schemaMode; + boolean isError = shape.asStructureShape().isPresent() && shape.hasTrait(ErrorTrait.class); + if (shape.isOperationShape() + || shape.isResourceShape() + || isError + || shape.isServiceShape() + ) { + typeOnly = false; + } + Symbol symbol = shape.accept(this) + .toBuilder() + .putProperty("typeOnly", typeOnly) + .build(); LOGGER.fine(() -> "Creating symbol from " + shape + ": " + symbol); return escaper.escapeSymbol(shape, symbol); } @@ -145,14 +161,15 @@ public Symbol blobShape(BlobShape shape) { if (shape.hasTrait(StreamingTrait.class)) { // Note: `Readable` needs an import and a dependency. return createSymbolBuilder(shape, "StreamingBlobTypes", null) - .addReference( - Symbol.builder() - .addDependency(TypeScriptDependency.SMITHY_TYPES) - .name("StreamingBlobTypes") - .namespace("@smithy/types", "/") - .build() - ) - .build(); + .addReference( + Symbol.builder() + .addDependency(TypeScriptDependency.SMITHY_TYPES) + .name("StreamingBlobTypes") + .namespace("@smithy/types", "/") + .putProperty("typeOnly", schemaMode) + .build() + ) + .build(); } return createSymbolBuilder(shape, "Uint8Array").build(); @@ -167,16 +184,18 @@ public Symbol booleanShape(BooleanShape shape) { public Symbol listShape(ListShape shape) { Symbol reference = toSymbol(shape.getMember()); return createSymbolBuilder(shape, format("(%s)[]", reference.getName()), null) - .addReference(reference) - .build(); + .addReference(reference) + .putProperty("typeOnly", schemaMode) + .build(); } @Override public Symbol setShape(SetShape shape) { Symbol reference = toSymbol(shape.getMember()); return createSymbolBuilder(shape, format("(%s)[]", reference.getName()), null) - .addReference(reference) - .build(); + .addReference(reference) + .putProperty("typeOnly", schemaMode) + .build(); } /** @@ -202,10 +221,11 @@ public Symbol mapShape(MapShape shape) { return createSymbolBuilder( shape, format(stringKey ? "Record<%s, %s>" : "Partial>", key.getName(), value.getName()), - null + null ) .addReference(key) .addReference(value) + .putProperty("typeOnly", schemaMode) .build(); } @@ -259,6 +279,7 @@ public Symbol bigDecimalShape(BigDecimalShape shape) { Symbol.builder() .addDependency(TypeScriptDependency.SMITHY_CORE) .name("NumericValue") + .putProperty("typeOnly", schemaMode) .namespace("@smithy/core/serde", "/") .build() ) @@ -269,23 +290,25 @@ public Symbol bigDecimalShape(BigDecimalShape shape) { private Symbol createBigJsSymbol(Shape shape) { return createSymbolBuilder(shape, "Big", TypeScriptDependency.BIG_JS.packageName) - .addDependency(TypeScriptDependency.TYPES_BIG_JS) - .addDependency(TypeScriptDependency.BIG_JS) - .build(); + .addDependency(TypeScriptDependency.TYPES_BIG_JS) + .addDependency(TypeScriptDependency.BIG_JS) + .build(); } @Override public Symbol documentShape(DocumentShape shape) { Symbol.Builder builder = createSymbolBuilder(shape, "__DocumentType"); Symbol importSymbol = Symbol.builder() - .name("DocumentType") - .namespace(TypeScriptDependency.SMITHY_TYPES.packageName, "/") - .build(); + .name("DocumentType") + .namespace(TypeScriptDependency.SMITHY_TYPES.packageName, "/") + .putProperty("typeOnly", schemaMode) + .build(); SymbolReference reference = SymbolReference.builder() - .symbol(importSymbol) - .alias("__DocumentType") - .options(SymbolReference.ContextOption.USE) - .build(); + .symbol(importSymbol) + .alias("__DocumentType") + .options(SymbolReference.ContextOption.USE) + .putProperty("typeOnly", schemaMode) + .build(); return builder.addReference(reference).build(); } @@ -294,10 +317,23 @@ public Symbol operationShape(OperationShape shape) { String commandName = flattenShapeName(shape) + "Command"; String moduleName = moduleNameDelegator.formatModuleName(shape, commandName); Symbol intermediate = createGeneratedSymbolBuilder(shape, commandName, moduleName).build(); - Symbol.Builder builder = intermediate.toBuilder(); + Symbol.Builder builder = intermediate.toBuilder() + .putProperty("typeOnly", false); // Add input and output type symbols (XCommandInput / XCommandOutput). - builder.putProperty("inputType", intermediate.toBuilder().name(commandName + "Input").build()); - builder.putProperty("outputType", intermediate.toBuilder().name(commandName + "Output").build()); + builder.putProperty( + "inputType", + intermediate.toBuilder() + .putProperty("typeOnly", schemaMode) + .name(commandName + "Input") + .build() + ); + builder.putProperty( + "outputType", + intermediate.toBuilder() + .putProperty("typeOnly", schemaMode) + .name(commandName + "Output") + .build() + ); return builder.build(); } @@ -328,15 +364,26 @@ public Symbol stringShape(StringShape shape) { return createSymbolBuilder(shape, "string").build(); } + @Override + public Symbol enumShape(EnumShape shape) { + return stringShape(shape) + .toBuilder() + .putProperty("typeOnly", true) + .build(); + } + @Override public Symbol intEnumShape(IntEnumShape shape) { - return createObjectSymbolBuilder(shape).build(); + return createObjectSymbolBuilder(shape) + .putProperty("typeOnly", true) + .build(); } private Symbol createEnumSymbol(StringShape shape, EnumTrait enumTrait) { return createObjectSymbolBuilder(shape) - .putProperty(EnumTrait.class.getName(), enumTrait) - .build(); + .putProperty(EnumTrait.class.getName(), enumTrait) + .putProperty("typeOnly", true) + .build(); } @Override @@ -348,7 +395,9 @@ public Symbol resourceShape(ResourceShape shape) { public Symbol serviceShape(ServiceShape shape) { String name = StringUtils.capitalize(shape.getId().getName(shape)) + "Client"; String moduleName = moduleNameDelegator.formatModuleName(shape, name); - return createGeneratedSymbolBuilder(shape, name, moduleName).build(); + return createGeneratedSymbolBuilder(shape, name, moduleName) + .putProperty("typeOnly", false) + .build(); } @Override @@ -358,14 +407,14 @@ public Symbol structureShape(StructureShape shape) { private Symbol.Builder addSmithyUseImport(Symbol.Builder builder, String name, String as) { Symbol importSymbol = Symbol.builder() - .name(name) - .namespace("@smithy/smithy-client", "/") - .build(); + .name(name) + .namespace("@smithy/smithy-client", "/") + .build(); SymbolReference reference = SymbolReference.builder() - .symbol(importSymbol) - .alias(as) - .options(SymbolReference.ContextOption.USE) - .build(); + .symbol(importSymbol) + .alias(as) + .options(SymbolReference.ContextOption.USE) + .build(); return builder.addReference(reference); } @@ -377,7 +426,7 @@ public Symbol unionShape(UnionShape shape) { @Override public Symbol memberShape(MemberShape shape) { Shape targetShape = model.getShape(shape.getTarget()) - .orElseThrow(() -> new CodegenException("Shape not found: " + shape.getTarget())); + .orElseThrow(() -> new CodegenException("Shape not found: " + shape.getTarget())); Symbol targetSymbol = toSymbol(targetShape); if (targetSymbol.getProperties().containsKey(EnumTrait.class.getName()) || targetShape.isIntEnumShape()) { @@ -401,18 +450,19 @@ public Symbol memberShape(MemberShape shape) { // pragma comments. private Symbol createMemberSymbolWithEnumTarget(Symbol targetSymbol) { return targetSymbol.toBuilder() - .namespace(null, "/") - .name(targetSymbol.getName()) - .addReference(targetSymbol) - .build(); + .namespace(null, "/") + .name(targetSymbol.getName()) + .addReference(targetSymbol) + .build(); } private Symbol createMemberSymbolWithEventStream(Symbol targetSymbol) { return targetSymbol.toBuilder() - .namespace(null, "/") - .name(String.format("AsyncIterable<%s>", targetSymbol.getName())) - .addReference(targetSymbol) - .build(); + .putProperty("typeOnly", schemaMode) + .namespace(null, "/") + .name(String.format("AsyncIterable<%s>", targetSymbol.getName())) + .addReference(targetSymbol) + .build(); } @Override @@ -437,16 +487,16 @@ private Symbol.Builder createSymbolBuilder(Shape shape, String typeName) { private Symbol.Builder createSymbolBuilder(Shape shape, String typeName, String namespace) { return Symbol.builder() - .putProperty("shape", shape) - .name(typeName) - .namespace(namespace, "/"); + .putProperty("shape", shape) + .name(typeName) + .namespace(namespace, "/"); } private Symbol.Builder createGeneratedSymbolBuilder(Shape shape, String typeName, String namespace) { String trimmedNamespace = namespace.startsWith("./") ? namespace.substring(2) : namespace; String prefixedNamespace = String.join("/", ".", CodegenUtils.SOURCE_FOLDER, trimmedNamespace); return createSymbolBuilder(shape, typeName, prefixedNamespace) - .definitionFile(toFilename(prefixedNamespace)); + .definitionFile(toFilename(prefixedNamespace)); } private String toFilename(String namespace) { @@ -508,15 +558,15 @@ static TypeScriptWriter modelIndexer( TypeScriptWriter writer = new TypeScriptWriter(""); String modelPrefix = String.join("/", ".", CodegenUtils.SOURCE_FOLDER, SHAPE_NAMESPACE_PREFIX); List collectedModelNamespaces = shapes.stream() - .map(shape -> symbolProvider.toSymbol(shape).getNamespace()) - .filter(namespace -> namespace.startsWith(modelPrefix)) - .distinct() - .sorted(Comparator.naturalOrder()) - .map(namespace -> namespace.replaceFirst( - Matcher.quoteReplacement(modelPrefix), - String.join("/", ".", SHAPE_NAMESPACE_PREFIX) - )) - .toList(); + .map(shape -> symbolProvider.toSymbol(shape).getNamespace()) + .filter(namespace -> namespace.startsWith(modelPrefix)) + .distinct() + .sorted(Comparator.naturalOrder()) + .map(namespace -> namespace.replaceFirst( + Matcher.quoteReplacement(modelPrefix), + String.join("/", ".", SHAPE_NAMESPACE_PREFIX) + )) + .toList(); // Export empty model index if no other files are present. if (collectedModelNamespaces.isEmpty()) { @@ -538,10 +588,10 @@ static TypeScriptWriter modelIndexer( Symbol symbol = symbolProvider.toSymbol(shape); String namespace = symbol.getNamespace() .replaceFirst(Matcher.quoteReplacement( - String.join("/", ".", CodegenUtils.SOURCE_FOLDER) - ), - "." - ); + String.join("/", ".", CodegenUtils.SOURCE_FOLDER) + ), + "." + ); namespaceToShapes.computeIfAbsent(namespace, k -> new TreeSet<>()); namespaceToShapes.get(namespace).add(symbol.getName()); } diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptWriter.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptWriter.java index c83349a9ed0..40347dbfa6e 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptWriter.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptWriter.java @@ -117,21 +117,7 @@ public TypeScriptWriter addIgnoredDefaultImport(String name, String from, String @Deprecated public TypeScriptWriter addImport(String name, String as, String from) { ImportFrom importFrom = new ImportFrom(from); - - if (importFrom.isDeclarablePackageImport()) { - String packageName = importFrom.getPackageName(); - if (getDependencies() - .stream() - .map(SymbolDependency::getPackageName) - .noneMatch(packageName::equals)) { - throw new CodegenException( - """ - The import %s does not correspond to a registered dependency. - TypeScriptWriter::addDependency() is required before ::addImport(). - """.formatted(from) - ); - } - } + checkImport(importFrom, from); getImportContainer().addImport(name, as, from); return this; @@ -153,6 +139,14 @@ public TypeScriptWriter addImport(String name, String as, PackageContainer from) return this.addImport(name, as, from.getPackageName()); } + /** + * Type-only version of {@link #addImport}. + */ + public TypeScriptWriter addTypeImport(String name, String as, Dependency from) { + addDependency(from); + return addTypeImport(name, as, from.getPackageName()); + } + /** * Same as {@link #addImport(String, String, PackageContainer)} but appends a * submodule path, for example "@smithy/core/cbor". @@ -164,6 +158,16 @@ public TypeScriptWriter addImportSubmodule(String name, String as, PackageContai return this.addImport(name, as, from.getPackageName() + submodule); } + /** + * Type-only version of {@link #addImportSubmodule}. + */ + public TypeScriptWriter addTypeImportSubmodule(String name, String as, PackageContainer from, String submodule) { + if (from instanceof Dependency dependency) { + addDependency(dependency); + } + return this.addTypeImport(name, as, from.getPackageName() + submodule); + } + /** * Imports a type using an alias from a relative Path. * @@ -176,6 +180,13 @@ public TypeScriptWriter addRelativeImport(String name, String as, Path from) { return this.addImport(name, as, from.toString()); } + /** + * Type-only version of {@link #addRelativeImport}. + */ + public TypeScriptWriter addRelativeTypeImport(String name, String as, Path from) { + return this.addTypeImport(name, as, from.toString()); + } + /** * Writes documentation comments. * @@ -294,6 +305,40 @@ private String addReleaseTag(Shape shape, String docs) { return docs; } + /** + * This is private because the string-value [from] signature is + * deprecated for the corresponding addImport() signature. Importing a string + * makes it difficult to ensure the package is added to the dependency manifest, + * so package imports should be by package object, and relative imports by path object. + */ + private TypeScriptWriter addTypeImport(String name, String as, String from) { + ImportFrom importFrom = new ImportFrom(from); + checkImport(importFrom, from); + getImportContainer().addTypeImport(name, as, from); + return this; + } + + /** + * Check that the import source string has been registered with the dependency manifest + * if it is a package, not a node package, and not a relative path. + */ + private void checkImport(ImportFrom importFrom, String from) { + if (importFrom.isDeclarablePackageImport()) { + String packageName = importFrom.getPackageName(); + if (getDependencies() + .stream() + .map(SymbolDependency::getPackageName) + .noneMatch(packageName::equals)) { + throw new CodegenException( + """ + The import %s does not correspond to a registered dependency. + TypeScriptWriter::addDependency() is required before ::addImport(). + """.formatted(from) + ); + } + } + } + @Override public String toString() { String contents = super.toString(); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/HttpAuthSchemeProviderGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/HttpAuthSchemeProviderGenerator.java index 32bdc2c8218..87ef638b230 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/HttpAuthSchemeProviderGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/HttpAuthSchemeProviderGenerator.java @@ -128,8 +128,7 @@ private void generateHttpAuthSchemeParametersInterface() { .symbolProvider(symbolProvider) .httpAuthSchemeParameters(httpAuthSchemeParameters) .build()); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HttpAuthSchemeParameters", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthSchemeParameters", null, TypeScriptDependency.SMITHY_TYPES); w.openBlock(""" /** * @internal @@ -166,12 +165,10 @@ private void generateHttpAuthSchemeParametersProviderInterface() { .model(model) .symbolProvider(symbolProvider) .build()); - w.addRelativeImport(serviceSymbol.getName() + "ResolvedConfig", null, + w.addRelativeTypeImport(serviceSymbol.getName() + "ResolvedConfig", null, Paths.get(".", serviceSymbol.getNamespace())); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HttpAuthSchemeParametersProvider", null, TypeScriptDependency.SMITHY_TYPES); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HandlerExecutionContext", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthSchemeParametersProvider", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HandlerExecutionContext", null, TypeScriptDependency.SMITHY_TYPES); w.write(""" /** * @internal @@ -205,10 +202,9 @@ private void generateDefaultHttpAuthSchemeParametersProviderFunction() { .symbolProvider(symbolProvider) .httpAuthSchemeParameters(httpAuthSchemeParameters) .build()); - w.addRelativeImport(serviceSymbol.getName() + "ResolvedConfig", null, + w.addRelativeTypeImport(serviceSymbol.getName() + "ResolvedConfig", null, Paths.get(".", serviceSymbol.getNamespace())); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HandlerExecutionContext", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HandlerExecutionContext", null, TypeScriptDependency.SMITHY_TYPES); w.addDependency(TypeScriptDependency.UTIL_MIDDLEWARE); w.addImport("getSmithyContext", null, TypeScriptDependency.UTIL_MIDDLEWARE); w.openBlock(""" @@ -281,8 +277,7 @@ private void generateHttpAuthOptionFunction( ShapeId schemeId = s.getSchemeId(); String normalizedAuthSchemeName = normalizeAuthSchemeName(schemeId); Optional authSchemeOptional = s.getHttpAuthScheme(); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HttpAuthOption", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthOption", null, TypeScriptDependency.SMITHY_TYPES); w.openBlock(""" function create$LHttpAuthOption(authParameters: $LHttpAuthSchemeParameters): \ HttpAuthOption {""", "};\n", @@ -356,8 +351,7 @@ private void generateHttpAuthSchemeProviderInterface() { .model(model) .symbolProvider(symbolProvider) .build()); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("HttpAuthSchemeProvider", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthSchemeProvider", null, TypeScriptDependency.SMITHY_TYPES); w.write(""" /** * @internal diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/AddHttpAuthSchemePlugin.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/AddHttpAuthSchemePlugin.java index 1b5ab987555..8efd8f4b810 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/AddHttpAuthSchemePlugin.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/AddHttpAuthSchemePlugin.java @@ -64,17 +64,19 @@ public List getClientPlugins() { .build(), RuntimeClientPlugin.builder() .inputConfig(Symbol.builder() - .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") - .name("HttpAuthSchemeInputConfig") - .build()) + .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") + .name("HttpAuthSchemeInputConfig") + .putProperty("typeOnly", true) + .build()) .resolvedConfig(Symbol.builder() - .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") - .name("HttpAuthSchemeResolvedConfig") - .build()) + .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") + .name("HttpAuthSchemeResolvedConfig") + .putProperty("typeOnly", true) + .build()) .resolveFunction(Symbol.builder() - .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") - .name("resolveHttpAuthSchemeConfig") - .build()) + .namespace(AuthUtils.HTTP_AUTH_SCHEME_PROVIDER_MODULE, "/") + .name("resolveHttpAuthSchemeConfig") + .build()) .build() ); } @@ -237,9 +239,8 @@ private void generateHttpAuthSchemeInputConfigInterface( } w.write(" {"); w.indent(); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); w.writeDocs(""" A comma-separated list of case-sensitive auth scheme names. An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. @@ -247,7 +248,7 @@ private void generateHttpAuthSchemeInputConfigInterface( @public"""); w.write("authSchemePreference?: string[] | Provider;\n"); - w.addImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); w.writeDocs(""" Configuration of HttpAuthSchemes for a client which provides \ default identity providers and signers per auth scheme. @@ -312,9 +313,8 @@ private void generateHttpAuthSchemeResolvedConfigInterface( } w.write(" {"); w.indent(); - w.addDependency(TypeScriptDependency.SMITHY_TYPES); - w.addImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); w.writeDocs(""" A comma-separated list of case-sensitive auth scheme names. An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. @@ -322,7 +322,7 @@ private void generateHttpAuthSchemeResolvedConfigInterface( @public"""); w.write("readonly authSchemePreference: Provider;\n"); - w.addImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); w.writeDocs(""" Configuration of HttpAuthSchemes for a client which provides \ default identity providers and signers per auth scheme. diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/HttpAuthRuntimeExtensionIntegration.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/HttpAuthRuntimeExtensionIntegration.java index d3a0481d914..5437e373a72 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/HttpAuthRuntimeExtensionIntegration.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/auth/http/integration/HttpAuthRuntimeExtensionIntegration.java @@ -120,18 +120,17 @@ private void generateHttpAuthExtensionConfigurationInterface( String serviceName ) { delegator.useFileWriter(AuthUtils.HTTP_AUTH_SCHEME_EXTENSION_PATH, w -> { - w.addDependency(TypeScriptDependency.SMITHY_TYPES); w.openBlock(""" /** * @internal */ export interface HttpAuthExtensionConfiguration {""", "}", () -> { - w.addImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); w.write("setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void;"); w.write("httpAuthSchemes(): HttpAuthScheme[];"); - w.addImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); + w.addTypeImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); w.write("setHttpAuthSchemeProvider(httpAuthSchemeProvider: $LHttpAuthSchemeProvider): void;", serviceName); w.write("httpAuthSchemeProvider(): $LHttpAuthSchemeProvider;", serviceName); @@ -187,16 +186,15 @@ private void generateHttpAuthExtensionRuntimeConfigType( String serviceName ) { delegator.useFileWriter(AuthUtils.HTTP_AUTH_SCHEME_EXTENSION_PATH, w -> { - w.addDependency(TypeScriptDependency.SMITHY_TYPES); w.openBlock(""" /** * @internal */ export type HttpAuthRuntimeConfig = Partial<{""", "}>;", () -> { - w.addImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); w.write("httpAuthSchemes: HttpAuthScheme[];"); - w.addImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); + w.addTypeImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); w.write("httpAuthSchemeProvider: $LHttpAuthSchemeProvider;", serviceName); List mainConfigFields = configFields.values().stream() .filter(c -> c.type().equals(ConfigField.Type.MAIN)) @@ -280,17 +278,17 @@ private void generateGetHttpAuthExtensionConfigurationFunction( String serviceName ) { delegator.useFileWriter(AuthUtils.HTTP_AUTH_SCHEME_EXTENSION_PATH, w -> { - w.addDependency(TypeScriptDependency.SMITHY_TYPES); w.openBlock(""" /** * @internal */ - export const getHttpAuthExtensionConfiguration = (runtimeConfig: HttpAuthRuntimeConfig): \ - HttpAuthExtensionConfiguration => {""", "};", + export const getHttpAuthExtensionConfiguration = ( + runtimeConfig: HttpAuthRuntimeConfig + ): HttpAuthExtensionConfiguration => {""", "};", () -> { - w.addImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); + w.addTypeImport("HttpAuthScheme", null, TypeScriptDependency.SMITHY_TYPES); w.write("let _httpAuthSchemes = runtimeConfig.httpAuthSchemes!;"); - w.addImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); + w.addTypeImport(serviceName + "HttpAuthSchemeProvider", null, AuthUtils.AUTH_HTTP_PROVIDER_DEPENDENCY); w.write("let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider!;"); List mainConfigFields = configFields.values().stream() .filter(c -> c.type().equals(ConfigField.Type.MAIN)) diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/EndpointsV2Generator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/EndpointsV2Generator.java index e7353cd4c15..232ac9e00fb 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/EndpointsV2Generator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/EndpointsV2Generator.java @@ -109,8 +109,8 @@ private void generateEndpointParameters() { this.delegator.useFileWriter( Paths.get(CodegenUtils.SOURCE_FOLDER, ENDPOINT_FOLDER, ENDPOINT_PARAMETERS_FILE).toString(), writer -> { - writer.addImport("EndpointParameters", "__EndpointParameters", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("EndpointParameters", "__EndpointParameters", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("@public"); writer.openBlock( @@ -210,13 +210,13 @@ private void generateEndpointResolver() { this.delegator.useFileWriter( Paths.get(CodegenUtils.SOURCE_FOLDER, ENDPOINT_FOLDER, ENDPOINT_RESOLVER_FILE).toString(), writer -> { - writer.addImport("EndpointV2", null, TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Logger", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("EndpointV2", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Logger", null, TypeScriptDependency.SMITHY_TYPES); writer.addDependency(TypeScriptDependency.UTIL_ENDPOINTS); - writer.addImport("EndpointParams", null, TypeScriptDependency.UTIL_ENDPOINTS); + writer.addTypeImport("EndpointParams", null, TypeScriptDependency.UTIL_ENDPOINTS); writer.addImport("resolveEndpoint", null, TypeScriptDependency.UTIL_ENDPOINTS); - writer.addRelativeImport("EndpointParameters", null, + writer.addRelativeTypeImport("EndpointParameters", null, Paths.get(".", CodegenUtils.SOURCE_FOLDER, ENDPOINT_FOLDER, ENDPOINT_PARAMETERS_FILE.replace(".ts", ""))); writer.addRelativeImport("ruleSet", null, @@ -258,7 +258,7 @@ private void generateEndpointRuleset() { this.delegator.useFileWriter( Paths.get(CodegenUtils.SOURCE_FOLDER, ENDPOINT_FOLDER, ENDPOINT_RULESET_FILE).toString(), writer -> { - writer.addImport("RuleSetObject", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("RuleSetObject", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock( "export const ruleSet: RuleSetObject = ", ";", diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParametersVisitor.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParametersVisitor.java index f3bef984b67..6fd7937246b 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParametersVisitor.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/endpointsV2/RuleSetParametersVisitor.java @@ -66,9 +66,9 @@ public Void objectNode(ObjectNode node) { ParameterGenerator parameterGenerator = new ParameterGenerator(localKey, param, useLocalNames); if (localKey.equals("endpoint")) { - writer.addImport("Endpoint", null, TypeScriptDependency.SMITHY_TYPES); - writer.addImport("EndpointV2", null, TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Endpoint", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("EndpointV2", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Provider", null, TypeScriptDependency.SMITHY_TYPES); } if (writeDefaults) { diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddBaseServiceExceptionClass.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddBaseServiceExceptionClass.java index ceea173607d..3ed1d346ce7 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddBaseServiceExceptionClass.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddBaseServiceExceptionClass.java @@ -65,7 +65,7 @@ private void writeAdditionalFiles( writer -> { writer.addImport("ServiceException", "__ServiceException", TypeScriptDependency.AWS_SMITHY_CLIENT); - writer.addImport("ServiceExceptionOptions", "__ServiceExceptionOptions", + writer.addTypeImport("ServiceExceptionOptions", "__ServiceExceptionOptions", TypeScriptDependency.AWS_SMITHY_CLIENT); // Export ServiceException information to allow // documentation inheritance to consume their types diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddChecksumRequiredDependency.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddChecksumRequiredDependency.java index 510e77ebcde..7f3690b027e 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddChecksumRequiredDependency.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddChecksumRequiredDependency.java @@ -54,15 +54,15 @@ public void addConfigInterfaceFields( } writer.addImport("Readable", null, "stream"); - writer.addImport("StreamHasher", "__StreamHasher", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StreamHasher", "__StreamHasher", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("A function that, given a hash constructor and a stream, calculates the \n" + "hash of the streamed value.\n" + "@internal"); writer.write("streamHasher?: __StreamHasher | __StreamHasher;\n"); - writer.addImport("HashConstructor", "__HashConstructor", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Checksum", "__Checksum", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("ChecksumConstructor", "__ChecksumConstructor", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HashConstructor", "__HashConstructor", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Checksum", "__Checksum", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("ChecksumConstructor", "__ChecksumConstructor", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs(""" A constructor for a class implementing the {@link __Checksum} interface that computes MD5 hashes. diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddClientRuntimeConfig.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddClientRuntimeConfig.java index b4841914400..c88da91355a 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddClientRuntimeConfig.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddClientRuntimeConfig.java @@ -63,8 +63,8 @@ public void addConfigInterfaceFields( SymbolProvider symbolProvider, TypeScriptWriter writer ) { - writer.addImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("Logger", "__Logger", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Logger", "__Logger", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("Value for how many times a request will be made at most in case of retry.") .write("maxAttempts?: number | __Provider;\n"); @@ -75,7 +75,7 @@ public void addConfigInterfaceFields( .write("retryMode?: string | __Provider;\n"); writer.writeDocs("Optional logger for logging debug/info/warn/error.") .write("logger?: __Logger;\n"); - writer.addRelativeImport("RuntimeExtension", null, + writer.addRelativeTypeImport("RuntimeExtension", null, Paths.get(".", CodegenUtils.SOURCE_FOLDER, "runtimeExtensions")); writer.writeDocs("Optional extensions") .write("extensions?: RuntimeExtension[];\n"); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddDefaultsModeDependency.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddDefaultsModeDependency.java index 43bbd657770..512bf8260f9 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddDefaultsModeDependency.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddDefaultsModeDependency.java @@ -37,8 +37,8 @@ public void addConfigInterfaceFields( // Dependencies used in the default runtime config template. writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_BROWSER); writer.addDependency(TypeScriptDependency.AWS_SDK_UTIL_DEFAULTS_MODE_NODE); - writer.addImport("DefaultsMode", "__DefaultsMode", TypeScriptDependency.AWS_SMITHY_CLIENT); - writer.addImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("DefaultsMode", "__DefaultsMode", TypeScriptDependency.AWS_SMITHY_CLIENT); + writer.addTypeImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("The {@link @smithy/smithy-client#DefaultsMode} that " + "will be used to determine how certain default configuration " + "options are resolved in the SDK."); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddEventStreamDependency.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddEventStreamDependency.java index ab8df8808a2..23e135d697d 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddEventStreamDependency.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddEventStreamDependency.java @@ -74,7 +74,7 @@ public void addConfigInterfaceFields( } writer.addDependency(TypeScriptDependency.AWS_SDK_EVENTSTREAM_SERDE_CONFIG_RESOLVER); - writer.addImport("EventStreamSerdeProvider", "__EventStreamSerdeProvider", + writer.addTypeImport("EventStreamSerdeProvider", "__EventStreamSerdeProvider", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("The function that provides necessary utilities for generating and parsing event stream"); writer.write("eventStreamSerdeProvider?: __EventStreamSerdeProvider;\n"); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddProtocolConfig.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddProtocolConfig.java index 9433ef8302d..442f89cde8b 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddProtocolConfig.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddProtocolConfig.java @@ -41,9 +41,9 @@ public void addConfigInterfaceFields( } writer - .addImport("ClientProtocol", null, TypeScriptDependency.SMITHY_TYPES) - .addImport("HttpRequest", null, TypeScriptDependency.SMITHY_TYPES) - .addImport("HttpResponse", null, TypeScriptDependency.SMITHY_TYPES) + .addTypeImport("ClientProtocol", null, TypeScriptDependency.SMITHY_TYPES) + .addTypeImport("HttpRequest", null, TypeScriptDependency.SMITHY_TYPES) + .addTypeImport("HttpResponse", null, TypeScriptDependency.SMITHY_TYPES) .writeDocs(""" The protocol controlling the message type (e.g. HTTP) and format (e.g. JSON) may be overridden. A default will always be set by the client. diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddSdkStreamMixinDependency.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddSdkStreamMixinDependency.java index 5169047aa0d..cb38de0d5ff 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddSdkStreamMixinDependency.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddSdkStreamMixinDependency.java @@ -54,7 +54,7 @@ public void addConfigInterfaceFields( return; } - writer.addImport("SdkStreamMixinInjector", "__SdkStreamMixinInjector", + writer.addTypeImport("SdkStreamMixinInjector", "__SdkStreamMixinInjector", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs("The internal function that inject utilities to runtime-specific stream to help users" + " consume the data\n@internal"); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/EventStreamGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/EventStreamGenerator.java index 2ab54d5427d..5f5e5869f4f 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/EventStreamGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/EventStreamGenerator.java @@ -218,7 +218,7 @@ private void generateEventStreamSerializer(GenerationContext context, UnionShape Symbol eventsUnionSymbol = getSymbol(context, eventsUnion); TypeScriptWriter writer = context.getWriter(); Model model = context.getModel(); - writer.addImport("Message", "__Message", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Message", "__Message", TypeScriptDependency.SMITHY_TYPES); writer.writeDocs(methodLongName); writer.openBlock("const $L = (\n" @@ -249,10 +249,10 @@ public String getEventSerFunctionName(GenerationContext context, Shape shape) { private String getEventStreamSerdeContextType(GenerationContext context, UnionShape eventsUnion) { TypeScriptWriter writer = context.getWriter(); - writer.addImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); String contextType = "__SerdeContext"; if (eventsUnion.hasTrait(StreamingTrait.class)) { - writer.addImport("EventStreamSerdeContext", "__EventStreamSerdeContext", + writer.addTypeImport("EventStreamSerdeContext", "__EventStreamSerdeContext", TypeScriptDependency.SMITHY_TYPES); contextType += " & __EventStreamSerdeContext"; } @@ -276,7 +276,7 @@ public void generateEventMarshaller( String methodName = getEventSerFunctionName(context, event); Symbol symbol = getSymbol(context, event); TypeScriptWriter writer = context.getWriter(); - writer.addImport("MessageHeaders", "__MessageHeaders", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("MessageHeaders", "__MessageHeaders", TypeScriptDependency.SMITHY_TYPES); writer.openBlock("const $L = (\n" + " input: $T,\n" + " context: __SerdeContext\n" diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java index 4a9b2fb75cc..e3a59ec38bd 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java @@ -204,6 +204,9 @@ public void generateSharedComponents(GenerationContext context) { writer.write( context.getStringStore().flushVariableDeclarationCode() ); + + writer.addImport("HttpRequest", "__HttpRequest", TypeScriptDependency.PROTOCOL_HTTP); + writer.addImport("HttpResponse", "__HttpResponse", TypeScriptDependency.PROTOCOL_HTTP); } @Override @@ -691,7 +694,7 @@ private void generateOperationRequestSerializer( // Ensure that the request type is imported. writer.addUseImports(requestType); - writer.addImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); // e.g., se_ES String methodName = ProtocolGenerator.getSerFunctionShortName(symbol); @@ -1810,7 +1813,7 @@ private void generateOperationRequestDeserializer( // Ensure that the request type is imported. writer.addUseImports(requestType); - writer.addImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); String methodName = ProtocolGenerator.getGenericDeserFunctionName(symbol) + "Request"; // Add the normalized input type. Symbol inputType = symbol.expectProperty("inputType", Symbol.class); @@ -2231,9 +2234,13 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape String serverSdkInfix = context.getSettings().generateServerSdk() ? ": any /* $metadata unsupported on ssdk error */" : ""; + + Symbol materializedErrorSymbol = errorSymbol.toBuilder() + .putProperty("typeOnly", false) + .build(); writer.openBlock("const exception$L = new $T({", "});", serverSdkInfix, - errorSymbol, + materializedErrorSymbol, () -> { writer.write("$$metadata: deserializeMetadata($L),", outputName); writer.write("...contents"); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java index 830b5eb0d85..74d256310a1 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java @@ -250,7 +250,7 @@ public static String getStringOutputParam(GenerationContext context, Shape shape public static void generateMetadataDeserializer(GenerationContext context, SymbolReference responseType) { TypeScriptWriter writer = context.getWriter(); - writer.addImport("ResponseMetadata", "__ResponseMetadata", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("ResponseMetadata", "__ResponseMetadata", TypeScriptDependency.SMITHY_TYPES); writer.openBlock("const deserializeMetadata = (output: $T): __ResponseMetadata => ({", "});", responseType, () -> { writer.write("httpStatusCode: output.statusCode,"); @@ -272,7 +272,7 @@ public static void generateMetadataDeserializer(GenerationContext context, Symbo public static void generateCollectBodyString(GenerationContext context) { TypeScriptWriter writer = context.getWriter(); writer.addImport("collectBody", null, TypeScriptDependency.AWS_SMITHY_CLIENT); - writer.addImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); writer.write("// Encode Uint8Array data into string with utf-8."); writer.write("const collectBodyString = (streamBody: any, context: __SerdeContext): Promise => " + "collectBody(streamBody, context).then(body => context.utf8Encoder(body))"); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpRpcProtocolGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpRpcProtocolGenerator.java index 764e41ee3b6..3c0fe5c9116 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpRpcProtocolGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpRpcProtocolGenerator.java @@ -142,8 +142,13 @@ public void generateSharedComponents(GenerationContext context) { // Write a function to generate HTTP requests since they're so similar. SymbolReference requestType = getApplicationProtocol().getRequestType(); writer.addUseImports(requestType); - writer.addImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); + Symbol requestSymbol = requestType.getSymbol() + .toBuilder() + .putProperty("typeOnly", false) + .build(); + writer.openBlock("const buildHttpRpcRequest = async (\n" + " context: __SerdeContext,\n" + " headers: __HeaderBag,\n" @@ -168,7 +173,7 @@ public void generateSharedComponents(GenerationContext context) { writer.openBlock("if (body !== undefined) {", "}", () -> { writer.write("contents.body = body;"); }); - writer.write("return new $T(contents);", requestType); + writer.write("return new $T(contents);", requestSymbol); } ); // Write common request header to be shared by all requests @@ -178,6 +183,9 @@ public void generateSharedComponents(GenerationContext context) { writer.write( context.getStringStore().flushVariableDeclarationCode() ); + + writer.addImport("HttpRequest", "__HttpRequest", TypeScriptDependency.PROTOCOL_HTTP); + writer.addImport("HttpResponse", "__HttpResponse", TypeScriptDependency.PROTOCOL_HTTP); } @Override @@ -248,7 +256,7 @@ protected void generateOperationSerializer(GenerationContext context, OperationS // Ensure that the request type is imported. writer.addUseImports(requestType); - writer.addImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("Endpoint", "__Endpoint", TypeScriptDependency.SMITHY_TYPES); // e.g., se_ES String methodName = ProtocolGenerator.getSerFunctionShortName(symbol); // e.g., serializeAws_restJson1_1ExecuteStatement @@ -344,7 +352,7 @@ protected void writeRequestHeaders(GenerationContext context, OperationShape ope */ protected void writeSharedRequestHeaders(GenerationContext context) { TypeScriptWriter writer = context.getWriter(); - writer.addImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); writer.openBlock("const SHARED_HEADERS: __HeaderBag = {", "};", () -> { writer.write("'content-type': $S,", getDocumentContentType()); }); @@ -521,7 +529,10 @@ protected void generateErrorDeserializer(GenerationContext context, StructureSha } // Then load it into the object with additional error and response properties. - writer.openBlock("const exception = new $T({", "});", errorSymbol, () -> { + Symbol materializedError = errorSymbol.toBuilder() + .putProperty("typeOnly", false) + .build(); + writer.openBlock("const exception = new $T({", "});", materializedError, () -> { writer.write("$$metadata: deserializeMetadata($L),", outputReference); writer.write("...deserialized"); }); diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/RuntimeClientPlugin.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/RuntimeClientPlugin.java index 3a51425f676..1c69fa9a952 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/RuntimeClientPlugin.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/RuntimeClientPlugin.java @@ -866,10 +866,15 @@ public Builder withConventions( for (Convention convention : conventions) { switch (convention) { case HAS_CONFIG: - inputConfig(Convention.createSymbol(packageName, version, pluginName + "InputConfig")); - resolvedConfig(Convention.createSymbol(packageName, version, pluginName + "ResolvedConfig")); + inputConfig(Convention.createTypeSymbol( + packageName, version, pluginName + "InputConfig") + ); + resolvedConfig(Convention.createTypeSymbol( + packageName, version, pluginName + "ResolvedConfig") + ); resolveFunction(Convention.createSymbol( - packageName, version, "resolve" + pluginName + "Config")); + packageName, version, "resolve" + pluginName + "Config") + ); break; case HAS_MIDDLEWARE: pluginFunction(Convention.createSymbol(packageName, version, "get" + pluginName + "Plugin")); @@ -943,5 +948,14 @@ private static Symbol createSymbol(String packageName, String version, String na .addDependency(TypeScriptDependency.NORMAL_DEPENDENCY, packageName, version) .build(); } + + private static Symbol createTypeSymbol(String packageName, String version, String name) { + return Symbol.builder() + .namespace(packageName, "/") + .name(name) + .putProperty("typeOnly", true) + .addDependency(TypeScriptDependency.NORMAL_DEPENDENCY, packageName, version) + .build(); + } } } diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/protocols/cbor/SmithyRpcV2Cbor.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/protocols/cbor/SmithyRpcV2Cbor.java index 556e5d365ad..301a973811b 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/protocols/cbor/SmithyRpcV2Cbor.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/protocols/cbor/SmithyRpcV2Cbor.java @@ -104,8 +104,8 @@ public void generateSharedComponents(GenerationContext context) { } writer.addUseImports(requestType); - writer.addImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); - writer.addImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("SerdeContext", "__SerdeContext", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); writer.addImportSubmodule( "buildHttpRpcRequest", null, TypeScriptDependency.SMITHY_CORE, SmithyCoreSubmodules.CBOR @@ -266,7 +266,7 @@ protected void deserializeOutputDocument(GenerationContext generationContext, @Override protected void writeSharedRequestHeaders(GenerationContext context) { TypeScriptWriter writer = context.getWriter(); - writer.addImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("HeaderBag", "__HeaderBag", TypeScriptDependency.SMITHY_TYPES); writer.openBlock("const SHARED_HEADERS: __HeaderBag = {", "};", () -> { writer.write("'content-type': $S,", getDocumentContentType()); writer.write(""" diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaGenerator.java index 9d7dfbaa584..db5ec4e8264 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaGenerator.java @@ -274,7 +274,7 @@ private String getShapeVariableName(Shape shape) { private void writeSimpleSchema(Shape shape) { TypeScriptWriter writer = getWriter(shape.getId()); if (elision.traits.hasSchemaTraits(shape)) { - writer.addImport("StaticSimpleSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticSimpleSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticSimpleSchema = [0, $L, $L,""", "", @@ -295,7 +295,7 @@ private void writeStructureSchema(StructureShape shape) { String symbolName = reservedWords.escape(shape.getId().getName()); if (shape.hasTrait(ErrorTrait.class)) { String exceptionCtorSymbolName = "__" + symbolName; - writer.addImport("StaticErrorSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticErrorSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.addRelativeImport( symbolName, exceptionCtorSymbolName, @@ -318,7 +318,7 @@ private void writeStructureSchema(StructureShape shape) { exceptionCtorSymbolName ); } else { - writer.addImport("StaticStructureSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticStructureSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticStructureSchema = [3, $L, $L,""", "];", @@ -345,7 +345,7 @@ private void writeBaseError() { String namespace = settings.getService(model).getId().getNamespace(); String exceptionCtorSymbolName = "__" + serviceExceptionName; - writer.addImport("StaticErrorSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticErrorSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.addRelativeImport( serviceExceptionName, exceptionCtorSymbolName, @@ -372,7 +372,7 @@ private void writeBaseError() { private void writeUnionSchema(UnionShape shape) { TypeScriptWriter writer = getWriter(shape.getId()); checkedWriteSchema(shape, () -> { - writer.addImport("StaticStructureSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticStructureSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticStructureSchema = [3, $L, $L,""", "];", @@ -420,7 +420,7 @@ private void doWithMembers(Shape shape) { private void writeListSchema(CollectionShape shape) { TypeScriptWriter writer = getWriter(shape.getId()); checkedWriteSchema(shape, () -> { - writer.addImport("StaticListSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticListSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticListSchema = [1, $L, $L,""", "];", @@ -438,7 +438,7 @@ private void writeListSchema(CollectionShape shape) { private void writeMapSchema(MapShape shape) { TypeScriptWriter writer = getWriter(shape.getId()); checkedWriteSchema(shape, () -> { - writer.addImport("StaticMapSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticMapSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticMapSchema = [2, $L, $L,""", "];", @@ -507,7 +507,7 @@ private void doWithMember(Shape shape, MemberShape keyShape, MemberShape memberS private void writeOperationSchema(OperationShape shape) { TypeScriptWriter writer = getWriter(shape.getId()); - writer.addImport("StaticOperationSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticOperationSchema", null, TypeScriptDependency.SMITHY_TYPES); writer.openBlock(""" export var $L: StaticOperationSchema = [9, $L, $L,""", "];", @@ -674,14 +674,14 @@ private String resolveSimpleSchemaNestedContainer(Shape context, Shape shape, Ty contained = shape.asListShape().get().getMember(); staticTypePrefix = "[1, "; sentinel = "64"; - writer.addImport("StaticListSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticListSchema", null, TypeScriptDependency.SMITHY_TYPES); } case MAP -> { contained = shape.asMapShape().get().getValue(); staticTypePrefix = "[2, "; keySchema = this.resolveSimpleSchema(context, shape.asMapShape().get().getKey()) + ", "; sentinel = "128"; - writer.addImport("StaticMapSchema", null, TypeScriptDependency.SMITHY_TYPES); + writer.addTypeImport("StaticMapSchema", null, TypeScriptDependency.SMITHY_TYPES); } default -> { throw new IllegalArgumentException( diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/protocol-test-stub.ts b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/protocol-test-stub.ts index 5dcfc705337..3d2f30948d2 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/protocol-test-stub.ts +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/protocol-test-stub.ts @@ -1,6 +1,6 @@ -import { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; -import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; -import { Readable } from "stream"; +import type { HttpHandlerOptions, HeaderBag, Endpoint } from "@smithy/types"; +import { type HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { Readable } from "node:stream"; /** * Throws an expected exception that contains the serialized request. diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/resolveRuntimeExtensions1.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/resolveRuntimeExtensions1.template index 2b793daacca..31c3d3ef0a7 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/resolveRuntimeExtensions1.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/resolveRuntimeExtensions1.template @@ -1,28 +1,25 @@ -import { ${extensionConfigName} } from "./extensionConfiguration"; +import type { ${extensionConfigName} } from "./extensionConfiguration"; /** * @public */ export interface RuntimeExtension { - configure(extensionConfiguration: ${extensionConfigName}): void; + configure(extensionConfiguration: ${extensionConfigName}): void; } /** * @public */ export interface RuntimeExtensionsConfig { - extensions: RuntimeExtension[] + extensions: RuntimeExtension[]; } /** * @internal */ -export const resolveRuntimeExtensions = ( - runtimeConfig: any, - extensions: RuntimeExtension[] -) => { +export const resolveRuntimeExtensions = (runtimeConfig: any, extensions: RuntimeExtension[]) => { const extensionConfiguration: ${extensionConfigName} = Object.assign( ${getPartialExtensionConfigurations} ); - extensions.forEach(extension => extension.configure(extensionConfiguration)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.browser.ts.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.browser.ts.template index 1d42f61d15c..299e52d82c9 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.browser.ts.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.browser.ts.template @@ -1,8 +1,3 @@ -import { ${clientConfigName} } from "${clientModuleName}"; -import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; - /** * @internal */ @@ -10,7 +5,8 @@ export const getRuntimeConfig = (config: ${clientConfigName}) => { const defaultsMode = resolveDefaultsModeConfig(config); const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); const clientSharedValues = getSharedRuntimeConfig(config); - ${prepareCustomizations}return { + ${prepareCustomizations} + return { ...clientSharedValues, ...config, runtime: "browser", diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.native.ts.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.native.ts.template index 9d24bec16a6..6b9aac5b09d 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.native.ts.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.native.ts.template @@ -1,12 +1,10 @@ -import { ${clientConfigName} } from "${clientModuleName}"; -import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; - /** * @internal */ export const getRuntimeConfig = (config: ${clientConfigName}) => { const browserDefaults = getBrowserRuntimeConfig(config); - ${prepareCustomizations}return { + ${prepareCustomizations} + return { ...browserDefaults, ...config, runtime: "react-native", diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.shared.ts.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.shared.ts.template index b83ca69f052..68979246eb9 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.shared.ts.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.shared.ts.template @@ -1,11 +1,10 @@ -import { ${clientConfigName} } from "${clientModuleName}"; - /** * @internal */ export const getRuntimeConfig = (config: ${clientConfigName}) => { - ${prepareCustomizations}return { + ${prepareCustomizations} + return { apiVersion: "${apiVersion}", - ${customizations} - } +${customizations} + }; }; diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.ts.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.ts.template index 5f9234674e5..3344691ac7a 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.ts.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeConfig.ts.template @@ -1,9 +1,3 @@ -import { ${clientConfigName} } from "${clientModuleName}"; -import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; -import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; -import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; -import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; - /** * @internal */ @@ -12,7 +6,8 @@ export const getRuntimeConfig = (config: ${clientConfigName}) => { const defaultsMode = resolveDefaultsModeConfig(config); const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); const clientSharedValues = getSharedRuntimeConfig(config); - ${prepareCustomizations}return { + ${prepareCustomizations} + return { ...clientSharedValues, ...config, runtime: "node", diff --git a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeExtensions1.template b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeExtensions1.template index 157b8ae515f..4561d693ea0 100644 --- a/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeExtensions1.template +++ b/smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/runtimeExtensions1.template @@ -1,17 +1,17 @@ -import { ${clientConfigName} } from "./clientConfiguration"; +import type { ${clientConfigName} } from "./clientConfiguration"; /** * @public */ export interface RuntimeExtension { - configureClient(clientConfiguration: ${clientConfigName}): void; + configureClient(clientConfiguration: ${clientConfigName}): void; } /** * @public */ export interface RuntimeExtensionsConfig { - extensions: RuntimeExtension[] + extensions: RuntimeExtension[] } const asPartial = >(t: T) => t; @@ -20,8 +20,8 @@ const asPartial = >(t: T) => t; * @internal */ export const resolveRuntimeExtensions = ( - runtimeConfig: any, - extensions: RuntimeExtension[] + runtimeConfig: any, + extensions: RuntimeExtension[] ) => { const clientConfiguration: ${clientConfigName} = { ${getPartialClientConfigurations} diff --git a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/ImportDeclarationsTest.java b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/ImportDeclarationsTest.java index 3ab43db7eaf..5a7053690c8 100644 --- a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/ImportDeclarationsTest.java +++ b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/ImportDeclarationsTest.java @@ -2,6 +2,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -33,7 +34,7 @@ public void addsMultipleImportsOfSameSymbol() { declarations.addImport("Big", "$Big", "big.js"); String result = declarations.toString(); - assertThat(result, containsString("import {\n Big as $Big,\n Big,\n} from \"big.js\";")); + assertThat(result, containsString("import { Big, Big as $Big } from \"big.js\";")); } @Test @@ -146,4 +147,40 @@ public void canImportNestedFromClient() { assertThat(result, containsString("import { Foo } from \"./models/hello/index\";")); } + + @Test + public void importOrdering() { + ImportDeclarations declarations = new ImportDeclarations("./FooClient"); + + declarations.addTypeImport("ServiceOutputTypes", null, "../RpcV2ProtocolClient"); + declarations.addImport("FractionalSeconds", null, "../schemas/schemas_0"); + declarations.addTypeImport("RpcV2ProtocolClientResolvedConfig", null, "../RpcV2ProtocolClient"); + declarations.addTypeImport("FractionalSecondsOutput", null, "../models/models_0"); + declarations.addImport("commonParams", null, "../endpoint/EndpointParameters"); + declarations.addImport("Command", "$Command", "@smithy/smithy-client"); + declarations.addTypeImport("MetadataBearer", "__MetadataBearer", "@smithy/types"); + declarations.addImport("getEndpointPlugin", null, "@smithy/middleware-endpoint"); + declarations.addTypeImport("ServiceInputTypes", null, "../RpcV2ProtocolClient"); + + + String result = declarations.toString(); + + assertEquals(""" + import { getEndpointPlugin } from "@smithy/middleware-endpoint"; + import { Command as $Command } from "@smithy/smithy-client"; + import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; + + import { commonParams } from "../endpoint/EndpointParameters"; + import type { FractionalSecondsOutput } from "../models/models_0"; + import type { + RpcV2ProtocolClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, + } from "../RpcV2ProtocolClient"; + import { FractionalSeconds } from "../schemas/schemas_0"; + + """, + result + ); + } } diff --git a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGeneratorTest.java b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGeneratorTest.java index c54d0765550..b6ddfa9f76d 100644 --- a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGeneratorTest.java +++ b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGeneratorTest.java @@ -91,7 +91,7 @@ public Map> getRuntimeConfigWriters( // Does the runtimeConfig.ts file expand the template properties properly? String runtimeConfigContents = manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.ts").get(); assertThat(runtimeConfigContents, - containsString("import { ExampleClientConfig } from \"./ExampleClient\";")); + containsString("import type { ExampleClientConfig } from \"./ExampleClient\";")); assertThat(runtimeConfigSharedContents, containsString("export const getRuntimeConfig = (config: ExampleClientConfig) =>")); assertThat(runtimeConfigContents, containsString("config?.syn ?? syn: 'ack2',")); @@ -100,7 +100,7 @@ public Map> getRuntimeConfigWriters( // Does the runtimeConfig.browser.ts file expand the template properties properly? String runtimeConfigBrowserContents = manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.browser.ts").get(); assertThat(runtimeConfigBrowserContents, - containsString("import { ExampleClientConfig } from \"./ExampleClient\";")); + containsString("import type { ExampleClientConfig } from \"./ExampleClient\";")); assertThat(runtimeConfigSharedContents, containsString("export const getRuntimeConfig = (config: ExampleClientConfig) =>")); assertThat(runtimeConfigContents, containsString("config?.syn ?? syn: 'ack2',")); @@ -109,7 +109,7 @@ public Map> getRuntimeConfigWriters( // Does the runtimeConfig.native.ts file expand the browser template properties properly? String runtimeConfigNativeContents = manifest.getFileString(CodegenUtils.SOURCE_FOLDER + "/runtimeConfig.native.ts").get(); assertThat(runtimeConfigNativeContents, - containsString("import { ExampleClientConfig } from \"./ExampleClient\";")); + containsString("import type { ExampleClientConfig } from \"./ExampleClient\";")); assertThat(runtimeConfigNativeContents, containsString( "import { getRuntimeConfig as getBrowserRuntimeConfig } from \"./runtimeConfig.browser\";")); diff --git a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/TypeScriptWriterTest.java b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/TypeScriptWriterTest.java index fe5022a415f..f7b54118521 100644 --- a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/TypeScriptWriterTest.java +++ b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/TypeScriptWriterTest.java @@ -2,6 +2,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertEquals; import static software.amazon.smithy.typescript.codegen.TypeScriptWriter.CODEGEN_INDICATOR; import java.nio.file.Paths; @@ -26,12 +27,13 @@ public void doesNotAddNewlineBetweenManagedAndExplicitImports() { writer.addRelativeImport("Qux", "__Qux", Paths.get("./qux")); String result = writer.toString(); - assertThat(result, equalTo(""" - %simport { Baz } from "./hello"; + assertEquals(""" + %simport { Bar as __Bar } from "@smithy/types"; + + import { Baz } from "./hello"; import { Qux as __Qux } from "./qux"; - import { Bar as __Bar } from "@smithy/types"; import { Foo } from "baz"; - """.formatted(CODEGEN_INDICATOR))); + """.formatted(CODEGEN_INDICATOR), result); } @Test @@ -73,8 +75,8 @@ public void addImportSubmodule() { writer.addImportSubmodule("symbol", "__symbol", () -> "@smithy/core", "/submodule"); String result = writer.toString(); - assertThat(result.trim(), equalTo(""" + assertEquals(""" %simport { symbol as __symbol } from "@smithy/core/submodule"; - """.formatted(CODEGEN_INDICATOR).trim())); + """.formatted(CODEGEN_INDICATOR).trim(), result.trim()); } }