UNPKG

@azure/app-configuration

Version:
104 lines (103 loc) 4.16 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var featureFlag_exports = {}; __export(featureFlag_exports, { FeatureFlagHelper: () => FeatureFlagHelper, featureFlagContentType: () => featureFlagContentType, featureFlagPrefix: () => featureFlagPrefix, isFeatureFlag: () => isFeatureFlag, parseFeatureFlag: () => parseFeatureFlag }); module.exports = __toCommonJS(featureFlag_exports); var import_logger = require("./logger.js"); const featureFlagPrefix = ".appconfig.featureflag/"; const featureFlagContentType = "application/vnd.microsoft.appconfig.ff+json;charset=utf-8"; const FeatureFlagHelper = { /** * Takes the FeatureFlag (JSON) and returns a ConfigurationSetting (with the props encodeed in the value). */ toConfigurationSettingParam: (featureFlag) => { import_logger.logger.info("Encoding FeatureFlag value in a ConfigurationSetting:", featureFlag); if (!featureFlag.value) { import_logger.logger.error("FeatureFlag has an unexpected value", featureFlag); throw new TypeError(`FeatureFlag has an unexpected value - ${featureFlag.value}`); } let key = featureFlag.key; if (typeof featureFlag.key === "string" && !featureFlag.key.startsWith(featureFlagPrefix)) { key = featureFlagPrefix + featureFlag.key; } const jsonFeatureFlagValue = { id: featureFlag.value.id ?? key.replace(featureFlagPrefix, ""), enabled: featureFlag.value.enabled, description: featureFlag.value.description, conditions: { client_filters: featureFlag.value.conditions.clientFilters, requirement_type: featureFlag.value.conditions.requirementType ?? "Any" }, display_name: featureFlag.value.displayName }; const configSetting = { ...featureFlag, key, value: JSON.stringify(jsonFeatureFlagValue) }; return configSetting; } }; function parseFeatureFlag(setting) { import_logger.logger.info("Parsing the value to return the FeatureFlagValue", setting); if (!isFeatureFlag(setting)) { import_logger.logger.error("Invalid FeatureFlag input", setting); throw TypeError( `Setting with key ${setting.key} is not a valid FeatureFlag, make sure to have the correct content-type and a valid non-null value.` ); } const jsonFeatureFlagValue = JSON.parse(setting.value); let key = setting.key; if (typeof setting.key === "string" && !setting.key.startsWith(featureFlagPrefix)) { key = featureFlagPrefix + setting.key; } const featureflag = { ...setting, value: { id: jsonFeatureFlagValue.id, enabled: jsonFeatureFlagValue.enabled ?? false, description: jsonFeatureFlagValue.description, displayName: jsonFeatureFlagValue.display_name, conditions: jsonFeatureFlagValue.conditions ? { clientFilters: jsonFeatureFlagValue.conditions.client_filters, requirementType: jsonFeatureFlagValue.conditions.requirement_type } : { clientFilters: [] } }, key, contentType: featureFlagContentType }; return featureflag; } function isFeatureFlag(setting) { return setting && setting.contentType === featureFlagContentType && typeof setting.value === "string"; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { FeatureFlagHelper, featureFlagContentType, featureFlagPrefix, isFeatureFlag, parseFeatureFlag }); //# sourceMappingURL=featureFlag.js.map