@eventcatalog/generator-openapi 7.11.2 → 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.2",
4211
+ version: "7.12.0",
4212
4212
  description: "OpenAPI generator for EventCatalog",
4213
4213
  scripts: {
4214
4214
  build: "tsup",
@@ -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) {
@@ -4685,9 +4701,9 @@ Processing domain: ${domainName} (v${domainVersion})`));
4685
4701
  console.log(chalk4.cyan(` - Service (v${version}) created`));
4686
4702
  const consumers = serviceSpec.consumers || [];
4687
4703
  for (const consumer of consumers) {
4688
- const consumerVersion = consumer.version || "1.0.0";
4689
4704
  const filteredSends = filterMessagesByRoutes(allGeneratedMessages, consumer.routes);
4690
- 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";
4691
4707
  if (existingConsumer) {
4692
4708
  const mergedSends = mergeSends(existingConsumer.sends || [], filteredSends);
4693
4709
  const consumerResource = await getResourcePath(process.env.PROJECT_DIR, consumer.id, consumerVersion);
@@ -4824,16 +4840,16 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4824
4840
  },
4825
4841
  { path: options.pathForMessages || messagePath, override: true }
4826
4842
  );
4843
+ const group = getMessageGroup(operation, options.groupMessagesBy);
4844
+ const pointer = {
4845
+ id: message2.id,
4846
+ version: message2.version,
4847
+ ...group ? { group } : {}
4848
+ };
4827
4849
  if (messageAction === "sends") {
4828
- sends.push({
4829
- id: message2.id,
4830
- version: message2.version
4831
- });
4850
+ sends.push(pointer);
4832
4851
  } else {
4833
- receives.push({
4834
- id: message2.id,
4835
- version: message2.version
4836
- });
4852
+ receives.push(pointer);
4837
4853
  }
4838
4854
  allGeneratedMessages.push({
4839
4855
  id: message2.id,