kibana-123
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
291 lines (243 loc) • 10.3 kB
JavaScript
;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { var callNext = step.bind(null, 'next'); var callThrow = step.bind(null, 'throw'); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(callNext, callThrow); } } callNext(); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _minimatch = require('minimatch');
var _minimatch2 = _interopRequireDefault(_minimatch);
var _ui_app_collection = require('./ui_app_collection');
var _ui_app_collection2 = _interopRequireDefault(_ui_app_collection);
var _ui_nav_link_collection = require('./ui_nav_link_collection');
var _ui_nav_link_collection2 = _interopRequireDefault(_ui_nav_link_collection);
var UiExports = (function () {
function UiExports(_ref) {
var urlBasePath = _ref.urlBasePath;
_classCallCheck(this, UiExports);
this.navLinks = new _ui_nav_link_collection2['default'](this);
this.apps = new _ui_app_collection2['default'](this);
this.aliases = {};
this.urlBasePath = urlBasePath;
this.exportConsumer = _lodash2['default'].memoize(this.exportConsumer);
this.consumers = [];
this.bundleProviders = [];
this.defaultInjectedVars = {};
this.injectedVarsReplacers = [];
}
_createClass(UiExports, [{
key: 'consumePlugin',
value: function consumePlugin(plugin) {
var _this = this;
plugin.apps = new _ui_app_collection2['default'](this);
var types = _lodash2['default'].keys(plugin.uiExportsSpecs);
if (!types) return false;
var unkown = _lodash2['default'].reject(types, this.exportConsumer, this);
if (unkown.length) {
throw new Error('unknown export types ' + unkown.join(', ') + ' in plugin ' + plugin.id);
}
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.consumers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var consumer = _step.value;
consumer.consumePlugin && consumer.consumePlugin(plugin);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
types.forEach(function (type) {
_this.exportConsumer(type)(plugin, plugin.uiExportsSpecs[type]);
});
}
}, {
key: 'addConsumer',
value: function addConsumer(consumer) {
this.consumers.push(consumer);
}
}, {
key: 'exportConsumer',
value: function exportConsumer(type) {
var _this2 = this;
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = this.consumers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var consumer = _step2.value;
if (!consumer.exportConsumer) continue;
var fn = consumer.exportConsumer(type);
if (fn) return fn;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2['return']) {
_iterator2['return']();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
switch (type) {
case 'app':
case 'apps':
return function (plugin, specs) {
var id = plugin.id;
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
var _loop = function () {
var spec = _step3.value;
var app = _this2.apps['new'](_lodash2['default'].defaults({}, spec, {
id: plugin.id,
urlBasePath: _this2.urlBasePath
}));
plugin.extendInit(function (server, options) {
// eslint-disable-line no-loop-func
var wrapped = app.getInjectedVars;
app.getInjectedVars = function () {
return wrapped.call(plugin, server, options);
};
});
plugin.apps.add(app);
};
for (var _iterator3 = [].concat(specs || [])[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
_loop();
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3['return']) {
_iterator3['return']();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
};
case 'link':
case 'links':
return function (plugin, spec) {
var _iteratorNormalCompletion4 = true;
var _didIteratorError4 = false;
var _iteratorError4 = undefined;
try {
for (var _iterator4 = [].concat(spec || [])[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
var _spec = _step4.value;
_this2.navLinks['new'](_spec);
}
} catch (err) {
_didIteratorError4 = true;
_iteratorError4 = err;
} finally {
try {
if (!_iteratorNormalCompletion4 && _iterator4['return']) {
_iterator4['return']();
}
} finally {
if (_didIteratorError4) {
throw _iteratorError4;
}
}
}
};
case 'visTypes':
case 'fieldFormats':
case 'spyModes':
case 'chromeNavControls':
case 'navbarExtensions':
case 'managementSections':
case 'devTools':
case 'docViews':
case 'hacks':
return function (plugin, spec) {
_this2.aliases[type] = _lodash2['default'].union(_this2.aliases[type] || [], spec);
};
case 'visTypeEnhancers':
return function (plugin, spec) {
//used for plugins that augment capabilities of an existing visualization
_this2.aliases.visTypes = _lodash2['default'].union(_this2.aliases.visTypes || [], spec);
};
case 'bundle':
return function (plugin, spec) {
_this2.bundleProviders.push(spec);
};
case 'aliases':
return function (plugin, specs) {
_lodash2['default'].forOwn(specs, function (spec, adhocType) {
_this2.aliases[adhocType] = _lodash2['default'].union(_this2.aliases[adhocType] || [], spec);
});
};
case 'injectDefaultVars':
return function (plugin, injector) {
plugin.extendInit(_asyncToGenerator(function* (server, options) {
_lodash2['default'].merge(_this2.defaultInjectedVars, (yield injector.call(plugin, server, options)));
}));
};
case 'replaceInjectedVars':
return function (plugin, replacer) {
_this2.injectedVarsReplacers.push(replacer);
};
}
}
}, {
key: 'find',
value: function find(patterns) {
var aliases = this.aliases;
var names = _lodash2['default'].keys(aliases);
var matcher = _lodash2['default'].partialRight(_minimatch2['default'].filter, { matchBase: true });
return _lodash2['default'].chain(patterns).map(function (pattern) {
return names.filter(matcher(pattern));
}).flattenDeep().reduce(function (found, name) {
return found.concat(aliases[name]);
}, []).value();
}
}, {
key: 'getAllApps',
value: function getAllApps() {
var _ref2;
var apps = this.apps;
return (_ref2 = [].concat(_toConsumableArray(apps))).concat.apply(_ref2, _toConsumableArray(apps.hidden));
}
}, {
key: 'getApp',
value: function getApp(id) {
return this.apps.byId[id];
}
}, {
key: 'getHiddenApp',
value: function getHiddenApp(id) {
return this.apps.hidden.byId[id];
}
}, {
key: 'getBundleProviders',
value: function getBundleProviders() {
return this.bundleProviders;
}
}]);
return UiExports;
})();
module.exports = UiExports;