unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
310 lines • 19.9 kB
JavaScript
import FeatureTypeService from './feature-type-service.js';
import EventService from '../features/events/event-service.js';
import HealthService from './health-service.js';
import ProjectService from '../features/project/project-service.js';
import ClientInstanceService from '../features/metrics/instance/instance-service.js';
import ClientMetricsServiceV2 from '../features/metrics/client-metrics/metrics-service-v2.js';
import { CustomMetricsService } from '../features/metrics/custom/custom-metrics-service.js';
import TagTypeService from '../features/tag-type/tag-type-service.js';
import TagService from './tag-service.js';
import StrategyService from './strategy-service.js';
import AddonService from './addon-service.js';
import ContextService from '../features/context/context-service.js';
import VersionService from './version-service.js';
import { EmailService } from './email-service.js';
import { AccessService } from './access-service.js';
import { ApiTokenService } from './api-token-service.js';
import UserService from './user-service.js';
import ResetTokenService from './reset-token-service.js';
import SettingService from './setting-service.js';
import SessionService from './session-service.js';
import UserFeedbackService from './user-feedback-service.js';
import { FeatureToggleService } from '../features/feature-toggle/feature-toggle-service.js';
import EnvironmentService from '../features/project-environments/environment-service.js';
import FeatureTagService from './feature-tag-service.js';
import ProjectHealthService from './project-health-service.js';
import UserSplashService from './user-splash-service.js';
import { SegmentService } from '../features/segment/segment-service.js';
import { OpenApiService } from './openapi-service.js';
import { ClientSpecService } from './client-spec-service.js';
import { PlaygroundService } from '../features/playground/playground-service.js';
import { GroupService } from './group-service.js';
import { FrontendApiService } from '../features/frontend-api/frontend-api-service.js';
import EdgeService from './edge-service.js';
import PatService from './pat-service.js';
import { PublicSignupTokenService } from './public-signup-token-service.js';
import { LastSeenService } from '../features/metrics/last-seen/last-seen-service.js';
import { InstanceStatsService } from '../features/instance-stats/instance-stats-service.js';
import { FavoritesService } from './favorites-service.js';
import MaintenanceService from '../features/maintenance/maintenance-service.js';
import { AccountService } from './account-service.js';
import { SchedulerService } from '../features/scheduler/scheduler-service.js';
import { ProjectInsightsService } from '../features/project-insights/project-insights-service.js';
import { createExportImportTogglesService, createFakeExportImportTogglesService, deferredExportImportTogglesService, } from '../features/export-import-toggles/createExportImportService.js';
import { withFakeTransactional, withTransactional, } from '../db/transaction.js';
import { createChangeRequestAccessReadModel, createFakeChangeRequestAccessService, } from '../features/change-request-access-service/createChangeRequestAccessReadModel.js';
import { createChangeRequestSegmentUsageReadModel, createFakeChangeRequestSegmentUsageReadModel, } from '../features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel.js';
import ConfigurationRevisionService from '../features/feature-toggle/configuration-revision-service.js';
import { createAccessService, createEnvironmentService, createEventsService, createFakeAccessService, createFakeEnvironmentService, createFakeEventsService, createFakeFeatureLinkService, createFakeFeatureToggleService, createFakeProjectService, createFakeUserSubscriptionsService, createFeatureLifecycleService, createFeatureLinkService, createFeatureToggleService, createProjectService, createUserSubscriptionsService, } from '../features/index.js';
import EventAnnouncerService from './event-announcer-service.js';
import { createGroupService } from '../features/group/createGroupService.js';
import { createFakePrivateProjectChecker, createPrivateProjectChecker, } from '../features/private-project/createPrivateProjectChecker.js';
import { DependentFeaturesService } from '../features/dependent-features/dependent-features-service.js';
import { createDependentFeaturesService, createFakeDependentFeaturesService, } from '../features/dependent-features/createDependentFeaturesService.js';
import { createFakeLastSeenService, createLastSeenService, } from '../features/metrics/last-seen/createLastSeenService.js';
import { createClientFeatureToggleService, createFakeClientFeatureToggleService, } from '../features/client-feature-toggles/createClientFeatureToggleService.js';
import { ClientFeatureToggleService } from '../features/client-feature-toggles/client-feature-toggle-service.js';
import { createFakeFeatureSearchService, createFeatureSearchService, } from '../features/feature-search/createFeatureSearchService.js';
import { FeatureSearchService } from '../features/feature-search/feature-search-service.js';
import { createFakeTagTypeService, createTagTypeService, } from '../features/tag-type/createTagTypeService.js';
import { createFakeInstanceStatsService, createInstanceStatsService, } from '../features/instance-stats/createInstanceStatsService.js';
import { InactiveUsersService } from '../users/inactive/inactive-users-service.js';
import { createFakeFrontendApiService, createFrontendApiService, } from '../features/frontend-api/createFrontendApiService.js';
import { createFakeProjectInsightsService, createProjectInsightsService, } from '../features/project-insights/createProjectInsightsService.js';
import { JobService } from '../features/scheduler/job-service.js';
import { UserSubscriptionsService } from '../features/user-subscriptions/user-subscriptions-service.js';
import { JobStore } from '../features/scheduler/job-store.js';
import { FeatureLifecycleService } from '../features/feature-lifecycle/feature-lifecycle-service.js';
import { createFakeFeatureLifecycleService } from '../features/feature-lifecycle/createFeatureLifecycle.js';
import { FeatureLifecycleReadModel } from '../features/feature-lifecycle/feature-lifecycle-read-model.js';
import { FakeFeatureLifecycleReadModel } from '../features/feature-lifecycle/fake-feature-lifecycle-read-model.js';
import { createApiTokenService, createFakeApiTokenService, } from '../features/api-tokens/createApiTokenService.js';
import { IntegrationEventsService } from '../features/integration-events/integration-events-service.js';
import { createFakePlaygroundService, createPlaygroundService, } from '../features/playground/createPlaygroundService.js';
import { createFakeOnboardingService, createOnboardingService, } from '../features/onboarding/createOnboardingService.js';
import { OnboardingService } from '../features/onboarding/onboarding-service.js';
import { PersonalDashboardService } from '../features/personal-dashboard/personal-dashboard-service.js';
import { createFakePersonalDashboardService, createPersonalDashboardService, } from '../features/personal-dashboard/createPersonalDashboardService.js';
import { createFakeProjectStatusService, createProjectStatusService, } from '../features/project-status/createProjectStatusService.js';
import { ProjectStatusService } from '../features/project-status/project-status-service.js';
import { createContextService, createFakeContextService, } from '../features/context/createContextService.js';
import { UniqueConnectionService } from '../features/unique-connection/unique-connection-service.js';
import { UnknownFlagsService } from '../features/metrics/unknown-flags/unknown-flags-service.js';
import { createUserService } from '../features/users/createUserService.js';
export const createServices = (stores, config, db) => {
const privateProjectChecker = db
? createPrivateProjectChecker(db, config)
: createFakePrivateProjectChecker();
const eventService = db
? createEventsService(db, config)
: createFakeEventsService(config, stores);
const groupService = new GroupService(stores, config, eventService);
const transactionalAccessService = db
? withTransactional((db) => createAccessService(db, config), db)
: withFakeTransactional(createFakeAccessService(config).accessService);
const accessService = new AccessService(stores, config, groupService, eventService);
const apiTokenService = db
? createApiTokenService(db, config)
: createFakeApiTokenService(config).apiTokenService;
const lastSeenService = db
? createLastSeenService(db, config)
: createFakeLastSeenService(config);
const unknownFlagsService = new UnknownFlagsService(stores, config);
// Initialize custom metrics service
const customMetricsService = new CustomMetricsService(config);
const clientMetricsServiceV2 = new ClientMetricsServiceV2(stores, config, lastSeenService, unknownFlagsService);
const featureLifecycleReadModel = db
? new FeatureLifecycleReadModel(db)
: new FakeFeatureLifecycleReadModel();
const transactionalContextService = db
? withTransactional(createContextService(config), db)
: withFakeTransactional(createFakeContextService(config));
const contextService = transactionalContextService;
const emailService = new EmailService(config);
const featureTypeService = new FeatureTypeService(stores, config, eventService);
const resetTokenService = new ResetTokenService(stores, config);
const strategyService = new StrategyService(stores, config, eventService);
const tagService = new TagService(stores, config, eventService);
const transactionalTagTypeService = db
? withTransactional(createTagTypeService(config), db)
: withFakeTransactional(createFakeTagTypeService(config));
const tagTypeService = transactionalTagTypeService;
const integrationEventsService = new IntegrationEventsService(stores, config);
const addonService = new AddonService(stores, config, tagTypeService, eventService, integrationEventsService);
const sessionService = new SessionService(stores, config);
const settingService = new SettingService(stores, config, eventService);
const userService = db
? withTransactional((db) => createUserService(db, config), db)
: withFakeTransactional(new UserService(stores, config, {
accessService,
resetTokenService,
emailService,
eventService,
sessionService,
settingService,
}));
const accountService = new AccountService(stores, config, {
accessService,
});
const versionService = new VersionService(stores, config);
const healthService = new HealthService(stores, config);
const userFeedbackService = new UserFeedbackService(stores, config);
const changeRequestAccessReadModel = db
? createChangeRequestAccessReadModel(db, config)
: createFakeChangeRequestAccessService();
const changeRequestSegmentUsageReadModel = db
? createChangeRequestSegmentUsageReadModel(db)
: createFakeChangeRequestSegmentUsageReadModel();
const segmentService = new SegmentService(stores, changeRequestAccessReadModel, changeRequestSegmentUsageReadModel, config, eventService, privateProjectChecker);
const clientInstanceService = new ClientInstanceService(stores, config, privateProjectChecker);
const transactionalDependentFeaturesService = db
? withTransactional(createDependentFeaturesService(config), db)
: withFakeTransactional(createFakeDependentFeaturesService(config));
const dependentFeaturesService = transactionalDependentFeaturesService;
const featureSearchService = db
? createFeatureSearchService(config)(db)
: createFakeFeatureSearchService(config);
const transactionalEnvironmentService = db
? withTransactional(createEnvironmentService(config), db)
: withFakeTransactional(createFakeEnvironmentService(config));
const environmentService = transactionalEnvironmentService;
const featureTagService = new FeatureTagService(stores, config, eventService);
const favoritesService = new FavoritesService(stores, config, eventService);
const projectService = db
? createProjectService(db, config)
: createFakeProjectService(config).projectService;
const transactionalProjectService = db
? withTransactional((db) => createProjectService(db, config), db)
: withFakeTransactional(createFakeProjectService(config).projectService);
const projectInsightsService = db
? createProjectInsightsService(db, config)
: createFakeProjectInsightsService().projectInsightsService;
const projectStatusService = db
? createProjectStatusService(db, config)
: createFakeProjectStatusService().projectStatusService;
const projectHealthService = new ProjectHealthService(stores, config, projectService);
const exportImportService = db
? createExportImportTogglesService(db, config)
: createFakeExportImportTogglesService(config);
const importService = db
? withTransactional(deferredExportImportTogglesService(config), db)
: withFakeTransactional(createFakeExportImportTogglesService(config));
const transactionalFeatureLinkService = db
? withTransactional(createFeatureLinkService(config), db)
: withFakeTransactional(createFakeFeatureLinkService(config).featureLinkService);
const featureLinkService = transactionalFeatureLinkService;
const featureToggleService = db
? withTransactional((db) => createFeatureToggleService(db, config), db)
: withFakeTransactional(createFakeFeatureToggleService(config).featureToggleService);
const transactionalFeatureToggleService = featureToggleService;
const transactionalGroupService = (txDb) => createGroupService(txDb, config);
const userSplashService = new UserSplashService(stores, config);
const openApiService = new OpenApiService(config);
const clientSpecService = new ClientSpecService(config);
const playgroundService = db
? createPlaygroundService(db, config)
: createFakePlaygroundService(config);
const configurationRevisionService = ConfigurationRevisionService.getInstance(stores, config);
const clientFeatureToggleService = db
? createClientFeatureToggleService(db, config)
: createFakeClientFeatureToggleService(config);
const frontendApiService = db
? createFrontendApiService(db, config, clientMetricsServiceV2, configurationRevisionService, clientInstanceService)
: createFakeFrontendApiService(config, clientMetricsServiceV2, configurationRevisionService, clientInstanceService);
const edgeService = new EdgeService({ apiTokenService }, config);
const patService = new PatService(stores, config, eventService);
const publicSignupTokenService = new PublicSignupTokenService(stores, config, userService, eventService);
const instanceStatsService = db
? createInstanceStatsService(db, config)
: createFakeInstanceStatsService(config);
const maintenanceService = new MaintenanceService(config, settingService);
const schedulerService = new SchedulerService(config.getLogger, maintenanceService, config.eventBus);
const eventAnnouncerService = new EventAnnouncerService(stores, config);
const inactiveUsersService = new InactiveUsersService(stores, config, {
userService,
});
const jobService = new JobService(new JobStore(db, config), config.getLogger);
const transactionalFeatureLifecycleService = db
? withTransactional(createFeatureLifecycleService(config), db)
: withFakeTransactional(createFakeFeatureLifecycleService(config).featureLifecycleService);
const featureLifecycleService = transactionalFeatureLifecycleService;
featureLifecycleService.listen();
const uniqueConnectionService = new UniqueConnectionService(stores, config);
uniqueConnectionService.listen();
const onboardingService = db
? createOnboardingService(config)(db)
: createFakeOnboardingService(config).onboardingService;
onboardingService.listen();
const personalDashboardService = db
? createPersonalDashboardService(db, config, stores)
: createFakePersonalDashboardService(config);
const transactionalUserSubscriptionsService = db
? withTransactional(createUserSubscriptionsService(config), db)
: withFakeTransactional(createFakeUserSubscriptionsService(config));
return {
transactionalAccessService,
accessService,
accountService,
addonService,
eventAnnouncerService,
featureToggleService,
featureTypeService,
healthService,
projectService,
transactionalProjectService,
strategyService,
tagTypeService,
transactionalTagTypeService,
tagService,
clientInstanceService,
clientMetricsServiceV2,
customMetricsService,
contextService,
transactionalContextService,
versionService,
apiTokenService,
emailService,
userService,
resetTokenService,
eventService,
environmentService,
transactionalEnvironmentService,
settingService,
sessionService,
userFeedbackService,
featureTagService,
projectHealthService,
userSplashService,
segmentService,
openApiService,
clientSpecService,
playgroundService,
groupService,
frontendApiService,
edgeService,
patService,
publicSignupTokenService,
lastSeenService,
instanceStatsService,
favoritesService,
maintenanceService,
exportService: exportImportService,
importService,
schedulerService,
configurationRevisionService,
transactionalFeatureToggleService,
transactionalGroupService,
privateProjectChecker,
dependentFeaturesService,
transactionalDependentFeaturesService,
clientFeatureToggleService,
featureSearchService,
inactiveUsersService,
projectInsightsService,
jobService,
featureLifecycleService,
transactionalFeatureLifecycleService,
integrationEventsService,
onboardingService,
personalDashboardService,
projectStatusService,
transactionalUserSubscriptionsService,
uniqueConnectionService,
featureLifecycleReadModel,
transactionalFeatureLinkService,
featureLinkService,
unknownFlagsService,
};
};
export { FeatureTypeService, EventService, HealthService, ProjectService, ClientInstanceService, ClientMetricsServiceV2, TagTypeService, TagService, StrategyService, AddonService, ContextService, VersionService, EmailService, AccessService, ApiTokenService, UserService, ResetTokenService, SettingService, SessionService, UserFeedbackService, FeatureToggleService, EnvironmentService, FeatureTagService, ProjectHealthService, UserSplashService, SegmentService, OpenApiService, ClientSpecService, PlaygroundService, GroupService, FrontendApiService, EdgeService, PatService, PublicSignupTokenService, LastSeenService, InstanceStatsService, FavoritesService, SchedulerService, DependentFeaturesService, ClientFeatureToggleService, FeatureSearchService, ProjectInsightsService, JobService, FeatureLifecycleService, IntegrationEventsService, OnboardingService, PersonalDashboardService, ProjectStatusService, UserSubscriptionsService, UniqueConnectionService, FeatureLifecycleReadModel, UnknownFlagsService, };
//# sourceMappingURL=index.js.map