@devcycle/nodejs-server-sdk
Version:
The DevCycle NodeJS Server SDK used for feature management.
55 lines • 2.41 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.bucketUserForConfig = bucketUserForConfig;
exports.getSDKKeyFromConfig = getSDKKeyFromConfig;
exports.getVariableTypeCode = getVariableTypeCode;
exports.variableForUser = variableForUser;
exports.variableForUser_PB = variableForUser_PB;
const types_1 = require("@devcycle/types");
const compiled_1 = require("@devcycle/bucketing-assembly-script/protobuf/compiled");
const pbTypeHelpers_1 = require("../pb-types/pbTypeHelpers");
const populatedUserHelpers_1 = require("../models/populatedUserHelpers");
function bucketUserForConfig(bucketing, user, sdkKey) {
return JSON.parse(bucketing.generateBucketedConfigForUser(sdkKey, JSON.stringify(user)));
}
function getSDKKeyFromConfig(bucketing, sdkKey) {
return bucketing.getSDKKeyFromConfig(sdkKey);
}
function getVariableTypeCode(bucketing, type) {
switch (type) {
case types_1.VariableType.boolean:
return bucketing.VariableType.Boolean;
case types_1.VariableType.number:
return bucketing.VariableType.Number;
case types_1.VariableType.string:
return bucketing.VariableType.String;
case types_1.VariableType.json:
return bucketing.VariableType.JSON;
default:
throw new Error(`Unknown variable type: ${type}`);
}
}
function variableForUser(bucketing, sdkKey, user, key, type) {
const bucketedVariable = bucketing.variableForUser(sdkKey, JSON.stringify(user), key, type, true);
if (!bucketedVariable)
return null;
return JSON.parse(bucketedVariable);
}
function variableForUser_PB(bucketing, sdkKey, user, key, type) {
const params = {
sdkKey,
user: (0, populatedUserHelpers_1.DVCPopulatedUserToPBUser)(user),
variableKey: key,
variableType: type,
shouldTrackEvent: true,
};
const err = compiled_1.VariableForUserParams_PB.verify(params);
if (err)
throw new Error(`Invalid VariableForUserParams_PB protobuf params: ${err}`);
const buffer = compiled_1.VariableForUserParams_PB.encode(params).finish();
const bucketedVariable = bucketing.variableForUser_PB(buffer);
if (!bucketedVariable)
return null;
return (0, pbTypeHelpers_1.pbSDKVariableTransform)(compiled_1.SDKVariable_PB.decode(bucketedVariable));
}
//# sourceMappingURL=userBucketingHelper.js.map
;