@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.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +34 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -12
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
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.
|
|
4216
|
+
version: "7.12.0",
|
|
4217
4217
|
description: "OpenAPI generator for EventCatalog",
|
|
4218
4218
|
scripts: {
|
|
4219
4219
|
build: "tsup",
|
|
@@ -4250,7 +4250,7 @@ var package_default = {
|
|
|
4250
4250
|
dependencies: {
|
|
4251
4251
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
4252
4252
|
"@changesets/cli": "^2.27.7",
|
|
4253
|
-
"@eventcatalog/sdk": "^2.18.
|
|
4253
|
+
"@eventcatalog/sdk": "^2.18.4",
|
|
4254
4254
|
chalk: "4.1.2",
|
|
4255
4255
|
"js-yaml": "^4.1.0",
|
|
4256
4256
|
"openapi-types": "^12.1.3",
|
|
@@ -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) {
|
|
@@ -4613,6 +4629,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4613
4629
|
let repository = null;
|
|
4614
4630
|
let styles2 = null;
|
|
4615
4631
|
let serviceDiagrams = null;
|
|
4632
|
+
let serviceFlows = null;
|
|
4633
|
+
let serviceEntities = null;
|
|
4616
4634
|
let serviceWritesTo = configuredWritesTo;
|
|
4617
4635
|
let serviceReadsFrom = configuredReadsFrom;
|
|
4618
4636
|
const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
|
|
@@ -4626,6 +4644,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4626
4644
|
serviceBadges = latestServiceInCatalog.badges || null;
|
|
4627
4645
|
serviceAttachments = latestServiceInCatalog.attachments || null;
|
|
4628
4646
|
serviceDiagrams = latestServiceInCatalog.diagrams || null;
|
|
4647
|
+
serviceFlows = latestServiceInCatalog.flows || null;
|
|
4648
|
+
serviceEntities = latestServiceInCatalog.entities || null;
|
|
4629
4649
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4630
4650
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4631
4651
|
if (persistPreviousSpecificationFiles) {
|
|
@@ -4656,6 +4676,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4656
4676
|
...repository ? { repository } : {},
|
|
4657
4677
|
...styles2 ? { styles: styles2 } : {},
|
|
4658
4678
|
...serviceDiagrams ? { diagrams: serviceDiagrams } : {},
|
|
4679
|
+
...serviceFlows ? { flows: serviceFlows } : {},
|
|
4680
|
+
...serviceEntities ? { entities: serviceEntities } : {},
|
|
4659
4681
|
...isServiceMarkedAsDraft ? { draft: true } : {},
|
|
4660
4682
|
...serviceAttachments ? { attachments: serviceAttachments } : {},
|
|
4661
4683
|
...serviceWritesTo.length > 0 ? { writesTo: serviceWritesTo } : {},
|
|
@@ -4684,9 +4706,9 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4684
4706
|
console.log(import_chalk4.default.cyan(` - Service (v${version}) created`));
|
|
4685
4707
|
const consumers = serviceSpec.consumers || [];
|
|
4686
4708
|
for (const consumer of consumers) {
|
|
4687
|
-
const consumerVersion = consumer.version || "1.0.0";
|
|
4688
4709
|
const filteredSends = filterMessagesByRoutes(allGeneratedMessages, consumer.routes);
|
|
4689
|
-
const existingConsumer = await getService(consumer.id,
|
|
4710
|
+
const existingConsumer = await getService(consumer.id, consumer.version || "latest");
|
|
4711
|
+
const consumerVersion = consumer.version || existingConsumer?.version || "1.0.0";
|
|
4690
4712
|
if (existingConsumer) {
|
|
4691
4713
|
const mergedSends = mergeSends(existingConsumer.sends || [], filteredSends);
|
|
4692
4714
|
const consumerResource = await getResourcePath(process.env.PROJECT_DIR, consumer.id, consumerVersion);
|
|
@@ -4823,16 +4845,16 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4823
4845
|
},
|
|
4824
4846
|
{ path: options.pathForMessages || messagePath, override: true }
|
|
4825
4847
|
);
|
|
4848
|
+
const group = getMessageGroup(operation, options.groupMessagesBy);
|
|
4849
|
+
const pointer = {
|
|
4850
|
+
id: message2.id,
|
|
4851
|
+
version: message2.version,
|
|
4852
|
+
...group ? { group } : {}
|
|
4853
|
+
};
|
|
4826
4854
|
if (messageAction === "sends") {
|
|
4827
|
-
sends.push(
|
|
4828
|
-
id: message2.id,
|
|
4829
|
-
version: message2.version
|
|
4830
|
-
});
|
|
4855
|
+
sends.push(pointer);
|
|
4831
4856
|
} else {
|
|
4832
|
-
receives.push(
|
|
4833
|
-
id: message2.id,
|
|
4834
|
-
version: message2.version
|
|
4835
|
-
});
|
|
4857
|
+
receives.push(pointer);
|
|
4836
4858
|
}
|
|
4837
4859
|
allGeneratedMessages.push({
|
|
4838
4860
|
id: message2.id,
|