platform-feature-flags
Provider-agnostic feature flag infrastructure for NestJS with support for Azure App Configuration and Vercel Edge Config.
Package: @breadstone/archipel-platform-feature-flags
npm install @breadstone/archipel-platform-feature-flagsProvider Subpaths
Import only the providers you need:
| Provider | Subpath | SDK |
|---|---|---|
| Azure App Configuration | @breadstone/archipel-platform-feature-flags/azure | @azure/app-configuration-provider + @microsoft/feature-management |
| Vercel Edge Config | @breadstone/archipel-platform-feature-flags/vercel | @vercel/edge-config |
Quick Start
typescript
import { Module } from '@nestjs/common';
import { FeatureFlagsModule } from '@breadstone/archipel-platform-feature-flags';
import { AzureFeatureFlagsClient, AZURE_FEATURE_FLAGS_CONFIG_ENTRIES } from '@breadstone/archipel-platform-feature-flags/azure';
@Module({
imports: [
FeatureFlagsModule.register({
client: AzureFeatureFlagsClient,
configEntries: AZURE_FEATURE_FLAGS_CONFIG_ENTRIES,
}),
],
})
export class AppModule {}Environment Variables
Azure App Configuration
| Variable | Required | Description |
|---|---|---|
AZURE_APP_CONFIGURATION_CONNECTION_STRING | Yes | Connection string for Azure App Configuration |
AZURE_FEATURE_FLAGS_LABEL | No | Label filter for feature flags (e.g., prod) |
Vercel Edge Config
| Variable | Required | Description |
|---|---|---|
EDGE_CONFIG | Yes | Vercel Edge Config connection string |
Checking Feature Flags
typescript
import { Injectable } from '@nestjs/common';
import { FeatureFlagsService } from '@breadstone/archipel-platform-feature-flags';
@Injectable()
export class MyService {
public constructor(private readonly _featureFlags: FeatureFlagsService) {}
public async doSomething(): Promise<void> {
const isEnabled = await this._featureFlags.isEnabled('my-feature');
if (isEnabled) {
// Feature is enabled
}
}
}Architecture
mermaid
flowchart TB
subgraph FeatureFlagsModule
Service[FeatureFlagsService]
Port[FeatureFlagsClientPort]
end
subgraph Providers
Azure[AzureFeatureFlagsClient]
Vercel[VercelFeatureFlagsClient]
end
Service --> Port
Port -.-> Azure
Port -.-> Vercel
Azure --> AzureSDK[@azure/app-configuration-provider]
Vercel --> VercelSDK[@vercel/edge-config]