- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Actualizaciones de configuracion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
44 lines
2.2 KiB
TypeScript
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;
|
|
}
|