@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.mjs
CHANGED
|
@@ -1528,6 +1528,7 @@ var require_dist2 = __commonJS({
|
|
|
1528
1528
|
// src/index.ts
|
|
1529
1529
|
import utils2 from "@eventcatalog/sdk";
|
|
1530
1530
|
import { readFile } from "fs/promises";
|
|
1531
|
+
import fs2 from "fs/promises";
|
|
1531
1532
|
import chalk4 from "chalk";
|
|
1532
1533
|
import SwaggerParser2 from "@apidevtools/swagger-parser";
|
|
1533
1534
|
|
|
@@ -1574,9 +1575,7 @@ var buildService = (serviceOptions, document2, generateMarkdown) => {
|
|
|
1574
1575
|
name: document2.info.title,
|
|
1575
1576
|
summary: getSummary(document2),
|
|
1576
1577
|
schemaPath,
|
|
1577
|
-
specifications: {
|
|
1578
|
-
openapiPath: schemaPath
|
|
1579
|
-
},
|
|
1578
|
+
specifications: [{ type: "openapi", path: schemaPath }],
|
|
1580
1579
|
markdown: generateMarkdown ? generateMarkdown({ service: serviceOptions, document: document2, markdown: generatedMarkdownForService }) : generatedMarkdownForService,
|
|
1581
1580
|
badges: documentTags.map((tag2) => ({ content: tag2.name, textColor: "blue", backgroundColor: "blue" })),
|
|
1582
1581
|
owners: serviceOptions.owners || [],
|
|
@@ -1837,6 +1836,17 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1837
1836
|
const separator = messageIdConfig.separator || "-";
|
|
1838
1837
|
uniqueIdentifier = [serviceId, uniqueIdentifier].join(separator);
|
|
1839
1838
|
}
|
|
1839
|
+
const validOperationMethods = ["GET", "POST", "PUT", "DELETE", "PATCH"];
|
|
1840
|
+
const operationMethod = operation.method.toUpperCase();
|
|
1841
|
+
let operationFrontmatter;
|
|
1842
|
+
if (validOperationMethods.includes(operationMethod)) {
|
|
1843
|
+
const statusCodes = requestBodiesAndResponses?.responses ? Object.keys(requestBodiesAndResponses.responses).filter((code) => code !== "default") : [];
|
|
1844
|
+
operationFrontmatter = {
|
|
1845
|
+
method: operationMethod,
|
|
1846
|
+
path: operation.path,
|
|
1847
|
+
...statusCodes.length > 0 ? { statusCodes } : {}
|
|
1848
|
+
};
|
|
1849
|
+
}
|
|
1840
1850
|
return {
|
|
1841
1851
|
id: extensions["x-eventcatalog-message-id"] || uniqueIdentifier,
|
|
1842
1852
|
version: messageVersion,
|
|
@@ -1851,7 +1861,8 @@ var buildMessage = async (pathToFile, document2, operation, generateMarkdown, me
|
|
|
1851
1861
|
},
|
|
1852
1862
|
messageName,
|
|
1853
1863
|
...extensions["x-eventcatalog-draft"] ? { draft: true } : {},
|
|
1854
|
-
...operation.deprecated ? { deprecated: operation.deprecated } : {}
|
|
1864
|
+
...operation.deprecated ? { deprecated: operation.deprecated } : {},
|
|
1865
|
+
...operationFrontmatter ? { operation: operationFrontmatter } : {}
|
|
1855
1866
|
};
|
|
1856
1867
|
};
|
|
1857
1868
|
|
|
@@ -2986,27 +2997,95 @@ function ansiRegex({ onlyFirst = false } = {}) {
|
|
|
2986
2997
|
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
2987
2998
|
}
|
|
2988
2999
|
|
|
2989
|
-
// ../../node_modules/.pnpm/strip-ansi@7.
|
|
3000
|
+
// ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
|
|
2990
3001
|
var regex = ansiRegex();
|
|
2991
3002
|
function stripAnsi(string) {
|
|
2992
3003
|
if (typeof string !== "string") {
|
|
2993
3004
|
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
2994
3005
|
}
|
|
3006
|
+
if (!string.includes("\x1B") && !string.includes("\x9B")) {
|
|
3007
|
+
return string;
|
|
3008
|
+
}
|
|
2995
3009
|
return string.replace(regex, "");
|
|
2996
3010
|
}
|
|
2997
3011
|
|
|
2998
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3012
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup-data.js
|
|
3013
|
+
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];
|
|
3014
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
3015
|
+
var halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
3016
|
+
var narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
3017
|
+
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];
|
|
3018
|
+
|
|
3019
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/utilities.js
|
|
3020
|
+
var isInRange = (ranges, codePoint) => {
|
|
3021
|
+
let low = 0;
|
|
3022
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
3023
|
+
while (low <= high) {
|
|
3024
|
+
const mid = Math.floor((low + high) / 2);
|
|
3025
|
+
const i = mid * 2;
|
|
3026
|
+
if (codePoint < ranges[i]) {
|
|
3027
|
+
high = mid - 1;
|
|
3028
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
3029
|
+
low = mid + 1;
|
|
3030
|
+
} else {
|
|
3031
|
+
return true;
|
|
3032
|
+
}
|
|
3033
|
+
}
|
|
3034
|
+
return false;
|
|
3035
|
+
};
|
|
3036
|
+
|
|
3037
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup.js
|
|
3038
|
+
var minimumAmbiguousCodePoint = ambiguousRanges[0];
|
|
3039
|
+
var maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
|
|
3040
|
+
var minimumFullWidthCodePoint = fullwidthRanges[0];
|
|
3041
|
+
var maximumFullWidthCodePoint = fullwidthRanges.at(-1);
|
|
3042
|
+
var minimumHalfWidthCodePoint = halfwidthRanges[0];
|
|
3043
|
+
var maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
|
|
3044
|
+
var minimumNarrowCodePoint = narrowRanges[0];
|
|
3045
|
+
var maximumNarrowCodePoint = narrowRanges.at(-1);
|
|
3046
|
+
var minimumWideCodePoint = wideRanges[0];
|
|
3047
|
+
var maximumWideCodePoint = wideRanges.at(-1);
|
|
3048
|
+
var commonCjkCodePoint = 19968;
|
|
3049
|
+
var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
|
|
3050
|
+
function findWideFastPathRange(ranges) {
|
|
3051
|
+
let fastPathStart = ranges[0];
|
|
3052
|
+
let fastPathEnd = ranges[1];
|
|
3053
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
3054
|
+
const start = ranges[index];
|
|
3055
|
+
const end = ranges[index + 1];
|
|
3056
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
3057
|
+
return [start, end];
|
|
3058
|
+
}
|
|
3059
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
3060
|
+
fastPathStart = start;
|
|
3061
|
+
fastPathEnd = end;
|
|
3062
|
+
}
|
|
3063
|
+
}
|
|
3064
|
+
return [fastPathStart, fastPathEnd];
|
|
3007
3065
|
}
|
|
3066
|
+
var isAmbiguous = (codePoint) => {
|
|
3067
|
+
if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
|
|
3068
|
+
return false;
|
|
3069
|
+
}
|
|
3070
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
3071
|
+
};
|
|
3072
|
+
var isFullWidth = (codePoint) => {
|
|
3073
|
+
if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
|
|
3074
|
+
return false;
|
|
3075
|
+
}
|
|
3076
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
3077
|
+
};
|
|
3078
|
+
var isWide = (codePoint) => {
|
|
3079
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
3080
|
+
return true;
|
|
3081
|
+
}
|
|
3082
|
+
if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
|
|
3083
|
+
return false;
|
|
3084
|
+
}
|
|
3085
|
+
return isInRange(wideRanges, codePoint);
|
|
3086
|
+
};
|
|
3008
3087
|
|
|
3009
|
-
// ../../node_modules/.pnpm/get-east-asian-width@1.
|
|
3088
|
+
// ../../node_modules/.pnpm/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/index.js
|
|
3010
3089
|
function validate(codePoint) {
|
|
3011
3090
|
if (!Number.isSafeInteger(codePoint)) {
|
|
3012
3091
|
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
@@ -4068,7 +4147,7 @@ import { join } from "path";
|
|
|
4068
4147
|
// package.json
|
|
4069
4148
|
var package_default = {
|
|
4070
4149
|
name: "@eventcatalog/generator-openapi",
|
|
4071
|
-
version: "7.
|
|
4150
|
+
version: "7.8.0",
|
|
4072
4151
|
description: "OpenAPI generator for EventCatalog",
|
|
4073
4152
|
scripts: {
|
|
4074
4153
|
build: "tsup",
|
|
@@ -4177,6 +4256,74 @@ var isVersionLessThan = (version, givenVersion) => {
|
|
|
4177
4256
|
return satisfies(version, `<${givenVersion}`);
|
|
4178
4257
|
};
|
|
4179
4258
|
|
|
4259
|
+
// src/utils/specifications.ts
|
|
4260
|
+
var toArray = (specifications) => {
|
|
4261
|
+
if (!specifications) return [];
|
|
4262
|
+
if (Array.isArray(specifications)) {
|
|
4263
|
+
return specifications.filter((spec) => spec?.type && spec?.path).map((spec) => ({
|
|
4264
|
+
type: spec.type,
|
|
4265
|
+
path: spec.path,
|
|
4266
|
+
...spec.name ? { name: spec.name } : {},
|
|
4267
|
+
...spec.headers ? { headers: spec.headers } : {}
|
|
4268
|
+
}));
|
|
4269
|
+
}
|
|
4270
|
+
const output = [];
|
|
4271
|
+
if (specifications.openapiPath) {
|
|
4272
|
+
output.push({ type: "openapi", path: specifications.openapiPath });
|
|
4273
|
+
}
|
|
4274
|
+
if (specifications.asyncapiPath) {
|
|
4275
|
+
output.push({ type: "asyncapi", path: specifications.asyncapiPath });
|
|
4276
|
+
}
|
|
4277
|
+
if (specifications.graphqlPath) {
|
|
4278
|
+
output.push({ type: "graphql", path: specifications.graphqlPath });
|
|
4279
|
+
}
|
|
4280
|
+
return output;
|
|
4281
|
+
};
|
|
4282
|
+
var dedupe = (specifications) => {
|
|
4283
|
+
const unique = /* @__PURE__ */ new Map();
|
|
4284
|
+
for (const spec of specifications) {
|
|
4285
|
+
const key = `${spec.type}:${spec.path}`;
|
|
4286
|
+
if (!unique.has(key)) {
|
|
4287
|
+
unique.set(key, spec);
|
|
4288
|
+
}
|
|
4289
|
+
}
|
|
4290
|
+
return [...unique.values()];
|
|
4291
|
+
};
|
|
4292
|
+
var canUseLegacyFormat = (specifications) => {
|
|
4293
|
+
const countByType = {
|
|
4294
|
+
openapi: 0,
|
|
4295
|
+
asyncapi: 0,
|
|
4296
|
+
graphql: 0
|
|
4297
|
+
};
|
|
4298
|
+
for (const spec of specifications) {
|
|
4299
|
+
countByType[spec.type] += 1;
|
|
4300
|
+
if (spec.name || spec.headers) {
|
|
4301
|
+
return false;
|
|
4302
|
+
}
|
|
4303
|
+
}
|
|
4304
|
+
return Object.values(countByType).every((count) => count <= 1);
|
|
4305
|
+
};
|
|
4306
|
+
var toLegacy = (specifications) => {
|
|
4307
|
+
const legacy = {};
|
|
4308
|
+
for (const spec of specifications) {
|
|
4309
|
+
if (spec.type === "openapi") legacy.openapiPath = spec.path;
|
|
4310
|
+
if (spec.type === "asyncapi") legacy.asyncapiPath = spec.path;
|
|
4311
|
+
if (spec.type === "graphql") legacy.graphqlPath = spec.path;
|
|
4312
|
+
}
|
|
4313
|
+
return legacy;
|
|
4314
|
+
};
|
|
4315
|
+
var mergeSpecifications = (existing, incoming, options) => {
|
|
4316
|
+
const merged = dedupe([...toArray(existing), ...toArray(incoming)]);
|
|
4317
|
+
if (merged.length === 0) return void 0;
|
|
4318
|
+
if (options?.preferArray) {
|
|
4319
|
+
return merged;
|
|
4320
|
+
}
|
|
4321
|
+
if (canUseLegacyFormat(merged)) {
|
|
4322
|
+
return toLegacy(merged);
|
|
4323
|
+
}
|
|
4324
|
+
return merged;
|
|
4325
|
+
};
|
|
4326
|
+
|
|
4180
4327
|
// src/index.ts
|
|
4181
4328
|
var toUniqueArray = (array) => {
|
|
4182
4329
|
return array.filter((item, index, self) => index === self.findIndex((t) => t.id === item.id && t.version === item.version));
|
|
@@ -4200,13 +4347,6 @@ var fetchAuthenticatedSpec = async (specUrl, headers) => {
|
|
|
4200
4347
|
return yaml.load(content);
|
|
4201
4348
|
}
|
|
4202
4349
|
};
|
|
4203
|
-
var mergeOpenApiIntoSpecifications = (existingSpecs, openapiFileName) => {
|
|
4204
|
-
if (Array.isArray(existingSpecs)) {
|
|
4205
|
-
return [...existingSpecs.filter((spec) => spec.type !== "openapi"), { type: "openapi", path: openapiFileName }];
|
|
4206
|
-
}
|
|
4207
|
-
const { openapiPath: _, ...rest } = existingSpecs || {};
|
|
4208
|
-
return { openapiPath: openapiFileName, ...rest };
|
|
4209
|
-
};
|
|
4210
4350
|
var index_default = async (_, options) => {
|
|
4211
4351
|
if (!process.env.PROJECT_DIR) {
|
|
4212
4352
|
process.env.PROJECT_DIR = process.cwd();
|
|
@@ -4225,8 +4365,7 @@ var index_default = async (_, options) => {
|
|
|
4225
4365
|
getService,
|
|
4226
4366
|
versionService,
|
|
4227
4367
|
writeService,
|
|
4228
|
-
addFileToService
|
|
4229
|
-
getSpecificationFilesForService
|
|
4368
|
+
addFileToService
|
|
4230
4369
|
} = utils2(process.env.PROJECT_DIR);
|
|
4231
4370
|
const { services = [], saveParsedSpecFile = false } = options;
|
|
4232
4371
|
for (const serviceSpec of services) {
|
|
@@ -4315,11 +4454,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4315
4454
|
await addServiceToDomain(domainId, { id: service.id, version: service.version }, domainVersion);
|
|
4316
4455
|
}
|
|
4317
4456
|
const latestServiceInCatalog = await getService(service.id, "latest");
|
|
4318
|
-
let latestVersionSpecificationFiles = [];
|
|
4319
|
-
try {
|
|
4320
|
-
latestVersionSpecificationFiles = await getSpecificationFilesForService(service.id, "latest");
|
|
4321
|
-
} catch (error) {
|
|
4322
|
-
}
|
|
4323
4457
|
const versionTheService = latestServiceInCatalog && isVersionGreaterThan(version, latestServiceInCatalog.version);
|
|
4324
4458
|
console.log(chalk4.blue(`Processing service: ${document2.info.title} (v${version})`));
|
|
4325
4459
|
if (latestServiceInCatalog && isVersionLessThan(version, latestServiceInCatalog.version)) {
|
|
@@ -4346,7 +4480,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4346
4480
|
const persistPreviousSpecificationFiles = Array.isArray(serviceSpec.path) === false;
|
|
4347
4481
|
if (latestServiceInCatalog) {
|
|
4348
4482
|
serviceMarkdown = latestServiceInCatalog.markdown;
|
|
4349
|
-
serviceSpecificationsFiles =
|
|
4483
|
+
serviceSpecificationsFiles = await getExistingSpecificationFiles(service.id, latestServiceInCatalog.specifications);
|
|
4350
4484
|
sends = latestServiceInCatalog.sends || [];
|
|
4351
4485
|
owners = latestServiceInCatalog.owners || [];
|
|
4352
4486
|
repository = latestServiceInCatalog.repository || null;
|
|
@@ -4356,8 +4490,10 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4356
4490
|
serviceDiagrams = latestServiceInCatalog.diagrams || null;
|
|
4357
4491
|
serviceWritesTo = latestServiceInCatalog.writesTo || [];
|
|
4358
4492
|
serviceReadsFrom = latestServiceInCatalog.readsFrom || [];
|
|
4359
|
-
if (persistPreviousSpecificationFiles
|
|
4360
|
-
serviceSpecifications =
|
|
4493
|
+
if (persistPreviousSpecificationFiles) {
|
|
4494
|
+
serviceSpecifications = mergeSpecifications(latestServiceInCatalog.specifications, serviceSpecifications, {
|
|
4495
|
+
preferArray: true
|
|
4496
|
+
});
|
|
4361
4497
|
}
|
|
4362
4498
|
if (latestServiceInCatalog.version === version) {
|
|
4363
4499
|
receives = latestServiceInCatalog.receives ? (
|
|
@@ -4411,6 +4547,35 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4411
4547
|
}
|
|
4412
4548
|
}
|
|
4413
4549
|
};
|
|
4550
|
+
var toSpecificationEntries = (specifications) => {
|
|
4551
|
+
if (!specifications) return [];
|
|
4552
|
+
if (Array.isArray(specifications)) {
|
|
4553
|
+
return specifications.filter((spec) => Boolean(spec?.type && spec?.path));
|
|
4554
|
+
}
|
|
4555
|
+
const entries = [];
|
|
4556
|
+
if (specifications.openapiPath) entries.push({ type: "openapi", path: specifications.openapiPath });
|
|
4557
|
+
if (specifications.asyncapiPath) entries.push({ type: "asyncapi", path: specifications.asyncapiPath });
|
|
4558
|
+
if (specifications.graphqlPath) entries.push({ type: "graphql", path: specifications.graphqlPath });
|
|
4559
|
+
return entries;
|
|
4560
|
+
};
|
|
4561
|
+
var getExistingSpecificationFiles = async (serviceId, specifications) => {
|
|
4562
|
+
const entries = toSpecificationEntries(specifications);
|
|
4563
|
+
const uniqueEntries = entries.filter(
|
|
4564
|
+
(entry, index, all) => all.findIndex((candidate) => candidate.path === entry.path) === index
|
|
4565
|
+
);
|
|
4566
|
+
const files = await Promise.all(
|
|
4567
|
+
uniqueEntries.map(async (entry) => {
|
|
4568
|
+
const filePath = join(process.env.PROJECT_DIR, "services", serviceId, entry.path);
|
|
4569
|
+
try {
|
|
4570
|
+
const content = await fs2.readFile(filePath, "utf8");
|
|
4571
|
+
return { fileName: entry.path, content };
|
|
4572
|
+
} catch (error) {
|
|
4573
|
+
return void 0;
|
|
4574
|
+
}
|
|
4575
|
+
})
|
|
4576
|
+
);
|
|
4577
|
+
return files.filter(Boolean);
|
|
4578
|
+
};
|
|
4414
4579
|
var processMessagesForOpenAPISpec = async (pathToSpec, document2, servicePath, options) => {
|
|
4415
4580
|
const operations = await getOperationsByType(pathToSpec, options.httpMethodsToMessages, document2);
|
|
4416
4581
|
const sidebarBadgeType = options.sidebarBadgeType || "HTTP_METHOD";
|