@amqp-contract/asyncapi 0.22.0 → 0.23.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/dist/index.cjs +110 -9
- package/dist/index.d.cts +29 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +29 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +110 -9
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +9 -8
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -52,6 +52,7 @@ let _amqp_contract_contract = require("@amqp-contract/contract");
|
|
|
52
52
|
var AsyncAPIGenerator = class {
|
|
53
53
|
converters;
|
|
54
54
|
logger;
|
|
55
|
+
failOnMissingConverter;
|
|
55
56
|
/**
|
|
56
57
|
* Create a new AsyncAPI generator instance.
|
|
57
58
|
*
|
|
@@ -60,6 +61,7 @@ var AsyncAPIGenerator = class {
|
|
|
60
61
|
constructor(options = {}) {
|
|
61
62
|
this.converters = options.schemaConverters ?? [];
|
|
62
63
|
this.logger = options.logger;
|
|
64
|
+
this.failOnMissingConverter = options.failOnMissingConverter ?? false;
|
|
63
65
|
}
|
|
64
66
|
/**
|
|
65
67
|
* Generate an AsyncAPI 3.0 document from a contract definition.
|
|
@@ -131,7 +133,7 @@ var AsyncAPIGenerator = class {
|
|
|
131
133
|
channelMessages[messageName] = await this.convertMessage(message);
|
|
132
134
|
convertedMessages[messageName] = await this.convertMessage(message);
|
|
133
135
|
}
|
|
134
|
-
const channel = { ...this.exchangeToChannel(exchange) };
|
|
136
|
+
const channel = { ...this.exchangeToChannel(exchange, contract) };
|
|
135
137
|
if (Object.keys(channelMessages).length > 0) channel.messages = channelMessages;
|
|
136
138
|
convertedChannels[exchangeName] = channel;
|
|
137
139
|
}
|
|
@@ -195,9 +197,27 @@ var AsyncAPIGenerator = class {
|
|
|
195
197
|
return result;
|
|
196
198
|
}
|
|
197
199
|
/**
|
|
198
|
-
* Convert a queue definition to AsyncAPI ChannelObject
|
|
200
|
+
* Convert a queue definition to AsyncAPI ChannelObject.
|
|
201
|
+
*
|
|
202
|
+
* The AMQP binding spec doesn't have first-class fields for dead-lettering
|
|
203
|
+
* or retry policy, so we surface them in two places:
|
|
204
|
+
*
|
|
205
|
+
* 1. The `arguments` map carries the canonical RabbitMQ keys
|
|
206
|
+
* (`x-dead-letter-exchange`, `x-dead-letter-routing-key`) — these are
|
|
207
|
+
* what a consumer of the spec would actually use to recreate the queue.
|
|
208
|
+
* 2. The channel description summarises DLX + retry policy in human-readable
|
|
209
|
+
* form so the topology is visible without reading the binding details.
|
|
199
210
|
*/
|
|
200
211
|
queueToChannel(queue, bindings = []) {
|
|
212
|
+
const derivedArgs = {};
|
|
213
|
+
if (queue.deadLetter?.exchange) {
|
|
214
|
+
derivedArgs["x-dead-letter-exchange"] = queue.deadLetter.exchange.name;
|
|
215
|
+
if (queue.deadLetter.routingKey) derivedArgs["x-dead-letter-routing-key"] = queue.deadLetter.routingKey;
|
|
216
|
+
}
|
|
217
|
+
const mergedArgs = {
|
|
218
|
+
...derivedArgs,
|
|
219
|
+
...queue.arguments
|
|
220
|
+
};
|
|
201
221
|
let description = `AMQP Queue: ${queue.name}`;
|
|
202
222
|
if (bindings.length > 0) {
|
|
203
223
|
const bindingDescriptions = bindings.map((binding) => {
|
|
@@ -207,7 +227,24 @@ var AsyncAPIGenerator = class {
|
|
|
207
227
|
}).join(", ");
|
|
208
228
|
description += ` (${bindingDescriptions})`;
|
|
209
229
|
}
|
|
210
|
-
|
|
230
|
+
const effectiveDlx = mergedArgs["x-dead-letter-exchange"];
|
|
231
|
+
if (typeof effectiveDlx === "string" && effectiveDlx.length > 0) {
|
|
232
|
+
description += `. Dead-letters to '${effectiveDlx}'`;
|
|
233
|
+
const effectiveDlxRoutingKey = mergedArgs["x-dead-letter-routing-key"];
|
|
234
|
+
if (typeof effectiveDlxRoutingKey === "string" && effectiveDlxRoutingKey.length > 0) description += ` (routing key '${effectiveDlxRoutingKey}')`;
|
|
235
|
+
description += ".";
|
|
236
|
+
}
|
|
237
|
+
if (queue.retry && queue.retry.mode !== "none") {
|
|
238
|
+
const retry = queue.retry;
|
|
239
|
+
if (retry.mode === "immediate-requeue") description += ` Retry: immediate-requeue, max ${retry.maxRetries} attempts.`;
|
|
240
|
+
else if (retry.mode === "ttl-backoff") {
|
|
241
|
+
const initial = retry.initialDelayMs;
|
|
242
|
+
description += ` Retry: ttl-backoff, max ${retry.maxRetries} attempts`;
|
|
243
|
+
if (initial !== void 0) description += `, initial delay ${initial}ms`;
|
|
244
|
+
description += ".";
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const result = {
|
|
211
248
|
address: queue.name,
|
|
212
249
|
title: queue.name,
|
|
213
250
|
description,
|
|
@@ -220,21 +257,56 @@ var AsyncAPIGenerator = class {
|
|
|
220
257
|
...queue.exclusive !== void 0 && { exclusive: queue.exclusive },
|
|
221
258
|
...queue.autoDelete !== void 0 && { autoDelete: queue.autoDelete },
|
|
222
259
|
...queue.maxPriority !== void 0 && { maxPriority: queue.maxPriority },
|
|
223
|
-
...
|
|
260
|
+
...Object.keys(mergedArgs).length > 0 ? { arguments: mergedArgs } : {},
|
|
224
261
|
vhost: "/"
|
|
225
262
|
},
|
|
226
263
|
bindingVersion: "0.3.0"
|
|
227
264
|
} }
|
|
228
265
|
};
|
|
266
|
+
if (queue.retry && queue.retry.mode !== "none") result["x-amqp-retry"] = {
|
|
267
|
+
mode: queue.retry.mode,
|
|
268
|
+
..."maxRetries" in queue.retry && queue.retry.maxRetries !== void 0 ? { maxRetries: queue.retry.maxRetries } : {},
|
|
269
|
+
...queue.retry.mode === "ttl-backoff" ? {
|
|
270
|
+
...queue.retry.initialDelayMs !== void 0 ? { initialDelayMs: queue.retry.initialDelayMs } : {},
|
|
271
|
+
...queue.retry.maxDelayMs !== void 0 ? { maxDelayMs: queue.retry.maxDelayMs } : {},
|
|
272
|
+
...queue.retry.backoffMultiplier !== void 0 ? { backoffMultiplier: queue.retry.backoffMultiplier } : {},
|
|
273
|
+
...queue.retry.jitter !== void 0 ? { jitter: queue.retry.jitter } : {}
|
|
274
|
+
} : {}
|
|
275
|
+
};
|
|
276
|
+
return result;
|
|
229
277
|
}
|
|
230
278
|
/**
|
|
231
|
-
* Convert an exchange definition to AsyncAPI ChannelObject
|
|
279
|
+
* Convert an exchange definition to AsyncAPI ChannelObject.
|
|
280
|
+
*
|
|
281
|
+
* Exchange-to-exchange bindings — used for bridge exchanges, fanout
|
|
282
|
+
* fan-in/out, and other cross-domain routing — are surfaced both as a
|
|
283
|
+
* line in the description and via the non-standard `x-amqp-exchange-bindings`
|
|
284
|
+
* extension so tooling can recreate the topology.
|
|
232
285
|
*/
|
|
233
|
-
exchangeToChannel(exchange) {
|
|
234
|
-
|
|
286
|
+
exchangeToChannel(exchange, contract) {
|
|
287
|
+
const sourceBindings = this.getExchangeBindingsBySource(exchange, contract);
|
|
288
|
+
const destinationBindings = this.getExchangeBindingsByDestination(exchange, contract);
|
|
289
|
+
let description = `AMQP Exchange: ${exchange.name} (${exchange.type})`;
|
|
290
|
+
if (sourceBindings.length > 0) {
|
|
291
|
+
const summaries = sourceBindings.map((binding) => {
|
|
292
|
+
const target = binding.destination.name;
|
|
293
|
+
const routingKey = "routingKey" in binding ? binding.routingKey : void 0;
|
|
294
|
+
return routingKey ? `forwards to '${target}' (routing key '${routingKey}')` : `forwards to '${target}'`;
|
|
295
|
+
}).join(", ");
|
|
296
|
+
description += `. ${summaries}.`;
|
|
297
|
+
}
|
|
298
|
+
if (destinationBindings.length > 0) {
|
|
299
|
+
const summaries = destinationBindings.map((binding) => {
|
|
300
|
+
const source = binding.source.name;
|
|
301
|
+
const routingKey = "routingKey" in binding ? binding.routingKey : void 0;
|
|
302
|
+
return routingKey ? `receives from '${source}' (routing key '${routingKey}')` : `receives from '${source}'`;
|
|
303
|
+
}).join(", ");
|
|
304
|
+
description += ` ${summaries}.`;
|
|
305
|
+
}
|
|
306
|
+
const result = {
|
|
235
307
|
address: exchange.name,
|
|
236
308
|
title: exchange.name,
|
|
237
|
-
description
|
|
309
|
+
description,
|
|
238
310
|
bindings: { amqp: {
|
|
239
311
|
is: "routingKey",
|
|
240
312
|
exchange: {
|
|
@@ -249,6 +321,33 @@ var AsyncAPIGenerator = class {
|
|
|
249
321
|
bindingVersion: "0.3.0"
|
|
250
322
|
} }
|
|
251
323
|
};
|
|
324
|
+
if (sourceBindings.length > 0 || destinationBindings.length > 0) {
|
|
325
|
+
const e2eBindings = {};
|
|
326
|
+
if (sourceBindings.length > 0) e2eBindings["forwardsTo"] = sourceBindings.map((b) => ({
|
|
327
|
+
destination: b.destination.name,
|
|
328
|
+
..."routingKey" in b && b.routingKey !== void 0 ? { routingKey: b.routingKey } : {},
|
|
329
|
+
...b.arguments !== void 0 ? { arguments: b.arguments } : {}
|
|
330
|
+
}));
|
|
331
|
+
if (destinationBindings.length > 0) e2eBindings["receivesFrom"] = destinationBindings.map((b) => ({
|
|
332
|
+
source: b.source.name,
|
|
333
|
+
..."routingKey" in b && b.routingKey !== void 0 ? { routingKey: b.routingKey } : {},
|
|
334
|
+
...b.arguments !== void 0 ? { arguments: b.arguments } : {}
|
|
335
|
+
}));
|
|
336
|
+
result["x-amqp-exchange-bindings"] = e2eBindings;
|
|
337
|
+
}
|
|
338
|
+
return result;
|
|
339
|
+
}
|
|
340
|
+
getExchangeBindingsBySource(exchange, contract) {
|
|
341
|
+
return this.exchangeBindings(contract).filter((b) => b.source.name === exchange.name);
|
|
342
|
+
}
|
|
343
|
+
getExchangeBindingsByDestination(exchange, contract) {
|
|
344
|
+
return this.exchangeBindings(contract).filter((b) => b.destination.name === exchange.name);
|
|
345
|
+
}
|
|
346
|
+
exchangeBindings(contract) {
|
|
347
|
+
if (!contract.bindings) return [];
|
|
348
|
+
const result = [];
|
|
349
|
+
for (const binding of Object.values(contract.bindings)) if (binding.type === "exchange") result.push(binding);
|
|
350
|
+
return result;
|
|
252
351
|
}
|
|
253
352
|
/**
|
|
254
353
|
* Get the name/key of an exchange from the contract
|
|
@@ -287,7 +386,9 @@ var AsyncAPIGenerator = class {
|
|
|
287
386
|
const [_required, jsonSchema] = await converter.convert(schema, { strategy });
|
|
288
387
|
return jsonSchema;
|
|
289
388
|
}
|
|
290
|
-
|
|
389
|
+
const message = "No schema converter matched for schema. Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.";
|
|
390
|
+
if (this.failOnMissingConverter) throw new Error(`AsyncAPIGenerator: ${message}`);
|
|
391
|
+
this.logger?.warn(`${message} The generated spec will use a generic { type: "object" } placeholder.`);
|
|
291
392
|
return { type: "object" };
|
|
292
393
|
}
|
|
293
394
|
};
|
package/dist/index.d.cts
CHANGED
|
@@ -418,6 +418,15 @@ type AsyncAPIGeneratorOptions = {
|
|
|
418
418
|
logger?: {
|
|
419
419
|
warn: (message: string) => void;
|
|
420
420
|
};
|
|
421
|
+
/**
|
|
422
|
+
* If true, the generator throws when a payload schema cannot be converted by
|
|
423
|
+
* any of the configured `schemaConverters` instead of falling back to a
|
|
424
|
+
* generic `{ type: "object" }` placeholder. Recommended for CI pipelines
|
|
425
|
+
* that depend on the generated spec being faithful (e.g. for codegen).
|
|
426
|
+
*
|
|
427
|
+
* Defaults to `false` for backwards compatibility.
|
|
428
|
+
*/
|
|
429
|
+
failOnMissingConverter?: boolean;
|
|
421
430
|
};
|
|
422
431
|
/**
|
|
423
432
|
* Options for generating an AsyncAPI document.
|
|
@@ -475,6 +484,7 @@ type AsyncAPIGeneratorGenerateOptions = Pick<AsyncAPIObject, "info"> & Partial<P
|
|
|
475
484
|
declare class AsyncAPIGenerator {
|
|
476
485
|
private readonly converters;
|
|
477
486
|
private readonly logger?;
|
|
487
|
+
private readonly failOnMissingConverter;
|
|
478
488
|
/**
|
|
479
489
|
* Create a new AsyncAPI generator instance.
|
|
480
490
|
*
|
|
@@ -515,13 +525,30 @@ declare class AsyncAPIGenerator {
|
|
|
515
525
|
*/
|
|
516
526
|
private convertMessage;
|
|
517
527
|
/**
|
|
518
|
-
* Convert a queue definition to AsyncAPI ChannelObject
|
|
528
|
+
* Convert a queue definition to AsyncAPI ChannelObject.
|
|
529
|
+
*
|
|
530
|
+
* The AMQP binding spec doesn't have first-class fields for dead-lettering
|
|
531
|
+
* or retry policy, so we surface them in two places:
|
|
532
|
+
*
|
|
533
|
+
* 1. The `arguments` map carries the canonical RabbitMQ keys
|
|
534
|
+
* (`x-dead-letter-exchange`, `x-dead-letter-routing-key`) — these are
|
|
535
|
+
* what a consumer of the spec would actually use to recreate the queue.
|
|
536
|
+
* 2. The channel description summarises DLX + retry policy in human-readable
|
|
537
|
+
* form so the topology is visible without reading the binding details.
|
|
519
538
|
*/
|
|
520
539
|
private queueToChannel;
|
|
521
540
|
/**
|
|
522
|
-
* Convert an exchange definition to AsyncAPI ChannelObject
|
|
541
|
+
* Convert an exchange definition to AsyncAPI ChannelObject.
|
|
542
|
+
*
|
|
543
|
+
* Exchange-to-exchange bindings — used for bridge exchanges, fanout
|
|
544
|
+
* fan-in/out, and other cross-domain routing — are surfaced both as a
|
|
545
|
+
* line in the description and via the non-standard `x-amqp-exchange-bindings`
|
|
546
|
+
* extension so tooling can recreate the topology.
|
|
523
547
|
*/
|
|
524
548
|
private exchangeToChannel;
|
|
549
|
+
private getExchangeBindingsBySource;
|
|
550
|
+
private getExchangeBindingsByDestination;
|
|
551
|
+
private exchangeBindings;
|
|
525
552
|
/**
|
|
526
553
|
* Get the name/key of an exchange from the contract
|
|
527
554
|
*/
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result","JSONSchema7Version","JSONSchema7TypeName","JSONSchema7Type","AsyncAPIVersion","Identifier","DefaultContentType","AsyncAPIObject","InfoObject","ServersObject","ChannelsObject","OperationsObject","ComponentsObject","SpecificationExtensions","asyncapi","id","defaultContentType","info","servers","channels","operations","components","ContactObject","LicenseObject","TagsObject","ExternalDocumentationObject","ReferenceObject","title","version","description","termsOfService","contact","license","tags","externalDocs","name","url","email","ServerObject","Record","ServerVariableObject","SecuritySchemeObject","Array","ServerBindingsObject","host","protocol","pathname","protocolVersion","variables","security","bindings","enum","default","examples","Binding","http","ws","kafka","anypointmq","amqp","amqp1","mqtt","mqtt5","nats","jms","sns","sqs","stomp","redis","mercure","ibmmq","googlepubsub","ChannelObject","MessagesObject","ParametersObject","ChannelBindingsObject","address","messages","summary","parameters","OperationObject","MessageObject","OperationReplyObject","OperationBindingsObject","OperationTraitObject","action","channel","reply","traits","OperationReplyAddressObject","location","MessageTraitObject","payload","MultiFormatSchemaObject","CorrelationIDObject","MessageBindingsObject","MessageExampleObject","headers","correlationId","contentType","ParameterObject","TagObject","SchemaObject","schemas","securitySchemes","serverVariables","replies","replyAddresses","correlationIds","operationTraits","messageTraits","serverBindings","channelBindings","operationBindings","messageBindings","SecuritySchemeType","OAuthFlowsObject","type","in","scheme","bearerFormat","flows","openIdConnectUrl","scopes","SecuritySchemaLocation","SecuritySchemeObjectBase","SecuritySchemeObjectUserPassword","SecuritySchemeObjectApiKey","SecuritySchemeObjectX509","SecuritySchemeObjectSymetricEncryption","SecuritySchemeObjectAsymetricEncryption","SecuritySchemeObjectHttpApiKey","SecuritySchemeObjectHttp","SecuritySchemeObjectOauth2","SecuritySchemeObjectOpenIdConnect","SecuritySchemeObjectPlain","SecuritySchemeObjectScramSha256","SecuritySchemeObjectScramSha512","SecuritySchemeObjectGssapi","OAuthFlowObjectImplicit","OAuthFlowObjectPassword","OAuthFlowObjectClientCredentials","OAuthFlowObjectAuthorizationCode","implicit","password","clientCredentials","authorizationCode","OAuthFlowObject","OAuthFlowObjectBase","refreshUrl","availableScopes","authorizationUrl","tokenUrl","AsyncAPISchemaObject","AsyncAPISchemaDefinition","MultiFormatObject","schema","schemaFormat","$id","$schema","$comment","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","items","additionalItems","maxItems","minItems","uniqueItems","contains","maxProperties","minProperties","required","properties","key","patternProperties","additionalProperties","dependencies","propertyNames","if","then","else","allOf","anyOf","oneOf","not","format","contentMediaType","contentEncoding","definitions","readOnly","writeOnly","discriminator","deprecated","keyword","bindingVersion","SpecificationExtension","extension","T","$ref"],"sources":["../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../node_modules/.pnpm/@asyncapi+parser@3.6.0/node_modules/@asyncapi/parser/esm/spec-types/v3.d.ts","../src/index.ts"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result","JSONSchema7Version","JSONSchema7TypeName","JSONSchema7Type","AsyncAPIVersion","Identifier","DefaultContentType","AsyncAPIObject","InfoObject","ServersObject","ChannelsObject","OperationsObject","ComponentsObject","SpecificationExtensions","asyncapi","id","defaultContentType","info","servers","channels","operations","components","ContactObject","LicenseObject","TagsObject","ExternalDocumentationObject","ReferenceObject","title","version","description","termsOfService","contact","license","tags","externalDocs","name","url","email","ServerObject","Record","ServerVariableObject","SecuritySchemeObject","Array","ServerBindingsObject","host","protocol","pathname","protocolVersion","variables","security","bindings","enum","default","examples","Binding","http","ws","kafka","anypointmq","amqp","amqp1","mqtt","mqtt5","nats","jms","sns","sqs","stomp","redis","mercure","ibmmq","googlepubsub","ChannelObject","MessagesObject","ParametersObject","ChannelBindingsObject","address","messages","summary","parameters","OperationObject","MessageObject","OperationReplyObject","OperationBindingsObject","OperationTraitObject","action","channel","reply","traits","OperationReplyAddressObject","location","MessageTraitObject","payload","MultiFormatSchemaObject","CorrelationIDObject","MessageBindingsObject","MessageExampleObject","headers","correlationId","contentType","ParameterObject","TagObject","SchemaObject","schemas","securitySchemes","serverVariables","replies","replyAddresses","correlationIds","operationTraits","messageTraits","serverBindings","channelBindings","operationBindings","messageBindings","SecuritySchemeType","OAuthFlowsObject","type","in","scheme","bearerFormat","flows","openIdConnectUrl","scopes","SecuritySchemaLocation","SecuritySchemeObjectBase","SecuritySchemeObjectUserPassword","SecuritySchemeObjectApiKey","SecuritySchemeObjectX509","SecuritySchemeObjectSymetricEncryption","SecuritySchemeObjectAsymetricEncryption","SecuritySchemeObjectHttpApiKey","SecuritySchemeObjectHttp","SecuritySchemeObjectOauth2","SecuritySchemeObjectOpenIdConnect","SecuritySchemeObjectPlain","SecuritySchemeObjectScramSha256","SecuritySchemeObjectScramSha512","SecuritySchemeObjectGssapi","OAuthFlowObjectImplicit","OAuthFlowObjectPassword","OAuthFlowObjectClientCredentials","OAuthFlowObjectAuthorizationCode","implicit","password","clientCredentials","authorizationCode","OAuthFlowObject","OAuthFlowObjectBase","refreshUrl","availableScopes","authorizationUrl","tokenUrl","AsyncAPISchemaObject","AsyncAPISchemaDefinition","MultiFormatObject","schema","schemaFormat","$id","$schema","$comment","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","items","additionalItems","maxItems","minItems","uniqueItems","contains","maxProperties","minProperties","required","properties","key","patternProperties","additionalProperties","dependencies","propertyNames","if","then","else","allOf","anyOf","oneOf","not","format","contentMediaType","contentEncoding","definitions","readOnly","writeOnly","discriminator","deprecated","keyword","bindingVersion","SpecificationExtension","extension","T","$ref"],"sources":["../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../node_modules/.pnpm/@asyncapi+parser@3.6.0/node_modules/@asyncapi/parser/esm/spec-types/v3.d.ts","../src/index.ts"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -418,6 +418,15 @@ type AsyncAPIGeneratorOptions = {
|
|
|
418
418
|
logger?: {
|
|
419
419
|
warn: (message: string) => void;
|
|
420
420
|
};
|
|
421
|
+
/**
|
|
422
|
+
* If true, the generator throws when a payload schema cannot be converted by
|
|
423
|
+
* any of the configured `schemaConverters` instead of falling back to a
|
|
424
|
+
* generic `{ type: "object" }` placeholder. Recommended for CI pipelines
|
|
425
|
+
* that depend on the generated spec being faithful (e.g. for codegen).
|
|
426
|
+
*
|
|
427
|
+
* Defaults to `false` for backwards compatibility.
|
|
428
|
+
*/
|
|
429
|
+
failOnMissingConverter?: boolean;
|
|
421
430
|
};
|
|
422
431
|
/**
|
|
423
432
|
* Options for generating an AsyncAPI document.
|
|
@@ -475,6 +484,7 @@ type AsyncAPIGeneratorGenerateOptions = Pick<AsyncAPIObject, "info"> & Partial<P
|
|
|
475
484
|
declare class AsyncAPIGenerator {
|
|
476
485
|
private readonly converters;
|
|
477
486
|
private readonly logger?;
|
|
487
|
+
private readonly failOnMissingConverter;
|
|
478
488
|
/**
|
|
479
489
|
* Create a new AsyncAPI generator instance.
|
|
480
490
|
*
|
|
@@ -515,13 +525,30 @@ declare class AsyncAPIGenerator {
|
|
|
515
525
|
*/
|
|
516
526
|
private convertMessage;
|
|
517
527
|
/**
|
|
518
|
-
* Convert a queue definition to AsyncAPI ChannelObject
|
|
528
|
+
* Convert a queue definition to AsyncAPI ChannelObject.
|
|
529
|
+
*
|
|
530
|
+
* The AMQP binding spec doesn't have first-class fields for dead-lettering
|
|
531
|
+
* or retry policy, so we surface them in two places:
|
|
532
|
+
*
|
|
533
|
+
* 1. The `arguments` map carries the canonical RabbitMQ keys
|
|
534
|
+
* (`x-dead-letter-exchange`, `x-dead-letter-routing-key`) — these are
|
|
535
|
+
* what a consumer of the spec would actually use to recreate the queue.
|
|
536
|
+
* 2. The channel description summarises DLX + retry policy in human-readable
|
|
537
|
+
* form so the topology is visible without reading the binding details.
|
|
519
538
|
*/
|
|
520
539
|
private queueToChannel;
|
|
521
540
|
/**
|
|
522
|
-
* Convert an exchange definition to AsyncAPI ChannelObject
|
|
541
|
+
* Convert an exchange definition to AsyncAPI ChannelObject.
|
|
542
|
+
*
|
|
543
|
+
* Exchange-to-exchange bindings — used for bridge exchanges, fanout
|
|
544
|
+
* fan-in/out, and other cross-domain routing — are surfaced both as a
|
|
545
|
+
* line in the description and via the non-standard `x-amqp-exchange-bindings`
|
|
546
|
+
* extension so tooling can recreate the topology.
|
|
523
547
|
*/
|
|
524
548
|
private exchangeToChannel;
|
|
549
|
+
private getExchangeBindingsBySource;
|
|
550
|
+
private getExchangeBindingsByDestination;
|
|
551
|
+
private exchangeBindings;
|
|
525
552
|
/**
|
|
526
553
|
* Get the name/key of an exchange from the contract
|
|
527
554
|
*/
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result","JSONSchema7Version","JSONSchema7TypeName","JSONSchema7Type","AsyncAPIVersion","Identifier","DefaultContentType","AsyncAPIObject","InfoObject","ServersObject","ChannelsObject","OperationsObject","ComponentsObject","SpecificationExtensions","asyncapi","id","defaultContentType","info","servers","channels","operations","components","ContactObject","LicenseObject","TagsObject","ExternalDocumentationObject","ReferenceObject","title","version","description","termsOfService","contact","license","tags","externalDocs","name","url","email","ServerObject","Record","ServerVariableObject","SecuritySchemeObject","Array","ServerBindingsObject","host","protocol","pathname","protocolVersion","variables","security","bindings","enum","default","examples","Binding","http","ws","kafka","anypointmq","amqp","amqp1","mqtt","mqtt5","nats","jms","sns","sqs","stomp","redis","mercure","ibmmq","googlepubsub","ChannelObject","MessagesObject","ParametersObject","ChannelBindingsObject","address","messages","summary","parameters","OperationObject","MessageObject","OperationReplyObject","OperationBindingsObject","OperationTraitObject","action","channel","reply","traits","OperationReplyAddressObject","location","MessageTraitObject","payload","MultiFormatSchemaObject","CorrelationIDObject","MessageBindingsObject","MessageExampleObject","headers","correlationId","contentType","ParameterObject","TagObject","SchemaObject","schemas","securitySchemes","serverVariables","replies","replyAddresses","correlationIds","operationTraits","messageTraits","serverBindings","channelBindings","operationBindings","messageBindings","SecuritySchemeType","OAuthFlowsObject","type","in","scheme","bearerFormat","flows","openIdConnectUrl","scopes","SecuritySchemaLocation","SecuritySchemeObjectBase","SecuritySchemeObjectUserPassword","SecuritySchemeObjectApiKey","SecuritySchemeObjectX509","SecuritySchemeObjectSymetricEncryption","SecuritySchemeObjectAsymetricEncryption","SecuritySchemeObjectHttpApiKey","SecuritySchemeObjectHttp","SecuritySchemeObjectOauth2","SecuritySchemeObjectOpenIdConnect","SecuritySchemeObjectPlain","SecuritySchemeObjectScramSha256","SecuritySchemeObjectScramSha512","SecuritySchemeObjectGssapi","OAuthFlowObjectImplicit","OAuthFlowObjectPassword","OAuthFlowObjectClientCredentials","OAuthFlowObjectAuthorizationCode","implicit","password","clientCredentials","authorizationCode","OAuthFlowObject","OAuthFlowObjectBase","refreshUrl","availableScopes","authorizationUrl","tokenUrl","AsyncAPISchemaObject","AsyncAPISchemaDefinition","MultiFormatObject","schema","schemaFormat","$id","$schema","$comment","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","items","additionalItems","maxItems","minItems","uniqueItems","contains","maxProperties","minProperties","required","properties","key","patternProperties","additionalProperties","dependencies","propertyNames","if","then","else","allOf","anyOf","oneOf","not","format","contentMediaType","contentEncoding","definitions","readOnly","writeOnly","discriminator","deprecated","keyword","bindingVersion","SpecificationExtension","extension","T","$ref"],"sources":["../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../node_modules/.pnpm/@asyncapi+parser@3.6.0/node_modules/@asyncapi/parser/esm/spec-types/v3.d.ts","../src/index.ts"],"x_google_ignoreList":[0,1],"mappings":";;;;;;;;;;;;;KA+iBYwD,mBAAAA;AAAAA;;;;;KAaAC,eAAAA;AAAAA,qBAINC,iBAAAA,GACAC,gBAAAA;AAAAA;AAAAA,UAIWD,iBAAAA;EAAAA,CACZtD,GAAAA,WAAcqD,eAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAKFE,gBAAAA,SAAyBtD,KAAAA,CAAMoD,eAAAA;;;;;;;;AC3ahD;;;;KDwbYG,kBAAAA;;;KCvlBA4B,eAAAA;AAAAA,KACAC,UAAAA;AAAAA,KACAC,kBAAAA;AAAAA,UACKC,cAAAA,SAAuBM,uBAAAA;EACpCC,QAAAA,EAAUV,eAAAA;EACVW,EAAAA,GAAKV,UAAAA;EACLW,kBAAAA,GAAqBV,kBAAAA;EACrBW,IAAAA,EAAMT,UAAAA;EACNU,OAAAA,GAAUT,aAAAA;EACVU,QAAAA,GAAWT,cAAAA;EACXU,UAAAA,GAAaT,gBAAAA;EACbU,UAAAA,GAAaT,gBAAAA;AAAAA;AAAAA,UAEAJ,UAAAA,SAAmBK,uBAAAA;EAChCc,KAAAA;EACAC,OAAAA;EACAC,WAAAA;EACAC,cAAAA;EACAC,OAAAA,GAAUT,aAAAA;EACVU,OAAAA,GAAUT,aAAAA;EACVU,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;AAAAA;AAAAA,UAEhCJ,aAAAA,SAAsBT,uBAAAA;EACnCsB,IAAAA;EACAC,GAAAA;EACAC,KAAAA;AAAAA;AAAAA,UAEad,aAAAA,SAAsBV,uBAAAA;EACnCsB,IAAAA;EACAC,GAAAA;AAAAA;AAAAA,KAEQ3B,aAAAA,GAAgB8B,MAAAA,SAAeD,YAAAA,GAAeZ,eAAAA;AAAAA,UACzCY,YAAAA,SAAqBzB,uBAAAA;EAClC+B,IAAAA;EACAC,QAAAA;EACAC,QAAAA;EACAC,eAAAA;EACAlB,WAAAA;EACAmB,SAAAA,GAAYT,MAAAA,SAAeC,oBAAAA,GAAuBd,eAAAA;EAClDuB,QAAAA,GAAWP,KAAAA,CAAMD,oBAAAA,GAAuBf,eAAAA;EACxCO,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;EAC7CwB,QAAAA,GAAWP,oBAAAA,GAAuBjB,eAAAA;AAAAA;AAAAA,UAErBc,oBAAAA,SAA6B3B,uBAAAA;EAC1CsC,IAAAA,GAAOT,KAAAA;EACPU,OAAAA;EACAvB,WAAAA;EACAwB,QAAAA,GAAWX,KAAAA;AAAAA;AAAAA,UAEEC,oBAAAA,SAA6B9B,uBAAAA;EAC1C0C,IAAAA,GAAOD,OAAAA;EACPE,EAAAA,GAAKF,OAAAA;EACLG,KAAAA,GAAQH,OAAAA;EACRI,UAAAA,GAAaJ,OAAAA;EACbK,IAAAA,GAAOL,OAAAA;EACPM,KAAAA,GAAQN,OAAAA;EACRO,IAAAA,GAAOP,OAAAA;EACPQ,KAAAA,GAAQR,OAAAA;EACRS,IAAAA,GAAOT,OAAAA;EACPU,GAAAA,GAAMV,OAAAA;EACNW,GAAAA,GAAMX,OAAAA;EACNY,GAAAA,GAAMZ,OAAAA;EACNa,KAAAA,GAAQb,OAAAA;EACRc,KAAAA,GAAQd,OAAAA;EACRe,OAAAA,GAAUf,OAAAA;EACVgB,KAAAA,GAAQhB,OAAAA;EACRiB,YAAAA,GAAejB,OAAAA;AAAAA;AAAAA,KAEP5C,cAAAA,GAAiB6B,MAAAA,SAAeiC,aAAAA,GAAgB9C,eAAAA;AAAAA,UAC3C8C,aAAAA,SAAsB3D,uBAAAA;EACnC+D,OAAAA;EACAC,QAAAA,GAAWJ,cAAAA;EACX9C,KAAAA;EACAmD,OAAAA;EACAjD,WAAAA;EACAX,OAAAA,GAAUwB,KAAAA,CAAMJ,YAAAA,GAAeZ,eAAAA;EAC/BqD,UAAAA,GAAaL,gBAAAA;EACbzC,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;EAC7CwB,QAAAA,GAAWyB,qBAAAA,GAAwBjD,eAAAA;AAAAA;AAAAA,UAEtBiD,qBAAAA,SAA8B9D,uBAAAA;EAC3C0C,IAAAA,GAAOD,OAAAA;EACPE,EAAAA,GAAKF,OAAAA;EACLG,KAAAA,GAAQH,OAAAA;EACRI,UAAAA,GAAaJ,OAAAA;EACbK,IAAAA,GAAOL,OAAAA;EACPM,KAAAA,GAAQN,OAAAA;EACRO,IAAAA,GAAOP,OAAAA;EACPQ,KAAAA,GAAQR,OAAAA;EACRS,IAAAA,GAAOT,OAAAA;EACPU,GAAAA,GAAMV,OAAAA;EACNW,GAAAA,GAAMX,OAAAA;EACNY,GAAAA,GAAMZ,OAAAA;EACNa,KAAAA,GAAQb,OAAAA;EACRc,KAAAA,GAAQd,OAAAA;EACRe,OAAAA,GAAUf,OAAAA;EACVgB,KAAAA,GAAQhB,OAAAA;EACRiB,YAAAA,GAAejB,OAAAA;AAAAA;AAAAA,KAEP3C,gBAAAA,GAAmB4B,MAAAA,SAAeyC,eAAAA,GAAkBtD,eAAAA;AAAAA,UAC/CsD,eAAAA,SAAwBnE,uBAAAA;EACrCwE,MAAAA;EACAC,OAAAA,EAASd,aAAAA,GAAgB9C,eAAAA;EACzBmD,QAAAA,GAAWnC,KAAAA,CAAMuC,aAAAA,GAAgBvD,eAAAA;EACjC6D,KAAAA,GAAQL,oBAAAA,GAAuBxD,eAAAA;EAC/BC,KAAAA;EACAmD,OAAAA;EACAjD,WAAAA;EACAoB,QAAAA,GAAWP,KAAAA,CAAMD,oBAAAA,GAAuBf,eAAAA;EACxCO,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;EAC7CwB,QAAAA,GAAWiC,uBAAAA,GAA0BzD,eAAAA;EACrC8D,MAAAA,GAAS9C,KAAAA,CAAM0C,oBAAAA,GAAuB1D,eAAAA;AAAAA;AAAAA,UAEzB0D,oBAAAA,SAA6BvE,uBAAAA;EAC1Cc,KAAAA;EACAmD,OAAAA;EACAjD,WAAAA;EACAoB,QAAAA,GAAWP,KAAAA,CAAMD,oBAAAA,GAAuBf,eAAAA;EACxCO,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;EAC7CwB,QAAAA,GAAWiC,uBAAAA,GAA0BzD,eAAAA;AAAAA;AAAAA,UAExBwD,oBAAAA,SAA6BrE,uBAAAA;EAC1CyE,OAAAA,GAAUd,aAAAA,GAAgB9C,eAAAA;EAC1BmD,QAAAA,IAAYI,aAAAA,GAAgBvD,eAAAA;EAC5BkD,OAAAA,GAAUa,2BAAAA,GAA8B/D,eAAAA;AAAAA;AAAAA,UAE3B+D,2BAAAA,SAAoC5E,uBAAAA;EACjD6E,QAAAA;EACA7D,WAAAA;AAAAA;AAAAA,UAEasD,uBAAAA,SAAgCtE,uBAAAA;EAC7C0C,IAAAA,GAAOD,OAAAA;EACPE,EAAAA,GAAKF,OAAAA;EACLG,KAAAA,GAAQH,OAAAA;EACRI,UAAAA,GAAaJ,OAAAA;EACbK,IAAAA,GAAOL,OAAAA;EACPM,KAAAA,GAAQN,OAAAA;EACRO,IAAAA,GAAOP,OAAAA;EACPQ,KAAAA,GAAQR,OAAAA;EACRS,IAAAA,GAAOT,OAAAA;EACPU,GAAAA,GAAMV,OAAAA;EACNW,GAAAA,GAAMX,OAAAA;EACNY,GAAAA,GAAMZ,OAAAA;EACNa,KAAAA,GAAQb,OAAAA;EACRc,KAAAA,GAAQd,OAAAA;EACRe,OAAAA,GAAUf,OAAAA;EACVgB,KAAAA,GAAQhB,OAAAA;EACRiB,YAAAA,GAAejB,OAAAA;AAAAA;AAAAA,KAEPmB,cAAAA,GAAiBlC,MAAAA,SAAe0C,aAAAA,GAAgBvD,eAAAA;AAAAA,UAC3CuD,aAAAA,SAAsBU,kBAAAA,EAAoB9E,uBAAAA;EACvD+E,OAAAA;EACAJ,MAAAA,GAAS9C,KAAAA,CAAMiD,kBAAAA,GAAqBjE,eAAAA;AAAAA;AAAAA,UAEvBiE,kBAAAA,SAA2B9E,uBAAAA;EACxCoF,OAAAA,GAAUJ,uBAAAA;EACVK,aAAAA,GAAgBJ,mBAAAA,GAAsBpE,eAAAA;EACtCyE,WAAAA;EACAhE,IAAAA;EACAR,KAAAA;EACAmD,OAAAA;EACAjD,WAAAA;EACAI,IAAAA,GAAOT,UAAAA;EACPU,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;EAC7CwB,QAAAA,GAAW6C,qBAAAA,GAAwBrE,eAAAA;EACnC2B,QAAAA,GAAWX,KAAAA,CAAMsD,oBAAAA;AAAAA;AAAAA,UAEJA,oBAAAA,SAA6BnF,uBAAAA;EAC1CsB,IAAAA;EACA2C,OAAAA;EACAmB,OAAAA,GAAU1D,MAAAA;EACVqD,OAAAA;AAAAA;AAAAA,UAEaG,qBAAAA,SAA8BlF,uBAAAA;EAC3C0C,IAAAA,GAAOD,OAAAA;EACPE,EAAAA,GAAKF,OAAAA;EACLG,KAAAA,GAAQH,OAAAA;EACRI,UAAAA,GAAaJ,OAAAA;EACbK,IAAAA,GAAOL,OAAAA;EACPM,KAAAA,GAAQN,OAAAA;EACRO,IAAAA,GAAOP,OAAAA;EACPQ,KAAAA,GAAQR,OAAAA;EACRS,IAAAA,GAAOT,OAAAA;EACPU,GAAAA,GAAMV,OAAAA;EACNW,GAAAA,GAAMX,OAAAA;EACNY,GAAAA,GAAMZ,OAAAA;EACNa,KAAAA,GAAQb,OAAAA;EACRc,KAAAA,GAAQd,OAAAA;EACRe,OAAAA,GAAUf,OAAAA;EACVgB,KAAAA,GAAQhB,OAAAA;EACRiB,YAAAA,GAAejB,OAAAA;AAAAA;AAAAA,KAEPoB,gBAAAA,GAAmBnC,MAAAA,SAAe6D,eAAAA,GAAkB1E,eAAAA;AAAAA,UAC/C0E,eAAAA,SAAwBvF,uBAAAA;EACrCgB,WAAAA;EACAsB,IAAAA;EACAC,OAAAA;EACAC,QAAAA;EACAqC,QAAAA;AAAAA;AAAAA,KAEQlE,UAAAA,GAAakB,KAAAA,CAAM2D,SAAAA,GAAY3E,eAAAA;AAAAA,UAC1B2E,SAAAA,SAAkBxF,uBAAAA;EAC/BsB,IAAAA;EACAN,WAAAA;EACAK,YAAAA,GAAeT,2BAAAA,GAA8BC,eAAAA;AAAAA;AAAAA,UAEhCD,2BAAAA,SAAoCZ,uBAAAA;EACjDuB,GAAAA;EACAP,WAAAA;AAAAA;AAAAA,UAEajB,gBAAAA,SAAyBC,uBAAAA;EACtCK,OAAAA,GAAUqB,MAAAA,SAAeD,YAAAA,GAAeZ,eAAAA;EACxCP,QAAAA,GAAWoB,MAAAA,SAAeiC,aAAAA,GAAgB9C,eAAAA;EAC1CN,UAAAA,GAAamB,MAAAA,SAAeyC,eAAAA,GAAkBtD,eAAAA;EAC9CmD,QAAAA,GAAWtC,MAAAA,SAAe0C,aAAAA,GAAgBvD,eAAAA;EAC1C6E,OAAAA,GAAUhE,MAAAA,SAAe+D,YAAAA,GAAe5E,eAAAA;EACxC8E,eAAAA,GAAkBjE,MAAAA,SAAeE,oBAAAA,GAAuBf,eAAAA;EACxD+E,eAAAA,GAAkBlE,MAAAA,SAAeC,oBAAAA,GAAuBd,eAAAA;EACxDqD,UAAAA,GAAaxC,MAAAA,SAAe6D,eAAAA,GAAkB1E,eAAAA;EAC9CgF,OAAAA,GAAUnE,MAAAA,SAAe2C,oBAAAA,GAAuBxD,eAAAA;EAChDiF,cAAAA,GAAiBpE,MAAAA,SAAekD,2BAAAA,GAA8B/D,eAAAA;EAC9DkF,cAAAA,GAAiBrE,MAAAA,SAAeuD,mBAAAA,GAAsBpE,eAAAA;EACtDmF,eAAAA,GAAkBtE,MAAAA,SAAe6C,oBAAAA,GAAuB1D,eAAAA;EACxDoF,aAAAA,GAAgBvE,MAAAA,SAAeoD,kBAAAA,GAAqBjE,eAAAA;EACpDO,IAAAA,GAAOM,MAAAA,SAAe8D,SAAAA,GAAY3E,eAAAA;EAClCQ,YAAAA,GAAeK,MAAAA,SAAed,2BAAAA,GAA8BC,eAAAA;EAC5DqF,cAAAA,GAAiBxE,MAAAA,SAAeI,oBAAAA,GAAuBjB,eAAAA;EACvDsF,eAAAA,GAAkBzE,MAAAA,SAAeoC,qBAAAA,GAAwBjD,eAAAA;EACzDuF,iBAAAA,GAAoB1E,MAAAA,SAAe4C,uBAAAA,GAA0BzD,eAAAA;EAC7DwF,eAAAA,GAAkB3E,MAAAA,SAAewD,qBAAAA,GAAwBrE,eAAAA;AAAAA;AAAAA,UAE5Ce,oBAAAA,SAA6B5B,uBAAAA;EAC1CwG,IAAAA,EAAMF,kBAAAA;EACNtF,WAAAA;EACAM,IAAAA;EACAmF,EAAAA;EACAC,MAAAA;EACAC,YAAAA;EACAC,KAAAA,GAAQL,gBAAAA;EACRM,gBAAAA;EACAC,MAAAA;AAAAA;AAAAA,KAEQR,kBAAAA;AAAAA,UAoDKC,gBAAAA,SAAyBvG,uBAAAA;EACtCkI,QAAAA,GAAWJ,uBAAAA;EACXK,QAAAA,GAAWJ,uBAAAA;EACXK,iBAAAA,GAAoBJ,gCAAAA;EACpBK,iBAAAA,GAAoBJ,gCAAAA;AAAAA;AAAAA,UAGPM,mBAAAA,SAA4BvI,uBAAAA;EACzCwI,UAAAA;EACAC,eAAAA,EAAiB/G,MAAAA;AAAAA;AAAAA,UAEJoG,uBAAAA,SAAgCS,mBAAAA,EAAqBvI,uBAAAA;EAClE0I,gBAAAA;AAAAA;AAAAA,UAEaX,uBAAAA,SAAgCQ,mBAAAA,EAAqBvI,uBAAAA;EAClE2I,QAAAA;AAAAA;AAAAA,UAEaX,gCAAAA,SAAyCO,mBAAAA,EAAqBvI,uBAAAA;EAC3E2I,QAAAA;AAAAA;AAAAA,UAEaV,gCAAAA,SAAyCM,mBAAAA,EAAqBvI,uBAAAA;EAC3E0I,gBAAAA;EACAC,QAAAA;AAAAA;AAAAA,KAEQlD,YAAAA,GAAemD,oBAAAA,GAAuB/H,eAAAA;AAAAA,KACtC+H,oBAAAA,GAAuBC,wBAAAA;AAAAA,KACvBC,iBAAAA;EACRC,MAAAA,EAAQH,oBAAAA;EACRI,YAAAA;AAAAA;AAAAA,KAEQhE,uBAAAA,GAA0B4D,oBAAAA,GAAuBE,iBAAAA;AAAAA,UAC5CD,wBAAAA,SAAiC7I,uBAAAA;EAC9CiJ,GAAAA;EACAC,OAAAA,GAAU9J,kBAAAA;EACV+J,QAAAA;EACA3C,IAAAA,GAAOnH,mBAAAA,GAAsBA,mBAAAA;EAC7BiD,IAAAA,GAAOhD,eAAAA;EACP8J,KAAAA,GAAQ9J,eAAAA;EACR+J,UAAAA;EACAC,OAAAA;EACAC,gBAAAA;EACAC,OAAAA;EACAC,gBAAAA;EACAC,SAAAA;EACAC,SAAAA;EACAC,OAAAA;EACAC,KAAAA,GAAQjB,oBAAAA,GAAuBA,oBAAAA;EAC/BkB,eAAAA,GAAkBlB,oBAAAA;EAClBmB,QAAAA;EACAC,QAAAA;EACAC,WAAAA;EACAC,QAAAA,GAAWtB,oBAAAA;EACXuB,aAAAA;EACAC,aAAAA;EACAC,QAAAA;EACAC,UAAAA;IAAAA,CACKC,GAAAA,WAAc3B,oBAAAA;EAAAA;EAEnB4B,iBAAAA;IAAAA,CACKD,GAAAA,WAAc3B,oBAAAA;EAAAA;EAEnB6B,oBAAAA,GAAuB7B,oBAAAA;EACvB8B,YAAAA;IAAAA,CACKH,GAAAA,WAAc3B,oBAAAA;EAAAA;EAEnB+B,aAAAA,GAAgB/B,oBAAAA;EAChBgC,EAAAA,GAAKhC,oBAAAA;EACLiC,IAAAA,GAAOjC,oBAAAA;EACPkC,IAAAA,GAAOlC,oBAAAA;EACPmC,KAAAA,GAAQnC,oBAAAA;EACRoC,KAAAA,GAAQpC,oBAAAA;EACRqC,KAAAA,GAAQrC,oBAAAA;EACRsC,GAAAA,GAAMtC,oBAAAA;EACNuC,MAAAA;EACAC,gBAAAA;EACAC,eAAAA;EACAC,WAAAA;IAAAA,CACKf,GAAAA,WAAc3B,oBAAAA;EAAAA;EAEnB9H,KAAAA;EACAE,WAAAA;EACAuB,OAAAA,GAAUjD,eAAAA;EACViM,QAAAA;EACAC,SAAAA;EACAhJ,QAAAA,GAAWX,KAAAA,CAAMvC,eAAAA;EACjBmM,aAAAA;EACApK,YAAAA,GAAeT,2BAAAA;EACf8K,UAAAA;EAAAA,CACCC,OAAAA;AAAAA;AAAAA,UAEYlJ,OAAAA;EACbmJ,cAAAA;AAAAA;AAAAA,UAEa5L,uBAAAA;EAAAA,CACZ8L,SAAAA,kBAA2BD,sBAAAA;AAAAA;AAAAA,KAEpBA,sBAAAA,YAAkCE,CAAAA;AAAAA,UAC7BlL,eAAAA;EACbmL,IAAAA;AAAAA;AAAAA,UAEa/G,mBAAAA,SAA4BjF,uBAAAA;EACzC6E,QAAAA;EACA7D,WAAAA;AAAAA;;;;AD6JJ;;;;;AAaA;;;;;AASA;;KEriBY,wBAAA;EFsiBP7G;;AAKL;;EEtiBE,gBAAA,GAAmB,0BAAA;EFsiBqBC;;AAa1C;EE/iBE,MAAA;IAAW,IAAA,GAAO,OAAA;EAAA;AAAA;;;;ADxCpB;KC+CY,gCAAA,GAAmC,IAAA,CAAK,cAAA,YAClD,OAAA,CAAQ,IAAA,CAAK,cAAA;;;;AD/Cf;;;;;AACA;;;;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA;;cCqFa,iBAAA;EAAA,iBACM,UAAA;EAAA,iBACA,MAAA;EDhFRuG;;;;;cCuFG,OAAA,GAAS,wBAAA;ED9FaX;;;;;;;;;;;;;;;;AAUpC;;;;;;;;;;AAKA;;ECgHQ,QAAA,CACJ,QAAA,EAAU,kBAAA,EACV,OAAA,EAAS,gCAAA,GACR,OAAA,CAAQ,cAAA;EDnHiD;;;EAAA,QC0Q9C,cAAA;EDxQT;;AAEP;EAFO,QC0SG,cAAA;;;;UA+CA,iBAAA;EDvVwB;;;EAAA,QCmXxB,eAAA;EDnXgDa;;;EAAAA,QCiYhD,YAAA;EDhYmB;;;EAAA,QC+YnB,gBAAA;EDzYMa;;;EAAAA,QC6ZA,aAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result","JSONSchema7Version","JSONSchema7TypeName","JSONSchema7Type","AsyncAPIVersion","Identifier","DefaultContentType","AsyncAPIObject","InfoObject","ServersObject","ChannelsObject","OperationsObject","ComponentsObject","SpecificationExtensions","asyncapi","id","defaultContentType","info","servers","channels","operations","components","ContactObject","LicenseObject","TagsObject","ExternalDocumentationObject","ReferenceObject","title","version","description","termsOfService","contact","license","tags","externalDocs","name","url","email","ServerObject","Record","ServerVariableObject","SecuritySchemeObject","Array","ServerBindingsObject","host","protocol","pathname","protocolVersion","variables","security","bindings","enum","default","examples","Binding","http","ws","kafka","anypointmq","amqp","amqp1","mqtt","mqtt5","nats","jms","sns","sqs","stomp","redis","mercure","ibmmq","googlepubsub","ChannelObject","MessagesObject","ParametersObject","ChannelBindingsObject","address","messages","summary","parameters","OperationObject","MessageObject","OperationReplyObject","OperationBindingsObject","OperationTraitObject","action","channel","reply","traits","OperationReplyAddressObject","location","MessageTraitObject","payload","MultiFormatSchemaObject","CorrelationIDObject","MessageBindingsObject","MessageExampleObject","headers","correlationId","contentType","ParameterObject","TagObject","SchemaObject","schemas","securitySchemes","serverVariables","replies","replyAddresses","correlationIds","operationTraits","messageTraits","serverBindings","channelBindings","operationBindings","messageBindings","SecuritySchemeType","OAuthFlowsObject","type","in","scheme","bearerFormat","flows","openIdConnectUrl","scopes","SecuritySchemaLocation","SecuritySchemeObjectBase","SecuritySchemeObjectUserPassword","SecuritySchemeObjectApiKey","SecuritySchemeObjectX509","SecuritySchemeObjectSymetricEncryption","SecuritySchemeObjectAsymetricEncryption","SecuritySchemeObjectHttpApiKey","SecuritySchemeObjectHttp","SecuritySchemeObjectOauth2","SecuritySchemeObjectOpenIdConnect","SecuritySchemeObjectPlain","SecuritySchemeObjectScramSha256","SecuritySchemeObjectScramSha512","SecuritySchemeObjectGssapi","OAuthFlowObjectImplicit","OAuthFlowObjectPassword","OAuthFlowObjectClientCredentials","OAuthFlowObjectAuthorizationCode","implicit","password","clientCredentials","authorizationCode","OAuthFlowObject","OAuthFlowObjectBase","refreshUrl","availableScopes","authorizationUrl","tokenUrl","AsyncAPISchemaObject","AsyncAPISchemaDefinition","MultiFormatObject","schema","schemaFormat","$id","$schema","$comment","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","items","additionalItems","maxItems","minItems","uniqueItems","contains","maxProperties","minProperties","required","properties","key","patternProperties","additionalProperties","dependencies","propertyNames","if","then","else","allOf","anyOf","oneOf","not","format","contentMediaType","contentEncoding","definitions","readOnly","writeOnly","discriminator","deprecated","keyword","bindingVersion","SpecificationExtension","extension","T","$ref"],"sources":["../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../node_modules/.pnpm/@asyncapi+parser@3.6.0/node_modules/@asyncapi/parser/esm/spec-types/v3.d.ts","../src/index.ts"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -51,6 +51,7 @@ import { extractConsumer, extractQueue } from "@amqp-contract/contract";
|
|
|
51
51
|
var AsyncAPIGenerator = class {
|
|
52
52
|
converters;
|
|
53
53
|
logger;
|
|
54
|
+
failOnMissingConverter;
|
|
54
55
|
/**
|
|
55
56
|
* Create a new AsyncAPI generator instance.
|
|
56
57
|
*
|
|
@@ -59,6 +60,7 @@ var AsyncAPIGenerator = class {
|
|
|
59
60
|
constructor(options = {}) {
|
|
60
61
|
this.converters = options.schemaConverters ?? [];
|
|
61
62
|
this.logger = options.logger;
|
|
63
|
+
this.failOnMissingConverter = options.failOnMissingConverter ?? false;
|
|
62
64
|
}
|
|
63
65
|
/**
|
|
64
66
|
* Generate an AsyncAPI 3.0 document from a contract definition.
|
|
@@ -130,7 +132,7 @@ var AsyncAPIGenerator = class {
|
|
|
130
132
|
channelMessages[messageName] = await this.convertMessage(message);
|
|
131
133
|
convertedMessages[messageName] = await this.convertMessage(message);
|
|
132
134
|
}
|
|
133
|
-
const channel = { ...this.exchangeToChannel(exchange) };
|
|
135
|
+
const channel = { ...this.exchangeToChannel(exchange, contract) };
|
|
134
136
|
if (Object.keys(channelMessages).length > 0) channel.messages = channelMessages;
|
|
135
137
|
convertedChannels[exchangeName] = channel;
|
|
136
138
|
}
|
|
@@ -194,9 +196,27 @@ var AsyncAPIGenerator = class {
|
|
|
194
196
|
return result;
|
|
195
197
|
}
|
|
196
198
|
/**
|
|
197
|
-
* Convert a queue definition to AsyncAPI ChannelObject
|
|
199
|
+
* Convert a queue definition to AsyncAPI ChannelObject.
|
|
200
|
+
*
|
|
201
|
+
* The AMQP binding spec doesn't have first-class fields for dead-lettering
|
|
202
|
+
* or retry policy, so we surface them in two places:
|
|
203
|
+
*
|
|
204
|
+
* 1. The `arguments` map carries the canonical RabbitMQ keys
|
|
205
|
+
* (`x-dead-letter-exchange`, `x-dead-letter-routing-key`) — these are
|
|
206
|
+
* what a consumer of the spec would actually use to recreate the queue.
|
|
207
|
+
* 2. The channel description summarises DLX + retry policy in human-readable
|
|
208
|
+
* form so the topology is visible without reading the binding details.
|
|
198
209
|
*/
|
|
199
210
|
queueToChannel(queue, bindings = []) {
|
|
211
|
+
const derivedArgs = {};
|
|
212
|
+
if (queue.deadLetter?.exchange) {
|
|
213
|
+
derivedArgs["x-dead-letter-exchange"] = queue.deadLetter.exchange.name;
|
|
214
|
+
if (queue.deadLetter.routingKey) derivedArgs["x-dead-letter-routing-key"] = queue.deadLetter.routingKey;
|
|
215
|
+
}
|
|
216
|
+
const mergedArgs = {
|
|
217
|
+
...derivedArgs,
|
|
218
|
+
...queue.arguments
|
|
219
|
+
};
|
|
200
220
|
let description = `AMQP Queue: ${queue.name}`;
|
|
201
221
|
if (bindings.length > 0) {
|
|
202
222
|
const bindingDescriptions = bindings.map((binding) => {
|
|
@@ -206,7 +226,24 @@ var AsyncAPIGenerator = class {
|
|
|
206
226
|
}).join(", ");
|
|
207
227
|
description += ` (${bindingDescriptions})`;
|
|
208
228
|
}
|
|
209
|
-
|
|
229
|
+
const effectiveDlx = mergedArgs["x-dead-letter-exchange"];
|
|
230
|
+
if (typeof effectiveDlx === "string" && effectiveDlx.length > 0) {
|
|
231
|
+
description += `. Dead-letters to '${effectiveDlx}'`;
|
|
232
|
+
const effectiveDlxRoutingKey = mergedArgs["x-dead-letter-routing-key"];
|
|
233
|
+
if (typeof effectiveDlxRoutingKey === "string" && effectiveDlxRoutingKey.length > 0) description += ` (routing key '${effectiveDlxRoutingKey}')`;
|
|
234
|
+
description += ".";
|
|
235
|
+
}
|
|
236
|
+
if (queue.retry && queue.retry.mode !== "none") {
|
|
237
|
+
const retry = queue.retry;
|
|
238
|
+
if (retry.mode === "immediate-requeue") description += ` Retry: immediate-requeue, max ${retry.maxRetries} attempts.`;
|
|
239
|
+
else if (retry.mode === "ttl-backoff") {
|
|
240
|
+
const initial = retry.initialDelayMs;
|
|
241
|
+
description += ` Retry: ttl-backoff, max ${retry.maxRetries} attempts`;
|
|
242
|
+
if (initial !== void 0) description += `, initial delay ${initial}ms`;
|
|
243
|
+
description += ".";
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const result = {
|
|
210
247
|
address: queue.name,
|
|
211
248
|
title: queue.name,
|
|
212
249
|
description,
|
|
@@ -219,21 +256,56 @@ var AsyncAPIGenerator = class {
|
|
|
219
256
|
...queue.exclusive !== void 0 && { exclusive: queue.exclusive },
|
|
220
257
|
...queue.autoDelete !== void 0 && { autoDelete: queue.autoDelete },
|
|
221
258
|
...queue.maxPriority !== void 0 && { maxPriority: queue.maxPriority },
|
|
222
|
-
...
|
|
259
|
+
...Object.keys(mergedArgs).length > 0 ? { arguments: mergedArgs } : {},
|
|
223
260
|
vhost: "/"
|
|
224
261
|
},
|
|
225
262
|
bindingVersion: "0.3.0"
|
|
226
263
|
} }
|
|
227
264
|
};
|
|
265
|
+
if (queue.retry && queue.retry.mode !== "none") result["x-amqp-retry"] = {
|
|
266
|
+
mode: queue.retry.mode,
|
|
267
|
+
..."maxRetries" in queue.retry && queue.retry.maxRetries !== void 0 ? { maxRetries: queue.retry.maxRetries } : {},
|
|
268
|
+
...queue.retry.mode === "ttl-backoff" ? {
|
|
269
|
+
...queue.retry.initialDelayMs !== void 0 ? { initialDelayMs: queue.retry.initialDelayMs } : {},
|
|
270
|
+
...queue.retry.maxDelayMs !== void 0 ? { maxDelayMs: queue.retry.maxDelayMs } : {},
|
|
271
|
+
...queue.retry.backoffMultiplier !== void 0 ? { backoffMultiplier: queue.retry.backoffMultiplier } : {},
|
|
272
|
+
...queue.retry.jitter !== void 0 ? { jitter: queue.retry.jitter } : {}
|
|
273
|
+
} : {}
|
|
274
|
+
};
|
|
275
|
+
return result;
|
|
228
276
|
}
|
|
229
277
|
/**
|
|
230
|
-
* Convert an exchange definition to AsyncAPI ChannelObject
|
|
278
|
+
* Convert an exchange definition to AsyncAPI ChannelObject.
|
|
279
|
+
*
|
|
280
|
+
* Exchange-to-exchange bindings — used for bridge exchanges, fanout
|
|
281
|
+
* fan-in/out, and other cross-domain routing — are surfaced both as a
|
|
282
|
+
* line in the description and via the non-standard `x-amqp-exchange-bindings`
|
|
283
|
+
* extension so tooling can recreate the topology.
|
|
231
284
|
*/
|
|
232
|
-
exchangeToChannel(exchange) {
|
|
233
|
-
|
|
285
|
+
exchangeToChannel(exchange, contract) {
|
|
286
|
+
const sourceBindings = this.getExchangeBindingsBySource(exchange, contract);
|
|
287
|
+
const destinationBindings = this.getExchangeBindingsByDestination(exchange, contract);
|
|
288
|
+
let description = `AMQP Exchange: ${exchange.name} (${exchange.type})`;
|
|
289
|
+
if (sourceBindings.length > 0) {
|
|
290
|
+
const summaries = sourceBindings.map((binding) => {
|
|
291
|
+
const target = binding.destination.name;
|
|
292
|
+
const routingKey = "routingKey" in binding ? binding.routingKey : void 0;
|
|
293
|
+
return routingKey ? `forwards to '${target}' (routing key '${routingKey}')` : `forwards to '${target}'`;
|
|
294
|
+
}).join(", ");
|
|
295
|
+
description += `. ${summaries}.`;
|
|
296
|
+
}
|
|
297
|
+
if (destinationBindings.length > 0) {
|
|
298
|
+
const summaries = destinationBindings.map((binding) => {
|
|
299
|
+
const source = binding.source.name;
|
|
300
|
+
const routingKey = "routingKey" in binding ? binding.routingKey : void 0;
|
|
301
|
+
return routingKey ? `receives from '${source}' (routing key '${routingKey}')` : `receives from '${source}'`;
|
|
302
|
+
}).join(", ");
|
|
303
|
+
description += ` ${summaries}.`;
|
|
304
|
+
}
|
|
305
|
+
const result = {
|
|
234
306
|
address: exchange.name,
|
|
235
307
|
title: exchange.name,
|
|
236
|
-
description
|
|
308
|
+
description,
|
|
237
309
|
bindings: { amqp: {
|
|
238
310
|
is: "routingKey",
|
|
239
311
|
exchange: {
|
|
@@ -248,6 +320,33 @@ var AsyncAPIGenerator = class {
|
|
|
248
320
|
bindingVersion: "0.3.0"
|
|
249
321
|
} }
|
|
250
322
|
};
|
|
323
|
+
if (sourceBindings.length > 0 || destinationBindings.length > 0) {
|
|
324
|
+
const e2eBindings = {};
|
|
325
|
+
if (sourceBindings.length > 0) e2eBindings["forwardsTo"] = sourceBindings.map((b) => ({
|
|
326
|
+
destination: b.destination.name,
|
|
327
|
+
..."routingKey" in b && b.routingKey !== void 0 ? { routingKey: b.routingKey } : {},
|
|
328
|
+
...b.arguments !== void 0 ? { arguments: b.arguments } : {}
|
|
329
|
+
}));
|
|
330
|
+
if (destinationBindings.length > 0) e2eBindings["receivesFrom"] = destinationBindings.map((b) => ({
|
|
331
|
+
source: b.source.name,
|
|
332
|
+
..."routingKey" in b && b.routingKey !== void 0 ? { routingKey: b.routingKey } : {},
|
|
333
|
+
...b.arguments !== void 0 ? { arguments: b.arguments } : {}
|
|
334
|
+
}));
|
|
335
|
+
result["x-amqp-exchange-bindings"] = e2eBindings;
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
getExchangeBindingsBySource(exchange, contract) {
|
|
340
|
+
return this.exchangeBindings(contract).filter((b) => b.source.name === exchange.name);
|
|
341
|
+
}
|
|
342
|
+
getExchangeBindingsByDestination(exchange, contract) {
|
|
343
|
+
return this.exchangeBindings(contract).filter((b) => b.destination.name === exchange.name);
|
|
344
|
+
}
|
|
345
|
+
exchangeBindings(contract) {
|
|
346
|
+
if (!contract.bindings) return [];
|
|
347
|
+
const result = [];
|
|
348
|
+
for (const binding of Object.values(contract.bindings)) if (binding.type === "exchange") result.push(binding);
|
|
349
|
+
return result;
|
|
251
350
|
}
|
|
252
351
|
/**
|
|
253
352
|
* Get the name/key of an exchange from the contract
|
|
@@ -286,7 +385,9 @@ var AsyncAPIGenerator = class {
|
|
|
286
385
|
const [_required, jsonSchema] = await converter.convert(schema, { strategy });
|
|
287
386
|
return jsonSchema;
|
|
288
387
|
}
|
|
289
|
-
|
|
388
|
+
const message = "No schema converter matched for schema. Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.";
|
|
389
|
+
if (this.failOnMissingConverter) throw new Error(`AsyncAPIGenerator: ${message}`);
|
|
390
|
+
this.logger?.warn(`${message} The generated spec will use a generic { type: "object" } placeholder.`);
|
|
290
391
|
return { type: "object" };
|
|
291
392
|
}
|
|
292
393
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import {\n AsyncAPIObject,\n ChannelObject,\n ChannelsObject,\n MessageObject,\n MessagesObject,\n OperationsObject,\n} from \"@asyncapi/parser/esm/spec-types/v3.js\";\nimport { ConditionalSchemaConverter, JSONSchema } from \"@orpc/openapi\";\nimport type {\n ContractDefinition,\n ExchangeDefinition,\n MessageDefinition,\n QueueBindingDefinition,\n QueueDefinition,\n} from \"@amqp-contract/contract\";\nimport { extractConsumer, extractQueue } from \"@amqp-contract/contract\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\n/**\n * Options for configuring the AsyncAPI generator.\n *\n * @example\n * ```typescript\n * import { AsyncAPIGenerator } from '@amqp-contract/asyncapi';\n * import { zodToJsonSchema } from '@orpc/zod';\n *\n * const generator = new AsyncAPIGenerator({\n * schemaConverters: [zodToJsonSchema]\n * });\n * ```\n */\nexport type AsyncAPIGeneratorOptions = {\n /**\n * Schema converters for transforming validation schemas to JSON Schema.\n * Supports Zod, Valibot, ArkType, and other Standard Schema v1 compatible libraries.\n */\n schemaConverters?: ConditionalSchemaConverter[];\n /**\n * Optional logger for warnings during generation (e.g. unmatched schema converters).\n */\n logger?: { warn: (message: string) => void };\n};\n\n/**\n * Options for generating an AsyncAPI document.\n * These correspond to the top-level AsyncAPI document fields.\n */\nexport type AsyncAPIGeneratorGenerateOptions = Pick<AsyncAPIObject, \"info\"> &\n Partial<Pick<AsyncAPIObject, \"id\" | \"servers\">>;\n\n/**\n * Generator for creating AsyncAPI 3.0 documentation from AMQP contracts.\n *\n * This class converts contract definitions into AsyncAPI 3.0 specification documents,\n * which can be used for API documentation, code generation, and tooling integration.\n *\n * @example\n * ```typescript\n * import { AsyncAPIGenerator } from '@amqp-contract/asyncapi';\n * import { defineExchange, defineMessage, defineContract, definePublisher } from '@amqp-contract/contract';\n * import { zodToJsonSchema } from '@orpc/zod';\n * import { z } from 'zod';\n *\n * const ordersExchange = defineExchange('orders');\n * const orderMessage = defineMessage(z.object({\n * orderId: z.string(),\n * amount: z.number()\n * }));\n *\n * const contract = defineContract({\n * publishers: {\n * orderCreated: definePublisher(ordersExchange, orderMessage, {\n * routingKey: 'order.created'\n * })\n * }\n * });\n *\n * const generator = new AsyncAPIGenerator({\n * schemaConverters: [zodToJsonSchema]\n * });\n *\n * const asyncapi = await generator.generate(contract, {\n * id: 'urn:com:example:order-service',\n * info: {\n * title: 'Order Service API',\n * version: '1.0.0',\n * description: 'Async API for order processing'\n * },\n * servers: {\n * production: {\n * host: 'rabbitmq.example.com',\n * protocol: 'amqp',\n * protocolVersion: '0.9.1'\n * }\n * }\n * });\n * ```\n */\nexport class AsyncAPIGenerator {\n private readonly converters: ConditionalSchemaConverter[];\n private readonly logger?: { warn: (message: string) => void } | undefined;\n\n /**\n * Create a new AsyncAPI generator instance.\n *\n * @param options - Configuration options including schema converters\n */\n constructor(options: AsyncAPIGeneratorOptions = {}) {\n this.converters = options.schemaConverters ?? [];\n this.logger = options.logger;\n }\n\n /**\n * Generate an AsyncAPI 3.0 document from a contract definition.\n *\n * Converts AMQP exchanges, queues, publishers, and consumers into\n * AsyncAPI channels, operations, and messages with proper JSON Schema\n * validation definitions.\n *\n * @param contract - The AMQP contract definition to convert\n * @param options - AsyncAPI document metadata (id, info, servers)\n * @returns Promise resolving to a complete AsyncAPI 3.0 document\n *\n * @example\n * ```typescript\n * const asyncapi = await generator.generate(contract, {\n * id: 'urn:com:example:api',\n * info: {\n * title: 'My API',\n * version: '1.0.0'\n * },\n * servers: {\n * dev: {\n * host: 'localhost:5672',\n * protocol: 'amqp'\n * }\n * }\n * });\n * ```\n */\n async generate(\n contract: ContractDefinition,\n options: AsyncAPIGeneratorGenerateOptions,\n ): Promise<AsyncAPIObject> {\n const convertedChannels: ChannelsObject = {};\n const convertedOperations: OperationsObject = {};\n const convertedMessages: MessagesObject = {};\n\n // First, collect all messages from publishers and consumers\n const publisherMessages = new Map<string, { message: MessageDefinition; channelKey: string }>();\n const consumerMessages = new Map<string, { message: MessageDefinition; channelKey: string }>();\n\n // Collect messages from publishers\n if (contract.publishers) {\n for (const [publisherName, publisher] of Object.entries(contract.publishers)) {\n const channelKey = this.getExchangeName(publisher.exchange, contract);\n publisherMessages.set(publisherName, { message: publisher.message, channelKey });\n }\n }\n\n // Collect messages from consumers\n if (contract.consumers) {\n for (const [consumerName, consumerEntry] of Object.entries(contract.consumers)) {\n const consumer = extractConsumer(consumerEntry);\n const queue = extractQueue(consumer.queue);\n const channelKey = this.getQueueName(queue, contract);\n consumerMessages.set(consumerName, { message: consumer.message, channelKey });\n }\n }\n\n // Generate channels from queues with their messages\n if (contract.queues) {\n for (const [queueName, queueEntry] of Object.entries(contract.queues)) {\n const queue = extractQueue(queueEntry);\n const channelMessages: MessagesObject = {};\n\n // Add messages from consumers that reference this queue\n for (const [consumerName, { message, channelKey }] of consumerMessages) {\n if (channelKey === queueName) {\n const messageName = `${consumerName}Message`;\n channelMessages[messageName] = await this.convertMessage(message);\n convertedMessages[messageName] = await this.convertMessage(message);\n }\n }\n\n // Find bindings for this queue\n const queueBindings = this.getQueueBindings(queue, contract);\n const channel: ChannelObject = {\n ...this.queueToChannel(queue, queueBindings),\n };\n\n if (Object.keys(channelMessages).length > 0) {\n channel.messages = channelMessages;\n }\n\n convertedChannels[queueName] = channel;\n }\n }\n\n // Generate channels from exchanges with their messages\n if (contract.exchanges) {\n for (const [exchangeName, exchange] of Object.entries(contract.exchanges)) {\n const channelMessages: MessagesObject = {};\n\n // Add messages from publishers that reference this exchange\n for (const [publisherName, { message, channelKey }] of publisherMessages) {\n if (channelKey === exchangeName) {\n const messageName = `${publisherName}Message`;\n channelMessages[messageName] = await this.convertMessage(message);\n convertedMessages[messageName] = await this.convertMessage(message);\n }\n }\n\n const channel: ChannelObject = {\n ...this.exchangeToChannel(exchange),\n };\n\n if (Object.keys(channelMessages).length > 0) {\n channel.messages = channelMessages;\n }\n\n convertedChannels[exchangeName] = channel;\n }\n }\n\n // Generate publish operations from publishers\n if (contract.publishers) {\n for (const [publisherName, publisher] of Object.entries(contract.publishers)) {\n const exchangeName = this.getExchangeName(publisher.exchange, contract);\n const messageName = `${publisherName}Message`;\n\n // Build operation without type assertion\n if (publisher.routingKey) {\n convertedOperations[publisherName] = {\n action: \"send\",\n channel: { $ref: `#/channels/${exchangeName}` },\n messages: [{ $ref: `#/channels/${exchangeName}/messages/${messageName}` }],\n summary: `Publish to ${publisher.exchange.name}`,\n description: `Routing key: ${publisher.routingKey}`,\n bindings: {\n amqp: {\n cc: [publisher.routingKey],\n deliveryMode: 2, // Persistent by default\n bindingVersion: \"0.3.0\",\n } as Record<string, unknown>,\n },\n };\n } else {\n convertedOperations[publisherName] = {\n action: \"send\",\n channel: { $ref: `#/channels/${exchangeName}` },\n messages: [{ $ref: `#/channels/${exchangeName}/messages/${messageName}` }],\n summary: `Publish to ${publisher.exchange.name}`,\n };\n }\n }\n }\n\n // Generate receive operations from consumers\n if (contract.consumers) {\n for (const [consumerName, consumerEntry] of Object.entries(contract.consumers)) {\n const consumer = extractConsumer(consumerEntry);\n const queue = extractQueue(consumer.queue);\n const queueName = this.getQueueName(queue, contract);\n const messageName = `${consumerName}Message`;\n\n convertedOperations[consumerName] = {\n action: \"receive\",\n channel: { $ref: `#/channels/${queueName}` },\n messages: [{ $ref: `#/channels/${queueName}/messages/${messageName}` }],\n summary: `Consume from ${queue.name}`,\n bindings: {\n amqp: {\n bindingVersion: \"0.3.0\",\n } as Record<string, unknown>,\n },\n };\n }\n }\n\n return {\n ...options,\n asyncapi: \"3.1.0\",\n channels: convertedChannels,\n operations: convertedOperations,\n components: {\n messages: convertedMessages,\n },\n };\n }\n\n /**\n * Convert a message definition to AsyncAPI MessageObject\n */\n private async convertMessage(message: MessageDefinition): Promise<MessageObject> {\n const payload = message.payload;\n\n // Convert payload schema\n const payloadJsonSchema = await this.convertSchema(payload, \"input\");\n\n // Build result with required properties\n const result: Record<string, unknown> = {\n payload: payloadJsonSchema,\n contentType: \"application/json\",\n };\n\n // Add optional properties only if they exist\n if (message.headers) {\n const headersJsonSchema = await this.convertSchema(message.headers, \"input\");\n if (headersJsonSchema) {\n result[\"headers\"] = headersJsonSchema;\n }\n }\n\n if (message.summary) {\n result[\"summary\"] = message.summary;\n }\n\n if (message.description) {\n result[\"description\"] = message.description;\n }\n\n return result as MessageObject;\n }\n\n /**\n * Convert a queue definition to AsyncAPI ChannelObject\n */\n private queueToChannel(\n queue: QueueDefinition,\n bindings: QueueBindingDefinition[] = [],\n ): ChannelObject {\n // Build description with binding information\n let description = `AMQP Queue: ${queue.name}`;\n if (bindings.length > 0) {\n const bindingDescriptions = bindings\n .map((binding) => {\n const exchangeName = binding.exchange.name;\n const routingKey = \"routingKey\" in binding ? binding.routingKey : undefined;\n return routingKey\n ? `bound to exchange '${exchangeName}' with routing key '${routingKey}'`\n : `bound to exchange '${exchangeName}'`;\n })\n .join(\", \");\n description += ` (${bindingDescriptions})`;\n }\n\n const result: Record<string, unknown> = {\n address: queue.name,\n title: queue.name,\n description,\n bindings: {\n amqp: {\n is: \"queue\",\n queue: {\n name: queue.name,\n type: queue.type,\n durable: queue.durable,\n ...(queue.exclusive !== undefined && { exclusive: queue.exclusive }),\n ...(queue.autoDelete !== undefined && { autoDelete: queue.autoDelete }),\n ...(queue.maxPriority !== undefined && { maxPriority: queue.maxPriority }),\n ...(queue.arguments !== undefined && { arguments: queue.arguments }),\n vhost: \"/\",\n },\n bindingVersion: \"0.3.0\",\n },\n },\n };\n\n return result as ChannelObject;\n }\n\n /**\n * Convert an exchange definition to AsyncAPI ChannelObject\n */\n private exchangeToChannel(exchange: ExchangeDefinition): ChannelObject {\n const result: Record<string, unknown> = {\n address: exchange.name,\n title: exchange.name,\n description: `AMQP Exchange: ${exchange.name} (${exchange.type})`,\n bindings: {\n amqp: {\n is: \"routingKey\",\n exchange: {\n name: exchange.name,\n type: exchange.type,\n durable: exchange.durable,\n ...(exchange.autoDelete !== undefined && { autoDelete: exchange.autoDelete }),\n ...(exchange.internal !== undefined && { internal: exchange.internal }),\n ...(exchange.arguments !== undefined && { arguments: exchange.arguments }),\n vhost: \"/\",\n },\n bindingVersion: \"0.3.0\",\n },\n },\n };\n\n return result as ChannelObject;\n }\n\n /**\n * Get the name/key of an exchange from the contract\n */\n private getExchangeName(exchange: ExchangeDefinition, contract: ContractDefinition): string {\n if (contract.exchanges) {\n for (const [name, ex] of Object.entries(contract.exchanges)) {\n if (ex === exchange || ex.name === exchange.name) {\n return name;\n }\n }\n }\n return exchange.name;\n }\n\n /**\n * Get the name/key of a queue from the contract\n */\n private getQueueName(queue: QueueDefinition, contract: ContractDefinition): string {\n if (contract.queues) {\n for (const [name, qEntry] of Object.entries(contract.queues)) {\n const q = extractQueue(qEntry);\n if (q === queue || q.name === queue.name) {\n return name;\n }\n }\n }\n return queue.name;\n }\n\n /**\n * Get all bindings for a queue from the contract\n */\n private getQueueBindings(\n queue: QueueDefinition,\n contract: ContractDefinition,\n ): QueueBindingDefinition[] {\n const result: QueueBindingDefinition[] = [];\n\n if (contract.bindings) {\n for (const binding of Object.values(contract.bindings)) {\n if (binding.type === \"queue\" && binding.queue.name === queue.name) {\n result.push(binding);\n }\n }\n }\n\n return result;\n }\n\n /**\n * Convert a Standard Schema to JSON Schema using oRPC converters\n */\n private async convertSchema(\n schema: StandardSchemaV1,\n strategy: \"input\" | \"output\",\n ): Promise<JSONSchema> {\n // Try each converter until one matches\n for (const converter of this.converters) {\n const matches = await converter.condition(schema, { strategy });\n if (matches) {\n const [_required, jsonSchema] = await converter.convert(schema, { strategy });\n return jsonSchema;\n }\n }\n\n // No converter matched — the output will contain a generic { type: \"object\" } placeholder.\n this.logger?.warn(\n `No schema converter matched for schema. ` +\n `The generated spec will use a generic { type: \"object\" } placeholder. ` +\n `Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.`,\n );\n return { type: \"object\" };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import {\n AsyncAPIObject,\n ChannelObject,\n ChannelsObject,\n MessageObject,\n MessagesObject,\n OperationsObject,\n} from \"@asyncapi/parser/esm/spec-types/v3.js\";\nimport { ConditionalSchemaConverter, JSONSchema } from \"@orpc/openapi\";\nimport type {\n BindingDefinition,\n ContractDefinition,\n ExchangeBindingDefinition,\n ExchangeDefinition,\n MessageDefinition,\n QueueBindingDefinition,\n QueueDefinition,\n} from \"@amqp-contract/contract\";\nimport { extractConsumer, extractQueue } from \"@amqp-contract/contract\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\n/**\n * Options for configuring the AsyncAPI generator.\n *\n * @example\n * ```typescript\n * import { AsyncAPIGenerator } from '@amqp-contract/asyncapi';\n * import { zodToJsonSchema } from '@orpc/zod';\n *\n * const generator = new AsyncAPIGenerator({\n * schemaConverters: [zodToJsonSchema]\n * });\n * ```\n */\nexport type AsyncAPIGeneratorOptions = {\n /**\n * Schema converters for transforming validation schemas to JSON Schema.\n * Supports Zod, Valibot, ArkType, and other Standard Schema v1 compatible libraries.\n */\n schemaConverters?: ConditionalSchemaConverter[];\n /**\n * Optional logger for warnings during generation (e.g. unmatched schema converters).\n */\n logger?: { warn: (message: string) => void };\n /**\n * If true, the generator throws when a payload schema cannot be converted by\n * any of the configured `schemaConverters` instead of falling back to a\n * generic `{ type: \"object\" }` placeholder. Recommended for CI pipelines\n * that depend on the generated spec being faithful (e.g. for codegen).\n *\n * Defaults to `false` for backwards compatibility.\n */\n failOnMissingConverter?: boolean;\n};\n\n/**\n * Options for generating an AsyncAPI document.\n * These correspond to the top-level AsyncAPI document fields.\n */\nexport type AsyncAPIGeneratorGenerateOptions = Pick<AsyncAPIObject, \"info\"> &\n Partial<Pick<AsyncAPIObject, \"id\" | \"servers\">>;\n\n/**\n * Generator for creating AsyncAPI 3.0 documentation from AMQP contracts.\n *\n * This class converts contract definitions into AsyncAPI 3.0 specification documents,\n * which can be used for API documentation, code generation, and tooling integration.\n *\n * @example\n * ```typescript\n * import { AsyncAPIGenerator } from '@amqp-contract/asyncapi';\n * import { defineExchange, defineMessage, defineContract, definePublisher } from '@amqp-contract/contract';\n * import { zodToJsonSchema } from '@orpc/zod';\n * import { z } from 'zod';\n *\n * const ordersExchange = defineExchange('orders');\n * const orderMessage = defineMessage(z.object({\n * orderId: z.string(),\n * amount: z.number()\n * }));\n *\n * const contract = defineContract({\n * publishers: {\n * orderCreated: definePublisher(ordersExchange, orderMessage, {\n * routingKey: 'order.created'\n * })\n * }\n * });\n *\n * const generator = new AsyncAPIGenerator({\n * schemaConverters: [zodToJsonSchema]\n * });\n *\n * const asyncapi = await generator.generate(contract, {\n * id: 'urn:com:example:order-service',\n * info: {\n * title: 'Order Service API',\n * version: '1.0.0',\n * description: 'Async API for order processing'\n * },\n * servers: {\n * production: {\n * host: 'rabbitmq.example.com',\n * protocol: 'amqp',\n * protocolVersion: '0.9.1'\n * }\n * }\n * });\n * ```\n */\nexport class AsyncAPIGenerator {\n private readonly converters: ConditionalSchemaConverter[];\n private readonly logger?: { warn: (message: string) => void } | undefined;\n private readonly failOnMissingConverter: boolean;\n\n /**\n * Create a new AsyncAPI generator instance.\n *\n * @param options - Configuration options including schema converters\n */\n constructor(options: AsyncAPIGeneratorOptions = {}) {\n this.converters = options.schemaConverters ?? [];\n this.logger = options.logger;\n this.failOnMissingConverter = options.failOnMissingConverter ?? false;\n }\n\n /**\n * Generate an AsyncAPI 3.0 document from a contract definition.\n *\n * Converts AMQP exchanges, queues, publishers, and consumers into\n * AsyncAPI channels, operations, and messages with proper JSON Schema\n * validation definitions.\n *\n * @param contract - The AMQP contract definition to convert\n * @param options - AsyncAPI document metadata (id, info, servers)\n * @returns Promise resolving to a complete AsyncAPI 3.0 document\n *\n * @example\n * ```typescript\n * const asyncapi = await generator.generate(contract, {\n * id: 'urn:com:example:api',\n * info: {\n * title: 'My API',\n * version: '1.0.0'\n * },\n * servers: {\n * dev: {\n * host: 'localhost:5672',\n * protocol: 'amqp'\n * }\n * }\n * });\n * ```\n */\n async generate(\n contract: ContractDefinition,\n options: AsyncAPIGeneratorGenerateOptions,\n ): Promise<AsyncAPIObject> {\n const convertedChannels: ChannelsObject = {};\n const convertedOperations: OperationsObject = {};\n const convertedMessages: MessagesObject = {};\n\n // First, collect all messages from publishers and consumers\n const publisherMessages = new Map<string, { message: MessageDefinition; channelKey: string }>();\n const consumerMessages = new Map<string, { message: MessageDefinition; channelKey: string }>();\n\n // Collect messages from publishers\n if (contract.publishers) {\n for (const [publisherName, publisher] of Object.entries(contract.publishers)) {\n const channelKey = this.getExchangeName(publisher.exchange, contract);\n publisherMessages.set(publisherName, { message: publisher.message, channelKey });\n }\n }\n\n // Collect messages from consumers\n if (contract.consumers) {\n for (const [consumerName, consumerEntry] of Object.entries(contract.consumers)) {\n const consumer = extractConsumer(consumerEntry);\n const queue = extractQueue(consumer.queue);\n const channelKey = this.getQueueName(queue, contract);\n consumerMessages.set(consumerName, { message: consumer.message, channelKey });\n }\n }\n\n // Generate channels from queues with their messages\n if (contract.queues) {\n for (const [queueName, queueEntry] of Object.entries(contract.queues)) {\n const queue = extractQueue(queueEntry);\n const channelMessages: MessagesObject = {};\n\n // Add messages from consumers that reference this queue\n for (const [consumerName, { message, channelKey }] of consumerMessages) {\n if (channelKey === queueName) {\n const messageName = `${consumerName}Message`;\n channelMessages[messageName] = await this.convertMessage(message);\n convertedMessages[messageName] = await this.convertMessage(message);\n }\n }\n\n // Find bindings for this queue\n const queueBindings = this.getQueueBindings(queue, contract);\n const channel: ChannelObject = {\n ...this.queueToChannel(queue, queueBindings),\n };\n\n if (Object.keys(channelMessages).length > 0) {\n channel.messages = channelMessages;\n }\n\n convertedChannels[queueName] = channel;\n }\n }\n\n // Generate channels from exchanges with their messages\n if (contract.exchanges) {\n for (const [exchangeName, exchange] of Object.entries(contract.exchanges)) {\n const channelMessages: MessagesObject = {};\n\n // Add messages from publishers that reference this exchange\n for (const [publisherName, { message, channelKey }] of publisherMessages) {\n if (channelKey === exchangeName) {\n const messageName = `${publisherName}Message`;\n channelMessages[messageName] = await this.convertMessage(message);\n convertedMessages[messageName] = await this.convertMessage(message);\n }\n }\n\n const channel: ChannelObject = {\n ...this.exchangeToChannel(exchange, contract),\n };\n\n if (Object.keys(channelMessages).length > 0) {\n channel.messages = channelMessages;\n }\n\n convertedChannels[exchangeName] = channel;\n }\n }\n\n // Generate publish operations from publishers\n if (contract.publishers) {\n for (const [publisherName, publisher] of Object.entries(contract.publishers)) {\n const exchangeName = this.getExchangeName(publisher.exchange, contract);\n const messageName = `${publisherName}Message`;\n\n // Build operation without type assertion\n if (publisher.routingKey) {\n convertedOperations[publisherName] = {\n action: \"send\",\n channel: { $ref: `#/channels/${exchangeName}` },\n messages: [{ $ref: `#/channels/${exchangeName}/messages/${messageName}` }],\n summary: `Publish to ${publisher.exchange.name}`,\n description: `Routing key: ${publisher.routingKey}`,\n bindings: {\n amqp: {\n cc: [publisher.routingKey],\n deliveryMode: 2, // Persistent by default\n bindingVersion: \"0.3.0\",\n } as Record<string, unknown>,\n },\n };\n } else {\n convertedOperations[publisherName] = {\n action: \"send\",\n channel: { $ref: `#/channels/${exchangeName}` },\n messages: [{ $ref: `#/channels/${exchangeName}/messages/${messageName}` }],\n summary: `Publish to ${publisher.exchange.name}`,\n };\n }\n }\n }\n\n // Generate receive operations from consumers\n if (contract.consumers) {\n for (const [consumerName, consumerEntry] of Object.entries(contract.consumers)) {\n const consumer = extractConsumer(consumerEntry);\n const queue = extractQueue(consumer.queue);\n const queueName = this.getQueueName(queue, contract);\n const messageName = `${consumerName}Message`;\n\n convertedOperations[consumerName] = {\n action: \"receive\",\n channel: { $ref: `#/channels/${queueName}` },\n messages: [{ $ref: `#/channels/${queueName}/messages/${messageName}` }],\n summary: `Consume from ${queue.name}`,\n bindings: {\n amqp: {\n bindingVersion: \"0.3.0\",\n } as Record<string, unknown>,\n },\n };\n }\n }\n\n return {\n ...options,\n asyncapi: \"3.1.0\",\n channels: convertedChannels,\n operations: convertedOperations,\n components: {\n messages: convertedMessages,\n },\n };\n }\n\n /**\n * Convert a message definition to AsyncAPI MessageObject\n */\n private async convertMessage(message: MessageDefinition): Promise<MessageObject> {\n const payload = message.payload;\n\n // Convert payload schema\n const payloadJsonSchema = await this.convertSchema(payload, \"input\");\n\n // Build result with required properties\n const result: Record<string, unknown> = {\n payload: payloadJsonSchema,\n contentType: \"application/json\",\n };\n\n // Add optional properties only if they exist\n if (message.headers) {\n const headersJsonSchema = await this.convertSchema(message.headers, \"input\");\n if (headersJsonSchema) {\n result[\"headers\"] = headersJsonSchema;\n }\n }\n\n if (message.summary) {\n result[\"summary\"] = message.summary;\n }\n\n if (message.description) {\n result[\"description\"] = message.description;\n }\n\n return result as MessageObject;\n }\n\n /**\n * Convert a queue definition to AsyncAPI ChannelObject.\n *\n * The AMQP binding spec doesn't have first-class fields for dead-lettering\n * or retry policy, so we surface them in two places:\n *\n * 1. The `arguments` map carries the canonical RabbitMQ keys\n * (`x-dead-letter-exchange`, `x-dead-letter-routing-key`) — these are\n * what a consumer of the spec would actually use to recreate the queue.\n * 2. The channel description summarises DLX + retry policy in human-readable\n * form so the topology is visible without reading the binding details.\n */\n private queueToChannel(\n queue: QueueDefinition,\n bindings: QueueBindingDefinition[] = [],\n ): ChannelObject {\n // Merge user-provided arguments with derived RabbitMQ args. User\n // arguments win on collision so consumers can override the derived ones\n // if they really need to. The DLX description below is then built from the\n // merged result so the human-readable summary cannot drift from the\n // structured `arguments` if the user overrode them.\n const derivedArgs: Record<string, unknown> = {};\n if (queue.deadLetter?.exchange) {\n derivedArgs[\"x-dead-letter-exchange\"] = queue.deadLetter.exchange.name;\n if (queue.deadLetter.routingKey) {\n derivedArgs[\"x-dead-letter-routing-key\"] = queue.deadLetter.routingKey;\n }\n }\n const mergedArgs = { ...derivedArgs, ...queue.arguments };\n\n let description = `AMQP Queue: ${queue.name}`;\n if (bindings.length > 0) {\n const bindingDescriptions = bindings\n .map((binding) => {\n const exchangeName = binding.exchange.name;\n const routingKey = \"routingKey\" in binding ? binding.routingKey : undefined;\n return routingKey\n ? `bound to exchange '${exchangeName}' with routing key '${routingKey}'`\n : `bound to exchange '${exchangeName}'`;\n })\n .join(\", \");\n description += ` (${bindingDescriptions})`;\n }\n\n const effectiveDlx = mergedArgs[\"x-dead-letter-exchange\"];\n if (typeof effectiveDlx === \"string\" && effectiveDlx.length > 0) {\n description += `. Dead-letters to '${effectiveDlx}'`;\n const effectiveDlxRoutingKey = mergedArgs[\"x-dead-letter-routing-key\"];\n if (typeof effectiveDlxRoutingKey === \"string\" && effectiveDlxRoutingKey.length > 0) {\n description += ` (routing key '${effectiveDlxRoutingKey}')`;\n }\n description += \".\";\n }\n\n if (queue.retry && queue.retry.mode !== \"none\") {\n const retry = queue.retry;\n if (retry.mode === \"immediate-requeue\") {\n description += ` Retry: immediate-requeue, max ${retry.maxRetries} attempts.`;\n } else if (retry.mode === \"ttl-backoff\") {\n const initial = retry.initialDelayMs;\n description += ` Retry: ttl-backoff, max ${retry.maxRetries} attempts`;\n if (initial !== undefined) {\n description += `, initial delay ${initial}ms`;\n }\n description += \".\";\n }\n }\n\n const result: Record<string, unknown> = {\n address: queue.name,\n title: queue.name,\n description,\n bindings: {\n amqp: {\n is: \"queue\",\n queue: {\n name: queue.name,\n type: queue.type,\n durable: queue.durable,\n ...(queue.exclusive !== undefined && { exclusive: queue.exclusive }),\n ...(queue.autoDelete !== undefined && { autoDelete: queue.autoDelete }),\n ...(queue.maxPriority !== undefined && { maxPriority: queue.maxPriority }),\n ...(Object.keys(mergedArgs).length > 0 ? { arguments: mergedArgs } : {}),\n vhost: \"/\",\n },\n bindingVersion: \"0.3.0\",\n },\n },\n };\n\n if (queue.retry && queue.retry.mode !== \"none\") {\n // Spec extension: retry policy is non-standard but useful for tooling\n // that wants to inspect it programmatically. Prefixing with `x-` keeps\n // the spec valid for strict parsers.\n (result as Record<string, unknown>)[\"x-amqp-retry\"] = {\n mode: queue.retry.mode,\n ...(\"maxRetries\" in queue.retry && queue.retry.maxRetries !== undefined\n ? { maxRetries: queue.retry.maxRetries }\n : {}),\n ...(queue.retry.mode === \"ttl-backoff\"\n ? {\n ...(queue.retry.initialDelayMs !== undefined\n ? { initialDelayMs: queue.retry.initialDelayMs }\n : {}),\n ...(queue.retry.maxDelayMs !== undefined\n ? { maxDelayMs: queue.retry.maxDelayMs }\n : {}),\n ...(queue.retry.backoffMultiplier !== undefined\n ? { backoffMultiplier: queue.retry.backoffMultiplier }\n : {}),\n ...(queue.retry.jitter !== undefined ? { jitter: queue.retry.jitter } : {}),\n }\n : {}),\n };\n }\n\n return result as ChannelObject;\n }\n\n /**\n * Convert an exchange definition to AsyncAPI ChannelObject.\n *\n * Exchange-to-exchange bindings — used for bridge exchanges, fanout\n * fan-in/out, and other cross-domain routing — are surfaced both as a\n * line in the description and via the non-standard `x-amqp-exchange-bindings`\n * extension so tooling can recreate the topology.\n */\n private exchangeToChannel(\n exchange: ExchangeDefinition,\n contract: ContractDefinition,\n ): ChannelObject {\n const sourceBindings = this.getExchangeBindingsBySource(exchange, contract);\n const destinationBindings = this.getExchangeBindingsByDestination(exchange, contract);\n\n let description = `AMQP Exchange: ${exchange.name} (${exchange.type})`;\n if (sourceBindings.length > 0) {\n const summaries = sourceBindings\n .map((binding) => {\n const target = binding.destination.name;\n const routingKey = \"routingKey\" in binding ? binding.routingKey : undefined;\n return routingKey\n ? `forwards to '${target}' (routing key '${routingKey}')`\n : `forwards to '${target}'`;\n })\n .join(\", \");\n description += `. ${summaries}.`;\n }\n if (destinationBindings.length > 0) {\n const summaries = destinationBindings\n .map((binding) => {\n const source = binding.source.name;\n const routingKey = \"routingKey\" in binding ? binding.routingKey : undefined;\n return routingKey\n ? `receives from '${source}' (routing key '${routingKey}')`\n : `receives from '${source}'`;\n })\n .join(\", \");\n description += ` ${summaries}.`;\n }\n\n const result: Record<string, unknown> = {\n address: exchange.name,\n title: exchange.name,\n description,\n bindings: {\n amqp: {\n is: \"routingKey\",\n exchange: {\n name: exchange.name,\n type: exchange.type,\n durable: exchange.durable,\n ...(exchange.autoDelete !== undefined && { autoDelete: exchange.autoDelete }),\n ...(exchange.internal !== undefined && { internal: exchange.internal }),\n ...(exchange.arguments !== undefined && { arguments: exchange.arguments }),\n vhost: \"/\",\n },\n bindingVersion: \"0.3.0\",\n },\n },\n };\n\n if (sourceBindings.length > 0 || destinationBindings.length > 0) {\n const e2eBindings: Record<string, unknown> = {};\n if (sourceBindings.length > 0) {\n e2eBindings[\"forwardsTo\"] = sourceBindings.map((b) => ({\n destination: b.destination.name,\n ...(\"routingKey\" in b && b.routingKey !== undefined ? { routingKey: b.routingKey } : {}),\n ...(b.arguments !== undefined ? { arguments: b.arguments } : {}),\n }));\n }\n if (destinationBindings.length > 0) {\n e2eBindings[\"receivesFrom\"] = destinationBindings.map((b) => ({\n source: b.source.name,\n ...(\"routingKey\" in b && b.routingKey !== undefined ? { routingKey: b.routingKey } : {}),\n ...(b.arguments !== undefined ? { arguments: b.arguments } : {}),\n }));\n }\n (result as Record<string, unknown>)[\"x-amqp-exchange-bindings\"] = e2eBindings;\n }\n\n return result as ChannelObject;\n }\n\n private getExchangeBindingsBySource(\n exchange: ExchangeDefinition,\n contract: ContractDefinition,\n ): ExchangeBindingDefinition[] {\n return this.exchangeBindings(contract).filter((b) => b.source.name === exchange.name);\n }\n\n private getExchangeBindingsByDestination(\n exchange: ExchangeDefinition,\n contract: ContractDefinition,\n ): ExchangeBindingDefinition[] {\n return this.exchangeBindings(contract).filter((b) => b.destination.name === exchange.name);\n }\n\n private exchangeBindings(contract: ContractDefinition): ExchangeBindingDefinition[] {\n if (!contract.bindings) return [];\n const result: ExchangeBindingDefinition[] = [];\n for (const binding of Object.values(contract.bindings) as BindingDefinition[]) {\n if (binding.type === \"exchange\") {\n result.push(binding);\n }\n }\n return result;\n }\n\n /**\n * Get the name/key of an exchange from the contract\n */\n private getExchangeName(exchange: ExchangeDefinition, contract: ContractDefinition): string {\n if (contract.exchanges) {\n for (const [name, ex] of Object.entries(contract.exchanges)) {\n if (ex === exchange || ex.name === exchange.name) {\n return name;\n }\n }\n }\n return exchange.name;\n }\n\n /**\n * Get the name/key of a queue from the contract\n */\n private getQueueName(queue: QueueDefinition, contract: ContractDefinition): string {\n if (contract.queues) {\n for (const [name, qEntry] of Object.entries(contract.queues)) {\n const q = extractQueue(qEntry);\n if (q === queue || q.name === queue.name) {\n return name;\n }\n }\n }\n return queue.name;\n }\n\n /**\n * Get all bindings for a queue from the contract\n */\n private getQueueBindings(\n queue: QueueDefinition,\n contract: ContractDefinition,\n ): QueueBindingDefinition[] {\n const result: QueueBindingDefinition[] = [];\n\n if (contract.bindings) {\n for (const binding of Object.values(contract.bindings)) {\n if (binding.type === \"queue\" && binding.queue.name === queue.name) {\n result.push(binding);\n }\n }\n }\n\n return result;\n }\n\n /**\n * Convert a Standard Schema to JSON Schema using oRPC converters\n */\n private async convertSchema(\n schema: StandardSchemaV1,\n strategy: \"input\" | \"output\",\n ): Promise<JSONSchema> {\n // Try each converter until one matches\n for (const converter of this.converters) {\n const matches = await converter.condition(schema, { strategy });\n if (matches) {\n const [_required, jsonSchema] = await converter.convert(schema, { strategy });\n return jsonSchema;\n }\n }\n\n const message =\n `No schema converter matched for schema. ` +\n `Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.`;\n\n if (this.failOnMissingConverter) {\n throw new Error(`AsyncAPIGenerator: ${message}`);\n }\n\n // No converter matched — the output will contain a generic { type: \"object\" } placeholder.\n this.logger?.warn(\n `${message} The generated spec will use a generic { type: \"object\" } placeholder.`,\n );\n return { type: \"object\" };\n }\n}\n"],"mappings":"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"}
|
package/docs/index.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
### AsyncAPIGenerator
|
|
10
10
|
|
|
11
|
-
Defined in: [index.ts:
|
|
11
|
+
Defined in: [index.ts:111](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L111)
|
|
12
12
|
|
|
13
13
|
Generator for creating AsyncAPI 3.0 documentation from AMQP contracts.
|
|
14
14
|
|
|
@@ -66,7 +66,7 @@ const asyncapi = await generator.generate(contract, {
|
|
|
66
66
|
new AsyncAPIGenerator(options?): AsyncAPIGenerator;
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Defined in: [index.ts:
|
|
69
|
+
Defined in: [index.ts:121](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L121)
|
|
70
70
|
|
|
71
71
|
Create a new AsyncAPI generator instance.
|
|
72
72
|
|
|
@@ -88,7 +88,7 @@ Create a new AsyncAPI generator instance.
|
|
|
88
88
|
generate(contract, options): Promise<AsyncAPIObject>;
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
Defined in: [index.ts:
|
|
91
|
+
Defined in: [index.ts:155](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L155)
|
|
92
92
|
|
|
93
93
|
Generate an AsyncAPI 3.0 document from a contract definition.
|
|
94
94
|
|
|
@@ -135,7 +135,7 @@ const asyncapi = await generator.generate(contract, {
|
|
|
135
135
|
type AsyncAPIGeneratorGenerateOptions = Pick<AsyncAPIObject, "info"> & Partial<Pick<AsyncAPIObject, "id" | "servers">>;
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
Defined in: [index.ts:
|
|
138
|
+
Defined in: [index.ts:60](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L60)
|
|
139
139
|
|
|
140
140
|
Options for generating an AsyncAPI document.
|
|
141
141
|
These correspond to the top-level AsyncAPI document fields.
|
|
@@ -148,7 +148,7 @@ These correspond to the top-level AsyncAPI document fields.
|
|
|
148
148
|
type AsyncAPIGeneratorOptions = object;
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
Defined in: [index.ts:
|
|
151
|
+
Defined in: [index.ts:35](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L35)
|
|
152
152
|
|
|
153
153
|
Options for configuring the AsyncAPI generator.
|
|
154
154
|
|
|
@@ -167,6 +167,7 @@ const generator = new AsyncAPIGenerator({
|
|
|
167
167
|
|
|
168
168
|
| Property | Type | Description | Defined in |
|
|
169
169
|
| ------ | ------ | ------ | ------ |
|
|
170
|
-
| <a id="
|
|
171
|
-
| `logger
|
|
172
|
-
|
|
|
170
|
+
| <a id="failonmissingconverter"></a> `failOnMissingConverter?` | `boolean` | If true, the generator throws when a payload schema cannot be converted by any of the configured `schemaConverters` instead of falling back to a generic `{ type: "object" }` placeholder. Recommended for CI pipelines that depend on the generated spec being faithful (e.g. for codegen). Defaults to `false` for backwards compatibility. | [index.ts:53](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L53) |
|
|
171
|
+
| <a id="logger"></a> `logger?` | `object` | Optional logger for warnings during generation (e.g. unmatched schema converters). | [index.ts:44](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L44) |
|
|
172
|
+
| `logger.warn` | (`message`) => `void` | - | [index.ts:44](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L44) |
|
|
173
|
+
| <a id="schemaconverters"></a> `schemaConverters?` | `ConditionalSchemaConverter`[] | Schema converters for transforming validation schemas to JSON Schema. Supports Zod, Valibot, ArkType, and other Standard Schema v1 compatible libraries. | [index.ts:40](https://github.com/btravers/amqp-contract/blob/cb947e699b512bf57d7ddfcc5ae6e2531e8dfa43/packages/asyncapi/src/index.ts#L40) |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amqp-contract/asyncapi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "AsyncAPI specification generator for amqp-contract",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"amqp",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@orpc/openapi": "1.14.0",
|
|
53
53
|
"@standard-schema/spec": "1.1.0",
|
|
54
|
-
"@amqp-contract/contract": "0.
|
|
54
|
+
"@amqp-contract/contract": "0.23.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@asyncapi/parser": "3.6.0",
|