From 351690f2fa911bf33134441ac2908c86e8324526 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Mon, 5 Oct 2026 09:11:12 -0700 Subject: [PATCH] Restore additional type exposure filtering Unexposed interfaces must not remain in supplemental type unions. Restore this filtering without reintroducing the reverted Location API changes. --- src/build/expose.ts | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/build/expose.ts b/src/build/expose.ts index 4c0c023c0..be94edf32 100644 --- a/src/build/expose.ts +++ b/src/build/expose.ts @@ -204,7 +204,15 @@ function deepFilterUnexposedTypes( const types = Array.isArray(p.type) ? p.type : [p]; const filtered = filterUnexposedTypeFromUnion(types, unexposedTypes); if (filtered.length >= 1) { - param.push({ ...p, type: flattenType(filtered) }); + const additionalTypes = filterAdditionalTypes( + p.additionalTypes, + unexposedTypes, + ); + param.push({ + ...p, + type: flattenType(filtered), + additionalTypes, + }); } else if (!p.optional) { throw new Error(`A non-optional parameter has unknown type: ${p.type}`); } else { @@ -237,13 +245,36 @@ function filterUnexposedType( unexposedTypes, ); if (filteredUnion.length) { - return { ...type, type: flattenType(filteredUnion) }; + return { + ...type, + type: flattenType(filteredUnion), + additionalTypes: filterAdditionalTypes( + type.additionalTypes, + unexposedTypes, + ), + }; } - } else if (type.overrideType || !unexposedTypes.has(type.type)) { - return type; + } else if (!type.overrideType && unexposedTypes.has(type.type)) { + return; + } else { + const additionalTypes = filterAdditionalTypes( + type.additionalTypes, + unexposedTypes, + ); + return type.additionalTypes ? { ...type, additionalTypes } : type; } } +function filterAdditionalTypes( + additionalTypes: string[] | undefined, + unexposedTypes: Set, +) { + const filtered = additionalTypes?.filter( + (additionalType) => !unexposedTypes.has(additionalType), + ); + return filtered?.length ? filtered : undefined; +} + function filterUnexposedTypeFromUnion( union: Browser.Typed[], unexposedTypes: Set,