@eventcatalog/generator-asyncapi 5.5.0 → 6.0.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 +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +58 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +58 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1538,7 +1538,7 @@ import path3 from "path";
|
|
|
1538
1538
|
// package.json
|
|
1539
1539
|
var package_default = {
|
|
1540
1540
|
name: "@eventcatalog/generator-asyncapi",
|
|
1541
|
-
version: "
|
|
1541
|
+
version: "6.0.0",
|
|
1542
1542
|
description: "AsyncAPI generator for EventCatalog",
|
|
1543
1543
|
scripts: {
|
|
1544
1544
|
build: "tsup",
|
|
@@ -2646,30 +2646,6 @@ var getSchemaFileName = (message2) => {
|
|
|
2646
2646
|
var getMessageName = (message2) => {
|
|
2647
2647
|
return message2.hasTitle() && message2.title() ? message2.title() : message2.id();
|
|
2648
2648
|
};
|
|
2649
|
-
var getChannelsForMessage = (message2, channels, document2) => {
|
|
2650
|
-
let channelsForMessage = [];
|
|
2651
|
-
const globalVersion = document2.info().version();
|
|
2652
|
-
for (const channel of channels) {
|
|
2653
|
-
for (const channelMessage of channel.messages()) {
|
|
2654
|
-
if (channelMessage.id() === message2.id()) {
|
|
2655
|
-
channelsForMessage.push(channel);
|
|
2656
|
-
}
|
|
2657
|
-
}
|
|
2658
|
-
}
|
|
2659
|
-
for (const messageChannel of message2.channels()) {
|
|
2660
|
-
channelsForMessage.push(messageChannel);
|
|
2661
|
-
}
|
|
2662
|
-
const uniqueChannels = channelsForMessage.filter(
|
|
2663
|
-
(channel, index, self) => index === self.findIndex((t) => t.id() === channel.id())
|
|
2664
|
-
);
|
|
2665
|
-
return uniqueChannels.map((channel) => {
|
|
2666
|
-
const channelVersion = channel.extensions().get("x-eventcatalog-channel-version")?.value() || globalVersion;
|
|
2667
|
-
return {
|
|
2668
|
-
id: channel.id(),
|
|
2669
|
-
version: channelVersion
|
|
2670
|
-
};
|
|
2671
|
-
});
|
|
2672
|
-
};
|
|
2673
2649
|
|
|
2674
2650
|
// src/utils/services.ts
|
|
2675
2651
|
var defaultMarkdown2 = (document2) => {
|
|
@@ -4158,6 +4134,7 @@ var optionsSchema = z.object({
|
|
|
4158
4134
|
debug: z.boolean().optional(),
|
|
4159
4135
|
parseSchemas: z.boolean().optional(),
|
|
4160
4136
|
parseChannels: z.boolean().optional(),
|
|
4137
|
+
attachHeadersToSchema: z.boolean().optional(),
|
|
4161
4138
|
saveParsedSpecFile: z.boolean({ invalid_type_error: "The saveParsedSpecFile is not a boolean in options" }).optional()
|
|
4162
4139
|
});
|
|
4163
4140
|
var toUniqueArray = (array) => {
|
|
@@ -4236,7 +4213,13 @@ var index_default = async (config, options) => {
|
|
|
4236
4213
|
}
|
|
4237
4214
|
};
|
|
4238
4215
|
validateOptions(options);
|
|
4239
|
-
const {
|
|
4216
|
+
const {
|
|
4217
|
+
services,
|
|
4218
|
+
saveParsedSpecFile = false,
|
|
4219
|
+
parseSchemas = true,
|
|
4220
|
+
parseChannels = false,
|
|
4221
|
+
attachHeadersToSchema = false
|
|
4222
|
+
} = options;
|
|
4240
4223
|
console.log(chalk4.green(`Processing ${services.length} AsyncAPI files...`));
|
|
4241
4224
|
for (const service of services) {
|
|
4242
4225
|
console.log(chalk4.gray(`Processing ${service.path}`));
|
|
@@ -4414,7 +4397,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4414
4397
|
console.log(chalk4.cyan(` - Versioned previous message: (v${catalogedMessage.version})`));
|
|
4415
4398
|
}
|
|
4416
4399
|
}
|
|
4417
|
-
const channelsForMessage = parseChannels ? getChannelsForMessage(message2, channels, document2) : [];
|
|
4418
4400
|
await writeMessage(
|
|
4419
4401
|
{
|
|
4420
4402
|
id: messageId,
|
|
@@ -4426,7 +4408,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4426
4408
|
...messageHasSchema(message2) && { schemaPath: getSchemaFileName(message2) },
|
|
4427
4409
|
...owners && { owners },
|
|
4428
4410
|
...messageAttachments && { attachments: messageAttachments },
|
|
4429
|
-
...channelsForMessage.length > 0 && { channels: channelsForMessage },
|
|
4430
4411
|
...deprecatedDate && {
|
|
4431
4412
|
deprecated: { date: deprecatedDate, ...deprecatedMessage && { message: deprecatedMessage } }
|
|
4432
4413
|
},
|
|
@@ -4439,10 +4420,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4439
4420
|
);
|
|
4440
4421
|
console.log(chalk4.cyan(` - Message (v${messageVersion}) created`));
|
|
4441
4422
|
if (messageHasSchema(message2)) {
|
|
4442
|
-
|
|
4443
|
-
if (schema?.schema) {
|
|
4444
|
-
schema = schema.schema;
|
|
4445
|
-
}
|
|
4423
|
+
const schema = getSchemaForMessage(message2, attachHeadersToSchema);
|
|
4446
4424
|
const cleanedMessagePath = messagePath.replace(/\\/g, "/").replace(/^(\.\.\/|\.\/)+/g, "");
|
|
4447
4425
|
await addSchemaToMessage(
|
|
4448
4426
|
messageId,
|
|
@@ -4458,8 +4436,24 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4458
4436
|
} else {
|
|
4459
4437
|
console.log(chalk4.yellow(` - Skipping external message: ${getMessageName(message2)}(v${messageVersion})`));
|
|
4460
4438
|
}
|
|
4461
|
-
if (
|
|
4462
|
-
|
|
4439
|
+
if (parseChannels) {
|
|
4440
|
+
const operationChannels = operation.channels().all();
|
|
4441
|
+
const channelPointers = operationChannels.map((channel) => {
|
|
4442
|
+
const explicitVersion = channel.extensions().get("x-eventcatalog-channel-version")?.value();
|
|
4443
|
+
return { id: channel.id(), ...explicitVersion && { version: explicitVersion } };
|
|
4444
|
+
});
|
|
4445
|
+
if (isSent)
|
|
4446
|
+
sends.push({ id: messageId, version: messageVersion, ...channelPointers.length > 0 && { to: channelPointers } });
|
|
4447
|
+
if (isReceived)
|
|
4448
|
+
receives.push({
|
|
4449
|
+
id: messageId,
|
|
4450
|
+
version: messageVersion,
|
|
4451
|
+
...channelPointers.length > 0 && { from: channelPointers }
|
|
4452
|
+
});
|
|
4453
|
+
} else {
|
|
4454
|
+
if (isSent) sends.push({ id: messageId, version: messageVersion });
|
|
4455
|
+
if (isReceived) receives.push({ id: messageId, version: messageVersion });
|
|
4456
|
+
}
|
|
4463
4457
|
}
|
|
4464
4458
|
}
|
|
4465
4459
|
const latestServiceInCatalog = await getService(serviceId, "latest");
|
|
@@ -4563,6 +4557,36 @@ Failed to request AsyncAPI file from ${service.path}`));
|
|
|
4563
4557
|
return await readFile(service.path, "utf8");
|
|
4564
4558
|
}
|
|
4565
4559
|
};
|
|
4560
|
+
var getSchemaForMessage = (message2, attachHeadersToSchema) => {
|
|
4561
|
+
const payloadSchema = getSchemaFromMessagePart(
|
|
4562
|
+
message2.payload()?.extensions()?.get("x-parser-original-payload")?.json() || message2.payload()?.json()
|
|
4563
|
+
);
|
|
4564
|
+
if (!attachHeadersToSchema || !message2.hasHeaders() || !isJSONSchemaMessage(message2)) {
|
|
4565
|
+
return payloadSchema;
|
|
4566
|
+
}
|
|
4567
|
+
const headersSchema = getSchemaFromMessagePart(
|
|
4568
|
+
message2.headers()?.extensions()?.get("x-parser-original-payload")?.json() || message2.headers()?.json()
|
|
4569
|
+
);
|
|
4570
|
+
if (!headersSchema) {
|
|
4571
|
+
return payloadSchema;
|
|
4572
|
+
}
|
|
4573
|
+
return {
|
|
4574
|
+
type: "object",
|
|
4575
|
+
properties: {
|
|
4576
|
+
headers: headersSchema,
|
|
4577
|
+
payload: payloadSchema
|
|
4578
|
+
}
|
|
4579
|
+
};
|
|
4580
|
+
};
|
|
4581
|
+
var getSchemaFromMessagePart = (schema) => {
|
|
4582
|
+
if (schema?.schema) {
|
|
4583
|
+
return schema.schema;
|
|
4584
|
+
}
|
|
4585
|
+
return schema;
|
|
4586
|
+
};
|
|
4587
|
+
var isJSONSchemaMessage = (message2) => {
|
|
4588
|
+
return getSchemaFileName(message2).endsWith(".json");
|
|
4589
|
+
};
|
|
4566
4590
|
var isServiceMessageOwner = (message2, operation) => {
|
|
4567
4591
|
const operationRole = operation?.extensions?.().get?.("x-eventcatalog-role")?.value?.();
|
|
4568
4592
|
const messageRole = message2.extensions().get("x-eventcatalog-role")?.value();
|