@eventcatalog/generator-openapi 7.6.5 → 7.7.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 +48 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48 -13
- 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.mjs
CHANGED
|
@@ -1589,9 +1589,9 @@ var buildService = (serviceOptions, document2, generateMarkdown) => {
|
|
|
1589
1589
|
// src/utils/openapi.ts
|
|
1590
1590
|
import SwaggerParser from "@apidevtools/swagger-parser";
|
|
1591
1591
|
var DEFAULT_MESSAGE_TYPE = "query";
|
|
1592
|
-
async function getSchemasByOperationId(filePath, operationId) {
|
|
1592
|
+
async function getSchemasByOperationId(filePath, operationId, parsedDocument) {
|
|
1593
1593
|
try {
|
|
1594
|
-
const api = await SwaggerParser.dereference(filePath);
|
|
1594
|
+
const api = parsedDocument || await SwaggerParser.dereference(filePath);
|
|
1595
1595
|
const schemas = {
|
|
1596
1596
|
parameters: [],
|
|
1597
1597
|
requestBody: null,
|
|
@@ -1612,7 +1612,8 @@ async function getSchemasByOperationId(filePath, operationId) {
|
|
|
1612
1612
|
for (const [statusCode, response] of Object.entries(typedOperation.responses)) {
|
|
1613
1613
|
if (response.content) {
|
|
1614
1614
|
const contentType = Object.keys(response.content)[0];
|
|
1615
|
-
|
|
1615
|
+
const schemaOrContent = response.content[contentType].schema || response.content[contentType];
|
|
1616
|
+
schemas.responses[statusCode] = { ...schemaOrContent };
|
|
1616
1617
|
schemas.responses[statusCode].isSchema = !!response.content[contentType].schema;
|
|
1617
1618
|
}
|
|
1618
1619
|
}
|
|
@@ -1640,9 +1641,9 @@ function getDeprecatedValues(openAPIOperation) {
|
|
|
1640
1641
|
}
|
|
1641
1642
|
return deprecated;
|
|
1642
1643
|
}
|
|
1643
|
-
async function getOperationsByType(openApiPath, httpMethodsToMessages) {
|
|
1644
|
+
async function getOperationsByType(openApiPath, httpMethodsToMessages, parsedDocument) {
|
|
1644
1645
|
try {
|
|
1645
|
-
const api = await SwaggerParser.validate(openApiPath);
|
|
1646
|
+
const api = parsedDocument || await SwaggerParser.validate(openApiPath);
|
|
1646
1647
|
const operations = [];
|
|
1647
1648
|
for (const path4 in api.paths) {
|
|
1648
1649
|
const pathItem = api.paths[path4];
|
|
@@ -1810,7 +1811,7 @@ var getSummary2 = (message2) => {
|
|
|
1810
1811
|
return escapeSpecialCharactersThatBreakMarkdown(eventCatalogMessageSummary);
|
|
1811
1812
|
};
|
|
1812
1813
|
var buildMessage = async (pathToFile, document2, operation, generateMarkdown, messageIdConfig, serviceId, serviceVersion) => {
|
|
1813
|
-
const requestBodiesAndResponses = await getSchemasByOperationId(pathToFile, operation.operationId);
|
|
1814
|
+
const requestBodiesAndResponses = await getSchemasByOperationId(pathToFile, operation.operationId, document2);
|
|
1814
1815
|
const extensions = operation.extensions || {};
|
|
1815
1816
|
const operationTags = operation.tags.map((badge) => ({
|
|
1816
1817
|
content: `tag:${badge}`,
|
|
@@ -4067,7 +4068,7 @@ import { join } from "path";
|
|
|
4067
4068
|
// package.json
|
|
4068
4069
|
var package_default = {
|
|
4069
4070
|
name: "@eventcatalog/generator-openapi",
|
|
4070
|
-
version: "7.
|
|
4071
|
+
version: "7.7.1",
|
|
4071
4072
|
description: "OpenAPI generator for EventCatalog",
|
|
4072
4073
|
scripts: {
|
|
4073
4074
|
build: "tsup",
|
|
@@ -4104,7 +4105,7 @@ var package_default = {
|
|
|
4104
4105
|
dependencies: {
|
|
4105
4106
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
4106
4107
|
"@changesets/cli": "^2.27.7",
|
|
4107
|
-
"@eventcatalog/sdk": "
|
|
4108
|
+
"@eventcatalog/sdk": "2.12.1",
|
|
4108
4109
|
chalk: "4.1.2",
|
|
4109
4110
|
"js-yaml": "^4.1.0",
|
|
4110
4111
|
"openapi-types": "^12.1.3",
|
|
@@ -4180,6 +4181,25 @@ var isVersionLessThan = (version, givenVersion) => {
|
|
|
4180
4181
|
var toUniqueArray = (array) => {
|
|
4181
4182
|
return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
|
|
4182
4183
|
};
|
|
4184
|
+
var fetchAuthenticatedSpec = async (specUrl, headers) => {
|
|
4185
|
+
const response = await fetch(specUrl, { method: "GET", headers });
|
|
4186
|
+
if (!response.ok) {
|
|
4187
|
+
throw new Error(`Failed to fetch file: ${specUrl}, status: ${response.status}`);
|
|
4188
|
+
}
|
|
4189
|
+
const content = await response.text();
|
|
4190
|
+
const contentType = response.headers.get("content-type") || "";
|
|
4191
|
+
if (contentType.includes("json")) {
|
|
4192
|
+
return JSON.parse(content);
|
|
4193
|
+
}
|
|
4194
|
+
if (contentType.includes("yaml")) {
|
|
4195
|
+
return yaml.load(content);
|
|
4196
|
+
}
|
|
4197
|
+
try {
|
|
4198
|
+
return JSON.parse(content);
|
|
4199
|
+
} catch {
|
|
4200
|
+
return yaml.load(content);
|
|
4201
|
+
}
|
|
4202
|
+
};
|
|
4183
4203
|
var mergeOpenApiIntoSpecifications = (existingSpecs, openapiFileName) => {
|
|
4184
4204
|
if (Array.isArray(existingSpecs)) {
|
|
4185
4205
|
return [...existingSpecs.filter((spec) => spec.type !== "openapi"), { type: "openapi", path: openapiFileName }];
|
|
@@ -4213,8 +4233,17 @@ var index_default = async (_, options) => {
|
|
|
4213
4233
|
const specFiles = Array.isArray(serviceSpec.path) ? serviceSpec.path : [serviceSpec.path];
|
|
4214
4234
|
const specs = specFiles.map(async (specFile) => {
|
|
4215
4235
|
try {
|
|
4216
|
-
|
|
4217
|
-
const
|
|
4236
|
+
const isUrl = specFile.startsWith("http");
|
|
4237
|
+
const hasHeaders = serviceSpec.headers && Object.keys(serviceSpec.headers).length > 0;
|
|
4238
|
+
let document2;
|
|
4239
|
+
if (isUrl && hasHeaders) {
|
|
4240
|
+
const parsedSpec = await fetchAuthenticatedSpec(specFile, serviceSpec.headers);
|
|
4241
|
+
await SwaggerParser2.validate(parsedSpec);
|
|
4242
|
+
document2 = await SwaggerParser2.dereference(parsedSpec);
|
|
4243
|
+
} else {
|
|
4244
|
+
await SwaggerParser2.validate(specFile);
|
|
4245
|
+
document2 = await SwaggerParser2.dereference(specFile);
|
|
4246
|
+
}
|
|
4218
4247
|
return {
|
|
4219
4248
|
document: document2,
|
|
4220
4249
|
path: specFile,
|
|
@@ -4311,6 +4340,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4311
4340
|
let owners = service.owners || [];
|
|
4312
4341
|
let repository = null;
|
|
4313
4342
|
let styles2 = null;
|
|
4343
|
+
let serviceDiagrams = null;
|
|
4314
4344
|
let serviceWritesTo = configuredWritesTo;
|
|
4315
4345
|
let serviceReadsFrom = configuredReadsFrom;
|
|
4316
4346
|
const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
|
|
@@ -4323,6 +4353,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4323
4353
|
styles2 = latestServiceInCatalog.styles || null;
|
|
4324
4354
|
serviceBadges = latestServiceInCatalog.badges || null;
|
|
4325
4355
|
serviceAttachments = latestServiceInCatalog.attachments || null;
|
|
4356
|
+
serviceDiagrams = latestServiceInCatalog.diagrams || null;
|
|
4326
4357
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4327
4358
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4328
4359
|
if (persistPreviousSpecificationFiles && latestServiceInCatalog.specifications) {
|
|
@@ -4333,7 +4364,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4333
4364
|
// @ts-ignore
|
|
4334
4365
|
toUniqueArray([...latestServiceInCatalog.receives, ...receives])
|
|
4335
4366
|
) : receives;
|
|
4336
|
-
console.log("MEOW", "HELLO", latestServiceInCatalog.writesTo, serviceWritesTo);
|
|
4337
4367
|
serviceWritesTo = latestServiceInCatalog.writesTo ? toUniqueArray([...latestServiceInCatalog.writesTo, ...configuredWritesTo]) : configuredWritesTo;
|
|
4338
4368
|
serviceReadsFrom = latestServiceInCatalog.readsFrom ? toUniqueArray([...latestServiceInCatalog.readsFrom, ...configuredReadsFrom]) : configuredReadsFrom;
|
|
4339
4369
|
}
|
|
@@ -4351,6 +4381,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4351
4381
|
...owners ? { owners } : {},
|
|
4352
4382
|
...repository ? { repository } : {},
|
|
4353
4383
|
...styles2 ? { styles: styles2 } : {},
|
|
4384
|
+
...serviceDiagrams ? { diagrams: serviceDiagrams } : {},
|
|
4354
4385
|
...isServiceMarkedAsDraft ? { draft: true } : {},
|
|
4355
4386
|
...serviceAttachments ? { attachments: serviceAttachments } : {},
|
|
4356
4387
|
...serviceWritesTo.length > 0 ? { writesTo: serviceWritesTo } : {},
|
|
@@ -4381,7 +4412,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4381
4412
|
}
|
|
4382
4413
|
};
|
|
4383
4414
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4384
|
-
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages);
|
|
4415
|
+
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4385
4416
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4386
4417
|
const version = options.serviceVersion || document2.info.version;
|
|
4387
4418
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
@@ -4507,7 +4538,11 @@ var getParsedSpecFile = (service, document2) => {
|
|
|
4507
4538
|
var getRawSpecFile = async (service) => {
|
|
4508
4539
|
const specPath = service.path;
|
|
4509
4540
|
if (specPath.startsWith("http")) {
|
|
4510
|
-
const
|
|
4541
|
+
const fetchOptions = { method: "GET" };
|
|
4542
|
+
if (service.headers && Object.keys(service.headers).length > 0) {
|
|
4543
|
+
fetchOptions.headers = service.headers;
|
|
4544
|
+
}
|
|
4545
|
+
const file = await fetch(specPath, fetchOptions);
|
|
4511
4546
|
if (!file.ok) {
|
|
4512
4547
|
throw new Error(`Failed to fetch file: ${specPath}, status: ${file.status}`);
|
|
4513
4548
|
}
|