@eventcatalog/generator-asyncapi 6.4.4 → 7.0.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 +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +56 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -13
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1528,7 +1528,7 @@ var require_dist2 = __commonJS({
|
|
|
1528
1528
|
// src/index.ts
|
|
1529
1529
|
import { Parser, fromFile, fromURL } from "@asyncapi/parser";
|
|
1530
1530
|
import utils from "@eventcatalog/sdk";
|
|
1531
|
-
import { readFile } from "fs/promises";
|
|
1531
|
+
import { cp, mkdir, readFile, rm } from "fs/promises";
|
|
1532
1532
|
import argv from "minimist";
|
|
1533
1533
|
import yaml from "js-yaml";
|
|
1534
1534
|
import { z } from "zod";
|
|
@@ -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: "7.0.1",
|
|
1542
1542
|
description: "AsyncAPI generator for EventCatalog",
|
|
1543
1543
|
scripts: {
|
|
1544
1544
|
build: "tsup",
|
|
@@ -4156,6 +4156,7 @@ var cliArgs = argv(process.argv.slice(2));
|
|
|
4156
4156
|
var optionsSchema = z.object({
|
|
4157
4157
|
licenseKey: z.string().optional(),
|
|
4158
4158
|
writeFilesToRoot: z.boolean().optional(),
|
|
4159
|
+
preserveExistingMessages: z.boolean().optional(),
|
|
4159
4160
|
services: z.array(
|
|
4160
4161
|
z.object({
|
|
4161
4162
|
id: z.string({ required_error: "The service id is required. please provide the service id" }),
|
|
@@ -4290,6 +4291,9 @@ var index_default = async (config, options) => {
|
|
|
4290
4291
|
versionCommand,
|
|
4291
4292
|
versionEvent,
|
|
4292
4293
|
versionQuery,
|
|
4294
|
+
rmCommandById,
|
|
4295
|
+
rmEventById,
|
|
4296
|
+
rmQueryById,
|
|
4293
4297
|
addSchemaToCommand,
|
|
4294
4298
|
addSchemaToEvent,
|
|
4295
4299
|
addSchemaToQuery,
|
|
@@ -4309,6 +4313,7 @@ var index_default = async (config, options) => {
|
|
|
4309
4313
|
write: writeEvent,
|
|
4310
4314
|
version: versionEvent,
|
|
4311
4315
|
get: getEvent,
|
|
4316
|
+
remove: rmEventById,
|
|
4312
4317
|
addSchema: addSchemaToEvent,
|
|
4313
4318
|
addExample: addExampleToEvent,
|
|
4314
4319
|
collection: "events"
|
|
@@ -4317,6 +4322,7 @@ var index_default = async (config, options) => {
|
|
|
4317
4322
|
write: writeCommand,
|
|
4318
4323
|
version: versionCommand,
|
|
4319
4324
|
get: getCommand,
|
|
4325
|
+
remove: rmCommandById,
|
|
4320
4326
|
addSchema: addSchemaToCommand,
|
|
4321
4327
|
addExample: addExampleToCommand,
|
|
4322
4328
|
collection: "commands"
|
|
@@ -4325,6 +4331,7 @@ var index_default = async (config, options) => {
|
|
|
4325
4331
|
write: writeQuery,
|
|
4326
4332
|
version: versionQuery,
|
|
4327
4333
|
get: getQuery,
|
|
4334
|
+
remove: rmQueryById,
|
|
4328
4335
|
addSchema: addSchemaToQuery,
|
|
4329
4336
|
addExample: addExampleToQuery,
|
|
4330
4337
|
collection: "queries"
|
|
@@ -4337,7 +4344,8 @@ var index_default = async (config, options) => {
|
|
|
4337
4344
|
parseSchemas = true,
|
|
4338
4345
|
parseChannels = false,
|
|
4339
4346
|
parseExamples = true,
|
|
4340
|
-
attachHeadersToSchema = false
|
|
4347
|
+
attachHeadersToSchema = false,
|
|
4348
|
+
preserveExistingMessages = true
|
|
4341
4349
|
} = options;
|
|
4342
4350
|
console.log(chalk4.green(`Processing ${services.length} AsyncAPI files...`));
|
|
4343
4351
|
for (const service of services) {
|
|
@@ -4496,7 +4504,8 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4496
4504
|
const deprecatedDate = message2.extensions().get("x-eventcatalog-deprecated-date")?.value() || null;
|
|
4497
4505
|
const deprecatedMessage = message2.extensions().get("x-eventcatalog-deprecated-message")?.value() || null;
|
|
4498
4506
|
const isMessageMarkedAsDraft = isDomainMarkedAsDraft || isServiceMarkedAsDraft || message2.extensions().get("x-eventcatalog-draft")?.value() || null;
|
|
4499
|
-
const
|
|
4507
|
+
const messageOwnership = getMessageOwnership(message2, operation);
|
|
4508
|
+
const serviceOwnsMessageContract = messageOwnership === "owner";
|
|
4500
4509
|
const isReceived = operation.action() === "receive" || operation.action() === "subscribe";
|
|
4501
4510
|
const isSent = operation.action() === "send" || operation.action() === "publish";
|
|
4502
4511
|
let messageId = options.messages?.id?.lowerCase ? message2.id().toLowerCase() : message2.id();
|
|
@@ -4514,6 +4523,7 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4514
4523
|
write: writeMessage,
|
|
4515
4524
|
version: versionMessage,
|
|
4516
4525
|
get: getMessage,
|
|
4526
|
+
remove: removeMessage,
|
|
4517
4527
|
addSchema: addSchemaToMessage,
|
|
4518
4528
|
addExample: addExampleToMessage,
|
|
4519
4529
|
collection: folder
|
|
@@ -4528,15 +4538,26 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4528
4538
|
if (options.writeFilesToRoot) {
|
|
4529
4539
|
messagePath = messageId;
|
|
4530
4540
|
}
|
|
4531
|
-
if (
|
|
4541
|
+
if (messageOwnership === "external") {
|
|
4542
|
+
console.log(chalk4.yellow(` - Skipping external message: ${getMessageName(message2)}(v${messageVersion})`));
|
|
4543
|
+
} else {
|
|
4532
4544
|
const catalogedMessage = await getMessage(messageId, "latest");
|
|
4533
4545
|
let shouldWriteMessage = true;
|
|
4534
|
-
|
|
4535
|
-
|
|
4546
|
+
let existingMessageDirectoryToRelocate = null;
|
|
4547
|
+
if (serviceOwnsMessageContract && catalogedMessage) {
|
|
4536
4548
|
messageBadges = catalogedMessage.badges || null;
|
|
4537
4549
|
messageAttachments = catalogedMessage.attachments || null;
|
|
4550
|
+
if (preserveExistingMessages) {
|
|
4551
|
+
messageMarkdown = catalogedMessage.markdown;
|
|
4552
|
+
}
|
|
4538
4553
|
const catalogedVersion = catalogedMessage.version ?? "";
|
|
4539
4554
|
if (isSameVersion(catalogedVersion, messageVersion)) {
|
|
4555
|
+
const catalogedMessagePath = await getResourcePath(process.env.PROJECT_DIR, messageId, catalogedVersion);
|
|
4556
|
+
const targetMessageDirectory = path3.resolve(process.env.PROJECT_DIR, folder, messagePath);
|
|
4557
|
+
const catalogedMessageDirectory = catalogedMessagePath ? path3.dirname(catalogedMessagePath.fullPath) : null;
|
|
4558
|
+
if (catalogedMessageDirectory && path3.normalize(catalogedMessageDirectory) !== path3.normalize(targetMessageDirectory)) {
|
|
4559
|
+
existingMessageDirectoryToRelocate = catalogedMessageDirectory;
|
|
4560
|
+
}
|
|
4540
4561
|
} else if (isNewerVersion(messageVersion, catalogedVersion)) {
|
|
4541
4562
|
await versionMessage(messageId);
|
|
4542
4563
|
console.log(chalk4.cyan(` - Versioned previous message: (v${catalogedMessage.version})`));
|
|
@@ -4549,8 +4570,24 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4549
4570
|
messageVersion = catalogedVersion;
|
|
4550
4571
|
shouldWriteMessage = false;
|
|
4551
4572
|
}
|
|
4573
|
+
} else if (!serviceOwnsMessageContract && catalogedMessage) {
|
|
4574
|
+
console.log(
|
|
4575
|
+
chalk4.yellow(` - Referencing existing message ${messageId} (v${catalogedMessage.version}) without overwriting`)
|
|
4576
|
+
);
|
|
4577
|
+
messageVersion = catalogedMessage.version ?? messageVersion;
|
|
4578
|
+
shouldWriteMessage = false;
|
|
4552
4579
|
}
|
|
4553
4580
|
if (shouldWriteMessage) {
|
|
4581
|
+
if (existingMessageDirectoryToRelocate) {
|
|
4582
|
+
const targetMessageDirectory = path3.resolve(process.env.PROJECT_DIR, folder, messagePath);
|
|
4583
|
+
await removeMessage(messageId, messageVersion, true);
|
|
4584
|
+
await mkdir(path3.dirname(targetMessageDirectory), { recursive: true });
|
|
4585
|
+
await cp(existingMessageDirectoryToRelocate, targetMessageDirectory, {
|
|
4586
|
+
recursive: true,
|
|
4587
|
+
force: true
|
|
4588
|
+
});
|
|
4589
|
+
await rm(existingMessageDirectoryToRelocate, { recursive: true, force: true });
|
|
4590
|
+
}
|
|
4554
4591
|
await writeMessage(
|
|
4555
4592
|
{
|
|
4556
4593
|
id: messageId,
|
|
@@ -4568,7 +4605,9 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4568
4605
|
...isMessageMarkedAsDraft && { draft: true }
|
|
4569
4606
|
},
|
|
4570
4607
|
{
|
|
4571
|
-
|
|
4608
|
+
// References only reach this branch when the message is missing. They may
|
|
4609
|
+
// create a fallback, but only owners may replace an existing contract.
|
|
4610
|
+
override: serviceOwnsMessageContract,
|
|
4572
4611
|
path: messagePath
|
|
4573
4612
|
}
|
|
4574
4613
|
);
|
|
@@ -4602,8 +4641,6 @@ Processing domain: ${domainName} (v${domainVersion})`));
|
|
|
4602
4641
|
}
|
|
4603
4642
|
}
|
|
4604
4643
|
}
|
|
4605
|
-
} else {
|
|
4606
|
-
console.log(chalk4.yellow(` - Skipping external message: ${getMessageName(message2)}(v${messageVersion})`));
|
|
4607
4644
|
}
|
|
4608
4645
|
const group = options.groupMessagesBy === "x-extension" ? message2.extensions().get("x-eventcatalog-group")?.value() || void 0 : void 0;
|
|
4609
4646
|
if (parseChannels) {
|
|
@@ -4769,11 +4806,18 @@ var getSchemaFromMessagePart = (schema) => {
|
|
|
4769
4806
|
var isJSONSchemaMessage = (message2) => {
|
|
4770
4807
|
return getSchemaFileName(message2).endsWith(".json");
|
|
4771
4808
|
};
|
|
4772
|
-
var
|
|
4809
|
+
var getMessageOwnership = (message2, operation) => {
|
|
4773
4810
|
const operationRole = operation?.extensions?.().get?.("x-eventcatalog-role")?.value?.();
|
|
4774
4811
|
const messageRole = message2.extensions().get("x-eventcatalog-role")?.value();
|
|
4775
|
-
const
|
|
4776
|
-
|
|
4812
|
+
const explicitRole = operationRole || messageRole;
|
|
4813
|
+
if (explicitRole) {
|
|
4814
|
+
return explicitRole === "provider" ? "owner" : "external";
|
|
4815
|
+
}
|
|
4816
|
+
const action = operation?.action?.();
|
|
4817
|
+
if (action === "receive" || action === "subscribe") {
|
|
4818
|
+
return "reference";
|
|
4819
|
+
}
|
|
4820
|
+
return "owner";
|
|
4777
4821
|
};
|
|
4778
4822
|
export {
|
|
4779
4823
|
index_default as default
|