@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.d.mts CHANGED
@@ -16,6 +16,13 @@ type Props = {
16
16
  httpMethodsToMessages?: HTTP_METHOD_TO_MESSAGE_TYPE;
17
17
  preserveExistingMessages?: boolean;
18
18
  parseExamples?: boolean;
19
+ /**
20
+ * Group messages in the visualiser by a derived value.
21
+ * - `'x-extension'`: Use the `x-eventcatalog-group` extension on each operation.
22
+ * - `'path-prefix'`: Derive the group from the first meaningful URL path segment
23
+ * (skips common prefixes like `api`, `v1`, `v2`).
24
+ */
25
+ groupMessagesBy?: 'x-extension' | 'path-prefix';
19
26
  };
20
27
  declare const _default: (_: any, options: Props) => Promise<void>;
21
28
 
package/dist/index.d.ts CHANGED
@@ -16,6 +16,13 @@ type Props = {
16
16
  httpMethodsToMessages?: HTTP_METHOD_TO_MESSAGE_TYPE;
17
17
  preserveExistingMessages?: boolean;
18
18
  parseExamples?: boolean;
19
+ /**
20
+ * Group messages in the visualiser by a derived value.
21
+ * - `'x-extension'`: Use the `x-eventcatalog-group` extension on each operation.
22
+ * - `'path-prefix'`: Derive the group from the first meaningful URL path segment
23
+ * (skips common prefixes like `api`, `v1`, `v2`).
24
+ */
25
+ groupMessagesBy?: 'x-extension' | 'path-prefix';
19
26
  };
20
27
  declare const _default: (_: any, options: Props) => Promise<void>;
21
28
 
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.11.2",
4216
+ version: "7.12.0",
4217
4217
  description: "OpenAPI generator for EventCatalog",
4218
4218
  scripts: {
4219
4219
  build: "tsup",
@@ -4453,6 +4453,22 @@ 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) => {
4458
+ if (!groupMessagesBy) return void 0;
4459
+ if (groupMessagesBy === "x-extension") {
4460
+ return operation.extensions?.["x-eventcatalog-group"] || void 0;
4461
+ }
4462
+ 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("{"));
4467
+ if (!prefix) return void 0;
4468
+ return prefix.charAt(0).toUpperCase() + prefix.slice(1).toLowerCase();
4469
+ }
4470
+ return void 0;
4471
+ };
4456
4472
  var fetchAuthenticatedSpec = async (specUrl, headers) => {
4457
4473
  const response = await fetch(specUrl, { method: "GET", headers });
4458
4474
  if (!response.ok) {
@@ -4690,9 +4706,9 @@ Processing domain: ${domainName} (v${domainVersion})`));
4690
4706
  console.log(import_chalk4.default.cyan(` - Service (v${version}) created`));
4691
4707
  const consumers = serviceSpec.consumers || [];
4692
4708
  for (const consumer of consumers) {
4693
- const consumerVersion = consumer.version || "1.0.0";
4694
4709
  const filteredSends = filterMessagesByRoutes(allGeneratedMessages, consumer.routes);
4695
- const existingConsumer = await getService(consumer.id, consumerVersion);
4710
+ const existingConsumer = await getService(consumer.id, consumer.version || "latest");
4711
+ const consumerVersion = consumer.version || existingConsumer?.version || "1.0.0";
4696
4712
  if (existingConsumer) {
4697
4713
  const mergedSends = mergeSends(existingConsumer.sends || [], filteredSends);
4698
4714
  const consumerResource = await getResourcePath(process.env.PROJECT_DIR, consumer.id, consumerVersion);
@@ -4829,16 +4845,16 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
4829
4845
  },
4830
4846
  { path: options.pathForMessages || messagePath, override: true }
4831
4847
  );
4848
+ const group = getMessageGroup(operation, options.groupMessagesBy);
4849
+ const pointer = {
4850
+ id: message2.id,
4851
+ version: message2.version,
4852
+ ...group ? { group } : {}
4853
+ };
4832
4854
  if (messageAction === "sends") {
4833
- sends.push({
4834
- id: message2.id,
4835
- version: message2.version
4836
- });
4855
+ sends.push(pointer);
4837
4856
  } else {
4838
- receives.push({
4839
- id: message2.id,
4840
- version: message2.version
4841
- });
4857
+ receives.push(pointer);
4842
4858
  }
4843
4859
  allGeneratedMessages.push({
4844
4860
  id: message2.id,