stack-trace-mapper/server/middleware/source-maps.js
2019-02-13 21:26:28 +01:00

63 lines
1.3 KiB
JavaScript

'use strict'
const _ = require('lodash')
const remapper = require('../util/remap')
const handlers = require('../handlers/source-maps')
const { SourceMapConsumer } = require('source-map')
function create (req, res) {
const sourceMap = _.mapKeys(req.body, (val, key) => _.camelCase(key))
if (!sourceMap.content && req.file) {
sourceMap.content = req.file.buffer.toString('utf8')
}
console.log(sourceMap)
handlers.create(sourceMap).then(() => {
res.render('index')
})
}
function getOne (req, res, next) {
next()
}
function listAll (req, res, next) {
handlers.listAll().then((sourceMaps) => {
res.locals.sourceMaps = sourceMaps
res.json(sourceMaps)
}).catch(next)
}
function remap (req, res, next) {
const body = _.mapKeys(req.body, (val, key) => _.camelCase(key))
const promise = body.content ? Promise.resolve(body) : handlers.get(body)
promise
.then((sourceMap) => new SourceMapConsumer(sourceMap.content))
.then((consumer) => {
const remapped = remapper(body.stack, consumer)
consumer.destroy()
if (req.accepts([ 'json', 'html' ]) === 'json') {
res.json(remapped)
} else {
res.locals.stack = remapped
res.render('remap-result')
}
})
.catch(next)
}
module.exports = {
remap,
create,
getOne,
listAll,
}