@eventcatalog/generator-openapi 7.7.1 → 7.8.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 +198 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +198 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1533,6 +1533,7 @@ __export(index_exports, {
|
|
|
1533
1533
|
module.exports = __toCommonJS(index_exports);
|
|
1534
1534
|
var import_sdk2 = __toESM(require("@eventcatalog/sdk"));
|
|
1535
1535
|
var import_promises = require("fs/promises");
|
|
1536
|
+
var import_promises2 = __toESM(require("fs/promises"));
|
|
1536
1537
|
var import_chalk4 = __toESM(require("chalk"));
|
|
1537
1538
|
var import_swagger_parser2 = __toESM(require("@apidevtools/swagger-parser"));
|
|
1538
1539
|
|
|
@@ -1579,9 +1580,7 @@ var buildService = (serviceOptions, document2, generateMarkdown) => {
|
|
|
1579
1580
|
name: document2.info.title,
|
|
1580
1581
|
summary: getSummary(document2),
|
|
1581
1582
|
schemaPath,
|
|
1582
|
-
specifications: {
|
|
1583
|
-
openapiPath: schemaPath
|
|
1584
|
-
},
|
|
1583
|
+
specifications: [{ type: "openapi", path: schemaPath }],
|
|
1585
1584
|
markdown: generateMarkdown ? generateMarkdown({ service: serviceOptions, document: document2, markdown: generatedMarkdownForService }) : generatedMarkdownForService,
|
|
1586
1585
|
badges: documentTags.map((tag2) => ({ content: tag2.name, textColor: "blue", backgroundColor: "blue" })),
|
|
1587
1586
|
owners: serviceOptions.owners || [],
|
|
@@ -1842,6 +1841,17 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1842
1841
|
const separator = messageIdConfig.separator || "-";
|
|
1843
1842
|
uniqueIdentifier = [serviceId, uniqueIdentifier].join(separator);
|
|
1844
1843
|
}
|
|
1844
|
+
const validOperationMethods = ["GET", "POST", "PUT", "DELETE", "PATCH"];
|
|
1845
|
+
const operationMethod = operation.method.toUpperCase();
|
|
1846
|
+
let operationFrontmatter;
|
|
1847
|
+
if (validOperationMethods.includes(operationMethod)) {
|
|
1848
|
+
const statusCodes = requestBodiesAndResponses?.responses ? Object.keys(requestBodiesAndResponses.responses).filter((code) => code !== "default") : [];
|
|
1849
|
+
operationFrontmatter = {
|
|
1850
|
+
method: operationMethod,
|
|
1851
|
+
path: operation.path,
|
|
1852
|
+
...statusCodes.length > 0 ? { statusCodes } : {}
|
|
1853
|
+
};
|
|
1854
|
+
}
|
|
1845
1855
|
return {
|
|
1846
1856
|
id: extensions["x-eventcatalog-message-id"] || uniqueIdentifier,
|
|
1847
1857
|
version: messageVersion,
|
|
@@ -1856,7 +1866,8 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1856
1866
|
},
|
|
1857
1867
|
messageName,
|
|
1858
1868
|
...extensions["x-eventcatalog-draft"] ? { draft: true } : {},
|
|
1859
|
-
...operation.deprecated ? { deprecated: operation.deprecated } : {}
|
|
1869
|
+
...operation.deprecated ? { deprecated: operation.deprecated } : {},
|
|
1870
|
+
...operationFrontmatter ? { operation: operationFrontmatter } : {}
|
|
1860
1871
|
};
|
|
1861
1872
|
};
|
|
1862
1873
|
|
|
@@ -2991,27 +3002,95 @@ function ansiRegex({ onlyFirst = false } = {}) {
|
|
|
2991
3002
|
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
2992
3003
|
}
|
|
2993
3004
|
|
|
2994
|
-
// ../../node_modules/.pnpm/strip-ansi@7.
|
|
3005
|
+
// ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
|
|
2995
3006
|
var regex = ansiRegex();
|
|
2996
3007
|
function stripAnsi(string) {
|
|
2997
3008
|
if (typeof string !== "string") {
|
|
2998
3009
|
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
2999
3010
|
}
|
|
3011
|
+
if (!string.includes("\x1B") && !string.includes("\x9B")) {
|
|
3012
|
+
return string;
|
|
3013
|
+
}
|
|
3000
3014
|
return string.replace(regex, "");
|
|
3001
3015
|
}
|
|
3002
3016
|
|
|
3003
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3017
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup-data.js
|
|
3018
|
+
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];
|
|
3019
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
3020
|
+
var halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
3021
|
+
var narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
3022
|
+
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];
|
|
3023
|
+
|
|
3024
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/utilities.js
|
|
3025
|
+
var isInRange = (ranges, codePoint) => {
|
|
3026
|
+
let low = 0;
|
|
3027
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
3028
|
+
while (low <= high) {
|
|
3029
|
+
const mid = Math.floor((low + high) / 2);
|
|
3030
|
+
const i = mid * 2;
|
|
3031
|
+
if (codePoint < ranges[i]) {
|
|
3032
|
+
high = mid - 1;
|
|
3033
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
3034
|
+
low = mid + 1;
|
|
3035
|
+
} else {
|
|
3036
|
+
return true;
|
|
3037
|
+
}
|
|
3038
|
+
}
|
|
3039
|
+
return false;
|
|
3040
|
+
};
|
|
3041
|
+
|
|
3042
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup.js
|
|
3043
|
+
var minimumAmbiguousCodePoint = ambiguousRanges[0];
|
|
3044
|
+
var maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
|
|
3045
|
+
var minimumFullWidthCodePoint = fullwidthRanges[0];
|
|
3046
|
+
var maximumFullWidthCodePoint = fullwidthRanges.at(-1);
|
|
3047
|
+
var minimumHalfWidthCodePoint = halfwidthRanges[0];
|
|
3048
|
+
var maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
|
|
3049
|
+
var minimumNarrowCodePoint = narrowRanges[0];
|
|
3050
|
+
var maximumNarrowCodePoint = narrowRanges.at(-1);
|
|
3051
|
+
var minimumWideCodePoint = wideRanges[0];
|
|
3052
|
+
var maximumWideCodePoint = wideRanges.at(-1);
|
|
3053
|
+
var commonCjkCodePoint = 19968;
|
|
3054
|
+
var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
|
|
3055
|
+
function findWideFastPathRange(ranges) {
|
|
3056
|
+
let fastPathStart = ranges[0];
|
|
3057
|
+
let fastPathEnd = ranges[1];
|
|
3058
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
3059
|
+
const start = ranges[index];
|
|
3060
|
+
const end = ranges[index + 1];
|
|
3061
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
3062
|
+
return [start, end];
|
|
3063
|
+
}
|
|
3064
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
3065
|
+
fastPathStart = start;
|
|
3066
|
+
fastPathEnd = end;
|
|
3067
|
+
}
|
|
3068
|
+
}
|
|
3069
|
+
return [fastPathStart, fastPathEnd];
|
|
3012
3070
|
}
|
|
3071
|
+
var isAmbiguous = (codePoint) => {
|
|
3072
|
+
if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
|
|
3073
|
+
return false;
|
|
3074
|
+
}
|
|
3075
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
3076
|
+
};
|
|
3077
|
+
var isFullWidth = (codePoint) => {
|
|
3078
|
+
if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
|
|
3079
|
+
return false;
|
|
3080
|
+
}
|
|
3081
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
3082
|
+
};
|
|
3083
|
+
var isWide = (codePoint) => {
|
|
3084
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
3085
|
+
return true;
|
|
3086
|
+
}
|
|
3087
|
+
if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
|
|
3088
|
+
return false;
|
|
3089
|
+
}
|
|
3090
|
+
return isInRange(wideRanges, codePoint);
|
|
3091
|
+
};
|
|
3013
3092
|
|
|
3014
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
3093
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/index.js
|
|
3015
3094
|
function validate(codePoint) {
|
|
3016
3095
|
if (!Number.isSafeInteger(codePoint)) {
|
|
3017
3096
|
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
@@ -4073,7 +4152,7 @@ var import_node_path = require("path");
|
|
|
4073
4152
|
// package.json
|
|
4074
4153
|
var package_default = {
|
|
4075
4154
|
name: "@eventcatalog/generator-openapi",
|
|
4076
|
-
version: "7.
|
|
4155
|
+
version: "7.8.0",
|
|
4077
4156
|
description: "OpenAPI generator for EventCatalog",
|
|
4078
4157
|
scripts: {
|
|
4079
4158
|
build: "tsup",
|
|
@@ -4182,6 +4261,74 @@ var isVersionLessThan = (version, givenVersion) => {
|
|
|
4182
4261
|
return (0, import_semver.satisfies)(version, `<${givenVersion}`);
|
|
4183
4262
|
};
|
|
4184
4263
|
|
|
4264
|
+
// src/utils/specifications.ts
|
|
4265
|
+
var toArray = (specifications) => {
|
|
4266
|
+
if (!specifications) return [];
|
|
4267
|
+
if (Array.isArray(specifications)) {
|
|
4268
|
+
return specifications.filter((spec) => spec?.type && spec?.path).map((spec) => ({
|
|
4269
|
+
type: spec.type,
|
|
4270
|
+
path: spec.path,
|
|
4271
|
+
...spec.name ? { name: spec.name } : {},
|
|
4272
|
+
...spec.headers ? { headers: spec.headers } : {}
|
|
4273
|
+
}));
|
|
4274
|
+
}
|
|
4275
|
+
const output = [];
|
|
4276
|
+
if (specifications.openapiPath) {
|
|
4277
|
+
output.push({ type: "openapi", path: specifications.openapiPath });
|
|
4278
|
+
}
|
|
4279
|
+
if (specifications.asyncapiPath) {
|
|
4280
|
+
output.push({ type: "asyncapi", path: specifications.asyncapiPath });
|
|
4281
|
+
}
|
|
4282
|
+
if (specifications.graphqlPath) {
|
|
4283
|
+
output.push({ type: "graphql", path: specifications.graphqlPath });
|
|
4284
|
+
}
|
|
4285
|
+
return output;
|
|
4286
|
+
};
|
|
4287
|
+
var dedupe = (specifications) => {
|
|
4288
|
+
const unique = /* @__PURE__ */ new Map();
|
|
4289
|
+
for (const spec of specifications) {
|
|
4290
|
+
const key = `${spec.type}:${spec.path}`;
|
|
4291
|
+
if (!unique.has(key)) {
|
|
4292
|
+
unique.set(key, spec);
|
|
4293
|
+
}
|
|
4294
|
+
}
|
|
4295
|
+
return [...unique.values()];
|
|
4296
|
+
};
|
|
4297
|
+
var canUseLegacyFormat = (specifications) => {
|
|
4298
|
+
const countByType = {
|
|
4299
|
+
openapi: 0,
|
|
4300
|
+
asyncapi: 0,
|
|
4301
|
+
graphql: 0
|
|
4302
|
+
};
|
|
4303
|
+
for (const spec of specifications) {
|
|
4304
|
+
countByType[spec.type] += 1;
|
|
4305
|
+
if (spec.name || spec.headers) {
|
|
4306
|
+
return false;
|
|
4307
|
+
}
|
|
4308
|
+
}
|
|
4309
|
+
return Object.values(countByType).every((count) => count <= 1);
|
|
4310
|
+
};
|
|
4311
|
+
var toLegacy = (specifications) => {
|
|
4312
|
+
const legacy = {};
|
|
4313
|
+
for (const spec of specifications) {
|
|
4314
|
+
if (spec.type === "openapi") legacy.openapiPath = spec.path;
|
|
4315
|
+
if (spec.type === "asyncapi") legacy.asyncapiPath = spec.path;
|
|
4316
|
+
if (spec.type === "graphql") legacy.graphqlPath = spec.path;
|
|
4317
|
+
}
|
|
4318
|
+
return legacy;
|
|
4319
|
+
};
|
|
4320
|
+
var mergeSpecifications = (existing, incoming, options) => {
|
|
4321
|
+
const merged = dedupe([...toArray(existing), ...toArray(incoming)]);
|
|
4322
|
+
if (merged.length === 0) return void 0;
|
|
4323
|
+
if (options?.preferArray) {
|
|
4324
|
+
return merged;
|
|
4325
|
+
}
|
|
4326
|
+
if (canUseLegacyFormat(merged)) {
|
|
4327
|
+
return toLegacy(merged);
|
|
4328
|
+
}
|
|
4329
|
+
return merged;
|
|
4330
|
+
};
|
|
4331
|
+
|
|
4185
4332
|
// src/index.ts
|
|
4186
4333
|
var toUniqueArray = (array) => {
|
|
4187
4334
|
return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
|
|
@@ -4205,13 +4352,6 @@ var fetchAuthenticatedSpec = async (specUrl, headers) => {
|
|
|
4205
4352
|
return import_js_yaml.default.load(content);
|
|
4206
4353
|
}
|
|
4207
4354
|
};
|
|
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
|
-
};
|
|
4215
4355
|
var index_default = async (_, options) => {
|
|
4216
4356
|
if (!process.env.PROJECT_DIR) {
|
|
4217
4357
|
process.env.PROJECT_DIR = process.cwd();
|
|
@@ -4230,8 +4370,7 @@ var index_default = async (_, options) => {
|
|
|
4230
4370
|
getService,
|
|
4231
4371
|
versionService,
|
|
4232
4372
|
writeService,
|
|
4233
|
-
addFileToService
|
|
4234
|
-
getSpecificationFilesForService
|
|
4373
|
+
addFileToService
|
|
4235
4374
|
} = (0, import_sdk2.default)(process.env.PROJECT_DIR);
|
|
4236
4375
|
const { services = [], saveParsedSpecFile = false } = options;
|
|
4237
4376
|
for (const serviceSpec of services) {
|
|
@@ -4320,11 +4459,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4320
4459
|
await addServiceToDomain(domainId, { id: service.id, version: service.version }, domainVersion);
|
|
4321
4460
|
}
|
|
4322
4461
|
const latestServiceInCatalog = await getService(service.id, "latest");
|
|
4323
|
-
let latestVersionSpecificationFiles = [];
|
|
4324
|
-
try {
|
|
4325
|
-
latestVersionSpecificationFiles = await getSpecificationFilesForService(service.id, "latest");
|
|
4326
|
-
} catch (error) {
|
|
4327
|
-
}
|
|
4328
4462
|
const versionTheService = latestServiceInCatalog && isVersionGreaterThan(version, latestServiceInCatalog.version);
|
|
4329
4463
|
console.log(import_chalk4.default.blue(`Processing service: ${document2.info.title} (v${version})`));
|
|
4330
4464
|
if (latestServiceInCatalog && isVersionLessThan(version, latestServiceInCatalog.version)) {
|
|
@@ -4351,7 +4485,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4351
4485
|
const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
|
|
4352
4486
|
if (latestServiceInCatalog) {
|
|
4353
4487
|
serviceMarkdown = latestServiceInCatalog.markdown;
|
|
4354
|
-
serviceSpecificationsFiles =
|
|
4488
|
+
serviceSpecificationsFiles = await getExistingSpecificationFiles(service.id, latestServiceInCatalog.specifications);
|
|
4355
4489
|
sends = latestServiceInCatalog.sends || [];
|
|
4356
4490
|
owners = latestServiceInCatalog.owners || [];
|
|
4357
4491
|
repository = latestServiceInCatalog.repository || null;
|
|
@@ -4361,8 +4495,10 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4361
4495
|
serviceDiagrams = latestServiceInCatalog.diagrams || null;
|
|
4362
4496
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4363
4497
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4364
|
-
if (persistPreviousSpecificationFiles
|
|
4365
|
-
serviceSpecifications =
|
|
4498
|
+
if (persistPreviousSpecificationFiles) {
|
|
4499
|
+
serviceSpecifications = mergeSpecifications(latestServiceInCatalog.specifications, serviceSpecifications, {
|
|
4500
|
+
preferArray: true
|
|
4501
|
+
});
|
|
4366
4502
|
}
|
|
4367
4503
|
if (latestServiceInCatalog.version === version) {
|
|
4368
4504
|
receives = latestServiceInCatalog.receives ? (
|
|
@@ -4416,6 +4552,35 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4416
4552
|
}
|
|
4417
4553
|
}
|
|
4418
4554
|
};
|
|
4555
|
+
var toSpecificationEntries = (specifications) => {
|
|
4556
|
+
if (!specifications) return [];
|
|
4557
|
+
if (Array.isArray(specifications)) {
|
|
4558
|
+
return specifications.filter((spec) => Boolean(spec?.type && spec?.path));
|
|
4559
|
+
}
|
|
4560
|
+
const entries = [];
|
|
4561
|
+
if (specifications.openapiPath) entries.push({ type: "openapi", path: specifications.openapiPath });
|
|
4562
|
+
if (specifications.asyncapiPath) entries.push({ type: "asyncapi", path: specifications.asyncapiPath });
|
|
4563
|
+
if (specifications.graphqlPath) entries.push({ type: "graphql", path: specifications.graphqlPath });
|
|
4564
|
+
return entries;
|
|
4565
|
+
};
|
|
4566
|
+
var getExistingSpecificationFiles = async (serviceId, specifications) => {
|
|
4567
|
+
const entries = toSpecificationEntries(specifications);
|
|
4568
|
+
const uniqueEntries = entries.filter(
|
|
4569
|
+
(entry, index, all) => all.findIndex((candidate) => candidate.path === entry.path) === index
|
|
4570
|
+
);
|
|
4571
|
+
const files = await Promise.all(
|
|
4572
|
+
uniqueEntries.map(async (entry) => {
|
|
4573
|
+
const filePath = (0, import_node_path.join)(process.env.PROJECT_DIR, "services", serviceId, entry.path);
|
|
4574
|
+
try {
|
|
4575
|
+
const content = await import_promises2.default.readFile(filePath, "utf8");
|
|
4576
|
+
return { fileName: entry.path, content };
|
|
4577
|
+
} catch (error) {
|
|
4578
|
+
return void 0;
|
|
4579
|
+
}
|
|
4580
|
+
})
|
|
4581
|
+
);
|
|
4582
|
+
return files.filter(Boolean);
|
|
4583
|
+
};
|
|
4419
4584
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4420
4585
|
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4421
4586
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|