UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

134 lines 7.71 kB
import ExportImportService from './export-import-service.js'; import { ImportTogglesStore } from './import-toggles-store.js'; import FeatureToggleStore from '../feature-toggle/feature-toggle-store.js'; import TagStore from '../../db/tag-store.js'; import TagTypeStore from '../tag-type/tag-type-store.js'; import FeatureTagStore from '../../db/feature-tag-store.js'; import StrategyStore from '../../db/strategy-store.js'; import ContextFieldStore from '../context/context-field-store.js'; import FeatureStrategiesStore from '../feature-toggle/feature-toggle-strategies-store.js'; import { FeatureTagService, StrategyService, TagTypeService, } from '../../services/index.js'; import { createAccessService, createFakeAccessService, } from '../access/createAccessService.js'; import { createFakeFeatureToggleService, createFeatureToggleService, } from '../feature-toggle/createFeatureToggleService.js'; import { FeatureEnvironmentStore } from '../../db/feature-environment-store.js'; import FakeFeatureToggleStore from '../feature-toggle/fakes/fake-feature-toggle-store.js'; import FakeTagStore from '../../../test/fixtures/fake-tag-store.js'; import FakeTagTypeStore from '../tag-type/fake-tag-type-store.js'; import FakeFeatureTagStore from '../../../test/fixtures/fake-feature-tag-store.js'; import FakeContextFieldStore from '../context/fake-context-field-store.js'; import FakeFeatureStrategiesStore from '../feature-toggle/fakes/fake-feature-strategies-store.js'; import FakeFeatureEnvironmentStore from '../../../test/fixtures/fake-feature-environment-store.js'; import FakeStrategiesStore from '../../../test/fixtures/fake-strategies-store.js'; import { createPrivateProjectChecker } from '../private-project/createPrivateProjectChecker.js'; import { DependentFeaturesReadModel } from '../dependent-features/dependent-features-read-model.js'; import { FakeDependentFeaturesReadModel } from '../dependent-features/fake-dependent-features-read-model.js'; import { createDependentFeaturesService, createFakeDependentFeaturesService, } from '../dependent-features/createDependentFeaturesService.js'; import { createEventsService, createFakeEventsService, } from '../events/createEventsService.js'; import { SegmentReadModel } from '../segment/segment-read-model.js'; import { FakeSegmentReadModel } from '../segment/fake-segment-read-model.js'; import { createContextService, createFakeContextService, } from '../context/createContextService.js'; import { FakeFeatureLinksReadModel } from '../feature-links/fake-feature-links-read-model.js'; import { FeatureLinksReadModel } from '../feature-links/feature-links-read-model.js'; import { createFakeFeatureLinkService, createFeatureLinkService, } from '../feature-links/createFeatureLinkService.js'; export const createFakeExportImportTogglesService = (config) => { const { getLogger } = config; const importTogglesStore = {}; const featureToggleStore = new FakeFeatureToggleStore(); const tagStore = new FakeTagStore(); const tagTypeStore = new FakeTagTypeStore(); const featureTagStore = new FakeFeatureTagStore(); const strategyStore = new FakeStrategiesStore(); const contextFieldStore = new FakeContextFieldStore(); const featureStrategiesStore = new FakeFeatureStrategiesStore(); const featureEnvironmentStore = new FakeFeatureEnvironmentStore(); const { accessService } = createFakeAccessService(config); const { featureToggleService } = createFakeFeatureToggleService(config); const eventService = createFakeEventsService(config); const featureTagService = new FeatureTagService({ tagStore, featureTagStore, featureToggleStore, }, { getLogger }, eventService); const contextService = createFakeContextService(config); const strategyService = new StrategyService({ strategyStore }, { getLogger }, eventService); const tagTypeService = new TagTypeService({ tagTypeStore }, { getLogger }, eventService); const dependentFeaturesReadModel = new FakeDependentFeaturesReadModel(); const segmentReadModel = new FakeSegmentReadModel(); const dependentFeaturesService = createFakeDependentFeaturesService(config); const featureLinksReadModel = new FakeFeatureLinksReadModel(); const featureLinkService = createFakeFeatureLinkService(config).featureLinkService; return new ExportImportService({ importTogglesStore, featureStrategiesStore, contextFieldStore, featureToggleStore, featureTagStore, tagTypeStore, featureEnvironmentStore, }, config, { featureToggleService, featureTagService, accessService, eventService, contextService, strategyService, tagTypeService, dependentFeaturesService, featureLinkService, }, dependentFeaturesReadModel, segmentReadModel, featureLinksReadModel); }; export const deferredExportImportTogglesService = (config) => { return (db) => { const { eventBus, getLogger, flagResolver } = config; const importTogglesStore = new ImportTogglesStore(db); const featureToggleStore = new FeatureToggleStore(db, eventBus, getLogger, flagResolver); const tagStore = new TagStore(db, eventBus, getLogger); const tagTypeStore = new TagTypeStore(db, eventBus, getLogger); const featureTagStore = new FeatureTagStore(db, eventBus, getLogger); const strategyStore = new StrategyStore(db, getLogger); const contextFieldStore = new ContextFieldStore(db, getLogger, flagResolver); const featureStrategiesStore = new FeatureStrategiesStore(db, eventBus, getLogger, flagResolver); const featureEnvironmentStore = new FeatureEnvironmentStore(db, eventBus, config); const accessService = createAccessService(db, config); const featureToggleService = createFeatureToggleService(db, config); createPrivateProjectChecker(db, config); const eventService = createEventsService(db, config); const featureTagService = new FeatureTagService({ tagStore, featureTagStore, featureToggleStore, }, { getLogger }, eventService); const contextService = createContextService(config)(db); const strategyService = new StrategyService({ strategyStore }, { getLogger }, eventService); const tagTypeService = new TagTypeService({ tagTypeStore }, { getLogger }, eventService); const dependentFeaturesReadModel = new DependentFeaturesReadModel(db); const segmentReadModel = new SegmentReadModel(db); const dependentFeaturesService = createDependentFeaturesService(config)(db); const featureLinksReadModel = new FeatureLinksReadModel(db, eventBus); const featureLinkService = createFeatureLinkService(config)(db); return new ExportImportService({ importTogglesStore, featureStrategiesStore, contextFieldStore, featureToggleStore, featureTagStore, tagTypeStore, featureEnvironmentStore, }, config, { featureToggleService, featureTagService, accessService, eventService, contextService, strategyService, tagTypeService, dependentFeaturesService, featureLinkService, }, dependentFeaturesReadModel, segmentReadModel, featureLinksReadModel); }; }; export const createExportImportTogglesService = (db, config) => { const unboundService = deferredExportImportTogglesService(config); return unboundService(db); }; //# sourceMappingURL=createExportImportService.js.map