unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
358 lines • 27.8 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserSubscriptionsService = exports.ProjectStatusService = exports.PersonalDashboardService = exports.OnboardingService = exports.IntegrationEventsService = exports.FeatureLifecycleService = exports.JobService = exports.ProjectInsightsService = exports.FeatureSearchService = exports.ClientFeatureToggleService = exports.DependentFeaturesService = exports.SchedulerService = exports.FavoritesService = exports.InstanceStatsService = exports.LastSeenService = exports.PublicSignupTokenService = exports.PatService = exports.EdgeService = exports.FrontendApiService = exports.GroupService = exports.PlaygroundService = exports.ClientSpecService = exports.OpenApiService = exports.SegmentService = exports.UserSplashService = exports.ProjectHealthService = exports.FeatureTagService = exports.EnvironmentService = exports.FeatureToggleService = exports.UserFeedbackService = exports.SessionService = exports.SettingService = exports.ResetTokenService = exports.UserService = exports.ApiTokenService = exports.AccessService = exports.EmailService = exports.VersionService = exports.ContextService = exports.AddonService = exports.StrategyService = exports.TagService = exports.TagTypeService = exports.ClientMetricsServiceV2 = exports.ClientInstanceService = exports.ProjectService = exports.HealthService = exports.EventService = exports.FeatureTypeService = exports.createServices = void 0;
exports.UniqueConnectionService = void 0;
const feature_type_service_1 = __importDefault(require("./feature-type-service"));
exports.FeatureTypeService = feature_type_service_1.default;
const event_service_1 = __importDefault(require("../features/events/event-service"));
exports.EventService = event_service_1.default;
const health_service_1 = __importDefault(require("./health-service"));
exports.HealthService = health_service_1.default;
const project_service_1 = __importDefault(require("../features/project/project-service"));
exports.ProjectService = project_service_1.default;
const instance_service_1 = __importDefault(require("../features/metrics/instance/instance-service"));
exports.ClientInstanceService = instance_service_1.default;
const metrics_service_v2_1 = __importDefault(require("../features/metrics/client-metrics/metrics-service-v2"));
exports.ClientMetricsServiceV2 = metrics_service_v2_1.default;
const tag_type_service_1 = __importDefault(require("../features/tag-type/tag-type-service"));
exports.TagTypeService = tag_type_service_1.default;
const tag_service_1 = __importDefault(require("./tag-service"));
exports.TagService = tag_service_1.default;
const strategy_service_1 = __importDefault(require("./strategy-service"));
exports.StrategyService = strategy_service_1.default;
const addon_service_1 = __importDefault(require("./addon-service"));
exports.AddonService = addon_service_1.default;
const context_service_1 = __importDefault(require("../features/context/context-service"));
exports.ContextService = context_service_1.default;
const version_service_1 = __importDefault(require("./version-service"));
exports.VersionService = version_service_1.default;
const email_service_1 = require("./email-service");
Object.defineProperty(exports, "EmailService", { enumerable: true, get: function () { return email_service_1.EmailService; } });
const access_service_1 = require("./access-service");
Object.defineProperty(exports, "AccessService", { enumerable: true, get: function () { return access_service_1.AccessService; } });
const api_token_service_1 = require("./api-token-service");
Object.defineProperty(exports, "ApiTokenService", { enumerable: true, get: function () { return api_token_service_1.ApiTokenService; } });
const user_service_1 = __importDefault(require("./user-service"));
exports.UserService = user_service_1.default;
const reset_token_service_1 = __importDefault(require("./reset-token-service"));
exports.ResetTokenService = reset_token_service_1.default;
const setting_service_1 = __importDefault(require("./setting-service"));
exports.SettingService = setting_service_1.default;
const session_service_1 = __importDefault(require("./session-service"));
exports.SessionService = session_service_1.default;
const user_feedback_service_1 = __importDefault(require("./user-feedback-service"));
exports.UserFeedbackService = user_feedback_service_1.default;
const feature_toggle_service_1 = __importDefault(require("../features/feature-toggle/feature-toggle-service"));
exports.FeatureToggleService = feature_toggle_service_1.default;
const environment_service_1 = __importDefault(require("../features/project-environments/environment-service"));
exports.EnvironmentService = environment_service_1.default;
const feature_tag_service_1 = __importDefault(require("./feature-tag-service"));
exports.FeatureTagService = feature_tag_service_1.default;
const project_health_service_1 = __importDefault(require("./project-health-service"));
exports.ProjectHealthService = project_health_service_1.default;
const user_splash_service_1 = __importDefault(require("./user-splash-service"));
exports.UserSplashService = user_splash_service_1.default;
const segment_service_1 = require("../features/segment/segment-service");
Object.defineProperty(exports, "SegmentService", { enumerable: true, get: function () { return segment_service_1.SegmentService; } });
const openapi_service_1 = require("./openapi-service");
Object.defineProperty(exports, "OpenApiService", { enumerable: true, get: function () { return openapi_service_1.OpenApiService; } });
const client_spec_service_1 = require("./client-spec-service");
Object.defineProperty(exports, "ClientSpecService", { enumerable: true, get: function () { return client_spec_service_1.ClientSpecService; } });
const playground_service_1 = require("../features/playground/playground-service");
Object.defineProperty(exports, "PlaygroundService", { enumerable: true, get: function () { return playground_service_1.PlaygroundService; } });
const group_service_1 = require("./group-service");
Object.defineProperty(exports, "GroupService", { enumerable: true, get: function () { return group_service_1.GroupService; } });
const frontend_api_service_1 = require("../features/frontend-api/frontend-api-service");
Object.defineProperty(exports, "FrontendApiService", { enumerable: true, get: function () { return frontend_api_service_1.FrontendApiService; } });
const edge_service_1 = __importDefault(require("./edge-service"));
exports.EdgeService = edge_service_1.default;
const pat_service_1 = __importDefault(require("./pat-service"));
exports.PatService = pat_service_1.default;
const public_signup_token_service_1 = require("./public-signup-token-service");
Object.defineProperty(exports, "PublicSignupTokenService", { enumerable: true, get: function () { return public_signup_token_service_1.PublicSignupTokenService; } });
const last_seen_service_1 = require("../features/metrics/last-seen/last-seen-service");
Object.defineProperty(exports, "LastSeenService", { enumerable: true, get: function () { return last_seen_service_1.LastSeenService; } });
const instance_stats_service_1 = require("../features/instance-stats/instance-stats-service");
Object.defineProperty(exports, "InstanceStatsService", { enumerable: true, get: function () { return instance_stats_service_1.InstanceStatsService; } });
const favorites_service_1 = require("./favorites-service");
Object.defineProperty(exports, "FavoritesService", { enumerable: true, get: function () { return favorites_service_1.FavoritesService; } });
const maintenance_service_1 = __importDefault(require("../features/maintenance/maintenance-service"));
const account_service_1 = require("./account-service");
const scheduler_service_1 = require("../features/scheduler/scheduler-service");
Object.defineProperty(exports, "SchedulerService", { enumerable: true, get: function () { return scheduler_service_1.SchedulerService; } });
const project_insights_service_1 = require("../features/project-insights/project-insights-service");
Object.defineProperty(exports, "ProjectInsightsService", { enumerable: true, get: function () { return project_insights_service_1.ProjectInsightsService; } });
const createExportImportService_1 = require("../features/export-import-toggles/createExportImportService");
const transaction_1 = require("../db/transaction");
const createChangeRequestAccessReadModel_1 = require("../features/change-request-access-service/createChangeRequestAccessReadModel");
const createChangeRequestSegmentUsageReadModel_1 = require("../features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel");
const configuration_revision_service_1 = __importDefault(require("../features/feature-toggle/configuration-revision-service"));
const features_1 = require("../features");
const event_announcer_service_1 = __importDefault(require("./event-announcer-service"));
const createGroupService_1 = require("../features/group/createGroupService");
const createPrivateProjectChecker_1 = require("../features/private-project/createPrivateProjectChecker");
const dependent_features_service_1 = require("../features/dependent-features/dependent-features-service");
Object.defineProperty(exports, "DependentFeaturesService", { enumerable: true, get: function () { return dependent_features_service_1.DependentFeaturesService; } });
const createDependentFeaturesService_1 = require("../features/dependent-features/createDependentFeaturesService");
const dependent_features_read_model_1 = require("../features/dependent-features/dependent-features-read-model");
const fake_dependent_features_read_model_1 = require("../features/dependent-features/fake-dependent-features-read-model");
const createLastSeenService_1 = require("../features/metrics/last-seen/createLastSeenService");
const createClientFeatureToggleService_1 = require("../features/client-feature-toggles/createClientFeatureToggleService");
const client_feature_toggle_service_1 = require("../features/client-feature-toggles/client-feature-toggle-service");
Object.defineProperty(exports, "ClientFeatureToggleService", { enumerable: true, get: function () { return client_feature_toggle_service_1.ClientFeatureToggleService; } });
const createFeatureSearchService_1 = require("../features/feature-search/createFeatureSearchService");
const feature_search_service_1 = require("../features/feature-search/feature-search-service");
Object.defineProperty(exports, "FeatureSearchService", { enumerable: true, get: function () { return feature_search_service_1.FeatureSearchService; } });
const createTagTypeService_1 = require("../features/tag-type/createTagTypeService");
const createInstanceStatsService_1 = require("../features/instance-stats/createInstanceStatsService");
const inactive_users_service_1 = require("../users/inactive/inactive-users-service");
const createFrontendApiService_1 = require("../features/frontend-api/createFrontendApiService");
const createProjectInsightsService_1 = require("../features/project-insights/createProjectInsightsService");
const job_service_1 = require("../features/scheduler/job-service");
Object.defineProperty(exports, "JobService", { enumerable: true, get: function () { return job_service_1.JobService; } });
const user_subscriptions_service_1 = require("../features/user-subscriptions/user-subscriptions-service");
Object.defineProperty(exports, "UserSubscriptionsService", { enumerable: true, get: function () { return user_subscriptions_service_1.UserSubscriptionsService; } });
const job_store_1 = require("../features/scheduler/job-store");
const feature_lifecycle_service_1 = require("../features/feature-lifecycle/feature-lifecycle-service");
Object.defineProperty(exports, "FeatureLifecycleService", { enumerable: true, get: function () { return feature_lifecycle_service_1.FeatureLifecycleService; } });
const createFeatureLifecycle_1 = require("../features/feature-lifecycle/createFeatureLifecycle");
const feature_lifecycle_read_model_1 = require("../features/feature-lifecycle/feature-lifecycle-read-model");
const fake_feature_lifecycle_read_model_1 = require("../features/feature-lifecycle/fake-feature-lifecycle-read-model");
const createApiTokenService_1 = require("../features/api-tokens/createApiTokenService");
const integration_events_service_1 = require("../features/integration-events/integration-events-service");
Object.defineProperty(exports, "IntegrationEventsService", { enumerable: true, get: function () { return integration_events_service_1.IntegrationEventsService; } });
const feature_collaborators_read_model_1 = require("../features/feature-toggle/feature-collaborators-read-model");
const fake_feature_collaborators_read_model_1 = require("../features/feature-toggle/fake-feature-collaborators-read-model");
const createPlaygroundService_1 = require("../features/playground/createPlaygroundService");
const createOnboardingService_1 = require("../features/onboarding/createOnboardingService");
const onboarding_service_1 = require("../features/onboarding/onboarding-service");
Object.defineProperty(exports, "OnboardingService", { enumerable: true, get: function () { return onboarding_service_1.OnboardingService; } });
const personal_dashboard_service_1 = require("../features/personal-dashboard/personal-dashboard-service");
Object.defineProperty(exports, "PersonalDashboardService", { enumerable: true, get: function () { return personal_dashboard_service_1.PersonalDashboardService; } });
const createPersonalDashboardService_1 = require("../features/personal-dashboard/createPersonalDashboardService");
const createProjectStatusService_1 = require("../features/project-status/createProjectStatusService");
const project_status_service_1 = require("../features/project-status/project-status-service");
Object.defineProperty(exports, "ProjectStatusService", { enumerable: true, get: function () { return project_status_service_1.ProjectStatusService; } });
const createContextService_1 = require("../features/context/createContextService");
const unique_connection_service_1 = require("../features/unique-connection/unique-connection-service");
Object.defineProperty(exports, "UniqueConnectionService", { enumerable: true, get: function () { return unique_connection_service_1.UniqueConnectionService; } });
const createServices = (stores, config, db) => {
const privateProjectChecker = db
? (0, createPrivateProjectChecker_1.createPrivateProjectChecker)(db, config)
: (0, createPrivateProjectChecker_1.createFakePrivateProjectChecker)();
const eventService = db
? (0, features_1.createEventsService)(db, config)
: (0, features_1.createFakeEventsService)(config, stores);
const groupService = new group_service_1.GroupService(stores, config, eventService);
const transactionalAccessService = db
? (0, transaction_1.withTransactional)((db) => (0, features_1.createAccessService)(db, config), db)
: (0, transaction_1.withFakeTransactional)((0, features_1.createFakeAccessService)(config).accessService);
const accessService = new access_service_1.AccessService(stores, config, groupService, eventService);
const apiTokenService = db
? (0, createApiTokenService_1.createApiTokenService)(db, config)
: (0, createApiTokenService_1.createFakeApiTokenService)(config).apiTokenService;
const lastSeenService = db
? (0, createLastSeenService_1.createLastSeenService)(db, config)
: (0, createLastSeenService_1.createFakeLastSeenService)(config);
const clientMetricsServiceV2 = new metrics_service_v2_1.default(stores, config, lastSeenService);
const dependentFeaturesReadModel = db
? new dependent_features_read_model_1.DependentFeaturesReadModel(db)
: new fake_dependent_features_read_model_1.FakeDependentFeaturesReadModel();
const featureLifecycleReadModel = db
? new feature_lifecycle_read_model_1.FeatureLifecycleReadModel(db, config.flagResolver)
: new fake_feature_lifecycle_read_model_1.FakeFeatureLifecycleReadModel();
const transactionalContextService = db
? (0, transaction_1.withTransactional)((0, createContextService_1.createContextService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, createContextService_1.createFakeContextService)(config));
const contextService = transactionalContextService;
const emailService = new email_service_1.EmailService(config);
const featureTypeService = new feature_type_service_1.default(stores, config, eventService);
const resetTokenService = new reset_token_service_1.default(stores, config);
const strategyService = new strategy_service_1.default(stores, config, eventService);
const tagService = new tag_service_1.default(stores, config, eventService);
const transactionalTagTypeService = db
? (0, transaction_1.withTransactional)((0, createTagTypeService_1.createTagTypeService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, createTagTypeService_1.createFakeTagTypeService)(config));
const tagTypeService = transactionalTagTypeService;
const integrationEventsService = new integration_events_service_1.IntegrationEventsService(stores, config);
const addonService = new addon_service_1.default(stores, config, tagTypeService, eventService, integrationEventsService);
const sessionService = new session_service_1.default(stores, config);
const settingService = new setting_service_1.default(stores, config, eventService);
const userService = new user_service_1.default(stores, config, {
accessService,
resetTokenService,
emailService,
eventService,
sessionService,
settingService,
});
const accountService = new account_service_1.AccountService(stores, config, {
accessService,
});
const versionService = new version_service_1.default(stores, config);
const healthService = new health_service_1.default(stores, config);
const userFeedbackService = new user_feedback_service_1.default(stores, config);
const changeRequestAccessReadModel = db
? (0, createChangeRequestAccessReadModel_1.createChangeRequestAccessReadModel)(db, config)
: (0, createChangeRequestAccessReadModel_1.createFakeChangeRequestAccessService)();
const changeRequestSegmentUsageReadModel = db
? (0, createChangeRequestSegmentUsageReadModel_1.createChangeRequestSegmentUsageReadModel)(db)
: (0, createChangeRequestSegmentUsageReadModel_1.createFakeChangeRequestSegmentUsageReadModel)();
const segmentService = new segment_service_1.SegmentService(stores, changeRequestAccessReadModel, changeRequestSegmentUsageReadModel, config, eventService, privateProjectChecker);
const clientInstanceService = new instance_service_1.default(stores, config, privateProjectChecker);
const transactionalDependentFeaturesService = db
? (0, transaction_1.withTransactional)((0, createDependentFeaturesService_1.createDependentFeaturesService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, createDependentFeaturesService_1.createFakeDependentFeaturesService)(config));
const dependentFeaturesService = transactionalDependentFeaturesService;
const featureSearchService = db
? (0, createFeatureSearchService_1.createFeatureSearchService)(config)(db)
: (0, createFeatureSearchService_1.createFakeFeatureSearchService)(config);
const featureCollaboratorsReadModel = db
? new feature_collaborators_read_model_1.FeatureCollaboratorsReadModel(db)
: new fake_feature_collaborators_read_model_1.FakeFeatureCollaboratorsReadModel();
const featureToggleService = new feature_toggle_service_1.default(stores, config, segmentService, accessService, eventService, changeRequestAccessReadModel, privateProjectChecker, dependentFeaturesReadModel, dependentFeaturesService, featureLifecycleReadModel, featureCollaboratorsReadModel);
const transactionalEnvironmentService = db
? (0, transaction_1.withTransactional)((0, features_1.createEnvironmentService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, features_1.createFakeEnvironmentService)(config));
const environmentService = transactionalEnvironmentService;
const featureTagService = new feature_tag_service_1.default(stores, config, eventService);
const favoritesService = new favorites_service_1.FavoritesService(stores, config, eventService);
const projectService = db
? (0, features_1.createProjectService)(db, config)
: (0, features_1.createFakeProjectService)(config).projectService;
const transactionalProjectService = db
? (0, transaction_1.withTransactional)((db) => (0, features_1.createProjectService)(db, config), db)
: (0, transaction_1.withFakeTransactional)((0, features_1.createFakeProjectService)(config).projectService);
const projectInsightsService = db
? (0, createProjectInsightsService_1.createProjectInsightsService)(db, config)
: (0, createProjectInsightsService_1.createFakeProjectInsightsService)().projectInsightsService;
const projectStatusService = db
? (0, createProjectStatusService_1.createProjectStatusService)(db, config)
: (0, createProjectStatusService_1.createFakeProjectStatusService)().projectStatusService;
const projectHealthService = new project_health_service_1.default(stores, config, projectService);
const exportImportService = db
? (0, createExportImportService_1.createExportImportTogglesService)(db, config)
: (0, createExportImportService_1.createFakeExportImportTogglesService)(config);
const importService = db
? (0, transaction_1.withTransactional)((0, createExportImportService_1.deferredExportImportTogglesService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, createExportImportService_1.createFakeExportImportTogglesService)(config));
const transactionalFeatureToggleService = (txDb) => (0, features_1.createFeatureToggleService)(txDb, config);
const transactionalGroupService = (txDb) => (0, createGroupService_1.createGroupService)(txDb, config);
const userSplashService = new user_splash_service_1.default(stores, config);
const openApiService = new openapi_service_1.OpenApiService(config);
const clientSpecService = new client_spec_service_1.ClientSpecService(config);
const playgroundService = db
? (0, createPlaygroundService_1.createPlaygroundService)(db, config)
: (0, createPlaygroundService_1.createFakePlaygroundService)(config);
const configurationRevisionService = configuration_revision_service_1.default.getInstance(stores, config);
const clientFeatureToggleService = db
? (0, createClientFeatureToggleService_1.createClientFeatureToggleService)(db, config)
: (0, createClientFeatureToggleService_1.createFakeClientFeatureToggleService)(config);
const frontendApiService = db
? (0, createFrontendApiService_1.createFrontendApiService)(db, config, clientMetricsServiceV2, configurationRevisionService)
: (0, createFrontendApiService_1.createFakeFrontendApiService)(config, clientMetricsServiceV2, configurationRevisionService);
const edgeService = new edge_service_1.default({ apiTokenService }, config);
const patService = new pat_service_1.default(stores, config, eventService);
const publicSignupTokenService = new public_signup_token_service_1.PublicSignupTokenService(stores, config, userService, eventService);
const instanceStatsService = db
? (0, createInstanceStatsService_1.createInstanceStatsService)(db, config)
: (0, createInstanceStatsService_1.createFakeInstanceStatsService)(config);
const maintenanceService = new maintenance_service_1.default(config, settingService);
const schedulerService = new scheduler_service_1.SchedulerService(config.getLogger, maintenanceService, config.eventBus);
const eventAnnouncerService = new event_announcer_service_1.default(stores, config);
const inactiveUsersService = new inactive_users_service_1.InactiveUsersService(stores, config, {
userService,
});
const jobService = new job_service_1.JobService(new job_store_1.JobStore(db, config), config.getLogger);
const transactionalFeatureLifecycleService = db
? (0, transaction_1.withTransactional)((0, features_1.createFeatureLifecycleService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, createFeatureLifecycle_1.createFakeFeatureLifecycleService)(config).featureLifecycleService);
const featureLifecycleService = transactionalFeatureLifecycleService;
featureLifecycleService.listen();
const uniqueConnectionService = new unique_connection_service_1.UniqueConnectionService(stores, config);
uniqueConnectionService.listen();
const onboardingService = db
? (0, createOnboardingService_1.createOnboardingService)(config)(db)
: (0, createOnboardingService_1.createFakeOnboardingService)(config).onboardingService;
onboardingService.listen();
const personalDashboardService = db
? (0, createPersonalDashboardService_1.createPersonalDashboardService)(db, config, stores)
: (0, createPersonalDashboardService_1.createFakePersonalDashboardService)(config);
const transactionalUserSubscriptionsService = db
? (0, transaction_1.withTransactional)((0, features_1.createUserSubscriptionsService)(config), db)
: (0, transaction_1.withFakeTransactional)((0, features_1.createFakeUserSubscriptionsService)(config));
return {
transactionalAccessService,
accessService,
accountService,
addonService,
eventAnnouncerService,
featureToggleService,
featureTypeService,
healthService,
projectService,
transactionalProjectService,
strategyService,
tagTypeService,
transactionalTagTypeService,
tagService,
clientInstanceService,
clientMetricsServiceV2,
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,
};
};
exports.createServices = createServices;
//# sourceMappingURL=index.js.map