@zdavison/matador 2.0.2 → 2.0.3
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/core/matador.d.ts.map +1 -1
- package/dist/core/matador.js +5 -0
- package/dist/index.cjs +36 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/topology/builder.d.ts +14 -0
- package/dist/topology/builder.d.ts.map +1 -1
- package/dist/topology/builder.js +18 -10
- package/dist/topology/builder.test.js +70 -0
- package/dist/transport/local/local-transport.d.ts.map +1 -1
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts +8 -0
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts.map +1 -1
- package/dist/transport/rabbitmq/rabbitmq-transport.js +12 -0
- package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts +2 -0
- package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts.map +1 -0
- package/dist/transport/rabbitmq/rabbitmq-transport.test.js +98 -0
- package/package.json +1 -1
- package/src/core/matador.ts +11 -0
- package/src/topology/builder.test.ts +86 -0
- package/src/topology/builder.ts +42 -4
- package/src/transport/local/local-transport.ts +4 -1
- package/src/transport/rabbitmq/rabbitmq-transport.test.ts +118 -0
- package/src/transport/rabbitmq/rabbitmq-transport.ts +15 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matador.d.ts","sourceRoot":"","sources":["../../src/core/matador.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,UAAU,EACV,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAErD,sCAAsC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAEnC,0BAA0B;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAE/C,6BAA6B;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAE9D;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;OAMG;gBACS,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,YAAY;IA2CvD;;OAEG;IACH,QAAQ,CAAC,CAAC,EACR,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,SAAS,aAAa,EAAE,GACpC,IAAI;IAKP;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAc3C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"matador.d.ts","sourceRoot":"","sources":["../../src/core/matador.ts"],"names":[],"mappings":"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"}
|
package/dist/core/matador.js
CHANGED
|
@@ -124,10 +124,15 @@ export class Matador {
|
|
|
124
124
|
throw new InvalidSchemaError('Schema validation failed', errors.map((e) => e.message).join(', '));
|
|
125
125
|
}
|
|
126
126
|
// Connect transport
|
|
127
|
+
this.hooks.logger.info(`[Matador] ⏳ Starting backend '${this.transport.name}'...`);
|
|
127
128
|
await this.transport.connect();
|
|
129
|
+
this.hooks.logger.info(`[Matador] 🟢 Backend '${this.transport.name}' started.`);
|
|
128
130
|
// Apply topology
|
|
129
131
|
await this.transport.applyTopology(this.topology);
|
|
130
132
|
// Subscribe to queues
|
|
133
|
+
if (this.consumeFrom.length > 0) {
|
|
134
|
+
this.hooks.logger.info(`[Matador] 🟢 Worker subscribing to '${this.consumeFrom.join(',')}'.`);
|
|
135
|
+
}
|
|
131
136
|
for (const queueName of this.consumeFrom) {
|
|
132
137
|
const qualifiedName = getQualifiedQueueName(this.topology.namespace, queueName);
|
|
133
138
|
const queueDef = this.topology.queues.find((q) => q.name === queueName);
|
package/dist/index.cjs
CHANGED
|
@@ -332,6 +332,9 @@ function getRetryQueueName(namespace, queueName) {
|
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
// src/topology/builder.ts
|
|
335
|
+
function isQueueDefinition(arg) {
|
|
336
|
+
return typeof arg === "object" && arg !== null && "name" in arg;
|
|
337
|
+
}
|
|
335
338
|
var TopologyValidationError = class extends Error {
|
|
336
339
|
constructor(message, issues) {
|
|
337
340
|
super(message);
|
|
@@ -366,18 +369,19 @@ var TopologyBuilder = class _TopologyBuilder {
|
|
|
366
369
|
this.namespace = namespace;
|
|
367
370
|
return this;
|
|
368
371
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
372
|
+
addQueue(nameOrDefinition, options = {}) {
|
|
373
|
+
if (isQueueDefinition(nameOrDefinition)) {
|
|
374
|
+
this.queues.push(nameOrDefinition);
|
|
375
|
+
} else {
|
|
376
|
+
this.queues.push({ name: nameOrDefinition, ...options });
|
|
377
|
+
}
|
|
374
378
|
return this;
|
|
375
379
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return this.addQueue(
|
|
380
|
+
queue(nameOrDefinition, options = {}) {
|
|
381
|
+
if (isQueueDefinition(nameOrDefinition)) {
|
|
382
|
+
return this.addQueue(nameOrDefinition);
|
|
383
|
+
}
|
|
384
|
+
return this.addQueue(nameOrDefinition, options);
|
|
381
385
|
}
|
|
382
386
|
/**
|
|
383
387
|
* Configures dead-letter queue settings.
|
|
@@ -2005,8 +2009,19 @@ var Matador = class {
|
|
|
2005
2009
|
errors.map((e) => e.message).join(", ")
|
|
2006
2010
|
);
|
|
2007
2011
|
}
|
|
2012
|
+
this.hooks.logger.info(
|
|
2013
|
+
`[Matador] \u23F3 Starting backend '${this.transport.name}'...`
|
|
2014
|
+
);
|
|
2008
2015
|
await this.transport.connect();
|
|
2016
|
+
this.hooks.logger.info(
|
|
2017
|
+
`[Matador] \u{1F7E2} Backend '${this.transport.name}' started.`
|
|
2018
|
+
);
|
|
2009
2019
|
await this.transport.applyTopology(this.topology);
|
|
2020
|
+
if (this.consumeFrom.length > 0) {
|
|
2021
|
+
this.hooks.logger.info(
|
|
2022
|
+
`[Matador] \u{1F7E2} Worker subscribing to '${this.consumeFrom.join(",")}'.`
|
|
2023
|
+
);
|
|
2024
|
+
}
|
|
2010
2025
|
for (const queueName of this.consumeFrom) {
|
|
2011
2026
|
const qualifiedName = getQualifiedQueueName(
|
|
2012
2027
|
this.topology.namespace,
|
|
@@ -2350,7 +2365,10 @@ var LocalTransport = class {
|
|
|
2350
2365
|
try {
|
|
2351
2366
|
await sub.handler(message.envelope, receipt);
|
|
2352
2367
|
} catch (error) {
|
|
2353
|
-
this.logger.error(
|
|
2368
|
+
this.logger.error(
|
|
2369
|
+
"[Matador] \u{1F534} Handler error in message processing",
|
|
2370
|
+
error
|
|
2371
|
+
);
|
|
2354
2372
|
}
|
|
2355
2373
|
}
|
|
2356
2374
|
}
|
|
@@ -2600,6 +2618,10 @@ var MultiTransport = class {
|
|
|
2600
2618
|
throw new Error("Transport does not support dead letter routing");
|
|
2601
2619
|
}
|
|
2602
2620
|
};
|
|
2621
|
+
function redactAmqpUrl(url) {
|
|
2622
|
+
const regex = /^(amqps?:\/\/)[^:]+:[^@]+@/;
|
|
2623
|
+
return url.replace(regex, "$1****:****@");
|
|
2624
|
+
}
|
|
2603
2625
|
var RabbitMQTransport = class {
|
|
2604
2626
|
name = "rabbitmq";
|
|
2605
2627
|
_capabilities = {
|
|
@@ -2856,6 +2878,9 @@ var RabbitMQTransport = class {
|
|
|
2856
2878
|
return queueChannel;
|
|
2857
2879
|
}
|
|
2858
2880
|
async doConnect() {
|
|
2881
|
+
this.logger.info(
|
|
2882
|
+
`[Matador] \u23F3 Connecting to RabbitMQ at '${redactAmqpUrl(this.config.url)}'.`
|
|
2883
|
+
);
|
|
2859
2884
|
const connection = await amqplib__default.default.connect(this.config.url);
|
|
2860
2885
|
this.connection = connection;
|
|
2861
2886
|
connection.on("error", (err) => {
|