From de287a75fe43a9a56ff2cf93acbdea004ab652e0 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Mon, 27 Nov 2023 14:54:40 +0100 Subject: [PATCH] chore: remove dependent feature flags (#5419) --- .../FeatureArchiveDialog.test.tsx | 4 +- .../FeatureArchiveDialog.tsx | 16 +-- .../AddDependencyDialogue.test.tsx | 3 - .../FeatureOverviewSidePanelDetails.test.tsx | 6 -- .../useShowDependentFeatures.ts | 6 +- .../FeatureSettingsProjectConfirm.test.tsx | 6 +- .../FeatureSettingsProjectConfirm.tsx | 4 +- .../feature/FeatureView/FeatureView.tsx | 11 +- .../__snapshots__/create-config.test.ts.snap | 1 - .../client-feature-toggle-store.ts | 4 +- .../tests/client-feature-toggles.e2e.test.ts | 1 - .../dependent-features-controller.ts | 100 ++++++------------ .../dependent.features.e2e.test.ts | 1 - .../export-import.e2e.test.ts | 1 - .../feature-toggle-row-converter.ts | 3 +- .../feature-toggle/feature-toggle-service.ts | 74 ++++++------- .../feature-toggle/feature-toggle-store.ts | 14 +-- .../feature-toggle-last-seen-at.e2e.test.ts | 1 - .../tests/feature-toggles.e2e.test.ts | 1 - .../playground/advanced-playground.test.ts | 7 +- src/lib/types/experimental.ts | 5 - src/server-dev.ts | 1 - .../e2e/api/admin/feature-archive.e2e.test.ts | 1 - src/test/e2e/api/client/feature.e2e.test.ts | 5 +- 24 files changed, 83 insertions(+), 193 deletions(-) diff --git a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.test.tsx b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.test.tsx index 759b158a66..81afb8b7c4 100644 --- a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.test.tsx +++ b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.test.tsx @@ -31,9 +31,6 @@ const setupArchiveValidation = (orphanParents: string[]) => { versionInfo: { current: { oss: 'version', enterprise: 'version' }, }, - flags: { - dependentFeatures: true, - }, }); testServerRoute( server, @@ -126,6 +123,7 @@ test('Skip change request', async () => { await screen.findByText('Archive feature toggles'); const button = await screen.findByText('Archive toggles'); + await waitFor(() => expect(button).toBeEnabled()); button.click(); await waitFor(() => { diff --git a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx index 14a0e24d99..c2ac11e8d9 100644 --- a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx +++ b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx @@ -302,12 +302,8 @@ export const FeatureArchiveDialog: VFC = ({ const { disableArchive, offendingParents, hasDeletedDependencies } = useVerifyArchive(featureIds, projectId, isOpen); - const dependentFeatures = useUiFlag('dependentFeatures'); - const removeDependenciesWarning = - dependentFeatures && - offendingParents.length === 0 && - hasDeletedDependencies; + offendingParents.length === 0 && hasDeletedDependencies; return ( = ({ primaryButtonText={buttonText} secondaryButtonText='Cancel' title={dialogTitle} - disabledPrimaryButton={dependentFeatures && disableArchive} + disabledPrimaryButton={disableArchive} > = ({ } /> 0 - } + condition={offendingParents.length > 0} show={ = ({ ?

0 - } + condition={offendingParents.length > 0} show={ { testServerRoute(server, '/api/admin/ui-config', { - flags: { - dependentFeatures: true, - }, versionInfo: { current: { oss: 'irrelevant', enterprise: 'some value' }, }, diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx index 41b30b4295..6b16895cfa 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx @@ -10,9 +10,6 @@ const server = testServerSetup(); const setupApi = () => { testServerRoute(server, '/api/admin/ui-config', { - flags: { - dependentFeatures: true, - }, versionInfo: { current: { oss: 'irrelevant', enterprise: 'some value' }, }, @@ -35,9 +32,6 @@ const setupApi = () => { const setupOssWithExistingDependencies = () => { testServerRoute(server, '/api/admin/ui-config', { - flags: { - dependentFeatures: true, - }, versionInfo: { current: { oss: 'some value' }, }, diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts index 9108c883b0..4f0cb7757d 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts @@ -1,13 +1,9 @@ -import { useUiFlag } from 'hooks/useUiFlag'; import { useCheckDependenciesExist } from 'hooks/api/getters/useCheckDependenciesExist/useCheckDependenciesExist'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; export const useShowDependentFeatures = (project: string) => { - const dependentFeatures = useUiFlag('dependentFeatures'); const { dependenciesExist } = useCheckDependenciesExist(project); const { isOss } = useUiConfig(); - return Boolean( - isOss() ? dependenciesExist && dependentFeatures : dependentFeatures, - ); + return Boolean(isOss() ? dependenciesExist : true); }; diff --git a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.test.tsx b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.test.tsx index 290ebaec49..830e5e5396 100644 --- a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.test.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.test.tsx @@ -10,11 +10,7 @@ import userEvent from '@testing-library/user-event'; const server = testServerSetup(); const setupApi = () => { - testServerRoute(server, '/api/admin/ui-config', { - flags: { - dependentFeatures: true, - }, - }); + testServerRoute(server, '/api/admin/ui-config', {}); }; test('Cannot change project for feature with dependencies', async () => { diff --git a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.tsx b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.tsx index 619108c44c..3f5605cff6 100644 --- a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsProject/FeatureSettingsProjectConfirm/FeatureSettingsProjectConfirm.tsx @@ -41,7 +41,6 @@ const FeatureSettingsProjectConfirm = ({ feature, changeRequests, }: IFeatureSettingsProjectConfirm) => { - const dependentFeatures = useUiFlag('dependentFeatures'); const currentProjectId = useRequiredPathParam('projectId'); const { project } = useProject(projectId); @@ -61,8 +60,7 @@ const FeatureSettingsProjectConfirm = ({ : false; const hasDependencies = - dependentFeatures && - (feature.dependencies.length > 0 || feature.children.length > 0); + feature.dependencies.length > 0 || feature.children.length > 0; return ( { const { refetch: projectRefetch } = useProject(projectId); const { favorite, unfavorite } = useFavoriteFeaturesApi(); const { refetchFeature } = useFeature(projectId, featureId); - const dependentFeatures = useUiFlag('dependentFeatures'); const { setToastData, setToastApiError } = useToast(); const [openTagDialog, setOpenTagDialog] = useState(false); @@ -267,10 +266,7 @@ export const FeatureView = () => { /> 0 - } + condition={feature.dependencies.length > 0} show={ Has parent: @@ -283,10 +279,7 @@ export const FeatureView = () => { } /> 0 - } + condition={feature.children.length > 0} show={ Has children: diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index 56ed114f98..271723bde0 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -75,7 +75,6 @@ exports[`should create default config 1`] = ` "caseInsensitiveInOperators": false, "customRootRolesKillSwitch": false, "demo": false, - "dependentFeatures": false, "detectSegmentUsageInChangeRequests": false, "disableBulkToggle": false, "disableMetrics": false, diff --git a/src/lib/features/client-feature-toggles/client-feature-toggle-store.ts b/src/lib/features/client-feature-toggles/client-feature-toggle-store.ts index 64f42a6cd4..238cf3cb36 100644 --- a/src/lib/features/client-feature-toggles/client-feature-toggle-store.ts +++ b/src/lib/features/client-feature-toggles/client-feature-toggle-store.ts @@ -67,8 +67,6 @@ export default class FeatureToggleClientStore const isPlayground = requestType === 'playground'; const environment = featureQuery?.environment || DEFAULT_ENV; const stopTimer = this.timer('getFeatureAdmin'); - const dependentFeaturesEnabled = - this.flagResolver.isEnabled('dependentFeatures'); let selectColumns = [ 'features.name as name', @@ -201,7 +199,7 @@ export default class FeatureToggleClientStore ) { this.addSegmentIdsToStrategy(feature, r); } - if (r.parent && !isAdmin && dependentFeaturesEnabled) { + if (r.parent && !isAdmin) { feature.dependencies = feature.dependencies || []; feature.dependencies.push({ feature: r.parent, diff --git a/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts b/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts index 146edf1bce..718d78c2b5 100644 --- a/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts +++ b/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts @@ -64,7 +64,6 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, }, }, }, diff --git a/src/lib/features/dependent-features/dependent-features-controller.ts b/src/lib/features/dependent-features/dependent-features-controller.ts index fd2042b8d7..2faa9187bd 100644 --- a/src/lib/features/dependent-features/dependent-features-controller.ts +++ b/src/lib/features/dependent-features/dependent-features-controller.ts @@ -182,25 +182,19 @@ export default class DependentFeaturesController extends Controller { const { child, projectId } = req.params; const { variants, enabled, feature } = req.body; - if (this.config.flagResolver.isEnabled('dependentFeatures')) { - await this.dependentFeaturesService.transactional((service) => - service.upsertFeatureDependency( - { child, projectId }, - { - variants, - enabled, - feature, - }, - req.user, - ), - ); + await this.dependentFeaturesService.transactional((service) => + service.upsertFeatureDependency( + { child, projectId }, + { + variants, + enabled, + feature, + }, + req.user, + ), + ); - res.status(200).end(); - } else { - throw new InvalidOperationError( - 'Dependent features are not enabled', - ); - } + res.status(200).end(); } async deleteFeatureDependency( @@ -209,23 +203,17 @@ export default class DependentFeaturesController extends Controller { ): Promise { const { child, parent, projectId } = req.params; - if (this.config.flagResolver.isEnabled('dependentFeatures')) { - await this.dependentFeaturesService.transactional((service) => - service.deleteFeatureDependency( - { - parent, - child, - }, - projectId, - req.user, - ), - ); - res.status(200).end(); - } else { - throw new InvalidOperationError( - 'Dependent features are not enabled', - ); - } + await this.dependentFeaturesService.transactional((service) => + service.deleteFeatureDependency( + { + parent, + child, + }, + projectId, + req.user, + ), + ); + res.status(200).end(); } async deleteFeatureDependencies( @@ -234,20 +222,10 @@ export default class DependentFeaturesController extends Controller { ): Promise { const { child, projectId } = req.params; - if (this.config.flagResolver.isEnabled('dependentFeatures')) { - await this.dependentFeaturesService.transactional((service) => - service.deleteFeaturesDependencies( - [child], - projectId, - req.user, - ), - ); - res.status(200).end(); - } else { - throw new InvalidOperationError( - 'Dependent features are not enabled', - ); - } + await this.dependentFeaturesService.transactional((service) => + service.deleteFeaturesDependencies([child], projectId, req.user), + ); + res.status(200).end(); } async getParentOptions( @@ -256,15 +234,9 @@ export default class DependentFeaturesController extends Controller { ): Promise { const { child } = req.params; - if (this.config.flagResolver.isEnabled('dependentFeatures')) { - const parentOptions = - await this.dependentFeaturesService.getParentOptions(child); - res.send(parentOptions); - } else { - throw new InvalidOperationError( - 'Dependent features are not enabled', - ); - } + const parentOptions = + await this.dependentFeaturesService.getParentOptions(child); + res.send(parentOptions); } async checkDependenciesExist( @@ -273,14 +245,8 @@ export default class DependentFeaturesController extends Controller { ): Promise { const { child } = req.params; - if (this.config.flagResolver.isEnabled('dependentFeatures')) { - const exist = - await this.dependentFeaturesService.checkDependenciesExist(); - res.send(exist); - } else { - throw new InvalidOperationError( - 'Dependent features are not enabled', - ); - } + const exist = + await this.dependentFeaturesService.checkDependenciesExist(); + res.send(exist); } } diff --git a/src/lib/features/dependent-features/dependent.features.e2e.test.ts b/src/lib/features/dependent-features/dependent.features.e2e.test.ts index 026f4989e2..04c57576b2 100644 --- a/src/lib/features/dependent-features/dependent.features.e2e.test.ts +++ b/src/lib/features/dependent-features/dependent.features.e2e.test.ts @@ -25,7 +25,6 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, }, }, }, diff --git a/src/lib/features/export-import-toggles/export-import.e2e.test.ts b/src/lib/features/export-import-toggles/export-import.e2e.test.ts index b95b844276..13ec831f0b 100644 --- a/src/lib/features/export-import-toggles/export-import.e2e.test.ts +++ b/src/lib/features/export-import-toggles/export-import.e2e.test.ts @@ -159,7 +159,6 @@ beforeAll(async () => { experimental: { flags: { featuresExportImport: true, - dependentFeatures: true, }, }, }, diff --git a/src/lib/features/feature-toggle/converters/feature-toggle-row-converter.ts b/src/lib/features/feature-toggle/converters/feature-toggle-row-converter.ts index 4cc23c0867..385264199a 100644 --- a/src/lib/features/feature-toggle/converters/feature-toggle-row-converter.ts +++ b/src/lib/features/feature-toggle/converters/feature-toggle-row-converter.ts @@ -202,7 +202,6 @@ export class FeatureToggleRowConverter { buildPlaygroundFeaturesFromRows = ( rows: any[], - dependentFeaturesEnabled: boolean, featureQuery?: IFeatureToggleQuery, ): FeatureConfigurationClient[] => { const result = rows.reduce((acc, r) => { @@ -212,7 +211,7 @@ export class FeatureToggleRowConverter { feature = this.createBaseFeature(r, feature, featureQuery); - if (r.parent && dependentFeaturesEnabled) { + if (r.parent) { feature.dependencies = feature.dependencies || []; feature.dependencies.push({ feature: r.parent, diff --git a/src/lib/features/feature-toggle/feature-toggle-service.ts b/src/lib/features/feature-toggle/feature-toggle-service.ts index 49d5cc3202..b7b5eb2197 100644 --- a/src/lib/features/feature-toggle/feature-toggle-service.ts +++ b/src/lib/features/feature-toggle/feature-toggle-service.ts @@ -130,6 +130,7 @@ export type FeatureNameCheckResultWithFeaturePattern = const oneOf = (values: string[], match: string) => { return values.some((value) => value === match); }; + class FeatureToggleService { private logger: Logger; @@ -256,32 +257,27 @@ class FeatureToggleService { } async validateNoChildren(featureName: string): Promise { - if (this.flagResolver.isEnabled('dependentFeatures')) { - const children = await this.dependentFeaturesReadModel.getChildren([ - featureName, - ]); - if (children.length > 0) { - throw new InvalidOperationError( - 'You can not archive/delete this feature since other features depend on it.', - ); - } + const children = await this.dependentFeaturesReadModel.getChildren([ + featureName, + ]); + if (children.length > 0) { + throw new InvalidOperationError( + 'You can not archive/delete this feature since other features depend on it.', + ); } } async validateNoOrphanParents(featureNames: string[]): Promise { - if (this.flagResolver.isEnabled('dependentFeatures')) { - if (featureNames.length === 0) return; - const parents = - await this.dependentFeaturesReadModel.getOrphanParents( - featureNames, - ); - if (parents.length > 0) { - throw new InvalidOperationError( - featureNames.length > 1 - ? `You can not archive/delete those features since other features depend on them.` - : `You can not archive/delete this feature since other features depend on it.`, - ); - } + if (featureNames.length === 0) return; + const parents = await this.dependentFeaturesReadModel.getOrphanParents( + featureNames, + ); + if (parents.length > 0) { + throw new InvalidOperationError( + featureNames.length > 1 + ? `You can not archive/delete those features since other features depend on them.` + : `You can not archive/delete this feature since other features depend on it.`, + ); } } @@ -959,12 +955,10 @@ class FeatureToggleService { let dependencies: IDependency[] = []; let children: string[] = []; - if (this.flagResolver.isEnabled('dependentFeatures')) { - [dependencies, children] = await Promise.all([ - this.dependentFeaturesReadModel.getParents(featureName), - this.dependentFeaturesReadModel.getChildren([featureName]), - ]); - } + [dependencies, children] = await Promise.all([ + this.dependentFeaturesReadModel.getParents(featureName), + this.dependentFeaturesReadModel.getChildren([featureName]), + ]); if (environmentVariants) { const result = @@ -1288,21 +1282,17 @@ class FeatureToggleService { }), ); - if (this.flagResolver.isEnabled('dependentFeatures')) { - const cloneDependencies = - this.dependentFeaturesService.cloneDependencies( - { featureName, newFeatureName, projectId }, - userName, - ); + const cloneDependencies = + this.dependentFeaturesService.cloneDependencies( + { featureName, newFeatureName, projectId }, + userName, + ); - await Promise.all([ - ...strategyTasks, - ...variantTasks, - cloneDependencies, - ]); - } else { - await Promise.all([...strategyTasks, ...variantTasks]); - } + await Promise.all([ + ...strategyTasks, + ...variantTasks, + cloneDependencies, + ]); return created; } diff --git a/src/lib/features/feature-toggle/feature-toggle-store.ts b/src/lib/features/feature-toggle/feature-toggle-store.ts index 213adab0b6..e666ca527b 100644 --- a/src/lib/features/feature-toggle/feature-toggle-store.ts +++ b/src/lib/features/feature-toggle/feature-toggle-store.ts @@ -209,16 +209,11 @@ export default class FeatureToggleStore implements IFeatureToggleStore { const archived = false; const builder = this.getBaseFeatureQuery(archived, environment); - const dependentFeaturesEnabled = - this.flagResolver.isEnabled('dependentFeatures'); + builder.withDependentFeatureToggles(); - if (dependentFeaturesEnabled) { - builder.withDependentFeatureToggles(); - - builder.addSelectColumn('df.parent as parent'); - builder.addSelectColumn('df.variants as parent_variants'); - builder.addSelectColumn('df.enabled as parent_enabled'); - } + builder.addSelectColumn('df.parent as parent'); + builder.addSelectColumn('df.variants as parent_variants'); + builder.addSelectColumn('df.enabled as parent_enabled'); if (featureQuery?.project) { builder.forProject(featureQuery.project); @@ -230,7 +225,6 @@ export default class FeatureToggleStore implements IFeatureToggleStore { return this.featureToggleRowConverter.buildPlaygroundFeaturesFromRows( rows, - dependentFeaturesEnabled, featureQuery, ); } diff --git a/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts b/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts index e4165cf6a5..66d24a8711 100644 --- a/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts +++ b/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts @@ -22,7 +22,6 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, useLastSeenRefactor: true, }, }, diff --git a/src/lib/features/feature-toggle/tests/feature-toggles.e2e.test.ts b/src/lib/features/feature-toggle/tests/feature-toggles.e2e.test.ts index 5d42d8364f..1e25341b25 100644 --- a/src/lib/features/feature-toggle/tests/feature-toggles.e2e.test.ts +++ b/src/lib/features/feature-toggle/tests/feature-toggles.e2e.test.ts @@ -93,7 +93,6 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, }, }, }, diff --git a/src/lib/features/playground/advanced-playground.test.ts b/src/lib/features/playground/advanced-playground.test.ts index 7faccdb53c..5be2ca5633 100644 --- a/src/lib/features/playground/advanced-playground.test.ts +++ b/src/lib/features/playground/advanced-playground.test.ts @@ -10,11 +10,7 @@ let app: IUnleashTest; let db: ITestDb; beforeAll(async () => { - db = await dbInit('advanced_playground', getLogger, { - experimental: { - flags: { dependentFeatures: true }, - }, - }); + db = await dbInit('advanced_playground', getLogger); app = await setupAppWithCustomConfig( db.stores, { @@ -24,7 +20,6 @@ beforeAll(async () => { strictSchemaValidation: true, strategyVariant: true, privateProjects: true, - dependentFeatures: true, useLastSeenRefactor: true, }, }, diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index 1836d9df98..b0b5cd3305 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -24,7 +24,6 @@ export type IFlagKey = | 'filterInvalidClientMetrics' | 'customRootRolesKillSwitch' | 'privateProjects' - | 'dependentFeatures' | 'disableMetrics' | 'useLastSeenRefactor' | 'banners' @@ -107,10 +106,6 @@ const flags: IFlags = { process.env.UNLEASH_EXPERIMENTAL_CUSTOM_ROOT_ROLES_KILL_SWITCH, false, ), - dependentFeatures: parseEnvVarBoolean( - process.env.UNLEASH_EXPERIMENTAL_DEPENDENT_FEATURES, - false, - ), privateProjects: parseEnvVarBoolean( process.env.UNLEASH_EXPERIMENTAL_PRIVATE_PROJECTS, false, diff --git a/src/server-dev.ts b/src/server-dev.ts index 1cb2bcbb6d..415cdc4459 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -38,7 +38,6 @@ process.nextTick(async () => { anonymiseEventLog: false, responseTimeWithAppNameKillSwitch: false, privateProjects: true, - dependentFeatures: true, useLastSeenRefactor: true, featureSearchAPI: true, featureSearchFrontend: false, diff --git a/src/test/e2e/api/admin/feature-archive.e2e.test.ts b/src/test/e2e/api/admin/feature-archive.e2e.test.ts index cd96cc5927..295dc68740 100644 --- a/src/test/e2e/api/admin/feature-archive.e2e.test.ts +++ b/src/test/e2e/api/admin/feature-archive.e2e.test.ts @@ -17,7 +17,6 @@ beforeAll(async () => { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, }, }, }, diff --git a/src/test/e2e/api/client/feature.e2e.test.ts b/src/test/e2e/api/client/feature.e2e.test.ts index c68de4738a..7f5aeef867 100644 --- a/src/test/e2e/api/client/feature.e2e.test.ts +++ b/src/test/e2e/api/client/feature.e2e.test.ts @@ -12,16 +12,13 @@ let db: ITestDb; const testUser = { name: 'test' } as User; beforeAll(async () => { - db = await dbInit('feature_api_client', getLogger, { - experimental: { flags: { dependentFeatures: true } }, - }); + db = await dbInit('feature_api_client', getLogger); app = await setupAppWithCustomConfig( db.stores, { experimental: { flags: { strictSchemaValidation: true, - dependentFeatures: true, }, }, },