🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

huxy-node-server

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

huxy-node-server - npm Package Compare versions

Comparing version
1.0.8
to
1.0.9
+1
-1
package.json
{
"name": "huxy-node-server",
"version": "1.0.8",
"version": "1.0.9",
"description": "一个精炼、高性能的 Express.js 服务器模板,为现代 Node.js 应用程序设计,提供灵活的功能和最佳实践。",

@@ -5,0 +5,0 @@ "type": "module",

+112
-109

@@ -12,19 +12,19 @@ import L from 'express';

import G from 'node:net';
var c = (e = new Date()) => e.toLocaleString('zh-CN', {timeZone: 'Asia/Shanghai', hour12: !1}),
var m = (e = new Date()) => e.toLocaleString('zh-CN', {timeZone: 'Asia/Shanghai', hour12: !1}),
w = e => Object.prototype.toString.call(e).slice(8, -1).toLowerCase(),
g = e => {
h = e => {
let r = e ? 'https' : 'http',
o = j.networkInterfaces(),
t = [];
return (Object.keys(o).map(n => t.push(...o[n])), t.filter(n => n.family === 'IPv4').map(n => n.address));
t = j.networkInterfaces(),
o = [];
return (Object.keys(t).map(n => o.push(...t[n])), o.filter(n => n.family === 'IPv4').map(n => n.address));
},
y = e => {
let r = e ?? process.argv.slice(2) ?? [],
o = {};
t = {};
return (
r.map(t => {
let [s, n] = t.split('=');
o[s] = n;
r.map(o => {
let [s, n] = o.split('=');
t[s] = n;
}),
o
t
);

@@ -46,63 +46,63 @@ },

},
V = (e, r, o) => {
let [t, s] = e.split('.');
t && s ? (o[t] || (o[t] = {}), (o[t][s] = r)) : (o[t] = r);
V = (e, r, t) => {
let [o, s] = e.split('.');
o && s ? (t[o] || (t[o] = {}), (t[o][s] = r)) : (t[o] = r);
},
v = (e = {}, r = F) => {
let {env: o} = process;
let {env: t} = process;
Object.keys(r).map(s => {
let n = o[s] ?? e[s];
let n = t[s] ?? e[s];
n && V(r[s], n, e);
});
let t = {...e, ...y()};
return ((t.port = t.staticPort || t.port), (t.isDev = t.nodeEnv === 'development'), (t.protocol = 'http'), t);
let o = {...e, ...y()};
return ((o.port = o.staticPort || o.port), (o.isDev = o.nodeEnv === 'development'), (o.protocol = 'http'), o);
},
x = (e, r = '127.0.0.1') =>
new Promise(o => {
let t = G.createServer();
(t.once('error', s => {
(t.close(), o((s.code === 'EADDRINUSE', !1)));
new Promise(t => {
let o = G.createServer();
(o.once('error', s => {
(o.close(), t((s.code === 'EADDRINUSE', !1)));
}),
t.once('listening', () => {
(t.close(), o(!0));
o.once('listening', () => {
(o.close(), t(!0));
}),
t.listen(Number(e), r));
o.listen(Number(e), r));
}),
A = (e, r = {}, o) => {
let t = s => {
(o.warn(`\u6536\u5230 ${s} \u4FE1\u53F7, \u{1F6D1} \u6B63\u5728\u5173\u95ED\u670D\u52A1\u5668...`),
A = (e, r = {}, t) => {
let o = s => {
(t.warn(`\u6536\u5230 ${s} \u4FE1\u53F7, \u{1F6D1} \u6B63\u5728\u5173\u95ED\u670D\u52A1\u5668...`),
e.close(async () => {
(o.info('\u{1F44B} \u670D\u52A1\u5668\u5DF2\u5173\u95ED'), await r.shutdown?.(), process.exit(0));
(t.info('\u{1F44B} \u670D\u52A1\u5668\u5DF2\u5173\u95ED'), await r.shutdown?.(), process.exit(0));
}),
setTimeout(() => {
(o.error('\u274C \u5F3A\u5236\u5173\u95ED\u670D\u52A1\u5668'), process.exit(1));
(t.error('\u274C \u5F3A\u5236\u5173\u95ED\u670D\u52A1\u5668'), process.exit(1));
}, 5e3));
};
(process.on('SIGTERM', () => t('SIGTERM')),
process.on('SIGINT', () => t('SIGINT')),
(process.on('SIGTERM', () => o('SIGTERM')),
process.on('SIGINT', () => o('SIGINT')),
process.on('uncaughtException', s => {
(o.fatal(s, `\u{1F4A5} \u672A\u6355\u83B7\u7684\u5F02\u5E38: ${s.message}`), process.exit(1));
(t.fatal(s, `\u{1F4A5} \u672A\u6355\u83B7\u7684\u5F02\u5E38: ${s.message}`), process.exit(1));
}),
process.on('unhandledRejection', (s, n) => {
(o.fatal({reason: s, promise: n}, '\u26A0\uFE0F \u672A\u5904\u7406\u7684 Promise \u62D2\u7EDD'), process.exit(1));
(t.fatal({reason: s, promise: n}, '\u26A0\uFE0F \u672A\u5904\u7406\u7684 Promise \u62D2\u7EDD'), process.exit(1));
}));
},
$ = (e, {port: r, host: o = '0.0.0.0'} = {}) =>
new Promise((t, s) => {
let n = a => {
(p(), s(a));
$ = (e, {port: r, host: t = '0.0.0.0'} = {}) =>
new Promise((o, s) => {
let n = c => {
(a(), s(c));
},
i = () => {
(p(), t(e));
(a(), o(e));
},
p = () => {
a = () => {
(e.off('error', n), e.off('listening', i));
};
(e.once('error', n), e.once('listening', i), e.listen(r, o));
(e.once('error', n), e.once('listening', i), e.listen(r, t));
}),
R = (e, r = 56) => {
let o = e.length,
t = r - o,
s = ~~(t / 2);
return `${'-'.repeat(s)}${e}${'-'.repeat(t - s)}`;
let t = e.length,
o = r - t,
s = ~~(o / 2);
return `${'-'.repeat(s)}${e}${'-'.repeat(o - s)}`;
};

@@ -130,23 +130,23 @@ import 'dotenv';

S = W;
var f = (e, {transportOpt: r, ...o} = {}) =>
var u = (e, {transportOpt: r, ...t} = {}) =>
b({
name: e,
level: S.logLevel,
formatters: {level: t => ({level: t})},
formatters: {level: o => ({level: o})},
timestamp: b.stdTimeFunctions.isoTime,
base: null,
transport: {target: 'pino-pretty', options: {colorize: !0, levelFirst: !0, ...r}, ignore: 'pid,hostname,level,time', translateTime: 'SYS:yyyy-mm-dd HH:MM:ss'},
...o,
...t,
});
var h = f;
var O = f('error-handler'),
N = e => (r, o, t) => {
(O.error({message: 'Not Found', timestamp: c(), url: r.originalUrl, method: r.method, ip: r.ip, userAgent: r.get('User-Agent')}, '\u627E\u4E0D\u5230\u8DEF\u5F84'),
o.status(404).json({success: !1, status: 404, url: r.originalUrl, message: `\u8DEF\u7531 [${r.method} ${r.originalUrl}] \u4E0D\u5B58\u5728`, timestamp: c()}));
var f = u;
var O = u('error-handler'),
N = e => (r, t, o) => {
(O.error({message: 'Not Found', timestamp: m(), url: r.originalUrl, method: r.method, ip: r.ip, userAgent: r.get('User-Agent')}, '\u627E\u4E0D\u5230\u8DEF\u5F84'),
t.status(404).json({success: !1, status: 404, url: r.originalUrl, message: `\u8DEF\u7531 [${r.method} ${r.originalUrl}] \u4E0D\u5B58\u5728`, timestamp: m()}));
},
_ = e => (r, o, t, s) => {
_ = e => (r, t, o, s) => {
let n = r.status || 500,
i = r.message;
(O.error({message: i, timestamp: c(), stack: r.stack, url: o.originalUrl, method: o.method, ip: o.ip, userAgent: o.get('User-Agent')}, '\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF'),
t.status(n).json({success: !1, message: (e.isDev, i), stack: e.isDev ? r.stack : void 0, timestamp: c()}));
(O.error({message: i, timestamp: m(), stack: r.stack, url: t.originalUrl, method: t.method, ip: t.ip, userAgent: t.get('User-Agent')}, '\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF'),
o.status(n).json({success: !1, message: (e.isDev, i), stack: e.isDev ? r.stack : void 0, timestamp: m()}));
};

@@ -157,7 +157,7 @@ import {Router as K} from 'express';

return (
r.use('/health', (o, t) => {
t.status(200).json({status: 'OK', timestamp: c(), environment: e.nodeEnv, uptime: process.uptime(), memoryUsage: process.memoryUsage(), pid: process.pid});
r.use('/health', (t, o) => {
o.status(200).json({status: 'OK', timestamp: m(), environment: e.nodeEnv, uptime: process.uptime(), memoryUsage: process.memoryUsage(), pid: process.pid});
}),
r.get('/', (o, t) => {
t.status(200).json({message: 'Node.js \u670D\u52A1\u5668\u8FD0\u884C\u4E2D', timestamp: c(), environment: e.nodeEnv});
r.get('/', (t, o) => {
o.status(200).json({message: 'Node.js \u670D\u52A1\u5668\u8FD0\u884C\u4E2D', timestamp: m(), environment: e.nodeEnv});
}),

@@ -168,6 +168,10 @@ r

M = z;
var ee = (e, r = {}, o) => {
var ee = (e, r = {}) => {
(e.disable('x-powered-by'),
e.set('trust proxy', r.trustProxy ?? 1),
e.use(Z({logger: o, quietReqLogger: !0, autoLogging: !1, genReqId: !1})),
r.httpLogger
? e.use((t, o, s) => {
t.log = r.httpLogger;
})
: e.use(Z({logger: f('http-request', r.loggerConfig), quietReqLogger: !0, autoLogging: !1, genReqId: !1})),
e.use(Y()),

@@ -184,46 +188,45 @@ e.use(B(r.helmet)),

oe = async (e = {}, r) => {
let o = h(e.loggerName || 'huxy', e.loggerConfig),
t = h('http-request', e.loggerConfig),
s = v(e),
{port: n, ssl: i} = s;
(await x(n, s.host)) || ((s.port = Number(n) + 1), o.warn(`\u7AEF\u53E3 ${n} \u5DF2\u88AB\u5360\u7528\uFF0C\u73B0\u5728\u4F7F\u7528\u7AEF\u53E3 ${s.port}`));
let t = v(e),
o = t.logger ?? f(t.loggerName || 'huxy', t.loggerConfig),
{port: s, ssl: n} = t;
(await x(s, t.host)) || ((t.port = Number(s) + 1), o.warn(`\u7AEF\u53E3 ${s} \u5DF2\u88AB\u5360\u7528\uFF0C\u73B0\u5728\u4F7F\u7528\u7AEF\u53E3 ${t.port}`));
let a = L();
ee(a, s, t);
let l;
(i
? (w(i) === 'object' ||
ee(a, t);
let c;
(n
? (w(n) === 'object' ||
(o.error({ssl: {key: '/path/to/name.key', cert: '/path/to/name.pem'}}, '\u26A0\uFE0F \u8BF7\u8BBE\u7F6E\u6709\u6548 SSL \u6216\u8BBE\u7F6E {ssl: false}'), process.exit(1)),
(s.protocol = 'https'),
(l = q.createServer(i, a)),
C((d, u) => {
(u.writeHead(301, {Location: `${s.protocol}://${d.headers.host}${d.url}`}), u.end());
(t.protocol = 'https'),
(c = q.createServer(n, a)),
C((l, d) => {
(d.writeHead(301, {Location: `${t.protocol}://${l.headers.host}${l.url}`}), d.end());
}).listen(80))
: (l = C(a)),
A(l, s, o));
: (c = C(a)),
A(c, t, o));
try {
await $(l, s);
} catch (m) {
(o.error({err: m}, '\u26A0\uFE0F \u670D\u52A1\u5668\u542F\u52A8\u5931\u8D25'), process.exit(1));
await $(c, t);
} catch (p) {
(o.error({err: p}, '\u26A0\uFE0F \u670D\u52A1\u5668\u542F\u52A8\u5931\u8D25'), process.exit(1));
}
try {
await r?.(s, a, l, o);
} catch (m) {
(o.error({err: m}, `\u274C \u56DE\u8C03\u51FD\u6570\u9519\u8BEF\uFF1A${m.message}`), process.exit(1));
await r?.(t, a, c, o);
} catch (p) {
(o.error({err: p}, `\u274C \u56DE\u8C03\u51FD\u6570\u9519\u8BEF\uFF1A${p.message}`), process.exit(1));
}
return (te(a, s), {app: a, httpServer: l, config: s, logger: o});
return (te(a, t), {app: a, httpServer: c, config: t, logger: o});
},
D = oe;
var re = (e, r, o) =>
D({...S, ...e}, async (t, s, n, i) => {
let {port: p, host: a, nodeEnv: l, basepath: m, appName: d = 'HuxyServer', protocol: u} = t;
if (!o) {
let U = g()
.filter(E => E !== a)
.map(E => `${u}://${E}:${p}${m}`);
var re = (e, r, t) =>
D({...S, ...e}, async (o, s, n, i) => {
let {port: a, host: c, nodeEnv: p, basepath: l, appName: d = 'HuxyServer', protocol: g} = o;
if (!t) {
let U = h()
.filter(E => E !== c)
.map(E => `${g}://${E}:${a}${l}`);
(i.info(R(d)),
i.info(`\u{1F680} \u670D\u52A1\u8FD0\u884C\u5728\u3010${l}\u3011\u73AF\u5883: ${u}://${a}:${p}${m}`),
i.info(`-----------------[${c()}]------------------`),
i.info(`\u{1F680} \u670D\u52A1\u8FD0\u884C\u5728\u3010${p}\u3011\u73AF\u5883: ${g}://${c}:${a}${l}`),
i.info(`-----------------[${m()}]------------------`),
i.info({ips: U}, '\u672C\u5730\u5730\u5740\uFF1A'));
}
await r?.(t, s, n, i);
await r?.(o, s, n, i);
}),

@@ -240,28 +243,28 @@ T = re;

pe = (e, r) =>
T({...ce, ...e}, async (o, t, s, n) => {
await r?.(o, t, s, n);
let {basepath: i, buildPath: p} = o;
T({...ce, ...e}, async (t, o, s, n) => {
await r?.(t, o, s, n);
let {basepath: i, buildPath: a} = t;
(i !== '/' &&
t.get('/', (m, d, u) => {
if (m.path === '/') return d.redirect(i);
u();
o.get('/', (l, d, g) => {
if (l.path === '/') return d.redirect(i);
g();
}),
t.use(i, ae.static(p, {...o.staticCache})));
let a = me(i),
l = new RegExp(`^${a.replace(/\//g, '\\/')}(.*)$`);
t.get(l, (m, d) => {
d.sendFile(H(p, 'index.html'));
o.use(i, ae.static(a, {...t.staticCache})));
let c = me(i),
p = new RegExp(`^${c.replace(/\//g, '\\/')}(.*)$`);
o.get(p, (l, d) => {
d.sendFile(H(a, 'index.html'));
});
}),
k = pe;
var ot = {startServer: T, startStatic: k, logger: h, createLogger: f, dateTime: c, localIPs: g, nodeArgs: y, getEnvConfig: v, checkPort: x, getDirName: P, resolvePath: I};
var ot = {startServer: T, startStatic: k, logger: f, createLogger: u, dateTime: m, localIPs: h, nodeArgs: y, getEnvConfig: v, checkPort: x, getDirName: P, resolvePath: I};
export {
x as checkPort,
f as createLogger,
c as dateTime,
u as createLogger,
m as dateTime,
ot as default,
P as getDirName,
v as getEnvConfig,
g as localIPs,
h as logger,
h as localIPs,
f as logger,
y as nodeArgs,

@@ -268,0 +271,0 @@ I as resolvePath,