fusion-plugin-rpc
Version:
Fetch data on the server and client with an RPC style interface.
50 lines (48 loc) • 4.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fusionCore = require("fusion-core");
var _fusionPluginUniversalEvents = require("fusion-plugin-universal-events");
var _missingHandlerError = _interopRequireDefault(require("./missing-handler-error"));
var _tokens = require("./tokens");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** Copyright (c) 2018 Uber Technologies, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
class RPC {
constructor(handlers) {
this.handlers = handlers;
}
async request(method, args) {
if (!this.handlers) {
throw new Error('fusion-plugin-rpc requires `handlers`');
}
if (!this.handlers[method]) {
throw new _missingHandlerError.default(method);
}
return this.handlers[method](args);
}
}
const plugin = (0, _fusionCore.createPlugin)({
deps: {
RouteTags: _fusionCore.RouteTagsToken.optional,
handlers: _tokens.RPCHandlersToken,
// $FlowFixMe
emitter: _fusionPluginUniversalEvents.UniversalEventsToken.optional
},
provides: ({
handlers
} = {}) => {
return {
from: () => new RPC(handlers)
};
}
});
var _default = plugin;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSUEMiLCJjb25zdHJ1Y3RvciIsImhhbmRsZXJzIiwicmVxdWVzdCIsIm1ldGhvZCIsImFyZ3MiLCJFcnJvciIsIk1pc3NpbmdIYW5kbGVyRXJyb3IiLCJwbHVnaW4iLCJjcmVhdGVQbHVnaW4iLCJkZXBzIiwiUm91dGVUYWdzIiwiUm91dGVUYWdzVG9rZW4iLCJvcHRpb25hbCIsIlJQQ0hhbmRsZXJzVG9rZW4iLCJlbWl0dGVyIiwiVW5pdmVyc2FsRXZlbnRzVG9rZW4iLCJwcm92aWRlcyIsImZyb20iXSwic291cmNlcyI6WyJzcmMvbW9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ29weXJpZ2h0IChjKSAyMDE4IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7Y3JlYXRlUGx1Z2luLCBSb3V0ZVRhZ3NUb2tlbn0gZnJvbSAnZnVzaW9uLWNvcmUnO1xuaW1wb3J0IHR5cGUge0NvbnRleHR9IGZyb20gJ2Z1c2lvbi1jb3JlJztcbmltcG9ydCB0eXBlIHtGZXRjaH0gZnJvbSAnZnVzaW9uLXRva2Vucyc7XG5pbXBvcnQge1VuaXZlcnNhbEV2ZW50c1Rva2VufSBmcm9tICdmdXNpb24tcGx1Z2luLXVuaXZlcnNhbC1ldmVudHMnO1xuXG5pbXBvcnQgTWlzc2luZ0hhbmRsZXJFcnJvciBmcm9tICcuL21pc3NpbmctaGFuZGxlci1lcnJvcic7XG5pbXBvcnQge1JQQ0hhbmRsZXJzVG9rZW59IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB0eXBlIHtIYW5kbGVyVHlwZX0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1JQQ1BsdWdpblR5cGUsIElFbWl0dGVyfSBmcm9tICcuL3R5cGVzJztcblxuY2xhc3MgUlBDIHtcbiAgY3R4OiBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgZW1pdHRlcjogSUVtaXR0ZXIgfCB1bmRlZmluZWQgfCBudWxsO1xuICBoYW5kbGVyczogSGFuZGxlclR5cGUgfCB1bmRlZmluZWQgfCBudWxsO1xuICBmZXRjaDogRmV0Y2ggfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGhhbmRsZXJzOiBhbnkpIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gaGFuZGxlcnM7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0PFRBcmdzLCBUUmVzdWx0PihtZXRob2Q6IHN0cmluZywgYXJnczogVEFyZ3MpOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZnVzaW9uLXBsdWdpbi1ycGMgcmVxdWlyZXMgYGhhbmRsZXJzYCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oYW5kbGVyc1ttZXRob2RdKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ0hhbmRsZXJFcnJvcihtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyc1ttZXRob2RdKGFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IHBsdWdpbjogUlBDUGx1Z2luVHlwZSA9IGNyZWF0ZVBsdWdpbih7XG4gIGRlcHM6IHtcbiAgICBSb3V0ZVRhZ3M6IFJvdXRlVGFnc1Rva2VuLm9wdGlvbmFsLFxuICAgIGhhbmRsZXJzOiBSUENIYW5kbGVyc1Rva2VuLFxuICAgIC8vICRGbG93Rml4TWVcbiAgICBlbWl0dGVyOiBVbml2ZXJzYWxFdmVudHNUb2tlbi5vcHRpb25hbCxcbiAgfSxcbiAgcHJvdmlkZXM6ICh7aGFuZGxlcnN9ID0ge30gYXMgYW55KSA9PiB7XG4gICAgcmV0dXJuIHtmcm9tOiAoKSA9PiBuZXcgUlBDKGhhbmRsZXJzKX07XG4gIH0sXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgcGx1Z2luO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFPQTtBQUdBO0FBRUE7QUFDQTtBQUEwQztBQWIxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBWUEsTUFBTUEsR0FBRyxDQUFDO0VBTVJDLFdBQVcsQ0FBQ0MsUUFBYSxFQUFFO0lBQ3pCLElBQUksQ0FBQ0EsUUFBUSxHQUFHQSxRQUFRO0VBQzFCO0VBRUEsTUFBTUMsT0FBTyxDQUFpQkMsTUFBYyxFQUFFQyxJQUFXLEVBQW9CO0lBQzNFLElBQUksQ0FBQyxJQUFJLENBQUNILFFBQVEsRUFBRTtNQUNsQixNQUFNLElBQUlJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQztJQUMxRDtJQUVBLElBQUksQ0FBQyxJQUFJLENBQUNKLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLEVBQUU7TUFDMUIsTUFBTSxJQUFJRyw0QkFBbUIsQ0FBQ0gsTUFBTSxDQUFDO0lBQ3ZDO0lBQ0EsT0FBTyxJQUFJLENBQUNGLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLENBQUNDLElBQUksQ0FBQztFQUNwQztBQUNGO0FBRUEsTUFBTUcsTUFBcUIsR0FBRyxJQUFBQyx3QkFBWSxFQUFDO0VBQ3pDQyxJQUFJLEVBQUU7SUFDSkMsU0FBUyxFQUFFQywwQkFBYyxDQUFDQyxRQUFRO0lBQ2xDWCxRQUFRLEVBQUVZLHdCQUFnQjtJQUMxQjtJQUNBQyxPQUFPLEVBQUVDLGlEQUFvQixDQUFDSDtFQUNoQyxDQUFDO0VBQ0RJLFFBQVEsRUFBRSxDQUFDO0lBQUNmO0VBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBUSxLQUFLO0lBQ3BDLE9BQU87TUFBQ2dCLElBQUksRUFBRSxNQUFNLElBQUlsQixHQUFHLENBQUNFLFFBQVE7SUFBQyxDQUFDO0VBQ3hDO0FBQ0YsQ0FBQyxDQUFDO0FBQUMsZUFFWU0sTUFBTTtBQUFBIn0=