@fluxcontrolsdk/node-sdk
v0.2.0
Published
FluxControl Server-Side SDK for Node.js
Downloads
167
Maintainers
Readme
@fluxcontrolsdk/node-sdk
Official Node.js SDK for FluxControl - Enterprise Feature Flagging & Experimentation Platform
Installation
npm install @fluxcontrolsdk/node-sdkQuick Start
import { FluxClient } from '@fluxcontrolsdk/node-sdk';
// Initialize the client
const client = new FluxClient('your-sdk-key', {
endpoint: 'https://api.fluxcontrol.io'
});
// Start the client (fetches ruleset)
await client.start();
// Evaluate a boolean flag
const context = {
userId: 'user-123',
attributes: {
plan: 'premium',
country: 'US'
}
};
const isEnabled = client.boolVariation('new-feature', context, false);
if (isEnabled) {
// New feature code
} else {
// Legacy code
}
// Clean up when shutting down
client.close();Configuration Options
const client = new FluxClient('sdk-key', {
endpoint: 'https://api.fluxcontrol.io', // Required: FluxControl API endpoint
pollIntervalMs: 30000, // Optional: Polling interval (default: 30s)
backupFilePath: './flux_ruleset.json', // Optional: Local backup file
offlineMode: false // Optional: Start in offline mode
});Configuration Parameters:
endpoint- Required. FluxControl API URL (e.g.,'https://api.fluxcontrol.io')pollIntervalMs- Optional. Polling interval in milliseconds (default: 30000)backupFilePath- Optional. Path to local backup file (default:'./flux_ruleset.json')offlineMode- Optional. Start in offline mode (default: false)
Offline Mode
For testing or air-gapped environments:
const client = FluxClient.loadFromFile('./ruleset.json');
await client.start();Features
- Local Evaluation: Sub-millisecond flag evaluation with no network calls
- Automatic Polling: Keeps rulesets up-to-date in the background
- Offline Fallback: Uses local backup if network is unavailable
- TypeScript Support: Full type definitions included
- Targeting Rules: Complex user targeting with AND/OR conditions
- Percentage Rollouts: Gradual feature rollouts with consistent hashing
API Reference
FluxClient
Constructor
new FluxClient(sdkKey: string, config: FluxConfig)Methods
start(): Promise<void>- Initialize and start pollingboolVariation(key: string, context: Context, defaultValue: boolean): boolean- Evaluate boolean flagclose(): void- Stop polling and clean up
Context
interface Context {
userId: string; // Required for percentage rollouts
attributes?: Record<string, string | number | boolean>; // Custom attributes
}Documentation
Full documentation: https://docs.fluxcontrol.io
Support
- GitHub Issues: https://github.com/manojsu/ubiquitous-spork/issues
- Email: [email protected]
License
MIT
