@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.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.12.0",
4211
+ version: "7.12.1",
4212
4212
  description: "OpenAPI generator for EventCatalog",
4213
4213
  scripts: {
4214
4214
  build: "tsup",
@@ -4448,19 +4448,36 @@ 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) => {
4451
+ var isSkippableSegment = (segment) => /^(api|v\d+)$/i.test(segment);
4452
+ var getPathPrefix = (path4) => {
4453
+ const segments = path4.split("/").filter(Boolean);
4454
+ const meaningful = segments.filter((s) => !isSkippableSegment(s));
4455
+ return meaningful.find((s) => !s.startsWith("{"));
4456
+ };
4457
+ var buildGroupablePrefixes = (operations) => {
4458
+ const prefixToPaths = /* @__PURE__ */ new Map();
4459
+ for (const op of operations) {
4460
+ const prefix = getPathPrefix(op.path);
4461
+ if (!prefix) continue;
4462
+ if (!prefixToPaths.has(prefix)) prefixToPaths.set(prefix, /* @__PURE__ */ new Set());
4463
+ prefixToPaths.get(prefix).add(op.path);
4464
+ }
4465
+ const groupable = /* @__PURE__ */ new Set();
4466
+ for (const [prefix, paths] of prefixToPaths) {
4467
+ if (paths.size >= 2) groupable.add(prefix);
4468
+ }
4469
+ return groupable;
4470
+ };
4471
+ var getMessageGroup = (operation, groupMessagesBy, groupablePrefixes) => {
4453
4472
  if (!groupMessagesBy) return void 0;
4454
4473
  if (groupMessagesBy === "x-extension") {
4455
4474
  return operation.extensions?.["x-eventcatalog-group"] || void 0;
4456
4475
  }
4457
4476
  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("{"));
4477
+ const prefix = getPathPrefix(operation.path);
4462
4478
  if (!prefix) return void 0;
4463
- return prefix.charAt(0).toUpperCase() + prefix.slice(1).toLowerCase();
4479
+ if (!groupablePrefixes?.has(prefix)) return void 0;
4480
+ return `/${prefix}`;
4464
4481
  }
4465
4482
  return void 0;
4466
4483
  };
@@ -4784,6 +4801,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4784
4801
  const preserveExistingMessages = options.preserveExistingMessages ?? true;
4785
4802
  const parseExamples = options.parseExamples ?? true;
4786
4803
  const isDraft = options.isDraft ?? null;
4804
+ const groupablePrefixes = options.groupMessagesBy === "path-prefix" ? buildGroupablePrefixes(operations) : void 0;
4787
4805
  let receives = [], sends = [];
4788
4806
  let allGeneratedMessages = [];
4789
4807
  for (const operation of operations) {
@@ -4840,7 +4858,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4840
4858
  },
4841
4859
  { path: options.pathForMessages || messagePath, override: true }
4842
4860
  );
4843
- const group = getMessageGroup(operation, options.groupMessagesBy);
4861
+ const group = getMessageGroup(operation, options.groupMessagesBy, groupablePrefixes);
4844
4862
  const pointer = {
4845
4863
  id: message2.id,
4846
4864
  version: message2.version,