UNPKG

@reactivehub/cli

Version:
133 lines (97 loc) 4.31 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _lodash = require('lodash'); var _messages = require('../messages'); var _messages2 = _interopRequireDefault(_messages); var _filter = require('../core/filter'); var _filter2 = _interopRequireDefault(_filter); var _event = require('../core/event'); var _event2 = _interopRequireDefault(_event); var _yaml = require('./yaml'); var _yaml2 = _interopRequireDefault(_yaml); var _api = require('../services/api'); var _config = require('./config'); var _config2 = _interopRequireDefault(_config); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const { getFilter } = _filter2.default; const folder = () => _config2.default.folders.events(); const getActions = (eventId, filterId) => getFilter(eventId, filterId).actions || []; const actionExists = (eventId, filterId, actionId) => { const actions = getActions(eventId, filterId); return actions && actions.filter(({ id }) => id === actionId).length > 0; }; const appendTrigger = (action, triggerEvent, triggerModels) => { const modifiedAction = action; // is there a way to refactor this? if (Array.isArray(modifiedAction[triggerEvent])) { const triggerEventList = [...modifiedAction[triggerEvent], ...triggerModels]; modifiedAction[triggerEvent] = (0, _lodash.uniqWith)(triggerEventList, _lodash.isEqual); } else { modifiedAction[triggerEvent] = triggerModels; } return modifiedAction; }; const createAction = params => { const { eventId, filterId, id: actionId, type, action: actionType } = params; const actionPayload = params; delete actionPayload.eventId; delete actionPayload.filterId; const eventPayload = _event2.default.loadEvent(folder(), eventId); const filterConfig = eventPayload.filters.find(({ id }) => id === filterId); if (!filterConfig.actions) filterConfig.actions = []; const foundAction = filterConfig.actions.find(action => action.id === actionId); if (foundAction) { filterConfig.actions = filterConfig.actions.map(action => { if (action.id === actionId) return actionPayload; return action; }); } else { filterConfig.actions.push(actionPayload); } eventPayload.filters = eventPayload.filters.map(filterMap => { if (filterMap.id === filterId) return filterConfig; return filterMap; }); const created = _yaml2.default.create(folder(), eventId, eventPayload); if (created) { _messages2.default.success(`Action ${_chalk2.default.blue.bold(actionId)} on event ${_chalk2.default.blue.bold(`${eventId}:${filterId}`)} successfully created!`); _messages2.default.info('Check the action template at the YAML file and replace its properties with the event model parameters (wildcards allowed). Check the documentation for more info https://docs.reactivehub.io/guide/events/actions#wildcards'); } (0, _api.sendActionCommand)({ id: actionId, eventId, type, action: actionType }); return created; }; const createTrigger = params => { const { triggerEvent, triggerModels, eventId, filterId, actionId } = params; const eventPayload = _event2.default.loadEvent(folder(), eventId); const filterConfig = eventPayload.filters.find(({ id }) => id === filterId); if (!filterConfig.actions) filterConfig.actions = []; const foundAction = filterConfig.actions.find(action => action.id === actionId); if (foundAction) { filterConfig.actions = filterConfig.actions.map(action => { if (action.id === actionId) { const modifiedAction = appendTrigger(action, triggerEvent, triggerModels); return modifiedAction; } return action; }); } else { _messages2.default.error(`Could not find action ${_chalk2.default.blueBright(actionId)}!`); throw new Error('Action not found. Run "rhub add:action" to add a new action.'); } eventPayload.filters = eventPayload.filters.map(filterMap => { if (filterMap.id === filterId) return filterConfig; return filterMap; }); return _yaml2.default.create(folder(), eventId, eventPayload); }; exports.default = { createAction, actionExists, createTrigger, getActions }; //# sourceMappingURL=actions.js.map