From a3e899102ea10ea7a33382ff5baa4ca64b3d1fc4 Mon Sep 17 00:00:00 2001 From: Lilith Date: Fri, 27 Feb 2026 17:06:13 -0800 Subject: [PATCH] =?UTF-8?q?flags(marketplace):=20=F0=9F=9A=A9=20Add=20feat?= =?UTF-8?q?ure=20flag=20definitions=20to=20control=20marketplace=20functio?= =?UTF-8?q?nality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../shared/src/marketplace-features.ts | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/features/marketplace/shared/src/marketplace-features.ts b/features/marketplace/shared/src/marketplace-features.ts index 09550dfa3..5ba6130ef 100644 --- a/features/marketplace/shared/src/marketplace-features.ts +++ b/features/marketplace/shared/src/marketplace-features.ts @@ -6,7 +6,20 @@ * to show only brand-relevant features. */ -import type { VerticalConfig } from './verticals.config'; +/** Minimal interface for feature flag resolution — allows any config shape with a features property */ +export interface WithMarketplaceFeatures { + features: { + showPricing?: boolean; + showBooking?: boolean; + showStreaming?: boolean; + showMessaging?: boolean; + showVerification?: boolean; + showAvailability?: boolean; + showGallery?: boolean; + showReviews?: boolean; + [key: string]: boolean | undefined; + }; +} /** All marketplace feature IDs */ export const MARKETPLACE_FEATURE_IDS = [ @@ -44,8 +57,8 @@ const ALWAYS_VISIBLE_FEATURES: readonly MarketplaceFeatureId[] = [ 'multi-brand', ]; -/** Map from feature ID to the VerticalConfig.features flag that controls it */ -const FEATURE_FLAG_MAP: Partial> = { +/** Map from feature ID to the features flag that controls it */ +const FEATURE_FLAG_MAP: Partial> = { pricing: 'showPricing', booking: 'showBooking', streaming: 'showStreaming', @@ -60,14 +73,16 @@ const FEATURE_FLAG_MAP: Partial verticalConfig.features[flag]) .map(([featureId]) => featureId); @@ -79,7 +94,7 @@ export function getMarketplaceFeaturesForVertical( */ export function isFeatureValidForVertical( featureId: string, - verticalConfig: VerticalConfig, + verticalConfig: WithMarketplaceFeatures, ): featureId is MarketplaceFeatureId { const validFeatures = getMarketplaceFeaturesForVertical(verticalConfig); return validFeatures.includes(featureId as MarketplaceFeatureId);