flagsmith-nodejs-client
flagsmith-nodejs-client copied to clipboard
Feature values always have type string when using local evaluation mode
trafficstars
We've started seeing an issue where number values like this one are being returned as type string when enableLocalEvaluation is set to true.
Using this test script I've validated that the local evaluation causes the change in behaviour (thanks Matt for the help 🙌 )
This has been tested on flagsmith-nodejs versions 2.5.1 and 3.2.0
import Flagsmith from 'flagsmith-nodejs';
async function main(): Promise<void> {
const flagClient = new Flagsmith({
environmentKey: 'ser.key',
enableLocalEvaluation: true,
enableAnalytics: false,
});
const environmentFlags = await flagClient.getEnvironmentFlags();
const flag = environmentFlags.getFlag('daisy.settlements.timeout');
console.log(`flagClient.apiUrl=${flagClient.apiUrl}`);
console.log(`flagClient.enableLocalEvaluation=${flagClient.enableLocalEvaluation}`);
console.log(JSON.stringify(flag));
console.log(`typeof flag.value=${typeof flag.value}`);
await flagClient.close();
}
void main();
enableLocalEvaluation=true
flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=true
{"value":"60000","enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=string
enableLocalEvaluation=false
flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=false
{"value":60000,"enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=number