@eventcatalog/generator-asyncapi 6.4.1 → 6.4.2

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.js CHANGED
@@ -1543,7 +1543,7 @@ var import_path3 = __toESM(require("path"));
1543
1543
  // package.json
1544
1544
  var package_default = {
1545
1545
  name: "@eventcatalog/generator-asyncapi",
1546
- version: "6.4.1",
1546
+ version: "6.4.2",
1547
1547
  description: "AsyncAPI generator for EventCatalog",
1548
1548
  scripts: {
1549
1549
  build: "tsup",
@@ -1566,6 +1566,7 @@ var package_default = {
1566
1566
  "@types/lodash": "^4.17.7",
1567
1567
  "@types/minimist": "^1.2.5",
1568
1568
  "@types/node": "^20.16.1",
1569
+ "@types/semver": "^7.7.0",
1569
1570
  prettier: "^3.3.3",
1570
1571
  tsup: "^8.1.0",
1571
1572
  typescript: "^5.5.3",
@@ -1589,6 +1590,7 @@ var package_default = {
1589
1590
  "js-yaml": "^4.1.0",
1590
1591
  lodash: "^4.17.23",
1591
1592
  minimist: "^1.2.8",
1593
+ semver: "^7.7.2",
1592
1594
  slugify: "^1.6.6",
1593
1595
  "update-notifier": "^7.3.1",
1594
1596
  zod: "^3.23.8"
@@ -2724,6 +2726,30 @@ var defaultMarkdown4 = (_document, channel) => {
2724
2726
  `;
2725
2727
  };
2726
2728
 
2729
+ // src/utils/versions.ts
2730
+ var import_semver = require("semver");
2731
+ var tryCoerceToSemver = (version) => {
2732
+ if ((0, import_semver.valid)(version)) return version;
2733
+ const coerced = (0, import_semver.coerce)(version);
2734
+ return coerced ? coerced.version : null;
2735
+ };
2736
+ var isNewerVersion = (incoming, existing) => {
2737
+ if (!incoming || !existing) return false;
2738
+ if (incoming === existing) return false;
2739
+ const incomingSemver = tryCoerceToSemver(incoming);
2740
+ const existingSemver = tryCoerceToSemver(existing);
2741
+ if (!incomingSemver || !existingSemver) return false;
2742
+ return (0, import_semver.gt)(incomingSemver, existingSemver);
2743
+ };
2744
+ var isSameVersion = (a, b) => {
2745
+ if (!a || !b) return false;
2746
+ if (a === b) return true;
2747
+ const aSemver = tryCoerceToSemver(a);
2748
+ const bSemver = tryCoerceToSemver(b);
2749
+ if (!aSemver || !bSemver) return false;
2750
+ return (0, import_semver.eq)(aSemver, bSemver);
2751
+ };
2752
+
2727
2753
  // ../../shared/checkLicense.ts
2728
2754
  var import_chalk3 = __toESM(require("chalk"));
2729
2755
 
@@ -4432,7 +4458,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
4432
4458
  for (const operation of operations) {
4433
4459
  for (const message2 of operation.messages()) {
4434
4460
  const eventType = message2.extensions().get("x-eventcatalog-message-type")?.value() || "event";
4435
- const messageVersion = message2.extensions().get("x-eventcatalog-message-version")?.value() || version;
4461
+ let messageVersion = message2.extensions().get("x-eventcatalog-message-version")?.value() || version;
4436
4462
  const deprecatedDate = message2.extensions().get("x-eventcatalog-deprecated-date")?.value() || null;
4437
4463
  const deprecatedMessage = message2.extensions().get("x-eventcatalog-deprecated-message")?.value() || null;
4438
4464
  const isMessageMarkedAsDraft = isDomainMarkedAsDraft || isServiceMarkedAsDraft || message2.extensions().get("x-eventcatalog-draft")?.value() || null;
@@ -4470,63 +4496,76 @@ Processing domain: ${domainName} (v${domainVersion})`));
4470
4496
  }
4471
4497
  if (serviceOwnsMessageContract) {
4472
4498
  const catalogedMessage = await getMessage(messageId, "latest");
4499
+ let shouldWriteMessage = true;
4473
4500
  if (catalogedMessage) {
4474
4501
  messageMarkdown = catalogedMessage.markdown;
4475
4502
  messageBadges = catalogedMessage.badges || null;
4476
4503
  messageAttachments = catalogedMessage.attachments || null;
4477
- if (catalogedMessage.version !== messageVersion) {
4504
+ const catalogedVersion = catalogedMessage.version ?? "";
4505
+ if (isSameVersion(catalogedVersion, messageVersion)) {
4506
+ } else if (isNewerVersion(messageVersion, catalogedVersion)) {
4478
4507
  await versionMessage(messageId);
4479
4508
  console.log(import_chalk4.default.cyan(` - Versioned previous message: (v${catalogedMessage.version})`));
4509
+ } else {
4510
+ console.log(
4511
+ import_chalk4.default.yellow(
4512
+ ` - Skipping ${messageId} (v${messageVersion}) - catalog already has a newer version (v${catalogedVersion})`
4513
+ )
4514
+ );
4515
+ messageVersion = catalogedVersion;
4516
+ shouldWriteMessage = false;
4480
4517
  }
4481
4518
  }
4482
- await writeMessage(
4483
- {
4484
- id: messageId,
4485
- version: messageVersion,
4486
- name: getMessageName(message2),
4487
- summary: getSummary(message2),
4488
- markdown: messageMarkdown,
4489
- badges: messageBadges || badges2.map((badge) => ({ content: badge.name(), textColor: "blue", backgroundColor: "blue" })),
4490
- ...messageHasSchema(message2) && { schemaPath: getSchemaFileName(message2) },
4491
- ...owners && { owners },
4492
- ...messageAttachments && { attachments: messageAttachments },
4493
- ...deprecatedDate && {
4494
- deprecated: { date: deprecatedDate, ...deprecatedMessage && { message: deprecatedMessage } }
4495
- },
4496
- ...isMessageMarkedAsDraft && { draft: true }
4497
- },
4498
- {
4499
- override: true,
4500
- path: messagePath
4501
- }
4502
- );
4503
- console.log(import_chalk4.default.cyan(` - Message (v${messageVersion}) created`));
4504
- if (messageHasSchema(message2)) {
4505
- const schema = getSchemaForMessage(message2, attachHeadersToSchema);
4506
- const cleanedMessagePath = messagePath.replace(/\\/g, "/").replace(/^(\.\.\/|\.\/)+/g, "");
4507
- await addSchemaToMessage(
4508
- messageId,
4519
+ if (shouldWriteMessage) {
4520
+ await writeMessage(
4509
4521
  {
4510
- fileName: getSchemaFileName(message2),
4511
- schema: safeStringify(schema, 4)
4522
+ id: messageId,
4523
+ version: messageVersion,
4524
+ name: getMessageName(message2),
4525
+ summary: getSummary(message2),
4526
+ markdown: messageMarkdown,
4527
+ badges: messageBadges || badges2.map((badge) => ({ content: badge.name(), textColor: "blue", backgroundColor: "blue" })),
4528
+ ...messageHasSchema(message2) && { schemaPath: getSchemaFileName(message2) },
4529
+ ...owners && { owners },
4530
+ ...messageAttachments && { attachments: messageAttachments },
4531
+ ...deprecatedDate && {
4532
+ deprecated: { date: deprecatedDate, ...deprecatedMessage && { message: deprecatedMessage } }
4533
+ },
4534
+ ...isMessageMarkedAsDraft && { draft: true }
4512
4535
  },
4513
- messageVersion,
4514
- { path: cleanedMessagePath }
4515
- );
4516
- console.log(import_chalk4.default.cyan(` - Schema added to message (v${messageVersion})`));
4517
- }
4518
- if (parseExamples) {
4519
- const messageExamples = message2.examples().all();
4520
- for (let i = 0; i < messageExamples.length; i++) {
4521
- const example = messageExamples[i];
4522
- const payload = example.payload();
4523
- if (payload) {
4524
- const fileName2 = example.hasName() ? `${example.name()}.json` : `example-${i}.json`;
4525
- await addExampleToMessage(messageId, { content: JSON.stringify(payload, null, 2), fileName: fileName2 }, messageVersion);
4536
+ {
4537
+ override: true,
4538
+ path: messagePath
4526
4539
  }
4540
+ );
4541
+ console.log(import_chalk4.default.cyan(` - Message (v${messageVersion}) created`));
4542
+ if (messageHasSchema(message2)) {
4543
+ const schema = getSchemaForMessage(message2, attachHeadersToSchema);
4544
+ const cleanedMessagePath = messagePath.replace(/\\/g, "/").replace(/^(\.\.\/|\.\/)+/g, "");
4545
+ await addSchemaToMessage(
4546
+ messageId,
4547
+ {
4548
+ fileName: getSchemaFileName(message2),
4549
+ schema: safeStringify(schema, 4)
4550
+ },
4551
+ messageVersion,
4552
+ { path: cleanedMessagePath }
4553
+ );
4554
+ console.log(import_chalk4.default.cyan(` - Schema added to message (v${messageVersion})`));
4527
4555
  }
4528
- if (messageExamples.length > 0) {
4529
- console.log(import_chalk4.default.cyan(` - ${messageExamples.length} example(s) added to message (v${messageVersion})`));
4556
+ if (parseExamples) {
4557
+ const messageExamples = message2.examples().all();
4558
+ for (let i = 0; i < messageExamples.length; i++) {
4559
+ const example = messageExamples[i];
4560
+ const payload = example.payload();
4561
+ if (payload) {
4562
+ const fileName2 = example.hasName() ? `${example.name()}.json` : `example-${i}.json`;
4563
+ await addExampleToMessage(messageId, { content: JSON.stringify(payload, null, 2), fileName: fileName2 }, messageVersion);
4564
+ }
4565
+ }
4566
+ if (messageExamples.length > 0) {
4567
+ console.log(import_chalk4.default.cyan(` - ${messageExamples.length} example(s) added to message (v${messageVersion})`));
4568
+ }
4530
4569
  }
4531
4570
  }
4532
4571
  } else {