@eventcatalog/generator-openapi 7.6.4 → 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 +54 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -16
- 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,32 @@ 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
|
+
};
|
|
4208
|
+
var mergeOpenApiIntoSpecifications = (existingSpecs, openapiFileName) => {
|
|
4209
|
+
if (Array.isArray(existingSpecs)) {
|
|
4210
|
+
return [...existingSpecs.filter((spec) => spec.type !== "openapi"), { type: "openapi", path: openapiFileName }];
|
|
4211
|
+
}
|
|
4212
|
+
const { openapiPath: _, ...rest } = existingSpecs || {};
|
|
4213
|
+
return { openapiPath: openapiFileName, ...rest };
|
|
4214
|
+
};
|
|
4188
4215
|
var index_default = async (_, options) => {
|
|
4189
4216
|
if (!process.env.PROJECT_DIR) {
|
|
4190
4217
|
process.env.PROJECT_DIR = process.cwd();
|
|
@@ -4211,8 +4238,17 @@ var index_default = async (_, options) => {
|
|
|
4211
4238
|
const specFiles = Array.isArray(serviceSpec.path) ? serviceSpec.path : [serviceSpec.path];
|
|
4212
4239
|
const specs = specFiles.map(async (specFile) => {
|
|
4213
4240
|
try {
|
|
4214
|
-
|
|
4215
|
-
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
|
+
}
|
|
4216
4252
|
return {
|
|
4217
4253
|
document: document2,
|
|
4218
4254
|
path: specFile,
|
|
@@ -4323,16 +4359,14 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4323
4359
|
serviceAttachments = latestServiceInCatalog.attachments || null;
|
|
4324
4360
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4325
4361
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
};
|
|
4362
|
+
if (persistPreviousSpecificationFiles && latestServiceInCatalog.specifications) {
|
|
4363
|
+
serviceSpecifications = mergeOpenApiIntoSpecifications(latestServiceInCatalog.specifications, service.schemaPath);
|
|
4364
|
+
}
|
|
4330
4365
|
if (latestServiceInCatalog.version === version) {
|
|
4331
4366
|
receives = latestServiceInCatalog.receives ? (
|
|
4332
4367
|
// @ts-ignore
|
|
4333
4368
|
toUniqueArray([...latestServiceInCatalog.receives, ...receives])
|
|
4334
4369
|
) : receives;
|
|
4335
|
-
console.log("MEOW", "HELLO", latestServiceInCatalog.writesTo, serviceWritesTo);
|
|
4336
4370
|
serviceWritesTo = latestServiceInCatalog.writesTo ? toUniqueArray([...latestServiceInCatalog.writesTo, ...configuredWritesTo]) : configuredWritesTo;
|
|
4337
4371
|
serviceReadsFrom = latestServiceInCatalog.readsFrom ? toUniqueArray([...latestServiceInCatalog.readsFrom, ...configuredReadsFrom]) : configuredReadsFrom;
|
|
4338
4372
|
}
|
|
@@ -4380,7 +4414,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4380
4414
|
}
|
|
4381
4415
|
};
|
|
4382
4416
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4383
|
-
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages);
|
|
4417
|
+
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4384
4418
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4385
4419
|
const version = options.serviceVersion || document2.info.version;
|
|
4386
4420
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
@@ -4506,7 +4540,11 @@ var getParsedSpecFile = (service, document2) => {
|
|
|
4506
4540
|
var getRawSpecFile = async (service) => {
|
|
4507
4541
|
const specPath = service.path;
|
|
4508
4542
|
if (specPath.startsWith("http")) {
|
|
4509
|
-
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);
|
|
4510
4548
|
if (!file.ok) {
|
|
4511
4549
|
throw new Error(`Failed to fetch file: ${specPath}, status: ${file.status}`);
|
|
4512
4550
|
}
|