@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.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.1",
|
|
4076
4077
|
description: "OpenAPI generator for EventCatalog",
|
|
4077
4078
|
scripts: {
|
|
4078
4079
|
build: "tsup",
|
|
@@ -4109,7 +4110,7 @@ var package_default = {
|
|
|
4109
4110
|
dependencies: {
|
|
4110
4111
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
4111
4112
|
"@changesets/cli": "^2.27.7",
|
|
4112
|
-
"@eventcatalog/sdk": "
|
|
4113
|
+
"@eventcatalog/sdk": "2.12.1",
|
|
4113
4114
|
chalk: "4.1.2",
|
|
4114
4115
|
"js-yaml": "^4.1.0",
|
|
4115
4116
|
"openapi-types": "^12.1.3",
|
|
@@ -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,
|
|
@@ -4316,6 +4345,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4316
4345
|
let owners = service.owners || [];
|
|
4317
4346
|
let repository = null;
|
|
4318
4347
|
let styles2 = null;
|
|
4348
|
+
let serviceDiagrams = null;
|
|
4319
4349
|
let serviceWritesTo = configuredWritesTo;
|
|
4320
4350
|
let serviceReadsFrom = configuredReadsFrom;
|
|
4321
4351
|
const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
|
|
@@ -4328,6 +4358,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4328
4358
|
styles2 = latestServiceInCatalog.styles || null;
|
|
4329
4359
|
serviceBadges = latestServiceInCatalog.badges || null;
|
|
4330
4360
|
serviceAttachments = latestServiceInCatalog.attachments || null;
|
|
4361
|
+
serviceDiagrams = latestServiceInCatalog.diagrams || null;
|
|
4331
4362
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4332
4363
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4333
4364
|
if (persistPreviousSpecificationFiles && latestServiceInCatalog.specifications) {
|
|
@@ -4338,7 +4369,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4338
4369
|
// @ts-ignore
|
|
4339
4370
|
toUniqueArray([...latestServiceInCatalog.receives, ...receives])
|
|
4340
4371
|
) : receives;
|
|
4341
|
-
console.log("MEOW", "HELLO", latestServiceInCatalog.writesTo, serviceWritesTo);
|
|
4342
4372
|
serviceWritesTo = latestServiceInCatalog.writesTo ? toUniqueArray([...latestServiceInCatalog.writesTo, ...configuredWritesTo]) : configuredWritesTo;
|
|
4343
4373
|
serviceReadsFrom = latestServiceInCatalog.readsFrom ? toUniqueArray([...latestServiceInCatalog.readsFrom, ...configuredReadsFrom]) : configuredReadsFrom;
|
|
4344
4374
|
}
|
|
@@ -4356,6 +4386,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4356
4386
|
...owners ? { owners } : {},
|
|
4357
4387
|
...repository ? { repository } : {},
|
|
4358
4388
|
...styles2 ? { styles: styles2 } : {},
|
|
4389
|
+
...serviceDiagrams ? { diagrams: serviceDiagrams } : {},
|
|
4359
4390
|
...isServiceMarkedAsDraft ? { draft: true } : {},
|
|
4360
4391
|
...serviceAttachments ? { attachments: serviceAttachments } : {},
|
|
4361
4392
|
...serviceWritesTo.length > 0 ? { writesTo: serviceWritesTo } : {},
|
|
@@ -4386,7 +4417,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4386
4417
|
}
|
|
4387
4418
|
};
|
|
4388
4419
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4389
|
-
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages);
|
|
4420
|
+
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4390
4421
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4391
4422
|
const version = options.serviceVersion || document2.info.version;
|
|
4392
4423
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
@@ -4512,7 +4543,11 @@ var getParsedSpecFile = (service, document2) => {
|
|
|
4512
4543
|
var getRawSpecFile = async (service) => {
|
|
4513
4544
|
const specPath = service.path;
|
|
4514
4545
|
if (specPath.startsWith("http")) {
|
|
4515
|
-
const
|
|
4546
|
+
const fetchOptions = { method: "GET" };
|
|
4547
|
+
if (service.headers && Object.keys(service.headers).length > 0) {
|
|
4548
|
+
fetchOptions.headers = service.headers;
|
|
4549
|
+
}
|
|
4550
|
+
const file = await fetch(specPath, fetchOptions);
|
|
4516
4551
|
if (!file.ok) {
|
|
4517
4552
|
throw new Error(`Failed to fetch file: ${specPath}, status: ${file.status}`);
|
|
4518
4553
|
}
|