"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.buildRecoveredAlert = void 0; var _deepmerge = _interopRequireDefault(require("deepmerge")); var _strip_framework_fields = require("./strip_framework_fields"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ /** * Updates an active alert document to recovered * Currently only populates framework fields and not any rule type specific fields */ const buildRecoveredAlert = ({ alert, legacyAlert, rule, timestamp, payload, recoveryActionGroup, kibanaVersion }) => { var _rule$kibana, _rule$kibana2, _ref, _alert$tags, _rule$kibana$alert$ru, _rule$kibana3; const cleanedPayload = (0, _strip_framework_fields.stripFrameworkFields)(payload); return _deepmerge.default.all([alert, cleanedPayload, { // Update the timestamp to reflect latest update time '@timestamp': timestamp, event: { action: 'close' }, kibana: { alert: { // Set the recovery action group action_group: recoveryActionGroup, // Set latest flapping state flapping: legacyAlert.getFlapping(), // Set latest flapping_history flapping_history: legacyAlert.getFlappingHistory(), // Set latest maintenance window IDs maintenance_window_ids: legacyAlert.getMaintenanceWindowIds(), // Set latest rule configuration rule: (_rule$kibana = rule.kibana) === null || _rule$kibana === void 0 ? void 0 : _rule$kibana.alert.rule, // Set status to 'recovered' status: 'recovered', // Set latest duration as recovered alerts should have updated duration ...(legacyAlert.getState().duration ? { duration: { us: legacyAlert.getState().duration } } : {}), // Set end time ...(legacyAlert.getState().end ? { end: legacyAlert.getState().end, time_range: { // this should get merged with a time_range.gte lte: legacyAlert.getState().end } } : {}) // Fields that are explicitly not updated: // instance.id // action_group // uuid - recovered alerts should carry over previous UUID // start - recovered alerts should keep the initial start time // workflow_status - recovered alerts should keep the initial workflow_status }, space_ids: (_rule$kibana2 = rule.kibana) === null || _rule$kibana2 === void 0 ? void 0 : _rule$kibana2.space_ids, // Set latest kibana version version: kibanaVersion }, tags: Array.from(new Set([...((_ref = cleanedPayload === null || cleanedPayload === void 0 ? void 0 : cleanedPayload.tags) !== null && _ref !== void 0 ? _ref : []), ...((_alert$tags = alert.tags) !== null && _alert$tags !== void 0 ? _alert$tags : []), ...((_rule$kibana$alert$ru = (_rule$kibana3 = rule.kibana) === null || _rule$kibana3 === void 0 ? void 0 : _rule$kibana3.alert.rule.tags) !== null && _rule$kibana$alert$ru !== void 0 ? _rule$kibana$alert$ru : [])])) }], { arrayMerge: (_, sourceArray) => sourceArray }); }; exports.buildRecoveredAlert = buildRecoveredAlert;