@my-devkit/firebase 1.0.157 → 1.0.159

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.
Files changed (101) hide show
  1. package/dist/aggregate.js +30 -52
  2. package/dist/aggregate.js.map +1 -1
  3. package/dist/app-factory.js +139 -261
  4. package/dist/app-factory.js.map +1 -1
  5. package/dist/bus.js +44 -101
  6. package/dist/bus.js.map +1 -1
  7. package/dist/context.js +69 -132
  8. package/dist/context.js.map +1 -1
  9. package/dist/decorators/controller/body.js +6 -6
  10. package/dist/decorators/controller/body.js.map +1 -1
  11. package/dist/decorators/controller/body.spec.js +55 -90
  12. package/dist/decorators/controller/body.spec.js.map +1 -1
  13. package/dist/decorators/controller/controller.js +3 -3
  14. package/dist/decorators/controller/controller.js.map +1 -1
  15. package/dist/decorators/controller/controller.spec.js +14 -48
  16. package/dist/decorators/controller/controller.spec.js.map +1 -1
  17. package/dist/decorators/controller/get.js +4 -4
  18. package/dist/decorators/controller/get.js.map +1 -1
  19. package/dist/decorators/controller/get.spec.js +30 -62
  20. package/dist/decorators/controller/get.spec.js.map +1 -1
  21. package/dist/decorators/controller/index.js +5 -1
  22. package/dist/decorators/controller/index.js.map +1 -1
  23. package/dist/decorators/controller/param.js +6 -6
  24. package/dist/decorators/controller/param.js.map +1 -1
  25. package/dist/decorators/controller/param.spec.js +48 -82
  26. package/dist/decorators/controller/param.spec.js.map +1 -1
  27. package/dist/decorators/controller/post.js +4 -4
  28. package/dist/decorators/controller/post.js.map +1 -1
  29. package/dist/decorators/controller/post.spec.js +69 -102
  30. package/dist/decorators/controller/post.spec.js.map +1 -1
  31. package/dist/decorators/controller/query.js +6 -6
  32. package/dist/decorators/controller/query.js.map +1 -1
  33. package/dist/decorators/controller/query.spec.js +48 -82
  34. package/dist/decorators/controller/query.spec.js.map +1 -1
  35. package/dist/decorators/handler/command-handler.js +7 -7
  36. package/dist/decorators/handler/command-handler.js.map +1 -1
  37. package/dist/decorators/handler/command-handler.spec.js +95 -178
  38. package/dist/decorators/handler/command-handler.spec.js.map +1 -1
  39. package/dist/decorators/handler/event-handler.js +7 -7
  40. package/dist/decorators/handler/event-handler.js.map +1 -1
  41. package/dist/decorators/handler/event-handler.spec.js +98 -181
  42. package/dist/decorators/handler/event-handler.spec.js.map +1 -1
  43. package/dist/decorators/handler/index.js +5 -1
  44. package/dist/decorators/handler/index.js.map +1 -1
  45. package/dist/decorators/index.js +5 -1
  46. package/dist/decorators/index.js.map +1 -1
  47. package/dist/decorators/injectable.js +2 -2
  48. package/dist/decorators/injectable.js.map +1 -1
  49. package/dist/decorators/module.js +2 -2
  50. package/dist/decorators/module.js.map +1 -1
  51. package/dist/decorators/transactional-client.js +2 -2
  52. package/dist/decorators/transactional-client.js.map +1 -1
  53. package/dist/execution-mode-enum.js +1 -1
  54. package/dist/execution-mode-enum.js.map +1 -1
  55. package/dist/firestore-client.js +179 -277
  56. package/dist/firestore-client.js.map +1 -1
  57. package/dist/handler-helper.js +57 -140
  58. package/dist/handler-helper.js.map +1 -1
  59. package/dist/index.js +5 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/injector.js +14 -25
  62. package/dist/injector.js.map +1 -1
  63. package/dist/interfaces/from-array.d.ts +1 -1
  64. package/dist/interfaces/index.js +5 -1
  65. package/dist/interfaces/index.js.map +1 -1
  66. package/dist/interfaces/newable.d.ts +1 -1
  67. package/dist/reflect.d.ts +3 -3
  68. package/dist/reflect.js +51 -57
  69. package/dist/reflect.js.map +1 -1
  70. package/dist/request-method.enum.js +1 -1
  71. package/dist/request-method.enum.js.map +1 -1
  72. package/dist/sanity-check/controller.js +29 -64
  73. package/dist/sanity-check/controller.js.map +1 -1
  74. package/dist/sanity-check/module.js +11 -14
  75. package/dist/sanity-check/module.js.map +1 -1
  76. package/dist/server/index.js +5 -1
  77. package/dist/server/index.js.map +1 -1
  78. package/dist/server/middlewares/authentication-middleware.js +45 -93
  79. package/dist/server/middlewares/authentication-middleware.js.map +1 -1
  80. package/dist/server/middlewares/create-context-middleware.js +8 -39
  81. package/dist/server/middlewares/create-context-middleware.js.map +1 -1
  82. package/dist/server/middlewares/error-middleware.js +30 -62
  83. package/dist/server/middlewares/error-middleware.js.map +1 -1
  84. package/dist/server/middlewares/headers-middleware.js +11 -42
  85. package/dist/server/middlewares/headers-middleware.js.map +1 -1
  86. package/dist/server/middlewares/index.js +5 -1
  87. package/dist/server/middlewares/index.js.map +1 -1
  88. package/dist/server/middlewares/not-found-middleware.js +4 -34
  89. package/dist/server/middlewares/not-found-middleware.js.map +1 -1
  90. package/dist/server/server.d.ts +1 -1
  91. package/dist/server/server.js +73 -103
  92. package/dist/server/server.js.map +1 -1
  93. package/dist/zip-helper.js +32 -12
  94. package/dist/zip-helper.js.map +1 -1
  95. package/package.json +28 -25
  96. package/src/decorators/handler/command-handler.spec.ts +7 -6
  97. package/src/decorators/handler/event-handler.spec.ts +9 -8
  98. package/src/reflect.ts +1 -1
  99. package/src/server/server.ts +2 -2
  100. package/tsconfig.json +11 -17
  101. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/aggregate.js CHANGED
@@ -8,50 +8,33 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
12
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
13
- if (ar || !(i in from)) {
14
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
15
- ar[i] = from[i];
16
- }
17
- }
18
- return to.concat(ar || Array.prototype.slice.call(from));
19
- };
20
11
  Object.defineProperty(exports, "__esModule", { value: true });
21
12
  exports.Aggregate = void 0;
22
- var core_1 = require("@my-devkit/core");
23
- var context_1 = require("./context");
24
- var Aggregate = /** @class */ (function () {
25
- function Aggregate() {
13
+ const core_1 = require("@my-devkit/core");
14
+ const context_1 = require("./context");
15
+ class Aggregate {
16
+ constructor() {
26
17
  this.id = null;
27
18
  this._type = null;
28
19
  this._events = [];
29
20
  this.id = (0, core_1.guid)();
30
21
  this._type = this.constructor.name;
31
22
  }
32
- Object.defineProperty(Aggregate.prototype, "_path", {
33
- get: function () {
34
- return "/aggregates/".concat(this.id);
35
- },
36
- enumerable: false,
37
- configurable: true
38
- });
39
- Object.defineProperty(Aggregate.prototype, "hash", {
40
- get: function () {
41
- return JSON.stringify((0, core_1.serialize)(this));
42
- },
43
- enumerable: false,
44
- configurable: true
45
- });
46
- Aggregate.prototype.assert = function (value, errorMessage) {
23
+ get _path() {
24
+ return `/aggregates/${this.id}`;
25
+ }
26
+ get hash() {
27
+ return JSON.stringify((0, core_1.serialize)(this));
28
+ }
29
+ assert(value, errorMessage) {
47
30
  if (!value) {
48
31
  throw new core_1.DomainError(errorMessage);
49
32
  }
50
- };
51
- Aggregate.prototype.apply = function (event) {
52
- var methodName = "apply".concat(event._type);
33
+ }
34
+ apply(event) {
35
+ const methodName = `apply${event._type}`;
53
36
  if (!(methodName in this)) {
54
- throw new Error("".concat(this._type, ".").concat(methodName, " method is missing!"));
37
+ throw new Error(`${this._type}.${methodName} method is missing!`);
55
38
  }
56
39
  event._aggregateId = this.id;
57
40
  event._aggregateType = this._type;
@@ -60,26 +43,21 @@ var Aggregate = /** @class */ (function () {
60
43
  event.publishedAt = new Date();
61
44
  this[methodName](event);
62
45
  this._events.push(event);
63
- };
64
- Object.defineProperty(Aggregate.prototype, "events", {
65
- get: function () {
66
- return __spreadArray([], this._events, true);
67
- },
68
- enumerable: false,
69
- configurable: true
70
- });
71
- Aggregate.prototype.clearEvents = function () {
46
+ }
47
+ get events() {
48
+ return [...this._events];
49
+ }
50
+ clearEvents() {
72
51
  this._events = [];
73
- };
74
- __decorate([
75
- (0, core_1.autoserializeAs)(String),
76
- __metadata("design:type", String)
77
- ], Aggregate.prototype, "id", void 0);
78
- __decorate([
79
- (0, core_1.autoserializeAs)(String),
80
- __metadata("design:type", String)
81
- ], Aggregate.prototype, "_type", void 0);
82
- return Aggregate;
83
- }());
52
+ }
53
+ }
84
54
  exports.Aggregate = Aggregate;
55
+ __decorate([
56
+ (0, core_1.autoserializeAs)(String),
57
+ __metadata("design:type", String)
58
+ ], Aggregate.prototype, "id", void 0);
59
+ __decorate([
60
+ (0, core_1.autoserializeAs)(String),
61
+ __metadata("design:type", String)
62
+ ], Aggregate.prototype, "_type", void 0);
85
63
  //# sourceMappingURL=aggregate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,wCAAiG;AAEjG,qCAAoC;AAEpC;IAKI;QAJgC,OAAE,GAAW,IAAI,CAAC;QAClB,UAAK,GAAW,IAAI,CAAC;QAC7C,YAAO,GAAY,EAAE,CAAC;QAG1B,IAAI,CAAC,EAAE,GAAG,IAAA,WAAI,GAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,sBAAW,4BAAK;aAAhB;YACI,OAAO,sBAAe,IAAI,CAAC,EAAE,CAAE,CAAC;QACpC,CAAC;;;OAAA;IAED,sBAAW,2BAAI;aAAf;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;;;OAAA;IAES,0BAAM,GAAhB,UAAiB,KAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAI,kBAAW,CAAC,YAAY,CAAC,CAAC;SACvC;IACL,CAAC;IAES,yBAAK,GAAf,UAAiC,KAAQ;QACrC,IAAM,UAAU,GAAG,eAAQ,KAAK,CAAC,KAAK,CAAE,CAAC;QACzC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,UAAG,IAAI,CAAC,KAAK,cAAI,UAAU,wBAAqB,CAAC,CAAC;SACrE;QAED,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;QAElC,KAAK,CAAC,cAAc,GAAG,iBAAO,CAAC,aAAa,CAAC;QAC7C,KAAK,CAAC,YAAY,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,sBAAW,6BAAM;aAAjB;YACI,yBAAW,IAAI,CAAC,OAAO,QAAE;QAC7B,CAAC;;;OAAA;IAEM,+BAAW,GAAlB;QACI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IA/CwB;QAAxB,IAAA,sBAAe,EAAC,MAAM,CAAC;;yCAA0B;IACzB;QAAxB,IAAA,sBAAe,EAAC,MAAM,CAAC;;4CAA6B;IA+CzD,gBAAC;CAAA,AAjDD,IAiDC;AAjDqB,8BAAS"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAiG;AAEjG,uCAAoC;AAEpC,MAAsB,SAAS;IAK3B;QAJgC,OAAE,GAAW,IAAI,CAAC;QAClB,UAAK,GAAW,IAAI,CAAC;QAC7C,YAAO,GAAY,EAAE,CAAC;QAG1B,IAAI,CAAC,EAAE,GAAG,IAAA,WAAI,GAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,eAAe,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAES,MAAM,CAAC,KAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAI,kBAAW,CAAC,YAAY,CAAC,CAAC;SACvC;IACL,CAAC;IAES,KAAK,CAAkB,KAAQ;QACrC,MAAM,UAAU,GAAG,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,qBAAqB,CAAC,CAAC;SACrE;QAED,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;QAElC,KAAK,CAAC,cAAc,GAAG,iBAAO,CAAC,aAAa,CAAC;QAC7C,KAAK,CAAC,YAAY,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAW,MAAM;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEM,WAAW;QACd,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ;AAjDD,8BAiDC;AAhDmC;IAA/B,IAAA,sBAAe,EAAC,MAAM,CAAC;;qCAA0B;AAClB;IAA/B,IAAA,sBAAe,EAAC,MAAM,CAAC;;wCAA6B"}
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -19,77 +8,48 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
20
9
  });
21
10
  };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
11
  Object.defineProperty(exports, "__esModule", { value: true });
50
12
  exports.AppFactory = void 0;
51
- var core_1 = require("@my-devkit/core");
52
- var app_1 = require("firebase-admin/app");
53
- var auth_1 = require("firebase-admin/auth");
54
- var firestore_1 = require("firebase-admin/firestore");
55
- var firebase_functions_1 = require("firebase-functions");
56
- var bus_1 = require("./bus");
57
- var constants_1 = require("./constants");
58
- var context_1 = require("./context");
59
- var execution_mode_enum_1 = require("./execution-mode-enum");
60
- var firestore_client_1 = require("./firestore-client");
61
- var reflect_1 = require("./reflect");
62
- var server_1 = require("./server");
63
- var AppFactory = /** @class */ (function () {
64
- function AppFactory() {
65
- }
66
- AppFactory.isActive = function (name) {
67
- var functionName = process.env.FUNCTION_NAME || process.env.K_SERVICE;
13
+ const core_1 = require("@my-devkit/core");
14
+ const app_1 = require("firebase-admin/app");
15
+ const auth_1 = require("firebase-admin/auth");
16
+ const firestore_1 = require("firebase-admin/firestore");
17
+ const firebase_functions_1 = require("firebase-functions");
18
+ const bus_1 = require("./bus");
19
+ const constants_1 = require("./constants");
20
+ const context_1 = require("./context");
21
+ const execution_mode_enum_1 = require("./execution-mode-enum");
22
+ const firestore_client_1 = require("./firestore-client");
23
+ const reflect_1 = require("./reflect");
24
+ const server_1 = require("./server");
25
+ class AppFactory {
26
+ static isActive(name) {
27
+ const functionName = process.env.FUNCTION_NAME || process.env.K_SERVICE;
68
28
  return !functionName || functionName === name;
69
- };
70
- AppFactory.initializeApp = function (options) {
29
+ }
30
+ static initializeApp(options) {
71
31
  this.instanceId = (0, core_1.guid)();
72
32
  context_1.Context.init();
73
33
  this.registerLogger();
74
34
  this.publicPaths = options.publicPaths || [];
75
- var app = (0, app_1.initializeApp)((0, firebase_functions_1.config)().firebase);
35
+ const app = (0, app_1.initializeApp)((0, firebase_functions_1.config)().firebase);
76
36
  this.firestore = (0, firestore_1.getFirestore)(app);
77
37
  this.firestore.settings({});
78
38
  this.auth = (0, auth_1.getAuth)(app);
79
- var runtimeOptions = {
39
+ const runtimeOptions = {
80
40
  timeoutSeconds: options.timeoutSeconds,
81
41
  memory: options.memory
82
42
  };
83
43
  this.functionInRegion = (0, firebase_functions_1.region)(this.isEmulator ? 'functions' : options.region).runWith(runtimeOptions);
84
- };
85
- AppFactory.createHttpFunction = function (name, module) {
44
+ }
45
+ static createHttpFunction(name, module) {
86
46
  if (!this.isActive(name)) {
87
47
  return null;
88
48
  }
89
- core_1.Logger.info("Cold Start Http function ".concat(name));
90
- var bus = new bus_1.Bus();
91
- var server = new server_1.Server({
92
- bus: bus,
49
+ core_1.Logger.info(`Cold Start Http function ${name}`);
50
+ const bus = new bus_1.Bus();
51
+ const server = new server_1.Server({
52
+ bus,
93
53
  firebaseAuth: this.auth,
94
54
  firestore: this.firestore,
95
55
  publicPaths: this.publicPaths
@@ -98,13 +58,13 @@ var AppFactory = /** @class */ (function () {
98
58
  this.registerEventPersisterHandler(bus);
99
59
  this.registerHandlers(bus, module);
100
60
  return this.functionInRegion.https.onRequest(server.app);
101
- };
102
- AppFactory.createScheduledJob = function (name, module, schedule, timeZone, commandType) {
61
+ }
62
+ static createScheduledJob(name, module, schedule, timeZone, commandType) {
103
63
  if (!this.isActive(name)) {
104
64
  return null;
105
65
  }
106
- core_1.Logger.info("Cold Start scheduled job ".concat(name));
107
- var bus = new bus_1.Bus();
66
+ core_1.Logger.info(`Cold Start scheduled job ${name}`);
67
+ const bus = new bus_1.Bus();
108
68
  this.registerEventPersisterHandler(bus);
109
69
  this.registerHandlers(bus, module);
110
70
  return this.functionInRegion
@@ -112,234 +72,152 @@ var AppFactory = /** @class */ (function () {
112
72
  .schedule(schedule)
113
73
  .timeZone(timeZone)
114
74
  .onRun(this.getFunctionCommandHandler(bus, commandType));
115
- };
116
- AppFactory.createEventListener = function (name, module, mode) {
117
- if (mode === void 0) { mode = execution_mode_enum_1.ExecutionMode.Asynchronous; }
75
+ }
76
+ static createEventListener(name, module, mode = execution_mode_enum_1.ExecutionMode.Asynchronous) {
118
77
  if (!this.isActive(name)) {
119
78
  return null;
120
79
  }
121
- core_1.Logger.info("Cold Start Event Listener ".concat(mode));
122
- var bus = new bus_1.Bus();
80
+ core_1.Logger.info(`Cold Start Event Listener ${mode}`);
81
+ const bus = new bus_1.Bus();
123
82
  this.registerEventPersisterHandler(bus);
124
83
  this.registerHandlers(bus, module);
125
84
  return this.functionInRegion
126
85
  .firestore
127
86
  .document('events/{eventId}')
128
87
  .onCreate(this.getFunctionEventHandler(bus, execution_mode_enum_1.ExecutionMode.Asynchronous));
129
- };
130
- AppFactory.registerEventPersisterHandler = function (bus) {
131
- var _this = this;
132
- bus.onEachEvent(function (event) { return __awaiter(_this, void 0, void 0, function () {
133
- return __generator(this, function (_a) {
134
- context_1.Context.resolve(firestore_client_1.FirestoreClient).createDocument(event);
135
- return [2 /*return*/];
136
- });
137
- }); }, execution_mode_enum_1.ExecutionMode.Synchronous);
138
- };
139
- AppFactory.registerControllers = function (server, module) {
140
- var controllers = Reflect.getMetadata(constants_1.MODULE_METADATA.CONTROLLERS, module) || [];
141
- for (var _i = 0, controllers_1 = controllers; _i < controllers_1.length; _i++) {
142
- var controller = controllers_1[_i];
88
+ }
89
+ static registerEventPersisterHandler(bus) {
90
+ bus.onEachEvent((event) => __awaiter(this, void 0, void 0, function* () {
91
+ context_1.Context.resolve(firestore_client_1.FirestoreClient).createDocument(event);
92
+ }), execution_mode_enum_1.ExecutionMode.Synchronous);
93
+ }
94
+ static registerControllers(server, module) {
95
+ const controllers = Reflect.getMetadata(constants_1.MODULE_METADATA.CONTROLLERS, module) || [];
96
+ for (const controller of controllers) {
143
97
  this.registerController(server, controller);
144
98
  }
145
- var imports = Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, module) || [];
146
- for (var _a = 0, imports_1 = imports; _a < imports_1.length; _a++) {
147
- var importedModule = imports_1[_a];
99
+ const imports = Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, module) || [];
100
+ for (const importedModule of imports) {
148
101
  this.registerControllers(server, importedModule);
149
102
  }
150
- };
151
- AppFactory.registerController = function (server, controller) {
152
- var _this = this;
153
- var router = new server_1.Server.Router();
154
- var config = (0, reflect_1.reflect)(controller).getControllerConfiguration();
155
- var _loop_1 = function (route) {
156
- router.registerRoute(route.requestMethod, "/".concat(route.path), function (request, response) { return __awaiter(_this, void 0, void 0, function () {
157
- var controllerInstance, args, result;
158
- return __generator(this, function (_a) {
159
- switch (_a.label) {
160
- case 0:
161
- core_1.Logger.info("".concat(route.requestMethod, "/").concat(route.path, ": executing handler method ").concat(controller.name, ".").concat(route.methodName));
162
- controllerInstance = context_1.Context.resolve(controller);
163
- args = route.argumentInjectors.map(function (injector) { return injector(request); });
164
- return [4 /*yield*/, controllerInstance[route.methodName].apply(controllerInstance, args)];
165
- case 1:
166
- result = _a.sent();
167
- return [4 /*yield*/, context_1.Context.commit()];
168
- case 2:
169
- _a.sent();
170
- context_1.Context.destroy();
171
- response.status(server_1.Server.statusCodes.OK).send({ result: result });
172
- return [2 /*return*/];
173
- }
174
- });
175
- }); });
176
- };
177
- for (var _i = 0, _a = config.routes; _i < _a.length; _i++) {
178
- var route = _a[_i];
179
- _loop_1(route);
103
+ }
104
+ static registerController(server, controller) {
105
+ const router = new server_1.Server.Router();
106
+ const config = (0, reflect_1.reflect)(controller).getControllerConfiguration();
107
+ for (const route of config.routes) {
108
+ router.registerRoute(route.requestMethod, `/${route.path}`, (request, response) => __awaiter(this, void 0, void 0, function* () {
109
+ core_1.Logger.info(`${route.requestMethod}/${route.path}: executing handler method ${controller.name}.${route.methodName}`);
110
+ const controllerInstance = context_1.Context.resolve(controller);
111
+ const args = route.argumentInjectors.map(injector => injector(request));
112
+ const result = yield controllerInstance[route.methodName](...args);
113
+ yield context_1.Context.commit();
114
+ context_1.Context.destroy();
115
+ response.status(server_1.Server.statusCodes.OK).send({ result });
116
+ }));
180
117
  }
181
- router.registerOnServer("/".concat(config.basePath), server);
182
- };
183
- AppFactory.registerHandlers = function (bus, module) {
184
- var _this = this;
185
- var handlers = Reflect.getMetadata(constants_1.MODULE_METADATA.HANDLERS, module) || [];
186
- var _loop_2 = function (handler) {
187
- var handlerConfiguration = (0, reflect_1.reflect)(handler).getHandlerConfiguration();
188
- var instance = new handler();
189
- var _loop_3 = function (commandHandler) {
190
- bus.onCommand(commandHandler.command, function (command) {
191
- var startDate = new Date();
192
- core_1.Logger.info("".concat(handler.name, ".").concat(commandHandler.methodName, " handle ").concat(command._type));
193
- var result = instance[commandHandler.methodName](command);
194
- core_1.Logger.infoWithElapesedTime("".concat(command._type, " handled by ").concat(handler.name, ".").concat(commandHandler.methodName), startDate);
118
+ router.registerOnServer(`/${config.basePath}`, server);
119
+ }
120
+ static registerHandlers(bus, module) {
121
+ const handlers = Reflect.getMetadata(constants_1.MODULE_METADATA.HANDLERS, module) || [];
122
+ for (const handler of handlers) {
123
+ const handlerConfiguration = (0, reflect_1.reflect)(handler).getHandlerConfiguration();
124
+ const instance = new handler();
125
+ for (const commandHandler of Array.from(handlerConfiguration.commandHandlers.values())) {
126
+ bus.onCommand(commandHandler.command, (command) => {
127
+ const startDate = new Date();
128
+ core_1.Logger.info(`${handler.name}.${commandHandler.methodName} handle ${command._type}`);
129
+ const result = instance[commandHandler.methodName](command);
130
+ core_1.Logger.infoWithElapesedTime(`${command._type} handled by ${handler.name}.${commandHandler.methodName}`, startDate);
195
131
  return result;
196
132
  });
197
- };
198
- for (var _b = 0, _c = Array.from(handlerConfiguration.commandHandlers.values()); _b < _c.length; _b++) {
199
- var commandHandler = _c[_b];
200
- _loop_3(commandHandler);
201
133
  }
202
- var _loop_4 = function (eventHandler) {
203
- bus.onEvent(eventHandler.event, function (event) { return __awaiter(_this, void 0, void 0, function () {
204
- var startDate;
205
- return __generator(this, function (_a) {
206
- switch (_a.label) {
207
- case 0:
208
- startDate = new Date();
209
- core_1.Logger.info("".concat(handler.name, ".").concat(eventHandler.methodName, " handle ").concat(event._type));
210
- return [4 /*yield*/, instance[eventHandler.methodName](event)];
211
- case 1:
212
- _a.sent();
213
- core_1.Logger.infoWithElapesedTime("".concat(event._type, " handled by ").concat(handler.name, ".").concat(eventHandler.methodName), startDate);
214
- return [2 /*return*/];
215
- }
216
- });
217
- }); }, eventHandler.executionMode);
218
- };
219
- for (var _d = 0, _e = Array.from(handlerConfiguration.eventHandlers.values()); _d < _e.length; _d++) {
220
- var eventHandler = _e[_d];
221
- _loop_4(eventHandler);
134
+ for (const eventHandler of Array.from(handlerConfiguration.eventHandlers.values())) {
135
+ bus.onEvent(eventHandler.event, (event) => __awaiter(this, void 0, void 0, function* () {
136
+ const startDate = new Date();
137
+ core_1.Logger.info(`${handler.name}.${eventHandler.methodName} handle ${event._type}`);
138
+ yield instance[eventHandler.methodName](event);
139
+ core_1.Logger.infoWithElapesedTime(`${event._type} handled by ${handler.name}.${eventHandler.methodName}`, startDate);
140
+ }), eventHandler.executionMode);
222
141
  }
223
- };
224
- for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {
225
- var handler = handlers_1[_i];
226
- _loop_2(handler);
227
142
  }
228
- var imports = Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, module) || [];
229
- for (var _a = 0, imports_2 = imports; _a < imports_2.length; _a++) {
230
- var importedModule = imports_2[_a];
143
+ const imports = Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, module) || [];
144
+ for (const importedModule of imports) {
231
145
  this.registerHandlers(bus, importedModule);
232
146
  }
233
- };
234
- AppFactory.registerLogger = function () {
235
- var _this = this;
147
+ }
148
+ static registerLogger() {
236
149
  if (this.isEmulator) {
237
150
  core_1.Logger.registerLogger(new core_1.Logger.ConsoleImplementation());
238
151
  return;
239
152
  }
240
- var completeMetaData = function (data) {
153
+ const completeMetaData = (data) => {
241
154
  var _a, _b;
242
- return __assign({ instanceId: _this.instanceId, correlationId: context_1.Context.correlationId, eventId: context_1.Context.eventId, userId: (_a = context_1.Context.user) === null || _a === void 0 ? void 0 : _a.uid, userEmail: (_b = context_1.Context.user) === null || _b === void 0 ? void 0 : _b.email }, data);
155
+ return Object.assign({ instanceId: this.instanceId, correlationId: context_1.Context.correlationId, eventId: context_1.Context.eventId, userId: (_a = context_1.Context.user) === null || _a === void 0 ? void 0 : _a.uid, userEmail: (_b = context_1.Context.user) === null || _b === void 0 ? void 0 : _b.email }, data);
243
156
  };
244
157
  core_1.Logger.registerLogger({
245
- debug: function (message, data) {
158
+ debug: (message, data) => {
246
159
  firebase_functions_1.logger.debug(message, completeMetaData(data));
247
160
  },
248
- info: function (message, data) {
161
+ info: (message, data) => {
249
162
  firebase_functions_1.logger.info(message, completeMetaData(data));
250
163
  },
251
- warn: function (message, data) {
164
+ warn: (message, data) => {
252
165
  firebase_functions_1.logger.warn(message, completeMetaData(data));
253
166
  },
254
- error: function (message, data) {
167
+ error: (message, data) => {
255
168
  firebase_functions_1.logger.error(message, completeMetaData(data));
256
169
  }
257
170
  });
258
- };
259
- AppFactory.getFunctionCommandHandler = function (bus, commandType) {
260
- var _this = this;
261
- return function () { return __awaiter(_this, void 0, void 0, function () {
262
- var startDate, command, error_1;
263
- return __generator(this, function (_a) {
264
- switch (_a.label) {
265
- case 0:
266
- startDate = new Date();
267
- command = new commandType();
268
- context_1.Context.create(bus);
269
- context_1.Context.correlationId = (0, core_1.guid)();
270
- _a.label = 1;
271
- case 1:
272
- _a.trys.push([1, 4, 5, 6]);
273
- core_1.Logger.info("".concat('-'.repeat(5), " handling ").concat(command._type, " ").concat('-'.repeat(5)));
274
- return [4 /*yield*/, bus.send(command)];
275
- case 2:
276
- _a.sent();
277
- return [4 /*yield*/, context_1.Context.commit()];
278
- case 3:
279
- _a.sent();
280
- core_1.Logger.infoWithElapesedTime("".concat('-'.repeat(5), " ").concat(command._type, " handled successfully ").concat('-'.repeat(5)), startDate);
281
- return [3 /*break*/, 6];
282
- case 4:
283
- error_1 = _a.sent();
284
- core_1.Logger.error("".concat('-'.repeat(5), " ").concat(command._type, " couldn't be handled correctly ").concat('-'.repeat(5)), { error: error_1 });
285
- return [3 /*break*/, 6];
286
- case 5:
287
- context_1.Context.destroy();
288
- return [7 /*endfinally*/];
289
- case 6: return [2 /*return*/];
290
- }
291
- });
292
- }); };
293
- };
294
- AppFactory.getFunctionEventHandler = function (bus, mode) {
295
- var _this = this;
296
- return function (snapshot) { return __awaiter(_this, void 0, void 0, function () {
297
- var startDate, unserializedEvent, event, error_2;
298
- return __generator(this, function (_a) {
299
- switch (_a.label) {
300
- case 0:
301
- startDate = new Date();
302
- unserializedEvent = snapshot.data();
303
- event = (0, core_1.deserialize)(unserializedEvent);
304
- context_1.Context.create(bus);
305
- context_1.Context.correlationId = event._correlationId;
306
- context_1.Context.eventId = event.id;
307
- if (unserializedEvent['_restored'] === true) {
308
- core_1.Logger.debug("Event ".concat(event._type, " is ignored as it is restored from backup."));
309
- return [2 /*return*/];
310
- }
311
- _a.label = 1;
312
- case 1:
313
- _a.trys.push([1, 4, 5, 6]);
314
- core_1.Logger.info("".concat('-'.repeat(5), " handling ").concat(event._type, " ").concat('-'.repeat(5)));
315
- return [4 /*yield*/, bus.publish(event, mode)];
316
- case 2:
317
- _a.sent();
318
- return [4 /*yield*/, context_1.Context.commit()];
319
- case 3:
320
- _a.sent();
321
- core_1.Logger.infoWithElapesedTime("".concat('-'.repeat(5), " ").concat(event._type, " handled successfully ").concat('-'.repeat(5)), startDate);
322
- return [3 /*break*/, 6];
323
- case 4:
324
- error_2 = _a.sent();
325
- core_1.Logger.error("".concat('-'.repeat(5), " ").concat(event._type, " couldn't be handled correctly ").concat('-'.repeat(5)), { error: error_2 });
326
- return [3 /*break*/, 6];
327
- case 5:
328
- context_1.Context.destroy();
329
- return [7 /*endfinally*/];
330
- case 6: return [2 /*return*/];
331
- }
332
- });
333
- }); };
334
- };
335
- Object.defineProperty(AppFactory, "isEmulator", {
336
- get: function () {
337
- return !!process.env.FUNCTIONS_EMULATOR;
338
- },
339
- enumerable: false,
340
- configurable: true
341
- });
342
- return AppFactory;
343
- }());
171
+ }
172
+ static getFunctionCommandHandler(bus, commandType) {
173
+ return () => __awaiter(this, void 0, void 0, function* () {
174
+ const startDate = new Date();
175
+ const command = new commandType();
176
+ context_1.Context.create(bus);
177
+ context_1.Context.correlationId = (0, core_1.guid)();
178
+ try {
179
+ core_1.Logger.info(`${'-'.repeat(5)} handling ${command._type} ${'-'.repeat(5)}`);
180
+ yield bus.send(command);
181
+ yield context_1.Context.commit();
182
+ core_1.Logger.infoWithElapesedTime(`${'-'.repeat(5)} ${command._type} handled successfully ${'-'.repeat(5)}`, startDate);
183
+ }
184
+ catch (error) {
185
+ core_1.Logger.error(`${'-'.repeat(5)} ${command._type} couldn't be handled correctly ${'-'.repeat(5)}`, { error });
186
+ }
187
+ finally {
188
+ context_1.Context.destroy();
189
+ }
190
+ });
191
+ }
192
+ static getFunctionEventHandler(bus, mode) {
193
+ return (snapshot) => __awaiter(this, void 0, void 0, function* () {
194
+ const startDate = new Date();
195
+ const unserializedEvent = snapshot.data();
196
+ const event = (0, core_1.deserialize)(unserializedEvent);
197
+ context_1.Context.create(bus);
198
+ context_1.Context.correlationId = event._correlationId;
199
+ context_1.Context.eventId = event.id;
200
+ if (unserializedEvent['_restored'] === true) {
201
+ core_1.Logger.debug(`Event ${event._type} is ignored as it is restored from backup.`);
202
+ return;
203
+ }
204
+ try {
205
+ core_1.Logger.info(`${'-'.repeat(5)} handling ${event._type} ${'-'.repeat(5)}`);
206
+ yield bus.publish(event, mode);
207
+ yield context_1.Context.commit();
208
+ core_1.Logger.infoWithElapesedTime(`${'-'.repeat(5)} ${event._type} handled successfully ${'-'.repeat(5)}`, startDate);
209
+ }
210
+ catch (error) {
211
+ core_1.Logger.error(`${'-'.repeat(5)} ${event._type} couldn't be handled correctly ${'-'.repeat(5)}`, { error });
212
+ }
213
+ finally {
214
+ context_1.Context.destroy();
215
+ }
216
+ });
217
+ }
218
+ static get isEmulator() {
219
+ return !!process.env.FUNCTIONS_EMULATOR;
220
+ }
221
+ }
344
222
  exports.AppFactory = AppFactory;
345
223
  //# sourceMappingURL=app-factory.js.map