@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
73 lines • 9.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlagsmithFeatureFlagProvider = void 0;
const featureflag_sdk_node_1 = require("@rudderstack/featureflag-sdk-node");
class FlagsmithFeatureFlagProvider {
constructor(registry) {
this.registry = registry;
}
// eslint-disable-next-line class-methods-use-this
initialize() {
// SDK initialization is handled in core/config.ts
// This provider is just a thin wrapper
return Promise.resolve();
}
isFeatureEnabled(user, flagName) {
// Use getFeatureValue internally for consistency
return this.getFeatureValue(user, flagName);
}
isFeatureEnabledLatest(user, flagName) {
// Use getFeatureValueLatest internally for consistency
return this.getFeatureValueLatest(user, flagName);
}
async getFeatureValue(user, flagName) {
try {
// Let SDK handle provider errors gracefully - it returns rich FeatureValue with error property
const result = await (0, featureflag_sdk_node_1.getFeatureValue)(user.workspaceId, flagName, user.traits);
// Convert SDK FeatureValue to our FeatureValue type (they're structurally compatible)
return result;
}
catch (error) {
// Handle FeatureFlagSDKError by creating rich error response
if (error instanceof featureflag_sdk_node_1.FeatureFlagSDKError) {
return this.createErrorFeatureValue(flagName, error);
}
throw error; // Re-throw unexpected errors
}
}
async getFeatureValueLatest(user, flagName) {
try {
// Let SDK handle provider errors gracefully - it returns rich FeatureValue with error property
const result = await (0, featureflag_sdk_node_1.getFeatureValueLatest)(user.workspaceId, flagName, user.traits);
// Convert SDK FeatureValue to our FeatureValue type (they're structurally compatible)
return result;
}
catch (error) {
// Handle FeatureFlagSDKError by creating rich error response
if (error instanceof featureflag_sdk_node_1.FeatureFlagSDKError) {
return this.createErrorFeatureValue(flagName, error);
}
throw error; // Re-throw unexpected errors
}
}
createErrorFeatureValue(flagName, error) {
const defaultValue = this.registry.getDefaultValue(flagName);
return {
name: flagName,
enabled: typeof defaultValue === 'boolean' ? defaultValue : false,
value: defaultValue,
error,
};
}
// eslint-disable-next-line class-methods-use-this
getProviderInfo() {
return {
name: 'flagsmith',
version: '1.0.0',
supportsCache: true,
supportsRealTime: true,
};
}
}
exports.FlagsmithFeatureFlagProvider = FlagsmithFeatureFlagProvider;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9wcm92aWRlcnMvZmxhZ3NtaXRoL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRFQUkyQztBQVMzQyxNQUFhLDRCQUE0QjtJQUN2QyxZQUFvQixRQUE4QjtRQUE5QixhQUFRLEdBQVIsUUFBUSxDQUFzQjtJQUFHLENBQUM7SUFFdEQsa0RBQWtEO0lBQ2xELFVBQVU7UUFDUixrREFBa0Q7UUFDbEQsdUNBQXVDO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFxQixFQUFFLFFBQWdCO1FBQ3RELGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFxQixFQUFFLFFBQWdCO1FBQzVELHVEQUF1RDtRQUN2RCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBcUIsRUFBRSxRQUFnQjtRQUMzRCxJQUFJLENBQUM7WUFDSCwrRkFBK0Y7WUFDL0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHNDQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRixzRkFBc0Y7WUFDdEYsT0FBTyxNQUFzQixDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsNkRBQTZEO1lBQzdELElBQUksS0FBSyxZQUFZLDBDQUFtQixFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUMsQ0FBQyw2QkFBNkI7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBcUIsRUFBRSxRQUFnQjtRQUNqRSxJQUFJLENBQUM7WUFDSCwrRkFBK0Y7WUFDL0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUE0QixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRixzRkFBc0Y7WUFDdEYsT0FBTyxNQUFzQixDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsNkRBQTZEO1lBQzdELElBQUksS0FBSyxZQUFZLDBDQUFtQixFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUMsQ0FBQyw2QkFBNkI7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLEtBQVk7UUFDNUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTztZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLE9BQU8sWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ2pFLEtBQUssRUFBRSxZQUFZO1lBQ25CLEtBQUs7U0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxlQUFlO1FBQ2IsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJFRCxvRUFxRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRGZWF0dXJlVmFsdWUgYXMgZ2V0RmVhdHVyZVZhbHVlRnJvbVNESyxcbiAgZ2V0RmVhdHVyZVZhbHVlTGF0ZXN0IGFzIGdldEZlYXR1cmVWYWx1ZUxhdGVzdEZyb21TREssXG4gIEZlYXR1cmVGbGFnU0RLRXJyb3IsXG59IGZyb20gJ0BydWRkZXJzdGFjay9mZWF0dXJlZmxhZy1zZGstbm9kZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZlYXR1cmVGbGFnVXNlcixcbiAgSUZlYXR1cmVGbGFnUmVnaXN0cnksXG4gIElGZWF0dXJlRmxhZ1Byb3ZpZGVyLFxuICBQcm92aWRlckluZm8sXG4gIEZlYXR1cmVWYWx1ZSxcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRmxhZ3NtaXRoRmVhdHVyZUZsYWdQcm92aWRlciBpbXBsZW1lbnRzIElGZWF0dXJlRmxhZ1Byb3ZpZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWdpc3RyeTogSUZlYXR1cmVGbGFnUmVnaXN0cnkpIHt9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBTREsgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBpbiBjb3JlL2NvbmZpZy50c1xuICAgIC8vIFRoaXMgcHJvdmlkZXIgaXMganVzdCBhIHRoaW4gd3JhcHBlclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIGlzRmVhdHVyZUVuYWJsZWQodXNlcjogRmVhdHVyZUZsYWdVc2VyLCBmbGFnTmFtZTogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlVmFsdWU+IHtcbiAgICAvLyBVc2UgZ2V0RmVhdHVyZVZhbHVlIGludGVybmFsbHkgZm9yIGNvbnNpc3RlbmN5XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmVhdHVyZVZhbHVlKHVzZXIsIGZsYWdOYW1lKTtcbiAgfVxuXG4gIGlzRmVhdHVyZUVuYWJsZWRMYXRlc3QodXNlcjogRmVhdHVyZUZsYWdVc2VyLCBmbGFnTmFtZTogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlVmFsdWU+IHtcbiAgICAvLyBVc2UgZ2V0RmVhdHVyZVZhbHVlTGF0ZXN0IGludGVybmFsbHkgZm9yIGNvbnNpc3RlbmN5XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmVhdHVyZVZhbHVlTGF0ZXN0KHVzZXIsIGZsYWdOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmVWYWx1ZSh1c2VyOiBGZWF0dXJlRmxhZ1VzZXIsIGZsYWdOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVWYWx1ZT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBMZXQgU0RLIGhhbmRsZSBwcm92aWRlciBlcnJvcnMgZ3JhY2VmdWxseSAtIGl0IHJldHVybnMgcmljaCBGZWF0dXJlVmFsdWUgd2l0aCBlcnJvciBwcm9wZXJ0eVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0RmVhdHVyZVZhbHVlRnJvbVNESyh1c2VyLndvcmtzcGFjZUlkLCBmbGFnTmFtZSwgdXNlci50cmFpdHMpO1xuICAgICAgLy8gQ29udmVydCBTREsgRmVhdHVyZVZhbHVlIHRvIG91ciBGZWF0dXJlVmFsdWUgdHlwZSAodGhleSdyZSBzdHJ1Y3R1cmFsbHkgY29tcGF0aWJsZSlcbiAgICAgIHJldHVybiByZXN1bHQgYXMgRmVhdHVyZVZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgRmVhdHVyZUZsYWdTREtFcnJvciBieSBjcmVhdGluZyByaWNoIGVycm9yIHJlc3BvbnNlXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBGZWF0dXJlRmxhZ1NES0Vycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yRmVhdHVyZVZhbHVlKGZsYWdOYW1lLCBlcnJvcik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjsgLy8gUmUtdGhyb3cgdW5leHBlY3RlZCBlcnJvcnNcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRGZWF0dXJlVmFsdWVMYXRlc3QodXNlcjogRmVhdHVyZUZsYWdVc2VyLCBmbGFnTmFtZTogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlVmFsdWU+IHtcbiAgICB0cnkge1xuICAgICAgLy8gTGV0IFNESyBoYW5kbGUgcHJvdmlkZXIgZXJyb3JzIGdyYWNlZnVsbHkgLSBpdCByZXR1cm5zIHJpY2ggRmVhdHVyZVZhbHVlIHdpdGggZXJyb3IgcHJvcGVydHlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEZlYXR1cmVWYWx1ZUxhdGVzdEZyb21TREsodXNlci53b3Jrc3BhY2VJZCwgZmxhZ05hbWUsIHVzZXIudHJhaXRzKTtcbiAgICAgIC8vIENvbnZlcnQgU0RLIEZlYXR1cmVWYWx1ZSB0byBvdXIgRmVhdHVyZVZhbHVlIHR5cGUgKHRoZXkncmUgc3RydWN0dXJhbGx5IGNvbXBhdGlibGUpXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIEZlYXR1cmVWYWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIEZlYXR1cmVGbGFnU0RLRXJyb3IgYnkgY3JlYXRpbmcgcmljaCBlcnJvciByZXNwb25zZVxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRmVhdHVyZUZsYWdTREtFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvckZlYXR1cmVWYWx1ZShmbGFnTmFtZSwgZXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7IC8vIFJlLXRocm93IHVuZXhwZWN0ZWQgZXJyb3JzXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFcnJvckZlYXR1cmVWYWx1ZShmbGFnTmFtZTogc3RyaW5nLCBlcnJvcjogRXJyb3IpOiBGZWF0dXJlVmFsdWUge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMucmVnaXN0cnkuZ2V0RGVmYXVsdFZhbHVlKGZsYWdOYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZmxhZ05hbWUsXG4gICAgICBlbmFibGVkOiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnYm9vbGVhbicgPyBkZWZhdWx0VmFsdWUgOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBkZWZhdWx0VmFsdWUsXG4gICAgICBlcnJvcixcbiAgICB9O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgZ2V0UHJvdmlkZXJJbmZvKCk6IFByb3ZpZGVySW5mbyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdmbGFnc21pdGgnLFxuICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgIHN1cHBvcnRzQ2FjaGU6IHRydWUsXG4gICAgICBzdXBwb3J0c1JlYWxUaW1lOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==