@buzuli/app
Version:
App scaffold for Node.js
42 lines (33 loc) • 833 B
JavaScript
module.exports = app
const { resolveModules } = require('./modules')
function app (entry, options) {
if (typeof entry === 'function') {
return run(options, entry)
} else if (typeof options === 'function') {
return run(entry, options)
} else {
// Permit "currying"
const curryOptions = options || entry
return entry => run(curryOptions, entry)
}
}
async function run (options, entry) {
const unhandled = require('@buzuli/unhandled')
const {
handle = { exit: true },
modules = {},
logger = console
} = options || {}
unhandled(handle)
try {
const resolvedModules = await resolveModules(modules)
const context = {
modules: resolvedModules,
logger
}
await entry(context)
} catch (error) {
console.error('Fatal:', error)
process.exit(1)
}
}