@eventcatalog/generator-openapi 7.8.0 → 7.9.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.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +79 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -7
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +13 -7
- package/dist/types.d.ts +13 -7
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1605,15 +1605,19 @@ async function getSchemasByOperationId(filePath, operationId, parsedDocument) {
|
|
|
1605
1605
|
}
|
|
1606
1606
|
if (typedOperation.requestBody && typedOperation.requestBody.content) {
|
|
1607
1607
|
const contentType = Object.keys(typedOperation.requestBody.content)[0];
|
|
1608
|
-
|
|
1608
|
+
if (contentType) {
|
|
1609
|
+
schemas.requestBody = typedOperation.requestBody.content[contentType].schema;
|
|
1610
|
+
}
|
|
1609
1611
|
}
|
|
1610
1612
|
if (typedOperation.responses) {
|
|
1611
1613
|
for (const [statusCode, response] of Object.entries(typedOperation.responses)) {
|
|
1612
1614
|
if (response.content) {
|
|
1613
1615
|
const contentType = Object.keys(response.content)[0];
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1616
|
+
if (contentType) {
|
|
1617
|
+
const schemaOrContent = response.content[contentType].schema || response.content[contentType];
|
|
1618
|
+
schemas.responses[statusCode] = { ...schemaOrContent };
|
|
1619
|
+
schemas.responses[statusCode].isSchema = !!response.content[contentType].schema;
|
|
1620
|
+
}
|
|
1617
1621
|
}
|
|
1618
1622
|
}
|
|
1619
1623
|
}
|
|
@@ -1627,6 +1631,57 @@ async function getSchemasByOperationId(filePath, operationId, parsedDocument) {
|
|
|
1627
1631
|
return;
|
|
1628
1632
|
}
|
|
1629
1633
|
}
|
|
1634
|
+
async function getExamplesByOperationId(filePath, operationId, parsedDocument) {
|
|
1635
|
+
const api = parsedDocument || await SwaggerParser.dereference(filePath);
|
|
1636
|
+
const examples = [];
|
|
1637
|
+
for (const [, pathItem] of Object.entries(api.paths)) {
|
|
1638
|
+
for (const [, operation] of Object.entries(pathItem)) {
|
|
1639
|
+
const typedOperation = operation;
|
|
1640
|
+
if (typedOperation.operationId !== operationId) continue;
|
|
1641
|
+
if (typedOperation.requestBody?.content) {
|
|
1642
|
+
const contentType = Object.keys(typedOperation.requestBody.content)[0];
|
|
1643
|
+
if (contentType) {
|
|
1644
|
+
const mediaType = typedOperation.requestBody.content[contentType];
|
|
1645
|
+
if (mediaType.example) {
|
|
1646
|
+
examples.push({ fileName: "example.json", content: JSON.stringify(mediaType.example, null, 2) });
|
|
1647
|
+
}
|
|
1648
|
+
if (mediaType.examples) {
|
|
1649
|
+
for (const [name, exampleObj] of Object.entries(mediaType.examples)) {
|
|
1650
|
+
if (exampleObj.value) {
|
|
1651
|
+
examples.push({ fileName: `${name}.json`, content: JSON.stringify(exampleObj.value, null, 2) });
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
}
|
|
1657
|
+
if (typedOperation.responses) {
|
|
1658
|
+
for (const [statusCode, response] of Object.entries(typedOperation.responses)) {
|
|
1659
|
+
if (response.content) {
|
|
1660
|
+
const contentType = Object.keys(response.content)[0];
|
|
1661
|
+
if (contentType) {
|
|
1662
|
+
const mediaType = response.content[contentType];
|
|
1663
|
+
if (mediaType.example) {
|
|
1664
|
+
examples.push({ fileName: `response-${statusCode}.json`, content: JSON.stringify(mediaType.example, null, 2) });
|
|
1665
|
+
}
|
|
1666
|
+
if (mediaType.examples) {
|
|
1667
|
+
for (const [name, exampleObj] of Object.entries(mediaType.examples)) {
|
|
1668
|
+
if (exampleObj.value) {
|
|
1669
|
+
examples.push({
|
|
1670
|
+
fileName: `response-${statusCode}-${name}.json`,
|
|
1671
|
+
content: JSON.stringify(exampleObj.value, null, 2)
|
|
1672
|
+
});
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
return examples;
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
return examples;
|
|
1684
|
+
}
|
|
1630
1685
|
function getDeprecatedValues(openAPIOperation) {
|
|
1631
1686
|
const deprecatedDate = openAPIOperation["x-eventcatalog-deprecated-date"] || null;
|
|
1632
1687
|
const deprecatedMessage = openAPIOperation["x-eventcatalog-deprecated-message"] || null;
|
|
@@ -1884,7 +1939,10 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1884
1939
|
getQuery,
|
|
1885
1940
|
rmQueryById,
|
|
1886
1941
|
writeQuery,
|
|
1887
|
-
addFileToQuery
|
|
1942
|
+
addFileToQuery,
|
|
1943
|
+
addExampleToEvent,
|
|
1944
|
+
addExampleToCommand,
|
|
1945
|
+
addExampleToQuery
|
|
1888
1946
|
} = utils(projectDirectory);
|
|
1889
1947
|
const messageTypeMap = {
|
|
1890
1948
|
event: {
|
|
@@ -1893,6 +1951,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1893
1951
|
rmMessageById: rmEventById,
|
|
1894
1952
|
writeMessage: writeEvent,
|
|
1895
1953
|
addFileToMessage: addFileToEvent,
|
|
1954
|
+
addExampleToMessage: addExampleToEvent,
|
|
1896
1955
|
collection: "events"
|
|
1897
1956
|
},
|
|
1898
1957
|
command: {
|
|
@@ -1901,6 +1960,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1901
1960
|
rmMessageById: rmCommandById,
|
|
1902
1961
|
writeMessage: writeCommand,
|
|
1903
1962
|
addFileToMessage: addFileToCommand,
|
|
1963
|
+
addExampleToMessage: addExampleToCommand,
|
|
1904
1964
|
collection: "commands"
|
|
1905
1965
|
},
|
|
1906
1966
|
query: {
|
|
@@ -1909,6 +1969,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1909
1969
|
rmMessageById: rmQueryById,
|
|
1910
1970
|
writeMessage: writeQuery,
|
|
1911
1971
|
addFileToMessage: addFileToQuery,
|
|
1972
|
+
addExampleToMessage: addExampleToQuery,
|
|
1912
1973
|
collection: "queries"
|
|
1913
1974
|
}
|
|
1914
1975
|
};
|
|
@@ -4147,7 +4208,7 @@ import { join } from "path";
|
|
|
4147
4208
|
// package.json
|
|
4148
4209
|
var package_default = {
|
|
4149
4210
|
name: "@eventcatalog/generator-openapi",
|
|
4150
|
-
version: "7.
|
|
4211
|
+
version: "7.9.1",
|
|
4151
4212
|
description: "OpenAPI generator for EventCatalog",
|
|
4152
4213
|
scripts: {
|
|
4153
4214
|
build: "tsup",
|
|
@@ -4184,7 +4245,7 @@ var package_default = {
|
|
|
4184
4245
|
dependencies: {
|
|
4185
4246
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
4186
4247
|
"@changesets/cli": "^2.27.7",
|
|
4187
|
-
"@eventcatalog/sdk": "2.
|
|
4248
|
+
"@eventcatalog/sdk": "2.17.4",
|
|
4188
4249
|
chalk: "4.1.2",
|
|
4189
4250
|
"js-yaml": "^4.1.0",
|
|
4190
4251
|
"openapi-types": "^12.1.3",
|
|
@@ -4581,6 +4642,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4581
4642
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4582
4643
|
const version = options.serviceVersion || document2.info.version;
|
|
4583
4644
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
4645
|
+
const parseExamples = options.parseExamples ?? true;
|
|
4584
4646
|
const isDraft = options.isDraft ?? null;
|
|
4585
4647
|
let receives = [], sends = [];
|
|
4586
4648
|
for (const operation of operations) {
|
|
@@ -4601,6 +4663,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4601
4663
|
console.log(chalk4.blue(`Processing message: ${message2.name} (v${message2.version})`));
|
|
4602
4664
|
const {
|
|
4603
4665
|
addFileToMessage,
|
|
4666
|
+
addExampleToMessage,
|
|
4604
4667
|
writeMessage,
|
|
4605
4668
|
getMessage,
|
|
4606
4669
|
versionMessage,
|
|
@@ -4687,6 +4750,15 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4687
4750
|
);
|
|
4688
4751
|
}
|
|
4689
4752
|
}
|
|
4753
|
+
if (parseExamples && operation.operationId) {
|
|
4754
|
+
const operationExamples = await getExamplesByOperationId(pathToSpec, operation.operationId, document2);
|
|
4755
|
+
for (const example of operationExamples) {
|
|
4756
|
+
await addExampleToMessage(message2.id, { content: example.content, fileName: example.fileName }, message2.version);
|
|
4757
|
+
}
|
|
4758
|
+
if (operationExamples.length > 0) {
|
|
4759
|
+
console.log(chalk4.cyan(` - ${operationExamples.length} example(s) added to message (v${message2.version})`));
|
|
4760
|
+
}
|
|
4761
|
+
}
|
|
4690
4762
|
console.log(chalk4.cyan(` - Message (v${message2.version}) created`));
|
|
4691
4763
|
if (!operation.operationId) {
|
|
4692
4764
|
console.log(chalk4.yellow(` - OperationId not found for ${operation.method} ${operation.path}, creating one...`));
|