@kitmi/jacaranda
Version:
JavaScript application framework
80 lines (79 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return fastServe;
}
});
const _serve = /*#__PURE__*/ _interop_require_default(require("./serve"));
const _utils = require("@kitmi/utils");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function fastServe(modules, { logger, engine, middlewares, ...features } = {}) {
const { routes, registry: moduleRegistry } = _utils._.reduce(modules, (result, module, route)=>{
const moduleName = (0, _utils.replaceAll)(route, '/', '_') + 'Module';
result.routes[route] = moduleName;
result.registry[moduleName] = module;
return result;
}, {
routes: {},
registry: {}
});
const { config: middlewareConfig, registry: middlewareRegistry } = (middlewares ?? []).reduce((result, middleware)=>{
if (typeof middleware === 'string') {
result.config.push(middleware);
return result;
}
const [name, fn, config] = middleware;
result.config.push(config ? [
name,
config
] : name);
result.registry[name] = fn;
return result;
}, {
config: [],
registry: {}
});
return (0, _serve.default)({
loadConfigFromOptions: true,
logLevel: logger?.level ?? 'verbose',
config: {
logger: {
level: 'verbose',
...logger
},
engine: {
type: 'koa',
port: 3388,
...engine
},
routing: {
'/': {
module: {
$source: 'registry',
$middlewares: [
'jsonError',
...middlewareConfig
],
...routes
}
}
},
...features
},
registry: {
controllers: {
modules: moduleRegistry
},
middlewares: middlewareRegistry
}
});
}
//# sourceMappingURL=fastServe.js.map