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:
parent
82dddb2eef
commit
9c05e56c4a
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user