redux-devtools/packages/redux-devtools-cli/src/routes.js
Edoardo Lincetto 94c2c28cad
chore(redux-devtools-cli): upgrade graphql-server-express to apollo-server-express (#652)
* chore(devui): upgrade react-jsonschema-form to @rjsf/core

* chore(devui): remove @types/react-jsonschema-form

* chore(redux-devtools-cli): upgrade graphql-server-express to apollo-server-express

Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2020-10-11 17:57:47 -04:00

90 lines
2.4 KiB
JavaScript

var path = require('path');
var express = require('express');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var cors = require('cors');
var graphqlMiddleware = require('./middleware/graphql');
var app = express.Router();
function serveUmdModule(name) {
app.use(
express.static(
path.dirname(require.resolve(name + '/package.json')) + '/umd'
)
);
}
function routes(options, store, scServer) {
var limit = options.maxRequestBody;
var logHTTPRequests = options.logHTTPRequests;
if (logHTTPRequests) {
if (typeof logHTTPRequests === 'object')
app.use(morgan('combined', logHTTPRequests));
else app.use(morgan('combined'));
}
graphqlMiddleware(store).applyMiddleware({ app });
serveUmdModule('react');
serveUmdModule('react-dom');
serveUmdModule('redux-devtools-core');
app.get('/port.js', function (req, res) {
res.send('reduxDevToolsPort = ' + options.port);
});
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, '../app/index.html'));
});
app.use(cors({ methods: 'POST' }));
app.use(bodyParser.json({ limit: limit }));
app.use(bodyParser.urlencoded({ limit: limit, extended: false }));
app.post('/', function (req, res) {
if (!req.body) return res.status(404).end();
switch (req.body.op) {
case 'get':
store
.get(req.body.id)
.then(function (r) {
res.send(r || {});
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
res.sendStatus(500);
});
break;
case 'list':
store
.list(req.body.query, req.body.fields)
.then(function (r) {
res.send(r);
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
res.sendStatus(500);
});
break;
default:
store
.add(req.body)
.then(function (r) {
res.send({ id: r.id, error: r.error });
scServer.exchange.publish('report', {
type: 'add',
data: r,
});
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
res.status(500).send({});
});
}
});
return app;
}
module.exports = routes;