@amqp-contract/asyncapi 0.22.0 → 0.23.1

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 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
- return {
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
- ...queue.arguments !== void 0 && { arguments: queue.arguments },
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
- return {
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: `AMQP Exchange: ${exchange.name} (${exchange.type})`,
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
- this.logger?.warn("No schema converter matched for schema. The generated spec will use a generic { type: \"object\" } placeholder. Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.");
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
  */
@@ -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
  */
@@ -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":"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"}
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
- return {
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
- ...queue.arguments !== void 0 && { arguments: queue.arguments },
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
- return {
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: `AMQP Exchange: ${exchange.name} (${exchange.type})`,
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
- this.logger?.warn("No schema converter matched for schema. The generated spec will use a generic { type: \"object\" } placeholder. Configure schemaConverters (e.g. zodToJsonSchema) to generate accurate schemas.");
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
  };
@@ -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:100](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L100)
11
+ Defined in: [index.ts:111](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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:109](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L109)
69
+ Defined in: [index.ts:121](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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:142](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L142)
91
+ Defined in: [index.ts:155](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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:49](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L49)
138
+ Defined in: [index.ts:60](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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:33](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L33)
151
+ Defined in: [index.ts:35](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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="logger"></a> `logger?` | `object` | Optional logger for warnings during generation (e.g. unmatched schema converters). | [index.ts:42](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L42) |
171
- | `logger.warn` | (`message`) => `void` | - | [index.ts:42](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L42) |
172
- | <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:38](https://github.com/btravers/amqp-contract/blob/da9b95c747db8d5af9183ca6fe2a6e0af558d1fa/packages/asyncapi/src/index.ts#L38) |
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/dc096282cd7249a6b8148d35c3dfad011c9e9753/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/dc096282cd7249a6b8148d35c3dfad011c9e9753/packages/asyncapi/src/index.ts#L44) |
172
+ | `logger.warn` | (`message`) => `void` | - | [index.ts:44](https://github.com/btravers/amqp-contract/blob/dc096282cd7249a6b8148d35c3dfad011c9e9753/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/dc096282cd7249a6b8148d35c3dfad011c9e9753/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.22.0",
3
+ "version": "0.23.1",
4
4
  "description": "AsyncAPI specification generator for amqp-contract",
5
5
  "keywords": [
6
6
  "amqp",
@@ -49,15 +49,15 @@
49
49
  "./package.json": "./package.json"
50
50
  },
51
51
  "dependencies": {
52
- "@orpc/openapi": "1.14.0",
52
+ "@orpc/openapi": "1.14.1",
53
53
  "@standard-schema/spec": "1.1.0",
54
- "@amqp-contract/contract": "0.22.0"
54
+ "@amqp-contract/contract": "0.23.1"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@asyncapi/parser": "3.6.0",
58
- "@orpc/arktype": "1.14.0",
59
- "@orpc/valibot": "1.14.0",
60
- "@orpc/zod": "1.14.0",
58
+ "@orpc/arktype": "1.14.1",
59
+ "@orpc/valibot": "1.14.1",
60
+ "@orpc/zod": "1.14.1",
61
61
  "@types/node": "24.12.2",
62
62
  "@vitest/coverage-v8": "4.1.5",
63
63
  "arktype": "2.2.0",
@@ -67,9 +67,9 @@
67
67
  "typescript": "6.0.3",
68
68
  "valibot": "1.3.1",
69
69
  "vitest": "4.1.5",
70
- "zod": "4.3.6",
71
- "@amqp-contract/tsconfig": "0.1.0",
72
- "@amqp-contract/typedoc": "0.1.0"
70
+ "zod": "4.4.3",
71
+ "@amqp-contract/typedoc": "0.1.0",
72
+ "@amqp-contract/tsconfig": "0.1.0"
73
73
  },
74
74
  "scripts": {
75
75
  "build": "tsdown src/index.ts --format cjs,esm --dts --clean",