DevCycle to OpenFeature Node.js - User Context Transform CodeMod
This Codemod updates the DevCycleUser object to an OpenFeature EvaluationContext object:
- Replace the
DevCycleUserobject / types with anEvaluationContext - Rename the
user_idfield totargetingKeyin theEvaluationContext - If the code is using Typescript types where its typed as
DevCycleUser, update it to useEvaluationContextfrom@openfeature/server-sdk.
Before
tsexport interface DevCycleRequest extends Request { user: DevCycleUser; } const user: DevCycleUser = { user_id: "123", email: "test@test.com", name: "Test User", customData: { custom_field: "custom_value", number_field: 123, boolean_field: true, }, privateCustomData: { private_field: "private_value", }, }; const varValue = devCycleClient.variableValue( { user_id: "123" }, "test-variable", "default" ); const user2 = { user_id: "1234", email: "test@test.com", name: "Test User" }; const boolVarValue = devCycleClient.variable( user2, "test-boolean-variable", false );
After
tsexport interface DevCycleRequest extends Request { user: EvaluationContext; } const user: EvaluationContext = { targetingKey: "123", email: "test@test.com", name: "Test User", customData: { custom_field: "custom_value", number_field: 123, boolean_field: true, }, privateCustomData: { private_field: "private_value", }, }; const varValue = devCycleClient.variableValue( { targetingKey: "123" }, "test-variable", "default" ); const user2 = { targetingKey: "1234", email: "test@test.com", name: "Test User", }; const boolVarValue = devCycleClient.variable( user2, "test-boolean-variable", false );