From 16691d72d70b075269ed8addd9273155cf89e1b3 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Wed, 17 Jan 2024 09:14:31 +0100 Subject: [PATCH] refactor: metrics in feature oriented architecture (#5919) --- src/lib/db/index.ts | 4 +-- .../fakes/fake-feature-toggle-store.ts | 2 +- .../feature-toggle/feature-toggle-store.ts | 2 +- .../types/feature-toggle-store-type.ts | 2 +- .../client-metrics-service.e2e.test.ts | 18 +++++----- .../client-metrics-store-v2-type.ts} | 2 +- .../client-metrics-store-v2.e2e.test.ts | 8 ++--- .../client-metrics-store-v2.test.ts | 6 ++-- .../client-metrics-store-v2.ts | 15 ++++---- .../client-metrics.e2e.test.ts | 8 ++--- .../metrics/client-metrics}/client-metrics.ts | 24 ++++++------- .../collapseHourlyMetrics.test.ts | 2 +- .../client-metrics}/collapseHourlyMetrics.ts | 2 +- .../fake-client-metrics-store-v2.ts | 2 +- .../client-metrics/metrics-service-v2.test.ts | 8 ++--- .../client-metrics/metrics-service-v2.ts | 28 +++++++-------- .../instance}/instance-service.test.ts | 16 ++++----- .../metrics/instance}/instance-service.ts | 36 +++++++++---------- .../metrics/instance}/metrics.test.ts | 14 ++++---- .../metrics/instance}/metrics.ts | 30 +++++++++------- .../metrics/instance}/models.ts | 2 +- .../metrics/instance}/register.test.ts | 10 +++--- .../metrics/instance}/register.ts | 30 ++++++++-------- .../last-seen/createLastSeenService.ts | 4 +-- .../last-seen/fake-last-seen-read-model.ts | 0 .../last-seen/fake-last-seen-store.ts | 0 .../last-seen/last-seen-read-model.ts | 0 .../metrics}/last-seen/last-seen-service.ts | 4 +-- .../metrics}/last-seen/last-seen-store.ts | 2 +- .../tests/last-seen-service.e2e.test.ts | 0 .../last-seen/tests/last-seen-service.test.ts | 0 .../types/last-seen-read-model-type.ts | 0 .../last-seen/types/last-seen-store-type.ts | 0 .../metrics/shared}/schema.test.ts | 0 .../metrics/shared}/schema.ts | 0 src/lib/metrics.ts | 2 +- src/lib/routes/admin-api/index.ts | 2 +- src/lib/routes/admin-api/metrics.ts | 2 +- src/lib/routes/client-api/index.ts | 4 +-- src/lib/routes/edge-api/index.ts | 6 ++-- src/lib/services/index.ts | 8 ++--- src/lib/types/services.ts | 6 ++-- src/lib/types/stores.ts | 4 +-- src/lib/util/index.ts | 2 +- src/test/fixtures/store.ts | 4 +-- 45 files changed, 161 insertions(+), 160 deletions(-) rename src/{test/e2e/services => lib/features/metrics/client-metrics}/client-metrics-service.e2e.test.ts (78%) rename src/lib/{types/stores/client-metrics-store-v2.ts => features/metrics/client-metrics/client-metrics-store-v2-type.ts} (96%) rename src/{test/e2e/stores => lib/features/metrics/client-metrics}/client-metrics-store-v2.e2e.test.ts (97%) rename src/lib/{db => features/metrics/client-metrics}/client-metrics-store-v2.test.ts (96%) rename src/lib/{db => features/metrics/client-metrics}/client-metrics-store-v2.ts (97%) rename src/{test/e2e/api/admin => lib/features/metrics/client-metrics}/client-metrics.e2e.test.ts (97%) rename src/lib/{routes/admin-api => features/metrics/client-metrics}/client-metrics.ts (85%) rename src/lib/{util => features/metrics/client-metrics}/collapseHourlyMetrics.test.ts (97%) rename src/lib/{util => features/metrics/client-metrics}/collapseHourlyMetrics.ts (97%) rename src/{test/fixtures => lib/features/metrics/client-metrics}/fake-client-metrics-store-v2.ts (97%) rename src/lib/{services => features/metrics}/client-metrics/metrics-service-v2.test.ts (97%) rename src/lib/{services => features/metrics}/client-metrics/metrics-service-v2.ts (92%) rename src/lib/{services/client-metrics => features/metrics/instance}/instance-service.test.ts (91%) rename src/lib/{services/client-metrics => features/metrics/instance}/instance-service.ts (86%) rename src/lib/{routes/client-api => features/metrics/instance}/metrics.test.ts (96%) rename src/lib/{routes/client-api => features/metrics/instance}/metrics.ts (86%) rename src/lib/{services/client-metrics => features/metrics/instance}/models.ts (88%) rename src/lib/{routes/client-api => features/metrics/instance}/register.test.ts (91%) rename src/lib/{routes/client-api => features/metrics/instance}/register.ts (77%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/createLastSeenService.ts (83%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/fake-last-seen-read-model.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/fake-last-seen-store.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/last-seen-read-model.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/last-seen-service.ts (95%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/last-seen-store.ts (97%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/tests/last-seen-service.e2e.test.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/tests/last-seen-service.test.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/types/last-seen-read-model-type.ts (100%) rename src/lib/{services/client-metrics => features/metrics}/last-seen/types/last-seen-store-type.ts (100%) rename src/lib/{services/client-metrics => features/metrics/shared}/schema.test.ts (100%) rename src/lib/{services/client-metrics => features/metrics/shared}/schema.ts (100%) diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts index 080654e691..ea06d9dc5b 100644 --- a/src/lib/db/index.ts +++ b/src/lib/db/index.ts @@ -23,7 +23,7 @@ import FeatureToggleClientStore from '../features/client-feature-toggles/client- import EnvironmentStore from '../features/project-environments/environment-store'; import FeatureTagStore from './feature-tag-store'; import { FeatureEnvironmentStore } from './feature-environment-store'; -import { ClientMetricsStoreV2 } from './client-metrics-store-v2'; +import { ClientMetricsStoreV2 } from '../features/metrics/client-metrics/client-metrics-store-v2'; import UserSplashStore from './user-splash-store'; import RoleStore from './role-store'; import SegmentStore from './segment-store'; @@ -38,7 +38,7 @@ import { Db } from './db'; import { ImportTogglesStore } from '../features/export-import-toggles/import-toggles-store'; import PrivateProjectStore from '../features/private-project/privateProjectStore'; import { DependentFeaturesStore } from '../features/dependent-features/dependent-features-store'; -import LastSeenStore from '../services/client-metrics/last-seen/last-seen-store'; +import LastSeenStore from '../features/metrics/last-seen/last-seen-store'; import FeatureSearchStore from '../features/feature-search/feature-search-store'; export const createStores = ( diff --git a/src/lib/features/feature-toggle/fakes/fake-feature-toggle-store.ts b/src/lib/features/feature-toggle/fakes/fake-feature-toggle-store.ts index 31251373b0..925a837bef 100644 --- a/src/lib/features/feature-toggle/fakes/fake-feature-toggle-store.ts +++ b/src/lib/features/feature-toggle/fakes/fake-feature-toggle-store.ts @@ -11,7 +11,7 @@ import { IFeatureTypeCount, IVariant, } from 'lib/types/model'; -import { LastSeenInput } from '../../../services/client-metrics/last-seen/last-seen-service'; +import { LastSeenInput } from '../../metrics/last-seen/last-seen-service'; import { EnvironmentFeatureNames, FeatureToggleInsert, diff --git a/src/lib/features/feature-toggle/feature-toggle-store.ts b/src/lib/features/feature-toggle/feature-toggle-store.ts index a72916da98..1540494948 100644 --- a/src/lib/features/feature-toggle/feature-toggle-store.ts +++ b/src/lib/features/feature-toggle/feature-toggle-store.ts @@ -12,7 +12,7 @@ import { } from '../../types/model'; import { IFeatureToggleStore } from './types/feature-toggle-store-type'; import { Db } from '../../db/db'; -import { LastSeenInput } from '../../services/client-metrics/last-seen/last-seen-service'; +import { LastSeenInput } from '../metrics/last-seen/last-seen-service'; import { NameExistsError } from '../../error'; import { DEFAULT_ENV } from '../../../lib/util'; diff --git a/src/lib/features/feature-toggle/types/feature-toggle-store-type.ts b/src/lib/features/feature-toggle/types/feature-toggle-store-type.ts index e763595058..9bd97655da 100644 --- a/src/lib/features/feature-toggle/types/feature-toggle-store-type.ts +++ b/src/lib/features/feature-toggle/types/feature-toggle-store-type.ts @@ -7,7 +7,7 @@ import { } from '../../../types/model'; import { FeatureToggleInsert } from '../feature-toggle-store'; import { Store } from '../../../types/stores/store'; -import { LastSeenInput } from '../../../services/client-metrics/last-seen/last-seen-service'; +import { LastSeenInput } from '../../metrics/last-seen/last-seen-service'; import { FeatureConfigurationClient } from './feature-toggle-strategies-store-type'; import { IFeatureProjectUserParams } from '../feature-toggle-controller'; diff --git a/src/test/e2e/services/client-metrics-service.e2e.test.ts b/src/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.ts similarity index 78% rename from src/test/e2e/services/client-metrics-service.e2e.test.ts rename to src/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.ts index e61bf82a9b..c65f52ac98 100644 --- a/src/test/e2e/services/client-metrics-service.e2e.test.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.ts @@ -1,15 +1,15 @@ -import ClientInstanceService from '../../../lib/services/client-metrics/instance-service'; -import { IClientApp } from '../../../lib/types/model'; +import ClientInstanceService from '../instance/instance-service'; +import { IClientApp } from '../../../types/model'; import { secondsToMilliseconds } from 'date-fns'; -import { createTestConfig } from '../../config/test-config'; -import { IUnleashConfig, IUnleashStores } from '../../../lib/types'; -import { FakePrivateProjectChecker } from '../../../lib/features/private-project/fakePrivateProjectChecker'; -import { ITestDb } from '../helpers/database-init'; +import { createTestConfig } from '../../../../test/config/test-config'; +import { IUnleashConfig, IUnleashStores } from '../../../types'; +import { FakePrivateProjectChecker } from '../../private-project/fakePrivateProjectChecker'; +import { ITestDb } from '../../../../test/e2e/helpers/database-init'; const faker = require('faker'); -const dbInit = require('../helpers/database-init'); -const getLogger = require('../../fixtures/no-logger'); -const { APPLICATION_CREATED } = require('../../../lib/types/events'); +const dbInit = require('../../../../test/e2e/helpers/database-init'); +const getLogger = require('../../../../test/fixtures/no-logger'); +const { APPLICATION_CREATED } = require('../../../types/events'); let stores: IUnleashStores; let db: ITestDb; diff --git a/src/lib/types/stores/client-metrics-store-v2.ts b/src/lib/features/metrics/client-metrics/client-metrics-store-v2-type.ts similarity index 96% rename from src/lib/types/stores/client-metrics-store-v2.ts rename to src/lib/features/metrics/client-metrics/client-metrics-store-v2-type.ts index 9a60b78818..149b74a3e3 100644 --- a/src/lib/types/stores/client-metrics-store-v2.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics-store-v2-type.ts @@ -1,4 +1,4 @@ -import { Store } from './store'; +import { Store } from '../../../types/stores/store'; export interface IClientMetricsEnvKey { featureName: string; diff --git a/src/test/e2e/stores/client-metrics-store-v2.e2e.test.ts b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.ts similarity index 97% rename from src/test/e2e/stores/client-metrics-store-v2.e2e.test.ts rename to src/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.ts index b6ac40e049..736cc8e5c2 100644 --- a/src/test/e2e/stores/client-metrics-store-v2.e2e.test.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.ts @@ -1,11 +1,11 @@ import { addHours, set, subDays } from 'date-fns'; -import dbInit, { ITestDb } from '../helpers/database-init'; -import getLogger from '../../fixtures/no-logger'; -import { IUnleashStores } from '../../../lib/types'; +import dbInit, { ITestDb } from '../../../../test/e2e/helpers/database-init'; +import getLogger from '../../../../test/fixtures/no-logger'; +import { IUnleashStores } from '../../../types'; import { IClientMetricsEnv, IClientMetricsStoreV2, -} from '../../../lib/types/stores/client-metrics-store-v2'; +} from './client-metrics-store-v2-type'; let db: ITestDb; let stores: IUnleashStores; diff --git a/src/lib/db/client-metrics-store-v2.test.ts b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.test.ts similarity index 96% rename from src/lib/db/client-metrics-store-v2.test.ts rename to src/lib/features/metrics/client-metrics/client-metrics-store-v2.test.ts index a3ebca65b2..5374caaf96 100644 --- a/src/lib/db/client-metrics-store-v2.test.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.test.ts @@ -1,6 +1,6 @@ -import dbInit, { ITestDb } from '../../test/e2e/helpers/database-init'; -import getLogger from '../../test/fixtures/no-logger'; -import { IClientMetricsStoreV2, IUnleashStores } from '../types'; +import dbInit, { ITestDb } from '../../../../test/e2e/helpers/database-init'; +import getLogger from '../../../../test/fixtures/no-logger'; +import { IClientMetricsStoreV2, IUnleashStores } from '../../../types'; import { endOfDay, setHours, startOfHour, subDays } from 'date-fns'; let stores: IUnleashStores; diff --git a/src/lib/db/client-metrics-store-v2.ts b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.ts similarity index 97% rename from src/lib/db/client-metrics-store-v2.ts rename to src/lib/features/metrics/client-metrics/client-metrics-store-v2.ts index 6ededeeb38..38cef5d4b5 100644 --- a/src/lib/db/client-metrics-store-v2.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics-store-v2.ts @@ -1,18 +1,15 @@ -import { Logger, LogProvider } from '../logger'; +import { Logger, LogProvider } from '../../../logger'; import { IClientMetricsEnv, IClientMetricsEnvKey, IClientMetricsEnvVariant, IClientMetricsStoreV2, -} from '../types/stores/client-metrics-store-v2'; -import NotFoundError from '../error/notfound-error'; +} from './client-metrics-store-v2-type'; +import NotFoundError from '../../../error/notfound-error'; import { endOfDay, startOfHour } from 'date-fns'; -import { - collapseHourlyMetrics, - spreadVariants, -} from '../util/collapseHourlyMetrics'; -import { Db } from './db'; -import { IFlagResolver } from '../types'; +import { collapseHourlyMetrics, spreadVariants } from './collapseHourlyMetrics'; +import { Db } from '../../../db/db'; +import { IFlagResolver } from '../../../types'; interface ClientMetricsBaseTable { feature_name: string; diff --git a/src/test/e2e/api/admin/client-metrics.e2e.test.ts b/src/lib/features/metrics/client-metrics/client-metrics.e2e.test.ts similarity index 97% rename from src/test/e2e/api/admin/client-metrics.e2e.test.ts rename to src/lib/features/metrics/client-metrics/client-metrics.e2e.test.ts index 420d65fda9..16d6ba45af 100644 --- a/src/test/e2e/api/admin/client-metrics.e2e.test.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics.e2e.test.ts @@ -1,10 +1,10 @@ -import dbInit, { ITestDb } from '../../helpers/database-init'; +import dbInit, { ITestDb } from '../../../../test/e2e/helpers/database-init'; import { IUnleashTest, setupAppWithCustomConfig, -} from '../../helpers/test-helper'; -import getLogger from '../../../fixtures/no-logger'; -import { IClientMetricsEnv } from '../../../../lib/types/stores/client-metrics-store-v2'; +} from '../../../../test/e2e/helpers/test-helper'; +import getLogger from '../../../../test/fixtures/no-logger'; +import { IClientMetricsEnv } from './client-metrics-store-v2-type'; import { subHours } from 'date-fns'; let app: IUnleashTest; diff --git a/src/lib/routes/admin-api/client-metrics.ts b/src/lib/features/metrics/client-metrics/client-metrics.ts similarity index 85% rename from src/lib/routes/admin-api/client-metrics.ts rename to src/lib/features/metrics/client-metrics/client-metrics.ts index 835a272470..17db5aa48a 100644 --- a/src/lib/routes/admin-api/client-metrics.ts +++ b/src/lib/features/metrics/client-metrics/client-metrics.ts @@ -1,22 +1,22 @@ import { Request, Response } from 'express'; -import Controller from '../controller'; -import { IUnleashConfig } from '../../types/option'; -import { IFlagResolver, IUnleashServices } from '../../types'; -import { Logger } from '../../logger'; -import ClientMetricsServiceV2 from '../../services/client-metrics/metrics-service-v2'; -import { NONE } from '../../types/permissions'; -import { createResponseSchema } from '../../openapi/util/create-response-schema'; -import { OpenApiService } from '../../services/openapi-service'; -import { serializeDates } from '../../types/serialize-dates'; +import Controller from '../../../routes/controller'; +import { IUnleashConfig } from '../../../types/option'; +import { IFlagResolver, IUnleashServices } from '../../../types'; +import { Logger } from '../../../logger'; +import ClientMetricsServiceV2 from './metrics-service-v2'; +import { NONE } from '../../../types/permissions'; +import { createResponseSchema } from '../../../openapi/util/create-response-schema'; +import { OpenApiService } from '../../../services/openapi-service'; +import { serializeDates } from '../../../types/serialize-dates'; import { FeatureUsageSchema, featureUsageSchema, -} from '../../openapi/spec/feature-usage-schema'; +} from '../../../openapi/spec/feature-usage-schema'; import { featureMetricsSchema, FeatureMetricsSchema, -} from '../../openapi/spec/feature-metrics-schema'; -import { getStandardResponses } from '../../openapi'; +} from '../../../openapi/spec/feature-metrics-schema'; +import { getStandardResponses } from '../../../openapi'; interface IName { name: string; diff --git a/src/lib/util/collapseHourlyMetrics.test.ts b/src/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.ts similarity index 97% rename from src/lib/util/collapseHourlyMetrics.test.ts rename to src/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.ts index b02c21d4bb..0cb2f4ac63 100644 --- a/src/lib/util/collapseHourlyMetrics.test.ts +++ b/src/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.ts @@ -1,5 +1,5 @@ import { collapseHourlyMetrics } from './collapseHourlyMetrics'; -import { IClientMetricsEnv } from '../types/stores/client-metrics-store-v2'; +import { IClientMetricsEnv } from './client-metrics-store-v2-type'; import { addMinutes, startOfHour } from 'date-fns'; test('collapseHourlyMetrics', () => { diff --git a/src/lib/util/collapseHourlyMetrics.ts b/src/lib/features/metrics/client-metrics/collapseHourlyMetrics.ts similarity index 97% rename from src/lib/util/collapseHourlyMetrics.ts rename to src/lib/features/metrics/client-metrics/collapseHourlyMetrics.ts index b2e471550e..d691531d28 100644 --- a/src/lib/util/collapseHourlyMetrics.ts +++ b/src/lib/features/metrics/client-metrics/collapseHourlyMetrics.ts @@ -1,7 +1,7 @@ import { IClientMetricsEnv, IClientMetricsEnvVariant, -} from '../types/stores/client-metrics-store-v2'; +} from './client-metrics-store-v2-type'; import { startOfHour } from 'date-fns'; const createMetricKey = (metric: IClientMetricsEnv): string => { diff --git a/src/test/fixtures/fake-client-metrics-store-v2.ts b/src/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.ts similarity index 97% rename from src/test/fixtures/fake-client-metrics-store-v2.ts rename to src/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.ts index c227b3c561..cf1fe7948f 100644 --- a/src/test/fixtures/fake-client-metrics-store-v2.ts +++ b/src/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.ts @@ -5,7 +5,7 @@ import { IClientMetricsEnv, IClientMetricsEnvKey, IClientMetricsStoreV2, -} from '../../lib/types/stores/client-metrics-store-v2'; +} from './client-metrics-store-v2-type'; export default class FakeClientMetricsStoreV2 extends EventEmitter diff --git a/src/lib/services/client-metrics/metrics-service-v2.test.ts b/src/lib/features/metrics/client-metrics/metrics-service-v2.test.ts similarity index 97% rename from src/lib/services/client-metrics/metrics-service-v2.test.ts rename to src/lib/features/metrics/client-metrics/metrics-service-v2.test.ts index d1b5b438bc..70322600d4 100644 --- a/src/lib/services/client-metrics/metrics-service-v2.test.ts +++ b/src/lib/features/metrics/client-metrics/metrics-service-v2.test.ts @@ -1,13 +1,13 @@ import ClientMetricsServiceV2 from './metrics-service-v2'; -import getLogger from '../../../test/fixtures/no-logger'; +import getLogger from '../../../../test/fixtures/no-logger'; -import createStores from '../../../test/fixtures/store'; +import createStores from '../../../../test/fixtures/store'; import EventEmitter from 'events'; -import { LastSeenService } from './last-seen/last-seen-service'; +import { LastSeenService } from '../last-seen/last-seen-service'; import { IClientMetricsStoreV2, IUnleashConfig } from 'lib/types'; import { endOfDay, startOfHour, subDays, subHours } from 'date-fns'; -import { IClientMetricsEnv } from '../../types/stores/client-metrics-store-v2'; +import { IClientMetricsEnv } from './client-metrics-store-v2-type'; function initClientMetrics(flagEnabled = true) { const stores = createStores(); diff --git a/src/lib/services/client-metrics/metrics-service-v2.ts b/src/lib/features/metrics/client-metrics/metrics-service-v2.ts similarity index 92% rename from src/lib/services/client-metrics/metrics-service-v2.ts rename to src/lib/features/metrics/client-metrics/metrics-service-v2.ts index c3f2650b47..d33e649d4a 100644 --- a/src/lib/services/client-metrics/metrics-service-v2.ts +++ b/src/lib/features/metrics/client-metrics/metrics-service-v2.ts @@ -1,26 +1,26 @@ -import { Logger } from '../../logger'; -import { IFlagResolver, IUnleashConfig } from '../../types'; -import { IUnleashStores } from '../../types'; -import { ToggleMetricsSummary } from '../../types/models/metrics'; +import { Logger } from '../../../logger'; +import { IFlagResolver, IUnleashConfig } from '../../../types'; +import { IUnleashStores } from '../../../types'; +import { ToggleMetricsSummary } from '../../../types/models/metrics'; import { IClientMetricsEnv, IClientMetricsStoreV2, -} from '../../types/stores/client-metrics-store-v2'; -import { clientMetricsSchema } from './schema'; +} from './client-metrics-store-v2-type'; +import { clientMetricsSchema } from '../shared/schema'; import { compareAsc } from 'date-fns'; -import { CLIENT_METRICS } from '../../types/events'; -import ApiUser, { IApiUser } from '../../types/api-user'; -import { ALL } from '../../types/models/api-token'; -import { IUser } from '../../types/user'; -import { collapseHourlyMetrics } from '../../util/collapseHourlyMetrics'; -import { LastSeenService } from './last-seen/last-seen-service'; +import { CLIENT_METRICS } from '../../../types/events'; +import ApiUser, { IApiUser } from '../../../types/api-user'; +import { ALL } from '../../../types/models/api-token'; +import { IUser } from '../../../types/user'; +import { collapseHourlyMetrics } from './collapseHourlyMetrics'; +import { LastSeenService } from '../last-seen/last-seen-service'; import { generateDayBuckets, generateHourBuckets, HourBucket, -} from '../../util/time-utils'; +} from '../../../util/time-utils'; import { ClientMetricsSchema } from 'lib/openapi'; -import { nameSchema } from '../../schema/feature-schema'; +import { nameSchema } from '../../../schema/feature-schema'; export default class ClientMetricsServiceV2 { private config: IUnleashConfig; diff --git a/src/lib/services/client-metrics/instance-service.test.ts b/src/lib/features/metrics/instance/instance-service.test.ts similarity index 91% rename from src/lib/services/client-metrics/instance-service.test.ts rename to src/lib/features/metrics/instance/instance-service.test.ts index e8802fcd13..de3851a999 100644 --- a/src/lib/services/client-metrics/instance-service.test.ts +++ b/src/lib/features/metrics/instance/instance-service.test.ts @@ -1,12 +1,12 @@ import ClientInstanceService from './instance-service'; -import { IClientApp } from '../../types/model'; -import FakeEventStore from '../../../test/fixtures/fake-event-store'; -import { createTestConfig } from '../../../test/config/test-config'; -import { FakePrivateProjectChecker } from '../../features/private-project/fakePrivateProjectChecker'; -import { IUnleashConfig } from '../../types'; -import FakeClientMetricsStoreV2 from '../../../test/fixtures/fake-client-metrics-store-v2'; -import FakeStrategiesStore from '../../../test/fixtures/fake-strategies-store'; -import FakeFeatureToggleStore from '../../features/feature-toggle/fakes/fake-feature-toggle-store'; +import { IClientApp } from '../../../types/model'; +import FakeEventStore from '../../../../test/fixtures/fake-event-store'; +import { createTestConfig } from '../../../../test/config/test-config'; +import { FakePrivateProjectChecker } from '../../private-project/fakePrivateProjectChecker'; +import { IUnleashConfig } from '../../../types'; +import FakeClientMetricsStoreV2 from '../client-metrics/fake-client-metrics-store-v2'; +import FakeStrategiesStore from '../../../../test/fixtures/fake-strategies-store'; +import FakeFeatureToggleStore from '../../feature-toggle/fakes/fake-feature-toggle-store'; let config: IUnleashConfig; beforeAll(() => { diff --git a/src/lib/services/client-metrics/instance-service.ts b/src/lib/features/metrics/instance/instance-service.ts similarity index 86% rename from src/lib/services/client-metrics/instance-service.ts rename to src/lib/features/metrics/instance/instance-service.ts index 3d152636a0..309de68a28 100644 --- a/src/lib/services/client-metrics/instance-service.ts +++ b/src/lib/features/metrics/instance/instance-service.ts @@ -1,26 +1,26 @@ -import { APPLICATION_CREATED, CLIENT_REGISTER } from '../../types/events'; +import { APPLICATION_CREATED, CLIENT_REGISTER } from '../../../types/events'; import { IApplication } from './models'; -import { IUnleashStores } from '../../types/stores'; -import { IUnleashConfig } from '../../types/option'; -import { IEventStore } from '../../types/stores/event-store'; +import { IUnleashStores } from '../../../types/stores'; +import { IUnleashConfig } from '../../../types/option'; +import { IEventStore } from '../../../types/stores/event-store'; import { IClientApplication, IClientApplicationsStore, -} from '../../types/stores/client-applications-store'; -import { IFeatureToggleStore } from '../../features/feature-toggle/types/feature-toggle-store-type'; -import { IStrategyStore } from '../../types/stores/strategy-store'; -import { IClientInstanceStore } from '../../types/stores/client-instance-store'; -import { IApplicationQuery } from '../../types/query'; -import { IClientApp } from '../../types/model'; -import { clientRegisterSchema } from './schema'; +} from '../../../types/stores/client-applications-store'; +import { IFeatureToggleStore } from '../../feature-toggle/types/feature-toggle-store-type'; +import { IStrategyStore } from '../../../types/stores/strategy-store'; +import { IClientInstanceStore } from '../../../types/stores/client-instance-store'; +import { IApplicationQuery } from '../../../types/query'; +import { IClientApp } from '../../../types/model'; +import { clientRegisterSchema } from '../shared/schema'; -import { IClientMetricsStoreV2 } from '../../types/stores/client-metrics-store-v2'; -import { clientMetricsSchema } from './schema'; -import { PartialSome } from '../../types/partial'; -import { IPrivateProjectChecker } from '../../features/private-project/privateProjectCheckerType'; -import { IFlagResolver, SYSTEM_USER } from '../../types'; -import { ALL_PROJECTS } from '../../util'; -import { Logger } from '../../logger'; +import { IClientMetricsStoreV2 } from '../client-metrics/client-metrics-store-v2-type'; +import { clientMetricsSchema } from '../shared/schema'; +import { PartialSome } from '../../../types/partial'; +import { IPrivateProjectChecker } from '../../private-project/privateProjectCheckerType'; +import { IFlagResolver, SYSTEM_USER } from '../../../types'; +import { ALL_PROJECTS } from '../../../util'; +import { Logger } from '../../../logger'; export default class ClientInstanceService { apps = {}; diff --git a/src/lib/routes/client-api/metrics.test.ts b/src/lib/features/metrics/instance/metrics.test.ts similarity index 96% rename from src/lib/routes/client-api/metrics.test.ts rename to src/lib/features/metrics/instance/metrics.test.ts index 144207a30e..29c4cbca05 100644 --- a/src/lib/routes/client-api/metrics.test.ts +++ b/src/lib/features/metrics/instance/metrics.test.ts @@ -1,17 +1,17 @@ import supertest from 'supertest'; -import getApp from '../../app'; -import { createTestConfig } from '../../../test/config/test-config'; -import { clientMetricsSchema } from '../../services/client-metrics/schema'; -import { createServices } from '../../services'; +import getApp from '../../../app'; +import { createTestConfig } from '../../../../test/config/test-config'; +import { clientMetricsSchema } from '../shared/schema'; +import { createServices } from '../../../services'; import { IAuthType, IUnleashOptions, IUnleashServices, IUnleashStores, -} from '../../types'; -import dbInit, { ITestDb } from '../../../test/e2e/helpers/database-init'; +} from '../../../types'; +import dbInit, { ITestDb } from '../../../../test/e2e/helpers/database-init'; import { subMinutes } from 'date-fns'; -import { ApiTokenType } from '../../types/models/api-token'; +import { ApiTokenType } from '../../../types/models/api-token'; let db: ITestDb; diff --git a/src/lib/routes/client-api/metrics.ts b/src/lib/features/metrics/instance/metrics.ts similarity index 86% rename from src/lib/routes/client-api/metrics.ts rename to src/lib/features/metrics/instance/metrics.ts index c4f63337dd..63d30539ad 100644 --- a/src/lib/routes/client-api/metrics.ts +++ b/src/lib/features/metrics/instance/metrics.ts @@ -1,22 +1,26 @@ import { Response } from 'express'; -import Controller from '../controller'; -import { IFlagResolver, IUnleashConfig, IUnleashServices } from '../../types'; -import ClientInstanceService from '../../services/client-metrics/instance-service'; -import { Logger } from '../../logger'; -import { IAuthRequest } from '../unleash-types'; -import ClientMetricsServiceV2 from '../../services/client-metrics/metrics-service-v2'; -import { NONE } from '../../types/permissions'; -import { OpenApiService } from '../../services/openapi-service'; -import { createRequestSchema } from '../../openapi/util/create-request-schema'; +import Controller from '../../../routes/controller'; +import { + IFlagResolver, + IUnleashConfig, + IUnleashServices, +} from '../../../types'; +import ClientInstanceService from './instance-service'; +import { Logger } from '../../../logger'; +import { IAuthRequest } from '../../../routes/unleash-types'; +import ClientMetricsServiceV2 from '../client-metrics/metrics-service-v2'; +import { NONE } from '../../../types/permissions'; +import { OpenApiService } from '../../../services/openapi-service'; +import { createRequestSchema } from '../../../openapi/util/create-request-schema'; import { emptyResponse, getStandardResponses, -} from '../../openapi/util/standard-responses'; +} from '../../../openapi/util/standard-responses'; import rateLimit from 'express-rate-limit'; import { minutesToMilliseconds } from 'date-fns'; -import { BulkMetricsSchema } from '../../openapi/spec/bulk-metrics-schema'; -import { clientMetricsEnvBulkSchema } from '../../services/client-metrics/schema'; -import { IClientMetricsEnv } from '../../types/stores/client-metrics-store-v2'; +import { BulkMetricsSchema } from '../../../openapi/spec/bulk-metrics-schema'; +import { clientMetricsEnvBulkSchema } from '../shared/schema'; +import { IClientMetricsEnv } from '../client-metrics/client-metrics-store-v2-type'; export default class ClientMetricsController extends Controller { logger: Logger; diff --git a/src/lib/services/client-metrics/models.ts b/src/lib/features/metrics/instance/models.ts similarity index 88% rename from src/lib/services/client-metrics/models.ts rename to src/lib/features/metrics/instance/models.ts index 5fc793c932..05bb83c0c6 100644 --- a/src/lib/services/client-metrics/models.ts +++ b/src/lib/features/metrics/instance/models.ts @@ -1,4 +1,4 @@ -import { IClientInstance } from '../../types/stores/client-instance-store'; +import { IClientInstance } from '../../../types/stores/client-instance-store'; export interface IYesNoCount { yes: number; diff --git a/src/lib/routes/client-api/register.test.ts b/src/lib/features/metrics/instance/register.test.ts similarity index 91% rename from src/lib/routes/client-api/register.test.ts rename to src/lib/features/metrics/instance/register.test.ts index db0a667e32..d11865b77a 100644 --- a/src/lib/routes/client-api/register.test.ts +++ b/src/lib/features/metrics/instance/register.test.ts @@ -1,9 +1,9 @@ import supertest from 'supertest'; -import { createTestConfig } from '../../../test/config/test-config'; -import createStores from '../../../test/fixtures/store'; -import getLogger from '../../../test/fixtures/no-logger'; -import getApp from '../../app'; -import { createServices } from '../../services'; +import { createTestConfig } from '../../../../test/config/test-config'; +import createStores from '../../../../test/fixtures/store'; +import getLogger from '../../../../test/fixtures/no-logger'; +import getApp from '../../../app'; +import { createServices } from '../../../services'; async function getSetup() { const stores = createStores(); diff --git a/src/lib/routes/client-api/register.ts b/src/lib/features/metrics/instance/register.ts similarity index 77% rename from src/lib/routes/client-api/register.ts rename to src/lib/features/metrics/instance/register.ts index dea657986d..9d1c1d14f5 100644 --- a/src/lib/routes/client-api/register.ts +++ b/src/lib/features/metrics/instance/register.ts @@ -1,21 +1,21 @@ import { Response } from 'express'; -import Controller from '../controller'; -import { IUnleashServices } from '../../types'; -import { IUnleashConfig } from '../../types/option'; -import { Logger } from '../../logger'; -import ClientInstanceService from '../../services/client-metrics/instance-service'; -import { IAuthRequest, IUser } from '../../server-impl'; -import { IClientApp } from '../../types/model'; -import ApiUser, { IApiUser } from '../../types/api-user'; -import { ALL } from '../../types/models/api-token'; -import { NONE } from '../../types/permissions'; -import { OpenApiService } from '../../services/openapi-service'; -import { emptyResponse } from '../../openapi/util/standard-responses'; -import { createRequestSchema } from '../../openapi/util/create-request-schema'; -import { ClientApplicationSchema } from '../../openapi/spec/client-application-schema'; +import Controller from '../../../routes/controller'; +import { IUnleashServices } from '../../../types'; +import { IUnleashConfig } from '../../../types/option'; +import { Logger } from '../../../logger'; +import ClientInstanceService from './instance-service'; +import { IAuthRequest, IUser } from '../../../server-impl'; +import { IClientApp } from '../../../types/model'; +import ApiUser, { IApiUser } from '../../../types/api-user'; +import { ALL } from '../../../types/models/api-token'; +import { NONE } from '../../../types/permissions'; +import { OpenApiService } from '../../../services/openapi-service'; +import { emptyResponse } from '../../../openapi/util/standard-responses'; +import { createRequestSchema } from '../../../openapi/util/create-request-schema'; +import { ClientApplicationSchema } from '../../../openapi/spec/client-application-schema'; import rateLimit from 'express-rate-limit'; import { minutesToMilliseconds } from 'date-fns'; -import version from '../../util/version'; +import version from '../../../util/version'; export default class RegisterController extends Controller { logger: Logger; diff --git a/src/lib/services/client-metrics/last-seen/createLastSeenService.ts b/src/lib/features/metrics/last-seen/createLastSeenService.ts similarity index 83% rename from src/lib/services/client-metrics/last-seen/createLastSeenService.ts rename to src/lib/features/metrics/last-seen/createLastSeenService.ts index e9fde30f3a..f75562f286 100644 --- a/src/lib/services/client-metrics/last-seen/createLastSeenService.ts +++ b/src/lib/features/metrics/last-seen/createLastSeenService.ts @@ -1,5 +1,5 @@ -import FakeFeatureToggleStore from '../../../features/feature-toggle/fakes/fake-feature-toggle-store'; -import FeatureToggleStore from '../../../features/feature-toggle/feature-toggle-store'; +import FakeFeatureToggleStore from '../../feature-toggle/fakes/fake-feature-toggle-store'; +import FeatureToggleStore from '../../feature-toggle/feature-toggle-store'; import { Db, IUnleashConfig } from '../../../server-impl'; import { FakeLastSeenStore } from './fake-last-seen-store'; import { LastSeenService } from './last-seen-service'; diff --git a/src/lib/services/client-metrics/last-seen/fake-last-seen-read-model.ts b/src/lib/features/metrics/last-seen/fake-last-seen-read-model.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/fake-last-seen-read-model.ts rename to src/lib/features/metrics/last-seen/fake-last-seen-read-model.ts diff --git a/src/lib/services/client-metrics/last-seen/fake-last-seen-store.ts b/src/lib/features/metrics/last-seen/fake-last-seen-store.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/fake-last-seen-store.ts rename to src/lib/features/metrics/last-seen/fake-last-seen-store.ts diff --git a/src/lib/services/client-metrics/last-seen/last-seen-read-model.ts b/src/lib/features/metrics/last-seen/last-seen-read-model.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/last-seen-read-model.ts rename to src/lib/features/metrics/last-seen/last-seen-read-model.ts diff --git a/src/lib/services/client-metrics/last-seen/last-seen-service.ts b/src/lib/features/metrics/last-seen/last-seen-service.ts similarity index 95% rename from src/lib/services/client-metrics/last-seen/last-seen-service.ts rename to src/lib/features/metrics/last-seen/last-seen-service.ts index 6886c603ee..9f8e613beb 100644 --- a/src/lib/services/client-metrics/last-seen/last-seen-service.ts +++ b/src/lib/features/metrics/last-seen/last-seen-service.ts @@ -1,12 +1,12 @@ import { Logger } from '../../../logger'; import { IUnleashConfig } from '../../../server-impl'; -import { IClientMetricsEnv } from '../../../types/stores/client-metrics-store-v2'; +import { IClientMetricsEnv } from '../client-metrics/client-metrics-store-v2-type'; import { ILastSeenStore } from './types/last-seen-store-type'; import { IFeatureToggleStore, IFlagResolver, IUnleashStores, -} from '../../../../lib/types'; +} from '../../../types'; export type LastSeenInput = { featureName: string; diff --git a/src/lib/services/client-metrics/last-seen/last-seen-store.ts b/src/lib/features/metrics/last-seen/last-seen-store.ts similarity index 97% rename from src/lib/services/client-metrics/last-seen/last-seen-store.ts rename to src/lib/features/metrics/last-seen/last-seen-store.ts index 478dac4b56..47da4bf648 100644 --- a/src/lib/services/client-metrics/last-seen/last-seen-store.ts +++ b/src/lib/features/metrics/last-seen/last-seen-store.ts @@ -2,7 +2,7 @@ import EventEmitter from 'events'; import { LogProvider, Logger } from '../../../logger'; import { DB_TIME } from '../../../metric-events'; import { Db } from '../../../server-impl'; -import metricsHelper from '../../..//util/metrics-helper'; +import metricsHelper from '../../../util/metrics-helper'; import { LastSeenInput } from './last-seen-service'; import { ILastSeenStore } from './types/last-seen-store-type'; diff --git a/src/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.ts b/src/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.ts rename to src/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.ts diff --git a/src/lib/services/client-metrics/last-seen/tests/last-seen-service.test.ts b/src/lib/features/metrics/last-seen/tests/last-seen-service.test.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/tests/last-seen-service.test.ts rename to src/lib/features/metrics/last-seen/tests/last-seen-service.test.ts diff --git a/src/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.ts b/src/lib/features/metrics/last-seen/types/last-seen-read-model-type.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.ts rename to src/lib/features/metrics/last-seen/types/last-seen-read-model-type.ts diff --git a/src/lib/services/client-metrics/last-seen/types/last-seen-store-type.ts b/src/lib/features/metrics/last-seen/types/last-seen-store-type.ts similarity index 100% rename from src/lib/services/client-metrics/last-seen/types/last-seen-store-type.ts rename to src/lib/features/metrics/last-seen/types/last-seen-store-type.ts diff --git a/src/lib/services/client-metrics/schema.test.ts b/src/lib/features/metrics/shared/schema.test.ts similarity index 100% rename from src/lib/services/client-metrics/schema.test.ts rename to src/lib/features/metrics/shared/schema.test.ts diff --git a/src/lib/services/client-metrics/schema.ts b/src/lib/features/metrics/shared/schema.ts similarity index 100% rename from src/lib/services/client-metrics/schema.ts rename to src/lib/features/metrics/shared/schema.ts diff --git a/src/lib/metrics.ts b/src/lib/metrics.ts index 7ccaf78184..115e09acbd 100644 --- a/src/lib/metrics.ts +++ b/src/lib/metrics.ts @@ -23,7 +23,7 @@ import { IUnleashConfig } from './types/option'; import { IUnleashStores } from './types/stores'; import { hoursToMilliseconds, minutesToMilliseconds } from 'date-fns'; import { InstanceStatsService } from './features/instance-stats/instance-stats-service'; -import { ValidatedClientMetrics } from './services/client-metrics/schema'; +import { ValidatedClientMetrics } from './features/metrics/shared/schema'; import { IEnvironment } from './types'; export default class MetricsMonitor { diff --git a/src/lib/routes/admin-api/index.ts b/src/lib/routes/admin-api/index.ts index 6cef58f37c..8af7949906 100644 --- a/src/lib/routes/admin-api/index.ts +++ b/src/lib/routes/admin-api/index.ts @@ -10,7 +10,7 @@ import MetricsController from './metrics'; import UserController from './user/user'; import ConfigController from './config'; import { ContextController } from './context'; -import ClientMetricsController from './client-metrics'; +import ClientMetricsController from '../../features/metrics/client-metrics/client-metrics'; import StateController from './state'; import TagController from './tag'; import TagTypeController from '../../features/tag-type/tag-type'; diff --git a/src/lib/routes/admin-api/metrics.ts b/src/lib/routes/admin-api/metrics.ts index 44e697cccf..41917c01b4 100644 --- a/src/lib/routes/admin-api/metrics.ts +++ b/src/lib/routes/admin-api/metrics.ts @@ -4,7 +4,7 @@ import { NONE, UPDATE_APPLICATION } from '../../types/permissions'; import { IUnleashConfig } from '../../types/option'; import { IUnleashServices } from '../../types/services'; import { Logger } from '../../logger'; -import ClientInstanceService from '../../services/client-metrics/instance-service'; +import ClientInstanceService from '../../features/metrics/instance/instance-service'; import { createRequestSchema } from '../../openapi/util/create-request-schema'; import { createResponseSchema } from '../../openapi/util/create-response-schema'; import { ApplicationSchema } from '../../openapi/spec/application-schema'; diff --git a/src/lib/routes/client-api/index.ts b/src/lib/routes/client-api/index.ts index ce3b46984c..05d534c79e 100644 --- a/src/lib/routes/client-api/index.ts +++ b/src/lib/routes/client-api/index.ts @@ -1,7 +1,7 @@ import Controller from '../controller'; import FeatureController from '../../features/client-feature-toggles/client-feature-toggle.controller'; -import MetricsController from './metrics'; -import RegisterController from './register'; +import MetricsController from '../../features/metrics/instance/metrics'; +import RegisterController from '../../features/metrics/instance/register'; import { IUnleashConfig, IUnleashServices } from '../../types'; export default class ClientApi extends Controller { diff --git a/src/lib/routes/edge-api/index.ts b/src/lib/routes/edge-api/index.ts index be0864236f..77cf9ea029 100644 --- a/src/lib/routes/edge-api/index.ts +++ b/src/lib/routes/edge-api/index.ts @@ -10,7 +10,7 @@ import { validatedEdgeTokensSchema, ValidatedEdgeTokensSchema, } from '../../openapi/spec/validated-edge-tokens-schema'; -import ClientInstanceService from '../../services/client-metrics/instance-service'; +import ClientInstanceService from '../../features/metrics/instance/instance-service'; import EdgeService from '../../services/edge-service'; import { OpenApiService } from '../../services/openapi-service'; import { @@ -18,8 +18,8 @@ import { getStandardResponses, } from '../../openapi/util/standard-responses'; import { BulkMetricsSchema } from '../../openapi/spec/bulk-metrics-schema'; -import ClientMetricsServiceV2 from '../../services/client-metrics/metrics-service-v2'; -import { clientMetricsEnvBulkSchema } from '../../services/client-metrics/schema'; +import ClientMetricsServiceV2 from '../../features/metrics/client-metrics/metrics-service-v2'; +import { clientMetricsEnvBulkSchema } from '../../features/metrics/shared/schema'; import { TokenStringListSchema } from '../../openapi'; export default class EdgeController extends Controller { diff --git a/src/lib/services/index.ts b/src/lib/services/index.ts index 20b8cd7813..acb5b45c2a 100644 --- a/src/lib/services/index.ts +++ b/src/lib/services/index.ts @@ -5,8 +5,8 @@ import HealthService from './health-service'; import ProjectService from './project-service'; import StateService from './state-service'; -import ClientInstanceService from './client-metrics/instance-service'; -import ClientMetricsServiceV2 from './client-metrics/metrics-service-v2'; +import ClientInstanceService from '../features/metrics/instance/instance-service'; +import ClientMetricsServiceV2 from '../features/metrics/client-metrics/metrics-service-v2'; import TagTypeService from '../features/tag-type/tag-type-service'; import TagService from './tag-service'; import StrategyService from './strategy-service'; @@ -35,7 +35,7 @@ import { ProxyService } from './proxy-service'; import EdgeService from './edge-service'; import PatService from './pat-service'; import { PublicSignupTokenService } from './public-signup-token-service'; -import { LastSeenService } from './client-metrics/last-seen/last-seen-service'; +import { LastSeenService } from '../features/metrics/last-seen/last-seen-service'; import { InstanceStatsService } from '../features/instance-stats/instance-stats-service'; import { FavoritesService } from './favorites-service'; import MaintenanceService from '../features/maintenance/maintenance-service'; @@ -85,7 +85,7 @@ import { FakeDependentFeaturesReadModel } from '../features/dependent-features/f import { createFakeLastSeenService, createLastSeenService, -} from './client-metrics/last-seen/createLastSeenService'; +} from '../features/metrics/last-seen/createLastSeenService'; import { createFakeGetProductionChanges, createGetProductionChanges, diff --git a/src/lib/types/services.ts b/src/lib/types/services.ts index d689bc0aab..4821fabdc6 100644 --- a/src/lib/types/services.ts +++ b/src/lib/types/services.ts @@ -5,7 +5,7 @@ import StateService from '../services/state-service'; import StrategyService from '../services/strategy-service'; import TagTypeService from '../features/tag-type/tag-type-service'; import TagService from '../services/tag-service'; -import ClientInstanceService from '../services/client-metrics/instance-service'; +import ClientInstanceService from '../features/metrics/instance/instance-service'; import ContextService from '../services/context-service'; import VersionService from '../services/version-service'; import { ApiTokenService } from '../services/api-token-service'; @@ -22,7 +22,7 @@ import FeatureToggleService from '../features/feature-toggle/feature-toggle-serv import EnvironmentService from '../features/project-environments/environment-service'; import FeatureTagService from '../services/feature-tag-service'; import ProjectHealthService from '../services/project-health-service'; -import ClientMetricsServiceV2 from '../services/client-metrics/metrics-service-v2'; +import ClientMetricsServiceV2 from '../features/metrics/client-metrics/metrics-service-v2'; import UserSplashService from '../services/user-splash-service'; import { OpenApiService } from '../services/openapi-service'; import { ClientSpecService } from '../services/client-spec-service'; @@ -32,7 +32,7 @@ import { ProxyService } from '../services/proxy-service'; import EdgeService from '../services/edge-service'; import PatService from '../services/pat-service'; import { PublicSignupTokenService } from '../services/public-signup-token-service'; -import { LastSeenService } from '../services/client-metrics/last-seen/last-seen-service'; +import { LastSeenService } from '../features/metrics/last-seen/last-seen-service'; import { InstanceStatsService } from '../features/instance-stats/instance-stats-service'; import { FavoritesService } from '../services/favorites-service'; import MaintenanceService from '../features/maintenance/maintenance-service'; diff --git a/src/lib/types/stores.ts b/src/lib/types/stores.ts index 26124bfcd0..1ea39e91cc 100644 --- a/src/lib/types/stores.ts +++ b/src/lib/types/stores.ts @@ -21,7 +21,7 @@ import { IFeatureEnvironmentStore } from './stores/feature-environment-store'; import { IFeatureStrategiesStore } from '../features/feature-toggle/types/feature-toggle-strategies-store-type'; import { IEnvironmentStore } from '../features/project-environments/environment-store-type'; import { IFeatureToggleClientStore } from '../features/client-feature-toggles/types/client-feature-toggle-store-type'; -import { IClientMetricsStoreV2 } from './stores/client-metrics-store-v2'; +import { IClientMetricsStoreV2 } from '../features/metrics/client-metrics/client-metrics-store-v2-type'; import { IUserSplashStore } from './stores/user-splash-store'; import { IRoleStore } from './stores/role-store'; import { ISegmentStore } from './stores/segment-store'; @@ -35,7 +35,7 @@ import { IProjectStatsStore } from './stores/project-stats-store-type'; import { IImportTogglesStore } from '../features/export-import-toggles/import-toggles-store-type'; import { IPrivateProjectStore } from '../features/private-project/privateProjectStoreType'; import { IDependentFeaturesStore } from '../features/dependent-features/dependent-features-store-type'; -import { ILastSeenStore } from '../services/client-metrics/last-seen/types/last-seen-store-type'; +import { ILastSeenStore } from '../features/metrics/last-seen/types/last-seen-store-type'; import { IFeatureSearchStore } from '../features/feature-search/feature-search-store-type'; export interface IUnleashStores { diff --git a/src/lib/util/index.ts b/src/lib/util/index.ts index be4ac8aa64..ce8d637652 100644 --- a/src/lib/util/index.ts +++ b/src/lib/util/index.ts @@ -28,5 +28,5 @@ export * from './graceful-shutdown'; export * from './validateJsonString'; export * from './arraysHaveSameItems'; export * from './constantTimeCompare'; -export * from './collapseHourlyMetrics'; +export * from '../features/metrics/client-metrics/collapseHourlyMetrics'; export * from '../features/playground/offline-unleash-client'; diff --git a/src/test/fixtures/store.ts b/src/test/fixtures/store.ts index bfd72cd9e6..f639fee3e3 100644 --- a/src/test/fixtures/store.ts +++ b/src/test/fixtures/store.ts @@ -26,7 +26,7 @@ import FakeApiTokenStore from './fake-api-token-store'; import FakeFeatureTypeStore from './fake-feature-type-store'; import FakeResetTokenStore from './fake-reset-token-store'; import FakeClientFeatureToggleStore from '../../lib/features/client-feature-toggles/fakes/fake-client-feature-toggle-store'; -import FakeClientMetricsStoreV2 from './fake-client-metrics-store-v2'; +import FakeClientMetricsStoreV2 from '../../lib/features/metrics/client-metrics/fake-client-metrics-store-v2'; import FakeUserSplashStore from './fake-user-splash-store'; import FakeRoleStore from './fake-role-store'; import FakeSegmentStore from './fake-segment-store'; @@ -38,7 +38,7 @@ import FakeFavoriteProjectsStore from './fake-favorite-projects-store'; import { FakeAccountStore } from './fake-account-store'; import FakeProjectStatsStore from './fake-project-stats-store'; import { FakeDependentFeaturesStore } from '../../lib/features/dependent-features/fake-dependent-features-store'; -import { FakeLastSeenStore } from '../../lib/services/client-metrics/last-seen/fake-last-seen-store'; +import { FakeLastSeenStore } from '../../lib/features/metrics/last-seen/fake-last-seen-store'; import FakeFeatureSearchStore from '../../lib/features/feature-search/fake-feature-search-store'; const db = {