@azteam/express 1.2.489 → 1.2.493

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
@@ -53,10 +53,9 @@ function compressJson(message) {
53
53
  return _pako["default"].deflate(JSON.stringify(message));
54
54
  }
55
55
  var Server = /*#__PURE__*/function () {
56
- function Server(serviceDirs) {
57
- var _this = this;
58
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
59
- var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
56
+ function Server() {
57
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
58
+ var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
60
59
  _classCallCheck(this, Server);
61
60
  this.options = _objectSpread(_objectSpread({
62
61
  redis: null,
@@ -81,43 +80,10 @@ var Server = /*#__PURE__*/function () {
81
80
  });
82
81
  this.middlewares = [];
83
82
  this.controllers = [];
84
- serviceDirs.map(function (dir) {
85
- return _this.initController(dir);
86
- });
83
+ this.socketEvents = [];
87
84
  this.callbackError = errorCallback;
88
85
  }
89
86
  _createClass(Server, [{
90
- key: "addController",
91
- value: function addController(name, version, controller) {
92
- this.controllers.push({
93
- name: name,
94
- version: version,
95
- controller: controller
96
- });
97
- return this;
98
- }
99
- }, {
100
- key: "initController",
101
- value: function initController(apiDir) {
102
- var excludeList = this.options.excludeList;
103
- if (_fs["default"].existsSync(apiDir)) {
104
- var controllerDirs = _fs["default"].readdirSync(apiDir);
105
- for (var i = 0; i < controllerDirs.length; i += 1) {
106
- var dirName = controllerDirs[i];
107
- if (_fs["default"].statSync("".concat(apiDir, "/").concat(dirName)).isDirectory()) {
108
- var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(apiDir, "/").concat(dirName)), excludeList);
109
- for (var j = 0; j < versionDirs.length; j += 1) {
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"];
113
- this.addController(dirName, versionName, controller);
114
- }
115
- }
116
- }
117
- }
118
- return this;
119
- }
120
- }, {
121
87
  key: "createExpressApp",
122
88
  value: function createExpressApp() {
123
89
  var _this$options = this.options,
@@ -162,10 +128,45 @@ var Server = /*#__PURE__*/function () {
162
128
  }
163
129
  return app;
164
130
  }
131
+ }, {
132
+ key: "addController",
133
+ value: function addController(name, version, controller) {
134
+ this.controllers.push({
135
+ name: name,
136
+ version: version,
137
+ controller: controller
138
+ });
139
+ return this;
140
+ }
141
+ }, {
142
+ key: "initController",
143
+ value: function initController(apiDir) {
144
+ var excludeList = this.options.excludeList;
145
+ if (_fs["default"].existsSync(apiDir)) {
146
+ var controllerDirs = _fs["default"].readdirSync(apiDir);
147
+ for (var i = 0; i < controllerDirs.length; i += 1) {
148
+ var dirName = controllerDirs[i];
149
+ if (_fs["default"].statSync("".concat(apiDir, "/").concat(dirName)).isDirectory()) {
150
+ var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(apiDir, "/").concat(dirName)), excludeList);
151
+ for (var j = 0; j < versionDirs.length; j += 1) {
152
+ var versionName = versionDirs[j];
153
+ // eslint-disable-next-line global-require,import/no-dynamic-require
154
+ var controller = require("".concat(apiDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
155
+ this.addController(dirName, versionName, controller);
156
+ }
157
+ }
158
+ }
159
+ }
160
+ return this;
161
+ }
165
162
  }, {
166
163
  key: "startAPI",
167
164
  value: function startAPI(port) {
168
- var _this4 = this;
165
+ var _this = this;
166
+ var serviceDirs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
167
+ serviceDirs.map(function (dir) {
168
+ return _this.initController(dir);
169
+ });
169
170
  if (!_lodash["default"].isEmpty(this.controllers)) {
170
171
  var cookieOption = this.options.cookieOption;
171
172
  var app = this.createExpressApp();
@@ -291,7 +292,7 @@ var Server = /*#__PURE__*/function () {
291
292
  var controller = data.controller;
292
293
  var controllerName = data.name;
293
294
  var controllerVersion = data.version;
294
- var listPublicRouter = controller.publicRouter();
295
+ var listPublicRouter = controller.getPublicRouters();
295
296
  _lodash["default"].map(listPublicRouter, function (method) {
296
297
  var name = method.name,
297
298
  type = method.type;
@@ -358,8 +359,8 @@ var Server = /*#__PURE__*/function () {
358
359
  if (process.env.NODE_ENV === 'development') {
359
360
  console.log(error.errors);
360
361
  }
361
- if (_this4.callbackError) {
362
- _this4.callbackError(error, req.originalUrl);
362
+ if (_this.callbackError) {
363
+ _this.callbackError(error, req.originalUrl);
363
364
  }
364
365
  if (req.callbackError) {
365
366
  req.callbackError(error);
@@ -402,18 +403,84 @@ var Server = /*#__PURE__*/function () {
402
403
  }
403
404
  throw new Error('No controllers in use API');
404
405
  }
406
+ }, {
407
+ key: "addSocketEvent",
408
+ value: function addSocketEvent(name, version, event) {
409
+ this.socketEvents.push({
410
+ name: name,
411
+ version: version,
412
+ SocketEvent: event
413
+ });
414
+ return this;
415
+ }
416
+ }, {
417
+ key: "initSocketEvent",
418
+ value: function initSocketEvent(socketDir) {
419
+ var excludeList = this.options.excludeList;
420
+ if (_fs["default"].existsSync(socketDir)) {
421
+ var socketDirs = _fs["default"].readdirSync(socketDir);
422
+ for (var i = 0; i < socketDirs.length; i += 1) {
423
+ var dirName = socketDirs[i];
424
+ if (_fs["default"].statSync("".concat(socketDir, "/").concat(dirName)).isDirectory()) {
425
+ var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(socketDir, "/").concat(dirName)), excludeList);
426
+ for (var j = 0; j < versionDirs.length; j += 1) {
427
+ var versionName = versionDirs[j];
428
+ // eslint-disable-next-line global-require
429
+ var event = require("".concat(socketDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
430
+ this.addSocketEvent(dirName, versionName, event);
431
+ }
432
+ }
433
+ }
434
+ }
435
+ return this;
436
+ }
405
437
  }, {
406
438
  key: "startSocket",
407
439
  value: function startSocket(port) {
408
- if (!_lodash["default"].isEmpty(this.controllers)) {
440
+ var _this4 = this;
441
+ var serviceDirs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
442
+ serviceDirs.map(function (dir) {
443
+ return _this4.initSocketEvent(dir);
444
+ });
445
+ var socketEvents = this.socketEvents;
446
+ if (!_lodash["default"].isEmpty(socketEvents)) {
409
447
  var httpServer = (0, _http.createServer)();
410
448
  var app = this.createExpressApp();
411
449
  httpServer.on('request', app);
412
450
  var io = new _socket.Server(httpServer);
413
451
  httpServer.listen(port);
452
+ httpServer.on('listening', function () {
453
+ console.log('listening', "ServerIO start at http://localhost:".concat(httpServer.address().port));
454
+ });
455
+ var eventList = [];
456
+ var msg = [];
457
+ _lodash["default"].map(socketEvents, function (data) {
458
+ var SocketEvent = data.SocketEvent;
459
+ var eventName = data.name;
460
+ var eventVersion = data.version;
461
+ var obj = new SocketEvent(io);
462
+ var listPublicEvent = obj.getPublicEvents(io);
463
+ _lodash["default"].map(listPublicEvent, function (method) {
464
+ var name = method.name,
465
+ type = method.type;
466
+ eventList.push(obj[name]);
467
+ msg.push({
468
+ name: eventName,
469
+ version: eventVersion,
470
+ type: type,
471
+ method: name
472
+ });
473
+ });
474
+ });
475
+ console.table(msg);
476
+ io.on('connection', function (socket) {
477
+ _lodash["default"].map(eventList, function (func) {
478
+ func(socket);
479
+ });
480
+ });
414
481
  return io;
415
482
  }
416
- throw new Error('No controllers in use SOCKET');
483
+ throw new Error('No events in use SOCKET');
417
484
  }
418
485
  }]);
419
486
  return Server;
@@ -23,8 +23,8 @@ var Controller = /*#__PURE__*/function () {
23
23
  this.repository = repository;
24
24
  }
25
25
  _createClass(Controller, [{
26
- key: "publicRouter",
27
- value: function publicRouter() {
26
+ key: "getPublicRouters",
27
+ value: function getPublicRouters() {
28
28
  var child = this;
29
29
  var result = [];
30
30
 
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ 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); }
8
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
10
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ var SocketEvent = /*#__PURE__*/function () {
14
+ function SocketEvent(io) {
15
+ _classCallCheck(this, SocketEvent);
16
+ this.io = io;
17
+ }
18
+ _createClass(SocketEvent, [{
19
+ key: "getPublicEvents",
20
+ value: function getPublicEvents() {
21
+ var child = this;
22
+ var result = [];
23
+
24
+ // eslint-disable-next-line no-proto
25
+ while (Object.getPrototypeOf(child.__proto__)) {
26
+ var data = Object.getOwnPropertyNames(Object.getPrototypeOf(child));
27
+ data.map(function (methodName) {
28
+ var matches = methodName.match(/^(schedule|listen)/);
29
+ if (matches) {
30
+ result.push({
31
+ type: matches[0],
32
+ name: methodName
33
+ });
34
+ }
35
+ return true;
36
+ });
37
+ // eslint-disable-next-line no-proto
38
+ child = child.__proto__;
39
+ }
40
+ return result;
41
+ }
42
+ }]);
43
+ return SocketEvent;
44
+ }();
45
+ var _default = exports["default"] = SocketEvent;
@@ -9,5 +9,12 @@ Object.defineProperty(exports, "Controller", {
9
9
  return _Controller["default"];
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "SocketEvent", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _SocketEvent["default"];
16
+ }
17
+ });
12
18
  var _Controller = _interopRequireDefault(require("./Controller"));
19
+ var _SocketEvent = _interopRequireDefault(require("./SocketEvent"));
13
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azteam/express",
3
- "version": "1.2.489",
3
+ "version": "1.2.493",
4
4
  "license": "MIT",
5
5
  "author": "toda <sp.azsolution.net@gmail.com>",
6
6
  "main": "./lib/index.js",
package/src/Server.js CHANGED
@@ -30,7 +30,7 @@ function compressJson(message) {
30
30
  }
31
31
 
32
32
  class Server {
33
- constructor(serviceDirs, options = {}, errorCallback = () => {}) {
33
+ constructor(options = {}, errorCallback = () => {}) {
34
34
  this.options = {
35
35
  redis: null,
36
36
  whiteList: null,
@@ -54,46 +54,11 @@ class Server {
54
54
 
55
55
  this.middlewares = [];
56
56
  this.controllers = [];
57
-
58
- serviceDirs.map((dir) => {
59
- return this.initController(dir);
60
- });
57
+ this.socketEvents = [];
61
58
 
62
59
  this.callbackError = errorCallback;
63
60
  }
64
61
 
65
- addController(name, version, controller) {
66
- this.controllers.push({
67
- name,
68
- version,
69
- controller,
70
- });
71
- return this;
72
- }
73
-
74
- initController(apiDir) {
75
- const {excludeList} = this.options;
76
-
77
- if (fs.existsSync(apiDir)) {
78
- const controllerDirs = fs.readdirSync(apiDir);
79
-
80
- for (let i = 0; i < controllerDirs.length; i += 1) {
81
- const dirName = controllerDirs[i];
82
-
83
- if (fs.statSync(`${apiDir}/${dirName}`).isDirectory()) {
84
- const versionDirs = _.differenceWith(fs.readdirSync(`${apiDir}/${dirName}`), excludeList);
85
- for (let j = 0; j < versionDirs.length; j += 1) {
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;
89
- this.addController(dirName, versionName, controller);
90
- }
91
- }
92
- }
93
- }
94
- return this;
95
- }
96
-
97
62
  createExpressApp() {
98
63
  const {whiteList, systemUser} = this.options;
99
64
 
@@ -141,7 +106,43 @@ class Server {
141
106
  return app;
142
107
  }
143
108
 
144
- startAPI(port) {
109
+ addController(name, version, controller) {
110
+ this.controllers.push({
111
+ name,
112
+ version,
113
+ controller,
114
+ });
115
+ return this;
116
+ }
117
+
118
+ initController(apiDir) {
119
+ const {excludeList} = this.options;
120
+
121
+ if (fs.existsSync(apiDir)) {
122
+ const controllerDirs = fs.readdirSync(apiDir);
123
+
124
+ for (let i = 0; i < controllerDirs.length; i += 1) {
125
+ const dirName = controllerDirs[i];
126
+
127
+ if (fs.statSync(`${apiDir}/${dirName}`).isDirectory()) {
128
+ const versionDirs = _.differenceWith(fs.readdirSync(`${apiDir}/${dirName}`), excludeList);
129
+ for (let j = 0; j < versionDirs.length; j += 1) {
130
+ const versionName = versionDirs[j];
131
+ // eslint-disable-next-line global-require,import/no-dynamic-require
132
+ const controller = require(`${apiDir}/${dirName}/${versionName}/controller`).default;
133
+ this.addController(dirName, versionName, controller);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ return this;
139
+ }
140
+
141
+ startAPI(port, serviceDirs = []) {
142
+ serviceDirs.map((dir) => {
143
+ return this.initController(dir);
144
+ });
145
+
145
146
  if (!_.isEmpty(this.controllers)) {
146
147
  const {cookieOption} = this.options;
147
148
  const app = this.createExpressApp();
@@ -284,7 +285,7 @@ class Server {
284
285
  const {controller} = data;
285
286
  const controllerName = data.name;
286
287
  const controllerVersion = data.version;
287
- const listPublicRouter = controller.publicRouter();
288
+ const listPublicRouter = controller.getPublicRouters();
288
289
 
289
290
  _.map(listPublicRouter, (method) => {
290
291
  const {name, type} = method;
@@ -384,8 +385,45 @@ class Server {
384
385
  throw new Error('No controllers in use API');
385
386
  }
386
387
 
387
- startSocket(port) {
388
- if (!_.isEmpty(this.controllers)) {
388
+ addSocketEvent(name, version, event) {
389
+ this.socketEvents.push({
390
+ name,
391
+ version,
392
+ SocketEvent: event,
393
+ });
394
+ return this;
395
+ }
396
+
397
+ initSocketEvent(socketDir) {
398
+ const {excludeList} = this.options;
399
+
400
+ if (fs.existsSync(socketDir)) {
401
+ const socketDirs = fs.readdirSync(socketDir);
402
+
403
+ for (let i = 0; i < socketDirs.length; i += 1) {
404
+ const dirName = socketDirs[i];
405
+
406
+ if (fs.statSync(`${socketDir}/${dirName}`).isDirectory()) {
407
+ const versionDirs = _.differenceWith(fs.readdirSync(`${socketDir}/${dirName}`), excludeList);
408
+ for (let j = 0; j < versionDirs.length; j += 1) {
409
+ const versionName = versionDirs[j];
410
+ // eslint-disable-next-line global-require
411
+ const event = require(`${socketDir}/${dirName}/${versionName}/controller`).default;
412
+ this.addSocketEvent(dirName, versionName, event);
413
+ }
414
+ }
415
+ }
416
+ }
417
+ return this;
418
+ }
419
+
420
+ startSocket(port, serviceDirs = []) {
421
+ serviceDirs.map((dir) => {
422
+ return this.initSocketEvent(dir);
423
+ });
424
+
425
+ const {socketEvents} = this;
426
+ if (!_.isEmpty(socketEvents)) {
389
427
  const httpServer = createServer();
390
428
  const app = this.createExpressApp();
391
429
  httpServer.on('request', app);
@@ -393,10 +431,45 @@ class Server {
393
431
  const io = new SocketIO(httpServer);
394
432
  httpServer.listen(port);
395
433
 
434
+ httpServer.on('listening', () => {
435
+ console.log('listening', `ServerIO start at http://localhost:${httpServer.address().port}`);
436
+ });
437
+
438
+ const eventList = [];
439
+ const msg = [];
440
+
441
+ _.map(socketEvents, (data) => {
442
+ const {SocketEvent} = data;
443
+ const eventName = data.name;
444
+ const eventVersion = data.version;
445
+ const obj = new SocketEvent(io);
446
+ const listPublicEvent = obj.getPublicEvents(io);
447
+
448
+ _.map(listPublicEvent, (method) => {
449
+ const {name, type} = method;
450
+ eventList.push(obj[name]);
451
+
452
+ msg.push({
453
+ name: eventName,
454
+ version: eventVersion,
455
+ type,
456
+ method: name,
457
+ });
458
+ });
459
+ });
460
+
461
+ console.table(msg);
462
+
463
+ io.on('connection', (socket) => {
464
+ _.map(eventList, (func) => {
465
+ func(socket);
466
+ });
467
+ });
468
+
396
469
  return io;
397
470
  }
398
471
 
399
- throw new Error('No controllers in use SOCKET');
472
+ throw new Error('No events in use SOCKET');
400
473
  }
401
474
  }
402
475
 
@@ -9,7 +9,7 @@ class Controller {
9
9
  this.repository = repository;
10
10
  }
11
11
 
12
- publicRouter() {
12
+ getPublicRouters() {
13
13
  let child = this;
14
14
  const result = [];
15
15
 
@@ -0,0 +1,31 @@
1
+ class SocketEvent {
2
+ constructor(io) {
3
+ this.io = io;
4
+ }
5
+
6
+ getPublicEvents() {
7
+ let child = this;
8
+ const result = [];
9
+
10
+ // eslint-disable-next-line no-proto
11
+ while (Object.getPrototypeOf(child.__proto__)) {
12
+ const data = Object.getOwnPropertyNames(Object.getPrototypeOf(child));
13
+
14
+ data.map(function (methodName) {
15
+ const matches = methodName.match(/^(schedule|listen)/);
16
+ if (matches) {
17
+ result.push({
18
+ type: matches[0],
19
+ name: methodName,
20
+ });
21
+ }
22
+ return true;
23
+ });
24
+ // eslint-disable-next-line no-proto
25
+ child = child.__proto__;
26
+ }
27
+ return result;
28
+ }
29
+ }
30
+
31
+ export default SocketEvent;
@@ -1 +1,2 @@
1
1
  export {default as Controller} from './Controller';
2
+ export {default as SocketEvent} from './SocketEvent';