1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-27 01:19:00 +02:00

refactor: simplify feature toggle service deps (#9964)

This commit is contained in:
Mateusz Kwasniewski 2025-05-13 09:42:37 +02:00 committed by GitHub
parent 82dddb2eef
commit 9c05e56c4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 75 additions and 75 deletions

View File

@ -144,16 +144,18 @@ export const createFeatureToggleService = (
strategyStore,
},
{ getLogger, flagResolver, eventBus, resourceLimits },
segmentService,
accessService,
eventService,
changeRequestAccessReadModel,
privateProjectChecker,
dependentFeaturesReadModel,
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinksReadModel,
{
segmentService,
accessService,
eventService,
changeRequestAccessReadModel,
privateProjectChecker,
dependentFeaturesReadModel,
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinksReadModel,
},
);
return featureToggleService;
};
@ -213,16 +215,18 @@ export const createFakeFeatureToggleService = (config: IUnleashConfig) => {
eventBus: new EventEmitter(),
resourceLimits,
},
segmentService,
accessService,
eventService,
changeRequestAccessReadModel,
fakePrivateProjectChecker,
dependentFeaturesReadModel,
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinksReadModel,
{
segmentService,
accessService,
eventService,
changeRequestAccessReadModel,
privateProjectChecker: fakePrivateProjectChecker,
dependentFeaturesReadModel,
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinksReadModel,
},
);
return {
featureToggleService,

View File

@ -149,6 +149,36 @@ const oneOf = (values: string[], match: string) => {
return values.some((value) => value === match);
};
export type Stores = Pick<
IUnleashStores,
| 'featureStrategiesStore'
| 'featureToggleStore'
| 'clientFeatureToggleStore'
| 'projectStore'
| 'featureTagStore'
| 'featureEnvironmentStore'
| 'contextFieldStore'
| 'strategyStore'
>;
export type Config = Pick<
IUnleashConfig,
'getLogger' | 'flagResolver' | 'eventBus' | 'resourceLimits'
>;
export type ServicesAndReadModels = {
segmentService: ISegmentService;
accessService: AccessService;
eventService: EventService;
changeRequestAccessReadModel: IChangeRequestAccessReadModel;
privateProjectChecker: IPrivateProjectChecker;
dependentFeaturesReadModel: IDependentFeaturesReadModel;
dependentFeaturesService: DependentFeaturesService;
featureLifecycleReadModel: IFeatureLifecycleReadModel;
featureCollaboratorsReadModel: IFeatureCollaboratorsReadModel;
featureLinksReadModel: IFeatureLinksReadModel;
};
class FeatureToggleService {
private logger: Logger;
@ -204,36 +234,20 @@ class FeatureToggleService {
featureEnvironmentStore,
contextFieldStore,
strategyStore,
}: Pick<
IUnleashStores,
| 'featureStrategiesStore'
| 'featureToggleStore'
| 'clientFeatureToggleStore'
| 'projectStore'
| 'featureTagStore'
| 'featureEnvironmentStore'
| 'contextFieldStore'
| 'strategyStore'
>,
}: Stores,
{ getLogger, flagResolver, eventBus, resourceLimits }: Config,
{
getLogger,
flagResolver,
eventBus,
resourceLimits,
}: Pick<
IUnleashConfig,
'getLogger' | 'flagResolver' | 'eventBus' | 'resourceLimits'
>,
segmentService: ISegmentService,
accessService: AccessService,
eventService: EventService,
changeRequestAccessReadModel: IChangeRequestAccessReadModel,
privateProjectChecker: IPrivateProjectChecker,
dependentFeaturesReadModel: IDependentFeaturesReadModel,
dependentFeaturesService: DependentFeaturesService,
featureLifecycleReadModel: IFeatureLifecycleReadModel,
featureCollaboratorsReadModel: IFeatureCollaboratorsReadModel,
featureLinksReadModel: IFeatureLinksReadModel,
segmentService,
accessService,
eventService,
changeRequestAccessReadModel,
privateProjectChecker,
dependentFeaturesReadModel,
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinksReadModel,
}: ServicesAndReadModels,
) {
this.logger = getLogger('services/feature-toggle-service.ts');
this.featureStrategiesStore = featureStrategiesStore;

View File

@ -1,22 +1,15 @@
import {
FEATURE_POTENTIALLY_STALE_ON,
type IBaseEvent,
type IFeatureCollaboratorsReadModel,
type IUnleashConfig,
type IUnleashStores,
} from '../types';
import { createTestConfig } from '../../test/config/test-config';
import FeatureToggleService from '../features/feature-toggle/feature-toggle-service';
import type { AccessService } from './access-service';
import type { IChangeRequestAccessReadModel } from '../features/change-request-access-service/change-request-access-read-model';
import type { ISegmentService } from '../features/segment/segment-service-interface';
import type { IPrivateProjectChecker } from '../features/private-project/privateProjectCheckerType';
import type { IDependentFeaturesReadModel } from '../features/dependent-features/dependent-features-read-model-type';
import FeatureToggleService, {
type ServicesAndReadModels,
} from '../features/feature-toggle/feature-toggle-service';
import EventService from '../features/events/event-service';
import FakeFeatureTagStore from '../../test/fixtures/fake-feature-tag-store';
import type { DependentFeaturesService } from '../features/dependent-features/dependent-features-service';
import type { IFeatureLifecycleReadModel } from '../features/feature-lifecycle/feature-lifecycle-read-model-type';
import type { IFeatureLinksReadModel } from '../features/feature-links/feature-links-read-model-type';
test('Should only store events for potentially stale on', async () => {
expect.assertions(2);
@ -64,16 +57,7 @@ test('Should only store events for potentially stale on', async () => {
...(config.experimental ?? {}),
},
} as unknown as IUnleashConfig,
{} as ISegmentService,
{} as AccessService,
eventService,
{} as IChangeRequestAccessReadModel,
{} as IPrivateProjectChecker,
{} as IDependentFeaturesReadModel,
{} as DependentFeaturesService,
{} as IFeatureLifecycleReadModel,
{} as IFeatureCollaboratorsReadModel,
{} as IFeatureLinksReadModel,
{ eventService } as ServicesAndReadModels,
);
await featureToggleService.updatePotentiallyStaleFeatures();

View File

@ -291,13 +291,11 @@ export const createServices = (
? new FeatureCollaboratorsReadModel(db)
: new FakeFeatureCollaboratorsReadModel();
const featureLinkReadModel = db
const featureLinksReadModel = db
? new FeatureLinksReadModel(db, config.eventBus)
: new FakeFeatureLinksReadModel();
const featureToggleService = new FeatureToggleService(
stores,
config,
const featureToggleService = new FeatureToggleService(stores, config, {
segmentService,
accessService,
eventService,
@ -307,8 +305,8 @@ export const createServices = (
dependentFeaturesService,
featureLifecycleReadModel,
featureCollaboratorsReadModel,
featureLinkReadModel,
);
featureLinksReadModel,
});
const transactionalEnvironmentService = db
? withTransactional(createEnvironmentService(config), db)
: withFakeTransactional(createFakeEnvironmentService(config));