UNPKG

fusion-plugin-rpc

Version:

Fetch data on the server and client with an RPC style interface.

61 lines (49 loc) 4.79 kB
"use strict"; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2NrLmpzIl0sIm5hbWVzIjpbIlJQQyIsImNvbnN0cnVjdG9yIiwiaGFuZGxlcnMiLCJyZXF1ZXN0IiwibWV0aG9kIiwiYXJncyIsIkVycm9yIiwiTWlzc2luZ0hhbmRsZXJFcnJvciIsInBsdWdpbiIsImRlcHMiLCJSb3V0ZVRhZ3MiLCJSb3V0ZVRhZ3NUb2tlbiIsIm9wdGlvbmFsIiwiUlBDSGFuZGxlcnNUb2tlbiIsImVtaXR0ZXIiLCJVbml2ZXJzYWxFdmVudHNUb2tlbiIsInByb3ZpZGVzIiwiZnJvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBOztBQUdBOztBQUVBOztBQUNBOzs7O0FBZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFZQSxNQUFNQSxHQUFOLENBQVU7QUFNUkMsRUFBQUEsV0FBVyxDQUFDQyxRQUFELEVBQWdCO0FBQ3pCLFNBQUtBLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0Q7O0FBRVksUUFBUEMsT0FBTyxDQUFpQkMsTUFBakIsRUFBaUNDLElBQWpDLEVBQWdFO0FBQzNFLFFBQUksQ0FBQyxLQUFLSCxRQUFWLEVBQW9CO0FBQ2xCLFlBQU0sSUFBSUksS0FBSixDQUFVLHVDQUFWLENBQU47QUFDRDs7QUFFRCxRQUFJLENBQUMsS0FBS0osUUFBTCxDQUFjRSxNQUFkLENBQUwsRUFBNEI7QUFDMUIsWUFBTSxJQUFJRyw0QkFBSixDQUF3QkgsTUFBeEIsQ0FBTjtBQUNEOztBQUNELFdBQU8sS0FBS0YsUUFBTCxDQUFjRSxNQUFkLEVBQXNCQyxJQUF0QixDQUFQO0FBQ0Q7O0FBbkJPOztBQXNCVixNQUFNRyxNQUFxQixHQUFHLDhCQUFhO0FBQ3pDQyxFQUFBQSxJQUFJLEVBQUU7QUFDSkMsSUFBQUEsU0FBUyxFQUFFQywyQkFBZUMsUUFEdEI7QUFFSlYsSUFBQUEsUUFBUSxFQUFFVyx3QkFGTjtBQUdKO0FBQ0FDLElBQUFBLE9BQU8sRUFBRUMsa0RBQXFCSDtBQUoxQixHQURtQztBQU96Q0ksRUFBQUEsUUFBUSxFQUFFLENBQUM7QUFBQ2QsSUFBQUE7QUFBRCxNQUFhLEVBQWQsS0FBcUI7QUFDN0IsV0FBTztBQUFDZSxNQUFBQSxJQUFJLEVBQUUsTUFBTSxJQUFJakIsR0FBSixDQUFRRSxRQUFSO0FBQWIsS0FBUDtBQUNEO0FBVHdDLENBQWIsQ0FBOUI7ZUFZZU0sTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBDb3B5cmlnaHQgKGMpIDIwMTggVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBAZmxvd1xuICovXG5cbmltcG9ydCB7Y3JlYXRlUGx1Z2luLCBSb3V0ZVRhZ3NUb2tlbn0gZnJvbSAnZnVzaW9uLWNvcmUnO1xuaW1wb3J0IHR5cGUge0NvbnRleHR9IGZyb20gJ2Z1c2lvbi1jb3JlJztcbmltcG9ydCB0eXBlIHtGZXRjaH0gZnJvbSAnZnVzaW9uLXRva2Vucyc7XG5pbXBvcnQge1VuaXZlcnNhbEV2ZW50c1Rva2VufSBmcm9tICdmdXNpb24tcGx1Z2luLXVuaXZlcnNhbC1ldmVudHMnO1xuXG5pbXBvcnQgTWlzc2luZ0hhbmRsZXJFcnJvciBmcm9tICcuL21pc3NpbmctaGFuZGxlci1lcnJvcic7XG5pbXBvcnQge1JQQ0hhbmRsZXJzVG9rZW59IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB0eXBlIHtIYW5kbGVyVHlwZX0gZnJvbSAnLi90b2tlbnMuanMnO1xuaW1wb3J0IHR5cGUge1JQQ1BsdWdpblR5cGUsIElFbWl0dGVyfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY2xhc3MgUlBDIHtcbiAgY3R4OiA/Q29udGV4dDtcbiAgZW1pdHRlcjogP0lFbWl0dGVyO1xuICBoYW5kbGVyczogP0hhbmRsZXJUeXBlO1xuICBmZXRjaDogP0ZldGNoO1xuXG4gIGNvbnN0cnVjdG9yKGhhbmRsZXJzOiBhbnkpIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gaGFuZGxlcnM7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0PFRBcmdzLCBUUmVzdWx0PihtZXRob2Q6IHN0cmluZywgYXJnczogVEFyZ3MpOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZnVzaW9uLXBsdWdpbi1ycGMgcmVxdWlyZXMgYGhhbmRsZXJzYCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oYW5kbGVyc1ttZXRob2RdKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ0hhbmRsZXJFcnJvcihtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyc1ttZXRob2RdKGFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IHBsdWdpbjogUlBDUGx1Z2luVHlwZSA9IGNyZWF0ZVBsdWdpbih7XG4gIGRlcHM6IHtcbiAgICBSb3V0ZVRhZ3M6IFJvdXRlVGFnc1Rva2VuLm9wdGlvbmFsLFxuICAgIGhhbmRsZXJzOiBSUENIYW5kbGVyc1Rva2VuLFxuICAgIC8vICRGbG93Rml4TWVcbiAgICBlbWl0dGVyOiBVbml2ZXJzYWxFdmVudHNUb2tlbi5vcHRpb25hbCxcbiAgfSxcbiAgcHJvdmlkZXM6ICh7aGFuZGxlcnN9ID0ge30pID0+IHtcbiAgICByZXR1cm4ge2Zyb206ICgpID0+IG5ldyBSUEMoaGFuZGxlcnMpfTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBwbHVnaW47XG4iXX0=