@artstesh/postboy 3.1.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/models/postboy-executor.d.ts +1 -0
- package/lib/models/postboy-executor.d.ts.map +1 -1
- package/lib/models/postboy-executor.js.map +1 -1
- package/lib/models/postboy-message-metadata.d.ts +26 -0
- package/lib/models/postboy-message-metadata.d.ts.map +1 -0
- package/lib/models/postboy-message-metadata.js +3 -0
- package/lib/models/postboy-message-metadata.js.map +1 -0
- package/lib/models/postboy-message.context.d.ts +9 -0
- package/lib/models/postboy-message.context.d.ts.map +1 -0
- package/lib/models/postboy-message.context.js +3 -0
- package/lib/models/postboy-message.context.js.map +1 -0
- package/lib/models/postboy.message.d.ts +3 -0
- package/lib/models/postboy.message.d.ts.map +1 -1
- package/lib/models/postboy.message.js +7 -0
- package/lib/models/postboy.message.js.map +1 -1
- package/lib/models/postboy.settings.d.ts +13 -0
- package/lib/models/postboy.settings.d.ts.map +1 -0
- package/lib/models/postboy.settings.js +20 -0
- package/lib/models/postboy.settings.js.map +1 -0
- package/lib/postboy.service.d.ts +11 -1
- package/lib/postboy.service.d.ts.map +1 -1
- package/lib/postboy.service.js +34 -12
- package/lib/postboy.service.js.map +1 -1
- package/lib/services/postboy-context.service.d.ts +12 -0
- package/lib/services/postboy-context.service.d.ts.map +1 -0
- package/lib/services/postboy-context.service.js +47 -0
- package/lib/services/postboy-context.service.js.map +1 -0
- package/lib/services/postboy-dependency.resolver.d.ts +2 -0
- package/lib/services/postboy-dependency.resolver.d.ts.map +1 -1
- package/lib/services/postboy-dependency.resolver.js +2 -0
- package/lib/services/postboy-dependency.resolver.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy-executor.d.ts","sourceRoot":"","sources":["../../src/models/postboy-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAAsB,eAAe,CAAC,CAAC,CAAE,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"postboy-executor.d.ts","sourceRoot":"","sources":["../../src/models/postboy-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAAsB,eAAe,CAAC,CAAC,CAAE,SAAQ,cAAc;IAC7D,mBAA2B,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy-executor.js","sourceRoot":"","sources":["../../src/models/postboy-executor.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAEnD,MAAsB,eAAmB,SAAQ,gCAAc;
|
|
1
|
+
{"version":3,"file":"postboy-executor.js","sourceRoot":"","sources":["../../src/models/postboy-executor.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAEnD,MAAsB,eAAmB,SAAQ,gCAAc;CAE9D;AAFD,0CAEC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents metadata associated with a Postboy message.
|
|
3
|
+
*
|
|
4
|
+
* This interface can be used to store optional metadata that provides
|
|
5
|
+
* additional context or tracking information for a message. It supports
|
|
6
|
+
* flexible extension by allowing additional properties through an index signature.
|
|
7
|
+
*
|
|
8
|
+
* Properties:
|
|
9
|
+
* - `correlationId` (optional): A unique identifier used to correlate
|
|
10
|
+
* related messages or operations across systems.
|
|
11
|
+
* - `causationId` (optional): The identifier of the preceding message
|
|
12
|
+
* or event that caused the current message to be produced.
|
|
13
|
+
* - `source` (optional): The origin or source of the message, such as
|
|
14
|
+
* a particular service or system.
|
|
15
|
+
* - `tags` (optional): An array of tags or labels that can be attached
|
|
16
|
+
* to the message for categorization, filtering, or logging purposes.
|
|
17
|
+
* - `[key: string]` (optional): Additional custom properties can be
|
|
18
|
+
* added to capture specific metadata not covered by the predefined fields.
|
|
19
|
+
*/
|
|
20
|
+
export interface PostboyMessageMetadata {
|
|
21
|
+
correlationId?: string;
|
|
22
|
+
causationId?: string;
|
|
23
|
+
tags?: Set<string>;
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=postboy-message-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-message-metadata.d.ts","sourceRoot":"","sources":["../../src/models/postboy-message-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-message-metadata.js","sourceRoot":"","sources":["../../src/models/postboy-message-metadata.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-message.context.d.ts","sourceRoot":"","sources":["../../src/models/postboy-message.context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-message.context.js","sourceRoot":"","sources":["../../src/models/postboy-message.context.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { PostboyMessageMetadata } from './postboy-message-metadata';
|
|
1
2
|
export declare abstract class PostboyMessage {
|
|
3
|
+
metadata: PostboyMessageMetadata;
|
|
2
4
|
get id(): string;
|
|
5
|
+
setMetadata(metadata: Partial<PostboyMessageMetadata>): this;
|
|
3
6
|
}
|
|
4
7
|
//# sourceMappingURL=postboy.message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy.message.d.ts","sourceRoot":"","sources":["../../src/models/postboy.message.ts"],"names":[],"mappings":"AAAA,8BAAsB,cAAc;
|
|
1
|
+
{"version":3,"file":"postboy.message.d.ts","sourceRoot":"","sources":["../../src/models/postboy.message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,8BAAsB,cAAc;IAC3B,QAAQ,EAAE,sBAAsB,CAAM;IAC7C,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;CAI7D"}
|
|
@@ -2,9 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostboyMessage = void 0;
|
|
4
4
|
class PostboyMessage {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.metadata = {};
|
|
7
|
+
}
|
|
5
8
|
get id() {
|
|
6
9
|
return this.constructor.ID;
|
|
7
10
|
}
|
|
11
|
+
setMetadata(metadata) {
|
|
12
|
+
this.metadata = { ...this.metadata, ...metadata };
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
8
15
|
}
|
|
9
16
|
exports.PostboyMessage = PostboyMessage;
|
|
10
17
|
//# sourceMappingURL=postboy.message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy.message.js","sourceRoot":"","sources":["../../src/models/postboy.message.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"postboy.message.js","sourceRoot":"","sources":["../../src/models/postboy.message.ts"],"names":[],"mappings":";;;AAEA,MAAsB,cAAc;IAApC;QACS,aAAQ,GAA2B,EAAE,CAAC;IAS/C,CAAC;IARC,IAAW,EAAE;QACX,OAAQ,IAAI,CAAC,WAAmB,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,QAAyC;QACnD,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAVD,wCAUC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents configurable settings for the Postboy system.
|
|
3
|
+
*/
|
|
4
|
+
export declare class PostboySettings {
|
|
5
|
+
metadata: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Constructs an instance of the class with optional settings.
|
|
8
|
+
*
|
|
9
|
+
* @param {Partial<PostboySettings>} [settings] - Optional settings to configure the instance. Can include partial metadata or other configurations.
|
|
10
|
+
*/
|
|
11
|
+
constructor(settings?: Partial<PostboySettings>);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=postboy.settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy.settings.d.ts","sourceRoot":"","sources":["../../src/models/postboy.settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,eAAe;IACnB,QAAQ,EAAE,OAAO,CAAS;IAEjC;;;;OAIG;gBACS,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;CAGhD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PostboySettings = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Represents configurable settings for the Postboy system.
|
|
6
|
+
*/
|
|
7
|
+
class PostboySettings {
|
|
8
|
+
/**
|
|
9
|
+
* Constructs an instance of the class with optional settings.
|
|
10
|
+
*
|
|
11
|
+
* @param {Partial<PostboySettings>} [settings] - Optional settings to configure the instance. Can include partial metadata or other configurations.
|
|
12
|
+
*/
|
|
13
|
+
constructor(settings) {
|
|
14
|
+
var _a;
|
|
15
|
+
this.metadata = false;
|
|
16
|
+
this.metadata = (_a = settings === null || settings === void 0 ? void 0 : settings.metadata) !== null && _a !== void 0 ? _a : this.metadata;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.PostboySettings = PostboySettings;
|
|
20
|
+
//# sourceMappingURL=postboy.settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy.settings.js","sourceRoot":"","sources":["../../src/models/postboy.settings.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,eAAe;IAG1B;;;;OAIG;IACH,YAAY,QAAmC;;QAPxC,aAAQ,GAAY,KAAK,CAAC;QAQ/B,IAAI,CAAC,QAAQ,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,IAAI,CAAC,QAAQ,CAAC;IACtD,CAAC;CACF;AAXD,0CAWC"}
|
package/lib/postboy.service.d.ts
CHANGED
|
@@ -6,13 +6,16 @@ import { MessageType, PostboyAbstractRegistrator } from './postboy-abstract.regi
|
|
|
6
6
|
import { PostboyExecutionHandler } from './models/postboy-execution.handler';
|
|
7
7
|
import { PostboyMiddleware } from './models/postboy-middleware';
|
|
8
8
|
import { PostboyDependencyResolver } from './services/postboy-dependency.resolver';
|
|
9
|
+
import { PostboySettings } from './models/postboy.settings';
|
|
9
10
|
export declare class PostboyService {
|
|
10
11
|
protected locked: Set<string>;
|
|
11
12
|
private middleware;
|
|
12
13
|
private store;
|
|
13
14
|
private namespaceStore?;
|
|
14
15
|
private dependencyResolver;
|
|
15
|
-
|
|
16
|
+
private context;
|
|
17
|
+
private settings;
|
|
18
|
+
constructor(settings?: Partial<PostboySettings>, resolver?: PostboyDependencyResolver);
|
|
16
19
|
/**
|
|
17
20
|
* Locks a specific message type to prevent further modifications or actions.
|
|
18
21
|
*
|
|
@@ -80,6 +83,13 @@ export declare class PostboyService {
|
|
|
80
83
|
* @return An Observable of the specified generic message type.
|
|
81
84
|
*/
|
|
82
85
|
sub<T extends PostboyGenericMessage>(type: MessageType<T>): Observable<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Subscribes to a specific message type and automatically unsubscribes after receiving the first message.
|
|
88
|
+
*
|
|
89
|
+
* @param type The type of message to subscribe to.
|
|
90
|
+
* @return An observable that emits the first message of the specified type and then completes.
|
|
91
|
+
*/
|
|
92
|
+
once<T extends PostboyGenericMessage>(type: MessageType<T>): Observable<T>;
|
|
83
93
|
/**
|
|
84
94
|
* Registers a given message type and its associated subject subscription with the system.
|
|
85
95
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy.service.d.ts","sourceRoot":"","sources":["../src/postboy.service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"postboy.service.d.ts","sourceRoot":"","sources":["../src/postboy.service.ts"],"names":[],"mappings":"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"}
|
package/lib/postboy.service.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostboyService = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
4
5
|
const postboy_generic_message_1 = require("./models/postboy-generic-message");
|
|
5
6
|
const postboy_subscription_1 = require("./models/postboy-subscription");
|
|
6
7
|
const postboy_dependency_resolver_1 = require("./services/postboy-dependency.resolver");
|
|
8
|
+
const postboy_settings_1 = require("./models/postboy.settings");
|
|
7
9
|
class PostboyService {
|
|
8
|
-
constructor(resolver) {
|
|
10
|
+
constructor(settings, resolver) {
|
|
9
11
|
this.locked = new Set();
|
|
12
|
+
this.settings = new postboy_settings_1.PostboySettings(settings);
|
|
10
13
|
this.dependencyResolver = resolver || new postboy_dependency_resolver_1.PostboyDependencyResolver();
|
|
11
14
|
this.middleware = this.dependencyResolver.getMiddlewareService();
|
|
12
15
|
this.store = this.dependencyResolver.getMessageStore();
|
|
16
|
+
this.context = this.dependencyResolver.getPostboyContextService(this.settings.metadata);
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Locks a specific message type to prevent further modifications or actions.
|
|
@@ -64,9 +68,12 @@ class PostboyService {
|
|
|
64
68
|
* @throws {Error} Throws an error if no registered event is found for the provided message ID.
|
|
65
69
|
*/
|
|
66
70
|
fire(message) {
|
|
67
|
-
this.
|
|
68
|
-
|
|
69
|
-
this.
|
|
71
|
+
const context = this.context.createChild(message);
|
|
72
|
+
this.context.run(context, () => {
|
|
73
|
+
this.middleware.manage(message);
|
|
74
|
+
if (!this.locked.has(message.id))
|
|
75
|
+
this.store.getMessage(message.id, message.constructor.name).fire(message);
|
|
76
|
+
});
|
|
70
77
|
}
|
|
71
78
|
/**
|
|
72
79
|
* Triggers a callback function associated with a given message.
|
|
@@ -77,12 +84,15 @@ class PostboyService {
|
|
|
77
84
|
* @return {void} This method does not return any value.
|
|
78
85
|
*/
|
|
79
86
|
fireCallback(message, action) {
|
|
80
|
-
this.
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
const context = this.context.createChild(message);
|
|
88
|
+
return this.context.run(context, () => {
|
|
89
|
+
this.middleware.manage(message);
|
|
90
|
+
this.store.callbackFired(message);
|
|
91
|
+
message.result.subscribe(action);
|
|
92
|
+
if (!this.locked.has(message.id))
|
|
93
|
+
setTimeout(() => this.store.getMessage(message.id, message.constructor.name).fire(message));
|
|
94
|
+
return message.result;
|
|
95
|
+
});
|
|
86
96
|
}
|
|
87
97
|
/**
|
|
88
98
|
* Executes the provided executor function and returns its result.
|
|
@@ -92,8 +102,11 @@ class PostboyService {
|
|
|
92
102
|
* @throws {Error} If the specified executor is not registered.
|
|
93
103
|
*/
|
|
94
104
|
exec(executor) {
|
|
95
|
-
this.
|
|
96
|
-
return this.
|
|
105
|
+
const context = this.context.createChild(executor);
|
|
106
|
+
return this.context.run(context, () => {
|
|
107
|
+
this.middleware.manage(executor);
|
|
108
|
+
return this.store.getExecutor(executor.id)(executor);
|
|
109
|
+
});
|
|
97
110
|
}
|
|
98
111
|
/**
|
|
99
112
|
* Subscribes to a specific message type and returns an observable of that type.
|
|
@@ -104,6 +117,15 @@ class PostboyService {
|
|
|
104
117
|
sub(type) {
|
|
105
118
|
return this.store.getMessage((0, postboy_generic_message_1.checkId)(type), type.name).sub();
|
|
106
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Subscribes to a specific message type and automatically unsubscribes after receiving the first message.
|
|
122
|
+
*
|
|
123
|
+
* @param type The type of message to subscribe to.
|
|
124
|
+
* @return An observable that emits the first message of the specified type and then completes.
|
|
125
|
+
*/
|
|
126
|
+
once(type) {
|
|
127
|
+
return this.sub(type).pipe((0, rxjs_1.first)());
|
|
128
|
+
}
|
|
107
129
|
/**
|
|
108
130
|
* Registers a given message type and its associated subject subscription with the system.
|
|
109
131
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy.service.js","sourceRoot":"","sources":["../src/postboy.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"postboy.service.js","sourceRoot":"","sources":["../src/postboy.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PostboyMessageContext } from '../models/postboy-message.context';
|
|
2
|
+
import { PostboyMessage } from '../models/postboy.message';
|
|
3
|
+
export declare class PostboyContextService {
|
|
4
|
+
active: boolean;
|
|
5
|
+
private readonly storage;
|
|
6
|
+
constructor(active?: boolean);
|
|
7
|
+
private get current();
|
|
8
|
+
run<T>(context: PostboyMessageContext, action: () => T): T;
|
|
9
|
+
private createRoot;
|
|
10
|
+
createChild(message: PostboyMessage): PostboyMessageContext;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=postboy-context.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-context.service.d.ts","sourceRoot":"","sources":["../../src/services/postboy-context.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,qBAAqB;IAGb,MAAM,EAAE,OAAO;IAFlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;gBAEvD,MAAM,GAAE,OAAc;IAEzC,OAAO,KAAK,OAAO,GAElB;IAEM,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAIjE,OAAO,CAAC,UAAU;IAUX,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,qBAAqB;CAkBnE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PostboyContextService = void 0;
|
|
4
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
5
|
+
class PostboyContextService {
|
|
6
|
+
constructor(active = true) {
|
|
7
|
+
this.active = active;
|
|
8
|
+
this.storage = new node_async_hooks_1.AsyncLocalStorage();
|
|
9
|
+
}
|
|
10
|
+
get current() {
|
|
11
|
+
return this.storage.getStore();
|
|
12
|
+
}
|
|
13
|
+
run(context, action) {
|
|
14
|
+
return this.active ? this.storage.run(context, action) : action();
|
|
15
|
+
}
|
|
16
|
+
createRoot(message) {
|
|
17
|
+
return {
|
|
18
|
+
correlationId: message.id,
|
|
19
|
+
currentMessageId: message.id,
|
|
20
|
+
depth: 0,
|
|
21
|
+
startedAt: new Date(),
|
|
22
|
+
tags: new Set(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
createChild(message) {
|
|
26
|
+
var _a, _b, _c, _d;
|
|
27
|
+
if (!this.active)
|
|
28
|
+
return this.createRoot(message);
|
|
29
|
+
const parent = this.current;
|
|
30
|
+
const tags = (_b = (_a = this.current) === null || _a === void 0 ? void 0 : _a.tags) !== null && _b !== void 0 ? _b : new Set();
|
|
31
|
+
(_d = (_c = message.metadata) === null || _c === void 0 ? void 0 : _c.tags) === null || _d === void 0 ? void 0 : _d.forEach((tag) => tags.add(tag));
|
|
32
|
+
const data = !parent
|
|
33
|
+
? this.createRoot(message)
|
|
34
|
+
: {
|
|
35
|
+
correlationId: parent.correlationId,
|
|
36
|
+
currentMessageId: message.id,
|
|
37
|
+
parentMessageId: parent.currentMessageId,
|
|
38
|
+
depth: parent.depth + 1,
|
|
39
|
+
startedAt: parent.startedAt,
|
|
40
|
+
tags,
|
|
41
|
+
};
|
|
42
|
+
message.setMetadata({ correlationId: data.correlationId, causationId: data.parentMessageId, tags: data.tags });
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.PostboyContextService = PostboyContextService;
|
|
47
|
+
//# sourceMappingURL=postboy-context.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postboy-context.service.js","sourceRoot":"","sources":["../../src/services/postboy-context.service.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAIrD,MAAa,qBAAqB;IAGhC,YAAmB,SAAkB,IAAI;QAAtB,WAAM,GAAN,MAAM,CAAgB;QAFxB,YAAO,GAAG,IAAI,oCAAiB,EAAyB,CAAC;IAE9B,CAAC;IAE7C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAEM,GAAG,CAAI,OAA8B,EAAE,MAAe;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAEO,UAAU,CAAC,OAAuB;QACxC,OAAO;YACL,aAAa,EAAE,OAAO,CAAC,EAAE;YACzB,gBAAgB,EAAE,OAAO,CAAC,EAAE;YAC5B,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,IAAI,GAAG,EAAE;SAChB,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,OAAuB;;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,mCAAI,IAAI,GAAG,EAAE,CAAC;QAC7C,MAAA,MAAA,OAAO,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC1B,CAAC,CAAC;gBACE,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,gBAAgB,EAAE,OAAO,CAAC,EAAE;gBAC5B,eAAe,EAAE,MAAM,CAAC,gBAAgB;gBACxC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI;aACL,CAAC;QACN,OAAO,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzCD,sDAyCC"}
|
|
@@ -2,6 +2,7 @@ import { PostboyMiddlewareService } from './postboy-middleware.service';
|
|
|
2
2
|
import { PostboyMessageStore } from './postboy-message.store';
|
|
3
3
|
import { PostboyNamespaceStore } from './postboy-namespace.store';
|
|
4
4
|
import { PostboyService } from '../postboy.service';
|
|
5
|
+
import { PostboyContextService } from './postboy-context.service';
|
|
5
6
|
export declare class PostboyDependencyResolver {
|
|
6
7
|
/**
|
|
7
8
|
* Retrieves an instance of the PostboyMiddlewareService.
|
|
@@ -30,5 +31,6 @@ export declare class PostboyDependencyResolver {
|
|
|
30
31
|
* @returns {PostboyNamespaceStore} A new instance of PostboyNamespaceStore associated with the given PostboyService.
|
|
31
32
|
*/
|
|
32
33
|
getNamespaceStore: (postboy: PostboyService) => PostboyNamespaceStore;
|
|
34
|
+
getPostboyContextService: (active: boolean) => PostboyContextService;
|
|
33
35
|
}
|
|
34
36
|
//# sourceMappingURL=postboy-dependency.resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy-dependency.resolver.d.ts","sourceRoot":"","sources":["../../src/services/postboy-dependency.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"postboy-dependency.resolver.d.ts","sourceRoot":"","sources":["../../src/services/postboy-dependency.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,qBAAa,yBAAyB;IACpC;;;;;;;;OAQG;IACH,oBAAoB,iCAAwC;IAC5D;;;;;;;OAOG;IACH,eAAe,4BAAmC;IAClD;;;;;;OAMG;IACH,iBAAiB,GAAI,SAAS,cAAc,2BAAwC;IACpF,wBAAwB,GAAI,QAAQ,OAAO,2BAAuC;CACnF"}
|
|
@@ -4,6 +4,7 @@ exports.PostboyDependencyResolver = void 0;
|
|
|
4
4
|
const postboy_middleware_service_1 = require("./postboy-middleware.service");
|
|
5
5
|
const postboy_message_store_1 = require("./postboy-message.store");
|
|
6
6
|
const postboy_namespace_store_1 = require("./postboy-namespace.store");
|
|
7
|
+
const postboy_context_service_1 = require("./postboy-context.service");
|
|
7
8
|
class PostboyDependencyResolver {
|
|
8
9
|
constructor() {
|
|
9
10
|
/**
|
|
@@ -33,6 +34,7 @@ class PostboyDependencyResolver {
|
|
|
33
34
|
* @returns {PostboyNamespaceStore} A new instance of PostboyNamespaceStore associated with the given PostboyService.
|
|
34
35
|
*/
|
|
35
36
|
this.getNamespaceStore = (postboy) => new postboy_namespace_store_1.PostboyNamespaceStore(postboy);
|
|
37
|
+
this.getPostboyContextService = (active) => new postboy_context_service_1.PostboyContextService(active);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
exports.PostboyDependencyResolver = PostboyDependencyResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postboy-dependency.resolver.js","sourceRoot":"","sources":["../../src/services/postboy-dependency.resolver.ts"],"names":[],"mappings":";;;AAAA,6EAAwE;AACxE,mEAA8D;AAC9D,uEAAkE;
|
|
1
|
+
{"version":3,"file":"postboy-dependency.resolver.js","sourceRoot":"","sources":["../../src/services/postboy-dependency.resolver.ts"],"names":[],"mappings":";;;AAAA,6EAAwE;AACxE,mEAA8D;AAC9D,uEAAkE;AAElE,uEAAkE;AAElE,MAAa,yBAAyB;IAAtC;QACE;;;;;;;;WAQG;QACH,yBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,qDAAwB,EAAE,CAAC;QAC5D;;;;;;;WAOG;QACH,oBAAe,GAAG,GAAG,EAAE,CAAC,IAAI,2CAAmB,EAAE,CAAC;QAClD;;;;;;WAMG;QACH,sBAAiB,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,IAAI,+CAAqB,CAAC,OAAO,CAAC,CAAC;QACpF,6BAAwB,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,IAAI,+CAAqB,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;CAAA;AA7BD,8DA6BC"}
|