@magek/core 0.0.6 → 0.0.8
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/authorizer.js +1 -1
- package/dist/command-dispatcher.js +47 -41
- package/dist/core-concepts/data-migration/entities/data-migration-entity.js +5 -2
- package/dist/core-concepts/data-migration/events/data-migration-finished.js +3 -1
- package/dist/core-concepts/data-migration/events/data-migration-started.js +3 -1
- package/dist/core-concepts/data-migration/events/entity-migrated.js +4 -0
- package/dist/core-concepts/touch-entity/events/entity-touched.js +2 -0
- package/dist/data-migrations.js +59 -54
- package/dist/decorators/command.d.ts +4 -11
- package/dist/decorators/command.js +10 -18
- package/dist/decorators/data-migration.d.ts +4 -1
- package/dist/decorators/data-migration.js +3 -1
- package/dist/decorators/decorator-types.d.ts +50 -0
- package/dist/decorators/decorator-types.js +11 -0
- package/dist/decorators/decorator-utils.d.ts +1 -0
- package/dist/decorators/decorator-utils.js +2 -0
- package/dist/decorators/entity.d.ts +7 -15
- package/dist/decorators/entity.js +27 -37
- package/dist/decorators/event-handler.d.ts +11 -1
- package/dist/decorators/event-handler.js +13 -1
- package/dist/decorators/event.d.ts +4 -1
- package/dist/decorators/event.js +3 -2
- package/dist/decorators/field-metadata-reader.d.ts +8 -3
- package/dist/decorators/field-metadata-reader.js +61 -62
- package/dist/decorators/field.d.ts +23 -0
- package/dist/decorators/field.js +41 -0
- package/dist/decorators/global-error-handler.d.ts +10 -1
- package/dist/decorators/global-error-handler.js +9 -1
- package/dist/decorators/global-event-handler.d.ts +10 -1
- package/dist/decorators/global-event-handler.js +9 -1
- package/dist/decorators/health-sensor.d.ts +4 -1
- package/dist/decorators/health-sensor.js +3 -2
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.js +3 -0
- package/dist/decorators/metadata.d.ts +17 -1
- package/dist/decorators/metadata.js +22 -22
- package/dist/decorators/non-exposed.d.ts +13 -2
- package/dist/decorators/non-exposed.js +22 -20
- package/dist/decorators/notification.d.ts +6 -18
- package/dist/decorators/notification.js +10 -50
- package/dist/decorators/projects.d.ts +5 -18
- package/dist/decorators/projects.js +23 -54
- package/dist/decorators/query.d.ts +11 -1
- package/dist/decorators/query.js +18 -4
- package/dist/decorators/read-model.d.ts +13 -27
- package/dist/decorators/read-model.js +45 -77
- package/dist/decorators/returns.d.ts +37 -0
- package/dist/decorators/returns.js +154 -0
- package/dist/decorators/role.d.ts +9 -3
- package/dist/decorators/role.js +8 -3
- package/dist/decorators/scheduled-command.d.ts +4 -1
- package/dist/decorators/scheduled-command.js +3 -1
- package/dist/decorators/schema-migration.d.ts +11 -27
- package/dist/decorators/schema-migration.js +32 -77
- package/dist/decorators/sequenced-by.d.ts +7 -25
- package/dist/decorators/sequenced-by.js +11 -71
- package/dist/event-dispatcher.js +29 -24
- package/dist/event-processor.js +107 -103
- package/dist/event-stream-consumer.js +25 -20
- package/dist/event-stream-producer.js +22 -17
- package/dist/events-reader.js +1 -0
- package/dist/global-error-dispatcher.js +3 -2
- package/dist/graphql-dispatcher.js +161 -156
- package/dist/index.js +4 -0
- package/dist/instrumentation/decorator/trace.d.ts +11 -3
- package/dist/instrumentation/decorator/trace.js +17 -71
- package/dist/magek.js +2 -2
- package/dist/query-dispatcher.js +2 -0
- package/dist/read-model-schema-migrator.js +71 -68
- package/dist/read-models-reader.js +178 -180
- package/dist/register-handler.js +3 -3
- package/dist/scheduled-command-dispatcher.js +48 -42
- package/dist/schema-migrator.js +63 -59
- package/dist/sensor/health/health-service.js +2 -1
- package/dist/services/event-store.js +221 -224
- package/dist/services/graphql/graphql-generator.js +11 -8
- package/dist/services/graphql/graphql-mutation-generator.js +4 -0
- package/dist/services/graphql/graphql-query-generator.js +14 -0
- package/dist/services/graphql/graphql-subcriptions-generator.js +7 -0
- package/dist/services/graphql/graphql-type-informer.js +4 -3
- package/dist/services/graphql/query-generators/graphql-query-by-keys-generator.js +4 -0
- package/dist/services/graphql/query-generators/graphql-query-events-generator.js +3 -0
- package/dist/services/graphql/query-generators/graphql-query-filters-generator.js +6 -0
- package/dist/services/graphql/query-generators/graphql-query-generator.js +4 -0
- package/dist/services/graphql/query-generators/graphql-query-listed-generator.js +7 -0
- package/dist/services/graphql/query-helpers/graphql-handled-fields-generator.js +5 -2
- package/dist/services/graphql/query-helpers/graphql-query-filter-arguments-builder.js +3 -0
- package/dist/services/graphql/query-helpers/graphql-query-filter-fields-builder.js +4 -0
- package/dist/services/graphql/query-helpers/graphql-query-sort-builder.js +4 -2
- package/dist/services/graphql/websocket-protocol/graphql-websocket-protocol.js +5 -3
- package/dist/services/pub-sub/read-model-pub-sub.js +1 -0
- package/dist/services/raw-events-parser.js +1 -1
- package/dist/services/read-model-store.js +20 -20
- package/dist/services/token-verifiers/jwks-uri-token-verifier.js +8 -4
- package/dist/services/token-verifiers/public-key-token-verifier.js +4 -2
- package/dist/services/token-verifiers/role-based-token-verifier.js +2 -1
- package/dist/services/token-verifiers/utilities.js +1 -1
- package/dist/subscribers-notifier.js +99 -92
- package/dist/token-verifier.js +2 -1
- package/dist/utils/promises.d.ts +25 -0
- package/dist/utils/promises.js +43 -0
- package/package.json +4 -4
- package/dist/decorators/stage3-utils.d.ts +0 -6
- package/dist/decorators/stage3-utils.js +0 -25
package/dist/event-processor.js
CHANGED
|
@@ -3,123 +3,127 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MagekEventProcessor = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("@magek/common");
|
|
6
|
+
const promises_1 = require("./utils/promises");
|
|
6
7
|
const register_handler_1 = require("./register-handler");
|
|
7
8
|
const global_error_dispatcher_1 = require("./global-error-dispatcher");
|
|
8
9
|
const instrumentation_1 = require("./instrumentation");
|
|
9
10
|
const decorators_1 = require("./decorators");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
MagekEventProcessor.dispatchEntityEventsToEventHandlers(eventsNotDispatched, config),
|
|
21
|
-
];
|
|
22
|
-
// Read models are not updated for notification events (events that are not related to an entity but a topic)
|
|
23
|
-
if (!(entityName in config.topicToEvent)) {
|
|
24
|
-
eventEnvelopesProcessors.push(MagekEventProcessor.snapshotAndUpdateReadModels(config, entityName, entityID, eventStore, readModelStore));
|
|
25
|
-
}
|
|
26
|
-
await common_1.Promises.allSettledAndFulfilled(eventEnvelopesProcessors);
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
static async filterDispatched(config, eventEnvelopes, eventStore) {
|
|
30
|
-
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher#filterDispatched');
|
|
31
|
-
const filteredResults = await Promise.all(eventEnvelopes.map(async (eventEnvelope) => {
|
|
32
|
-
const result = await eventStore.storeDispatchedEvent(eventEnvelope);
|
|
33
|
-
if (!result) {
|
|
34
|
-
logger.warn('Event has already been dispatched. Skipping.', eventEnvelope);
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}));
|
|
38
|
-
return eventEnvelopes.filter((_, index) => filteredResults[index]);
|
|
39
|
-
}
|
|
40
|
-
static async snapshotAndUpdateReadModels(config, entityName, entityID, eventStore, readModelStore) {
|
|
41
|
-
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher#snapshotAndUpdateReadModels');
|
|
42
|
-
let entitySnapshot = undefined;
|
|
43
|
-
try {
|
|
44
|
-
entitySnapshot = await eventStore.fetchEntitySnapshot(entityName, entityID);
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
logger.error('Error while fetching or reducing entity snapshot:', e);
|
|
11
|
+
let MagekEventProcessor = (() => {
|
|
12
|
+
let _staticExtraInitializers = [];
|
|
13
|
+
let _static_dispatchEntityEventsToEventHandlers_decorators;
|
|
14
|
+
return class MagekEventProcessor {
|
|
15
|
+
static {
|
|
16
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
17
|
+
_static_dispatchEntityEventsToEventHandlers_decorators = [(0, instrumentation_1.trace)(common_1.TraceActionTypes.EVENT_HANDLERS_PROCESS)];
|
|
18
|
+
tslib_1.__esDecorate(this, null, _static_dispatchEntityEventsToEventHandlers_decorators, { kind: "method", name: "dispatchEntityEventsToEventHandlers", static: true, private: false, access: { has: obj => "dispatchEntityEventsToEventHandlers" in obj, get: obj => obj.dispatchEntityEventsToEventHandlers }, metadata: _metadata }, null, _staticExtraInitializers);
|
|
19
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
20
|
+
tslib_1.__runInitializers(this, _staticExtraInitializers);
|
|
48
21
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
eventHandlers = eventHandlers.concat(globalEventHandler);
|
|
22
|
+
/**
|
|
23
|
+
* Function that will be called once for each entity from the `RawEventsParser.streamPerEntityEvents` method
|
|
24
|
+
* after the page of events is grouped by entity.
|
|
25
|
+
*/
|
|
26
|
+
static eventProcessor(eventStore, readModelStore) {
|
|
27
|
+
return async (entityName, entityID, eventEnvelopes, config) => {
|
|
28
|
+
// Filter events that have already been dispatched
|
|
29
|
+
const eventsNotDispatched = await MagekEventProcessor.filterDispatched(config, eventEnvelopes, eventStore);
|
|
30
|
+
const eventEnvelopesProcessors = [
|
|
31
|
+
MagekEventProcessor.dispatchEntityEventsToEventHandlers(eventsNotDispatched, config),
|
|
32
|
+
];
|
|
33
|
+
// Read models are not updated for notification events (events that are not related to an entity but a topic)
|
|
34
|
+
if (!(entityName in config.topicToEvent)) {
|
|
35
|
+
eventEnvelopesProcessors.push(MagekEventProcessor.snapshotAndUpdateReadModels(config, entityName, entityID, eventStore, readModelStore));
|
|
64
36
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
37
|
+
await promises_1.Promises.allSettledAndFulfilled(eventEnvelopesProcessors);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
static async filterDispatched(config, eventEnvelopes, eventStore) {
|
|
41
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher#filterDispatched');
|
|
42
|
+
const filteredResults = await Promise.all(eventEnvelopes.map(async (eventEnvelope) => {
|
|
43
|
+
const result = await eventStore.storeDispatchedEvent(eventEnvelope);
|
|
44
|
+
if (!result) {
|
|
45
|
+
logger.warn('Event has already been dispatched. Skipping.', eventEnvelope);
|
|
68
46
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
47
|
+
return result;
|
|
48
|
+
}));
|
|
49
|
+
return eventEnvelopes.filter((_, index) => filteredResults[index]);
|
|
50
|
+
}
|
|
51
|
+
static async snapshotAndUpdateReadModels(config, entityName, entityID, eventStore, readModelStore) {
|
|
52
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher#snapshotAndUpdateReadModels');
|
|
53
|
+
let entitySnapshot = undefined;
|
|
54
|
+
try {
|
|
55
|
+
entitySnapshot = await eventStore.fetchEntitySnapshot(entityName, entityID);
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
logger.error('Error while fetching or reducing entity snapshot:', e);
|
|
59
|
+
}
|
|
60
|
+
if (!entitySnapshot) {
|
|
61
|
+
logger.debug('No new snapshot generated, skipping read models projection');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
logger.debug('Snapshot loaded and started read models projection:', entitySnapshot);
|
|
65
|
+
await readModelStore.project(entitySnapshot);
|
|
66
|
+
}
|
|
67
|
+
static async dispatchEntityEventsToEventHandlers(entityEventEnvelopes, config) {
|
|
68
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher.dispatchEntityEventsToEventHandlers');
|
|
69
|
+
try {
|
|
70
|
+
await promises_1.Promises.allSettledAndFulfilled(entityEventEnvelopes.map(async (eventEnvelope) => {
|
|
71
|
+
let eventHandlers = config.eventHandlers[eventEnvelope.typeName] || [];
|
|
72
|
+
const globalEventHandler = config.eventHandlers[decorators_1.GLOBAL_EVENT_HANDLERS];
|
|
73
|
+
if (globalEventHandler && globalEventHandler.length > 0) {
|
|
74
|
+
eventHandlers = eventHandlers.concat(globalEventHandler);
|
|
75
|
+
}
|
|
76
|
+
if (!eventHandlers || eventHandlers.length == 0) {
|
|
77
|
+
logger.debug(`No event-handlers found for event ${eventEnvelope.typeName}. Skipping...`);
|
|
78
|
+
return;
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
const eventInstance = this.getEventInstance(config, eventEnvelope);
|
|
81
|
+
if (eventHandlers && eventHandlers.length > 0) {
|
|
82
|
+
try {
|
|
83
|
+
await promises_1.Promises.allSettledAndFulfilled(eventHandlers.map(async (eventHandler) => {
|
|
84
|
+
logger.debug('Calling "handle" method on event handler: ', eventHandler);
|
|
85
|
+
await this.callEventHandler(eventHandler, eventInstance, eventEnvelope, config);
|
|
86
|
+
}));
|
|
80
87
|
}
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (error instanceof promises_1.PromisesError) {
|
|
90
|
+
logger.error(`Failed to process handlers for event ${eventEnvelope.typeName}:`, error.failedReasons);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
logger.error(`Unexpected error processing handlers for event ${eventEnvelope.typeName}:`, error);
|
|
94
|
+
}
|
|
83
95
|
}
|
|
84
96
|
}
|
|
85
|
-
}
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (error instanceof common_1.PromisesError) {
|
|
90
|
-
logger.error('Failed to process events:', error.failedReasons);
|
|
97
|
+
}));
|
|
91
98
|
}
|
|
92
|
-
|
|
93
|
-
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error instanceof promises_1.PromisesError) {
|
|
101
|
+
logger.error('Failed to process events:', error.failedReasons);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
logger.error('Unexpected error processing events:', error);
|
|
105
|
+
}
|
|
94
106
|
}
|
|
95
107
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const eventClass = (_a = config.events[eventEnvelope.typeName]) !== null && _a !== void 0 ? _a : config.notifications[eventEnvelope.typeName];
|
|
100
|
-
return (0, common_1.createInstance)(eventClass.class, eventEnvelope.value);
|
|
101
|
-
}
|
|
102
|
-
static async callEventHandler(eventHandler, eventInstance, eventEnvelope, config) {
|
|
103
|
-
const register = new common_1.Register(eventEnvelope.requestID, {}, register_handler_1.RegisterHandler.flush, eventEnvelope.currentUser);
|
|
104
|
-
try {
|
|
105
|
-
const logger = (0, common_1.getLogger)(config, 'MagekEventProcessor#handleEvent');
|
|
106
|
-
logger.debug('Calling "handle" method on event handler: ', eventHandler);
|
|
107
|
-
await eventHandler.handle(eventInstance, register);
|
|
108
|
+
static getEventInstance(config, eventEnvelope) {
|
|
109
|
+
const eventClass = config.events[eventEnvelope.typeName] ?? config.notifications[eventEnvelope.typeName];
|
|
110
|
+
return (0, common_1.createInstance)(eventClass.class, eventEnvelope.value);
|
|
108
111
|
}
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
static async callEventHandler(eventHandler, eventInstance, eventEnvelope, config) {
|
|
113
|
+
const register = new common_1.Register(eventEnvelope.requestID, {}, register_handler_1.RegisterHandler.flush, eventEnvelope.currentUser);
|
|
114
|
+
try {
|
|
115
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventProcessor#handleEvent');
|
|
116
|
+
logger.debug('Calling "handle" method on event handler: ', eventHandler);
|
|
117
|
+
await eventHandler.handle(eventInstance, register);
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
const globalErrorDispatcher = new global_error_dispatcher_1.MagekGlobalErrorDispatcher(config);
|
|
121
|
+
const error = await globalErrorDispatcher.dispatch(new common_1.EventHandlerGlobalError(eventEnvelope, eventInstance, e.eventHandlerMetadata, e));
|
|
122
|
+
if (error)
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
await register_handler_1.RegisterHandler.handle(config, register);
|
|
114
126
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
127
|
+
};
|
|
128
|
+
})();
|
|
118
129
|
exports.MagekEventProcessor = MagekEventProcessor;
|
|
119
|
-
tslib_1.__decorate([
|
|
120
|
-
(0, instrumentation_1.Trace)(common_1.TraceActionTypes.EVENT_HANDLERS_PROCESS),
|
|
121
|
-
tslib_1.__metadata("design:type", Function),
|
|
122
|
-
tslib_1.__metadata("design:paramtypes", [Array,
|
|
123
|
-
common_1.MagekConfig]),
|
|
124
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
125
|
-
], MagekEventProcessor, "dispatchEntityEventsToEventHandlers", null);
|
|
@@ -11,26 +11,31 @@ const event_processor_1 = require("./event-processor");
|
|
|
11
11
|
/**
|
|
12
12
|
* This class consumes events from the event stream and dispatches them to the event handlers
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
let MagekEventStreamConsumer = (() => {
|
|
15
|
+
let _staticExtraInitializers = [];
|
|
16
|
+
let _static_consume_decorators;
|
|
17
|
+
return class MagekEventStreamConsumer {
|
|
18
|
+
static {
|
|
19
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
20
|
+
_static_consume_decorators = [(0, instrumentation_1.trace)(common_1.TraceActionTypes.CONSUME_STREAM_EVENTS)];
|
|
21
|
+
tslib_1.__esDecorate(this, null, _static_consume_decorators, { kind: "method", name: "consume", static: true, private: false, access: { has: obj => "consume" in obj, get: obj => obj.consume }, metadata: _metadata }, null, _staticExtraInitializers);
|
|
22
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
23
|
+
tslib_1.__runInitializers(this, _staticExtraInitializers);
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
logger
|
|
25
|
+
static async consume(rawEvents, config) {
|
|
26
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventDispatcher#dispatch');
|
|
27
|
+
const eventStore = new event_store_1.EventStore(config);
|
|
28
|
+
const readModelStore = new read_model_store_1.ReadModelStore(config);
|
|
29
|
+
logger.debug('Stream event workflow started for raw events:', require('util').inspect(rawEvents, false, null, false));
|
|
30
|
+
try {
|
|
31
|
+
const dedupEvents = await config.eventStore.dedupEventStream(config, rawEvents);
|
|
32
|
+
const eventEnvelopes = config.eventStore.rawStreamToEnvelopes(config, rawEvents, dedupEvents);
|
|
33
|
+
await raw_events_parser_1.RawEventsParser.streamPerEntityEvents(config, eventEnvelopes, event_processor_1.MagekEventProcessor.eventProcessor(eventStore, readModelStore));
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
logger.error('Unhandled error while consuming event: ', e);
|
|
37
|
+
}
|
|
27
38
|
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
30
41
|
exports.MagekEventStreamConsumer = MagekEventStreamConsumer;
|
|
31
|
-
tslib_1.__decorate([
|
|
32
|
-
(0, instrumentation_1.Trace)(common_1.TraceActionTypes.CONSUME_STREAM_EVENTS),
|
|
33
|
-
tslib_1.__metadata("design:type", Function),
|
|
34
|
-
tslib_1.__metadata("design:paramtypes", [Object, common_1.MagekConfig]),
|
|
35
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
36
|
-
], MagekEventStreamConsumer, "consume", null);
|
|
@@ -8,23 +8,28 @@ const raw_events_parser_1 = require("./services/raw-events-parser");
|
|
|
8
8
|
/**
|
|
9
9
|
* Produces events to the event stream
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
11
|
+
let MagekEventStreamProducer = (() => {
|
|
12
|
+
let _staticExtraInitializers = [];
|
|
13
|
+
let _static_produce_decorators;
|
|
14
|
+
return class MagekEventStreamProducer {
|
|
15
|
+
static {
|
|
16
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
17
|
+
_static_produce_decorators = [(0, instrumentation_1.trace)(common_1.TraceActionTypes.PRODUCE_STREAM_EVENTS)];
|
|
18
|
+
tslib_1.__esDecorate(this, null, _static_produce_decorators, { kind: "method", name: "produce", static: true, private: false, access: { has: obj => "produce" in obj, get: obj => obj.produce }, metadata: _metadata }, null, _staticExtraInitializers);
|
|
19
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
20
|
+
tslib_1.__runInitializers(this, _staticExtraInitializers);
|
|
18
21
|
}
|
|
19
|
-
|
|
20
|
-
logger
|
|
22
|
+
static async produce(request, config) {
|
|
23
|
+
const logger = (0, common_1.getLogger)(config, 'MagekEventStreamProducer#produce');
|
|
24
|
+
logger.debug('Produce event workflow started for request:', require('util').inspect(request, false, null, false));
|
|
25
|
+
try {
|
|
26
|
+
const eventEnvelopes = config.eventStore.rawToEnvelopes(request);
|
|
27
|
+
await raw_events_parser_1.RawEventsParser.streamPerEntityEvents(config, eventEnvelopes, config.eventStore.produce);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
logger.error('Unhandled error while producing events: ', e);
|
|
31
|
+
}
|
|
21
32
|
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
24
35
|
exports.MagekEventStreamProducer = MagekEventStreamProducer;
|
|
25
|
-
tslib_1.__decorate([
|
|
26
|
-
(0, instrumentation_1.Trace)(common_1.TraceActionTypes.PRODUCE_STREAM_EVENTS),
|
|
27
|
-
tslib_1.__metadata("design:type", Function),
|
|
28
|
-
tslib_1.__metadata("design:paramtypes", [Object, common_1.MagekConfig]),
|
|
29
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
30
|
-
], MagekEventStreamProducer, "produce", null);
|
package/dist/events-reader.js
CHANGED
|
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MagekGlobalErrorDispatcher = void 0;
|
|
4
4
|
const common_1 = require("@magek/common");
|
|
5
5
|
class MagekGlobalErrorDispatcher {
|
|
6
|
+
config;
|
|
7
|
+
errorHandler;
|
|
6
8
|
constructor(config) {
|
|
7
|
-
var _a;
|
|
8
9
|
this.config = config;
|
|
9
|
-
this.errorHandler =
|
|
10
|
+
this.errorHandler = this.config.globalErrorsHandler?.class;
|
|
10
11
|
}
|
|
11
12
|
async dispatch(error) {
|
|
12
13
|
const logger = (0, common_1.getLogger)(this.config, 'MagekGlobalErrorDispatcher#dispatch');
|