UNPKG

@flags-sdk/bucket

Version:

Bucket.co provider for the Flags SDK

81 lines 2.06 kB
// src/index.ts import { BucketClient } from "@bucketco/node-sdk"; var defaultBucketAdapter; function assertEnv(name) { const value = process.env[name]; if (!value) { throw new Error(`@flags-sdk/bucket: Missing ${name} environment variable`); } return value; } function createBucketAdapter(clientOptions) { let bucketClient; async function initialize() { if (!bucketClient) { try { bucketClient = new BucketClient(clientOptions); } catch (err) { console.error("@flags-sdk/bucket: Error creating bucketClient", err); throw err; } } return bucketClient.initialize(); } function featureIsEnabled(options) { return { async decide({ key, entities }) { await initialize(); return bucketClient.getFeature({ ...options, ...entities }, key).isEnabled; } }; } return { featureIsEnabled, bucketClient: async () => { await initialize(); return bucketClient; } }; } function getOrCreateDefaultAdapter() { if (!defaultBucketAdapter) { const secretKey = assertEnv("BUCKET_SECRET_KEY"); defaultBucketAdapter = createBucketAdapter({ secretKey }); } return defaultBucketAdapter; } var bucketAdapter = { featureIsEnabled: (...args) => getOrCreateDefaultAdapter().featureIsEnabled(...args), bucketClient: async () => { return getOrCreateDefaultAdapter().bucketClient(); } }; async function getProviderData({ bucketClient } = {}) { if (!bucketClient) { bucketClient = await getOrCreateDefaultAdapter().bucketClient(); } const features = await bucketClient.getFeatureDefinitions(); return { definitions: features.reduce((acc, item) => { acc[item.key] = { options: [ { label: "Disabled", value: false }, { label: "Enabled", value: true } ], description: item.description ?? void 0 }; return acc; }, {}), hints: [] }; } export { bucketAdapter, createBucketAdapter, getProviderData }; //# sourceMappingURL=index.js.map