@eventcatalog/generator-openapi 7.6.5 → 7.7.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.js +44 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -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 +1 -1
package/dist/index.js
CHANGED
|
@@ -1594,9 +1594,9 @@ var buildService = (serviceOptions, document2, generateMarkdown) => {
|
|
|
1594
1594
|
// src/utils/openapi.ts
|
|
1595
1595
|
var import_swagger_parser = __toESM(require("@apidevtools/swagger-parser"));
|
|
1596
1596
|
var DEFAULT_MESSAGE_TYPE = "query";
|
|
1597
|
-
async function getSchemasByOperationId(filePath, operationId) {
|
|
1597
|
+
async function getSchemasByOperationId(filePath, operationId, parsedDocument) {
|
|
1598
1598
|
try {
|
|
1599
|
-
const api = await import_swagger_parser.default.dereference(filePath);
|
|
1599
|
+
const api = parsedDocument || await import_swagger_parser.default.dereference(filePath);
|
|
1600
1600
|
const schemas = {
|
|
1601
1601
|
parameters: [],
|
|
1602
1602
|
requestBody: null,
|
|
@@ -1617,7 +1617,8 @@ async function getSchemasByOperationId(filePath, operationId) {
|
|
|
1617
1617
|
for (const [statusCode, response] of Object.entries(typedOperation.responses)) {
|
|
1618
1618
|
if (response.content) {
|
|
1619
1619
|
const contentType = Object.keys(response.content)[0];
|
|
1620
|
-
|
|
1620
|
+
const schemaOrContent = response.content[contentType].schema || response.content[contentType];
|
|
1621
|
+
schemas.responses[statusCode] = { ...schemaOrContent };
|
|
1621
1622
|
schemas.responses[statusCode].isSchema = !!response.content[contentType].schema;
|
|
1622
1623
|
}
|
|
1623
1624
|
}
|
|
@@ -1645,9 +1646,9 @@ function getDeprecatedValues(openAPIOperation) {
|
|
|
1645
1646
|
}
|
|
1646
1647
|
return deprecated;
|
|
1647
1648
|
}
|
|
1648
|
-
async function getOperationsByType(openApiPath, httpMethodsToMessages) {
|
|
1649
|
+
async function getOperationsByType(openApiPath, httpMethodsToMessages, parsedDocument) {
|
|
1649
1650
|
try {
|
|
1650
|
-
const api = await import_swagger_parser.default.validate(openApiPath);
|
|
1651
|
+
const api = parsedDocument || await import_swagger_parser.default.validate(openApiPath);
|
|
1651
1652
|
const operations = [];
|
|
1652
1653
|
for (const path4 in api.paths) {
|
|
1653
1654
|
const pathItem = api.paths[path4];
|
|
@@ -1815,7 +1816,7 @@ var getSummary2 = (message2) => {
|
|
|
1815
1816
|
return escapeSpecialCharactersThatBreakMarkdown(eventCatalogMessageSummary);
|
|
1816
1817
|
};
|
|
1817
1818
|
var buildMessage = async (pathToFile, document2, operation, generateMarkdown, messageIdConfig, serviceId, serviceVersion) => {
|
|
1818
|
-
const requestBodiesAndResponses = await getSchemasByOperationId(pathToFile, operation.operationId);
|
|
1819
|
+
const requestBodiesAndResponses = await getSchemasByOperationId(pathToFile, operation.operationId, document2);
|
|
1819
1820
|
const extensions = operation.extensions || {};
|
|
1820
1821
|
const operationTags = operation.tags.map((badge) => ({
|
|
1821
1822
|
content: `tag:${badge}`,
|
|
@@ -4072,7 +4073,7 @@ var import_node_path = require("path");
|
|
|
4072
4073
|
// package.json
|
|
4073
4074
|
var package_default = {
|
|
4074
4075
|
name: "@eventcatalog/generator-openapi",
|
|
4075
|
-
version: "7.
|
|
4076
|
+
version: "7.7.0",
|
|
4076
4077
|
description: "OpenAPI generator for EventCatalog",
|
|
4077
4078
|
scripts: {
|
|
4078
4079
|
build: "tsup",
|
|
@@ -4185,6 +4186,25 @@ var isVersionLessThan = (version, givenVersion) => {
|
|
|
4185
4186
|
var toUniqueArray = (array) => {
|
|
4186
4187
|
return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
|
|
4187
4188
|
};
|
|
4189
|
+
var fetchAuthenticatedSpec = async (specUrl, headers) => {
|
|
4190
|
+
const response = await fetch(specUrl, { method: "GET", headers });
|
|
4191
|
+
if (!response.ok) {
|
|
4192
|
+
throw new Error(`Failed to fetch file: ${specUrl}, status: ${response.status}`);
|
|
4193
|
+
}
|
|
4194
|
+
const content = await response.text();
|
|
4195
|
+
const contentType = response.headers.get("content-type") || "";
|
|
4196
|
+
if (contentType.includes("json")) {
|
|
4197
|
+
return JSON.parse(content);
|
|
4198
|
+
}
|
|
4199
|
+
if (contentType.includes("yaml")) {
|
|
4200
|
+
return import_js_yaml.default.load(content);
|
|
4201
|
+
}
|
|
4202
|
+
try {
|
|
4203
|
+
return JSON.parse(content);
|
|
4204
|
+
} catch {
|
|
4205
|
+
return import_js_yaml.default.load(content);
|
|
4206
|
+
}
|
|
4207
|
+
};
|
|
4188
4208
|
var mergeOpenApiIntoSpecifications = (existingSpecs, openapiFileName) => {
|
|
4189
4209
|
if (Array.isArray(existingSpecs)) {
|
|
4190
4210
|
return [...existingSpecs.filter((spec) => spec.type !== "openapi"), { type: "openapi", path: openapiFileName }];
|
|
@@ -4218,8 +4238,17 @@ var index_default = async (_, options) => {
|
|
|
4218
4238
|
const specFiles = Array.isArray(serviceSpec.path) ? serviceSpec.path : [serviceSpec.path];
|
|
4219
4239
|
const specs = specFiles.map(async (specFile) => {
|
|
4220
4240
|
try {
|
|
4221
|
-
|
|
4222
|
-
const
|
|
4241
|
+
const isUrl = specFile.startsWith("http");
|
|
4242
|
+
const hasHeaders = serviceSpec.headers && Object.keys(serviceSpec.headers).length > 0;
|
|
4243
|
+
let document2;
|
|
4244
|
+
if (isUrl && hasHeaders) {
|
|
4245
|
+
const parsedSpec = await fetchAuthenticatedSpec(specFile, serviceSpec.headers);
|
|
4246
|
+
await import_swagger_parser2.default.validate(parsedSpec);
|
|
4247
|
+
document2 = await import_swagger_parser2.default.dereference(parsedSpec);
|
|
4248
|
+
} else {
|
|
4249
|
+
await import_swagger_parser2.default.validate(specFile);
|
|
4250
|
+
document2 = await import_swagger_parser2.default.dereference(specFile);
|
|
4251
|
+
}
|
|
4223
4252
|
return {
|
|
4224
4253
|
document: document2,
|
|
4225
4254
|
path: specFile,
|
|
@@ -4338,7 +4367,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4338
4367
|
// @ts-ignore
|
|
4339
4368
|
toUniqueArray([...latestServiceInCatalog.receives, ...receives])
|
|
4340
4369
|
) : receives;
|
|
4341
|
-
console.log("MEOW", "HELLO", latestServiceInCatalog.writesTo, serviceWritesTo);
|
|
4342
4370
|
serviceWritesTo = latestServiceInCatalog.writesTo ? toUniqueArray([...latestServiceInCatalog.writesTo, ...configuredWritesTo]) : configuredWritesTo;
|
|
4343
4371
|
serviceReadsFrom = latestServiceInCatalog.readsFrom ? toUniqueArray([...latestServiceInCatalog.readsFrom, ...configuredReadsFrom]) : configuredReadsFrom;
|
|
4344
4372
|
}
|
|
@@ -4386,7 +4414,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4386
4414
|
}
|
|
4387
4415
|
};
|
|
4388
4416
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4389
|
-
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages);
|
|
4417
|
+
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4390
4418
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4391
4419
|
const version = options.serviceVersion || document2.info.version;
|
|
4392
4420
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
@@ -4512,7 +4540,11 @@ var getParsedSpecFile = (service, document2) => {
|
|
|
4512
4540
|
var getRawSpecFile = async (service) => {
|
|
4513
4541
|
const specPath = service.path;
|
|
4514
4542
|
if (specPath.startsWith("http")) {
|
|
4515
|
-
const
|
|
4543
|
+
const fetchOptions = { method: "GET" };
|
|
4544
|
+
if (service.headers && Object.keys(service.headers).length > 0) {
|
|
4545
|
+
fetchOptions.headers = service.headers;
|
|
4546
|
+
}
|
|
4547
|
+
const file = await fetch(specPath, fetchOptions);
|
|
4516
4548
|
if (!file.ok) {
|
|
4517
4549
|
throw new Error(`Failed to fetch file: ${specPath}, status: ${file.status}`);
|
|
4518
4550
|
}
|