template-saas/apps/backend/dist/modules/feature-flags/services/feature-flags.service.d.ts
rckrdmrd 50a821a415
Some checks failed
CI / Backend CI (push) Has been cancelled
CI / Frontend CI (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / CI Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones de configuracion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:08 -06:00

44 lines
2.2 KiB
TypeScript

import { Repository } from 'typeorm';
import { FeatureFlag } from '../entities/feature-flag.entity';
import { TenantFlag } from '../entities/tenant-flag.entity';
import { UserFlag } from '../entities/user-flag.entity';
import { CreateFlagDto } from '../dto/create-flag.dto';
import { UpdateFlagDto } from '../dto/update-flag.dto';
import { SetTenantFlagDto, SetUserFlagDto } from '../dto/set-tenant-flag.dto';
export interface EvaluationContext {
tenantId?: string;
userId?: string;
planId?: string;
attributes?: Record<string, any>;
}
export interface FlagEvaluation {
key: string;
enabled: boolean;
value: any;
source: 'default' | 'global' | 'tenant' | 'user' | 'rollout';
}
export declare class FeatureFlagsService {
private readonly flagRepository;
private readonly tenantFlagRepository;
private readonly userFlagRepository;
constructor(flagRepository: Repository<FeatureFlag>, tenantFlagRepository: Repository<TenantFlag>, userFlagRepository: Repository<UserFlag>);
createFlag(dto: CreateFlagDto): Promise<FeatureFlag>;
updateFlag(id: string, dto: UpdateFlagDto): Promise<FeatureFlag>;
deleteFlag(id: string): Promise<void>;
getAllFlags(): Promise<FeatureFlag[]>;
getFlagByKey(key: string): Promise<FeatureFlag | null>;
getFlagById(id: string): Promise<FeatureFlag | null>;
toggleFlag(id: string, enabled: boolean): Promise<FeatureFlag>;
setTenantFlag(tenantId: string, dto: SetTenantFlagDto): Promise<TenantFlag>;
removeTenantFlag(tenantId: string, flagId: string): Promise<void>;
getTenantFlags(tenantId: string): Promise<TenantFlag[]>;
setUserFlag(tenantId: string, dto: SetUserFlagDto): Promise<UserFlag>;
removeUserFlag(userId: string, flagId: string): Promise<void>;
getUserFlags(tenantId: string, userId: string): Promise<UserFlag[]>;
evaluateFlag(key: string, context: EvaluationContext): Promise<FlagEvaluation>;
evaluateAllFlags(context: EvaluationContext): Promise<Record<string, FlagEvaluation>>;
isEnabled(key: string, context: EvaluationContext): Promise<boolean>;
getValue<T = any>(key: string, context: EvaluationContext, defaultValue: T): Promise<T>;
private isInRollout;
}