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,
},
},
},