UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

121 lines 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureEventFormatterMd = exports.LinkStyle = void 0; const events_1 = require("../types/events"); var LinkStyle; (function (LinkStyle) { LinkStyle[LinkStyle["SLACK"] = 0] = "SLACK"; LinkStyle[LinkStyle["MD"] = 1] = "MD"; })(LinkStyle = exports.LinkStyle || (exports.LinkStyle = {})); class FeatureEventFormatterMd { constructor(unleashUrl, linkStyle = LinkStyle.MD) { this.unleashUrl = unleashUrl; this.linkStyle = linkStyle; } generateArchivedText(event) { const { createdBy, type } = event; const action = type === events_1.FEATURE_ARCHIVED ? 'archived' : 'revived'; const feature = this.generateFeatureLink(event); return ` ${createdBy} just ${action} feature toggle *${feature}*`; } generateFeatureLink(event) { if (this.linkStyle === LinkStyle.SLACK) { return `<${this.featureLink(event)}|${event.featureName}>`; } else { return `[${event.featureName}](${this.featureLink(event)})`; } } generateStaleText(event) { const { createdBy, type } = event; const isStale = type === events_1.FEATURE_STALE_ON; const feature = this.generateFeatureLink(event); if (isStale) { return `${createdBy} marked ${feature} as stale and this feature toggle is now *ready to be removed* from the code.`; } return `${createdBy} removed the stale marking on *${feature}*.`; } generateEnvironmentToggleText(event) { const { createdBy, environment, type, project } = event; const toggleStatus = type === events_1.FEATURE_ENVIRONMENT_ENABLED ? 'enabled' : 'disabled'; const feature = this.generateFeatureLink(event); return `${createdBy} *${toggleStatus}* ${feature} in *${environment}* environment in project *${project}*`; } generateStrategyChangeText(event) { const { createdBy, environment, project, data, preData, type } = event; const feature = this.generateFeatureLink(event); let strategyText = ''; if (events_1.FEATURE_STRATEGY_UPDATE === type) { strategyText = `by updating strategy ${data?.name} in *${environment}*`; } else if (events_1.FEATURE_STRATEGY_ADD === type) { strategyText = `by adding strategy ${data?.name} in *${environment}*`; } else if (events_1.FEATURE_STRATEGY_REMOVE === type) { strategyText = `by removing strategy ${preData?.name} in *${environment}*`; } return `${createdBy} updated *${feature}* in project *${project}* ${strategyText}`; } generateMetadataText(event) { const { createdBy, project } = event; const feature = this.generateFeatureLink(event); return `${createdBy} updated the metadata for ${feature} in project *${project}*`; } generateProjectChangeText(event) { const { createdBy, project, featureName } = event; return `${createdBy} moved ${featureName} to ${project}`; } featureLink(event) { const { type, project = '', featureName } = event; if (type === events_1.FEATURE_ARCHIVED) { if (project) { return `${this.unleashUrl}/projects/${project}/archive`; } return `${this.unleashUrl}/archive`; } return `${this.unleashUrl}/projects/${project}/features/${featureName}`; } getAction(type) { switch (type) { case events_1.FEATURE_CREATED: return 'created'; case events_1.FEATURE_UPDATED: return 'updated'; case events_1.FEATURE_VARIANTS_UPDATED: return 'updated variants for'; default: return type; } } defaultText(event) { const { createdBy, project, type } = event; const action = this.getAction(type); const feature = this.generateFeatureLink(event); return `${createdBy} ${action} feature toggle ${feature} in project *${project}*`; } format(event) { switch (event.type) { case events_1.FEATURE_ARCHIVED: case events_1.FEATURE_REVIVED: return this.generateArchivedText(event); case events_1.FEATURE_STALE_ON: case events_1.FEATURE_STALE_OFF: return this.generateStaleText(event); case events_1.FEATURE_ENVIRONMENT_DISABLED: case events_1.FEATURE_ENVIRONMENT_ENABLED: return this.generateEnvironmentToggleText(event); case events_1.FEATURE_STRATEGY_ADD: case events_1.FEATURE_STRATEGY_REMOVE: case events_1.FEATURE_STRATEGY_UPDATE: return this.generateStrategyChangeText(event); case events_1.FEATURE_METADATA_UPDATED: return this.generateMetadataText(event); case events_1.FEATURE_PROJECT_CHANGE: return this.generateProjectChangeText(event); default: return this.defaultText(event); } } } exports.FeatureEventFormatterMd = FeatureEventFormatterMd; //# sourceMappingURL=feature-event-formatter-md.js.map