@midwayjs/web 3.12.10 → 3.13.1

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) {
@@ -109,10 +84,17 @@ class MidwayLoggers extends Map {
109
84
  configService.addObject(eggLoggerConfig);
110
85
  }
111
86
  }
112
- const loggerConfig = configService.getConfiguration('midwayLogger');
87
+ let loggerConfig = configService.getConfiguration('midwayLogger');
88
+ // 这里属于 hack 了,cluster 模式下会先走这里,找不到默认值
89
+ if (!loggerConfig['default']['dir']) {
90
+ // 先合并一遍默认配置
91
+ configService.addObject(logger_1.loggers.getDefaultMidwayLoggerConfig(configService.getAppInfo()));
92
+ loggerConfig = configService.getConfiguration('midwayLogger');
93
+ }
94
+ // 这里利用了 loggers 缓存的特性,提前初始化 logger
113
95
  if (loggerConfig) {
114
96
  for (const id of Object.keys(loggerConfig.clients)) {
115
- const config = Object.assign({}, loggerConfig['default'], loggerConfig.clients[id]);
97
+ const config = (0, core_2.extend)(true, {}, loggerConfig['default'], loggerConfig.clients[id]);
116
98
  this.createLogger(config, id);
117
99
  }
118
100
  }
@@ -121,17 +103,18 @@ class MidwayLoggers extends Map {
121
103
  this.set('logger', logger_1.loggers.getLogger('appLogger'));
122
104
  }
123
105
  // 初始化日志服务
124
- this.loggerService = (0, core_1.getCurrentApplicationContext)().get(core_1.MidwayLoggerService, [(0, core_1.getCurrentApplicationContext)()]);
106
+ this.loggerService = (0, core_1.getCurrentApplicationContext)().get(core_1.MidwayLoggerService, [
107
+ (0, core_1.getCurrentApplicationContext)(),
108
+ {
109
+ loggerFactory: logger_1.loggers,
110
+ },
111
+ ]);
125
112
  // 防止循环枚举报错
126
113
  Object.defineProperty(this, 'loggerService', {
127
114
  enumerable: false,
128
115
  });
129
116
  }
130
117
  createLogger(options, loggerKey) {
131
- /**
132
- * 提前备份 egg 日志
133
- */
134
- checkEggLoggerExistsAndBackup(options.dir, options.fileLogName);
135
118
  let logger = logger_1.loggers.createLogger(loggerKey, options);
136
119
  // overwrite values for pandora collect
137
120
  logger.values = () => {
@@ -152,13 +135,20 @@ class MidwayLoggers extends Map {
152
135
  return logger;
153
136
  }
154
137
  disableConsole() {
138
+ var _a;
155
139
  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();
140
+ if (value === null || value === void 0 ? void 0 : value['disableConsole']) {
141
+ value.disableConsole();
158
142
  }
159
143
  else if (value.disable) {
160
144
  value.disable('console');
161
145
  }
146
+ else if (isV3Logger) {
147
+ // v3
148
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
149
+ // @ts-ignore
150
+ (_a = value.get('console')) === null || _a === void 0 ? void 0 : _a.level = 'none';
151
+ }
162
152
  }
163
153
  }
164
154
  reload() {
@@ -170,7 +160,7 @@ class MidwayLoggers extends Map {
170
160
  }
171
161
  }
172
162
  transformEggLogger(eggCustomLogger, midwayLoggerConfig) {
173
- var _a, _b, _c, _d;
163
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
174
164
  const transformLoggerConfig = {
175
165
  midwayLogger: {
176
166
  clients: {},
@@ -186,22 +176,42 @@ class MidwayLoggers extends Map {
186
176
  // 绝对路径,单独处理
187
177
  options.dir = (0, path_1.dirname)(file);
188
178
  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;
179
+ if (isV3Logger) {
180
+ options.auditFileDir =
181
+ ((_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'
182
+ ? (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')
183
+ : (_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'];
184
+ options.errorDir =
185
+ (_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'];
186
+ }
187
+ else {
188
+ options.auditFileDir =
189
+ midwayLoggerConfig['auditFileDir'] === '.audit'
190
+ ? (0, path_1.join)(midwayLoggerConfig['dir'], '.audit')
191
+ : midwayLoggerConfig['auditFileDir'];
192
+ options.errorDir =
193
+ (_o = midwayLoggerConfig['errorDir']) !== null && _o !== void 0 ? _o : midwayLoggerConfig['dir'];
194
+ }
195
195
  }
196
196
  else {
197
197
  // 相对路径,使用默认的 dir 即可
198
198
  options.fileLogName = file;
199
199
  }
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
- };
200
+ // v3 logger,格式化一下 options
201
+ if (isV3Logger) {
202
+ transformLoggerConfig.midwayLogger.clients[name] = loggerModule['formatLegacyLoggerOptions']({
203
+ level: levelTransform((_p = eggCustomLogger[name]) === null || _p === void 0 ? void 0 : _p.level),
204
+ consoleLevel: levelTransform((_q = eggCustomLogger[name]) === null || _q === void 0 ? void 0 : _q.consoleLevel),
205
+ ...options,
206
+ });
207
+ }
208
+ else {
209
+ transformLoggerConfig.midwayLogger.clients[name] = {
210
+ level: levelTransform((_r = eggCustomLogger[name]) === null || _r === void 0 ? void 0 : _r.level),
211
+ consoleLevel: levelTransform((_s = eggCustomLogger[name]) === null || _s === void 0 ? void 0 : _s.consoleLevel),
212
+ ...options,
213
+ };
214
+ }
205
215
  cleanUndefinedProperty(transformLoggerConfig.midwayLogger.clients[name]);
206
216
  }
207
217
  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.10",
3
+ "version": "3.13.1",
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.10",
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": "8d92c54424843d437fd5f77f6ff93f00c055117b"
63
+ "gitHead": "bc7378899b34cc2846a7429777d052b0ed7cdb24"
64
64
  }