Socket
Book a DemoInstallSign in
Socket

@exact-team/nestjs-feature-toggle

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@exact-team/nestjs-feature-toggle

feature toggle for nestjs

latest
Source
npmnpm
Version
0.0.7
Version published
Maintainers
1
Created
Source

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

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

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

@Module({
  imports: [
    FeatureToggleModule.forRoot(),
    // ... другие модули
  ],
})
export class AppModule {}
  • Примените декоратор к контроллерам или методам
// 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'];
  }
}
  • Добавьте флаги в .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

Keywords

sdk

FAQs

Package last updated on 09 May 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts