0.0.7 • Published 9 months ago

@exact-team/nestjs-feature-toggle v0.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

NestJS-feature-toggle

GitHub top language GitHub Repo stars

npm version GitHub Tag

Build Status Downloads License NPM Last Update

Known Vulnerabilities Coverage Status

Описание

Библиотека для условного включения и отключения контроллеров и методов в NestJS на основе фич-флагов, хранящихся в ConfigService (.env)

Возможности

  • Декоратор @FeatureToggle('FLAG_NAME') для классов и методов
  • Глобальный Guard FeatureToggleGuard для проверки фич-флагов
  • Модуль FeatureToggleModule.forRoot() для простого подключения

Установка

npm install @exact-tema/nestjs-feature-toggle

или

yarn add @exact-tema/nestjs-feature-toggle

Быстрый старт

  1. Подключите модуль в приложении
// src/app.module.ts
import { Module } from '@nestjs/common';
import { FeatureToggleModule } from '@exact-team/nestjs-feature-toggle';

@Module({
  imports: [
    FeatureToggleModule.forRoot(),
    // ... другие модули
  ],
})
export class AppModule {}
  1. Примените декоратор к контроллерам или методам
// src/new-api.controller.ts
import { Controller, Get } from '@nestjs/common';
import { FeatureToggle } from '@exact-team/nestjs-feature-toggle';

@FeatureToggle('NEW_API')
@Controller('new-api')
export class NewApiController {
  @Get()
  findAll() {
    return ['item1', 'item2'];
  }

  @Get('beta')
  @FeatureToggle('BETA_FEATURE')
  findBeta() {
    return ['beta-item'];
  }
}
  1. Добавьте флаги в .env
NEW_API=true
BETA_FEATURE=false

Метод или контроллер будут доступны только при значении флага true.

API

FeatureToggleModule.forRoot(): DynamicModule

Подключает глобальный Guard и ConfigModule:

  • Импорт: ConfigModule
  • Провайдер: { provide: APP_GUARD, useClass: FeatureToggleGuard }

@FeatureToggle(featureName: string)

Декоратор, который можно применять к:

  • Классу — отключает весь контроллер
  • Методу — отключает только конкретный маршрут

Параметры:

  • featureName: string — ключ флага в ConfigService

FeatureToggleGuard (CanActivate)

  • Читает метаданные featureName с метода или класса
  • Получает флаг из ConfigService
  • Если флаг true — пропускает, иначе кидает NotFoundException()

Примеры использования

// src/app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { FeatureToggleModule } from '@exact-team/nestjs-feature-toggle';
import { NewApiController } from './new-api.controller';

@Module({
  imports: [ConfigModule.forRoot({ isGlobal: true }), FeatureToggleModule.forRoot()],
  controllers: [NewApiController],
})
export class AppModule {}

Лицензия

MIT

0.0.7

9 months ago

0.0.6

9 months ago

0.0.54

9 months ago

0.0.53

9 months ago

0.0.52

9 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.3

9 months ago

0.0.1

9 months ago