UNPKG

@modern-js/server-core

Version:

A Progressive React Framework for modern web development.

107 lines (106 loc) 3.63 kB
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator"; import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator"; import { getPathname } from "../utils"; var LogPrefix; (function(LogPrefix2) { LogPrefix2["Outgoing"] = "-->"; LogPrefix2["Incoming"] = "<--"; LogPrefix2["Error"] = "xxx"; })(LogPrefix || (LogPrefix = {})); var humanize = function(times) { var delimiter = ",", separator = "."; var orderTimes = times.map(function(v) { return v.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1".concat(delimiter)); }); return orderTimes.join(separator); }; var time = function(start) { var delta = Date.now() - start; return humanize([ delta < 1e3 ? "".concat(delta, "ms") : "".concat(Math.round(delta / 1e3), "s") ]); }; var colorStatus = function(status) { var out = { 7: "\x1B[35m".concat(status, "\x1B[0m"), 5: "\x1B[31m".concat(status, "\x1B[0m"), 4: "\x1B[33m".concat(status, "\x1B[0m"), 3: "\x1B[36m".concat(status, "\x1B[0m"), 2: "\x1B[32m".concat(status, "\x1B[0m"), 1: "\x1B[32m".concat(status, "\x1B[0m"), 0: "\x1B[33m".concat(status, "\x1B[0m") }; var calculateStatus = Math.floor(status / 100); return out[calculateStatus]; }; function log(fn, prefix, method, path) { var status = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0, elapsed = arguments.length > 5 ? arguments[5] : void 0; var out = prefix === "<--" ? " ".concat(prefix, " ").concat(method, " ").concat(path) : " ".concat(prefix, " ").concat(method, " ").concat(path, " ").concat(colorStatus(status), " ").concat(elapsed); fn(out); } function logHandler() { return function() { var _logger = _async_to_generator(function(c, next) { var _c_env_node_res, _c_env_node, _c_env, method, monitors, path, logFn, start, _c_env_node_res_statusCode; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: method = c.req.method; monitors = c.get("monitors"); if (!!monitors) return [ 3, 2 ]; return [ 4, next() ]; case 1: _state.sent(); return [ 2 ]; case 2: path = getPathname(c.req.raw); logFn = monitors.debug; log(logFn, "<--", method, path); start = Date.now(); return [ 4, next() ]; case 3: _state.sent(); log(logFn, "-->", method, path, (_c_env_node_res_statusCode = c === null || c === void 0 ? void 0 : (_c_env = c.env) === null || _c_env === void 0 ? void 0 : (_c_env_node = _c_env.node) === null || _c_env_node === void 0 ? void 0 : (_c_env_node_res = _c_env_node.res) === null || _c_env_node_res === void 0 ? void 0 : _c_env_node_res.statusCode) !== null && _c_env_node_res_statusCode !== void 0 ? _c_env_node_res_statusCode : c.res.status, time(start)); return [ 2 ]; } }); }); function logger(c, next) { return _logger.apply(this, arguments); } return logger; }(); } var logPlugin = function() { return { name: "@modern-js/plugin-log", setup: function setup(api) { return { prepare: function prepare() { var middlewares = api.useAppContext().middlewares; middlewares.push({ name: "print_log", handler: logHandler() }); } }; } }; }; export { logPlugin };