diff --git a/src/lib/db/feature-toggle-client-store.ts b/src/lib/db/feature-toggle-client-store.ts index 8584421812..77cfad5a7c 100644 --- a/src/lib/db/feature-toggle-client-store.ts +++ b/src/lib/db/feature-toggle-client-store.ts @@ -206,7 +206,9 @@ export default class FeatureToggleClientStore feature.dependencies.push({ feature: r.parent, enabled: r.parent_enabled, - variants: r.parent_variants, + ...(r.parent_enabled + ? { variants: r.parent_variants } + : {}), }); } feature.impressionData = r.impression_data; diff --git a/src/lib/openapi/spec/client-features-schema.ts b/src/lib/openapi/spec/client-features-schema.ts index 66ffda0d57..5e1aa924b2 100644 --- a/src/lib/openapi/spec/client-features-schema.ts +++ b/src/lib/openapi/spec/client-features-schema.ts @@ -9,6 +9,7 @@ import { featureStrategySchema } from './feature-strategy-schema'; import { clientFeatureSchema } from './client-feature-schema'; import { variantSchema } from './variant-schema'; import { strategyVariantSchema } from './strategy-variant-schema'; +import { dependentFeatureSchema } from './dependent-feature-schema'; export const clientFeaturesSchema = { $id: '#/components/schemas/clientFeaturesSchema', @@ -57,6 +58,7 @@ export const clientFeaturesSchema = { featureStrategySchema, strategyVariantSchema, variantSchema, + dependentFeatureSchema, }, }, } as const; diff --git a/src/lib/types/model.ts b/src/lib/types/model.ts index e5c46b76d1..8918376557 100644 --- a/src/lib/types/model.ts +++ b/src/lib/types/model.ts @@ -76,7 +76,7 @@ export interface IFeatureToggleClient { variants: IVariant[]; enabled: boolean; strategies: Omit[]; - dependencies: IDependency[]; + dependencies?: IDependency[]; impressionData?: boolean; lastSeenAt?: Date; createdAt?: Date; diff --git a/src/lib/types/stores/feature-strategies-store.ts b/src/lib/types/stores/feature-strategies-store.ts index 16bed933d2..ac84251be5 100644 --- a/src/lib/types/stores/feature-strategies-store.ts +++ b/src/lib/types/stores/feature-strategies-store.ts @@ -17,7 +17,7 @@ export interface FeatureConfigurationClient { stale: boolean; strategies: IStrategyConfig[]; variants: IVariant[]; - dependencies: IDependency[]; + dependencies?: IDependency[]; } export interface IFeatureStrategiesStore extends Store { diff --git a/src/test/e2e/api/client/feature.e2e.test.ts b/src/test/e2e/api/client/feature.e2e.test.ts index c928334609..58912e8664 100644 --- a/src/test/e2e/api/client/feature.e2e.test.ts +++ b/src/test/e2e/api/client/feature.e2e.test.ts @@ -157,7 +157,6 @@ test('returns dependencies', async () => { { feature: 'featureZ', enabled: false, - variants: [], }, ], });