UNPKG

@devcycle/nodejs-server-sdk

Version:

The DevCycle NodeJS Server SDK used for feature management.

93 lines 4.18 kB
"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