@reactivehub/cli
Version:
87 lines (63 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _flat = require('flat');
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _yaml = require('./yaml');
var _yaml2 = _interopRequireDefault(_yaml);
var _messages = require('../messages');
var _messages2 = _interopRequireDefault(_messages);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const folder = 'events';
const eventExists = eventId => _yaml2.default.fileExists(folder, eventId);
const createFile = (payload, { withExample = false, override = false } = {}) => {
const { id, eventGroup, version = '0.0.1', model = null, rules = null } = payload;
const name = id;
const fileName = `${eventGroup}.${id}`;
const newPayload = { id, name, eventGroup, version };
if (withExample || !model) {
newPayload.model = {
keyName: 'String'
};
}
if (!rules) {
const onEventFilter = {
id: 'on-event',
name: 'onEvent',
condition: null,
actions: null
};
newPayload.filters = [onEventFilter];
}
if (!override && _yaml2.default.fileExists(folder, fileName)) {
_messages2.default.error(`${_chalk2.default.blue.bold(fileName)} already exists!`);
return false;
}
const created = _yaml2.default.create(folder, fileName, newPayload);
if (created) _messages2.default.success(`${_chalk2.default.blue.bold(fileName)} successfully created!`);
return created;
};
const getEventsInFolder = () => _yaml2.default.filesInFolder('events').map(item => item.replace('.yaml', ''));
const loadEvent = (folderParam, fileName) => _yaml2.default.toJson(folderParam, fileName);
const loadEventData = fileName => loadEvent('events', fileName);
const loadModelAsPayload = eventId => {
const { model } = _yaml2.default.toJson('events', eventId);
const flatPayload = (0, _flat.flatten)(model, { maxDepth: null, safe: true });
(0, _keys2.default)(flatPayload).forEach(key => {
model[key] = `{${key}}`;
});
return (0, _flat.unflatten)(model, { maxDepth: null });
};
exports.default = {
createFile,
getEventsInFolder,
loadEvent,
eventExists,
loadModelAsPayload,
loadEventData
};
//# sourceMappingURL=event.js.map