Skip to content

index

Classes

FeatureFlagGuard

Defined in: src/guards/feature-flag.guard.ts:12

Implements

  • CanActivate

Constructors

Constructor
ts
new FeatureFlagGuard(reflector, featureFlagService): FeatureFlagGuard;

Defined in: src/guards/feature-flag.guard.ts:13

Parameters
ParameterType
reflectorReflector
featureFlagServiceFeatureFlagService
Returns

FeatureFlagGuard

Methods

canActivate()
ts
canActivate(context): Promise<boolean>;

Defined in: src/guards/feature-flag.guard.ts:18

Parameters
ParameterTypeDescription
contextExecutionContextCurrent execution context. Provides access to details about the current request pipeline.
Returns

Promise<boolean>

Value indicating whether or not the current request is allowed to proceed.

Implementation of
ts
CanActivate.canActivate

FeatureFlagModule

Defined in: src/feature-flag.module.ts:44

Implements

  • NestModule

Constructors

Constructor
ts
new FeatureFlagModule(): FeatureFlagModule;
Returns

FeatureFlagModule

Methods

configure()
ts
configure(consumer): void;

Defined in: src/feature-flag.module.ts:45

Parameters
ParameterType
consumerMiddlewareConsumer
Returns

void

Implementation of
ts
NestModule.configure
forRoot()
ts
static forRoot(options): DynamicModule;

Defined in: src/feature-flag.module.ts:51

Parameters
ParameterType
optionsFeatureFlagModuleRootOptions
Returns

DynamicModule

forRootAsync()
ts
static forRootAsync(options): DynamicModule;

Defined in: src/feature-flag.module.ts:77

Parameters
ParameterType
optionsFeatureFlagModuleRootAsyncOptions
Returns

DynamicModule


FeatureFlagService

Defined in: src/services/feature-flag.service.ts:18

Constructors

Constructor
ts
new FeatureFlagService(
   options, 
   prisma, 
   cache, 
   evaluator, 
   flagContext, 
   moduleRef, 
   eventEmitter?): FeatureFlagService;

Defined in: src/services/feature-flag.service.ts:19

Parameters
ParameterType
optionsFeatureFlagModuleOptions
prismaany
cacheFlagCacheService
evaluatorFlagEvaluatorService
flagContextFlagContext
moduleRefModuleRef
eventEmitter?any
Returns

FeatureFlagService

Methods

archive()
ts
archive(key): Promise<FeatureFlagWithOverrides>;

Defined in: src/services/feature-flag.service.ts:108

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides>

create()
ts
create(input): Promise<FeatureFlagWithOverrides>;

Defined in: src/services/feature-flag.service.ts:66

Parameters
ParameterType
inputCreateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>

evaluateAll()
ts
evaluateAll(explicitContext?): Promise<Record<string, boolean>>;

Defined in: src/services/feature-flag.service.ts:54

Parameters
ParameterType
explicitContext?EvaluationContext
Returns

Promise<Record<string, boolean>>

findAll()
ts
findAll(): Promise<FeatureFlagWithOverrides[]>;

Defined in: src/services/feature-flag.service.ts:161

Returns

Promise<FeatureFlagWithOverrides[]>

invalidateCache()
ts
invalidateCache(): void;

Defined in: src/services/feature-flag.service.ts:169

Returns

void

isEnabled()
ts
isEnabled(flagKey, explicitContext?): Promise<boolean>;

Defined in: src/services/feature-flag.service.ts:29

Parameters
ParameterType
flagKeystring
explicitContext?EvaluationContext
Returns

Promise<boolean>

setOverride()
ts
setOverride(key, input): Promise<void>;

Defined in: src/services/feature-flag.service.ts:124

Parameters
ParameterType
keystring
inputSetOverrideInput
Returns

Promise<void>

update()
ts
update(key, input): Promise<FeatureFlagWithOverrides>;

Defined in: src/services/feature-flag.service.ts:87

Parameters
ParameterType
keystring
inputUpdateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>


FlagContext

Defined in: src/services/flag-context.ts:9

Constructors

Constructor
ts
new FlagContext(): FlagContext;
Returns

FlagContext

Methods

getUserId()
ts
getUserId(): string | null;

Defined in: src/services/flag-context.ts:16

Returns

string | null

run()
ts
run<T>(store, callback): T;

Defined in: src/services/flag-context.ts:12

Type Parameters
Type Parameter
T
Parameters
ParameterType
storeFlagStore
callback() => T
Returns

T

Interfaces

CreateFeatureFlagInput

Defined in: src/interfaces/feature-flag.interface.ts:1

Properties

description?
ts
optional description?: string;

Defined in: src/interfaces/feature-flag.interface.ts:3

enabled?
ts
optional enabled?: boolean;

Defined in: src/interfaces/feature-flag.interface.ts:4

key
ts
key: string;

Defined in: src/interfaces/feature-flag.interface.ts:2

metadata?
ts
optional metadata?: Record<string, unknown>;

Defined in: src/interfaces/feature-flag.interface.ts:6

percentage?
ts
optional percentage?: number;

Defined in: src/interfaces/feature-flag.interface.ts:5


EvaluationContext

Defined in: src/interfaces/evaluation-context.interface.ts:1

Properties

environment?
ts
optional environment?: string;

Defined in: src/interfaces/evaluation-context.interface.ts:9

Environment — auto-injected from module options. Can be explicitly overridden

tenantId?
ts
optional tenantId?: string | null;

Defined in: src/interfaces/evaluation-context.interface.ts:6

Tenant ID — used for tenant overrides. Ignored if tenancy is not installed

userId?
ts
optional userId?: string | null;

Defined in: src/interfaces/evaluation-context.interface.ts:3

User ID — used for user overrides and percentage hash


FeatureFlagGuardOptions

Defined in: src/interfaces/feature-flag.interface.ts:23

Properties

fallback?
ts
optional fallback?: Record<string, unknown>;

Defined in: src/interfaces/feature-flag.interface.ts:28

Response body when flag is OFF

statusCode?
ts
optional statusCode?: number;

Defined in: src/interfaces/feature-flag.interface.ts:25

HTTP status code when flag is OFF. Default: 403


FeatureFlagModuleAsyncOptions

Defined in: src/interfaces/feature-flag-options.interface.ts:27

Extends

  • Pick<ModuleMetadata, "imports">

Extended by

Properties

imports?
ts
optional imports?: (
  | DynamicModule
  | Type<any>
  | Promise<DynamicModule>
  | ForwardReference<any>)[];

Defined in: node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts:18

Optional list of imported modules that export the providers which are required in this module.

Inherited from
ts
Pick.imports
inject?
ts
optional inject?: any[];

Defined in: src/interfaces/feature-flag-options.interface.ts:28

useClass?
ts
optional useClass?: Type<FeatureFlagModuleOptionsFactory>;

Defined in: src/interfaces/feature-flag-options.interface.ts:30

useExisting?
ts
optional useExisting?: Type<FeatureFlagModuleOptionsFactory>;

Defined in: src/interfaces/feature-flag-options.interface.ts:31

useFactory?
ts
optional useFactory?: (...args) => 
  | FeatureFlagModuleOptions
| Promise<FeatureFlagModuleOptions>;

Defined in: src/interfaces/feature-flag-options.interface.ts:29

Parameters
ParameterType
...argsany[]
Returns

| FeatureFlagModuleOptions | Promise<FeatureFlagModuleOptions>


FeatureFlagModuleOptions

Defined in: src/interfaces/feature-flag-options.interface.ts:4

Extended by

Properties

cacheTtlMs?
ts
optional cacheTtlMs?: number;

Defined in: src/interfaces/feature-flag-options.interface.ts:9

Cache TTL in milliseconds. 0 disables caching. Default: 30000

defaultOnMissing?
ts
optional defaultOnMissing?: boolean;

Defined in: src/interfaces/feature-flag-options.interface.ts:15

Default value when evaluating a non-existent flag. Default: false

emitEvents?
ts
optional emitEvents?: boolean;

Defined in: src/interfaces/feature-flag-options.interface.ts:18

Emit evaluation events via @nestjs/event-emitter. Default: false

environment
ts
environment: string;

Defined in: src/interfaces/feature-flag-options.interface.ts:6

Current environment (e.g., 'development', 'staging', 'production')

userIdExtractor?
ts
optional userIdExtractor?: (req) => string | null;

Defined in: src/interfaces/feature-flag-options.interface.ts:12

Extract user ID from request. Returns null if user is not authenticated.

Parameters
ParameterType
reqRequest
Returns

string | null


FeatureFlagModuleOptionsFactory

Defined in: src/interfaces/feature-flag-options.interface.ts:21

Methods

createFeatureFlagOptions()
ts
createFeatureFlagOptions(): 
  | Promise<FeatureFlagModuleOptions & {
  prisma: any;
}>
  | FeatureFlagModuleOptions & {
  prisma: any;
};

Defined in: src/interfaces/feature-flag-options.interface.ts:22

Returns

| Promise<FeatureFlagModuleOptions & { prisma: any; }> | FeatureFlagModuleOptions & { prisma: any; }


FeatureFlagModuleRootAsyncOptions

Defined in: src/feature-flag.module.ts:27

Extends

Properties

imports?
ts
optional imports?: (
  | DynamicModule
  | Type<any>
  | Promise<DynamicModule>
  | ForwardReference<any>)[];

Defined in: node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts:18

Optional list of imported modules that export the providers which are required in this module.

Inherited from

FeatureFlagModuleAsyncOptions.imports

inject?
ts
optional inject?: any[];

Defined in: src/interfaces/feature-flag-options.interface.ts:28

Inherited from

FeatureFlagModuleAsyncOptions.inject

useClass?
ts
optional useClass?: Type<FeatureFlagModuleOptionsFactory>;

Defined in: src/interfaces/feature-flag-options.interface.ts:30

Inherited from

FeatureFlagModuleAsyncOptions.useClass

useExisting?
ts
optional useExisting?: Type<FeatureFlagModuleOptionsFactory>;

Defined in: src/interfaces/feature-flag-options.interface.ts:31

Inherited from

FeatureFlagModuleAsyncOptions.useExisting

useFactory?
ts
optional useFactory?: (...args) => 
  | FeatureFlagModuleRootOptions
| Promise<FeatureFlagModuleRootOptions>;

Defined in: src/feature-flag.module.ts:28

Parameters
ParameterType
...argsany[]
Returns

| FeatureFlagModuleRootOptions | Promise<FeatureFlagModuleRootOptions>

Overrides

FeatureFlagModuleAsyncOptions.useFactory


FeatureFlagModuleRootOptions

Defined in: src/feature-flag.module.ts:23

Extends

Properties

cacheTtlMs?
ts
optional cacheTtlMs?: number;

Defined in: src/interfaces/feature-flag-options.interface.ts:9

Cache TTL in milliseconds. 0 disables caching. Default: 30000

Inherited from

FeatureFlagModuleOptions.cacheTtlMs

defaultOnMissing?
ts
optional defaultOnMissing?: boolean;

Defined in: src/interfaces/feature-flag-options.interface.ts:15

Default value when evaluating a non-existent flag. Default: false

Inherited from

FeatureFlagModuleOptions.defaultOnMissing

emitEvents?
ts
optional emitEvents?: boolean;

Defined in: src/interfaces/feature-flag-options.interface.ts:18

Emit evaluation events via @nestjs/event-emitter. Default: false

Inherited from

FeatureFlagModuleOptions.emitEvents

environment
ts
environment: string;

Defined in: src/interfaces/feature-flag-options.interface.ts:6

Current environment (e.g., 'development', 'staging', 'production')

Inherited from

FeatureFlagModuleOptions.environment

prisma
ts
prisma: any;

Defined in: src/feature-flag.module.ts:24

userIdExtractor?
ts
optional userIdExtractor?: (req) => string | null;

Defined in: src/interfaces/feature-flag-options.interface.ts:12

Extract user ID from request. Returns null if user is not authenticated.

Parameters
ParameterType
reqRequest
Returns

string | null

Inherited from

FeatureFlagModuleOptions.userIdExtractor


FeatureFlagWithOverrides

Defined in: src/interfaces/feature-flag.interface.ts:31

Properties

archivedAt
ts
archivedAt: Date | null;

Defined in: src/interfaces/feature-flag.interface.ts:38

createdAt
ts
createdAt: Date;

Defined in: src/interfaces/feature-flag.interface.ts:39

description
ts
description: string | null;

Defined in: src/interfaces/feature-flag.interface.ts:34

enabled
ts
enabled: boolean;

Defined in: src/interfaces/feature-flag.interface.ts:35

id
ts
id: string;

Defined in: src/interfaces/feature-flag.interface.ts:32

key
ts
key: string;

Defined in: src/interfaces/feature-flag.interface.ts:33

metadata
ts
metadata: Record<string, unknown>;

Defined in: src/interfaces/feature-flag.interface.ts:37

overrides
ts
overrides: FlagOverride[];

Defined in: src/interfaces/feature-flag.interface.ts:41

percentage
ts
percentage: number;

Defined in: src/interfaces/feature-flag.interface.ts:36

updatedAt
ts
updatedAt: Date;

Defined in: src/interfaces/feature-flag.interface.ts:40


FlagEvaluatedEvent

Defined in: src/events/feature-flag.events.ts:13

Properties

context
ts
context: EvaluationContext;

Defined in: src/events/feature-flag.events.ts:16

evaluationTimeMs
ts
evaluationTimeMs: number;

Defined in: src/events/feature-flag.events.ts:18

flagKey
ts
flagKey: string;

Defined in: src/events/feature-flag.events.ts:14

result
ts
result: boolean;

Defined in: src/events/feature-flag.events.ts:15

source
ts
source: 
  | "user_override"
  | "tenant_override"
  | "env_override"
  | "percentage"
  | "global";

Defined in: src/events/feature-flag.events.ts:17


FlagMutationEvent

Defined in: src/events/feature-flag.events.ts:21

Properties

action
ts
action: "created" | "updated" | "archived";

Defined in: src/events/feature-flag.events.ts:23

flagKey
ts
flagKey: string;

Defined in: src/events/feature-flag.events.ts:22


FlagOverride

Defined in: src/interfaces/feature-flag.interface.ts:44

Properties

enabled
ts
enabled: boolean;

Defined in: src/interfaces/feature-flag.interface.ts:50

environment
ts
environment: string | null;

Defined in: src/interfaces/feature-flag.interface.ts:49

flagId
ts
flagId: string;

Defined in: src/interfaces/feature-flag.interface.ts:46

id
ts
id: string;

Defined in: src/interfaces/feature-flag.interface.ts:45

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/feature-flag.interface.ts:47

userId
ts
userId: string | null;

Defined in: src/interfaces/feature-flag.interface.ts:48


FlagOverrideEvent

Defined in: src/events/feature-flag.events.ts:26

Properties

action
ts
action: "set" | "removed";

Defined in: src/events/feature-flag.events.ts:32

enabled
ts
enabled: boolean;

Defined in: src/events/feature-flag.events.ts:31

environment?
ts
optional environment?: string | null;

Defined in: src/events/feature-flag.events.ts:30

flagKey
ts
flagKey: string;

Defined in: src/events/feature-flag.events.ts:27

tenantId?
ts
optional tenantId?: string | null;

Defined in: src/events/feature-flag.events.ts:28

userId?
ts
optional userId?: string | null;

Defined in: src/events/feature-flag.events.ts:29


SetOverrideInput

Defined in: src/interfaces/feature-flag.interface.ts:16

Properties

enabled
ts
enabled: boolean;

Defined in: src/interfaces/feature-flag.interface.ts:20

environment?
ts
optional environment?: string;

Defined in: src/interfaces/feature-flag.interface.ts:19

tenantId?
ts
optional tenantId?: string;

Defined in: src/interfaces/feature-flag.interface.ts:17

userId?
ts
optional userId?: string;

Defined in: src/interfaces/feature-flag.interface.ts:18


UpdateFeatureFlagInput

Defined in: src/interfaces/feature-flag.interface.ts:9

Properties

description?
ts
optional description?: string;

Defined in: src/interfaces/feature-flag.interface.ts:10

enabled?
ts
optional enabled?: boolean;

Defined in: src/interfaces/feature-flag.interface.ts:11

metadata?
ts
optional metadata?: Record<string, unknown>;

Defined in: src/interfaces/feature-flag.interface.ts:13

percentage?
ts
optional percentage?: number;

Defined in: src/interfaces/feature-flag.interface.ts:12

Variables

FEATURE_FLAG_MODULE_OPTIONS

ts
const FEATURE_FLAG_MODULE_OPTIONS: typeof FEATURE_FLAG_MODULE_OPTIONS;

Defined in: src/feature-flag.constants.ts:1


FeatureFlagEvents

ts
const FeatureFlagEvents: {
  ARCHIVED: "feature-flag.archived";
  CACHE_INVALIDATED: "feature-flag.cache.invalidated";
  CREATED: "feature-flag.created";
  EVALUATED: "feature-flag.evaluated";
  OVERRIDE_REMOVED: "feature-flag.override.removed";
  OVERRIDE_SET: "feature-flag.override.set";
  UPDATED: "feature-flag.updated";
};

Defined in: src/events/feature-flag.events.ts:3

Type Declaration

NameTypeDefault valueDefined in
ARCHIVED"feature-flag.archived"'feature-flag.archived'src/events/feature-flag.events.ts:7
CACHE_INVALIDATED"feature-flag.cache.invalidated"'feature-flag.cache.invalidated'src/events/feature-flag.events.ts:10
CREATED"feature-flag.created"'feature-flag.created'src/events/feature-flag.events.ts:5
EVALUATED"feature-flag.evaluated"'feature-flag.evaluated'src/events/feature-flag.events.ts:4
OVERRIDE_REMOVED"feature-flag.override.removed"'feature-flag.override.removed'src/events/feature-flag.events.ts:9
OVERRIDE_SET"feature-flag.override.set"'feature-flag.override.set'src/events/feature-flag.events.ts:8
UPDATED"feature-flag.updated"'feature-flag.updated'src/events/feature-flag.events.ts:6

Functions

BypassFeatureFlag()

ts
function BypassFeatureFlag(): CustomDecorator<string>;

Defined in: src/decorators/bypass-feature-flag.decorator.ts:4

Returns

CustomDecorator<string>


FeatureFlag()

ts
function FeatureFlag(flagKey, options?): ClassDecorator & MethodDecorator;

Defined in: src/decorators/feature-flag.decorator.ts:6

Parameters

ParameterType
flagKeystring
optionsFeatureFlagGuardOptions

Returns

ClassDecorator & MethodDecorator

Released under the MIT License.