const url = require('url') const path = require('path') const launch = require('launch-editor') module.exports = (specifiedEditor, srcRoot, onErrorCallback) => { if (typeof specifiedEditor === 'function') { onErrorCallback = specifiedEditor specifiedEditor = undefined } if (typeof srcRoot === 'function') { onErrorCallback = srcRoot srcRoot = undefined } srcRoot = srcRoot || process.cwd() return function launchEditorMiddleware (req, res, next) { const { file } = url.parse(req.url, true).query || {} if (!file) { res.statusCode = 500 res.end(`launch-editor-middleware: required query param "file" is missing.`) } else { launch(path.resolve(srcRoot, file), specifiedEditor, onErrorCallback) res.end() } } }