fusion-plugin-rpc
Version:
Fetch data on the server and client with an RPC style interface.
19 lines (15 loc) • 3.58 kB
JavaScript
import mapObject from 'just-map-object';
import isEqual from 'just-compare';
import ResponseError from './response-error';
const getMockRpcHandlers = (fixtures, onMockRpc) => fixtures.reduce((rpcHandlers, fixture) => ({ ...rpcHandlers,
...mapObject(fixture, (rpcId, responseDetails) => async (...args) => {
const response = Array.isArray(responseDetails) ? responseDetails.filter(item => isEqual(item.args, args))[0].response : responseDetails;
onMockRpc && onMockRpc(rpcId, args, response);
if (response instanceof Error) {
throw response;
}
return response;
})
}), {});
export default getMockRpcHandlers;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2NrLXJwYy1oYW5kbGVycy5qcyJdLCJuYW1lcyI6WyJtYXBPYmplY3QiLCJpc0VxdWFsIiwiUmVzcG9uc2VFcnJvciIsImdldE1vY2tScGNIYW5kbGVycyIsImZpeHR1cmVzIiwib25Nb2NrUnBjIiwicmVkdWNlIiwicnBjSGFuZGxlcnMiLCJmaXh0dXJlIiwicnBjSWQiLCJyZXNwb25zZURldGFpbHMiLCJhcmdzIiwicmVzcG9uc2UiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpdGVtIiwiRXJyb3IiXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLFNBQVAsTUFBc0IsaUJBQXRCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixjQUFwQjtBQUNBLE9BQU9DLGFBQVAsTUFBMEIsa0JBQTFCOztBQWVBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCQyxRQUR5QixFQUV6QkMsU0FGeUIsS0FJekJELFFBQVEsQ0FBQ0UsTUFBVCxDQUNFLENBQUNDLFdBQUQsRUFBY0MsT0FBZCxNQUEyQixFQUN6QixHQUFHRCxXQURzQjtBQUV6QixLQUFHUCxTQUFTLENBQUNRLE9BQUQsRUFBVSxDQUFDQyxLQUFELEVBQVFDLGVBQVIsS0FBNEIsT0FBTyxHQUFHQyxJQUFWLEtBQW1CO0FBQ25FLFVBQU1DLFFBQVEsR0FBR0MsS0FBSyxDQUFDQyxPQUFOLENBQWNKLGVBQWQsSUFDYkEsZUFBZSxDQUFDSyxNQUFoQixDQUF3QkMsSUFBRCxJQUFVZixPQUFPLENBQUNlLElBQUksQ0FBQ0wsSUFBTixFQUFZQSxJQUFaLENBQXhDLEVBQTJELENBQTNELEVBQ0dDLFFBRlUsR0FHYkYsZUFISjtBQUtBTCxJQUFBQSxTQUFTLElBQUlBLFNBQVMsQ0FBQ0ksS0FBRCxFQUFRRSxJQUFSLEVBQWNDLFFBQWQsQ0FBdEI7O0FBRUEsUUFBSUEsUUFBUSxZQUFZSyxLQUF4QixFQUErQjtBQUM3QixZQUFNTCxRQUFOO0FBQ0Q7O0FBRUQsV0FBT0EsUUFBUDtBQUNELEdBYlc7QUFGYSxDQUEzQixDQURGLEVBa0JFLEVBbEJGLENBSkY7O0FBeUJBLGVBQWVULGtCQUFmIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCBtYXBPYmplY3QgZnJvbSAnanVzdC1tYXAtb2JqZWN0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5pbXBvcnQgUmVzcG9uc2VFcnJvciBmcm9tICcuL3Jlc3BvbnNlLWVycm9yJztcbmltcG9ydCB7dHlwZSBIYW5kbGVyVHlwZX0gZnJvbSAnLi90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBScGNSZXNwb25zZSA9IE9iamVjdCB8IFJlc3BvbnNlRXJyb3I7XG5leHBvcnQgdHlwZSBScGNSZXNwb25zZU1hcCA9IEFycmF5PHtcbiAgYXJnczogQXJyYXk8Kj4sXG4gIHJlc3BvbnNlOiBScGNSZXNwb25zZSxcbn0+O1xuZXhwb3J0IHR5cGUgUnBjRml4dHVyZVQgPSB7W3N0cmluZ106IFJwY1Jlc3BvbnNlTWFwIHwgUnBjUmVzcG9uc2V9O1xudHlwZSBPbk1vY2tScGNDYWxsYmFja1QgPSAoXG4gIGhhbmRsZXI6IHN0cmluZyxcbiAgYXJnczogQXJyYXk8Kj4sXG4gIHJlc3BvbnNlOiBScGNSZXNwb25zZVxuKSA9PiB2b2lkO1xuXG5jb25zdCBnZXRNb2NrUnBjSGFuZGxlcnMgPSAoXG4gIGZpeHR1cmVzOiBBcnJheTxScGNGaXh0dXJlVD4sXG4gIG9uTW9ja1JwYz86IE9uTW9ja1JwY0NhbGxiYWNrVFxuKTogSGFuZGxlclR5cGUgPT5cbiAgZml4dHVyZXMucmVkdWNlKFxuICAgIChycGNIYW5kbGVycywgZml4dHVyZSkgPT4gKHtcbiAgICAgIC4uLnJwY0hhbmRsZXJzLFxuICAgICAgLi4ubWFwT2JqZWN0KGZpeHR1cmUsIChycGNJZCwgcmVzcG9uc2VEZXRhaWxzKSA9PiBhc3luYyAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2VEZXRhaWxzKVxuICAgICAgICAgID8gcmVzcG9uc2VEZXRhaWxzLmZpbHRlcigoaXRlbSkgPT4gaXNFcXVhbChpdGVtLmFyZ3MsIGFyZ3MpKVswXVxuICAgICAgICAgICAgICAucmVzcG9uc2VcbiAgICAgICAgICA6IHJlc3BvbnNlRGV0YWlscztcblxuICAgICAgICBvbk1vY2tScGMgJiYgb25Nb2NrUnBjKHJwY0lkLCBhcmdzLCByZXNwb25zZSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG5cbmV4cG9ydCBkZWZhdWx0IGdldE1vY2tScGNIYW5kbGVycztcbiJdfQ==