diff --git a/.changeset/thick-mirrors-burn.md b/.changeset/thick-mirrors-burn.md new file mode 100644 index 00000000000..45a3b229662 --- /dev/null +++ b/.changeset/thick-mirrors-burn.md @@ -0,0 +1,5 @@ +--- +"@smithy/config-resolver": patch +--- + +allow \* region with warning diff --git a/packages/config-resolver/src/regionConfig/checkRegion.spec.ts b/packages/config-resolver/src/regionConfig/checkRegion.spec.ts index 9781ad5fb9c..5079718f0d0 100644 --- a/packages/config-resolver/src/regionConfig/checkRegion.spec.ts +++ b/packages/config-resolver/src/regionConfig/checkRegion.spec.ts @@ -39,7 +39,7 @@ describe("checkRegion", () => { "%", "^", "&", - "*", + "**", "(", ")", ".", @@ -59,7 +59,14 @@ describe("checkRegion", () => { } }); + it("emits a warning when asterisk region is used", () => { + vi.spyOn(console, "warn"); + checkRegion("*"); + expect(console.warn).toHaveBeenCalledWith(expect.stringContaining("@smithy/config-resolver WARN")); + }); + it("caches accepted regions", () => { + vi.spyOn(console, "warn"); const di = { isValidHostLabel, }; @@ -73,5 +80,6 @@ describe("checkRegion", () => { expect(di.isValidHostLabel).toHaveBeenCalledTimes(0); expect(() => checkRegion("oh-canada", di.isValidHostLabel)).not.toThrow(); expect(di.isValidHostLabel).toHaveBeenCalledTimes(1); + expect(console.warn).not.toHaveBeenCalled(); }); }); diff --git a/packages/config-resolver/src/regionConfig/checkRegion.ts b/packages/config-resolver/src/regionConfig/checkRegion.ts index c8f754270e1..db1d37c37bd 100644 --- a/packages/config-resolver/src/regionConfig/checkRegion.ts +++ b/packages/config-resolver/src/regionConfig/checkRegion.ts @@ -15,7 +15,13 @@ const validRegions = new Set(); */ export const checkRegion = (region: string, check = isValidHostLabel) => { if (!validRegions.has(region) && !check(region)) { - throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + if (region === "*") { + console.warn( + `@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.` + ); + } else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } } else { validRegions.add(region); } diff --git a/private/my-local-model/src/auth/httpAuthSchemeProvider.ts b/private/my-local-model/src/auth/httpAuthSchemeProvider.ts index e501dec1834..49476d65613 100644 --- a/private/my-local-model/src/auth/httpAuthSchemeProvider.ts +++ b/private/my-local-model/src/auth/httpAuthSchemeProvider.ts @@ -65,7 +65,7 @@ export const defaultXYZServiceHttpAuthSchemeProvider: XYZServiceHttpAuthSchemePr }; /** - * @internal + * @public */ export interface HttpAuthSchemeInputConfig { /** diff --git a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts index d4490b9636d..e4ed6a53747 100644 --- a/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts +++ b/private/smithy-rpcv2-cbor-schema/src/auth/httpAuthSchemeProvider.ts @@ -66,7 +66,7 @@ export const defaultRpcV2ProtocolHttpAuthSchemeProvider: RpcV2ProtocolHttpAuthSc }; /** - * @internal + * @public */ export interface HttpAuthSchemeInputConfig { /** diff --git a/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts b/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts index d4490b9636d..e4ed6a53747 100644 --- a/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts +++ b/private/smithy-rpcv2-cbor/src/auth/httpAuthSchemeProvider.ts @@ -66,7 +66,7 @@ export const defaultRpcV2ProtocolHttpAuthSchemeProvider: RpcV2ProtocolHttpAuthSc }; /** - * @internal + * @public */ export interface HttpAuthSchemeInputConfig { /** 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 b7e932c7822..1b5ab987555 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 @@ -222,7 +222,7 @@ private void generateHttpAuthSchemeInputConfigInterface( s.getResolveConfigFunctions(); String serviceName = CodegenUtils.getServiceName( s.getSettings(), s.getModel(), s.getSymbolProvider()); - w.writeDocs("@internal"); + w.writeDocs("@public"); w.writeInline("export interface HttpAuthSchemeInputConfig"); if (!resolveConfigFunctions.isEmpty()) { w.writeInline(" extends ");