@eventcatalog/generator-openapi 7.7.2 → 7.9.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.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +159 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +159 -15
- 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
|
@@ -1627,6 +1627,53 @@ async function getSchemasByOperationId(filePath, operationId, parsedDocument) {
|
|
|
1627
1627
|
return;
|
|
1628
1628
|
}
|
|
1629
1629
|
}
|
|
1630
|
+
async function getExamplesByOperationId(filePath, operationId, parsedDocument) {
|
|
1631
|
+
const api = parsedDocument || await SwaggerParser.dereference(filePath);
|
|
1632
|
+
const examples = [];
|
|
1633
|
+
for (const [, pathItem] of Object.entries(api.paths)) {
|
|
1634
|
+
for (const [, operation] of Object.entries(pathItem)) {
|
|
1635
|
+
const typedOperation = operation;
|
|
1636
|
+
if (typedOperation.operationId !== operationId) continue;
|
|
1637
|
+
if (typedOperation.requestBody?.content) {
|
|
1638
|
+
const contentType = Object.keys(typedOperation.requestBody.content)[0];
|
|
1639
|
+
const mediaType = typedOperation.requestBody.content[contentType];
|
|
1640
|
+
if (mediaType.example) {
|
|
1641
|
+
examples.push({ fileName: "example.json", content: JSON.stringify(mediaType.example, null, 2) });
|
|
1642
|
+
}
|
|
1643
|
+
if (mediaType.examples) {
|
|
1644
|
+
for (const [name, exampleObj] of Object.entries(mediaType.examples)) {
|
|
1645
|
+
if (exampleObj.value) {
|
|
1646
|
+
examples.push({ fileName: `${name}.json`, content: JSON.stringify(exampleObj.value, null, 2) });
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
if (typedOperation.responses) {
|
|
1652
|
+
for (const [statusCode, response] of Object.entries(typedOperation.responses)) {
|
|
1653
|
+
if (response.content) {
|
|
1654
|
+
const contentType = Object.keys(response.content)[0];
|
|
1655
|
+
const mediaType = response.content[contentType];
|
|
1656
|
+
if (mediaType.example) {
|
|
1657
|
+
examples.push({ fileName: `response-${statusCode}.json`, content: JSON.stringify(mediaType.example, null, 2) });
|
|
1658
|
+
}
|
|
1659
|
+
if (mediaType.examples) {
|
|
1660
|
+
for (const [name, exampleObj] of Object.entries(mediaType.examples)) {
|
|
1661
|
+
if (exampleObj.value) {
|
|
1662
|
+
examples.push({
|
|
1663
|
+
fileName: `response-${statusCode}-${name}.json`,
|
|
1664
|
+
content: JSON.stringify(exampleObj.value, null, 2)
|
|
1665
|
+
});
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
return examples;
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
return examples;
|
|
1676
|
+
}
|
|
1630
1677
|
function getDeprecatedValues(openAPIOperation) {
|
|
1631
1678
|
const deprecatedDate = openAPIOperation["x-eventcatalog-deprecated-date"] || null;
|
|
1632
1679
|
const deprecatedMessage = openAPIOperation["x-eventcatalog-deprecated-message"] || null;
|
|
@@ -1836,6 +1883,17 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1836
1883
|
const separator = messageIdConfig.separator || "-";
|
|
1837
1884
|
uniqueIdentifier = [serviceId, uniqueIdentifier].join(separator);
|
|
1838
1885
|
}
|
|
1886
|
+
const validOperationMethods = ["GET", "POST", "PUT", "DELETE", "PATCH"];
|
|
1887
|
+
const operationMethod = operation.method.toUpperCase();
|
|
1888
|
+
let operationFrontmatter;
|
|
1889
|
+
if (validOperationMethods.includes(operationMethod)) {
|
|
1890
|
+
const statusCodes = requestBodiesAndResponses?.responses ? Object.keys(requestBodiesAndResponses.responses).filter((code) => code !== "default") : [];
|
|
1891
|
+
operationFrontmatter = {
|
|
1892
|
+
method: operationMethod,
|
|
1893
|
+
path: operation.path,
|
|
1894
|
+
...statusCodes.length > 0 ? { statusCodes } : {}
|
|
1895
|
+
};
|
|
1896
|
+
}
|
|
1839
1897
|
return {
|
|
1840
1898
|
id: extensions["x-eventcatalog-message-id"] || uniqueIdentifier,
|
|
1841
1899
|
version: messageVersion,
|
|
@@ -1850,7 +1908,8 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1850
1908
|
},
|
|
1851
1909
|
messageName,
|
|
1852
1910
|
...extensions["x-eventcatalog-draft"] ? { draft: true } : {},
|
|
1853
|
-
...operation.deprecated ? { deprecated: operation.deprecated } : {}
|
|
1911
|
+
...operation.deprecated ? { deprecated: operation.deprecated } : {},
|
|
1912
|
+
...operationFrontmatter ? { operation: operationFrontmatter } : {}
|
|
1854
1913
|
};
|
|
1855
1914
|
};
|
|
1856
1915
|
|
|
@@ -1872,7 +1931,10 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1872
1931
|
getQuery,
|
|
1873
1932
|
rmQueryById,
|
|
1874
1933
|
writeQuery,
|
|
1875
|
-
addFileToQuery
|
|
1934
|
+
addFileToQuery,
|
|
1935
|
+
addExampleToEvent,
|
|
1936
|
+
addExampleToCommand,
|
|
1937
|
+
addExampleToQuery
|
|
1876
1938
|
} = utils(projectDirectory);
|
|
1877
1939
|
const messageTypeMap = {
|
|
1878
1940
|
event: {
|
|
@@ -1881,6 +1943,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1881
1943
|
rmMessageById: rmEventById,
|
|
1882
1944
|
writeMessage: writeEvent,
|
|
1883
1945
|
addFileToMessage: addFileToEvent,
|
|
1946
|
+
addExampleToMessage: addExampleToEvent,
|
|
1884
1947
|
collection: "events"
|
|
1885
1948
|
},
|
|
1886
1949
|
command: {
|
|
@@ -1889,6 +1952,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1889
1952
|
rmMessageById: rmCommandById,
|
|
1890
1953
|
writeMessage: writeCommand,
|
|
1891
1954
|
addFileToMessage: addFileToCommand,
|
|
1955
|
+
addExampleToMessage: addExampleToCommand,
|
|
1892
1956
|
collection: "commands"
|
|
1893
1957
|
},
|
|
1894
1958
|
query: {
|
|
@@ -1897,6 +1961,7 @@ var getMessageTypeUtils = (projectDirectory, messageType) => {
|
|
|
1897
1961
|
rmMessageById: rmQueryById,
|
|
1898
1962
|
writeMessage: writeQuery,
|
|
1899
1963
|
addFileToMessage: addFileToQuery,
|
|
1964
|
+
addExampleToMessage: addExampleToQuery,
|
|
1900
1965
|
collection: "queries"
|
|
1901
1966
|
}
|
|
1902
1967
|
};
|
|
@@ -2985,27 +3050,95 @@ function ansiRegex({ onlyFirst = false } = {}) {
|
|
|
2985
3050
|
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
2986
3051
|
}
|
|
2987
3052
|
|
|
2988
|
-
// ../../node_modules/.pnpm/strip-ansi@7.
|
|
3053
|
+
// ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
|
|
2989
3054
|
var regex = ansiRegex();
|
|
2990
3055
|
function stripAnsi(string) {
|
|
2991
3056
|
if (typeof string !== "string") {
|
|
2992
3057
|
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
2993
3058
|
}
|
|
3059
|
+
if (!string.includes("\x1B") && !string.includes("\x9B")) {
|
|
3060
|
+
return string;
|
|
3061
|
+
}
|
|
2994
3062
|
return string.replace(regex, "");
|
|
2995
3063
|
}
|
|
2996
3064
|
|
|
2997
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3065
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup-data.js
|
|
3066
|
+
var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
|
|
3067
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
3068
|
+
var halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
3069
|
+
var narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
3070
|
+
var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
|
|
3071
|
+
|
|
3072
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/utilities.js
|
|
3073
|
+
var isInRange = (ranges, codePoint) => {
|
|
3074
|
+
let low = 0;
|
|
3075
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
3076
|
+
while (low <= high) {
|
|
3077
|
+
const mid = Math.floor((low + high) / 2);
|
|
3078
|
+
const i = mid * 2;
|
|
3079
|
+
if (codePoint < ranges[i]) {
|
|
3080
|
+
high = mid - 1;
|
|
3081
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
3082
|
+
low = mid + 1;
|
|
3083
|
+
} else {
|
|
3084
|
+
return true;
|
|
3085
|
+
}
|
|
3086
|
+
}
|
|
3087
|
+
return false;
|
|
3088
|
+
};
|
|
3089
|
+
|
|
3090
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup.js
|
|
3091
|
+
var minimumAmbiguousCodePoint = ambiguousRanges[0];
|
|
3092
|
+
var maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
|
|
3093
|
+
var minimumFullWidthCodePoint = fullwidthRanges[0];
|
|
3094
|
+
var maximumFullWidthCodePoint = fullwidthRanges.at(-1);
|
|
3095
|
+
var minimumHalfWidthCodePoint = halfwidthRanges[0];
|
|
3096
|
+
var maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
|
|
3097
|
+
var minimumNarrowCodePoint = narrowRanges[0];
|
|
3098
|
+
var maximumNarrowCodePoint = narrowRanges.at(-1);
|
|
3099
|
+
var minimumWideCodePoint = wideRanges[0];
|
|
3100
|
+
var maximumWideCodePoint = wideRanges.at(-1);
|
|
3101
|
+
var commonCjkCodePoint = 19968;
|
|
3102
|
+
var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
|
|
3103
|
+
function findWideFastPathRange(ranges) {
|
|
3104
|
+
let fastPathStart = ranges[0];
|
|
3105
|
+
let fastPathEnd = ranges[1];
|
|
3106
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
3107
|
+
const start = ranges[index];
|
|
3108
|
+
const end = ranges[index + 1];
|
|
3109
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
3110
|
+
return [start, end];
|
|
3111
|
+
}
|
|
3112
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
3113
|
+
fastPathStart = start;
|
|
3114
|
+
fastPathEnd = end;
|
|
3115
|
+
}
|
|
3116
|
+
}
|
|
3117
|
+
return [fastPathStart, fastPathEnd];
|
|
3006
3118
|
}
|
|
3119
|
+
var isAmbiguous = (codePoint) => {
|
|
3120
|
+
if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
|
|
3121
|
+
return false;
|
|
3122
|
+
}
|
|
3123
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
3124
|
+
};
|
|
3125
|
+
var isFullWidth = (codePoint) => {
|
|
3126
|
+
if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
|
|
3127
|
+
return false;
|
|
3128
|
+
}
|
|
3129
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
3130
|
+
};
|
|
3131
|
+
var isWide = (codePoint) => {
|
|
3132
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
3133
|
+
return true;
|
|
3134
|
+
}
|
|
3135
|
+
if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
|
|
3136
|
+
return false;
|
|
3137
|
+
}
|
|
3138
|
+
return isInRange(wideRanges, codePoint);
|
|
3139
|
+
};
|
|
3007
3140
|
|
|
3008
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
3141
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/index.js
|
|
3009
3142
|
function validate(codePoint) {
|
|
3010
3143
|
if (!Number.isSafeInteger(codePoint)) {
|
|
3011
3144
|
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
@@ -4067,7 +4200,7 @@ import { join } from "path";
|
|
|
4067
4200
|
// package.json
|
|
4068
4201
|
var package_default = {
|
|
4069
4202
|
name: "@eventcatalog/generator-openapi",
|
|
4070
|
-
version: "7.
|
|
4203
|
+
version: "7.9.0",
|
|
4071
4204
|
description: "OpenAPI generator for EventCatalog",
|
|
4072
4205
|
scripts: {
|
|
4073
4206
|
build: "tsup",
|
|
@@ -4104,7 +4237,7 @@ var package_default = {
|
|
|
4104
4237
|
dependencies: {
|
|
4105
4238
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
4106
4239
|
"@changesets/cli": "^2.27.7",
|
|
4107
|
-
"@eventcatalog/sdk": "2.
|
|
4240
|
+
"@eventcatalog/sdk": "2.17.4",
|
|
4108
4241
|
chalk: "4.1.2",
|
|
4109
4242
|
"js-yaml": "^4.1.0",
|
|
4110
4243
|
"openapi-types": "^12.1.3",
|
|
@@ -4501,6 +4634,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4501
4634
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|
|
4502
4635
|
const version = options.serviceVersion || document2.info.version;
|
|
4503
4636
|
const preserveExistingMessages = options.preserveExistingMessages ?? true;
|
|
4637
|
+
const parseExamples = options.parseExamples ?? true;
|
|
4504
4638
|
const isDraft = options.isDraft ?? null;
|
|
4505
4639
|
let receives = [], sends = [];
|
|
4506
4640
|
for (const operation of operations) {
|
|
@@ -4521,6 +4655,7 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4521
4655
|
console.log(chalk4.blue(`Processing message: ${message2.name} (v${message2.version})`));
|
|
4522
4656
|
const {
|
|
4523
4657
|
addFileToMessage,
|
|
4658
|
+
addExampleToMessage,
|
|
4524
4659
|
writeMessage,
|
|
4525
4660
|
getMessage,
|
|
4526
4661
|
versionMessage,
|
|
@@ -4607,6 +4742,15 @@ var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, o
|
|
|
4607
4742
|
);
|
|
4608
4743
|
}
|
|
4609
4744
|
}
|
|
4745
|
+
if (parseExamples && operation.operationId) {
|
|
4746
|
+
const operationExamples = await getExamplesByOperationId(pathToSpec, operation.operationId, document2);
|
|
4747
|
+
for (const example of operationExamples) {
|
|
4748
|
+
await addExampleToMessage(message2.id, { content: example.content, fileName: example.fileName }, message2.version);
|
|
4749
|
+
}
|
|
4750
|
+
if (operationExamples.length > 0) {
|
|
4751
|
+
console.log(chalk4.cyan(` - ${operationExamples.length} example(s) added to message (v${message2.version})`));
|
|
4752
|
+
}
|
|
4753
|
+
}
|
|
4610
4754
|
console.log(chalk4.cyan(` - Message (v${message2.version}) created`));
|
|
4611
4755
|
if (!operation.operationId) {
|
|
4612
4756
|
console.log(chalk4.yellow(` - OperationId not found for ${operation.method} ${operation.path}, creating one...`));
|