@eventcatalog/generator-openapi 7.12.0 → 7.12.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.js CHANGED
@@ -4213,7 +4213,7 @@ var import_node_path = require("path");
4213
4213
  // package.json
4214
4214
  var package_default = {
4215
4215
  name: "@eventcatalog/generator-openapi",
4216
- version: "7.12.0",
4216
+ version: "7.12.1",
4217
4217
  description: "OpenAPI generator for EventCatalog",
4218
4218
  scripts: {
4219
4219
  build: "tsup",
@@ -4453,19 +4453,36 @@ var mergeSends = (existing, incoming) => {
4453
4453
  var toUniqueArray = (array) => {
4454
4454
  return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
4455
4455
  };
4456
- var SKIP_PATH_SEGMENTS = /* @__PURE__ */ new Set(["api", "v1", "v2", "v3", "v4", "v5"]);
4457
- var getMessageGroup = (operation, groupMessagesBy) => {
4456
+ var isSkippableSegment = (segment) => /^(api|v\d+)$/i.test(segment);
4457
+ var getPathPrefix = (path4) => {
4458
+ const segments = path4.split("/").filter(Boolean);
4459
+ const meaningful = segments.filter((s) => !isSkippableSegment(s));
4460
+ return meaningful.find((s) => !s.startsWith("{"));
4461
+ };
4462
+ var buildGroupablePrefixes = (operations) => {
4463
+ const prefixToPaths = /* @__PURE__ */ new Map();
4464
+ for (const op of operations) {
4465
+ const prefix = getPathPrefix(op.path);
4466
+ if (!prefix) continue;
4467
+ if (!prefixToPaths.has(prefix)) prefixToPaths.set(prefix, /* @__PURE__ */ new Set());
4468
+ prefixToPaths.get(prefix).add(op.path);
4469
+ }
4470
+ const groupable = /* @__PURE__ */ new Set();
4471
+ for (const [prefix, paths] of prefixToPaths) {
4472
+ if (paths.size >= 2) groupable.add(prefix);
4473
+ }
4474
+ return groupable;
4475
+ };
4476
+ var getMessageGroup = (operation, groupMessagesBy, groupablePrefixes) => {
4458
4477
  if (!groupMessagesBy) return void 0;
4459
4478
  if (groupMessagesBy === "x-extension") {
4460
4479
  return operation.extensions?.["x-eventcatalog-group"] || void 0;
4461
4480
  }
4462
4481
  if (groupMessagesBy === "path-prefix") {
4463
- const allSegments = operation.path.split("/").filter(Boolean);
4464
- const meaningfulSegments = allSegments.filter((s) => !SKIP_PATH_SEGMENTS.has(s.toLowerCase()));
4465
- if (meaningfulSegments.length < 2) return void 0;
4466
- const prefix = meaningfulSegments.find((s) => !s.startsWith("{"));
4482
+ const prefix = getPathPrefix(operation.path);
4467
4483
  if (!prefix) return void 0;
4468
- return prefix.charAt(0).toUpperCase() + prefix.slice(1).toLowerCase();
4484
+ if (!groupablePrefixes?.has(prefix)) return void 0;
4485
+ return `/${prefix}`;
4469
4486
  }
4470
4487
  return void 0;
4471
4488
  };
@@ -4789,6 +4806,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4789
4806
  const preserveExistingMessages = options.preserveExistingMessages ?? true;
4790
4807
  const parseExamples = options.parseExamples ?? true;
4791
4808
  const isDraft = options.isDraft ?? null;
4809
+ const groupablePrefixes = options.groupMessagesBy === "path-prefix" ? buildGroupablePrefixes(operations) : void 0;
4792
4810
  let receives = [], sends = [];
4793
4811
  let allGeneratedMessages = [];
4794
4812
  for (const operation of operations) {
@@ -4845,7 +4863,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4845
4863
  },
4846
4864
  { path: options.pathForMessages || messagePath, override: true }
4847
4865
  );
4848
- const group = getMessageGroup(operation, options.groupMessagesBy);
4866
+ const group = getMessageGroup(operation, options.groupMessagesBy, groupablePrefixes);
4849
4867
  const pointer = {
4850
4868
  id: message2.id,
4851
4869
  version: message2.version,