UNPKG

@reactivehub/cli

Version:
159 lines (116 loc) 5.08 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _api = require('../services/api'); var api = _interopRequireWildcard(_api); var _messages = require('../messages'); var _messages2 = _interopRequireDefault(_messages); var _serviceAccounts = require('../serviceAccounts'); var _serviceAccounts2 = _interopRequireDefault(_serviceAccounts); var _query = require('../commands/questions/query'); var _query2 = _interopRequireDefault(_query); var _inquirer = require('../libs/inquirer'); var _inquirer2 = _interopRequireDefault(_inquirer); var _config = require('./config'); var _config2 = _interopRequireDefault(_config); var _yaml = require('./yaml'); var _yaml2 = _interopRequireDefault(_yaml); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const checkAvailableTypes = (availableListeners, type) => { if (!availableListeners) { _messages2.default.error(`Query endpoints of type ${_chalk2.default.blue.bold(type)} are not supported!`); return false; } return true; }; const createFile = ({ serviceAccountId, id, scope }) => { const listenerFolder = _config2.default.folders.queries(); let folderPath = `${listenerFolder}`; if (scope && scope !== '') folderPath = `${folderPath}/${scope}`; const yamlPayload = { id, scope, serviceAccountId, query: 'PASTE YOUR QUERY HERE, USE WILDCARDS FOR MUTABLE PARAMS' }; const created = _yaml2.default.create(folderPath, id, yamlPayload); if (created) _messages2.default.success(`Query ${_chalk2.default.blue.bold(id)} successfully created!`); return created; }; const loadTriggers = (() => { var _ref = (0, _asyncToGenerator3.default)(function* (triggers = [], loadedEvents = null) { let newTriggers = triggers; let eventIds = loadedEvents || (yield api.getEventIds()); if (!eventIds) { _messages2.default.info('Could not find deployed events. Deploy your events and run the add:listener trigger command.'); } else { const { eventId } = yield (0, _inquirer2.default)(_query2.default.selectEvent(eventIds)); newTriggers.push({ eventId }); eventIds = eventIds.filter(function ({ id }) { return id !== eventId; }); const { addMoreTriggers } = yield (0, _inquirer2.default)(_query2.default.addMoreTriggers); if (addMoreTriggers) { newTriggers = loadTriggers(newTriggers, eventIds); } } return newTriggers; }); return function loadTriggers() { return _ref.apply(this, arguments); }; })(); const add = (() => { var _ref2 = (0, _asyncToGenerator3.default)(function* (type) { try { const [serviceAccounts, isAvailable] = yield _promise2.default.all([_serviceAccounts2.default.getServiceAccounts({ type }), api.isAvailableQuerySerivce(type)]); if (!checkAvailableTypes(isAvailable, type)) return false; if (!_serviceAccounts2.default.checkSeviceAccounts(serviceAccounts, type)) return false; const { serviceAccountId, id, scope } = yield (0, _inquirer2.default)(_query2.default.create(serviceAccounts)); return createFile({ serviceAccountId, id, scope }); } catch (e) { console.log(e); return false; } }); return function add(_x) { return _ref2.apply(this, arguments); }; })(); const getFileMap = () => { const folder = _config2.default.folders.queries(); if (!_fsExtra2.default.pathExistsSync(folder)) return []; const dirs = _fsExtra2.default.readdirSync(folder); const files = dirs.map(dir => ({ dir: `${folder}/${dir}`, files: _fsExtra2.default.readdirSync(`${folder}/${dir}`) })); return files; }; const prepareDeploy = (dir, file, namespace) => { try { const content = _yaml2.default.toJson(dir, file); const { query } = content; content.query = query.replace(/(\r\n|\n|\r)/gm, ' '); return (0, _extends3.default)({}, content, { namespace }); } catch (e) { // eslint-disable-next-line _messages2.default.error(`Invalid YAML query ${dir}/${file} file, make sure that the query parameter is a valid single or a multi-line string. (https://yaml-multiline.info/)`); throw e; } }; exports.default = { add, getFileMap, prepareDeploy }; //# sourceMappingURL=queries.js.map