generated from dellevin/template
1
This commit is contained in:
42
node_modules/launch-editor-middleware/index.js
generated
vendored
Normal file
42
node_modules/launch-editor-middleware/index.js
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
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) {
|
||||
let url
|
||||
|
||||
try {
|
||||
const fullUrl = req.url.startsWith('http') ? req.url : `http://localhost${req.url}`
|
||||
url = new URL(fullUrl)
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
} catch (_err) {
|
||||
res.statusCode = 500
|
||||
res.end(`launch-editor-middleware: invalid URL.`)
|
||||
return
|
||||
}
|
||||
|
||||
const file = url.searchParams.get('file')
|
||||
if (!file) {
|
||||
res.statusCode = 500
|
||||
res.end(
|
||||
`launch-editor-middleware: required query param "file" is missing.`
|
||||
)
|
||||
} else {
|
||||
const resolved = file.startsWith('file://') ? file : path.resolve(srcRoot, file)
|
||||
launch(resolved, specifiedEditor, onErrorCallback)
|
||||
res.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user