index
Classes
FeatureFlagGuard
Defined in: src/guards/feature-flag.guard.ts:12
Implements
CanActivate
Constructors
Constructor
new FeatureFlagGuard(reflector, featureFlagService): FeatureFlagGuard;Defined in: src/guards/feature-flag.guard.ts:13
Parameters
| Parameter | Type |
|---|---|
reflector | Reflector |
featureFlagService | FeatureFlagService |
Returns
Methods
canActivate()
canActivate(context): Promise<boolean>;Defined in: src/guards/feature-flag.guard.ts:18
Parameters
| Parameter | Type | Description |
|---|---|---|
context | ExecutionContext | Current 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
CanActivate.canActivateFeatureFlagModule
Defined in: src/feature-flag.module.ts:44
Implements
NestModule
Constructors
Constructor
new FeatureFlagModule(): FeatureFlagModule;Returns
Methods
configure()
configure(consumer): void;Defined in: src/feature-flag.module.ts:45
Parameters
| Parameter | Type |
|---|---|
consumer | MiddlewareConsumer |
Returns
void
Implementation of
NestModule.configureforRoot()
static forRoot(options): DynamicModule;Defined in: src/feature-flag.module.ts:51
Parameters
| Parameter | Type |
|---|---|
options | FeatureFlagModuleRootOptions |
Returns
DynamicModule
forRootAsync()
static forRootAsync(options): DynamicModule;Defined in: src/feature-flag.module.ts:77
Parameters
| Parameter | Type |
|---|---|
options | FeatureFlagModuleRootAsyncOptions |
Returns
DynamicModule
FeatureFlagService
Defined in: src/services/feature-flag.service.ts:18
Constructors
Constructor
new FeatureFlagService(
options,
prisma,
cache,
evaluator,
flagContext,
moduleRef,
eventEmitter?): FeatureFlagService;Defined in: src/services/feature-flag.service.ts:19
Parameters
| Parameter | Type |
|---|---|
options | FeatureFlagModuleOptions |
prisma | any |
cache | FlagCacheService |
evaluator | FlagEvaluatorService |
flagContext | FlagContext |
moduleRef | ModuleRef |
eventEmitter? | any |
Returns
Methods
archive()
archive(key): Promise<FeatureFlagWithOverrides>;Defined in: src/services/feature-flag.service.ts:108
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<FeatureFlagWithOverrides>
create()
create(input): Promise<FeatureFlagWithOverrides>;Defined in: src/services/feature-flag.service.ts:66
Parameters
| Parameter | Type |
|---|---|
input | CreateFeatureFlagInput |
Returns
Promise<FeatureFlagWithOverrides>
evaluateAll()
evaluateAll(explicitContext?): Promise<Record<string, boolean>>;Defined in: src/services/feature-flag.service.ts:54
Parameters
| Parameter | Type |
|---|---|
explicitContext? | EvaluationContext |
Returns
Promise<Record<string, boolean>>
findAll()
findAll(): Promise<FeatureFlagWithOverrides[]>;Defined in: src/services/feature-flag.service.ts:161
Returns
Promise<FeatureFlagWithOverrides[]>
invalidateCache()
invalidateCache(): void;Defined in: src/services/feature-flag.service.ts:169
Returns
void
isEnabled()
isEnabled(flagKey, explicitContext?): Promise<boolean>;Defined in: src/services/feature-flag.service.ts:29
Parameters
| Parameter | Type |
|---|---|
flagKey | string |
explicitContext? | EvaluationContext |
Returns
Promise<boolean>
setOverride()
setOverride(key, input): Promise<void>;Defined in: src/services/feature-flag.service.ts:124
Parameters
| Parameter | Type |
|---|---|
key | string |
input | SetOverrideInput |
Returns
Promise<void>
update()
update(key, input): Promise<FeatureFlagWithOverrides>;Defined in: src/services/feature-flag.service.ts:87
Parameters
| Parameter | Type |
|---|---|
key | string |
input | UpdateFeatureFlagInput |
Returns
Promise<FeatureFlagWithOverrides>
FlagContext
Defined in: src/services/flag-context.ts:9
Constructors
Constructor
new FlagContext(): FlagContext;Returns
Methods
getUserId()
getUserId(): string | null;Defined in: src/services/flag-context.ts:16
Returns
string | null
run()
run<T>(store, callback): T;Defined in: src/services/flag-context.ts:12
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
store | FlagStore |
callback | () => T |
Returns
T
Interfaces
CreateFeatureFlagInput
Defined in: src/interfaces/feature-flag.interface.ts:1
Properties
description?
optional description?: string;Defined in: src/interfaces/feature-flag.interface.ts:3
enabled?
optional enabled?: boolean;Defined in: src/interfaces/feature-flag.interface.ts:4
key
key: string;Defined in: src/interfaces/feature-flag.interface.ts:2
metadata?
optional metadata?: Record<string, unknown>;Defined in: src/interfaces/feature-flag.interface.ts:6
percentage?
optional percentage?: number;Defined in: src/interfaces/feature-flag.interface.ts:5
EvaluationContext
Defined in: src/interfaces/evaluation-context.interface.ts:1
Properties
environment?
optional environment?: string;Defined in: src/interfaces/evaluation-context.interface.ts:9
Environment — auto-injected from module options. Can be explicitly overridden
tenantId?
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?
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?
optional fallback?: Record<string, unknown>;Defined in: src/interfaces/feature-flag.interface.ts:28
Response body when flag is OFF
statusCode?
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?
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
Pick.importsinject?
optional inject?: any[];Defined in: src/interfaces/feature-flag-options.interface.ts:28
useClass?
optional useClass?: Type<FeatureFlagModuleOptionsFactory>;Defined in: src/interfaces/feature-flag-options.interface.ts:30
useExisting?
optional useExisting?: Type<FeatureFlagModuleOptionsFactory>;Defined in: src/interfaces/feature-flag-options.interface.ts:31
useFactory?
optional useFactory?: (...args) =>
| FeatureFlagModuleOptions
| Promise<FeatureFlagModuleOptions>;Defined in: src/interfaces/feature-flag-options.interface.ts:29
Parameters
| Parameter | Type |
|---|---|
...args | any[] |
Returns
| FeatureFlagModuleOptions | Promise<FeatureFlagModuleOptions>
FeatureFlagModuleOptions
Defined in: src/interfaces/feature-flag-options.interface.ts:4
Extended by
Properties
cacheTtlMs?
optional cacheTtlMs?: number;Defined in: src/interfaces/feature-flag-options.interface.ts:9
Cache TTL in milliseconds. 0 disables caching. Default: 30000
defaultOnMissing?
optional defaultOnMissing?: boolean;Defined in: src/interfaces/feature-flag-options.interface.ts:15
Default value when evaluating a non-existent flag. Default: false
emitEvents?
optional emitEvents?: boolean;Defined in: src/interfaces/feature-flag-options.interface.ts:18
Emit evaluation events via @nestjs/event-emitter. Default: false
environment
environment: string;Defined in: src/interfaces/feature-flag-options.interface.ts:6
Current environment (e.g., 'development', 'staging', 'production')
userIdExtractor?
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
| Parameter | Type |
|---|---|
req | Request |
Returns
string | null
FeatureFlagModuleOptionsFactory
Defined in: src/interfaces/feature-flag-options.interface.ts:21
Methods
createFeatureFlagOptions()
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?
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?
optional inject?: any[];Defined in: src/interfaces/feature-flag-options.interface.ts:28
Inherited from
FeatureFlagModuleAsyncOptions.inject
useClass?
optional useClass?: Type<FeatureFlagModuleOptionsFactory>;Defined in: src/interfaces/feature-flag-options.interface.ts:30
Inherited from
FeatureFlagModuleAsyncOptions.useClass
useExisting?
optional useExisting?: Type<FeatureFlagModuleOptionsFactory>;Defined in: src/interfaces/feature-flag-options.interface.ts:31
Inherited from
FeatureFlagModuleAsyncOptions.useExisting
useFactory?
optional useFactory?: (...args) =>
| FeatureFlagModuleRootOptions
| Promise<FeatureFlagModuleRootOptions>;Defined in: src/feature-flag.module.ts:28
Parameters
| Parameter | Type |
|---|---|
...args | any[] |
Returns
| FeatureFlagModuleRootOptions | Promise<FeatureFlagModuleRootOptions>
Overrides
FeatureFlagModuleAsyncOptions.useFactory
FeatureFlagModuleRootOptions
Defined in: src/feature-flag.module.ts:23
Extends
Properties
cacheTtlMs?
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?
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?
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
environment: string;Defined in: src/interfaces/feature-flag-options.interface.ts:6
Current environment (e.g., 'development', 'staging', 'production')
Inherited from
FeatureFlagModuleOptions.environment
prisma
prisma: any;Defined in: src/feature-flag.module.ts:24
userIdExtractor?
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
| Parameter | Type |
|---|---|
req | Request |
Returns
string | null
Inherited from
FeatureFlagModuleOptions.userIdExtractor
FeatureFlagWithOverrides
Defined in: src/interfaces/feature-flag.interface.ts:31
Properties
archivedAt
archivedAt: Date | null;Defined in: src/interfaces/feature-flag.interface.ts:38
createdAt
createdAt: Date;Defined in: src/interfaces/feature-flag.interface.ts:39
description
description: string | null;Defined in: src/interfaces/feature-flag.interface.ts:34
enabled
enabled: boolean;Defined in: src/interfaces/feature-flag.interface.ts:35
id
id: string;Defined in: src/interfaces/feature-flag.interface.ts:32
key
key: string;Defined in: src/interfaces/feature-flag.interface.ts:33
metadata
metadata: Record<string, unknown>;Defined in: src/interfaces/feature-flag.interface.ts:37
overrides
overrides: FlagOverride[];Defined in: src/interfaces/feature-flag.interface.ts:41
percentage
percentage: number;Defined in: src/interfaces/feature-flag.interface.ts:36
updatedAt
updatedAt: Date;Defined in: src/interfaces/feature-flag.interface.ts:40
FlagEvaluatedEvent
Defined in: src/events/feature-flag.events.ts:13
Properties
context
context: EvaluationContext;Defined in: src/events/feature-flag.events.ts:16
evaluationTimeMs
evaluationTimeMs: number;Defined in: src/events/feature-flag.events.ts:18
flagKey
flagKey: string;Defined in: src/events/feature-flag.events.ts:14
result
result: boolean;Defined in: src/events/feature-flag.events.ts:15
source
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
action: "created" | "updated" | "archived";Defined in: src/events/feature-flag.events.ts:23
flagKey
flagKey: string;Defined in: src/events/feature-flag.events.ts:22
FlagOverride
Defined in: src/interfaces/feature-flag.interface.ts:44
Properties
enabled
enabled: boolean;Defined in: src/interfaces/feature-flag.interface.ts:50
environment
environment: string | null;Defined in: src/interfaces/feature-flag.interface.ts:49
flagId
flagId: string;Defined in: src/interfaces/feature-flag.interface.ts:46
id
id: string;Defined in: src/interfaces/feature-flag.interface.ts:45
tenantId
tenantId: string | null;Defined in: src/interfaces/feature-flag.interface.ts:47
userId
userId: string | null;Defined in: src/interfaces/feature-flag.interface.ts:48
FlagOverrideEvent
Defined in: src/events/feature-flag.events.ts:26
Properties
action
action: "set" | "removed";Defined in: src/events/feature-flag.events.ts:32
enabled
enabled: boolean;Defined in: src/events/feature-flag.events.ts:31
environment?
optional environment?: string | null;Defined in: src/events/feature-flag.events.ts:30
flagKey
flagKey: string;Defined in: src/events/feature-flag.events.ts:27
tenantId?
optional tenantId?: string | null;Defined in: src/events/feature-flag.events.ts:28
userId?
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
enabled: boolean;Defined in: src/interfaces/feature-flag.interface.ts:20
environment?
optional environment?: string;Defined in: src/interfaces/feature-flag.interface.ts:19
tenantId?
optional tenantId?: string;Defined in: src/interfaces/feature-flag.interface.ts:17
userId?
optional userId?: string;Defined in: src/interfaces/feature-flag.interface.ts:18
UpdateFeatureFlagInput
Defined in: src/interfaces/feature-flag.interface.ts:9
Properties
description?
optional description?: string;Defined in: src/interfaces/feature-flag.interface.ts:10
enabled?
optional enabled?: boolean;Defined in: src/interfaces/feature-flag.interface.ts:11
metadata?
optional metadata?: Record<string, unknown>;Defined in: src/interfaces/feature-flag.interface.ts:13
percentage?
optional percentage?: number;Defined in: src/interfaces/feature-flag.interface.ts:12
Variables
FEATURE_FLAG_MODULE_OPTIONS
const FEATURE_FLAG_MODULE_OPTIONS: typeof FEATURE_FLAG_MODULE_OPTIONS;Defined in: src/feature-flag.constants.ts:1
FeatureFlagEvents
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
| Name | Type | Default value | Defined 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()
function BypassFeatureFlag(): CustomDecorator<string>;Defined in: src/decorators/bypass-feature-flag.decorator.ts:4
Returns
CustomDecorator<string>
FeatureFlag()
function FeatureFlag(flagKey, options?): ClassDecorator & MethodDecorator;Defined in: src/decorators/feature-flag.decorator.ts:6
Parameters
| Parameter | Type |
|---|---|
flagKey | string |
options | FeatureFlagGuardOptions |
Returns
ClassDecorator & MethodDecorator