1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-03-23 00:16:25 +01:00

refactor: metrics in feature oriented architecture (#5919)

This commit is contained in:
Mateusz Kwasniewski 2024-01-17 09:14:31 +01:00 committed by GitHub
parent aee470a7d6
commit 16691d72d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 161 additions and 160 deletions

View File

@ -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 = (

View File

@ -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,

View File

@ -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';

View File

@ -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';

View File

@ -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;

View File

@ -1,4 +1,4 @@
import { Store } from './store';
import { Store } from '../../../types/stores/store';
export interface IClientMetricsEnvKey {
featureName: string;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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', () => {

View File

@ -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 => {

View File

@ -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

View File

@ -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();

View File

@ -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;

View File

@ -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(() => {

View File

@ -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 = {};

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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';

View File

@ -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;

View File

@ -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';

View File

@ -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 {

View File

@ -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';

View File

@ -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';

View File

@ -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 {

View File

@ -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 {

View File

@ -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,

View File

@ -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';

View File

@ -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 {

View File

@ -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';

View File

@ -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 = {