@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.
- package/dist/aggregate.js +30 -52
- package/dist/aggregate.js.map +1 -1
- package/dist/app-factory.js +139 -261
- package/dist/app-factory.js.map +1 -1
- package/dist/bus.js +44 -101
- package/dist/bus.js.map +1 -1
- package/dist/context.js +69 -132
- package/dist/context.js.map +1 -1
- package/dist/decorators/controller/body.js +6 -6
- package/dist/decorators/controller/body.js.map +1 -1
- package/dist/decorators/controller/body.spec.js +55 -90
- package/dist/decorators/controller/body.spec.js.map +1 -1
- package/dist/decorators/controller/controller.js +3 -3
- package/dist/decorators/controller/controller.js.map +1 -1
- package/dist/decorators/controller/controller.spec.js +14 -48
- package/dist/decorators/controller/controller.spec.js.map +1 -1
- package/dist/decorators/controller/get.js +4 -4
- package/dist/decorators/controller/get.js.map +1 -1
- package/dist/decorators/controller/get.spec.js +30 -62
- package/dist/decorators/controller/get.spec.js.map +1 -1
- package/dist/decorators/controller/index.js +5 -1
- package/dist/decorators/controller/index.js.map +1 -1
- package/dist/decorators/controller/param.js +6 -6
- package/dist/decorators/controller/param.js.map +1 -1
- package/dist/decorators/controller/param.spec.js +48 -82
- package/dist/decorators/controller/param.spec.js.map +1 -1
- package/dist/decorators/controller/post.js +4 -4
- package/dist/decorators/controller/post.js.map +1 -1
- package/dist/decorators/controller/post.spec.js +69 -102
- package/dist/decorators/controller/post.spec.js.map +1 -1
- package/dist/decorators/controller/query.js +6 -6
- package/dist/decorators/controller/query.js.map +1 -1
- package/dist/decorators/controller/query.spec.js +48 -82
- package/dist/decorators/controller/query.spec.js.map +1 -1
- package/dist/decorators/handler/command-handler.js +7 -7
- package/dist/decorators/handler/command-handler.js.map +1 -1
- package/dist/decorators/handler/command-handler.spec.js +95 -178
- package/dist/decorators/handler/command-handler.spec.js.map +1 -1
- package/dist/decorators/handler/event-handler.js +7 -7
- package/dist/decorators/handler/event-handler.js.map +1 -1
- package/dist/decorators/handler/event-handler.spec.js +98 -181
- package/dist/decorators/handler/event-handler.spec.js.map +1 -1
- package/dist/decorators/handler/index.js +5 -1
- package/dist/decorators/handler/index.js.map +1 -1
- package/dist/decorators/index.js +5 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/injectable.js +2 -2
- package/dist/decorators/injectable.js.map +1 -1
- package/dist/decorators/module.js +2 -2
- package/dist/decorators/module.js.map +1 -1
- package/dist/decorators/transactional-client.js +2 -2
- package/dist/decorators/transactional-client.js.map +1 -1
- package/dist/execution-mode-enum.js +1 -1
- package/dist/execution-mode-enum.js.map +1 -1
- package/dist/firestore-client.js +179 -277
- package/dist/firestore-client.js.map +1 -1
- package/dist/handler-helper.js +57 -140
- package/dist/handler-helper.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/injector.js +14 -25
- package/dist/injector.js.map +1 -1
- package/dist/interfaces/from-array.d.ts +1 -1
- package/dist/interfaces/index.js +5 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/newable.d.ts +1 -1
- package/dist/reflect.d.ts +3 -3
- package/dist/reflect.js +51 -57
- package/dist/reflect.js.map +1 -1
- package/dist/request-method.enum.js +1 -1
- package/dist/request-method.enum.js.map +1 -1
- package/dist/sanity-check/controller.js +29 -64
- package/dist/sanity-check/controller.js.map +1 -1
- package/dist/sanity-check/module.js +11 -14
- package/dist/sanity-check/module.js.map +1 -1
- package/dist/server/index.js +5 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/middlewares/authentication-middleware.js +45 -93
- package/dist/server/middlewares/authentication-middleware.js.map +1 -1
- package/dist/server/middlewares/create-context-middleware.js +8 -39
- package/dist/server/middlewares/create-context-middleware.js.map +1 -1
- package/dist/server/middlewares/error-middleware.js +30 -62
- package/dist/server/middlewares/error-middleware.js.map +1 -1
- package/dist/server/middlewares/headers-middleware.js +11 -42
- package/dist/server/middlewares/headers-middleware.js.map +1 -1
- package/dist/server/middlewares/index.js +5 -1
- package/dist/server/middlewares/index.js.map +1 -1
- package/dist/server/middlewares/not-found-middleware.js +4 -34
- package/dist/server/middlewares/not-found-middleware.js.map +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.js +73 -103
- package/dist/server/server.js.map +1 -1
- package/dist/zip-helper.js +32 -12
- package/dist/zip-helper.js.map +1 -1
- package/package.json +28 -25
- package/src/decorators/handler/command-handler.spec.ts +7 -6
- package/src/decorators/handler/event-handler.spec.ts +9 -8
- package/src/reflect.ts +1 -1
- package/src/server/server.ts +2 -2
- package/tsconfig.json +11 -17
- 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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
52
|
-
|
|
33
|
+
}
|
|
34
|
+
apply(event) {
|
|
35
|
+
const methodName = `apply${event._type}`;
|
|
53
36
|
if (!(methodName in this)) {
|
|
54
|
-
throw new Error(
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
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
|
package/dist/aggregate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/app-factory.js
CHANGED
|
@@ -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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
+
}
|
|
45
|
+
static createHttpFunction(name, module) {
|
|
86
46
|
if (!this.isActive(name)) {
|
|
87
47
|
return null;
|
|
88
48
|
}
|
|
89
|
-
core_1.Logger.info(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
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
|
-
|
|
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(
|
|
107
|
-
|
|
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
|
-
|
|
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(
|
|
122
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
146
|
-
for (
|
|
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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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(
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
-
|
|
203
|
-
bus.onEvent(eventHandler.event,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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
|
-
|
|
229
|
-
for (
|
|
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
|
-
|
|
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
|
-
|
|
153
|
+
const completeMetaData = (data) => {
|
|
241
154
|
var _a, _b;
|
|
242
|
-
return
|
|
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:
|
|
158
|
+
debug: (message, data) => {
|
|
246
159
|
firebase_functions_1.logger.debug(message, completeMetaData(data));
|
|
247
160
|
},
|
|
248
|
-
info:
|
|
161
|
+
info: (message, data) => {
|
|
249
162
|
firebase_functions_1.logger.info(message, completeMetaData(data));
|
|
250
163
|
},
|
|
251
|
-
warn:
|
|
164
|
+
warn: (message, data) => {
|
|
252
165
|
firebase_functions_1.logger.warn(message, completeMetaData(data));
|
|
253
166
|
},
|
|
254
|
-
error:
|
|
167
|
+
error: (message, data) => {
|
|
255
168
|
firebase_functions_1.logger.error(message, completeMetaData(data));
|
|
256
169
|
}
|
|
257
170
|
});
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|