@proteinjs/server 1.6.0 → 1.7.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.7.0](https://github.com/proteinjs/server/compare/@proteinjs/server@1.6.1...@proteinjs/server@1.7.0) (2024-08-16)
7
+
8
+
9
+ ### Features
10
+
11
+ * added `Request` to track request metadata in an async_hook ([c87cb0a](https://github.com/proteinjs/server/commit/c87cb0aaf1da85f36ca560e8e2c5e062bb98bf1c))
12
+
13
+
14
+
15
+
16
+
6
17
  # [1.6.0](https://github.com/proteinjs/server/compare/@proteinjs/server@1.5.3...@proteinjs/server@1.6.0) (2024-08-02)
7
18
 
8
19
 
@@ -1,8 +1,8 @@
1
1
  /** Load Dependency Source Graphs */
2
2
  import '@pmmmwh/react-refresh-webpack-plugin';
3
+ import '@proteinjs/logger';
3
4
  import '@proteinjs/reflection';
4
5
  import '@proteinjs/server-api';
5
- import '@proteinjs/util';
6
6
  import '@proteinjs/util-node';
7
7
  import 'body-parser';
8
8
  import 'buffer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iBAAiB,CAAC;AACzB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,eAAe,CAAC;AACvB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,YAAY,CAAC;AACpB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AACzB,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,gBAAgB,CAAC;AACxB,OAAO,iBAAiB,CAAC;AACzB,OAAO,SAAS,CAAC;AACjB,OAAO,OAAO,CAAC;AACf,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,0BAA0B,CAAC;AAClC,OAAO,WAAW,CAAC;AACnB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,KAAK,CAAC;AACb,OAAO,MAAM,CAAC;AACd,OAAO,SAAS,CAAC;AACjB,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AA6BhC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mBAAmB,CAAC;AAC3B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,eAAe,CAAC;AACvB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,YAAY,CAAC;AACpB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AACzB,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,gBAAgB,CAAC;AACxB,OAAO,iBAAiB,CAAC;AACzB,OAAO,SAAS,CAAC;AACjB,OAAO,OAAO,CAAC;AACf,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,0BAA0B,CAAC;AAClC,OAAO,WAAW,CAAC;AACnB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,KAAK,CAAC;AACb,OAAO,MAAM,CAAC;AACd,OAAO,SAAS,CAAC;AACjB,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AA6BhC,cAAc,UAAU,CAAC"}
@@ -16,9 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  require("@pmmmwh/react-refresh-webpack-plugin");
19
+ require("@proteinjs/logger");
19
20
  require("@proteinjs/reflection");
20
21
  require("@proteinjs/server-api");
21
- require("@proteinjs/util");
22
22
  require("@proteinjs/util-node");
23
23
  require("body-parser");
24
24
  require("buffer");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,gDAA8C;AAC9C,iCAA+B;AAC/B,iCAA+B;AAC/B,2BAAyB;AACzB,gCAA8B;AAC9B,uBAAqB;AACrB,kBAAgB;AAChB,yBAAuB;AACvB,6BAA2B;AAC3B,sBAAoB;AACpB,kBAAgB;AAChB,mBAAiB;AACjB,2BAAyB;AACzB,uBAAqB;AACrB,oBAAkB;AAClB,0BAAwB;AACxB,2BAAyB;AACzB,mBAAiB;AACjB,iBAAe;AACf,wBAAsB;AACtB,yBAAuB;AACvB,oCAAkC;AAClC,qBAAmB;AACnB,6BAA2B;AAC3B,wBAAsB;AACtB,qBAAmB;AACnB,sBAAoB;AACpB,eAAa;AACb,gBAAc;AACd,mBAAiB;AACjB,kCAAgC;AAChC,kCAAgC;AAGhC,4BAA4B;AAE5B,IAAM,WAAW,GAAG,g/MAAg/M,CAAC;AAGrgN,4BAA4B;AAE5B,sEAAqE;AACrE,wEAAuE;AACvE,4CAAmD;AACnD,yDAAwD;AAExD,IAAM,WAAW,GAAG;IACnB,yCAAyC,EAAE,6CAAqB;IAChE,0CAA0C,EAAE,+CAAsB;IAClE,oCAAoC,EAAE,2BAAgB;IACtD,+BAA+B,EAAE,yBAAW;CAC5C,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,gDAA8C;AAC9C,6BAA2B;AAC3B,iCAA+B;AAC/B,iCAA+B;AAC/B,gCAA8B;AAC9B,uBAAqB;AACrB,kBAAgB;AAChB,yBAAuB;AACvB,6BAA2B;AAC3B,sBAAoB;AACpB,kBAAgB;AAChB,mBAAiB;AACjB,2BAAyB;AACzB,uBAAqB;AACrB,oBAAkB;AAClB,0BAAwB;AACxB,2BAAyB;AACzB,mBAAiB;AACjB,iBAAe;AACf,wBAAsB;AACtB,yBAAuB;AACvB,oCAAkC;AAClC,qBAAmB;AACnB,6BAA2B;AAC3B,wBAAsB;AACtB,qBAAmB;AACnB,sBAAoB;AACpB,eAAa;AACb,gBAAc;AACd,mBAAiB;AACjB,kCAAgC;AAChC,kCAAgC;AAGhC,4BAA4B;AAE5B,IAAM,WAAW,GAAG,g/MAAg/M,CAAC;AAGrgN,4BAA4B;AAE5B,sEAAqE;AACrE,wEAAuE;AACvE,4CAAmD;AACnD,yDAAwD;AAExD,IAAM,WAAW,GAAG;IACnB,yCAAyC,EAAE,6CAAqB;IAChE,0CAA0C,EAAE,+CAAsB;IAClE,oCAAoC,EAAE,2BAAgB;IACtD,+BAA+B,EAAE,yBAAW;CAC5C,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './src/startServer';
2
2
  export * from './src/envCache';
3
+ export * from './src/Request';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./src/startServer"), exports);
18
18
  __exportStar(require("./src/envCache"), exports);
19
+ __exportStar(require("./src/Request"), exports);
19
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,iDAA+B;AAC/B,gDAA8B"}
@@ -0,0 +1,13 @@
1
+ export type RequestMetadata = {
2
+ number: number;
3
+ id: string;
4
+ url: string;
5
+ };
6
+ export declare class Request {
7
+ private static HOOK_INITIALIZED;
8
+ private static readonly REQUEST_METADATA;
9
+ setMetadata(data: RequestMetadata): void;
10
+ getMetadata(): RequestMetadata;
11
+ private initHook;
12
+ }
13
+ //# sourceMappingURL=Request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../src/Request.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAS;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAEjF,WAAW,CAAC,IAAI,EAAE,eAAe;IAYjC,WAAW,IAAI,eAAe;IAQ9B,OAAO,CAAC,QAAQ;CAiBjB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Request = void 0;
7
+ var async_hooks_1 = __importDefault(require("async_hooks"));
8
+ var Request = /** @class */ (function () {
9
+ function Request() {
10
+ }
11
+ Request.prototype.setMetadata = function (data) {
12
+ if (!Request.HOOK_INITIALIZED) {
13
+ this.initHook();
14
+ }
15
+ if (Request.REQUEST_METADATA[async_hooks_1.default.executionAsyncId()]) {
16
+ return;
17
+ }
18
+ Request.REQUEST_METADATA[async_hooks_1.default.executionAsyncId()] = data;
19
+ };
20
+ Request.prototype.getMetadata = function () {
21
+ if (!Request.HOOK_INITIALIZED) {
22
+ this.initHook();
23
+ }
24
+ return Request.REQUEST_METADATA[async_hooks_1.default.executionAsyncId()];
25
+ };
26
+ Request.prototype.initHook = function () {
27
+ async_hooks_1.default
28
+ .createHook({
29
+ init: function (asyncId, type, triggerAsyncId, resource) {
30
+ if (!Request.REQUEST_METADATA[triggerAsyncId]) {
31
+ return;
32
+ }
33
+ Request.REQUEST_METADATA[asyncId] = Request.REQUEST_METADATA[triggerAsyncId];
34
+ },
35
+ destroy: function (asyncId) {
36
+ delete Request.REQUEST_METADATA[asyncId];
37
+ },
38
+ })
39
+ .enable();
40
+ Request.HOOK_INITIALIZED = true;
41
+ };
42
+ Request.HOOK_INITIALIZED = false;
43
+ Request.REQUEST_METADATA = {};
44
+ return Request;
45
+ }());
46
+ exports.Request = Request;
47
+ //# sourceMappingURL=Request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Request.js","sourceRoot":"","sources":["../../src/Request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAqC;AAQrC;IAAA;IAyCA,CAAC;IArCC,6BAAW,GAAX,UAAY,IAAqB;QAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;QAED,IAAI,OAAO,CAAC,gBAAgB,CAAC,qBAAU,CAAC,gBAAgB,EAAE,CAAC,EAAE;YAC3D,OAAO;SACR;QAED,OAAO,CAAC,gBAAgB,CAAC,qBAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,6BAAW,GAAX;QACE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;QAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,qBAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjE,CAAC;IAEO,0BAAQ,GAAhB;QACE,qBAAU;aACP,UAAU,CAAC;YACV,IAAI,EAAE,UAAC,OAAe,EAAE,IAAY,EAAE,cAAsB,EAAE,QAAgB;gBAC5E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE;oBAC7C,OAAO;iBACR;gBAED,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,EAAE,UAAC,OAAe;gBACvB,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;aACD,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAClC,CAAC;IAvCc,wBAAgB,GAAG,KAAK,CAAC;IAChB,wBAAgB,GAAsC,EAAE,CAAC;IAuCnF,cAAC;CAAA,AAzCD,IAyCC;AAzCY,0BAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadRoutes.d.ts","sourceRoot":"","sources":["../../src/loadRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,KAAK,EAKN,MAAM,uBAAuB,CAAC;AAM/B,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,QA4BxF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,QAalG"}
1
+ {"version":3,"file":"loadRoutes.d.ts","sourceRoot":"","sources":["../../src/loadRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,KAAK,EAKN,MAAM,uBAAuB,CAAC;AAQ/B,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,QA4BxF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,QAalG"}
@@ -40,17 +40,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.loadDefaultStarRoute = exports.loadRoutes = void 0;
43
- var passport_1 = __importDefault(require("passport"));
43
+ var crypto_1 = __importDefault(require("crypto"));
44
44
  var server_api_1 = require("@proteinjs/server-api");
45
45
  var reactApp_1 = require("./routes/reactApp");
46
- var util_1 = require("@proteinjs/util");
47
- var logger = new util_1.Logger('Server');
46
+ var logger_1 = require("@proteinjs/logger");
47
+ var Request_1 = require("./Request");
48
+ var logger = new logger_1.Logger({ name: 'Server' });
49
+ var requestCounter = 0;
48
50
  function loadRoutes(routes, server, config) {
49
51
  var starRoute = null;
50
52
  var wildcardRoutes = [];
51
53
  for (var _i = 0, routes_1 = routes; _i < routes_1.length; _i++) {
52
54
  var route = routes_1[_i];
53
- logger.info("Loading route: ".concat(route.path));
55
+ logger.info({ message: "Loading route: ".concat(route.path) });
54
56
  if (route.path == '*') {
55
57
  starRoute = route;
56
58
  continue;
@@ -82,7 +84,7 @@ function loadDefaultStarRoute(routes, server, config) {
82
84
  }
83
85
  if (!starRouteSpecified && (((_a = config.staticContent) === null || _a === void 0 ? void 0 : _a.bundlePaths) || ((_b = config.staticContent) === null || _b === void 0 ? void 0 : _b.bundlesDir))) {
84
86
  var reactApp = (0, reactApp_1.createReactApp)(config);
85
- server[reactApp.method](reactApp.path, wrapRoute(reactApp.onRequest, config));
87
+ server[reactApp.method](reactApp.path, wrapRoute(reactApp.onRequest.bind(reactApp), config));
86
88
  }
87
89
  }
88
90
  exports.loadDefaultStarRoute = loadDefaultStarRoute;
@@ -91,116 +93,74 @@ function getPath(path) {
91
93
  }
92
94
  function wrapRoute(route, config) {
93
95
  return function (request, response, next) {
94
- var _a;
95
96
  return __awaiter(this, void 0, void 0, function () {
96
- var sessionData, _i, _b, sessionDataCache, _c, _d, requestListeners, _e, requestListeners_1, listener, error_1, sixtyMinutes, timeout, error_2, _f, requestListeners_2, listener, error_3;
97
- return __generator(this, function (_g) {
98
- switch (_g.label) {
97
+ var requestNumber, requestId, sessionData, _i, _a, sessionDataCache, _b, _c, message, error_1, message;
98
+ return __generator(this, function (_d) {
99
+ switch (_d.label) {
99
100
  case 0:
100
101
  if (response.locals['responseHandled']) {
101
102
  next();
102
103
  return [2 /*return*/];
103
104
  }
104
- if (!config.authenticate) return [3 /*break*/, 2];
105
- return [4 /*yield*/, new Promise(function (resolve, reject) {
106
- passport_1.default.authenticate('local', function (err, user, info) {
107
- if (err) {
108
- reject(err);
109
- }
110
- resolve();
111
- })(request, response, next);
112
- })];
105
+ requestNumber = ++requestCounter;
106
+ requestId = crypto_1.default.randomBytes(8).toString('hex');
107
+ // Set metadata into request async-hook storage
108
+ new Request_1.Request().setMetadata({
109
+ number: requestNumber,
110
+ id: requestId,
111
+ url: request.originalUrl,
112
+ });
113
+ sessionData = { sessionId: request.sessionID, user: request.user, data: {} };
114
+ _i = 0, _a = (0, server_api_1.getSessionDataCaches)();
115
+ _d.label = 1;
113
116
  case 1:
114
- _g.sent();
115
- _g.label = 2;
117
+ if (!(_i < _a.length)) return [3 /*break*/, 4];
118
+ sessionDataCache = _a[_i];
119
+ _b = sessionData.data;
120
+ _c = sessionDataCache.key;
121
+ return [4 /*yield*/, sessionDataCache.create(sessionData.sessionId, sessionData.user)];
116
122
  case 2:
117
- sessionData = { sessionId: request.sessionID, user: request.user, data: {} };
118
- _i = 0, _b = (0, server_api_1.getSessionDataCaches)();
119
- _g.label = 3;
123
+ _b[_c] = _d.sent();
124
+ _d.label = 3;
120
125
  case 3:
121
- if (!(_i < _b.length)) return [3 /*break*/, 6];
122
- sessionDataCache = _b[_i];
123
- _c = sessionData.data;
124
- _d = sessionDataCache.key;
125
- return [4 /*yield*/, sessionDataCache.create(sessionData.sessionId, sessionData.user)];
126
+ _i++;
127
+ return [3 /*break*/, 1];
126
128
  case 4:
127
- _c[_d] = _g.sent();
128
- _g.label = 5;
129
+ server_api_1.Session.setData(sessionData);
130
+ if (shouldLogRequest(request, config)) {
131
+ message = "Started ".concat(request.originalUrl);
132
+ if (process.env.DEVELOPMENT) {
133
+ message = "[#".concat(requestNumber, "] ").concat(message);
134
+ }
135
+ logger.info({ message: message });
136
+ }
137
+ return [4 /*yield*/, runBeforeRequestListeners(request, response)];
129
138
  case 5:
130
- _i++;
131
- return [3 /*break*/, 3];
139
+ _d.sent();
140
+ setRequestTimeout(request, config, requestNumber);
141
+ _d.label = 6;
132
142
  case 6:
133
- server_api_1.Session.setData(sessionData);
134
- requestListeners = (0, server_api_1.getRequestListeners)();
135
- _e = 0, requestListeners_1 = requestListeners;
136
- _g.label = 7;
143
+ _d.trys.push([6, 8, , 9]);
144
+ return [4 /*yield*/, route(request, response)];
137
145
  case 7:
138
- if (!(_e < requestListeners_1.length)) return [3 /*break*/, 12];
139
- listener = requestListeners_1[_e];
140
- if (!listener.beforeRequest) {
141
- return [3 /*break*/, 11];
142
- }
143
- _g.label = 8;
146
+ _d.sent();
147
+ return [3 /*break*/, 9];
144
148
  case 8:
145
- _g.trys.push([8, 10, , 11]);
146
- return [4 /*yield*/, listener.beforeRequest(request, response)];
149
+ error_1 = _d.sent();
150
+ console.error(error_1);
151
+ return [3 /*break*/, 9];
147
152
  case 9:
148
- _g.sent();
149
- return [3 /*break*/, 11];
153
+ response.locals['responseHandled'] = true;
154
+ return [4 /*yield*/, runAfterRequestListeners(request, response)];
150
155
  case 10:
151
- error_1 = _g.sent();
152
- logger.error("Caught error when running listener before request", error_1);
153
- return [3 /*break*/, 11];
154
- case 11:
155
- _e++;
156
- return [3 /*break*/, 7];
157
- case 12:
158
- sixtyMinutes = 1000 * 60 * 60;
159
- timeout = typeof ((_a = config.request) === null || _a === void 0 ? void 0 : _a.timeoutMs) !== 'undefined' ? config.request.timeoutMs : sixtyMinutes;
160
- request.setTimeout(timeout, function () {
161
- if (response.locals.requestNumber) {
162
- logger.warn("[#".concat(response.locals.requestNumber, "] Timed out ").concat(request.originalUrl));
163
- }
164
- else {
165
- logger.warn("Timed out ".concat(request.originalUrl));
156
+ _d.sent();
157
+ if (shouldLogRequest(request, config)) {
158
+ message = "Finished ".concat(request.originalUrl);
159
+ if (process.env.DEVELOPMENT) {
160
+ message = "[#".concat(requestNumber, "] ").concat(message);
166
161
  }
167
- });
168
- _g.label = 13;
169
- case 13:
170
- _g.trys.push([13, 15, , 16]);
171
- return [4 /*yield*/, route(request, response)];
172
- case 14:
173
- _g.sent();
174
- return [3 /*break*/, 16];
175
- case 15:
176
- error_2 = _g.sent();
177
- console.error(error_2);
178
- return [3 /*break*/, 16];
179
- case 16:
180
- response.locals['responseHandled'] = true;
181
- _f = 0, requestListeners_2 = requestListeners;
182
- _g.label = 17;
183
- case 17:
184
- if (!(_f < requestListeners_2.length)) return [3 /*break*/, 22];
185
- listener = requestListeners_2[_f];
186
- if (!listener.afterRequest) {
187
- return [3 /*break*/, 21];
162
+ logger.info({ message: message });
188
163
  }
189
- _g.label = 18;
190
- case 18:
191
- _g.trys.push([18, 20, , 21]);
192
- return [4 /*yield*/, listener.afterRequest(request, response)];
193
- case 19:
194
- _g.sent();
195
- return [3 /*break*/, 21];
196
- case 20:
197
- error_3 = _g.sent();
198
- logger.error("Caught error when running listener after request", error_3);
199
- return [3 /*break*/, 21];
200
- case 21:
201
- _f++;
202
- return [3 /*break*/, 17];
203
- case 22:
204
164
  next();
205
165
  return [2 /*return*/];
206
166
  }
@@ -208,12 +168,94 @@ function wrapRoute(route, config) {
208
168
  });
209
169
  };
210
170
  }
211
- function basicAuthCredentials(request) {
212
- var b64auth = (request.headers.authorization || '').split(' ')[1] || '';
213
- var _a = Buffer.from(b64auth, 'base64').toString().split(':'), username = _a[0], password = _a[1];
214
- if (!username || !password) {
215
- return null;
171
+ function shouldLogRequest(request, config) {
172
+ var _a;
173
+ if ((_a = config.request) === null || _a === void 0 ? void 0 : _a.disableRequestLogging) {
174
+ return false;
175
+ }
176
+ if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
177
+ return false;
216
178
  }
217
- return { username: username, password: password };
179
+ return true;
180
+ }
181
+ function setRequestTimeout(request, config, requestNumber) {
182
+ var _a;
183
+ var sixtyMinutes = 1000 * 60 * 60;
184
+ var timeout = typeof ((_a = config.request) === null || _a === void 0 ? void 0 : _a.timeoutMs) !== 'undefined' ? config.request.timeoutMs : sixtyMinutes;
185
+ request.setTimeout(timeout, function () {
186
+ var message = "Timed out ".concat(request.originalUrl);
187
+ if (process.env.DEVELOPMENT) {
188
+ message = "[#".concat(requestNumber, "] ").concat(message);
189
+ }
190
+ logger.warn({ message: message });
191
+ });
192
+ }
193
+ function runBeforeRequestListeners(request, response) {
194
+ return __awaiter(this, void 0, void 0, function () {
195
+ var requestListeners, _i, requestListeners_1, listener, error_2;
196
+ return __generator(this, function (_a) {
197
+ switch (_a.label) {
198
+ case 0:
199
+ requestListeners = (0, server_api_1.getRequestListeners)();
200
+ _i = 0, requestListeners_1 = requestListeners;
201
+ _a.label = 1;
202
+ case 1:
203
+ if (!(_i < requestListeners_1.length)) return [3 /*break*/, 6];
204
+ listener = requestListeners_1[_i];
205
+ if (!listener.beforeRequest) {
206
+ return [3 /*break*/, 5];
207
+ }
208
+ _a.label = 2;
209
+ case 2:
210
+ _a.trys.push([2, 4, , 5]);
211
+ return [4 /*yield*/, listener.beforeRequest(request, response)];
212
+ case 3:
213
+ _a.sent();
214
+ return [3 /*break*/, 5];
215
+ case 4:
216
+ error_2 = _a.sent();
217
+ logger.error({ message: "Caught error when running listener before request", error: error_2 });
218
+ return [3 /*break*/, 5];
219
+ case 5:
220
+ _i++;
221
+ return [3 /*break*/, 1];
222
+ case 6: return [2 /*return*/];
223
+ }
224
+ });
225
+ });
226
+ }
227
+ function runAfterRequestListeners(request, response) {
228
+ return __awaiter(this, void 0, void 0, function () {
229
+ var requestListeners, _i, requestListeners_2, listener, error_3;
230
+ return __generator(this, function (_a) {
231
+ switch (_a.label) {
232
+ case 0:
233
+ requestListeners = (0, server_api_1.getRequestListeners)();
234
+ _i = 0, requestListeners_2 = requestListeners;
235
+ _a.label = 1;
236
+ case 1:
237
+ if (!(_i < requestListeners_2.length)) return [3 /*break*/, 6];
238
+ listener = requestListeners_2[_i];
239
+ if (!listener.afterRequest) {
240
+ return [3 /*break*/, 5];
241
+ }
242
+ _a.label = 2;
243
+ case 2:
244
+ _a.trys.push([2, 4, , 5]);
245
+ return [4 /*yield*/, listener.afterRequest(request, response)];
246
+ case 3:
247
+ _a.sent();
248
+ return [3 /*break*/, 5];
249
+ case 4:
250
+ error_3 = _a.sent();
251
+ logger.error({ message: "Caught error when running listener after request", error: error_3 });
252
+ return [3 /*break*/, 5];
253
+ case 5:
254
+ _i++;
255
+ return [3 /*break*/, 1];
256
+ case 6: return [2 /*return*/];
257
+ }
258
+ });
259
+ });
218
260
  }
219
261
  //# sourceMappingURL=loadRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadRoutes.js","sourceRoot":"","sources":["../../src/loadRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadRoutes.js","sourceRoot":"","sources":["../../src/loadRoutes.ts"],"names":[],"mappings":"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"}
@@ -53,10 +53,10 @@ var http_1 = require("http");
53
53
  var socket_io_1 = require("socket.io");
54
54
  var server_api_1 = require("@proteinjs/server-api");
55
55
  var loadRoutes_1 = require("./loadRoutes");
56
- var util_1 = require("@proteinjs/util");
56
+ var logger_1 = require("@proteinjs/logger");
57
57
  var nodeModulesPath_1 = require("./nodeModulesPath");
58
58
  var staticContentPath = '/static/';
59
- var logger = new util_1.Logger('Server');
59
+ var logger = new logger_1.Logger({ name: 'Server' });
60
60
  var app = (0, express_1.default)();
61
61
  var server = new http_1.Server(app);
62
62
  exports.io = new socket_io_1.Server(server);
@@ -71,11 +71,11 @@ function startServer(config) {
71
71
  routes = (0, server_api_1.getRoutes)();
72
72
  configureRequests(app);
73
73
  initializeHotReloading(app, config);
74
+ configureSession(app, config);
74
75
  beforeRequest(app, config);
75
76
  (0, loadRoutes_1.loadRoutes)(routes.filter(function (route) { return route.useHttp; }), app, config);
76
77
  configureHttps(app); // registering here forces static content to be redirected to https
77
- configureStaticContentRouter(app, config); // registering here prevents sessions from being created on static content requests
78
- configureSession(app, config);
78
+ configureStaticContentRouter(app, config);
79
79
  (0, loadRoutes_1.loadRoutes)(routes.filter(function (route) { return !route.useHttp; }), app, config);
80
80
  globalData = {};
81
81
  _i = 0, _a = (0, server_api_1.getGlobalDataCaches)();
@@ -101,11 +101,11 @@ function startServer(config) {
101
101
  case 6:
102
102
  _d.sent();
103
103
  if (!config.onStartup) return [3 /*break*/, 8];
104
- logger.info("Starting ServerConfig.onStartup");
104
+ logger.info({ message: "Starting ServerConfig.onStartup" });
105
105
  return [4 /*yield*/, config.onStartup()];
106
106
  case 7:
107
107
  _d.sent();
108
- logger.info("Finished ServerConfig.onStartup");
108
+ logger.info({ message: "Finished ServerConfig.onStartup" });
109
109
  _d.label = 8;
110
110
  case 8:
111
111
  start(server, config);
@@ -129,23 +129,27 @@ function runStartupTasks(when) {
129
129
  if (filteredTasks.length === 0) {
130
130
  return [2 /*return*/];
131
131
  }
132
- logger.info("Starting ".concat(filteredTasks.length, " `").concat(when, "` startup task").concat(filteredTasks.length > 1 ? 's' : ''));
132
+ logger.info({
133
+ message: "Starting ".concat(filteredTasks.length, " `").concat(when, "` startup task").concat(filteredTasks.length > 1 ? 's' : ''),
134
+ });
133
135
  return [4 /*yield*/, Promise.all(filteredTasks.map(function (task) { return __awaiter(_this, void 0, void 0, function () {
134
136
  return __generator(this, function (_a) {
135
137
  switch (_a.label) {
136
138
  case 0:
137
- logger.info("Starting task: ".concat(task.name));
139
+ logger.info({ message: "Starting task: ".concat(task.name) });
138
140
  return [4 /*yield*/, task.run()];
139
141
  case 1:
140
142
  _a.sent();
141
- logger.info("Finished task: ".concat(task.name));
143
+ logger.info({ message: "Finished task: ".concat(task.name) });
142
144
  return [2 /*return*/];
143
145
  }
144
146
  });
145
147
  }); }))];
146
148
  case 1:
147
149
  _a.sent();
148
- logger.info("Finished ".concat(filteredTasks.length, " `").concat(when, "` startup task").concat(filteredTasks.length > 1 ? 's' : ''));
150
+ logger.info({
151
+ message: "Finished ".concat(filteredTasks.length, " `").concat(when, "` startup task").concat(filteredTasks.length > 1 ? 's' : ''),
152
+ });
149
153
  return [2 /*return*/];
150
154
  }
151
155
  });
@@ -191,7 +195,7 @@ function configureHttps(app) {
191
195
  next();
192
196
  return;
193
197
  }
194
- logger.debug("Redirecting to https: ".concat(request.headers.host + request.url));
198
+ logger.debug({ message: "Redirecting to https: ".concat(request.headers.host + request.url) });
195
199
  response.redirect('https://' + request.headers.host + request.url);
196
200
  });
197
201
  }
@@ -201,7 +205,9 @@ function configureStaticContentRouter(app, config) {
201
205
  return;
202
206
  }
203
207
  app.use(staticContentPath, express_1.default.static(config.staticContent.staticContentDir));
204
- logger.info("Serving static content on path: ".concat(staticContentPath, ", serving from directory: ").concat(config.staticContent.staticContentDir));
208
+ logger.info({
209
+ message: "Serving static content on path: ".concat(staticContentPath, ", serving from directory: ").concat(config.staticContent.staticContentDir),
210
+ });
205
211
  }
206
212
  function configureSession(app, config) {
207
213
  var sixtyDays = 1000 * 60 * 60 * 24 * 60;
@@ -241,7 +247,7 @@ function initializeAuthentication(authenticate) {
241
247
  return __generator(this, function (_a) {
242
248
  switch (_a.label) {
243
249
  case 0:
244
- logger.info("Authenticating");
250
+ logger.info({ message: "Authenticating" });
245
251
  return [4 /*yield*/, authenticate(username, password)];
246
252
  case 1:
247
253
  result = _a.sent();
@@ -261,42 +267,44 @@ function initializeAuthentication(authenticate) {
261
267
  });
262
268
  }
263
269
  function beforeRequest(app, config) {
270
+ var _this = this;
264
271
  var _a, _b, _c;
265
- var requestCounter = 0;
266
272
  if (((_a = config.request) === null || _a === void 0 ? void 0 : _a.disableRequestLogging) == false || typeof ((_b = config.request) === null || _b === void 0 ? void 0 : _b.disableRequestLogging) === 'undefined') {
267
- app.use(function (request, response, next) {
268
- if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
269
- next();
270
- return;
271
- }
272
- var requestNumber = ++requestCounter;
273
- logger.info("[#".concat(requestNumber, "] Started ").concat(request.originalUrl));
274
- response.locals = { requestNumber: requestNumber };
275
- next();
276
- });
273
+ app.use(function (request, response, next) { return __awaiter(_this, void 0, void 0, function () {
274
+ return __generator(this, function (_a) {
275
+ switch (_a.label) {
276
+ case 0:
277
+ if (!config.authenticate) return [3 /*break*/, 2];
278
+ return [4 /*yield*/, new Promise(function (resolve, reject) {
279
+ passport_1.default.authenticate('local', function (err, user, info) {
280
+ if (err) {
281
+ reject(err);
282
+ }
283
+ resolve();
284
+ })(request, response, next);
285
+ })];
286
+ case 1:
287
+ _a.sent();
288
+ _a.label = 2;
289
+ case 2:
290
+ next();
291
+ return [2 /*return*/];
292
+ }
293
+ });
294
+ }); });
277
295
  }
278
296
  if ((_c = config.request) === null || _c === void 0 ? void 0 : _c.beforeRequest) {
279
297
  app.use(config.request.beforeRequest);
280
298
  }
281
299
  }
282
300
  function afterRequest(app, config) {
283
- var _a, _b, _c;
301
+ var _a;
284
302
  if ((_a = config.request) === null || _a === void 0 ? void 0 : _a.afterRequest) {
285
303
  app.use(config.request.afterRequest);
286
304
  }
287
- if (((_b = config.request) === null || _b === void 0 ? void 0 : _b.disableRequestLogging) == false || typeof ((_c = config.request) === null || _c === void 0 ? void 0 : _c.disableRequestLogging) === 'undefined') {
288
- app.use(function (request, response, next) {
289
- if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
290
- next();
291
- return;
292
- }
293
- logger.info("[#".concat(response.locals.requestNumber, "] Finished ").concat(request.originalUrl));
294
- next();
295
- });
296
- }
297
305
  }
298
306
  function initializeSocketIO(io, app) {
299
- var logger = new util_1.Logger('SocketIOServer');
307
+ var socketLogger = new logger_1.Logger({ name: 'SocketIOServer' });
300
308
  // Share session and passport middleware with Socket.IO
301
309
  var wrapMiddleware = function (middleware) { return function (socket, next) { return middleware(socket.request, {}, next); }; };
302
310
  var sessionMiddleware = app.get('sessionMiddleware');
@@ -315,34 +323,34 @@ function initializeSocketIO(io, app) {
315
323
  // Initialize Socket.IO event handlers
316
324
  io.on('connection', function (socket) {
317
325
  var userInfo = "".concat(socket.request.user, " (").concat(socket.id, ")");
318
- logger.info("User connected: ".concat(userInfo));
326
+ socketLogger.info({ message: "User connected: ".concat(userInfo) });
319
327
  // Map this socket to the session id so it can be closed when the session is destroyed
320
328
  var sessionId = socket.request.sessionID;
321
329
  if (sessionId) {
322
330
  socket.join(sessionId);
323
331
  }
324
332
  socket.on('disconnect', function (reason) {
325
- logger.info("User disconnected: ".concat(userInfo, ". Reason: ").concat(reason));
333
+ socketLogger.info({ message: "User disconnected: ".concat(userInfo, ". Reason: ").concat(reason) });
326
334
  });
327
335
  socket.on('error', function (error) {
328
- logger.error("Socket error for user: ".concat(userInfo, ". Error:"), error);
336
+ socketLogger.error({ message: "Socket error for user: ".concat(userInfo), error: error });
329
337
  });
330
338
  socket.conn.on('error', function (error) {
331
- logger.error("Socket connection error for user: ".concat(userInfo, ". Error:"), error);
339
+ socketLogger.error({ message: "Socket connection error for user: ".concat(userInfo), error: error });
332
340
  });
333
341
  });
334
342
  // Handle server-level errors
335
- io.engine.on('connection_error', function (err) {
336
- logger.error('Connection error:', err);
343
+ io.engine.on('connection_error', function (error) {
344
+ socketLogger.error({ message: 'Connection error', error: error });
337
345
  });
338
346
  }
339
347
  function start(server, config) {
340
348
  var port = config.port ? config.port : 3000;
341
349
  server.listen(port, function () {
342
350
  if (process.env.DEVELOPMENT) {
343
- logger.info("Starting in development mode");
351
+ logger.info({ message: "Starting in development mode" });
344
352
  }
345
- logger.info("Server listening on port: ".concat(port));
353
+ logger.info({ message: "Server listening on port: ".concat(port) });
346
354
  });
347
355
  }
348
356
  //# sourceMappingURL=startServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/startServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/startServer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /** Load Dependency Source Graphs */
2
2
 
3
3
  import '@pmmmwh/react-refresh-webpack-plugin';
4
+ import '@proteinjs/logger';
4
5
  import '@proteinjs/reflection';
5
6
  import '@proteinjs/server-api';
6
- import '@proteinjs/util';
7
7
  import '@proteinjs/util-node';
8
8
  import 'body-parser';
9
9
  import 'buffer';
package/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './src/startServer';
2
2
  export * from './src/envCache';
3
+ export * from './src/Request';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/server",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "A server impl",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,10 +22,10 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
25
- "@proteinjs/reflection": "1.1.7",
26
- "@proteinjs/server-api": "^1.4.0",
27
- "@proteinjs/util": "1.3.1",
28
- "@proteinjs/util-node": "1.3.3",
25
+ "@proteinjs/logger": "1.0.1",
26
+ "@proteinjs/reflection": "1.1.8",
27
+ "@proteinjs/server-api": "^1.4.2",
28
+ "@proteinjs/util-node": "1.4.0",
29
29
  "body-parser": "1.19.0",
30
30
  "buffer": "6.0.3",
31
31
  "cookie-parser": "1.4.5",
@@ -55,7 +55,7 @@
55
55
  "webpack-hot-middleware": "2.26.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@proteinjs/reflection-build": "1.0.22",
58
+ "@proteinjs/reflection-build": "1.0.23",
59
59
  "@types/body-parser": "1.19.0",
60
60
  "@types/cookie-parser": "1.4.2",
61
61
  "@types/express": "4.17.7",
@@ -74,5 +74,5 @@
74
74
  },
75
75
  "main": "./dist/generated/index.js",
76
76
  "types": "./dist/generated/index.d.ts",
77
- "gitHead": "b0869433f17ac2cee1fc514a765b9d254aa7516a"
77
+ "gitHead": "a99fe86adf96be6b52c0740dba3b4c49b47468a5"
78
78
  }
package/src/Request.ts ADDED
@@ -0,0 +1,50 @@
1
+ import asyncHooks from 'async_hooks';
2
+
3
+ export type RequestMetadata = {
4
+ number: number;
5
+ id: string;
6
+ url: string;
7
+ };
8
+
9
+ export class Request {
10
+ private static HOOK_INITIALIZED = false;
11
+ private static readonly REQUEST_METADATA: { [id: string]: RequestMetadata } = {};
12
+
13
+ setMetadata(data: RequestMetadata) {
14
+ if (!Request.HOOK_INITIALIZED) {
15
+ this.initHook();
16
+ }
17
+
18
+ if (Request.REQUEST_METADATA[asyncHooks.executionAsyncId()]) {
19
+ return;
20
+ }
21
+
22
+ Request.REQUEST_METADATA[asyncHooks.executionAsyncId()] = data;
23
+ }
24
+
25
+ getMetadata(): RequestMetadata {
26
+ if (!Request.HOOK_INITIALIZED) {
27
+ this.initHook();
28
+ }
29
+
30
+ return Request.REQUEST_METADATA[asyncHooks.executionAsyncId()];
31
+ }
32
+
33
+ private initHook() {
34
+ asyncHooks
35
+ .createHook({
36
+ init: (asyncId: number, type: string, triggerAsyncId: number, resource: Object) => {
37
+ if (!Request.REQUEST_METADATA[triggerAsyncId]) {
38
+ return;
39
+ }
40
+
41
+ Request.REQUEST_METADATA[asyncId] = Request.REQUEST_METADATA[triggerAsyncId];
42
+ },
43
+ destroy: (asyncId: number) => {
44
+ delete Request.REQUEST_METADATA[asyncId];
45
+ },
46
+ })
47
+ .enable();
48
+ Request.HOOK_INITIALIZED = true;
49
+ }
50
+ }
package/src/loadRoutes.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import express from 'express';
2
- import passport from 'passport';
2
+ import crypto from 'crypto';
3
3
  import {
4
4
  ServerConfig,
5
5
  Route,
@@ -9,15 +9,17 @@ import {
9
9
  getSessionDataCaches,
10
10
  } from '@proteinjs/server-api';
11
11
  import { createReactApp } from './routes/reactApp';
12
- import { Logger } from '@proteinjs/util';
12
+ import { Logger } from '@proteinjs/logger';
13
+ import { Request } from './Request';
13
14
 
14
- const logger = new Logger('Server');
15
+ const logger = new Logger({ name: 'Server' });
16
+ let requestCounter: number = 0;
15
17
 
16
18
  export function loadRoutes(routes: Route[], server: express.Express, config: ServerConfig) {
17
19
  let starRoute: Route | null = null;
18
20
  const wildcardRoutes: Route[] = [];
19
21
  for (const route of routes) {
20
- logger.info(`Loading route: ${route.path}`);
22
+ logger.info({ message: `Loading route: ${route.path}` });
21
23
  if (route.path == '*') {
22
24
  starRoute = route;
23
25
  continue;
@@ -54,7 +56,7 @@ export function loadDefaultStarRoute(routes: Route[], server: express.Express, c
54
56
 
55
57
  if (!starRouteSpecified && (config.staticContent?.bundlePaths || config.staticContent?.bundlesDir)) {
56
58
  const reactApp = createReactApp(config);
57
- server[reactApp.method](reactApp.path, wrapRoute(reactApp.onRequest, config));
59
+ server[reactApp.method](reactApp.path, wrapRoute(reactApp.onRequest.bind(reactApp), config));
58
60
  }
59
61
  }
60
62
 
@@ -72,47 +74,34 @@ function wrapRoute(
72
74
  return;
73
75
  }
74
76
 
75
- if (config.authenticate) {
76
- await new Promise<void>((resolve, reject) => {
77
- passport.authenticate('local', function (err, user, info) {
78
- if (err) {
79
- reject(err);
80
- }
81
-
82
- resolve();
83
- })(request, response, next);
84
- });
85
- }
77
+ const requestNumber = ++requestCounter;
78
+ const requestId = crypto.randomBytes(8).toString('hex');
86
79
 
80
+ // Set metadata into request async-hook storage
81
+ new Request().setMetadata({
82
+ number: requestNumber,
83
+ id: requestId,
84
+ url: request.originalUrl,
85
+ });
87
86
  const sessionData: SessionData = { sessionId: request.sessionID, user: request.user as string, data: {} };
88
87
  for (const sessionDataCache of getSessionDataCaches()) {
89
88
  sessionData.data[sessionDataCache.key] = await sessionDataCache.create(sessionData.sessionId, sessionData.user);
90
89
  }
91
90
  Session.setData(sessionData);
92
91
 
93
- const requestListeners = getRequestListeners();
94
- for (const listener of requestListeners) {
95
- if (!listener.beforeRequest) {
96
- continue;
97
- }
98
-
99
- try {
100
- await listener.beforeRequest(request, response);
101
- } catch (error: any) {
102
- logger.error(`Caught error when running listener before request`, error);
92
+ if (shouldLogRequest(request, config)) {
93
+ let message = `Started ${request.originalUrl}`;
94
+ if (process.env.DEVELOPMENT) {
95
+ message = `[#${requestNumber}] ${message}`;
103
96
  }
97
+ logger.info({ message });
104
98
  }
105
99
 
106
- const sixtyMinutes = 1000 * 60 * 60;
107
- const timeout = typeof config.request?.timeoutMs !== 'undefined' ? config.request.timeoutMs : sixtyMinutes;
108
- request.setTimeout(timeout, () => {
109
- if (response.locals.requestNumber) {
110
- logger.warn(`[#${response.locals.requestNumber}] Timed out ${request.originalUrl}`);
111
- } else {
112
- logger.warn(`Timed out ${request.originalUrl}`);
113
- }
114
- });
100
+ await runBeforeRequestListeners(request, response);
101
+
102
+ setRequestTimeout(request, config, requestNumber);
115
103
 
104
+ // Run route
116
105
  try {
117
106
  await route(request, response);
118
107
  } catch (error) {
@@ -120,28 +109,70 @@ function wrapRoute(
120
109
  }
121
110
  response.locals['responseHandled'] = true;
122
111
 
123
- for (const listener of requestListeners) {
124
- if (!listener.afterRequest) {
125
- continue;
126
- }
112
+ await runAfterRequestListeners(request, response);
127
113
 
128
- try {
129
- await listener.afterRequest(request, response);
130
- } catch (error: any) {
131
- logger.error(`Caught error when running listener after request`, error);
114
+ if (shouldLogRequest(request, config)) {
115
+ let message = `Finished ${request.originalUrl}`;
116
+ if (process.env.DEVELOPMENT) {
117
+ message = `[#${requestNumber}] ${message}`;
132
118
  }
119
+ logger.info({ message });
133
120
  }
134
121
 
135
122
  next();
136
123
  };
137
124
  }
138
125
 
139
- function basicAuthCredentials(request: express.Request): { username: string; password: string } | null {
140
- const b64auth = (request.headers.authorization || '').split(' ')[1] || '';
141
- const [username, password] = Buffer.from(b64auth, 'base64').toString().split(':');
142
- if (!username || !password) {
143
- return null;
126
+ function shouldLogRequest(request: express.Request, config: ServerConfig) {
127
+ if (config.request?.disableRequestLogging) {
128
+ return false;
129
+ }
130
+
131
+ if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
132
+ return false;
133
+ }
134
+
135
+ return true;
136
+ }
137
+
138
+ function setRequestTimeout(request: express.Request, config: ServerConfig, requestNumber: number) {
139
+ const sixtyMinutes = 1000 * 60 * 60;
140
+ const timeout = typeof config.request?.timeoutMs !== 'undefined' ? config.request.timeoutMs : sixtyMinutes;
141
+ request.setTimeout(timeout, () => {
142
+ let message = `Timed out ${request.originalUrl}`;
143
+ if (process.env.DEVELOPMENT) {
144
+ message = `[#${requestNumber}] ${message}`;
145
+ }
146
+ logger.warn({ message });
147
+ });
148
+ }
149
+
150
+ async function runBeforeRequestListeners(request: express.Request, response: express.Response) {
151
+ const requestListeners = getRequestListeners();
152
+ for (const listener of requestListeners) {
153
+ if (!listener.beforeRequest) {
154
+ continue;
155
+ }
156
+
157
+ try {
158
+ await listener.beforeRequest(request, response);
159
+ } catch (error: any) {
160
+ logger.error({ message: `Caught error when running listener before request`, error });
161
+ }
144
162
  }
163
+ }
164
+
165
+ async function runAfterRequestListeners(request: express.Request, response: express.Response) {
166
+ const requestListeners = getRequestListeners();
167
+ for (const listener of requestListeners) {
168
+ if (!listener.afterRequest) {
169
+ continue;
170
+ }
145
171
 
146
- return { username, password };
172
+ try {
173
+ await listener.afterRequest(request, response);
174
+ } catch (error: any) {
175
+ logger.error({ message: `Caught error when running listener after request`, error });
176
+ }
177
+ }
147
178
  }
@@ -19,7 +19,7 @@ import {
19
19
  getStartupTasks,
20
20
  } from '@proteinjs/server-api';
21
21
  import { loadRoutes, loadDefaultStarRoute } from './loadRoutes';
22
- import { Logger } from '@proteinjs/util';
22
+ import { Logger } from '@proteinjs/logger';
23
23
  import { setNodeModulesPath } from './nodeModulesPath';
24
24
 
25
25
  interface ExtendedIncomingMessage extends IncomingMessage {
@@ -32,7 +32,7 @@ interface ExtendedSocket extends Socket {
32
32
  }
33
33
 
34
34
  const staticContentPath = '/static/';
35
- const logger = new Logger('Server');
35
+ const logger = new Logger({ name: 'Server' });
36
36
  const app = express();
37
37
  const server = new HttpServer(app);
38
38
  export const io = new SocketIOServer(server);
@@ -42,6 +42,7 @@ export async function startServer(config: ServerConfig) {
42
42
  const routes = getRoutes();
43
43
  configureRequests(app);
44
44
  initializeHotReloading(app, config);
45
+ configureSession(app, config);
45
46
  beforeRequest(app, config);
46
47
  loadRoutes(
47
48
  routes.filter((route) => route.useHttp),
@@ -49,8 +50,7 @@ export async function startServer(config: ServerConfig) {
49
50
  config
50
51
  );
51
52
  configureHttps(app); // registering here forces static content to be redirected to https
52
- configureStaticContentRouter(app, config); // registering here prevents sessions from being created on static content requests
53
- configureSession(app, config);
53
+ configureStaticContentRouter(app, config);
54
54
  loadRoutes(
55
55
  routes.filter((route) => !route.useHttp),
56
56
  app,
@@ -69,9 +69,9 @@ export async function startServer(config: ServerConfig) {
69
69
 
70
70
  await runStartupTasks('after server config');
71
71
  if (config.onStartup) {
72
- logger.info(`Starting ServerConfig.onStartup`);
72
+ logger.info({ message: `Starting ServerConfig.onStartup` });
73
73
  await config.onStartup();
74
- logger.info(`Finished ServerConfig.onStartup`);
74
+ logger.info({ message: `Finished ServerConfig.onStartup` });
75
75
  }
76
76
 
77
77
  start(server, config);
@@ -85,15 +85,19 @@ async function runStartupTasks(when: StartupTask['when']) {
85
85
  return;
86
86
  }
87
87
 
88
- logger.info(`Starting ${filteredTasks.length} \`${when}\` startup task${filteredTasks.length > 1 ? 's' : ''}`);
88
+ logger.info({
89
+ message: `Starting ${filteredTasks.length} \`${when}\` startup task${filteredTasks.length > 1 ? 's' : ''}`,
90
+ });
89
91
  await Promise.all(
90
92
  filteredTasks.map(async (task) => {
91
- logger.info(`Starting task: ${task.name}`);
93
+ logger.info({ message: `Starting task: ${task.name}` });
92
94
  await task.run();
93
- logger.info(`Finished task: ${task.name}`);
95
+ logger.info({ message: `Finished task: ${task.name}` });
94
96
  })
95
97
  );
96
- logger.info(`Finished ${filteredTasks.length} \`${when}\` startup task${filteredTasks.length > 1 ? 's' : ''}`);
98
+ logger.info({
99
+ message: `Finished ${filteredTasks.length} \`${when}\` startup task${filteredTasks.length > 1 ? 's' : ''}`,
100
+ });
97
101
  }
98
102
 
99
103
  function configureRequests(app: express.Express) {
@@ -145,7 +149,7 @@ function configureHttps(app: express.Express) {
145
149
  return;
146
150
  }
147
151
 
148
- logger.debug(`Redirecting to https: ${request.headers.host + request.url}`);
152
+ logger.debug({ message: `Redirecting to https: ${request.headers.host + request.url}` });
149
153
  response.redirect('https://' + request.headers.host + request.url);
150
154
  });
151
155
  }
@@ -156,9 +160,9 @@ function configureStaticContentRouter(app: express.Express, config: ServerConfig
156
160
  }
157
161
 
158
162
  app.use(staticContentPath, express.static(config.staticContent.staticContentDir));
159
- logger.info(
160
- `Serving static content on path: ${staticContentPath}, serving from directory: ${config.staticContent.staticContentDir}`
161
- );
163
+ logger.info({
164
+ message: `Serving static content on path: ${staticContentPath}, serving from directory: ${config.staticContent.staticContentDir}`,
165
+ });
162
166
  }
163
167
 
164
168
  function configureSession(app: express.Express, config: ServerConfig) {
@@ -200,7 +204,7 @@ function configureSession(app: express.Express, config: ServerConfig) {
200
204
  function initializeAuthentication(authenticate: (username: string, password: string) => Promise<true | string>) {
201
205
  passport.use(
202
206
  new passportLocal.Strategy(async function (username, password, done) {
203
- logger.info(`Authenticating`);
207
+ logger.info({ message: `Authenticating` });
204
208
  const result = await authenticate(username, password);
205
209
  if (result === true) {
206
210
  return done(null, { username });
@@ -220,17 +224,19 @@ function initializeAuthentication(authenticate: (username: string, password: str
220
224
  }
221
225
 
222
226
  function beforeRequest(app: express.Express, config: ServerConfig) {
223
- let requestCounter: number = 0;
224
227
  if (config.request?.disableRequestLogging == false || typeof config.request?.disableRequestLogging === 'undefined') {
225
- app.use((request: express.Request, response: express.Response, next: express.NextFunction) => {
226
- if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
227
- next();
228
- return;
228
+ app.use(async (request: express.Request, response: express.Response, next: express.NextFunction) => {
229
+ if (config.authenticate) {
230
+ await new Promise<void>((resolve, reject) => {
231
+ passport.authenticate('local', function (err, user, info) {
232
+ if (err) {
233
+ reject(err);
234
+ }
235
+
236
+ resolve();
237
+ })(request, response, next);
238
+ });
229
239
  }
230
-
231
- const requestNumber = ++requestCounter;
232
- logger.info(`[#${requestNumber}] Started ${request.originalUrl}`);
233
- response.locals = { requestNumber };
234
240
  next();
235
241
  });
236
242
  }
@@ -244,22 +250,10 @@ function afterRequest(app: express.Express, config: ServerConfig) {
244
250
  if (config.request?.afterRequest) {
245
251
  app.use(config.request.afterRequest);
246
252
  }
247
-
248
- if (config.request?.disableRequestLogging == false || typeof config.request?.disableRequestLogging === 'undefined') {
249
- app.use((request: express.Request, response: express.Response, next: express.NextFunction) => {
250
- if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
251
- next();
252
- return;
253
- }
254
-
255
- logger.info(`[#${response.locals.requestNumber}] Finished ${request.originalUrl}`);
256
- next();
257
- });
258
- }
259
253
  }
260
254
 
261
255
  function initializeSocketIO(io: SocketIOServer, app: express.Express) {
262
- const logger = new Logger('SocketIOServer');
256
+ const socketLogger = new Logger({ name: 'SocketIOServer' });
263
257
 
264
258
  // Share session and passport middleware with Socket.IO
265
259
  const wrapMiddleware = (middleware: any) => (socket: any, next: any) => middleware(socket.request, {}, next);
@@ -280,7 +274,7 @@ function initializeSocketIO(io: SocketIOServer, app: express.Express) {
280
274
  // Initialize Socket.IO event handlers
281
275
  io.on('connection', (socket: ExtendedSocket) => {
282
276
  const userInfo = `${socket.request.user} (${socket.id})`;
283
- logger.info(`User connected: ${userInfo}`);
277
+ socketLogger.info({ message: `User connected: ${userInfo}` });
284
278
 
285
279
  // Map this socket to the session id so it can be closed when the session is destroyed
286
280
  const sessionId = socket.request.sessionID;
@@ -289,21 +283,21 @@ function initializeSocketIO(io: SocketIOServer, app: express.Express) {
289
283
  }
290
284
 
291
285
  socket.on('disconnect', (reason) => {
292
- logger.info(`User disconnected: ${userInfo}. Reason: ${reason}`);
286
+ socketLogger.info({ message: `User disconnected: ${userInfo}. Reason: ${reason}` });
293
287
  });
294
288
 
295
289
  socket.on('error', (error) => {
296
- logger.error(`Socket error for user: ${userInfo}. Error:`, error);
290
+ socketLogger.error({ message: `Socket error for user: ${userInfo}`, error });
297
291
  });
298
292
 
299
293
  socket.conn.on('error', (error) => {
300
- logger.error(`Socket connection error for user: ${userInfo}. Error:`, error);
294
+ socketLogger.error({ message: `Socket connection error for user: ${userInfo}`, error });
301
295
  });
302
296
  });
303
297
 
304
298
  // Handle server-level errors
305
- io.engine.on('connection_error', (err) => {
306
- logger.error('Connection error:', err);
299
+ io.engine.on('connection_error', (error) => {
300
+ socketLogger.error({ message: 'Connection error', error });
307
301
  });
308
302
  }
309
303
 
@@ -311,9 +305,9 @@ function start(server: HttpServer, config: ServerConfig) {
311
305
  const port = config.port ? config.port : 3000;
312
306
  server.listen(port, () => {
313
307
  if (process.env.DEVELOPMENT) {
314
- logger.info(`Starting in development mode`);
308
+ logger.info({ message: `Starting in development mode` });
315
309
  }
316
310
 
317
- logger.info(`Server listening on port: ${port}`);
311
+ logger.info({ message: `Server listening on port: ${port}` });
318
312
  });
319
313
  }