@eventcatalog/generator-openapi 7.11.1 → 7.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -4208,7 +4208,7 @@ import { join } from "path";
4208
4208
  // package.json
4209
4209
  var package_default = {
4210
4210
  name: "@eventcatalog/generator-openapi",
4211
- version: "7.11.1",
4211
+ version: "7.12.0",
4212
4212
  description: "OpenAPI generator for EventCatalog",
4213
4213
  scripts: {
4214
4214
  build: "tsup",
@@ -4245,7 +4245,7 @@ var package_default = {
4245
4245
  dependencies: {
4246
4246
  "@apidevtools/swagger-parser": "^10.1.0",
4247
4247
  "@changesets/cli": "^2.27.7",
4248
- "@eventcatalog/sdk": "^2.18.2",
4248
+ "@eventcatalog/sdk": "^2.18.4",
4249
4249
  chalk: "4.1.2",
4250
4250
  "js-yaml": "^4.1.0",
4251
4251
  "openapi-types": "^12.1.3",
@@ -4448,6 +4448,22 @@ var mergeSends = (existing, incoming) => {
4448
4448
  var toUniqueArray = (array) => {
4449
4449
  return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
4450
4450
  };
4451
+ var SKIP_PATH_SEGMENTS = /* @__PURE__ */ new Set(["api", "v1", "v2", "v3", "v4", "v5"]);
4452
+ var getMessageGroup = (operation, groupMessagesBy) => {
4453
+ if (!groupMessagesBy) return void 0;
4454
+ if (groupMessagesBy === "x-extension") {
4455
+ return operation.extensions?.["x-eventcatalog-group"] || void 0;
4456
+ }
4457
+ if (groupMessagesBy === "path-prefix") {
4458
+ const allSegments = operation.path.split("/").filter(Boolean);
4459
+ const meaningfulSegments = allSegments.filter((s) => !SKIP_PATH_SEGMENTS.has(s.toLowerCase()));
4460
+ if (meaningfulSegments.length < 2) return void 0;
4461
+ const prefix = meaningfulSegments.find((s) => !s.startsWith("{"));
4462
+ if (!prefix) return void 0;
4463
+ return prefix.charAt(0).toUpperCase() + prefix.slice(1).toLowerCase();
4464
+ }
4465
+ return void 0;
4466
+ };
4451
4467
  var fetchAuthenticatedSpec = async (specUrl, headers) => {
4452
4468
  const response = await fetch(specUrl, { method: "GET", headers });
4453
4469
  if (!response.ok) {
@@ -4608,6 +4624,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
4608
4624
  let repository = null;
4609
4625
  let styles2 = null;
4610
4626
  let serviceDiagrams = null;
4627
+ let serviceFlows = null;
4628
+ let serviceEntities = null;
4611
4629
  let serviceWritesTo = configuredWritesTo;
4612
4630
  let serviceReadsFrom = configuredReadsFrom;
4613
4631
  const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
@@ -4621,6 +4639,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
4621
4639
  serviceBadges = latestServiceInCatalog.badges || null;
4622
4640
  serviceAttachments = latestServiceInCatalog.attachments || null;
4623
4641
  serviceDiagrams = latestServiceInCatalog.diagrams || null;
4642
+ serviceFlows = latestServiceInCatalog.flows || null;
4643
+ serviceEntities = latestServiceInCatalog.entities || null;
4624
4644
  serviceWritesTo = latestServiceInCatalog.writesTo || [];
4625
4645
  serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
4626
4646
  if (persistPreviousSpecificationFiles) {
@@ -4651,6 +4671,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
4651
4671
  ...repository ? { repository } : {},
4652
4672
  ...styles2 ? { styles: styles2 } : {},
4653
4673
  ...serviceDiagrams ? { diagrams: serviceDiagrams } : {},
4674
+ ...serviceFlows ? { flows: serviceFlows } : {},
4675
+ ...serviceEntities ? { entities: serviceEntities } : {},
4654
4676
  ...isServiceMarkedAsDraft ? { draft: true } : {},
4655
4677
  ...serviceAttachments ? { attachments: serviceAttachments } : {},
4656
4678
  ...serviceWritesTo.length > 0 ? { writesTo: serviceWritesTo } : {},
@@ -4679,9 +4701,9 @@ Processing domain: ${domainName} (v${domainVersion})`));
4679
4701
  console.log(chalk4.cyan(` - Service (v${version}) created`));
4680
4702
  const consumers = serviceSpec.consumers || [];
4681
4703
  for (const consumer of consumers) {
4682
- const consumerVersion = consumer.version || "1.0.0";
4683
4704
  const filteredSends = filterMessagesByRoutes(allGeneratedMessages, consumer.routes);
4684
- const existingConsumer = await getService(consumer.id, consumerVersion);
4705
+ const existingConsumer = await getService(consumer.id, consumer.version || "latest");
4706
+ const consumerVersion = consumer.version || existingConsumer?.version || "1.0.0";
4685
4707
  if (existingConsumer) {
4686
4708
  const mergedSends = mergeSends(existingConsumer.sends || [], filteredSends);
4687
4709
  const consumerResource = await getResourcePath(process.env.PROJECT_DIR, consumer.id, consumerVersion);
@@ -4818,16 +4840,16 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4818
4840
  },
4819
4841
  { path: options.pathForMessages || messagePath, override: true }
4820
4842
  );
4843
+ const group = getMessageGroup(operation, options.groupMessagesBy);
4844
+ const pointer = {
4845
+ id: message2.id,
4846
+ version: message2.version,
4847
+ ...group ? { group } : {}
4848
+ };
4821
4849
  if (messageAction === "sends") {
4822
- sends.push({
4823
- id: message2.id,
4824
- version: message2.version
4825
- });
4850
+ sends.push(pointer);
4826
4851
  } else {
4827
- receives.push({
4828
- id: message2.id,
4829
- version: message2.version
4830
- });
4852
+ receives.push(pointer);
4831
4853
  }
4832
4854
  allGeneratedMessages.push({
4833
4855
  id: message2.id,