Skip to content

@nestarc/feature-flag

Classes

FeatureFlagAdminModule

Defined in: src/admin/feature-flag-admin.module.ts:6

Constructors

Constructor
ts
new FeatureFlagAdminModule(): FeatureFlagAdminModule;
Returns

FeatureFlagAdminModule

Methods

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

Defined in: src/admin/feature-flag-admin.module.ts:7

Parameters
ParameterType
optionsFeatureFlagAdminOptions
Returns

DynamicModule


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:54

Implements

  • NestModule

Constructors

Constructor
ts
new FeatureFlagModule(): FeatureFlagModule;
Returns

FeatureFlagModule

Methods

configure()
ts
configure(consumer): void;

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

Parameters
ParameterType
consumerMiddlewareConsumer
Returns

void

Implementation of
ts
NestModule.configure

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

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

Parameters
ParameterType
optionsFeatureFlagModuleRootOptions
Returns

DynamicModule

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

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

Parameters
ParameterType
optionsFeatureFlagModuleRootAsyncOptions
Returns

DynamicModule


FeatureFlagService

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

Constructors

Constructor
ts
new FeatureFlagService(
   options,
   repository,
   cacheAdapter,
   evaluator,
   contextResolver,
   eventPublisher): FeatureFlagService;

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

Parameters
ParameterType
optionsFeatureFlagModuleOptions
repositoryFeatureFlagRepository
cacheAdapterCacheAdapter
evaluatorFlagEvaluatorService
contextResolverFlagContextResolver
eventPublisherFlagEventPublisher
Returns

FeatureFlagService

Methods

archive()
ts
archive(key, metadata?): Promise<FeatureFlagWithOverrides>;

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

Parameters
ParameterType
keystring
metadataFlagMutationMetadata
Returns

Promise<FeatureFlagWithOverrides>

create()
ts
create(input, metadata?): Promise<FeatureFlagWithOverrides>;

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

Parameters
ParameterType
inputCreateFeatureFlagInput
metadataFlagMutationMetadata
Returns

Promise<FeatureFlagWithOverrides>

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

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

Parameters
ParameterType
explicitContext?EvaluationContext
Returns

Promise<Record<string, boolean>>

evaluateBoolean()
ts
evaluateBoolean(
   flagKey,
   explicitContext?,
evaluationOptions?): Promise<BooleanEvaluationDetails>;

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

Parameters
ParameterType
flagKeystring
explicitContext?EvaluationContext
evaluationOptions?EvaluateBooleanOptions
Returns

Promise<BooleanEvaluationDetails>

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

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

Returns

Promise<FeatureFlagWithOverrides[]>

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

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

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides>

invalidateCache()
ts
invalidateCache(): Promise<void>;

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

Returns

Promise<void>

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

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

Parameters
ParameterType
flagKeystring
explicitContext?EvaluationContext
evaluationOptions?EvaluateBooleanOptions
Returns

Promise<boolean>

removeOverride()
ts
removeOverride(
   key,
   input,
metadata?): Promise<void>;

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

Parameters
ParameterType
keystring
inputRemoveOverrideInput
metadataFlagMutationMetadata
Returns

Promise<void>

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

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

Parameters
ParameterType
keystring
inputSetOverrideInput
metadataFlagMutationMetadata
Returns

Promise<void>

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

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

Parameters
ParameterType
keystring
inputUpdateFeatureFlagInput
metadataFlagMutationMetadata
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


MemoryCacheAdapter

Defined in: src/cache/memory-cache.adapter.ts:11

Implements

Constructors

Constructor
ts
new MemoryCacheAdapter(): MemoryCacheAdapter;
Returns

MemoryCacheAdapter

Methods

get()
ts
get(key): Promise<FeatureFlagWithOverrides | null>;

Defined in: src/cache/memory-cache.adapter.ts:15

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides | null>

Implementation of

CacheAdapter.get

getAll()
ts
getAll(): Promise<FeatureFlagWithOverrides[] | null>;

Defined in: src/cache/memory-cache.adapter.ts:30

Returns

Promise<FeatureFlagWithOverrides[] | null>

Implementation of

CacheAdapter.getAll

invalidate()
ts
invalidate(key?): Promise<void>;

Defined in: src/cache/memory-cache.adapter.ts:44

Parameters
ParameterType
key?string
Returns

Promise<void>

Implementation of

CacheAdapter.invalidate

set()
ts
set(
   key,
   data,
ttlMs): Promise<void>;

Defined in: src/cache/memory-cache.adapter.ts:25

Parameters
ParameterType
keystring
dataFeatureFlagWithOverrides
ttlMsnumber
Returns

Promise<void>

Implementation of

CacheAdapter.set

setAll()
ts
setAll(data, ttlMs): Promise<void>;

Defined in: src/cache/memory-cache.adapter.ts:39

Parameters
ParameterType
dataFeatureFlagWithOverrides[]
ttlMsnumber
Returns

Promise<void>

Implementation of

CacheAdapter.setAll


PrismaFeatureFlagRepository

Defined in: src/repositories/prisma-feature-flag.repository.ts:28

Implements

Constructors

Constructor
ts
new PrismaFeatureFlagRepository(prisma): PrismaFeatureFlagRepository;

Defined in: src/repositories/prisma-feature-flag.repository.ts:29

Parameters
ParameterType
prismaany
Returns

PrismaFeatureFlagRepository

Methods

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

Defined in: src/repositories/prisma-feature-flag.repository.ts:80

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides>

Implementation of

FeatureFlagRepository.archiveFlag

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

Defined in: src/repositories/prisma-feature-flag.repository.ts:31

Parameters
ParameterType
inputCreateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>

Implementation of

FeatureFlagRepository.createFlag

createOverride()
ts
createOverride(
   flagId,
   criteria,
   enabled,
priority): Promise<void>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:125

Parameters
ParameterType
flagIdstring
criteriaOverrideCriteria
enabledboolean
prioritynumber
Returns

Promise<void>

Implementation of

FeatureFlagRepository.createOverride

deleteOverride()
ts
deleteOverride(id): Promise<void>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:162

Parameters
ParameterType
idstring
Returns

Promise<void>

Implementation of

FeatureFlagRepository.deleteOverride

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

Defined in: src/repositories/prisma-feature-flag.repository.ts:107

Returns

Promise<FeatureFlagWithOverrides[]>

Implementation of

FeatureFlagRepository.findAllActiveFlags

findFlagByKey()
ts
findFlagByKey(key): Promise<FeatureFlagWithOverrides | null>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:95

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides | null>

Implementation of

FeatureFlagRepository.findFlagByKey

findFlagIdByKey()
ts
findFlagIdByKey(key): Promise<string | null>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:102

Parameters
ParameterType
keystring
Returns

Promise<string | null>

Implementation of

FeatureFlagRepository.findFlagIdByKey

findOverride()
ts
findOverride(flagId, criteria): Promise<
  | {
  id: string;
}
| null>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:115

Parameters
ParameterType
flagIdstring
criteriaOverrideCriteria
Returns

Promise< | { id: string; } | null>

Implementation of

FeatureFlagRepository.findOverride

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

Defined in: src/repositories/prisma-feature-flag.repository.ts:56

Parameters
ParameterType
keystring
inputUpdateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>

Implementation of

FeatureFlagRepository.updateFlag

updateOverride()
ts
updateOverride(id, input): Promise<void>;

Defined in: src/repositories/prisma-feature-flag.repository.ts:152

Parameters
ParameterType
idstring
inputUpdateOverrideInput
Returns

Promise<void>

Implementation of

FeatureFlagRepository.updateOverride


RedisCacheAdapter

Defined in: src/cache/redis-cache.adapter.ts:14

Implements

Constructors

Constructor
ts
new RedisCacheAdapter(options): RedisCacheAdapter;

Defined in: src/cache/redis-cache.adapter.ts:21

Parameters
ParameterType
optionsRedisCacheAdapterOptions
Returns

RedisCacheAdapter

Methods

get()
ts
get(key): Promise<FeatureFlagWithOverrides | null>;

Defined in: src/cache/redis-cache.adapter.ts:50

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides | null>

Implementation of

CacheAdapter.get

getAll()
ts
getAll(): Promise<FeatureFlagWithOverrides[] | null>;

Defined in: src/cache/redis-cache.adapter.ts:61

Returns

Promise<FeatureFlagWithOverrides[] | null>

Implementation of

CacheAdapter.getAll

invalidate()
ts
invalidate(key?): Promise<void>;

Defined in: src/cache/redis-cache.adapter.ts:72

Parameters
ParameterType
key?string
Returns

Promise<void>

Implementation of

CacheAdapter.invalidate

onModuleDestroy()
ts
onModuleDestroy(): Promise<void>;

Defined in: src/cache/redis-cache.adapter.ts:83

Returns

Promise<void>

Implementation of

CacheAdapter.onModuleDestroy

set()
ts
set(
   key,
   data,
ttlMs): Promise<void>;

Defined in: src/cache/redis-cache.adapter.ts:56

Parameters
ParameterType
keystring
dataFeatureFlagWithOverrides
ttlMsnumber
Returns

Promise<void>

Implementation of

CacheAdapter.set

setAll()
ts
setAll(data, ttlMs): Promise<void>;

Defined in: src/cache/redis-cache.adapter.ts:67

Parameters
ParameterType
dataFeatureFlagWithOverrides[]
ttlMsnumber
Returns

Promise<void>

Implementation of

CacheAdapter.setAll

Interfaces

BooleanEvaluationDetails

Defined in: src/interfaces/evaluation-details.interface.ts:31

Properties

bucket?
ts
optional bucket?: number;

Defined in: src/interfaces/evaluation-details.interface.ts:42

defaultUsed
ts
defaultUsed: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:38

errorCode?
ts
optional errorCode?: string;

Defined in: src/interfaces/evaluation-details.interface.ts:39

errorMessage?
ts
optional errorMessage?: string;

Defined in: src/interfaces/evaluation-details.interface.ts:40

evaluationTimeMs?
ts
optional evaluationTimeMs?: number;

Defined in: src/interfaces/evaluation-details.interface.ts:44

flagKey
ts
flagKey: string;

Defined in: src/interfaces/evaluation-details.interface.ts:32

matchedOverrideId?
ts
optional matchedOverrideId?: string;

Defined in: src/interfaces/evaluation-details.interface.ts:41

reason
ts
reason: EvaluationReason;

Defined in: src/interfaces/evaluation-details.interface.ts:37

result
ts
result: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:35

Backward-compatible alias for value.

source
ts
source: EvaluationSource;

Defined in: src/interfaces/evaluation-details.interface.ts:36

targetingKey?
ts
optional targetingKey?: string;

Defined in: src/interfaces/evaluation-details.interface.ts:43

value
ts
value: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:33


CacheAdapter

Defined in: src/interfaces/cache-adapter.interface.ts:3

Methods

get()
ts
get(key): Promise<FeatureFlagWithOverrides | null>;

Defined in: src/interfaces/cache-adapter.interface.ts:4

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides | null>

getAll()
ts
getAll(): Promise<FeatureFlagWithOverrides[] | null>;

Defined in: src/interfaces/cache-adapter.interface.ts:6

Returns

Promise<FeatureFlagWithOverrides[] | null>

invalidate()
ts
invalidate(key?): Promise<void>;

Defined in: src/interfaces/cache-adapter.interface.ts:8

Parameters
ParameterType
key?string
Returns

Promise<void>

onModuleDestroy()?
ts
optional onModuleDestroy(): Promise<void>;

Defined in: src/interfaces/cache-adapter.interface.ts:9

Returns

Promise<void>

set()
ts
set(
   key,
   data,
ttlMs): Promise<void>;

Defined in: src/interfaces/cache-adapter.interface.ts:5

Parameters
ParameterType
keystring
dataFeatureFlagWithOverrides
ttlMsnumber
Returns

Promise<void>

setAll()
ts
setAll(data, ttlMs): Promise<void>;

Defined in: src/interfaces/cache-adapter.interface.ts:7

Parameters
ParameterType
dataFeatureFlagWithOverrides[]
ttlMsnumber
Returns

Promise<void>


CreateFeatureFlagInput

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

Properties

description?
ts
optional description?: string;

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

enabled?
ts
optional enabled?: boolean;

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

key
ts
key: string;

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

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

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

percentage?
ts
optional percentage?: number;

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


EvaluateBooleanOptions

Defined in: src/interfaces/evaluation-details.interface.ts:20

Properties

defaultValue?
ts
optional defaultValue?: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:22

Invocation-level default used when the flag is missing or evaluation fails.

includeContextInEvent?
ts
optional includeContextInEvent?: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:28

Include the full resolved context in evaluation/exposure events.

trackExposure?
ts
optional trackExposure?: boolean;

Defined in: src/interfaces/evaluation-details.interface.ts:25

Emit an exposure event for this evaluation.


EvaluationContext

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

Properties

attributes?
ts
optional attributes?: TargetingAttributes;

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

Additional exact-match targeting attributes

environment?
ts
optional environment?: string;

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

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

targetingKey?
ts
optional targetingKey?: string | null;

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

Explicit stable key for percentage rollout bucketing

tenantId?
ts
optional tenantId?: string | null;

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

Tenant ID - used for tenant-scoped targeting. Ignored if tenancy is not installed

userId?
ts
optional userId?: string | null;

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

User ID - used for user-scoped targeting and percentage hash


FeatureFlagAdminOptions

Defined in: src/admin/admin-options.interface.ts:3

Properties

guard
ts
guard: Type<CanActivate>;

Defined in: src/admin/admin-options.interface.ts:4

path?
ts
optional path?: string;

Defined in: src/admin/admin-options.interface.ts:5


FeatureFlagGuardOptions

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

Properties

defaultValue?
ts
optional defaultValue?: boolean;

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

Invocation-level default when the guard cannot find or evaluate the flag. Default: false

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

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

Response body when flag is OFF

statusCode?
ts
optional statusCode?: number;

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

HTTP status code when flag is OFF. Default: 403


FeatureFlagLifecycleMetadata

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

Extended by

Properties

expiresAt?
ts
optional expiresAt?: string | Date;

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

owner?
ts
optional owner?: string;

Defined in: src/interfaces/flag-registry.interface.ts:7

staleAt?
ts
optional staleAt?: string | Date;

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

tags?
ts
optional tags?: readonly string[];

Defined in: src/interfaces/flag-registry.interface.ts:8

type?
ts
optional type?: FeatureFlagType;

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


FeatureFlagModuleAsyncOptions

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

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:36

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

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

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

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

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

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

Parameters
ParameterType
...argsany[]
Returns

| FeatureFlagModuleOptions | Promise<FeatureFlagModuleOptions>


FeatureFlagModuleOptions

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

Extended by

Properties

cacheAdapter?
ts
optional cacheAdapter?: CacheAdapter;

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

Custom cache adapter implementation. If not provided, an in-memory cache is used.

cacheTtlMs?
ts
optional cacheTtlMs?: number;

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

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

defaultOnMissing?
ts
optional defaultOnMissing?: boolean;

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

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

emitEvents?
ts
optional emitEvents?: boolean;

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

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

environment
ts
environment: string;

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

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

flags?
ts
optional flags?: FlagRegistry;

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

Optional type-safe flag registry used for defaults and evaluation metadata.

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

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

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:29

Methods

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

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

Returns

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


FeatureFlagModuleRootAsyncOptions

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

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:36

Inherited from

FeatureFlagModuleAsyncOptions.inject

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

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

Inherited from

FeatureFlagModuleAsyncOptions.useClass

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

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

Inherited from

FeatureFlagModuleAsyncOptions.useExisting

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

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

Parameters
ParameterType
...argsany[]
Returns

| FeatureFlagModuleRootOptions | Promise<FeatureFlagModuleRootOptions>

Overrides

FeatureFlagModuleAsyncOptions.useFactory


FeatureFlagModuleRootOptions

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

Extends

Properties

cacheAdapter?
ts
optional cacheAdapter?: CacheAdapter;

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

Custom cache adapter implementation. If not provided, an in-memory cache is used.

Inherited from

FeatureFlagModuleOptions.cacheAdapter

cacheTtlMs?
ts
optional cacheTtlMs?: number;

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

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:17

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:20

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:8

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

Inherited from

FeatureFlagModuleOptions.environment

flags?
ts
optional flags?: FlagRegistry;

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

Optional type-safe flag registry used for defaults and evaluation metadata.

Inherited from

FeatureFlagModuleOptions.flags

prisma
ts
prisma: any;

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

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

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

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

Parameters
ParameterType
reqRequest
Returns

string | null

Inherited from

FeatureFlagModuleOptions.userIdExtractor


FeatureFlagRepository

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

Methods

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

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

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides>

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

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

Parameters
ParameterType
inputCreateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>

createOverride()
ts
createOverride(
   flagId,
   criteria,
   enabled,
priority): Promise<void>;

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

Parameters
ParameterType
flagIdstring
criteriaOverrideCriteria
enabledboolean
prioritynumber
Returns

Promise<void>

deleteOverride()
ts
deleteOverride(id): Promise<void>;

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

Parameters
ParameterType
idstring
Returns

Promise<void>

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

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

Returns

Promise<FeatureFlagWithOverrides[]>

findFlagByKey()
ts
findFlagByKey(key): Promise<FeatureFlagWithOverrides | null>;

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

Parameters
ParameterType
keystring
Returns

Promise<FeatureFlagWithOverrides | null>

findFlagIdByKey()
ts
findFlagIdByKey(key): Promise<string | null>;

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

Parameters
ParameterType
keystring
Returns

Promise<string | null>

findOverride()
ts
findOverride(flagId, criteria): Promise<
  | {
  id: string;
}
| null>;

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

Parameters
ParameterType
flagIdstring
criteriaOverrideCriteria
Returns

Promise< | { id: string; } | null>

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

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

Parameters
ParameterType
keystring
inputUpdateFeatureFlagInput
Returns

Promise<FeatureFlagWithOverrides>

updateOverride()
ts
updateOverride(id, input): Promise<void>;

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

Parameters
ParameterType
idstring
inputUpdateOverrideInput
Returns

Promise<void>


FeatureFlagWithOverrides

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

Properties

archivedAt
ts
archivedAt: Date | null;

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

createdAt
ts
createdAt: Date;

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

description
ts
description: string | null;

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

enabled
ts
enabled: boolean;

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

id
ts
id: string;

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

key
ts
key: string;

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

metadata
ts
metadata: Record<string, unknown>;

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

overrides
ts
overrides: FlagOverride[];

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

percentage
ts
percentage: number;

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

updatedAt
ts
updatedAt: Date;

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


FlagDefinition

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

Extends

Properties

bucketBy?
ts
optional bucketBy?: BucketBy;

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

defaultValue
ts
defaultValue: boolean;

Defined in: src/interfaces/flag-registry.interface.ts:14

description?
ts
optional description?: string;

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

expiresAt?
ts
optional expiresAt?: string | Date;

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

Inherited from

FeatureFlagLifecycleMetadata.expiresAt

owner?
ts
optional owner?: string;

Defined in: src/interfaces/flag-registry.interface.ts:7

Inherited from

FeatureFlagLifecycleMetadata.owner

staleAt?
ts
optional staleAt?: string | Date;

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

Inherited from

FeatureFlagLifecycleMetadata.staleAt

tags?
ts
optional tags?: readonly string[];

Defined in: src/interfaces/flag-registry.interface.ts:8

Inherited from

FeatureFlagLifecycleMetadata.tags

trackExposure?
ts
optional trackExposure?: boolean;

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

type?
ts
optional type?: FeatureFlagType;

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

Inherited from

FeatureFlagLifecycleMetadata.type


FlagEvaluatedEvent

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

Properties

bucket?
ts
optional bucket?: number;

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

context?
ts
optional context?: EvaluationContext;

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

defaultUsed?
ts
optional defaultUsed?: boolean;

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

errorCode?
ts
optional errorCode?: string;

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

errorMessage?
ts
optional errorMessage?: string;

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

evaluationTimeMs
ts
evaluationTimeMs: number;

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

flagKey
ts
flagKey: string;

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

matchedOverrideId?
ts
optional matchedOverrideId?: string;

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

reason?
ts
optional reason?: EvaluationReason;

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

result
ts
result: boolean;

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

source
ts
source: EvaluationSource;

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

targetingKey?
ts
optional targetingKey?: string;

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

value?
ts
optional value?: boolean;

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


FlagEvaluatorOptions

Defined in: src/interfaces/evaluation-details.interface.ts:47

Properties

bucketBy?
ts
optional bucketBy?: BucketBy;

Defined in: src/interfaces/evaluation-details.interface.ts:48


FlagExposedEvent

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

Properties

bucket?
ts
optional bucket?: number;

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

context?
ts
optional context?: EvaluationContext;

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

defaultUsed
ts
defaultUsed: boolean;

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

evaluationTimeMs?
ts
optional evaluationTimeMs?: number;

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

flagKey
ts
flagKey: string;

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

matchedOverrideId?
ts
optional matchedOverrideId?: string;

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

reason
ts
reason: EvaluationReason;

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

result
ts
result: boolean;

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

source
ts
source: EvaluationSource;

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

targetingKey?
ts
optional targetingKey?: string;

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

value
ts
value: boolean;

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


FlagLifecycleStatus

Defined in: src/flag-registry.ts:40

Extends

Properties

expiresAt?
ts
optional expiresAt?: Date;

Defined in: src/flag-registry.ts:44

Overrides

FeatureFlagLifecycleMetadata.expiresAt

owner?
ts
optional owner?: string;

Defined in: src/interfaces/flag-registry.interface.ts:7

Inherited from

FeatureFlagLifecycleMetadata.owner

staleAt?
ts
optional staleAt?: Date;

Defined in: src/flag-registry.ts:43

Overrides

FeatureFlagLifecycleMetadata.staleAt

status
ts
status: FlagLifecycleStatusName;

Defined in: src/flag-registry.ts:41

tags
ts
tags: string[];

Defined in: src/flag-registry.ts:42

Overrides

FeatureFlagLifecycleMetadata.tags

type?
ts
optional type?: FeatureFlagType;

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

Inherited from

FeatureFlagLifecycleMetadata.type


FlagMutationEvent

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

Properties

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

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

actorId?
ts
optional actorId?: string;

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

actorType?
ts
optional actorType?: string;

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

correlationId?
ts
optional correlationId?: string;

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

flagKey
ts
flagKey: string;

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

reason?
ts
optional reason?: string;

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

requestId?
ts
optional requestId?: string;

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


FlagMutationMetadata

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

Properties

actorId?
ts
optional actorId?: string;

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

actorType?
ts
optional actorType?: string;

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

correlationId?
ts
optional correlationId?: string;

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

reason?
ts
optional reason?: string;

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

requestId?
ts
optional requestId?: string;

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


FlagOverride

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

Properties

attributes
ts
attributes: TargetingAttributes;

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

createdAt
ts
createdAt: Date;

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

enabled
ts
enabled: boolean;

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

flagId
ts
flagId: string;

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

id
ts
id: string;

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

priority
ts
priority: number;

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

updatedAt
ts
updatedAt: Date;

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


FlagOverrideEvent

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

Properties

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

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

actorId?
ts
optional actorId?: string;

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

actorType?
ts
optional actorType?: string;

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

attributes
ts
attributes: Record<string, string | number | boolean | null>;

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

correlationId?
ts
optional correlationId?: string;

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

enabled?
ts
optional enabled?: boolean;

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

flagKey
ts
flagKey: string;

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

priority?
ts
optional priority?: number;

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

reason?
ts
optional reason?: string;

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

requestId?
ts
optional requestId?: string;

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


OverrideCriteria

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

Properties

attributes
ts
attributes: TargetingAttributes;

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


RedisCacheAdapterOptions

Defined in: src/cache/redis-cache.adapter.ts:6

Properties

channel?
ts
optional channel?: string;

Defined in: src/cache/redis-cache.adapter.ts:10

client
ts
client: Redis;

Defined in: src/cache/redis-cache.adapter.ts:7

keyPrefix?
ts
optional keyPrefix?: string;

Defined in: src/cache/redis-cache.adapter.ts:9

subscriber?
ts
optional subscriber?: Redis;

Defined in: src/cache/redis-cache.adapter.ts:8


RemoveOverrideInput

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

Properties

attributes
ts
attributes: TargetingAttributes;

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


SetOverrideInput

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

Properties

attributes
ts
attributes: TargetingAttributes;

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

enabled
ts
enabled: boolean;

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

priority?
ts
optional priority?: number;

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


TenantContextProvider

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

Methods

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

Defined in: src/interfaces/tenant-context-provider.interface.ts:2

Returns

string | null


TypedFeatureFlagClient

Defined in: src/flag-registry.ts:15

Type Parameters

Type Parameter
TFlags extends FlagRegistry

Properties

registry
ts
registry: TFlags;

Defined in: src/flag-registry.ts:28

Methods

evaluateBoolean()
ts
evaluateBoolean<K>(
   flagKey,
   context?,
options?): Promise<BooleanEvaluationDetails>;

Defined in: src/flag-registry.ts:22

Type Parameters
Type Parameter
K extends string
Parameters
ParameterType
flagKeyK
context?EvaluationContext
options?EvaluateBooleanOptions
Returns

Promise<BooleanEvaluationDetails>

isEnabled()
ts
isEnabled<K>(
   flagKey,
   context?,
options?): Promise<boolean>;

Defined in: src/flag-registry.ts:16

Type Parameters
Type Parameter
K extends string
Parameters
ParameterType
flagKeyK
context?EvaluationContext
options?EvaluateBooleanOptions
Returns

Promise<boolean>


TypedFeatureFlagDecorators

Defined in: src/flag-registry.ts:31

Type Parameters

Type Parameter
TFlags extends FlagRegistry

Methods

FeatureFlag()
ts
FeatureFlag<K>(flagKey, options?): ClassDecorator & MethodDecorator;

Defined in: src/flag-registry.ts:32

Type Parameters
Type Parameter
K extends string
Parameters
ParameterType
flagKeyK
options?FeatureFlagGuardOptions
Returns

ClassDecorator & MethodDecorator


UpdateFeatureFlagInput

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

Properties

description?
ts
optional description?: string;

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

enabled?
ts
optional enabled?: boolean;

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

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

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

percentage?
ts
optional percentage?: number;

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


UpdateOverrideInput

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

Properties

enabled
ts
enabled: boolean;

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

priority
ts
priority: number;

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

Type Aliases

BucketBy

ts
type BucketBy =
  | "userId"
  | "tenantId"
  | "environment"
  | "targetingKey"
  | string & {
};

Defined in: src/interfaces/evaluation-details.interface.ts:13


EvaluationReason

ts
type EvaluationReason =
  | "ARCHIVED"
  | "OVERRIDE_MATCH"
  | "PERCENTAGE_MATCH"
  | "PERCENTAGE_MISS"
  | "PERCENTAGE_NO_TARGETING_KEY"
  | "GLOBAL"
  | "FLAG_NOT_FOUND"
  | "ERROR";

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


EvaluationSource

ts
type EvaluationSource = "override" | "percentage" | "global" | "default";

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


FeatureFlagType

ts
type FeatureFlagType = "release" | "experiment" | "ops" | "permission";

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


FlagKey

ts
type FlagKey<TFlags> = Extract<keyof TFlags, string>;

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

Type Parameters

Type Parameter
TFlags extends FlagRegistry

FlagLifecycleStatusName

ts
type FlagLifecycleStatusName = "active" | "stale" | "expired";

Defined in: src/flag-registry.ts:38


FlagRegistry

ts
type FlagRegistry = Record<string, FlagDefinition>;

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


TargetingAttributes

ts
type TargetingAttributes = Record<string, TargetingAttributeValue>;

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


TargetingAttributeValue

ts
type TargetingAttributeValue = string | number | boolean | null;

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

Variables

CACHE_ADAPTER

ts
const CACHE_ADAPTER: typeof CACHE_ADAPTER;

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


FEATURE_FLAG_MODULE_OPTIONS

ts
const FEATURE_FLAG_MODULE_OPTIONS: typeof FEATURE_FLAG_MODULE_OPTIONS;

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


FEATURE_FLAG_REPOSITORY

ts
const FEATURE_FLAG_REPOSITORY: typeof FEATURE_FLAG_REPOSITORY;

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


FeatureFlagEvents

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

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

Type Declaration

NameTypeDefault valueDefined in
ARCHIVED"feature-flag.archived"'feature-flag.archived'src/events/feature-flag.events.ts:12
CACHE_INVALIDATED"feature-flag.cache.invalidated"'feature-flag.cache.invalidated'src/events/feature-flag.events.ts:15
CREATED"feature-flag.created"'feature-flag.created'src/events/feature-flag.events.ts:10
EVALUATED"feature-flag.evaluated"'feature-flag.evaluated'src/events/feature-flag.events.ts:8
EXPOSED"feature-flag.exposed"'feature-flag.exposed'src/events/feature-flag.events.ts:9
OVERRIDE_REMOVED"feature-flag.override.removed"'feature-flag.override.removed'src/events/feature-flag.events.ts:14
OVERRIDE_SET"feature-flag.override.set"'feature-flag.override.set'src/events/feature-flag.events.ts:13
UPDATED"feature-flag.updated"'feature-flag.updated'src/events/feature-flag.events.ts:11

TENANT_CONTEXT_PROVIDER

ts
const TENANT_CONTEXT_PROVIDER: typeof TENANT_CONTEXT_PROVIDER;

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

Functions

BypassFeatureFlag()

ts
function BypassFeatureFlag(): CustomDecorator<string>;

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

Returns

CustomDecorator<string>


createFeatureFlagClient()

ts
function createFeatureFlagClient<TFlags>(service, registry): TypedFeatureFlagClient<TFlags>;

Defined in: src/flag-registry.ts:51

Type Parameters

Type Parameter
TFlags extends FlagRegistry

Parameters

ParameterType
serviceFeatureFlagService
registryTFlags

Returns

TypedFeatureFlagClient<TFlags>


createFeatureFlagDecorators()

ts
function createFeatureFlagDecorators<TFlags>(registry): TypedFeatureFlagDecorators<TFlags>;

Defined in: src/flag-registry.ts:68

Type Parameters

Type Parameter
TFlags extends FlagRegistry

Parameters

ParameterType
registryTFlags

Returns

TypedFeatureFlagDecorators<TFlags>


defineFlags()

ts
function defineFlags<TFlags>(flags): TFlags;

Defined in: src/flag-registry.ts:47

Type Parameters

Type Parameter
TFlags extends FlagRegistry

Parameters

ParameterType
flagsTFlags

Returns

TFlags


FeatureFlag()

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

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

Parameters

ParameterType
flagKeystring
optionsFeatureFlagGuardOptions

Returns

ClassDecorator & MethodDecorator


getFlagLifecycleStatus()

ts
function getFlagLifecycleStatus(metadata, now?): FlagLifecycleStatus;

Defined in: src/flag-registry.ts:80

Parameters

ParameterType
metadataFeatureFlagLifecycleMetadata
nowDate

Returns

FlagLifecycleStatus

Released under the MIT License.