@ddd-ts-kit/rabbitmq 0.7.0 → 0.8.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/README.md +4 -3
- package/dist/codec/decode.d.ts +1 -1
- package/dist/codec/decode.d.ts.map +1 -1
- package/dist/codec/decode.js +5 -1
- package/dist/codec/decode.js.map +1 -1
- package/dist/codec/encode.d.ts.map +1 -1
- package/dist/codec/encode.js +2 -1
- package/dist/codec/encode.js.map +1 -1
- package/dist/codec/headers.d.ts +1 -0
- package/dist/codec/headers.d.ts.map +1 -1
- package/dist/codec/headers.js +1 -0
- package/dist/codec/headers.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -152,9 +152,10 @@ Retries and dead letters travel through the default exchange of the broker (rout
|
|
|
152
152
|
queue name), so there is one exchange to manage and no binding besides the one above.
|
|
153
153
|
|
|
154
154
|
A message is the envelope as JSON (`id`, `type`, `version`, `occurredAt`, `payload`,
|
|
155
|
-
`traceparent`, `correlationId`), persistent, with the routing key and the `type`
|
|
156
|
-
to the event type, `messageId` to the event id, `correlationId` to the correlation
|
|
157
|
-
headers `traceparent`, `x-correlation-id` and `x-event-version`. Any
|
|
155
|
+
`traceparent`, `correlationId`, `tenantId`), persistent, with the routing key and the `type`
|
|
156
|
+
property set to the event type, `messageId` to the event id, `correlationId` to the correlation
|
|
157
|
+
id, and the headers `traceparent`, `x-correlation-id`, `x-tenant-id` and `x-event-version`. Any
|
|
158
|
+
AMQP client can consume it.
|
|
158
159
|
|
|
159
160
|
Two consumers of one type have a queue each and both receive every event. Two instances of
|
|
160
161
|
one consumer share its queue: each event goes to one of them.
|
package/dist/codec/decode.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Message } from 'amqplib';
|
|
2
|
-
import type
|
|
2
|
+
import { type IntegrationEvent } from '@ddd-ts-kit/kernel';
|
|
3
3
|
/** The envelope exactly as published, or `undefined` for a body that is not one (poison). */
|
|
4
4
|
export declare function decode(message: Message): IntegrationEvent | undefined;
|
|
5
5
|
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/codec/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/codec/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAiBrE"}
|
package/dist/codec/decode.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isTenantId } from '@ddd-ts-kit/kernel';
|
|
1
2
|
/** The envelope exactly as published, or `undefined` for a body that is not one (poison). */
|
|
2
3
|
export function decode(message) {
|
|
3
4
|
const body = parsed(message.content);
|
|
@@ -12,6 +13,7 @@ export function decode(message) {
|
|
|
12
13
|
payload: body.payload,
|
|
13
14
|
...(typeof body.traceparent === 'string' ? { traceparent: body.traceparent } : {}),
|
|
14
15
|
...(typeof body.correlationId === 'string' ? { correlationId: body.correlationId } : {}),
|
|
16
|
+
...(isTenantId(body.tenantId) ? { tenantId: body.tenantId } : {}),
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
19
|
function parsed(content) {
|
|
@@ -30,7 +32,9 @@ function isEnvelope(body) {
|
|
|
30
32
|
hasText(body, 'type') &&
|
|
31
33
|
hasText(body, 'occurredAt') &&
|
|
32
34
|
'version' in body &&
|
|
33
|
-
typeof body.version === 'number'
|
|
35
|
+
typeof body.version === 'number' &&
|
|
36
|
+
// A tenant outside the grammar could widen what the consumer reaches: the envelope is poison.
|
|
37
|
+
(!('tenantId' in body) || body.tenantId === undefined || isTenantId(body.tenantId)));
|
|
34
38
|
}
|
|
35
39
|
function hasText(body, field) {
|
|
36
40
|
const value = Reflect.get(body, field);
|
package/dist/codec/decode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/codec/decode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/codec/decode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAyB,MAAM,oBAAoB,CAAC;AAEvE,6FAA6F;AAC7F,MAAM,UAAU,MAAM,CAAC,OAAgB;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAaD,SAAS,MAAM,CAAC,OAAe;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QACnB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;QAC3B,SAAS,IAAI,IAAI;QACjB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,8FAA8F;QAC9F,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CACpF,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;IAC1C,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/codec/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/codec/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAiB3D"}
|
package/dist/codec/encode.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CORRELATION_HEADER, EVENT_VERSION_HEADER, TRACEPARENT_HEADER } from './headers.js';
|
|
1
|
+
import { CORRELATION_HEADER, EVENT_VERSION_HEADER, TENANT_HEADER, TRACEPARENT_HEADER } from './headers.js';
|
|
2
2
|
/**
|
|
3
3
|
* The body is the whole envelope as JSON, so any AMQP client can consume it. Properties and
|
|
4
4
|
* headers repeat what a broker, a tracer or an operator needs without opening the body.
|
|
@@ -16,6 +16,7 @@ export function encode(event) {
|
|
|
16
16
|
[EVENT_VERSION_HEADER]: event.version,
|
|
17
17
|
...(event.traceparent === undefined ? {} : { [TRACEPARENT_HEADER]: event.traceparent }),
|
|
18
18
|
...(event.correlationId === undefined ? {} : { [CORRELATION_HEADER]: event.correlationId }),
|
|
19
|
+
...(event.tenantId === undefined ? {} : { [TENANT_HEADER]: event.tenantId }),
|
|
19
20
|
},
|
|
20
21
|
},
|
|
21
22
|
};
|
package/dist/codec/encode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/codec/encode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../src/codec/encode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG3G;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAuB;IAC5C,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,UAAU,EAAE;YACV,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,KAAK,CAAC,EAAE;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;YACpF,OAAO,EAAE;gBACP,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,OAAO;gBACrC,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvF,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3F,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;aAC7E;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/codec/headers.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export declare const DEAD_REASON_HEADER = "x-dead-reason";
|
|
|
4
4
|
export declare const EVENT_VERSION_HEADER = "x-event-version";
|
|
5
5
|
export declare const TRACEPARENT_HEADER = "traceparent";
|
|
6
6
|
export declare const CORRELATION_HEADER = "x-correlation-id";
|
|
7
|
+
export declare const TENANT_HEADER = "x-tenant-id";
|
|
7
8
|
//# sourceMappingURL=headers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/codec/headers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/codec/headers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,aAAa,gBAAgB,CAAC"}
|
package/dist/codec/headers.js
CHANGED
|
@@ -4,4 +4,5 @@ export const DEAD_REASON_HEADER = 'x-dead-reason';
|
|
|
4
4
|
export const EVENT_VERSION_HEADER = 'x-event-version';
|
|
5
5
|
export const TRACEPARENT_HEADER = 'traceparent';
|
|
6
6
|
export const CORRELATION_HEADER = 'x-correlation-id';
|
|
7
|
+
export const TENANT_HEADER = 'x-tenant-id';
|
|
7
8
|
//# sourceMappingURL=headers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/codec/headers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/codec/headers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-ts-kit/rabbitmq",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "RabbitMQ provider for integration events: confirmed publishing for the outbox relay, durable queue per consumer, manual acknowledgement, bounded retries and dead-lettering.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"dist"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@ddd-ts-kit/kernel": "0.
|
|
30
|
-
"@ddd-ts-kit/events": "0.
|
|
29
|
+
"@ddd-ts-kit/kernel": "0.8.0",
|
|
30
|
+
"@ddd-ts-kit/events": "0.8.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"amqplib": ">=0.10.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"amqplib": "latest",
|
|
37
|
-
"@ddd-ts-kit/testing": "0.
|
|
37
|
+
"@ddd-ts-kit/testing": "0.8.0"
|
|
38
38
|
}
|
|
39
39
|
}
|