@azteam/express 1.2.488 → 1.2.489

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/lib/Server.js CHANGED
@@ -13,14 +13,18 @@ var _express = _interopRequireDefault(require("express"));
13
13
  require("express-async-errors");
14
14
  var _fs = _interopRequireDefault(require("fs"));
15
15
  var _helmet = _interopRequireDefault(require("helmet"));
16
- var _http = _interopRequireDefault(require("http"));
16
+ var _http = _interopRequireWildcard(require("http"));
17
17
  var _lodash = _interopRequireDefault(require("lodash"));
18
18
  var _methodOverride = _interopRequireDefault(require("method-override"));
19
19
  var _morgan = _interopRequireDefault(require("morgan"));
20
+ var _pako = _interopRequireDefault(require("pako"));
20
21
  var _path = _interopRequireDefault(require("path"));
21
22
  var _psl = _interopRequireDefault(require("psl"));
23
+ var _socket = require("socket.io");
22
24
  var _error = require("@azteam/error");
23
25
  var _util = require("@azteam/util");
26
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
27
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
24
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
29
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
26
30
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
@@ -45,6 +49,9 @@ var RES_TYPE = {
45
49
  OBJECT: 'OBJECT',
46
50
  DOCS: 'DOCS'
47
51
  };
52
+ function compressJson(message) {
53
+ return _pako["default"].deflate(JSON.stringify(message));
54
+ }
48
55
  var Server = /*#__PURE__*/function () {
49
56
  function Server(serviceDirs) {
50
57
  var _this = this;
@@ -100,9 +107,9 @@ var Server = /*#__PURE__*/function () {
100
107
  if (_fs["default"].statSync("".concat(apiDir, "/").concat(dirName)).isDirectory()) {
101
108
  var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(apiDir, "/").concat(dirName)), excludeList);
102
109
  for (var j = 0; j < versionDirs.length; j += 1) {
103
- var versionName = versionDirs[j],
104
- // eslint-disable-next-line global-require,import/no-dynamic-require
105
- controller = require("".concat(apiDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
110
+ var versionName = versionDirs[j];
111
+ // eslint-disable-next-line global-require,import/no-dynamic-require
112
+ var controller = require("".concat(apiDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
106
113
  this.addController(dirName, versionName, controller);
107
114
  }
108
115
  }
@@ -110,52 +117,58 @@ var Server = /*#__PURE__*/function () {
110
117
  }
111
118
  return this;
112
119
  }
120
+ }, {
121
+ key: "createExpressApp",
122
+ value: function createExpressApp() {
123
+ var _this$options = this.options,
124
+ whiteList = _this$options.whiteList,
125
+ systemUser = _this$options.systemUser;
126
+ var app = (0, _express["default"])();
127
+ app.use((0, _helmet["default"])({
128
+ frameguard: false
129
+ }));
130
+ app.set('view engine', 'ejs');
131
+ app.use((0, _methodOverride["default"])());
132
+ app.use(_bodyParser["default"].urlencoded({
133
+ limit: '5mb',
134
+ extended: true
135
+ }));
136
+ app.use(_bodyParser["default"].json({
137
+ limit: '5mb'
138
+ }));
139
+ app.set('trust proxy', 1);
140
+ app.use((0, _cookieParser["default"])(process.env.SECRET_KEY));
141
+ app.use((0, _compression["default"])());
142
+ app.use((0, _cors["default"])(function (req, callback) {
143
+ var origin = req.get('Origin');
144
+ var authorization = req.get('Authorization');
145
+ var agent = req.get('User-Agent') || 'null';
146
+ var error = null;
147
+ if (!authorization && !agent.startsWith(systemUser)) {
148
+ if (origin && whiteList && !whiteList.some(function (re) {
149
+ return origin.endsWith(re);
150
+ })) {
151
+ console.error("CORS ".concat(agent, " ").concat(origin));
152
+ error = new _error.ErrorException(_error.CORS, "".concat(origin, " Not allowed by CORS"));
153
+ }
154
+ }
155
+ callback(error, {
156
+ credentials: true,
157
+ origin: true
158
+ });
159
+ }));
160
+ if (this.options.debug) {
161
+ app.use((0, _morgan["default"])('dev'));
162
+ }
163
+ return app;
164
+ }
113
165
  }, {
114
166
  key: "startAPI",
115
167
  value: function startAPI(port) {
116
168
  var _this4 = this;
117
169
  if (!_lodash["default"].isEmpty(this.controllers)) {
118
- var _this$options = this.options,
119
- whiteList = _this$options.whiteList,
120
- cookieOption = _this$options.cookieOption,
121
- systemUser = _this$options.systemUser,
122
- app = (0, _express["default"])();
123
- app.use((0, _helmet["default"])({
124
- frameguard: false
125
- }));
126
- app.set('view engine', 'ejs');
127
- app.use((0, _methodOverride["default"])());
128
- app.use(_bodyParser["default"].urlencoded({
129
- limit: '5mb',
130
- extended: true
131
- }));
132
- app.use(_bodyParser["default"].json({
133
- limit: '5mb'
134
- }));
135
- app.set('trust proxy', 1);
136
- app.use((0, _cookieParser["default"])(process.env.SECRET_KEY));
137
- app.use((0, _compression["default"])());
138
- app.use((0, _cors["default"])(function (req, callback) {
139
- var origin = req.get('Origin'),
140
- authorization = req.get('Authorization'),
141
- agent = req.get('User-Agent') || 'null';
142
- var error = null;
143
- if (!authorization && !agent.startsWith(systemUser)) {
144
- if (origin && whiteList && !whiteList.some(function (re) {
145
- return origin.endsWith(re);
146
- })) {
147
- console.error("CORS ".concat(agent, " ").concat(origin));
148
- error = new _error.ErrorException(_error.CORS, "".concat(origin, " Not allowed by CORS"));
149
- }
150
- }
151
- callback(error, {
152
- credentials: true,
153
- origin: true
154
- });
155
- }));
156
- if (this.options.debug) {
157
- app.use((0, _morgan["default"])('dev'));
158
- }
170
+ var cookieOption = this.options.cookieOption;
171
+ var app = this.createExpressApp();
159
172
  app.get('/robots.txt', function (req, res) {
160
173
  res.type('text/plain');
161
174
  res.send('User-agent: *\nDisallow: /');
@@ -275,14 +288,14 @@ var Server = /*#__PURE__*/function () {
275
288
  });
276
289
  var msg = [];
277
290
  _lodash["default"].map(this.controllers, function (data) {
278
- var controller = data.controller,
279
- controllerName = data.name,
280
- controllerVersion = data.version,
281
- listPublicRouter = controller.publicRouter();
291
+ var controller = data.controller;
292
+ var controllerName = data.name;
293
+ var controllerVersion = data.version;
294
+ var listPublicRouter = controller.publicRouter();
282
295
  _lodash["default"].map(listPublicRouter, function (method) {
283
296
  var name = method.name,
284
- type = method.type,
285
- router = controller[name]();
297
+ type = method.type;
298
+ var router = controller[name]();
286
299
  if (!router.disabled) {
287
300
  router.path = "/".concat(method.path, "/").concat(router.path);
288
301
  router.path = controller.pathName ? "/".concat(controller.pathName).concat(router.path) : router.path;
@@ -393,7 +406,12 @@ var Server = /*#__PURE__*/function () {
393
406
  key: "startSocket",
394
407
  value: function startSocket(port) {
395
408
  if (!_lodash["default"].isEmpty(this.controllers)) {
396
- return this;
409
+ var httpServer = (0, _http.createServer)();
410
+ var app = this.createExpressApp();
411
+ httpServer.on('request', app);
412
+ var io = new _socket.Server(httpServer);
413
+ httpServer.listen(port);
414
+ return io;
397
415
  }
398
416
  throw new Error('No controllers in use SOCKET');
399
417
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azteam/express",
3
- "version": "1.2.488",
3
+ "version": "1.2.489",
4
4
  "license": "MIT",
5
5
  "author": "toda <sp.azsolution.net@gmail.com>",
6
6
  "main": "./lib/index.js",
@@ -37,6 +37,7 @@
37
37
  "pluralize": "8.0.0",
38
38
  "psl": "1.8.0",
39
39
  "socket.io": "4.4.1",
40
- "ua-parser-js": "1.0.32"
40
+ "ua-parser-js": "1.0.32",
41
+ "pako": "2.0.4"
41
42
  }
42
43
  }
package/src/Server.js CHANGED
@@ -7,12 +7,14 @@ import express from 'express';
7
7
  import 'express-async-errors';
8
8
  import fs from 'fs';
9
9
  import helmet from 'helmet';
10
- import http from 'http';
10
+ import http, {createServer} from 'http';
11
11
  import _ from 'lodash';
12
12
  import methodOverride from 'method-override';
13
13
  import morgan from 'morgan';
14
+ import pako from 'pako';
14
15
  import path from 'path';
15
16
  import psl from 'psl';
17
+ import {Server as SocketIO} from 'socket.io';
16
18
 
17
19
  import {CORS, ErrorException, NOT_FOUND, UNKNOWN, errorCatch} from '@azteam/error';
18
20
  import {omitArrayItem, omitItem} from '@azteam/util';
@@ -23,6 +25,10 @@ const RES_TYPE = {
23
25
  DOCS: 'DOCS',
24
26
  };
25
27
 
28
+ function compressJson(message) {
29
+ return pako.deflate(JSON.stringify(message));
30
+ }
31
+
26
32
  class Server {
27
33
  constructor(serviceDirs, options = {}, errorCallback = () => {}) {
28
34
  this.options = {
@@ -77,9 +83,9 @@ class Server {
77
83
  if (fs.statSync(`${apiDir}/${dirName}`).isDirectory()) {
78
84
  const versionDirs = _.differenceWith(fs.readdirSync(`${apiDir}/${dirName}`), excludeList);
79
85
  for (let j = 0; j < versionDirs.length; j += 1) {
80
- const versionName = versionDirs[j],
81
- // eslint-disable-next-line global-require,import/no-dynamic-require
82
- controller = require(`${apiDir}/${dirName}/${versionName}/controller`).default;
86
+ const versionName = versionDirs[j];
87
+ // eslint-disable-next-line global-require,import/no-dynamic-require
88
+ const controller = require(`${apiDir}/${dirName}/${versionName}/controller`).default;
83
89
  this.addController(dirName, versionName, controller);
84
90
  }
85
91
  }
@@ -88,50 +94,57 @@ class Server {
88
94
  return this;
89
95
  }
90
96
 
91
- startAPI(port) {
92
- if (!_.isEmpty(this.controllers)) {
93
- const {whiteList, cookieOption, systemUser} = this.options,
94
- app = express();
95
-
96
- app.use(
97
- helmet({
98
- frameguard: false,
99
- })
100
- );
101
-
102
- app.set('view engine', 'ejs');
103
-
104
- app.use(methodOverride());
105
- app.use(bodyParser.urlencoded({limit: '5mb', extended: true}));
106
- app.use(bodyParser.json({limit: '5mb'}));
107
-
108
- app.set('trust proxy', 1);
109
-
110
- app.use(cookieParser(process.env.SECRET_KEY));
111
- app.use(compression());
112
- app.use(
113
- cors(function (req, callback) {
114
- const origin = req.get('Origin'),
115
- authorization = req.get('Authorization'),
116
- agent = req.get('User-Agent') || 'null';
117
-
118
- let error = null;
119
- if (!authorization && !agent.startsWith(systemUser)) {
120
- if (origin && whiteList && !whiteList.some((re) => origin.endsWith(re))) {
121
- console.error(`CORS ${agent} ${origin}`);
122
- error = new ErrorException(CORS, `${origin} Not allowed by CORS`);
123
- }
97
+ createExpressApp() {
98
+ const {whiteList, systemUser} = this.options;
99
+
100
+ const app = express();
101
+
102
+ app.use(
103
+ helmet({
104
+ frameguard: false,
105
+ })
106
+ );
107
+
108
+ app.set('view engine', 'ejs');
109
+ app.use(methodOverride());
110
+ app.use(bodyParser.urlencoded({limit: '5mb', extended: true}));
111
+ app.use(bodyParser.json({limit: '5mb'}));
112
+
113
+ app.set('trust proxy', 1);
114
+
115
+ app.use(cookieParser(process.env.SECRET_KEY));
116
+ app.use(compression());
117
+ app.use(
118
+ cors(function (req, callback) {
119
+ const origin = req.get('Origin');
120
+ const authorization = req.get('Authorization');
121
+ const agent = req.get('User-Agent') || 'null';
122
+
123
+ let error = null;
124
+ if (!authorization && !agent.startsWith(systemUser)) {
125
+ if (origin && whiteList && !whiteList.some((re) => origin.endsWith(re))) {
126
+ console.error(`CORS ${agent} ${origin}`);
127
+ error = new ErrorException(CORS, `${origin} Not allowed by CORS`);
124
128
  }
125
- callback(error, {
126
- credentials: true,
127
- origin: true,
128
- });
129
- })
130
- );
129
+ }
130
+ callback(error, {
131
+ credentials: true,
132
+ origin: true,
133
+ });
134
+ })
135
+ );
131
136
 
132
- if (this.options.debug) {
133
- app.use(morgan('dev'));
134
- }
137
+ if (this.options.debug) {
138
+ app.use(morgan('dev'));
139
+ }
140
+
141
+ return app;
142
+ }
143
+
144
+ startAPI(port) {
145
+ if (!_.isEmpty(this.controllers)) {
146
+ const {cookieOption} = this.options;
147
+ const app = this.createExpressApp();
135
148
 
136
149
  app.get('/robots.txt', function (req, res) {
137
150
  res.type('text/plain');
@@ -268,14 +281,14 @@ class Server {
268
281
 
269
282
  const msg = [];
270
283
  _.map(this.controllers, (data) => {
271
- const {controller} = data,
272
- controllerName = data.name,
273
- controllerVersion = data.version,
274
- listPublicRouter = controller.publicRouter();
284
+ const {controller} = data;
285
+ const controllerName = data.name;
286
+ const controllerVersion = data.version;
287
+ const listPublicRouter = controller.publicRouter();
275
288
 
276
289
  _.map(listPublicRouter, (method) => {
277
- const {name, type} = method,
278
- router = controller[name]();
290
+ const {name, type} = method;
291
+ const router = controller[name]();
279
292
  if (!router.disabled) {
280
293
  router.path = `/${method.path}/${router.path}`;
281
294
  router.path = controller.pathName ? `/${controller.pathName}${router.path}` : router.path;
@@ -373,8 +386,16 @@ class Server {
373
386
 
374
387
  startSocket(port) {
375
388
  if (!_.isEmpty(this.controllers)) {
376
- return this;
389
+ const httpServer = createServer();
390
+ const app = this.createExpressApp();
391
+ httpServer.on('request', app);
392
+
393
+ const io = new SocketIO(httpServer);
394
+ httpServer.listen(port);
395
+
396
+ return io;
377
397
  }
398
+
378
399
  throw new Error('No controllers in use SOCKET');
379
400
  }
380
401
  }