lightswitch-sdk-edge
v1.0.6
Published
SDK for Supabase Edge Functions
Maintainers
Readme
Lightswitch SDK Edge
A minimal TypeScript SDK for integrating Lightswitch feature flags and entitlements into Supabase Edge Functions.
Installation
npm install lightswitch-sdk-edgeQuick Start
Configuration
import { LightswitchConfig } from 'lightswitch-sdk-edge';
const config: LightswitchConfig = {
appSlug: 'your-app-slug',
secretKey: 'your-secret-key',
jwt: 'your-jwt-token'
};Basic Usage
import { getCurrentUser, requireEntitlement, logUsage } from 'lightswitch-sdk-edge';
// Get current user
const user = await getCurrentUser(config);
// Check feature access
const hasAccess = await requireEntitlement(config, 'premium-feature');
if (hasAccess) {
// Log usage when feature is accessed
await logUsage(config, 'premium-feature', {
timestamp: new Date().toISOString()
});
console.log('Access granted!');
} else {
console.log('Access denied');
}Edge Function Example
import { serve } from 'https://deno.land/[email protected]/http/server.ts';
import { requireEntitlement, logUsage } from 'lightswitch-sdk-edge';
serve(async (req) => {
const body = await req.json();
const config = {
appSlug: body.appSlug,
secretKey: body.secretKey,
jwt: body.jwt
};
const entitled = await requireEntitlement(config, 'api-access');
if (entitled) {
await logUsage(config, 'api-access');
return new Response(JSON.stringify({ message: 'Access granted' }));
} else {
return new Response(JSON.stringify({ error: 'Access denied' }), { status: 403 });
}
});API Reference
Core Functions
buildHeaders(config, extraHeaders?)
Builds authentication headers for API calls.
Parameters:
config: LightswitchConfig- Lightswitch configurationextraHeaders?: Record<string, string>- Optional additional headers
Returns: Promise<Record<string, string>>
getCurrentUser(config)
Gets the current user's information.
Parameters:
config: LightswitchConfig- Lightswitch configuration
Returns: Promise<any> - User object
requireEntitlement(config, feature)
Checks if the user is entitled to a specific feature.
Parameters:
config: LightswitchConfig- Lightswitch configurationfeature: string- Feature identifier
Returns: Promise<boolean> - true if entitled, false if not
logUsage(config, feature, extraData?)
Logs usage of a feature.
Parameters:
config: LightswitchConfig- Lightswitch configurationfeature: string- Feature identifierextraData?: Record<string, any>- Optional additional data
Returns: Promise<boolean> - true if logged successfully
Types
LightswitchConfig
interface LightswitchConfig {
appSlug: string; // Your app identifier
secretKey: string; // Your secret key
jwt: string; // User JWT token
}License
MIT
