@jayfong/x-server 2.49.4 → 2.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  exports.__esModule = true;
5
5
  exports.Server = void 0;
6
6
  var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
7
+ var _nodeProcess = _interopRequireDefault(require("node:process"));
7
8
  var _fastify = _interopRequireDefault(require("fastify"));
8
9
  var _vtils = require("vtils");
9
10
  var _x = require("../x");
@@ -15,6 +16,9 @@ class Server {
15
16
  this.fastify = void 0;
16
17
  this.routes = [];
17
18
  Server.options = options;
19
+ _nodeProcess.default.on('unhandledRejection', (reason, promise) => {
20
+ console.error('未捕获的错误', reason, promise);
21
+ });
18
22
  }
19
23
  async start() {
20
24
  this.applyServices();
@@ -33,7 +37,7 @@ class Server {
33
37
  }
34
38
  async prepareFastify() {
35
39
  this.fastify = await (0, _fastify.default)({
36
- logger: process.env.NODE_ENV === 'development' ? {
40
+ logger: _nodeProcess.default.env.NODE_ENV === 'development' ? {
37
41
  transport: {
38
42
  target: 'pino-pretty'
39
43
  }
@@ -17,6 +17,53 @@ class LogService {
17
17
  flags: 'a'
18
18
  });
19
19
  }, logFile => logFile);
20
+ this.info = (title, desc) => {
21
+ this.log({
22
+ level: 'info',
23
+ title,
24
+ desc
25
+ });
26
+ };
27
+ this.success = (title, desc) => {
28
+ this.log({
29
+ level: 'success',
30
+ title,
31
+ desc
32
+ });
33
+ };
34
+ this.error = (title, desc) => {
35
+ this.log({
36
+ level: 'error',
37
+ title,
38
+ desc
39
+ });
40
+ };
41
+ this.console = {
42
+ info: (title, desc) => {
43
+ this.log({
44
+ writer: 'console',
45
+ level: 'info',
46
+ title,
47
+ desc
48
+ });
49
+ },
50
+ success: (title, desc) => {
51
+ this.log({
52
+ writer: 'console',
53
+ level: 'success',
54
+ title,
55
+ desc
56
+ });
57
+ },
58
+ error: (title, desc) => {
59
+ this.log({
60
+ writer: 'console',
61
+ level: 'error',
62
+ title,
63
+ desc
64
+ });
65
+ }
66
+ };
20
67
  }
21
68
  getLogFile(date) {
22
69
  const year = date.getFullYear();
@@ -44,28 +91,12 @@ class LogService {
44
91
  };
45
92
  }
46
93
  log(payload) {
47
- this.getLogWriter(this.logFile).write(`${[(0, _date.formatDate)(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}\n`);
48
- }
49
- info(title, desc) {
50
- this.log({
51
- level: 'info',
52
- title,
53
- desc
54
- });
55
- }
56
- success(title, desc) {
57
- this.log({
58
- level: 'success',
59
- title,
60
- desc
61
- });
62
- }
63
- error(title, desc) {
64
- this.log({
65
- level: 'error',
66
- title,
67
- desc
68
- });
94
+ const getContent = () => `${[(0, _date.formatDate)(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}`;
95
+ if (payload.writer === 'console') {
96
+ console[payload.level === 'error' ? 'error' : 'log'](getContent());
97
+ } else {
98
+ this.getLogWriter(this.logFile).write(`${getContent()}\n`);
99
+ }
69
100
  }
70
101
  }
71
102
  exports.LogService = LogService;
@@ -1,3 +1,4 @@
1
+ import process from 'node:process';
1
2
  import Fastify from 'fastify';
2
3
  import { base64UrlDecode, castArray, keyBy, noop, rot13 } from 'vtils';
3
4
  import { x } from "../x";
@@ -9,6 +10,9 @@ export class Server {
9
10
  this.fastify = void 0;
10
11
  this.routes = [];
11
12
  Server.options = options;
13
+ process.on('unhandledRejection', (reason, promise) => {
14
+ console.error('未捕获的错误', reason, promise);
15
+ });
12
16
  }
13
17
  async start() {
14
18
  this.applyServices();
@@ -2,7 +2,9 @@ import { Merge } from 'vtils/types';
2
2
  import { BaseService } from './base';
3
3
  export type LogServiceLevel = 'error' | 'info' | 'success';
4
4
  export type LogServiceDesc = Record<string, any> | any[];
5
+ export type LogServiceWriter = 'file' | 'console';
5
6
  export type LogServicePayload = {
7
+ writer?: LogServiceWriter;
6
8
  level: LogServiceLevel;
7
9
  title: string;
8
10
  desc?: LogServiceDesc;
@@ -18,9 +20,14 @@ export declare class LogService implements BaseService {
18
20
  private getLogWriter;
19
21
  parseLogLineText<K extends string = string>(text: string, keysMap?: Record<string, string[]>): LogServiceLogItem<K>;
20
22
  private log;
21
- info(title: string, desc?: LogServiceDesc): void;
22
- success(title: string, desc?: LogServiceDesc): void;
23
- error(title: string, desc?: LogServiceDesc): void;
23
+ info: (title: string, desc?: LogServiceDesc) => void;
24
+ success: (title: string, desc?: LogServiceDesc) => void;
25
+ error: (title: string, desc?: LogServiceDesc) => void;
26
+ console: {
27
+ info: (title: string, desc?: LogServiceDesc) => void;
28
+ success: (title: string, desc?: LogServiceDesc) => void;
29
+ error: (title: string, desc?: LogServiceDesc) => void;
30
+ };
24
31
  }
25
32
  declare module '../x' {
26
33
  interface X {
@@ -12,6 +12,53 @@ export class LogService {
12
12
  flags: 'a'
13
13
  });
14
14
  }, logFile => logFile);
15
+ this.info = (title, desc) => {
16
+ this.log({
17
+ level: 'info',
18
+ title,
19
+ desc
20
+ });
21
+ };
22
+ this.success = (title, desc) => {
23
+ this.log({
24
+ level: 'success',
25
+ title,
26
+ desc
27
+ });
28
+ };
29
+ this.error = (title, desc) => {
30
+ this.log({
31
+ level: 'error',
32
+ title,
33
+ desc
34
+ });
35
+ };
36
+ this.console = {
37
+ info: (title, desc) => {
38
+ this.log({
39
+ writer: 'console',
40
+ level: 'info',
41
+ title,
42
+ desc
43
+ });
44
+ },
45
+ success: (title, desc) => {
46
+ this.log({
47
+ writer: 'console',
48
+ level: 'success',
49
+ title,
50
+ desc
51
+ });
52
+ },
53
+ error: (title, desc) => {
54
+ this.log({
55
+ writer: 'console',
56
+ level: 'error',
57
+ title,
58
+ desc
59
+ });
60
+ }
61
+ };
15
62
  }
16
63
  getLogFile(date) {
17
64
  const year = date.getFullYear();
@@ -39,27 +86,11 @@ export class LogService {
39
86
  };
40
87
  }
41
88
  log(payload) {
42
- this.getLogWriter(this.logFile).write(`${[formatDate(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}\n`);
43
- }
44
- info(title, desc) {
45
- this.log({
46
- level: 'info',
47
- title,
48
- desc
49
- });
50
- }
51
- success(title, desc) {
52
- this.log({
53
- level: 'success',
54
- title,
55
- desc
56
- });
57
- }
58
- error(title, desc) {
59
- this.log({
60
- level: 'error',
61
- title,
62
- desc
63
- });
89
+ const getContent = () => `${[formatDate(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}`;
90
+ if (payload.writer === 'console') {
91
+ console[payload.level === 'error' ? 'error' : 'log'](getContent());
92
+ } else {
93
+ this.getLogWriter(this.logFile).write(`${getContent()}\n`);
94
+ }
64
95
  }
65
96
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jayfong/x-server",
3
- "version": "2.49.4",
3
+ "version": "2.50.0",
4
4
  "license": "ISC",
5
5
  "sideEffects": false,
6
6
  "main": "lib/_cjs/index.js",