@midwayjs/web 3.12.8 → 3.13.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,11 +4,12 @@ const path = require("path");
4
4
  const mkdirp = require("mkdirp");
5
5
  const os = require("os");
6
6
  const fs = require("fs");
7
+ const loggerModule = require("@midwayjs/logger");
7
8
  exports.default = appInfo => {
8
9
  const exports = {};
9
10
  exports.rundir = path.join(appInfo.appDir, 'run');
10
- // 修改默认的日志名
11
- exports.midwayLogger = {
11
+ // v2 格式
12
+ let defaultLoggerConfig = {
12
13
  clients: {
13
14
  appLogger: {
14
15
  fileLogName: 'midway-web.log',
@@ -19,6 +20,30 @@ exports.default = appInfo => {
19
20
  },
20
21
  },
21
22
  };
23
+ // v3 格式
24
+ if (loggerModule['formatLegacyLoggerOptions']) {
25
+ defaultLoggerConfig = {
26
+ clients: {
27
+ appLogger: {
28
+ transports: {
29
+ file: {
30
+ fileLogName: 'midway-web.log',
31
+ },
32
+ },
33
+ aliasName: 'logger',
34
+ },
35
+ agentLogger: {
36
+ transports: {
37
+ file: {
38
+ fileLogName: 'midway-agent.log',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ };
44
+ }
45
+ // 修改默认的日志名
46
+ exports.midwayLogger = defaultLoggerConfig;
22
47
  exports.egg = {
23
48
  dumpConfig: true,
24
49
  contextLoggerFormat: info => {
@@ -5,11 +5,13 @@ import { DefaultState, Middleware } from 'koa';
5
5
  import { ILogger, LoggerOptions } from '@midwayjs/logger';
6
6
  export declare const RUN_IN_AGENT_KEY = "egg:run_in_agent";
7
7
  export declare const EGG_AGENT_APP_KEY = "egg_agent_app";
8
+ export interface State extends DefaultState {
9
+ }
8
10
  export interface IMidwayWebBaseApplication {
9
11
  applicationContext: IMidwayContainer;
10
12
  getLogger(name?: string): ILogger;
11
13
  getCoreLogger(): ILogger;
12
- generateMiddleware?(middlewareId: any): Promise<Middleware<DefaultState, EggContext>>;
14
+ generateMiddleware?(middlewareId: any): Promise<Middleware<State, EggContext>>;
13
15
  createLogger(name: string, options: LoggerOptions): ILogger;
14
16
  }
15
17
  /**
@@ -56,6 +58,7 @@ export interface Context<ResponseBodyT = unknown> extends IMidwayWebContext<Resp
56
58
  */
57
59
  [_: string]: any;
58
60
  };
61
+ state: State;
59
62
  }
60
63
  /**
61
64
  * @deprecated since version 3.0.0
@@ -112,7 +115,7 @@ export interface IMidwayWebConfigurationOptions extends IConfigurationOptions {
112
115
  * @deprecated since version 3.0.0
113
116
  * Please use IMiddleware from '@midwayjs/core'
114
117
  */
115
- export type MidwayWebMiddleware = Middleware<DefaultState, Context>;
118
+ export type MidwayWebMiddleware = Middleware<State, Context>;
116
119
  /**
117
120
  * @deprecated since version 3.0.0
118
121
  * Please use IMiddleware from '@midwayjs/core'
package/dist/logger.js CHANGED
@@ -3,16 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLoggers = void 0;
4
4
  const logger_1 = require("@midwayjs/logger");
5
5
  const path_1 = require("path");
6
- const fs_1 = require("fs");
7
- const utils_1 = require("./utils");
8
- const os = require("os");
9
6
  const core_1 = require("@midwayjs/core");
10
7
  const util_1 = require("util");
8
+ const core_2 = require("@midwayjs/core");
9
+ const loggerModule = require("@midwayjs/logger");
10
+ const isV3Logger = loggerModule['formatLegacyLoggerOptions'];
11
11
  const debug = (0, util_1.debuglog)('midway:debug');
12
- const isWindows = os.platform() === 'win32';
13
- function isEmptyFile(p) {
14
- return (0, fs_1.statSync)(p).size === 0;
15
- }
16
12
  const levelTransform = level => {
17
13
  // egg 自定义日志,不设置 level,默认是 info
18
14
  if (!level) {
@@ -42,27 +38,6 @@ const levelTransform = level => {
42
38
  return 'silly';
43
39
  }
44
40
  };
45
- function checkEggLoggerExistsAndBackup(dir, fileName) {
46
- const file = (0, path_1.isAbsolute)(fileName) ? fileName : (0, path_1.join)(dir, fileName);
47
- try {
48
- if ((0, fs_1.existsSync)(file) && !(0, fs_1.lstatSync)(file).isSymbolicLink()) {
49
- // 如果是空文件,则直接删了,否则加入备份队列
50
- if (isEmptyFile(file)) {
51
- // midway 的软链在 windows 底下也不会创建出来,在 windows 底下就不做文件删除了
52
- if (!isWindows) {
53
- (0, fs_1.unlinkSync)(file);
54
- }
55
- }
56
- else {
57
- const timeFormat = (0, utils_1.getCurrentDateString)();
58
- (0, fs_1.renameSync)(file, file + '.' + timeFormat + '_eggjs_bak');
59
- }
60
- }
61
- }
62
- catch (err) {
63
- // ignore
64
- }
65
- }
66
41
  function cleanUndefinedProperty(obj) {
67
42
  Object.keys(obj).forEach(key => {
68
43
  if (obj[key] === undefined) {
@@ -110,9 +85,10 @@ class MidwayLoggers extends Map {
110
85
  }
111
86
  }
112
87
  const loggerConfig = configService.getConfiguration('midwayLogger');
88
+ // 这里利用了 loggers 缓存的特性,提前初始化 logger
113
89
  if (loggerConfig) {
114
90
  for (const id of Object.keys(loggerConfig.clients)) {
115
- const config = Object.assign({}, loggerConfig['default'], loggerConfig.clients[id]);
91
+ const config = (0, core_2.extend)(true, {}, loggerConfig['default'], loggerConfig.clients[id]);
116
92
  this.createLogger(config, id);
117
93
  }
118
94
  }
@@ -121,17 +97,18 @@ class MidwayLoggers extends Map {
121
97
  this.set('logger', logger_1.loggers.getLogger('appLogger'));
122
98
  }
123
99
  // 初始化日志服务
124
- this.loggerService = (0, core_1.getCurrentApplicationContext)().get(core_1.MidwayLoggerService, [(0, core_1.getCurrentApplicationContext)()]);
100
+ this.loggerService = (0, core_1.getCurrentApplicationContext)().get(core_1.MidwayLoggerService, [
101
+ (0, core_1.getCurrentApplicationContext)(),
102
+ {
103
+ loggerFactory: logger_1.loggers,
104
+ },
105
+ ]);
125
106
  // 防止循环枚举报错
126
107
  Object.defineProperty(this, 'loggerService', {
127
108
  enumerable: false,
128
109
  });
129
110
  }
130
111
  createLogger(options, loggerKey) {
131
- /**
132
- * 提前备份 egg 日志
133
- */
134
- checkEggLoggerExistsAndBackup(options.dir, options.fileLogName);
135
112
  let logger = logger_1.loggers.createLogger(loggerKey, options);
136
113
  // overwrite values for pandora collect
137
114
  logger.values = () => {
@@ -152,13 +129,20 @@ class MidwayLoggers extends Map {
152
129
  return logger;
153
130
  }
154
131
  disableConsole() {
132
+ var _a;
155
133
  for (const value of this.values()) {
156
- if (value === null || value === void 0 ? void 0 : value.disableConsole) {
157
- value === null || value === void 0 ? void 0 : value.disableConsole();
134
+ if (value === null || value === void 0 ? void 0 : value['disableConsole']) {
135
+ value.disableConsole();
158
136
  }
159
137
  else if (value.disable) {
160
138
  value.disable('console');
161
139
  }
140
+ else if (isV3Logger) {
141
+ // v3
142
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
143
+ // @ts-ignore
144
+ (_a = value.get('console')) === null || _a === void 0 ? void 0 : _a.level = 'none';
145
+ }
162
146
  }
163
147
  }
164
148
  reload() {
@@ -170,7 +154,7 @@ class MidwayLoggers extends Map {
170
154
  }
171
155
  }
172
156
  transformEggLogger(eggCustomLogger, midwayLoggerConfig) {
173
- var _a, _b, _c, _d;
157
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
174
158
  const transformLoggerConfig = {
175
159
  midwayLogger: {
176
160
  clients: {},
@@ -186,22 +170,42 @@ class MidwayLoggers extends Map {
186
170
  // 绝对路径,单独处理
187
171
  options.dir = (0, path_1.dirname)(file);
188
172
  options.fileLogName = (0, path_1.basename)(file);
189
- options.auditFileDir =
190
- midwayLoggerConfig.auditFileDir === '.audit'
191
- ? (0, path_1.join)(midwayLoggerConfig.dir, '.audit')
192
- : midwayLoggerConfig.auditFileDir;
193
- options.errorDir =
194
- (_b = midwayLoggerConfig.errorDir) !== null && _b !== void 0 ? _b : midwayLoggerConfig.dir;
173
+ if (isV3Logger) {
174
+ options.auditFileDir =
175
+ ((_c = (_b = midwayLoggerConfig === null || midwayLoggerConfig === void 0 ? void 0 : midwayLoggerConfig.transports) === null || _b === void 0 ? void 0 : _b.file) === null || _c === void 0 ? void 0 : _c['auditFileDir']) === '.audit'
176
+ ? (0, path_1.join)((_e = (_d = midwayLoggerConfig === null || midwayLoggerConfig === void 0 ? void 0 : midwayLoggerConfig.transports) === null || _d === void 0 ? void 0 : _d.file) === null || _e === void 0 ? void 0 : _e['dir'], '.audit')
177
+ : (_g = (_f = midwayLoggerConfig === null || midwayLoggerConfig === void 0 ? void 0 : midwayLoggerConfig.transports) === null || _f === void 0 ? void 0 : _f.file) === null || _g === void 0 ? void 0 : _g['auditFileDir'];
178
+ options.errorDir =
179
+ (_k = (_j = (_h = midwayLoggerConfig === null || midwayLoggerConfig === void 0 ? void 0 : midwayLoggerConfig.transports) === null || _h === void 0 ? void 0 : _h.error) === null || _j === void 0 ? void 0 : _j['dir']) !== null && _k !== void 0 ? _k : (_m = (_l = midwayLoggerConfig === null || midwayLoggerConfig === void 0 ? void 0 : midwayLoggerConfig.transports) === null || _l === void 0 ? void 0 : _l.file) === null || _m === void 0 ? void 0 : _m['dir'];
180
+ }
181
+ else {
182
+ options.auditFileDir =
183
+ midwayLoggerConfig['auditFileDir'] === '.audit'
184
+ ? (0, path_1.join)(midwayLoggerConfig['dir'], '.audit')
185
+ : midwayLoggerConfig['auditFileDir'];
186
+ options.errorDir =
187
+ (_o = midwayLoggerConfig['errorDir']) !== null && _o !== void 0 ? _o : midwayLoggerConfig['dir'];
188
+ }
195
189
  }
196
190
  else {
197
191
  // 相对路径,使用默认的 dir 即可
198
192
  options.fileLogName = file;
199
193
  }
200
- transformLoggerConfig.midwayLogger.clients[name] = {
201
- level: levelTransform((_c = eggCustomLogger[name]) === null || _c === void 0 ? void 0 : _c.level),
202
- consoleLevel: levelTransform((_d = eggCustomLogger[name]) === null || _d === void 0 ? void 0 : _d.consoleLevel),
203
- ...options,
204
- };
194
+ // v3 logger,格式化一下 options
195
+ if (isV3Logger) {
196
+ transformLoggerConfig.midwayLogger.clients[name] = loggerModule['formatLegacyLoggerOptions']({
197
+ level: levelTransform((_p = eggCustomLogger[name]) === null || _p === void 0 ? void 0 : _p.level),
198
+ consoleLevel: levelTransform((_q = eggCustomLogger[name]) === null || _q === void 0 ? void 0 : _q.consoleLevel),
199
+ ...options,
200
+ });
201
+ }
202
+ else {
203
+ transformLoggerConfig.midwayLogger.clients[name] = {
204
+ level: levelTransform((_r = eggCustomLogger[name]) === null || _r === void 0 ? void 0 : _r.level),
205
+ consoleLevel: levelTransform((_s = eggCustomLogger[name]) === null || _s === void 0 ? void 0 : _s.consoleLevel),
206
+ ...options,
207
+ };
208
+ }
205
209
  cleanUndefinedProperty(transformLoggerConfig.midwayLogger.clients[name]);
206
210
  }
207
211
  return transformLoggerConfig;
package/index.d.ts CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  IMidwayWebBaseApplication,
7
7
  IMidwayWebConfigurationOptions,
8
8
  Context as EggContext,
9
+ State,
9
10
  } from './dist';
10
11
  import { ILogger, LoggerOptions } from '@midwayjs/logger';
11
12
  import { EggAppConfig } from 'egg';
@@ -30,6 +31,7 @@ declare module 'egg' {
30
31
  interface Context<ResponseBodyT = any> extends IMidwayBaseContext {
31
32
  getLogger(name?: string): ILogger;
32
33
  forward: (url: string) => void;
34
+ state: State;
33
35
  }
34
36
  }
35
37
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midwayjs/web",
3
- "version": "3.12.8",
3
+ "version": "3.13.0",
4
4
  "description": "Midway Web Framework for Egg.js",
5
5
  "main": "dist/index.js",
6
6
  "typings": "index.d.ts",
@@ -28,8 +28,8 @@
28
28
  ],
29
29
  "license": "MIT",
30
30
  "devDependencies": {
31
- "@midwayjs/logger": "^2.15.0",
32
- "@midwayjs/mock": "^3.12.8",
31
+ "@midwayjs/logger": "^3.0.0",
32
+ "@midwayjs/mock": "^3.13.0",
33
33
  "dayjs": "1.11.10",
34
34
  "egg-logger": "2.9.1",
35
35
  "egg-mock": "4.2.1",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@eggjs/router": "^2.0.0",
48
- "@midwayjs/core": "^3.12.3",
48
+ "@midwayjs/core": "^3.13.0",
49
49
  "egg": "^2.28.0",
50
50
  "egg-cluster": "^1.27.1",
51
51
  "find-up": "5.0.0",
@@ -60,5 +60,5 @@
60
60
  "engines": {
61
61
  "node": ">=12"
62
62
  },
63
- "gitHead": "598bf3584d655d41889237010edd8b3223d8f059"
63
+ "gitHead": "9f55734afa5b08dcf46bc89493ec8edaa8c6202b"
64
64
  }