@reactivehub/cli
Version:
159 lines (116 loc) • 5.08 kB
JavaScript
;
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