lxp-trait-lib
v1.0.0
Published
Biblioteca interna de trait control (feature flags) para projetos LXP
Readme
lxp-trait-lib
Biblioteca interna de Trait Control (feature flags) para projetos LXP. Permite verificar se uma feature está ativa para um usuário com base em regras de inclusão/exclusão por instituição, carreira, programa e faixa etária.
Instalação
npm install git+ssh://[email protected]/CIonline/lxp-trait-lib.gitPré-requisitos
O projeto consumidor deve ter @nestjs/typeorm e typeorm configurados com uma conexão ao banco que contém a tabela features.
Uso
1. Importar o módulo
import { TraitControlModule } from '@cionline/lxp-trait-lib';
@Module({
imports: [
TypeOrmModule.forRoot({...}), // conexão existente
TraitControlModule,
],
})
export class AppModule {}2. Injetar o service
import { TraitControlService, ITraitInput } from '@cionline/lxp-trait-lib';
@Injectable()
export class MeuService {
constructor(private readonly traitControl: TraitControlService) {}
async verificarFeature() {
const ativo = await this.traitControl.check({
institution: 'minha-instituicao',
career: 'graduacao',
slug: 'minha-feature',
programId: 123,
ageRange: '18-25',
});
if (ativo) {
// feature habilitada para este usuário
}
}
}API
TraitControlService.check(input: ITraitInput): Promise<boolean>
Verifica se um trait (feature) está ativo para o input fornecido.
Parâmetros (ITraitInput):
| Campo | Tipo | Descrição |
|---------------|----------|----------------------------------|
| institution | string | Identificador da instituição |
| career | string | Identificador da carreira |
| slug | string | Slug único do trait/feature |
| programId | number | ID do programa/curso |
| ageRange | string | Faixa etária do usuário |
Retorno: true se o trait está ativo, false caso contrário.
Lógica de regras:
- Regras de exclusão têm precedência sobre inclusão
- Se há match em exclusão → retorna
false - Se há match em inclusão → retorna
true - Sem match → retorna
false
Exports
import {
TraitControlModule, // módulo NestJS
TraitControlService, // service principal
TraitEntity, // entidade TypeORM (tabela features)
ITraitInput, // interface de input
} from '@cionline/lxp-trait-lib';Desenvolvimento
nvm use
npm install
npm run build