UNPKG

ac-koa

Version:

Modules for building Atlassian Connect and HipChat Connect add-ons

39 lines (34 loc) 1.19 kB
var check = require('check-types'); var verify = check.verify; var adapters = {}; var descriptors = {}; exports.require = function (adapterName, _adapter) { adapters[adapterName] = _adapter || require('ac-koa-' + adapterName); }; exports.create = function (descriptor, baseUrl, services, options, config) { check.map(descriptor, { modules: verify.maybe.object, capabilities: verify.maybe.object }); var compatibleAdapters = Object.keys(adapters).filter(function (name) { return adapters[name].recognizes(descriptor); }).map(function (name) { return adapters[name]; }); if (compatibleAdapters.length === 0) { var inspected = require('util').inspect(descriptor, {depth: 10}); throw new Error('No adapter found that recognizes descriptor:', inspected); } var Adapter = compatibleAdapters[0]; return Adapter(baseUrl, services, options, config); }; exports.factories = function (app, scope) { var chooser = {}; Object.keys(adapters).forEach(function (adapterName) { var Adapter = adapters[adapterName]; chooser[adapterName] = function () { return app.addon(scope, Adapter.emptyDescriptor()); }; }); return chooser; };