@devcycle/nodejs-server-sdk
Version:
The DevCycle NodeJS Server SDK used for feature management.
93 lines • 4.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DVCPopulatedUserToPBUser = DVCPopulatedUserToPBUser;
exports.DVCPopulatedUserFromDevCycleUser = DVCPopulatedUserFromDevCycleUser;
exports.getNullableCustomDataValue = getNullableCustomDataValue;
const bucketing_assembly_script_1 = require("@devcycle/bucketing-assembly-script");
const js_cloud_server_sdk_1 = require("@devcycle/js-cloud-server-sdk");
const platformDetails_1 = require("../utils/platformDetails");
function DVCPopulatedUserToPBUser(user) {
const params = {
user_id: user.user_id,
email: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: user.email || '',
isNull: !user.email,
}),
name: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: user.name || '',
isNull: !user.name,
}),
language: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: user.language || '',
isNull: !user.language,
}),
country: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: user.country || '',
isNull: !user.country,
}),
appBuild: bucketing_assembly_script_1.ProtobufTypes.NullableDouble.create({
value: user.appBuild || 0,
isNull: user.appBuild === null || user.appBuild === undefined,
}),
appVersion: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: user.appVersion || '',
isNull: !user.appVersion,
}),
deviceModel: bucketing_assembly_script_1.ProtobufTypes.NullableString.create({
value: '',
isNull: true,
}),
customData: getNullableCustomDataValue(user.customData),
privateCustomData: getNullableCustomDataValue(user.privateCustomData),
};
const err = bucketing_assembly_script_1.ProtobufTypes.DVCUser_PB.verify(params);
if (err)
throw new Error(`DVCUser protobuf verification error: ${err}`);
return bucketing_assembly_script_1.ProtobufTypes.DVCUser_PB.create(params);
}
function DVCPopulatedUserFromDevCycleUser(user, platformDetails) {
return new js_cloud_server_sdk_1.DVCPopulatedUser(user, platformDetails || (0, platformDetails_1.getNodeJSPlatformDetails)());
}
function getNullableCustomDataValue(customData) {
if (!customData) {
return bucketing_assembly_script_1.ProtobufTypes.NullableCustomData.create({
value: {},
isNull: true,
});
}
const valuesMap = {};
for (const key in customData) {
const value = customData[key];
if (typeof value === 'boolean') {
valuesMap[key] = bucketing_assembly_script_1.ProtobufTypes.CustomDataValue.create({
type: bucketing_assembly_script_1.ProtobufTypes.CustomDataType.Bool,
boolValue: value,
});
}
else if (typeof value === 'number') {
valuesMap[key] = bucketing_assembly_script_1.ProtobufTypes.CustomDataValue.create({
type: bucketing_assembly_script_1.ProtobufTypes.CustomDataType.Num,
doubleValue: value,
});
}
else if (typeof value === 'string') {
valuesMap[key] = bucketing_assembly_script_1.ProtobufTypes.CustomDataValue.create({
type: bucketing_assembly_script_1.ProtobufTypes.CustomDataType.Str,
stringValue: value,
});
}
else if (value === null || value === undefined) {
valuesMap[key] = bucketing_assembly_script_1.ProtobufTypes.CustomDataValue.create({
type: bucketing_assembly_script_1.ProtobufTypes.CustomDataType.Null,
});
}
else {
throw new Error(`Unknown custom data type for ProtobufTypes.NullableCustomData: ${typeof value}`);
}
}
return bucketing_assembly_script_1.ProtobufTypes.NullableCustomData.create({
value: valuesMap,
isNull: false,
});
}
//# sourceMappingURL=populatedUserHelpers.js.map