@pristine-ts/core 0.0.174 → 0.0.178
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/lib/cjs/core.module.js +7 -4
- package/dist/lib/cjs/core.module.js.map +1 -1
- package/dist/lib/cjs/dispatchers/dispatchers.js +14 -0
- package/dist/lib/cjs/dispatchers/dispatchers.js.map +1 -0
- package/dist/lib/cjs/dispatchers/event.dispatcher.js +108 -0
- package/dist/lib/cjs/dispatchers/event.dispatcher.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +14 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/execution-context-keyname.enum.js +11 -0
- package/dist/lib/cjs/enums/execution-context-keyname.enum.js.map +1 -0
- package/dist/lib/cjs/errors/error-response-interception-execution.error.js.map +1 -1
- package/dist/lib/cjs/errors/errors.js +6 -4
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/event-dispatcher-no-event-handlers.error.js +20 -0
- package/dist/lib/cjs/errors/event-dispatcher-no-event-handlers.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-dispatching.error.js +21 -0
- package/dist/lib/cjs/errors/event-dispatching.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-mapping.error.js +23 -0
- package/dist/lib/cjs/errors/event-mapping.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-post-mapping-interception.error.js +22 -0
- package/dist/lib/cjs/errors/event-post-mapping-interception.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-post-response-mapping-interception.error.js +22 -0
- package/dist/lib/cjs/errors/event-post-response-mapping-interception.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-pre-mapping-interception.error.js +23 -0
- package/dist/lib/cjs/errors/event-pre-mapping-interception.error.js.map +1 -0
- package/dist/lib/cjs/errors/event-pre-response-mapping-interception.error.js +22 -0
- package/dist/lib/cjs/errors/event-pre-response-mapping-interception.error.js.map +1 -0
- package/dist/lib/cjs/handlers/default-event.handler.js +28 -0
- package/dist/lib/cjs/handlers/default-event.handler.js.map +1 -0
- package/dist/lib/cjs/handlers/handlers.js +14 -0
- package/dist/lib/cjs/handlers/handlers.js.map +1 -0
- package/dist/lib/cjs/interceptors/event-logging.interceptor.js +21 -12
- package/dist/lib/cjs/interceptors/event-logging.interceptor.js.map +1 -1
- package/dist/lib/cjs/interceptors/interceptors.js +0 -2
- package/dist/lib/cjs/interceptors/interceptors.js.map +1 -1
- package/dist/lib/cjs/interfaces/{request-interceptor.interface.js → event-dispatcher.interface.js} +1 -1
- package/dist/lib/cjs/interfaces/event-dispatcher.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/{response-interceptor.interface.js → event-handler.interface.js} +1 -1
- package/dist/lib/cjs/interfaces/event-handler.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/{error-response-interceptor.interface.js → event-listener.interface.js} +1 -1
- package/dist/lib/cjs/interfaces/event-listener.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/event-mapper.interface.js +3 -0
- package/dist/lib/cjs/interfaces/event-mapper.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/events-execution-options.interface.js +3 -0
- package/dist/lib/cjs/interfaces/events-execution-options.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/execution-context.interface.js +3 -0
- package/dist/lib/cjs/interfaces/execution-context.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +6 -3
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
- package/dist/lib/cjs/kernel.js +31 -393
- package/dist/lib/cjs/kernel.js.map +1 -1
- package/dist/lib/cjs/listeners/default-event.listener.js +27 -0
- package/dist/lib/cjs/listeners/default-event.listener.js.map +1 -0
- package/dist/lib/cjs/listeners/listeners.js +14 -0
- package/dist/lib/cjs/listeners/listeners.js.map +1 -0
- package/dist/lib/cjs/mappers/default-event.mapper.js +38 -0
- package/dist/lib/cjs/mappers/default-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/mappers.js +14 -0
- package/dist/lib/cjs/mappers/mappers.js.map +1 -0
- package/dist/lib/cjs/models/event.js +15 -0
- package/dist/lib/cjs/models/event.js.map +1 -0
- package/dist/lib/cjs/models/event.response.js +11 -0
- package/dist/lib/cjs/models/event.response.js.map +1 -0
- package/dist/lib/cjs/models/models.js +15 -0
- package/dist/lib/cjs/models/models.js.map +1 -0
- package/dist/lib/cjs/pipelines/event.pipeline.js +282 -0
- package/dist/lib/cjs/pipelines/event.pipeline.js.map +1 -0
- package/dist/lib/cjs/pipelines/pipelines.js +14 -0
- package/dist/lib/cjs/pipelines/pipelines.js.map +1 -0
- package/dist/lib/esm/core.module.js +7 -4
- package/dist/lib/esm/core.module.js.map +1 -1
- package/dist/lib/esm/dispatchers/dispatchers.js +2 -0
- package/dist/lib/esm/dispatchers/dispatchers.js.map +1 -0
- package/dist/lib/esm/dispatchers/event.dispatcher.js +105 -0
- package/dist/lib/esm/dispatchers/event.dispatcher.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +2 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/execution-context-keyname.enum.js +8 -0
- package/dist/lib/esm/enums/execution-context-keyname.enum.js.map +1 -0
- package/dist/lib/esm/errors/error-response-interception-execution.error.js.map +1 -1
- package/dist/lib/esm/errors/errors.js +6 -4
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/event-dispatcher-no-event-handlers.error.js +16 -0
- package/dist/lib/esm/errors/event-dispatcher-no-event-handlers.error.js.map +1 -0
- package/dist/lib/esm/errors/event-dispatching.error.js +17 -0
- package/dist/lib/esm/errors/event-dispatching.error.js.map +1 -0
- package/dist/lib/esm/errors/event-mapping.error.js +19 -0
- package/dist/lib/esm/errors/event-mapping.error.js.map +1 -0
- package/dist/lib/esm/errors/event-post-mapping-interception.error.js +18 -0
- package/dist/lib/esm/errors/event-post-mapping-interception.error.js.map +1 -0
- package/dist/lib/esm/errors/event-post-response-mapping-interception.error.js +18 -0
- package/dist/lib/esm/errors/event-post-response-mapping-interception.error.js.map +1 -0
- package/dist/lib/esm/errors/event-pre-mapping-interception.error.js +19 -0
- package/dist/lib/esm/errors/event-pre-mapping-interception.error.js.map +1 -0
- package/dist/lib/esm/errors/event-pre-response-mapping-interception.error.js +18 -0
- package/dist/lib/esm/errors/event-pre-response-mapping-interception.error.js.map +1 -0
- package/dist/lib/esm/handlers/default-event.handler.js +25 -0
- package/dist/lib/esm/handlers/default-event.handler.js.map +1 -0
- package/dist/lib/esm/handlers/handlers.js +2 -0
- package/dist/lib/esm/handlers/handlers.js.map +1 -0
- package/dist/lib/esm/interceptors/event-logging.interceptor.js +21 -12
- package/dist/lib/esm/interceptors/event-logging.interceptor.js.map +1 -1
- package/dist/lib/esm/interceptors/interceptors.js +0 -2
- package/dist/lib/esm/interceptors/interceptors.js.map +1 -1
- package/dist/lib/esm/interfaces/event-dispatcher.interface.js +2 -0
- package/dist/lib/esm/interfaces/event-dispatcher.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/event-handler.interface.js +2 -0
- package/dist/lib/esm/interfaces/event-handler.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/event-listener.interface.js +2 -0
- package/dist/lib/esm/interfaces/event-listener.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/event-mapper.interface.js +2 -0
- package/dist/lib/esm/interfaces/event-mapper.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/events-execution-options.interface.js +2 -0
- package/dist/lib/esm/interfaces/events-execution-options.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/execution-context.interface.js +2 -0
- package/dist/lib/esm/interfaces/execution-context.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +6 -3
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
- package/dist/lib/esm/kernel.js +32 -394
- package/dist/lib/esm/kernel.js.map +1 -1
- package/dist/lib/esm/listeners/default-event.listener.js +24 -0
- package/dist/lib/esm/listeners/default-event.listener.js.map +1 -0
- package/dist/lib/esm/listeners/listeners.js +2 -0
- package/dist/lib/esm/listeners/listeners.js.map +1 -0
- package/dist/lib/esm/mappers/default-event.mapper.js +35 -0
- package/dist/lib/esm/mappers/default-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/mappers.js +2 -0
- package/dist/lib/esm/mappers/mappers.js.map +1 -0
- package/dist/lib/esm/models/event.js +11 -0
- package/dist/lib/esm/models/event.js.map +1 -0
- package/dist/lib/esm/models/event.response.js +7 -0
- package/dist/lib/esm/models/event.response.js.map +1 -0
- package/dist/lib/esm/models/models.js +3 -0
- package/dist/lib/esm/models/models.js.map +1 -0
- package/dist/lib/esm/pipelines/event.pipeline.js +279 -0
- package/dist/lib/esm/pipelines/event.pipeline.js.map +1 -0
- package/dist/lib/esm/pipelines/pipelines.js +2 -0
- package/dist/lib/esm/pipelines/pipelines.js.map +1 -0
- package/dist/types/core.module.d.ts +7 -0
- package/dist/types/dispatchers/dispatchers.d.ts +1 -0
- package/dist/types/dispatchers/event.dispatcher.d.ts +29 -0
- package/dist/types/enums/enums.d.ts +1 -0
- package/dist/types/enums/execution-context-keyname.enum.d.ts +6 -0
- package/dist/types/errors/error-response-interception-execution.error.d.ts +3 -2
- package/dist/types/errors/errors.d.ts +6 -4
- package/dist/types/errors/event-dispatcher-no-event-handlers.error.d.ts +8 -0
- package/dist/types/errors/event-dispatching.error.d.ts +8 -0
- package/dist/types/errors/event-mapping.error.d.ts +8 -0
- package/dist/types/errors/event-post-mapping-interception.error.d.ts +8 -0
- package/dist/types/errors/event-post-response-mapping-interception.error.d.ts +7 -0
- package/dist/types/errors/event-pre-mapping-interception.error.d.ts +8 -0
- package/dist/types/errors/event-pre-response-mapping-interception.error.d.ts +8 -0
- package/dist/types/handlers/default-event.handler.d.ts +7 -0
- package/dist/types/handlers/handlers.d.ts +1 -0
- package/dist/types/interceptors/event-logging.interceptor.d.ts +7 -11
- package/dist/types/interceptors/interceptors.d.ts +0 -2
- package/dist/types/interfaces/event-dispatcher.interface.d.ts +5 -0
- package/dist/types/interfaces/event-handler.interface.d.ts +23 -0
- package/dist/types/interfaces/event-interceptor.interface.d.ts +22 -3
- package/dist/types/interfaces/event-listener.interface.d.ts +17 -0
- package/dist/types/interfaces/event-mapper.interface.d.ts +9 -0
- package/dist/types/interfaces/events-execution-options.interface.d.ts +5 -0
- package/dist/types/interfaces/execution-context.interface.d.ts +5 -0
- package/dist/types/interfaces/interfaces.d.ts +6 -3
- package/dist/types/kernel.d.ts +11 -83
- package/dist/types/listeners/default-event.listener.d.ts +6 -0
- package/dist/types/listeners/listeners.d.ts +1 -0
- package/dist/types/mappers/default-event.mapper.d.ts +13 -0
- package/dist/types/mappers/mappers.d.ts +1 -0
- package/dist/types/models/event.d.ts +9 -0
- package/dist/types/models/event.response.d.ts +6 -0
- package/dist/types/models/models.d.ts +2 -0
- package/dist/types/pipelines/event.pipeline.d.ts +61 -0
- package/dist/types/pipelines/pipelines.d.ts +1 -0
- package/package.json +7 -10
- package/dist/lib/cjs/errors/request-handling.error.js +0 -21
- package/dist/lib/cjs/errors/request-handling.error.js.map +0 -1
- package/dist/lib/cjs/errors/request-interception-execution.error.js +0 -22
- package/dist/lib/cjs/errors/request-interception-execution.error.js.map +0 -1
- package/dist/lib/cjs/errors/response-interception-execution.error.js +0 -23
- package/dist/lib/cjs/errors/response-interception-execution.error.js.map +0 -1
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js +0 -89
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js.map +0 -1
- package/dist/lib/cjs/interceptors/request-logging.interceptor.js +0 -83
- package/dist/lib/cjs/interceptors/request-logging.interceptor.js.map +0 -1
- package/dist/lib/cjs/interfaces/error-response-interceptor.interface.js.map +0 -1
- package/dist/lib/cjs/interfaces/request-interceptor.interface.js.map +0 -1
- package/dist/lib/cjs/interfaces/response-interceptor.interface.js.map +0 -1
- package/dist/lib/esm/errors/request-handling.error.js +0 -17
- package/dist/lib/esm/errors/request-handling.error.js.map +0 -1
- package/dist/lib/esm/errors/request-interception-execution.error.js +0 -18
- package/dist/lib/esm/errors/request-interception-execution.error.js.map +0 -1
- package/dist/lib/esm/errors/response-interception-execution.error.js +0 -19
- package/dist/lib/esm/errors/response-interception-execution.error.js.map +0 -1
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js +0 -86
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js.map +0 -1
- package/dist/lib/esm/interceptors/request-logging.interceptor.js +0 -80
- package/dist/lib/esm/interceptors/request-logging.interceptor.js.map +0 -1
- package/dist/lib/esm/interfaces/error-response-interceptor.interface.js +0 -2
- package/dist/lib/esm/interfaces/error-response-interceptor.interface.js.map +0 -1
- package/dist/lib/esm/interfaces/request-interceptor.interface.js +0 -2
- package/dist/lib/esm/interfaces/request-interceptor.interface.js.map +0 -1
- package/dist/lib/esm/interfaces/response-interceptor.interface.js +0 -2
- package/dist/lib/esm/interfaces/response-interceptor.interface.js.map +0 -1
- package/dist/types/errors/request-handling.error.d.ts +0 -8
- package/dist/types/errors/request-interception-execution.error.d.ts +0 -8
- package/dist/types/errors/response-interception-execution.error.d.ts +0 -8
- package/dist/types/interceptors/request-body-converter.interceptor.d.ts +0 -9
- package/dist/types/interceptors/request-logging.interceptor.d.ts +0 -27
- package/dist/types/interfaces/error-response-interceptor.interface.d.ts +0 -21
- package/dist/types/interfaces/request-interceptor.interface.d.ts +0 -17
- package/dist/types/interfaces/response-interceptor.interface.d.ts +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.response.js","sourceRoot":"","sources":["../../../../src/models/event.response.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACtB,YAA4B,KAA0B,EAAkB,QAA8B;QAA1E,UAAK,GAAL,KAAK,CAAqB;QAAkB,aAAQ,GAAR,QAAQ,CAAsB;IACtG,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/models/models.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
import { injectable, injectAll, inject } from "tsyringe";
|
|
23
|
+
import { Event } from "../models/event";
|
|
24
|
+
import { ServiceDefinitionTagEnum } from "@pristine-ts/common";
|
|
25
|
+
import { EventMappingError } from "../errors/event-mapping.error";
|
|
26
|
+
import { EventPreMappingInterceptionError } from "../errors/event-pre-mapping-interception.error";
|
|
27
|
+
import { EventPostMappingInterceptionError } from "../errors/event-post-mapping-interception.error";
|
|
28
|
+
import { EventDispatchingError } from "../errors/event-dispatching.error";
|
|
29
|
+
import { EventPreResponseMappingInterceptionError } from "../errors/event-pre-response-mapping-interception.error";
|
|
30
|
+
import { EventPostResponseMappingInterceptionError } from "../errors/event-post-response-mapping-interception.error";
|
|
31
|
+
import { SpanKeynameEnum } from "@pristine-ts/telemetry";
|
|
32
|
+
let EventPipeline = class EventPipeline {
|
|
33
|
+
constructor(eventInterceptors, eventMappers, logHandler, tracingManager) {
|
|
34
|
+
this.eventInterceptors = eventInterceptors;
|
|
35
|
+
this.eventMappers = eventMappers;
|
|
36
|
+
this.logHandler = logHandler;
|
|
37
|
+
this.tracingManager = tracingManager;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* This method calls the interceptors that are to be executed just before the EventMappers are executed. It allows
|
|
41
|
+
* for changing the raw event coming directly into the kernel.
|
|
42
|
+
*
|
|
43
|
+
* @param event
|
|
44
|
+
* @param executionContext
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
preMappingIntercept(event, executionContext) {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
let interceptedEvent = event;
|
|
51
|
+
const span = this.tracingManager.startSpan(SpanKeynameEnum.EventPreMappingInterception);
|
|
52
|
+
for (const eventInterceptor of this.eventInterceptors) {
|
|
53
|
+
try {
|
|
54
|
+
interceptedEvent = (_b = yield ((_a = eventInterceptor.preMappingIntercept) === null || _a === void 0 ? void 0 : _a.call(eventInterceptor, interceptedEvent, executionContext))) !== null && _b !== void 0 ? _b : interceptedEvent;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
throw new EventPreMappingInterceptionError("There was an error while executing the PreMapping Event interceptors", error, eventInterceptor.constructor.name, event, executionContext);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
span.end();
|
|
61
|
+
return interceptedEvent;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* This method calls the interceptors that are executed just after the EventMappers have mapped the raw event into
|
|
66
|
+
* an Event object.
|
|
67
|
+
*
|
|
68
|
+
* @param event
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
postMappingIntercept(event) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
let interceptedEvent = event;
|
|
75
|
+
const span = this.tracingManager.startSpan(SpanKeynameEnum.EventPostMappingInterception);
|
|
76
|
+
for (const eventInterceptor of this.eventInterceptors) {
|
|
77
|
+
try {
|
|
78
|
+
interceptedEvent = (_b = yield ((_a = eventInterceptor.postMappingIntercept) === null || _a === void 0 ? void 0 : _a.call(eventInterceptor, interceptedEvent))) !== null && _b !== void 0 ? _b : interceptedEvent;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
throw new EventPostMappingInterceptionError("There was an error while executing the PostMapping Event interceptors", error, eventInterceptor.constructor.name, event);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
span.end();
|
|
85
|
+
return interceptedEvent;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* This method calls the interceptors that are to be executed just after the EventResponse has been returned from
|
|
90
|
+
* the EventDispatcher but before it is reverse mapped by the EventMappers.
|
|
91
|
+
*
|
|
92
|
+
* @param eventResponse
|
|
93
|
+
* @private
|
|
94
|
+
*/
|
|
95
|
+
preResponseMappingIntercept(eventResponse) {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
let interceptedEventResponse = eventResponse;
|
|
99
|
+
const span = this.tracingManager.startSpan(SpanKeynameEnum.EventPreResponseMappingInterception);
|
|
100
|
+
for (const eventInterceptor of this.eventInterceptors) {
|
|
101
|
+
try {
|
|
102
|
+
interceptedEventResponse = (_b = yield ((_a = eventInterceptor.preResponseMappingIntercept) === null || _a === void 0 ? void 0 : _a.call(eventInterceptor, interceptedEventResponse))) !== null && _b !== void 0 ? _b : interceptedEventResponse;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
throw new EventPreResponseMappingInterceptionError("There was an error while executing the PreResponseMapping Event interceptors", error, eventInterceptor.constructor.name, eventResponse);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
span.end();
|
|
109
|
+
return interceptedEventResponse;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* This method calls the interceptors that are executed after the EventResponse object has been mapped into a simple
|
|
114
|
+
* object.
|
|
115
|
+
*
|
|
116
|
+
* @param eventResponse The event response object to be returned from the handle method in the kernel.
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
postResponseMappingIntercept(eventResponse) {
|
|
120
|
+
var _a, _b;
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
let interceptedEventResponse = eventResponse;
|
|
123
|
+
const span = this.tracingManager.startSpan(SpanKeynameEnum.EventPostResponseMappingInterception);
|
|
124
|
+
for (const eventInterceptor of this.eventInterceptors) {
|
|
125
|
+
try {
|
|
126
|
+
interceptedEventResponse = (_b = yield ((_a = eventInterceptor.postResponseMappingIntercept) === null || _a === void 0 ? void 0 : _a.call(eventInterceptor, interceptedEventResponse))) !== null && _b !== void 0 ? _b : interceptedEventResponse;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new EventPostResponseMappingInterceptionError("There was an error while executing the PostResponseMapping Event interceptors", error, eventInterceptor.constructor.name, eventResponse);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
span.end();
|
|
133
|
+
return interceptedEventResponse;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* This method executes the postMappingInterceptors and then dispatches the Event by using the EventDispatcher.
|
|
138
|
+
*
|
|
139
|
+
* @param event This is the event that must be dispatched.
|
|
140
|
+
* @param eventDispatcher This is the eventDispatcher instance that will dispatch the Event.
|
|
141
|
+
* @private
|
|
142
|
+
*/
|
|
143
|
+
executeEvent(event, eventDispatcher) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
// 1 - Run the post mapped interceptors on every single event before they get executed.
|
|
146
|
+
let interceptedEvent = yield this.postMappingIntercept(event);
|
|
147
|
+
try {
|
|
148
|
+
const eventExecutionSpan = this.tracingManager.startSpan(SpanKeynameEnum.EventExecution);
|
|
149
|
+
// 2 - Call the EventDispatcher and retrieve the Event Response
|
|
150
|
+
const response = yield eventDispatcher.dispatch(interceptedEvent);
|
|
151
|
+
eventExecutionSpan.end();
|
|
152
|
+
return response;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
this.logHandler.error("There was an error while dispatching the event", {
|
|
156
|
+
error,
|
|
157
|
+
interceptedEvent,
|
|
158
|
+
});
|
|
159
|
+
throw new EventDispatchingError("There was an error while dispatching the event", error, interceptedEvent);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
*
|
|
165
|
+
* @param event
|
|
166
|
+
* @param executionContext
|
|
167
|
+
* @param container
|
|
168
|
+
*/
|
|
169
|
+
execute(event, executionContext, container) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
const eventExecutions = [];
|
|
172
|
+
// If the event passed is already properly typed, we simply execute it, without mapping and without calling the pre-mapping interceptors
|
|
173
|
+
if (event instanceof Event) {
|
|
174
|
+
eventExecutions.push({
|
|
175
|
+
events: [event],
|
|
176
|
+
executionOrder: "sequential",
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// 1- We have the raw event, we start by executing the PreMapping Interceptors
|
|
181
|
+
const interceptedEvent = yield this.preMappingIntercept(event, executionContext);
|
|
182
|
+
// 2- With the intercepted raw event, run the Events Mapping to get all the Events and the EventsExecutionOptions.
|
|
183
|
+
// For each event mapper that supports the event, we batch the executions for each mapper. So it's possible to execute the same
|
|
184
|
+
// event twice. This is up to the EventMappers to properly identify when they map or don't map an event. Pristine
|
|
185
|
+
// isn't responsible to determine if two events are executed twice, so be careful.
|
|
186
|
+
let numberOfEventMappers = 0;
|
|
187
|
+
try {
|
|
188
|
+
const span = this.tracingManager.startSpan(SpanKeynameEnum.EventMapping);
|
|
189
|
+
this.eventMappers.forEach(eventMapper => {
|
|
190
|
+
if (eventMapper.supportsMapping(interceptedEvent, executionContext)) {
|
|
191
|
+
eventExecutions.push(eventMapper.map(interceptedEvent, executionContext));
|
|
192
|
+
numberOfEventMappers++;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
span.end();
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
throw new EventMappingError("There was an error mapping the event into an Event object", event, interceptedEvent, executionContext, error);
|
|
199
|
+
}
|
|
200
|
+
if (numberOfEventMappers === 0) {
|
|
201
|
+
throw new EventMappingError("There are no Event Mappers that support the event", event, interceptedEvent, executionContext);
|
|
202
|
+
}
|
|
203
|
+
if (eventExecutions.length === 0 || eventExecutions.reduce((agg, eventExecution) => {
|
|
204
|
+
return agg + eventExecution.events.length;
|
|
205
|
+
}, 0) === 0) {
|
|
206
|
+
throw new EventMappingError("There are no events to execute.", event, interceptedEvent, executionContext);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const eventsExecutionPromises = [];
|
|
210
|
+
// 3- Loop over the EventExecutionOptions array and start executing the events
|
|
211
|
+
eventExecutions.forEach(eventExecutionOptions => {
|
|
212
|
+
switch (eventExecutionOptions.executionOrder) {
|
|
213
|
+
case 'sequential':
|
|
214
|
+
eventsExecutionPromises.push(new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
// await all events and then resolve.
|
|
216
|
+
const eventResponses = [];
|
|
217
|
+
for (const event of eventExecutionOptions.events) {
|
|
218
|
+
const childContainer = container.createChildContainer();
|
|
219
|
+
// It's important to register the CurrentChildContainer since even though it's not 100% recommended,
|
|
220
|
+
// some handlers might want to retrieve the container. For example, the RequestHandler needs this mechanism
|
|
221
|
+
// to dynamically load the controllers and not load all the containers all the time.
|
|
222
|
+
childContainer.register(ServiceDefinitionTagEnum.CurrentChildContainer, {
|
|
223
|
+
useValue: childContainer,
|
|
224
|
+
});
|
|
225
|
+
const eventDispatcher = childContainer.resolve("EventDispatcherInterface");
|
|
226
|
+
try {
|
|
227
|
+
eventResponses.push(yield this.executeEvent(event, eventDispatcher));
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return reject(error);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return resolve(eventResponses);
|
|
234
|
+
})));
|
|
235
|
+
break;
|
|
236
|
+
case 'parallel':
|
|
237
|
+
for (const event of eventExecutionOptions.events) {
|
|
238
|
+
eventsExecutionPromises.push(new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
const childContainer = container.createChildContainer();
|
|
240
|
+
// It's important to register the CurrentChildContainer since even though it's not 100% recommended,
|
|
241
|
+
// some handlers might want to retrieve the container. For example, the RequestHandler needs this mechanism
|
|
242
|
+
// to dynamically load the controllers and not load all the containers all the time.
|
|
243
|
+
childContainer.register(ServiceDefinitionTagEnum.CurrentChildContainer, {
|
|
244
|
+
useValue: childContainer,
|
|
245
|
+
});
|
|
246
|
+
const eventDispatcher = childContainer.resolve("EventDispatcherInterface");
|
|
247
|
+
this.executeEvent(event, eventDispatcher).then(eventResponse => resolve(eventResponse)).catch(error => reject(error));
|
|
248
|
+
})));
|
|
249
|
+
}
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
// 4- For each event, call the PreResponseMapping Interceptors
|
|
254
|
+
const eventResponses = yield Promise.all((yield Promise.all(eventsExecutionPromises)).flat().map((eventResponse) => __awaiter(this, void 0, void 0, function* () { return yield this.preResponseMappingIntercept(eventResponse); })));
|
|
255
|
+
let finalResponse = {};
|
|
256
|
+
// 5 - Construct the final response by calling the events mapper (reverse map method) for each eventResponse;
|
|
257
|
+
// This method updates the response object that will be returned from the kernel.
|
|
258
|
+
eventResponses.forEach(eventResponse => {
|
|
259
|
+
this.eventMappers.forEach(eventMapper => {
|
|
260
|
+
if (eventMapper.supportsReverseMapping(eventResponse, finalResponse, executionContext)) {
|
|
261
|
+
finalResponse = eventMapper.reverseMap(eventResponse, finalResponse, executionContext);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
// 6 - Call the PostResponseMapping interceptors and return the final intercepted response.
|
|
266
|
+
return this.postResponseMappingIntercept(finalResponse);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
EventPipeline = __decorate([
|
|
271
|
+
injectable(),
|
|
272
|
+
__param(0, injectAll(ServiceDefinitionTagEnum.EventInterceptor)),
|
|
273
|
+
__param(1, injectAll(ServiceDefinitionTagEnum.EventMapper)),
|
|
274
|
+
__param(2, inject('LogHandlerInterface')),
|
|
275
|
+
__param(3, inject("TracingManagerInterface")),
|
|
276
|
+
__metadata("design:paramtypes", [Array, Array, Object, Object])
|
|
277
|
+
], EventPipeline);
|
|
278
|
+
export { EventPipeline };
|
|
279
|
+
//# sourceMappingURL=event.pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.pipeline.js","sourceRoot":"","sources":["../../../../src/pipelines/event.pipeline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAuB,SAAS,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AAI5E,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAMtC,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAC,gCAAgC,EAAC,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAC,iCAAiC,EAAC,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAC,qBAAqB,EAAC,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAC,wCAAwC,EAAC,MAAM,yDAAyD,CAAC;AACjH,OAAO,EAAC,yCAAyC,EAAC,MAAM,0DAA0D,CAAC;AACnH,OAAO,EAAC,eAAe,EAA0B,MAAM,wBAAwB,CAAC;AAGhF,IAAa,aAAa,GAA1B,MAAa,aAAa;IAEtB,YAC2E,iBAA8C,EACnD,YAA8C,EAChE,UAA+B,EAC3B,cAAuC;QAHpB,sBAAiB,GAAjB,iBAAiB,CAA6B;QACnD,iBAAY,GAAZ,YAAY,CAAkC;QAChE,eAAU,GAAV,UAAU,CAAqB;QAC3B,mBAAc,GAAd,cAAc,CAAyB;IAE/F,CAAC;IAED;;;;;;;OAOG;IACW,mBAAmB,CAAC,KAAa,EAAE,gBAAgD;;;YAC7F,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;YAExF,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACnD,IAAI;oBACA,gBAAgB,GAAG,MAAA,MAAM,CAAA,MAAA,gBAAgB,CAAC,mBAAmB,+CAApC,gBAAgB,EAAuB,gBAAgB,EAAE,gBAAgB,CAAC,CAAA,mCAAI,gBAAgB,CAAC;iBAC3H;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,gCAAgC,CAAC,sEAAsE,EAAE,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;iBACzL;aACJ;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,OAAO,gBAAgB,CAAC;;KAC3B;IAED;;;;;;OAMG;IACW,oBAAoB,CAAC,KAAiB;;;YAChD,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;YAEzF,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACnD,IAAI;oBACA,gBAAgB,GAAG,MAAA,MAAM,CAAA,MAAA,gBAAgB,CAAC,oBAAoB,+CAArC,gBAAgB,EAAwB,gBAAgB,CAAC,CAAA,mCAAI,gBAAgB,CAAC;iBAC1G;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,iCAAiC,CAAC,uEAAuE,EAAE,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBACzK;aACJ;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,OAAO,gBAAgB,CAAC;;KAC3B;IAED;;;;;;OAMG;IACW,2BAA2B,CAAC,aAAsC;;;YAC5E,IAAI,wBAAwB,GAAG,aAAa,CAAC;YAE7C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,mCAAmC,CAAC,CAAC;YAEhG,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACnD,IAAI;oBACA,wBAAwB,GAAG,MAAA,MAAM,CAAA,MAAA,gBAAgB,CAAC,2BAA2B,+CAA5C,gBAAgB,EAA+B,wBAAwB,CAAC,CAAA,mCAAI,wBAAwB,CAAC;iBACzI;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,wCAAwC,CAAC,8EAA8E,EAAE,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;iBAC/L;aACJ;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,OAAO,wBAAwB,CAAC;;KACnC;IAED;;;;;;OAMG;IACW,4BAA4B,CAAC,aAAqB;;;YAC5D,IAAI,wBAAwB,GAAG,aAAa,CAAC;YAE7C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,oCAAoC,CAAC,CAAC;YAEjG,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACnD,IAAI;oBACA,wBAAwB,GAAG,MAAA,MAAM,CAAA,MAAA,gBAAgB,CAAC,4BAA4B,+CAA7C,gBAAgB,EAAgC,wBAAwB,CAAC,CAAA,mCAAI,wBAAwB,CAAC;iBAC1I;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,yCAAyC,CAAC,+EAA+E,EAAE,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;iBACjM;aACJ;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,OAAO,wBAAwB,CAAC;;KACnC;IAED;;;;;;OAMG;IACW,YAAY,CAAC,KAAiB,EAAE,eAAyC;;YACnF,uFAAuF;YACvF,IAAI,gBAAgB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;YAE7D,IAAI;gBACA,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBAEzF,+DAA+D;gBAC/D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAElE,kBAAkB,CAAC,GAAG,EAAE,CAAC;gBAEzB,OAAO,QAAQ,CAAC;aACnB;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gDAAgD,EAAE;oBACpE,KAAK;oBACL,gBAAgB;iBACnB,CAAC,CAAA;gBACF,MAAM,IAAI,qBAAqB,CAAC,gDAAgD,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC9G;QACL,CAAC;KAAA;IAED;;;;;OAKG;IACG,OAAO,CAAC,KAAa,EAAE,gBAAgD,EAAE,SAA8B;;YACzG,MAAM,eAAe,GAA2C,EAAE,CAAC;YAEnE,wIAAwI;YACxI,IAAG,KAAK,YAAY,KAAK,EAAE;gBACvB,eAAe,CAAC,IAAI,CAAC;oBACjB,MAAM,EAAE,CAAC,KAAK,CAAC;oBACf,cAAc,EAAE,YAAY;iBAC/B,CAAC,CAAA;aACL;iBAAM;gBACH,8EAA8E;gBAC9E,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBAEjF,kHAAkH;gBAClH,+HAA+H;gBAC/H,iHAAiH;gBACjH,kFAAkF;gBAClF,IAAI,oBAAoB,GAAG,CAAC,CAAC;gBAE7B,IAAI;oBACA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oBAEzE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;wBACpC,IAAI,WAAW,CAAC,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE;4BACjE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;4BAC1E,oBAAoB,EAAE,CAAC;yBAC1B;oBACL,CAAC,CAAC,CAAA;oBAEF,IAAI,CAAC,GAAG,EAAE,CAAC;iBACd;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,iBAAiB,CAAC,2DAA2D,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;iBAC7I;gBAED,IAAI,oBAAoB,KAAK,CAAC,EAAE;oBAC5B,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;iBAC/H;gBAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;oBAC/E,OAAO,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC9C,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;oBACT,MAAM,IAAI,iBAAiB,CAAC,iCAAiC,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;iBAC5G;aACJ;YAID,MAAM,uBAAuB,GAAmE,EAAE,CAAC;YAEnG,8EAA8E;YAC9E,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;gBAC5C,QAAQ,qBAAqB,CAAC,cAAc,EAAE;oBAC1C,KAAK,YAAY;wBACb,uBAAuB,CAAC,IAAI,CAAC,IAAI,OAAO,CAA4B,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;4BAC1F,qCAAqC;4BACrC,MAAM,cAAc,GAAG,EAAE,CAAC;4BAE1B,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,MAAM,EAAE;gCAC9C,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,EAAyB,CAAC;gCAE/E,oGAAoG;gCACpG,2GAA2G;gCAC3G,oFAAoF;gCACpF,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;oCACpE,QAAQ,EAAE,cAAc;iCAC3B,CAAC,CAAC;gCAEH,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,0BAA0B,CAA6B,CAAC;gCAEvG,IAAI;oCACA,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;iCACxE;gCACD,OAAO,KAAK,EAAE;oCACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;iCACxB;6BACJ;4BAED,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;wBACnC,CAAC,CAAA,CAAC,CAAC,CAAA;wBACH,MAAM;oBACV,KAAK,UAAU;wBACX,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,MAAM,EAAE;4BAC9C,uBAAuB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAsD,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gCACpH,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC;gCAExD,oGAAoG;gCACpG,2GAA2G;gCAC3G,oFAAoF;gCACpF,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;oCACpE,QAAQ,EAAE,cAAc;iCAC3B,CAAC,CAAC;gCAEH,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,0BAA0B,CAA6B,CAAC;gCAEvG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC1H,CAAC,CAAA,CAAC,CAAC,CAAC;yBACP;wBACD,MAAM;iBACb;YACL,CAAC,CAAC,CAAA;YAEF,8DAA8D;YAC9D,MAAM,cAAc,GAA8B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAM,aAAa,EAAC,EAAE,gDAAC,OAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAA,GAAA,CAAC,CAAC,CAAC;YAE3M,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,6GAA6G;YAC7G,iFAAiF;YACjF,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBACpC,IAAI,WAAW,CAAC,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE;wBACpF,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;qBAC1F;gBACL,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,2FAA2F;YAC3F,OAAO,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC;KAAA;CACJ,CAAA;AAzQY,aAAa;IADzB,UAAU,EAAE;IAIJ,WAAA,SAAS,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAA;IACpD,WAAA,SAAS,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAC/C,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAC7B,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;;GAN7B,aAAa,CAyQzB;SAzQY,aAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../../../../src/pipelines/pipelines.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { ModuleInterface } from "@pristine-ts/common";
|
|
2
2
|
export * from "./kernel";
|
|
3
|
+
export * from "./dispatchers/dispatchers";
|
|
4
|
+
export * from "./enums/enums";
|
|
3
5
|
export * from "./errors/errors";
|
|
6
|
+
export * from "./handlers/handlers";
|
|
4
7
|
export * from "./interceptors/interceptors";
|
|
5
8
|
export * from "./interfaces/interfaces";
|
|
9
|
+
export * from "./listeners/listeners";
|
|
10
|
+
export * from "./mappers/mappers";
|
|
11
|
+
export * from "./models/models";
|
|
12
|
+
export * from "./pipelines/pipelines";
|
|
6
13
|
export * from "./core.module.keyname";
|
|
7
14
|
export declare const CoreModule: ModuleInterface;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./event.dispatcher";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Event } from "../models/event";
|
|
2
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
3
|
+
import { EventHandlerInterface } from "../interfaces/event-handler.interface";
|
|
4
|
+
import { EventResponse } from "../models/event.response";
|
|
5
|
+
import { EventDispatcherInterface } from "../interfaces/event-dispatcher.interface";
|
|
6
|
+
import { EventListenerInterface } from "../interfaces/event-listener.interface";
|
|
7
|
+
/**
|
|
8
|
+
* This class receives all the event handlers and listeners that were registered and calls them if they support the event.
|
|
9
|
+
*/
|
|
10
|
+
export declare class EventDispatcher implements EventDispatcherInterface {
|
|
11
|
+
private readonly eventHandlers;
|
|
12
|
+
private readonly eventListeners;
|
|
13
|
+
private readonly logHandler;
|
|
14
|
+
/**
|
|
15
|
+
* Dispatcher to dispatch the events to the event handlers that support them.
|
|
16
|
+
* @param eventHandlers All the event handlers that are tagged with ServiceDefinitionTagEnum.EventHandler
|
|
17
|
+
* @param eventListeners
|
|
18
|
+
* @param logHandler
|
|
19
|
+
*/
|
|
20
|
+
constructor(eventHandlers: EventHandlerInterface<any, any>[], eventListeners: EventListenerInterface[], logHandler: LogHandlerInterface);
|
|
21
|
+
/**
|
|
22
|
+
* This method receives an event, loops through its event handlers and listeners and if they support the event,
|
|
23
|
+
* will call their handle method.
|
|
24
|
+
* Resolves once all the event handlers and listeners have settled, but does not return a response.
|
|
25
|
+
*
|
|
26
|
+
* @param event
|
|
27
|
+
*/
|
|
28
|
+
dispatch(event: Event<any>): Promise<EventResponse<any, any>>;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./execution-context-keyname.enum";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { LoggableError
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { Request } from "@pristine-ts/common";
|
|
2
3
|
/**
|
|
3
4
|
* This Error is thrown when an error happens in the execution of an error response interceptor.
|
|
4
5
|
*/
|
|
5
6
|
export declare class ErrorResponseInterceptionExecutionError extends LoggableError {
|
|
6
|
-
constructor(message: string, error: Error, request:
|
|
7
|
+
constructor(message: string, error: Error, request: Request, interceptor: any, previousError?: Error);
|
|
7
8
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export * from "./error-response-interception-execution.error";
|
|
2
|
-
export * from "./
|
|
2
|
+
export * from "./event-dispatcher-no-event-handlers.error";
|
|
3
|
+
export * from "./event-dispatching.error";
|
|
3
4
|
export * from "./event-interception-execution.error";
|
|
5
|
+
export * from "./event-mapping.error";
|
|
6
|
+
export * from "./event-post-mapping-interception.error";
|
|
7
|
+
export * from "./event-pre-mapping-interception.error";
|
|
4
8
|
export * from "./kernel-initialization.error";
|
|
5
|
-
export * from "./
|
|
6
|
-
export * from "./request-interception-execution.error";
|
|
7
|
-
export * from "./response-interception-execution.error";
|
|
9
|
+
export * from "./provider-registration.error";
|
|
8
10
|
export * from "./runtime.error";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { Event } from "../models/event";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there are not event handlers that support this event.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventDispatcherNoEventHandlersError extends LoggableError {
|
|
7
|
+
constructor(message: string, event: Event<any>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { Event } from "../models/event";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there's an error when dispatching an event.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventDispatchingError extends LoggableError {
|
|
7
|
+
constructor(message: string, originalError: Error, event: Event<any>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { ExecutionContextInterface } from "../interfaces/execution-context.interface";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there's an error while Mapping an Event in the EventPipeline
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventMappingError extends LoggableError {
|
|
7
|
+
constructor(message: string, event: object, interceptedEvent: object, executionContext: ExecutionContextInterface<any>, originalError?: Error);
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { Event } from "../models/event";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there's an error when executing any event post mapping interceptors.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventPostMappingInterceptionError extends LoggableError {
|
|
7
|
+
constructor(message: string, originalError: Error, interceptorName: string, event: Event<any>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when there's an error when executing any event pre mapping interceptors.
|
|
4
|
+
*/
|
|
5
|
+
export declare class EventPostResponseMappingInterceptionError extends LoggableError {
|
|
6
|
+
constructor(message: string, originalError: Error, interceptorName: string, eventResponse: object);
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { ExecutionContextInterface } from "../interfaces/execution-context.interface";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there's an error when executing any event pre mapping interceptors.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventPreMappingInterceptionError extends LoggableError {
|
|
7
|
+
constructor(message: string, originalError: Error, interceptorName: string, event: object, executionContext: ExecutionContextInterface<any>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
import { EventResponse } from "../models/event.response";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when there's an error when executing any event pre mapping interceptors.
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventPreResponseMappingInterceptionError extends LoggableError {
|
|
7
|
+
constructor(message: string, originalError: Error, interceptorName: string, eventResponse: EventResponse<any, any>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EventHandlerInterface } from "../interfaces/event-handler.interface";
|
|
2
|
+
import { Event } from "../models/event";
|
|
3
|
+
import { EventResponse } from "../models/event.response";
|
|
4
|
+
export declare class DefaultEventHandler implements EventHandlerInterface<any, any> {
|
|
5
|
+
handle(event: Event<any>): Promise<EventResponse<any, any>>;
|
|
6
|
+
supports<T>(event: Event<T>): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./default-event.handler";
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { EventInterceptorInterface } from "../interfaces/event-interceptor.interface";
|
|
2
|
-
import { Event } from "@pristine-ts/event";
|
|
3
2
|
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
3
|
+
import { Event } from "../models/event";
|
|
4
|
+
import { ExecutionContextInterface } from "../interfaces/execution-context.interface";
|
|
5
|
+
import { EventResponse } from "../models/event.response";
|
|
4
6
|
/**
|
|
5
7
|
* This class is an interceptor to log the events. It is module scoped to Core module.
|
|
6
8
|
* It is tagged as an EventInterceptor so it can be automatically injected with the all the other EventInterceptors.
|
|
@@ -8,14 +10,8 @@ import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
|
8
10
|
export declare class EventLoggingInterceptor implements EventInterceptorInterface {
|
|
9
11
|
private readonly logHandler;
|
|
10
12
|
constructor(logHandler: LogHandlerInterface);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
interceptEvent(event: Event<any>): Promise<Event<any>>;
|
|
16
|
-
/**
|
|
17
|
-
* This method intercepts a raw event and logs it.
|
|
18
|
-
* @param event
|
|
19
|
-
*/
|
|
20
|
-
interceptRawEvent(event: any): Promise<any>;
|
|
13
|
+
preMappingIntercept(event: object, executionContextInterface: ExecutionContextInterface<any>): Promise<object>;
|
|
14
|
+
postMappingIntercept(event: Event<any>): Promise<Event<any>>;
|
|
15
|
+
preResponseMappingIntercept(eventResponse: EventResponse<any, any>): Promise<EventResponse<any, any>>;
|
|
16
|
+
postResponseMappingIntercept(eventResponse: object): Promise<object>;
|
|
21
17
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Event } from "../models/event";
|
|
2
|
+
import { EventResponse } from "../models/event.response";
|
|
3
|
+
/**
|
|
4
|
+
* The Event Listener Interface defines the methods that an Event Listener must implement.
|
|
5
|
+
*/
|
|
6
|
+
export interface EventHandlerInterface<EventPayload, EventResponsePayload> {
|
|
7
|
+
/**
|
|
8
|
+
* This property represents the priority (highest number has the highest priority). Use this to specify
|
|
9
|
+
* which listener will be called the first one.
|
|
10
|
+
*/
|
|
11
|
+
priority?: number;
|
|
12
|
+
/**
|
|
13
|
+
* This method receives an event and returns whether or not the event listener supports that type of event.
|
|
14
|
+
* This should always be called before calling handle.
|
|
15
|
+
* @param event
|
|
16
|
+
*/
|
|
17
|
+
supports<T>(event: Event<T>): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* This method receives an event and handles it and returns an EventResponse.
|
|
20
|
+
* @param event
|
|
21
|
+
*/
|
|
22
|
+
handle(event: Event<EventPayload>): Promise<EventResponse<EventPayload, EventResponsePayload>>;
|
|
23
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExecutionContextInterface } from "./execution-context.interface";
|
|
2
|
+
import { EventResponse } from "../models/event.response";
|
|
3
|
+
import { Event } from "../models/event";
|
|
2
4
|
/**
|
|
3
5
|
* The Event Interceptor Interface defines the methods that an Event Interceptor must implement. This
|
|
4
6
|
* interceptor is called before the event is being dispatched to the event listeners.
|
|
@@ -11,8 +13,9 @@ export interface EventInterceptorInterface {
|
|
|
11
13
|
* If you force to never resolve the promise, the execution will stall. Be careful.
|
|
12
14
|
*
|
|
13
15
|
* @param event
|
|
16
|
+
* @param executionContextInterface
|
|
14
17
|
*/
|
|
15
|
-
|
|
18
|
+
preMappingIntercept?(event: object, executionContextInterface: ExecutionContextInterface<any>): Promise<object>;
|
|
16
19
|
/**
|
|
17
20
|
* This method receives an event object and must return a transformed event object. If you don't want to
|
|
18
21
|
* manipulate the event object (when logging for example), juste resolve a promise with the event passed to this method.
|
|
@@ -21,5 +24,21 @@ export interface EventInterceptorInterface {
|
|
|
21
24
|
*
|
|
22
25
|
* @param event
|
|
23
26
|
*/
|
|
24
|
-
|
|
27
|
+
postMappingIntercept?(event: Event<any>): Promise<Event<any>>;
|
|
28
|
+
/**
|
|
29
|
+
* This method receives the EventResponse returned by the EventDispatcher before it is being reverse mapped by the EventMappers.
|
|
30
|
+
*
|
|
31
|
+
* If you force to never resolve the promise, the execution will stall. Be careful.
|
|
32
|
+
*
|
|
33
|
+
* @param eventResponse
|
|
34
|
+
*/
|
|
35
|
+
preResponseMappingIntercept?(eventResponse: EventResponse<any, any>): Promise<EventResponse<any, any>>;
|
|
36
|
+
/**
|
|
37
|
+
* This method receives the reverse mapped EventResponse returned by the EventMappers, but before they are leaving Pristine entirely.
|
|
38
|
+
*
|
|
39
|
+
* If you force to never resolve the promise, the execution will stall. Be careful.
|
|
40
|
+
*
|
|
41
|
+
* @param eventResponse
|
|
42
|
+
*/
|
|
43
|
+
postResponseMappingIntercept?(eventResponse: object): Promise<object>;
|
|
25
44
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Event } from "../models/event";
|
|
2
|
+
/**
|
|
3
|
+
* The Event Listener Interface defines the methods that an Event Listener must implement.
|
|
4
|
+
*/
|
|
5
|
+
export interface EventListenerInterface {
|
|
6
|
+
/**
|
|
7
|
+
* This method receives an event and returns whether or not the event listener supports that type of event.
|
|
8
|
+
* This should always be called before calling handle.
|
|
9
|
+
* @param event
|
|
10
|
+
*/
|
|
11
|
+
supports<T>(event: Event<T>): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* This method receives an event and does something with it.
|
|
14
|
+
* @param event
|
|
15
|
+
*/
|
|
16
|
+
execute<EventPayload>(event: Event<EventPayload>): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExecutionContextInterface } from "./execution-context.interface";
|
|
2
|
+
import { EventResponse } from "../models/event.response";
|
|
3
|
+
import { EventsExecutionOptionsInterface } from "./events-execution-options.interface";
|
|
4
|
+
export interface EventMapperInterface<EventPayload, EventResponsePayload> {
|
|
5
|
+
supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
6
|
+
map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<EventPayload>;
|
|
7
|
+
supportsReverseMapping(eventResponse: EventResponse<EventPayload, EventResponsePayload>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
8
|
+
reverseMap(eventResponse: EventResponse<EventPayload, EventResponsePayload>, response: any, executionContext: ExecutionContextInterface<any>): any;
|
|
9
|
+
}
|