@eventcatalog/core 2.61.9 → 2.62.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.
@@ -37,7 +37,7 @@ var import_axios = __toESM(require("axios"), 1);
37
37
  var import_os = __toESM(require("os"), 1);
38
38
 
39
39
  // package.json
40
- var version = "2.61.9";
40
+ var version = "2.62.1";
41
41
 
42
42
  // src/constants.ts
43
43
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "../chunk-XFANC4LX.js";
4
- import "../chunk-V3ST2S7I.js";
3
+ } from "../chunk-4BYDUGYI.js";
4
+ import "../chunk-GZ2SVHEA.js";
5
5
  export {
6
6
  raiseEvent
7
7
  };
@@ -106,7 +106,7 @@ var import_axios = __toESM(require("axios"), 1);
106
106
  var import_os = __toESM(require("os"), 1);
107
107
 
108
108
  // package.json
109
- var version = "2.61.9";
109
+ var version = "2.62.1";
110
110
 
111
111
  // src/constants.ts
112
112
  var VERSION = version;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-62PN6BKH.js";
4
- import "../chunk-XFANC4LX.js";
5
- import "../chunk-V3ST2S7I.js";
3
+ } from "../chunk-IWFL6VRS.js";
4
+ import "../chunk-4BYDUGYI.js";
5
+ import "../chunk-GZ2SVHEA.js";
6
6
  import "../chunk-UPONRQSN.js";
7
7
  export {
8
8
  log_build_default as default
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-V3ST2S7I.js";
3
+ } from "./chunk-GZ2SVHEA.js";
4
4
 
5
5
  // src/analytics/analytics.js
6
6
  import axios from "axios";
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "2.61.9";
2
+ var version = "2.62.1";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "./chunk-XFANC4LX.js";
3
+ } from "./chunk-4BYDUGYI.js";
4
4
  import {
5
5
  getEventCatalogConfigFile,
6
6
  verifyRequiredFieldsAreInCatalogConfigFile
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "2.61.9";
28
+ var version = "2.62.1";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-V3ST2S7I.js";
3
+ } from "./chunk-GZ2SVHEA.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -157,7 +157,7 @@ var import_axios = __toESM(require("axios"), 1);
157
157
  var import_os = __toESM(require("os"), 1);
158
158
 
159
159
  // package.json
160
- var version = "2.61.9";
160
+ var version = "2.62.1";
161
161
 
162
162
  // src/constants.ts
163
163
  var VERSION = version;
@@ -6,8 +6,8 @@ import {
6
6
  } from "./chunk-PLNJC7NZ.js";
7
7
  import {
8
8
  log_build_default
9
- } from "./chunk-62PN6BKH.js";
10
- import "./chunk-XFANC4LX.js";
9
+ } from "./chunk-IWFL6VRS.js";
10
+ import "./chunk-4BYDUGYI.js";
11
11
  import {
12
12
  catalogToAstro,
13
13
  checkAndConvertMdToMdx
@@ -15,7 +15,7 @@ import {
15
15
  import "./chunk-55D645EH.js";
16
16
  import {
17
17
  VERSION
18
- } from "./chunk-V3ST2S7I.js";
18
+ } from "./chunk-GZ2SVHEA.js";
19
19
  import {
20
20
  getProjectOutDir,
21
21
  isAuthEnabled,
@@ -16,41 +16,64 @@ export const GET: APIRoute = async ({ params, request }) => {
16
16
  const readsFrom = service.data.readsFrom as unknown as CollectionEntry<'containers'>[];
17
17
 
18
18
  const sendsList =
19
- sends
20
- .map(
21
- (send) =>
22
- ` - [${send.data.name} - ${send.data.version}](${baseUrl}/docs/events/${send.data.id}/${send.data.version}.mdx) - ${send.data.summary}`
23
- )
24
- .join('') || ' - Does not send any messages';
19
+ sends.length > 0
20
+ ? sends
21
+ .map(
22
+ (send) =>
23
+ `- [${send.data.name} - ${send.data.version}](${baseUrl}/docs/events/${send.data.id}/${send.data.version}.mdx) - ${send.data.summary?.trim() || ''}`
24
+ )
25
+ .join('\n')
26
+ : '- Does not send any messages';
25
27
 
26
28
  const receivesList =
27
- receives
28
- .map(
29
- (receive) =>
30
- ` - [${receive.data.name} - ${receive.data.version}](${baseUrl}/docs/events/${receive.data.id}/${receive.data.version}.mdx) - ${receive.data.summary}`
31
- )
32
- .join('') || ' - Does not receive any messages';
29
+ receives.length > 0
30
+ ? receives
31
+ .map(
32
+ (receive) =>
33
+ `- [${receive.data.name} - ${receive.data.version}](${baseUrl}/docs/events/${receive.data.id}/${receive.data.version}.mdx) - ${receive.data.summary?.trim() || ''}`
34
+ )
35
+ .join('\n')
36
+ : '- Does not receive any messages';
33
37
 
34
38
  const writesToList =
35
- writesTo
36
- .map(
37
- (write) =>
38
- ` - [${write.data.name} - ${write.data.version}](${baseUrl}/docs/containers/${write.data.id}/${write.data.version}.mdx) - ${write.data.summary}`
39
- )
40
- .join('') || ' - Does not write to any containers';
39
+ writesTo.length > 0
40
+ ? writesTo
41
+ .map(
42
+ (write) =>
43
+ `- [${write.data.name} - ${write.data.version}](${baseUrl}/docs/containers/${write.data.id}/${write.data.version}.mdx) - ${write.data.summary?.trim() || ''}`
44
+ )
45
+ .join('\n')
46
+ : '- Does not write to any containers';
41
47
 
42
48
  const readsFromList =
43
- readsFrom
44
- .map(
45
- (read) =>
46
- ` - [${read.data.name} - ${read.data.version}](${baseUrl}/docs/containers/${read.data.id}/${read.data.version}.mdx) - ${read.data.summary}`
47
- )
48
- .join('') || ' - Does not read from any containers';
49
-
50
- return `## [${service.data.name} - ${service.data.version}](${baseUrl}/docs/services/${service.data.id}/${service.data.version}.mdx) - ${service.data.summary}\n ## Sends\n${sendsList}\n ## Receives\n${receivesList}\n ## Writes to\n${writesToList}\n ## Reads from\n${readsFromList} \n`;
49
+ readsFrom.length > 0
50
+ ? readsFrom
51
+ .map(
52
+ (read) =>
53
+ `- [${read.data.name} - ${read.data.version}](${baseUrl}/docs/containers/${read.data.id}/${read.data.version}.mdx) - ${read.data.summary?.trim() || ''}`
54
+ )
55
+ .join('\n')
56
+ : '- Does not read from any containers';
57
+
58
+ return `## [${service.data.name} - ${service.data.version}](${baseUrl}/docs/services/${service.data.id}/${service.data.version}.mdx)
59
+
60
+ ${service.data.summary?.trim() || ''}
61
+
62
+ ### Sends
63
+ ${sendsList}
64
+
65
+ ### Receives
66
+ ${receivesList}
67
+
68
+ ### Writes to
69
+ ${writesToList}
70
+
71
+ ### Reads from
72
+ ${readsFromList}
73
+ `;
51
74
  };
52
75
 
53
- const content = ['# Services \n\n', services.map((item) => formatServiceWithLinks(item)).join('\n')].join('\n');
76
+ const content = ['# Services\n', services.map((item) => formatServiceWithLinks(item)).join('\n')].join('\n');
54
77
 
55
78
  return new Response(content, {
56
79
  headers: { 'Content-Type': 'text/plain; charset=utf-8' },
@@ -4,6 +4,7 @@ import path from 'path';
4
4
  import { getVersionForCollectionItem, satisfies } from './collections/util';
5
5
  import { getMessages } from './messages';
6
6
  import type { CollectionMessageTypes } from '@types';
7
+ import utils from '@eventcatalog/sdk';
7
8
 
8
9
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
9
10
 
@@ -39,40 +40,50 @@ export const getChannels = async ({ getAllVersions = true }: Props = {}): Promis
39
40
  const { commands, events, queries } = await getMessages();
40
41
  const allMessages = [...commands, ...events, ...queries];
41
42
 
42
- cachedChannels[cacheKey] = channels.map((channel) => {
43
- const { latestVersion, versions } = getVersionForCollectionItem(channel, channels);
43
+ cachedChannels[cacheKey] = await Promise.all(
44
+ channels.map(async (channel) => {
45
+ const { latestVersion, versions } = getVersionForCollectionItem(channel, channels);
44
46
 
45
- const messagesForChannel = allMessages.filter((message) => {
46
- return message.data.channels?.some((messageChannel) => {
47
- if (messageChannel.id != channel.data.id) return false;
48
- if (messageChannel.version == 'latest' || messageChannel.version == undefined)
49
- return channel.data.version == latestVersion;
50
- return satisfies(channel.data.version, messageChannel.version);
47
+ const messagesForChannel = allMessages.filter((message) => {
48
+ return message.data.channels?.some((messageChannel) => {
49
+ if (messageChannel.id != channel.data.id) return false;
50
+ if (messageChannel.version == 'latest' || messageChannel.version == undefined)
51
+ return channel.data.version == latestVersion;
52
+ return satisfies(channel.data.version, messageChannel.version);
53
+ });
51
54
  });
52
- });
53
55
 
54
- const messages = messagesForChannel.map((message: CollectionEntry<CollectionMessageTypes>) => {
55
- return { id: message.data.id, name: message.data.name, version: message.data.version, collection: message.collection };
56
- });
56
+ const messages = messagesForChannel.map((message: CollectionEntry<CollectionMessageTypes>) => {
57
+ return { id: message.data.id, name: message.data.name, version: message.data.version, collection: message.collection };
58
+ });
57
59
 
58
- return {
59
- ...channel,
60
- data: {
61
- ...channel.data,
62
- versions,
63
- latestVersion,
64
- messages,
65
- },
66
- catalog: {
67
- path: path.join(channel.collection, channel.id.replace('/index.mdx', '')),
68
- absoluteFilePath: path.join(PROJECT_DIR, channel.collection, channel.id.replace('/index.mdx', '/index.md')),
69
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', channel.collection, channel.id),
70
- filePath: path.join(process.cwd(), 'src', 'catalog-files', channel.collection, channel.id.replace('/index.mdx', '')),
71
- publicPath: path.join('/generated', channel.collection, channel.id.replace(`-${channel.data.version}`, '')),
72
- type: 'event',
73
- },
74
- };
75
- });
60
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
61
+ const folderName = await getResourceFolderName(
62
+ process.env.PROJECT_DIR ?? '',
63
+ channel.data.id,
64
+ channel.data.version.toString()
65
+ );
66
+ const channelFolderName = folderName ?? channel.id.replace(`-${channel.data.version}`, '');
67
+
68
+ return {
69
+ ...channel,
70
+ data: {
71
+ ...channel.data,
72
+ versions,
73
+ latestVersion,
74
+ messages,
75
+ },
76
+ catalog: {
77
+ path: path.join(channel.collection, channel.id.replace('/index.mdx', '')),
78
+ absoluteFilePath: path.join(PROJECT_DIR, channel.collection, channel.id.replace('/index.mdx', '/index.md')),
79
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', channel.collection, channel.id),
80
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', channel.collection, channel.id.replace('/index.mdx', '')),
81
+ publicPath: path.join('/generated', channel.collection, channelFolderName),
82
+ type: 'event',
83
+ },
84
+ };
85
+ })
86
+ );
76
87
 
77
88
  // order them by the name of the channel
78
89
  cachedChannels[cacheKey].sort((a, b) => {
@@ -2,6 +2,7 @@ import { getCollection } from 'astro:content';
2
2
  import type { CollectionEntry } from 'astro:content';
3
3
  import path from 'path';
4
4
  import { getVersionForCollectionItem, satisfies } from './util';
5
+ import utils from '@eventcatalog/sdk';
5
6
 
6
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
7
8
 
@@ -36,54 +37,70 @@ export const getContainers = async ({ getAllVersions = true }: Props = {}): Prom
36
37
 
37
38
  const services = await getCollection('services');
38
39
 
39
- cachedEntities[cacheKey] = containers.map((container) => {
40
- const { latestVersion, versions } = getVersionForCollectionItem(container, containers);
40
+ cachedEntities[cacheKey] = await Promise.all(
41
+ containers.map(async (container) => {
42
+ const { latestVersion, versions } = getVersionForCollectionItem(container, containers);
41
43
 
42
- const servicesThatReferenceContainer = services.filter((service) => {
43
- const references = [...(service.data.writesTo || []), ...(service.data.readsFrom || [])];
44
- return references.some((item) => {
45
- if (item.id != container.data.id) return false;
46
- if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
47
- return satisfies(container.data.version, item.version);
44
+ const servicesThatReferenceContainer = services.filter((service) => {
45
+ const references = [...(service.data.writesTo || []), ...(service.data.readsFrom || [])];
46
+ return references.some((item) => {
47
+ if (item.id != container.data.id) return false;
48
+ if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
49
+ return satisfies(container.data.version, item.version);
50
+ });
48
51
  });
49
- });
50
52
 
51
- const servicesThatWriteToContainer = services.filter((service) => {
52
- return service.data?.writesTo?.some((item) => {
53
- if (item.id != container.data.id) return false;
54
- if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
55
- return satisfies(container.data.version, item.version);
53
+ const servicesThatWriteToContainer = services.filter((service) => {
54
+ return service.data?.writesTo?.some((item) => {
55
+ if (item.id != container.data.id) return false;
56
+ if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
57
+ return satisfies(container.data.version, item.version);
58
+ });
56
59
  });
57
- });
58
60
 
59
- const servicesThatReadFromContainer = services.filter((service) => {
60
- return service.data?.readsFrom?.some((item) => {
61
- if (item.id != container.data.id) return false;
62
- if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
63
- return satisfies(container.data.version, item.version);
61
+ const servicesThatReadFromContainer = services.filter((service) => {
62
+ return service.data?.readsFrom?.some((item) => {
63
+ if (item.id != container.data.id) return false;
64
+ if (item.version == 'latest' || item.version == undefined) return container.data.version == latestVersion;
65
+ return satisfies(container.data.version, item.version);
66
+ });
64
67
  });
65
- });
66
-
67
- return {
68
- ...container,
69
- data: {
70
- ...container.data,
71
- versions,
72
- latestVersion,
73
- services: servicesThatReferenceContainer,
74
- servicesThatWriteToContainer,
75
- servicesThatReadFromContainer,
76
- },
77
- catalog: {
78
- path: path.join(container.collection, container.id.replace('/index.mdx', '')),
79
- absoluteFilePath: path.join(PROJECT_DIR, container.collection, container.id.replace('/index.mdx', '/index.md')),
80
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', container.collection, container.id),
81
- filePath: path.join(process.cwd(), 'src', 'catalog-files', container.collection, container.id.replace('/index.mdx', '')),
82
- publicPath: path.join('/generated', container.collection, container.id.replace(`-${container.data.version}`, '')),
83
- type: 'container',
84
- },
85
- };
86
- });
68
+
69
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
70
+ const folderName = await getResourceFolderName(
71
+ process.env.PROJECT_DIR ?? '',
72
+ container.data.id,
73
+ container.data.version.toString()
74
+ );
75
+ const containerFolderName = folderName ?? container.id.replace(`-${container.data.version}`, '');
76
+
77
+ return {
78
+ ...container,
79
+ data: {
80
+ ...container.data,
81
+ versions,
82
+ latestVersion,
83
+ services: servicesThatReferenceContainer,
84
+ servicesThatWriteToContainer,
85
+ servicesThatReadFromContainer,
86
+ },
87
+ catalog: {
88
+ path: path.join(container.collection, container.id.replace('/index.mdx', '')),
89
+ absoluteFilePath: path.join(PROJECT_DIR, container.collection, container.id.replace('/index.mdx', '/index.md')),
90
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', container.collection, container.id),
91
+ filePath: path.join(
92
+ process.cwd(),
93
+ 'src',
94
+ 'catalog-files',
95
+ container.collection,
96
+ container.id.replace('/index.mdx', '')
97
+ ),
98
+ publicPath: path.join('/generated', container.collection, containerFolderName),
99
+ type: 'container',
100
+ },
101
+ };
102
+ })
103
+ );
87
104
 
88
105
  // order them by the name of the event
89
106
  cachedEntities[cacheKey].sort((a, b) => {
@@ -4,6 +4,7 @@ import type { CollectionEntry } from 'astro:content';
4
4
  import path from 'path';
5
5
  import type { CollectionMessageTypes } from '@types';
6
6
  import type { Service } from './services';
7
+ import utils from '@eventcatalog/sdk';
7
8
 
8
9
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
9
10
 
@@ -37,56 +38,66 @@ export const getDomains = async ({ getAllVersions = true }: Props = {}): Promise
37
38
  const entitiesCollection = await getCollection('entities');
38
39
 
39
40
  // @ts-ignore // TODO: Fix this type
40
- cachedDomains[cacheKey] = domains.map((domain) => {
41
- const { latestVersion, versions } = getVersionForCollectionItem(domain, domains);
42
-
43
- // const receives = service.data.receives || [];
44
- const servicesInDomain = domain.data.services || [];
45
- const subDomainsInDomain = domain.data.domains || [];
46
- const entitiesInDomain = domain.data.entities || [];
47
- const subDomains = subDomainsInDomain
48
- .map((_subDomain: { id: string; version: string | undefined }) =>
49
- getItemsFromCollectionByIdAndSemverOrLatest(domains, _subDomain.id, _subDomain.version)
50
- )
51
- .flat()
52
- // Stop circular references
53
- .filter((subDomain) => subDomain.data.id !== domain.data.id);
54
-
55
- // Services in the sub domains
56
- const subdomainServices = subDomains.flatMap((subDomain) => subDomain.data.services || []);
57
-
58
- const services = [...servicesInDomain, ...subdomainServices]
59
- .map((_service: { id: string; version: string | undefined }) =>
60
- getItemsFromCollectionByIdAndSemverOrLatest(servicesCollection, _service.id, _service.version)
61
- )
62
- .flat();
63
-
64
- const entities = [...entitiesInDomain]
65
- .map((_entity: { id: string; version: string | undefined }) =>
66
- getItemsFromCollectionByIdAndSemverOrLatest(entitiesCollection, _entity.id, _entity.version)
67
- )
68
- .flat();
69
-
70
- return {
71
- ...domain,
72
- data: {
73
- ...domain.data,
74
- services: services,
75
- domains: subDomains,
76
- entities: entities,
77
- latestVersion,
78
- versions,
79
- },
80
- catalog: {
81
- path: path.join(domain.collection, domain.id.replace('/index.mdx', '')),
82
- absoluteFilePath: path.join(PROJECT_DIR, domain.collection, domain.id.replace('/index.mdx', '/index.md')),
83
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', domain.collection, domain.id),
84
- filePath: path.join(process.cwd(), 'src', 'catalog-files', domain.collection, domain.id.replace('/index.mdx', '')),
85
- publicPath: path.join('/generated', domain.collection, domain.id.replace(`-${domain.data.version}`, '')),
86
- type: 'service',
87
- },
88
- };
89
- });
41
+ cachedDomains[cacheKey] = await Promise.all(
42
+ domains.map(async (domain) => {
43
+ const { latestVersion, versions } = getVersionForCollectionItem(domain, domains);
44
+
45
+ // const receives = service.data.receives || [];
46
+ const servicesInDomain = domain.data.services || [];
47
+ const subDomainsInDomain = domain.data.domains || [];
48
+ const entitiesInDomain = domain.data.entities || [];
49
+ const subDomains = subDomainsInDomain
50
+ .map((_subDomain: { id: string; version: string | undefined }) =>
51
+ getItemsFromCollectionByIdAndSemverOrLatest(domains, _subDomain.id, _subDomain.version)
52
+ )
53
+ .flat()
54
+ // Stop circular references
55
+ .filter((subDomain) => subDomain.data.id !== domain.data.id);
56
+
57
+ // Services in the sub domains
58
+ const subdomainServices = subDomains.flatMap((subDomain) => subDomain.data.services || []);
59
+
60
+ const services = [...servicesInDomain, ...subdomainServices]
61
+ .map((_service: { id: string; version: string | undefined }) =>
62
+ getItemsFromCollectionByIdAndSemverOrLatest(servicesCollection, _service.id, _service.version)
63
+ )
64
+ .flat();
65
+
66
+ const entities = [...entitiesInDomain]
67
+ .map((_entity: { id: string; version: string | undefined }) =>
68
+ getItemsFromCollectionByIdAndSemverOrLatest(entitiesCollection, _entity.id, _entity.version)
69
+ )
70
+ .flat();
71
+
72
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
73
+ const folderName = await getResourceFolderName(
74
+ process.env.PROJECT_DIR ?? '',
75
+ domain.data.id,
76
+ domain.data.version.toString()
77
+ );
78
+ const domainFolderName = folderName ?? domain.id.replace(`-${domain.data.version}`, '');
79
+
80
+ return {
81
+ ...domain,
82
+ data: {
83
+ ...domain.data,
84
+ services: services,
85
+ domains: subDomains,
86
+ entities: entities,
87
+ latestVersion,
88
+ versions,
89
+ },
90
+ catalog: {
91
+ path: path.join(domain.collection, domain.id.replace('/index.mdx', '')),
92
+ absoluteFilePath: path.join(PROJECT_DIR, domain.collection, domain.id.replace('/index.mdx', '/index.md')),
93
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', domain.collection, domain.id),
94
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', domain.collection, domain.id.replace('/index.mdx', '')),
95
+ publicPath: path.join('/generated', domain.collection, domainFolderName),
96
+ type: 'service',
97
+ },
98
+ };
99
+ })
100
+ );
90
101
 
91
102
  // order them by the name of the domain
92
103
  cachedDomains[cacheKey].sort((a, b) => {
@@ -5,6 +5,7 @@ import path from 'path';
5
5
  import semver from 'semver';
6
6
  import type { CollectionTypes } from '@types';
7
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
8
+ import utils from '@eventcatalog/sdk';
8
9
 
9
10
  export type Service = CollectionEntry<'services'>;
10
11
 
@@ -39,69 +40,79 @@ export const getServices = async ({ getAllVersions = true }: Props = {}): Promis
39
40
  const allMessages = [...events, ...commands, ...queries];
40
41
 
41
42
  // @ts-ignore // TODO: Fix this type
42
- cachedServices[cacheKey] = services.map((service) => {
43
- const { latestVersion, versions } = getVersionForCollectionItem(service, services);
44
-
45
- const sendsMessages = service.data.sends || [];
46
- const receivesMessages = service.data.receives || [];
47
- const serviceEntities = service.data.entities || [];
48
- const serviceWritesTo = service.data.writesTo || [];
49
- const serviceReadsFrom = service.data.readsFrom || [];
50
-
51
- const sends = sendsMessages
52
- .map((message: any) => getItemsFromCollectionByIdAndSemverOrLatest(allMessages, message.id, message.version))
53
- .flat()
54
- .filter((e: any) => e !== undefined);
55
-
56
- const receives = receivesMessages
57
- .map((message: any) => getItemsFromCollectionByIdAndSemverOrLatest(allMessages, message.id, message.version))
58
- .flat()
59
- .filter((e: any) => e !== undefined);
60
-
61
- const mappedEntities = serviceEntities
62
- .map((entity: any) => getItemsFromCollectionByIdAndSemverOrLatest(entities, entity.id, entity.version))
63
- .flat()
64
- .filter((e: any) => e !== undefined);
65
-
66
- const mappedWritesTo = serviceWritesTo
67
- .map((container: any) => getItemsFromCollectionByIdAndSemverOrLatest(containers, container.id, container.version))
68
- .flat()
69
- .filter((e: any) => e !== undefined);
70
-
71
- const mappedReadsFrom = serviceReadsFrom
72
- .map((container: any) => getItemsFromCollectionByIdAndSemverOrLatest(containers, container.id, container.version))
73
- .flat()
74
- .filter((e: any) => e !== undefined);
75
-
76
- return {
77
- ...service,
78
- data: {
79
- ...service.data,
80
- writesTo: mappedWritesTo,
81
- readsFrom: mappedReadsFrom,
82
- receives,
83
- sends,
84
- versions,
85
- latestVersion,
86
- entities: mappedEntities,
87
- },
88
- // TODO: verify if it could be deleted.
89
- nodes: {
90
- receives,
91
- sends,
92
- },
93
- catalog: {
94
- // TODO: avoid use string replace at path due to win32
95
- path: path.join(service.collection, service.id.replace('/index.mdx', '')),
96
- absoluteFilePath: path.join(PROJECT_DIR, service.collection, service.id.replace('/index.mdx', '/index.md')),
97
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', service.collection, service.id),
98
- filePath: path.join(process.cwd(), 'src', 'catalog-files', service.collection, service.id.replace('/index.mdx', '')),
99
- // service will be MySerive-0.0.1 remove the version
100
- publicPath: path.join('/generated', service.collection, service.id.replace(`-${service.data.version}`, '')),
101
- type: 'service',
102
- },
103
- };
104
- });
43
+ cachedServices[cacheKey] = await Promise.all(
44
+ services.map(async (service) => {
45
+ const { latestVersion, versions } = getVersionForCollectionItem(service, services);
46
+
47
+ const sendsMessages = service.data.sends || [];
48
+ const receivesMessages = service.data.receives || [];
49
+ const serviceEntities = service.data.entities || [];
50
+ const serviceWritesTo = service.data.writesTo || [];
51
+ const serviceReadsFrom = service.data.readsFrom || [];
52
+
53
+ const sends = sendsMessages
54
+ .map((message: any) => getItemsFromCollectionByIdAndSemverOrLatest(allMessages, message.id, message.version))
55
+ .flat()
56
+ .filter((e: any) => e !== undefined);
57
+
58
+ const receives = receivesMessages
59
+ .map((message: any) => getItemsFromCollectionByIdAndSemverOrLatest(allMessages, message.id, message.version))
60
+ .flat()
61
+ .filter((e: any) => e !== undefined);
62
+
63
+ const mappedEntities = serviceEntities
64
+ .map((entity: any) => getItemsFromCollectionByIdAndSemverOrLatest(entities, entity.id, entity.version))
65
+ .flat()
66
+ .filter((e: any) => e !== undefined);
67
+
68
+ const mappedWritesTo = serviceWritesTo
69
+ .map((container: any) => getItemsFromCollectionByIdAndSemverOrLatest(containers, container.id, container.version))
70
+ .flat()
71
+ .filter((e: any) => e !== undefined);
72
+
73
+ const mappedReadsFrom = serviceReadsFrom
74
+ .map((container: any) => getItemsFromCollectionByIdAndSemverOrLatest(containers, container.id, container.version))
75
+ .flat()
76
+ .filter((e: any) => e !== undefined);
77
+
78
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
79
+ const folderName = await getResourceFolderName(
80
+ process.env.PROJECT_DIR ?? '',
81
+ service.data.id,
82
+ service.data.version.toString()
83
+ );
84
+ const serviceFolderName = folderName ?? service.id.replace(`-${service.data.version}`, '');
85
+
86
+ return {
87
+ ...service,
88
+ data: {
89
+ ...service.data,
90
+ writesTo: mappedWritesTo,
91
+ readsFrom: mappedReadsFrom,
92
+ receives,
93
+ sends,
94
+ versions,
95
+ latestVersion,
96
+ entities: mappedEntities,
97
+ },
98
+ // TODO: verify if it could be deleted.
99
+ nodes: {
100
+ receives,
101
+ sends,
102
+ },
103
+ catalog: {
104
+ // TODO: avoid use string replace at path due to win32
105
+ path: path.join(service.collection, service.id.replace('/index.mdx', '')),
106
+ absoluteFilePath: path.join(PROJECT_DIR, service.collection, service.id.replace('/index.mdx', '/index.md')),
107
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', service.collection, service.id),
108
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', service.collection, service.id.replace('/index.mdx', '')),
109
+ // service will be MySerive-0.0.1 remove the version
110
+ publicPath: path.join('/generated', service.collection, serviceFolderName),
111
+ type: 'service',
112
+ },
113
+ };
114
+ })
115
+ );
105
116
 
106
117
  // order them by the name of the service
107
118
  cachedServices[cacheKey].sort((a, b) => {
@@ -2,6 +2,7 @@ import { getCollection } from 'astro:content';
2
2
  import type { CollectionEntry } from 'astro:content';
3
3
  import path from 'path';
4
4
  import { getVersionForCollectionItem, satisfies } from './collections/util';
5
+ import utils from '@eventcatalog/sdk';
5
6
 
6
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
7
8
 
@@ -39,58 +40,68 @@ export const getCommands = async ({ getAllVersions = true, hydrateServices = tru
39
40
  const allChannels = await getCollection('channels');
40
41
 
41
42
  // @ts-ignore
42
- cachedCommands[cacheKey] = commands.map((command) => {
43
- const { latestVersion, versions } = getVersionForCollectionItem(command, commands);
44
-
45
- const producers = services
46
- .filter((service) => {
47
- return service.data.sends?.some((item) => {
48
- if (item.id != command.data.id) return false;
49
- if (item.version == 'latest' || item.version == undefined) return command.data.version == latestVersion;
50
- return satisfies(command.data.version, item.version);
43
+ cachedCommands[cacheKey] = await Promise.all(
44
+ commands.map(async (command) => {
45
+ const { latestVersion, versions } = getVersionForCollectionItem(command, commands);
46
+
47
+ const producers = services
48
+ .filter((service) => {
49
+ return service.data.sends?.some((item) => {
50
+ if (item.id != command.data.id) return false;
51
+ if (item.version == 'latest' || item.version == undefined) return command.data.version == latestVersion;
52
+ return satisfies(command.data.version, item.version);
53
+ });
54
+ })
55
+ .map((service) => {
56
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
57
+ return service;
51
58
  });
52
- })
53
- .map((service) => {
54
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
55
- return service;
56
- });
57
-
58
- const consumers = services
59
- .filter((service) => {
60
- return service.data.receives?.some((item) => {
61
- if (item.id != command.data.id) return false;
62
- if (item.version == 'latest' || item.version == undefined) return command.data.version == latestVersion;
63
- return satisfies(command.data.version, item.version);
59
+
60
+ const consumers = services
61
+ .filter((service) => {
62
+ return service.data.receives?.some((item) => {
63
+ if (item.id != command.data.id) return false;
64
+ if (item.version == 'latest' || item.version == undefined) return command.data.version == latestVersion;
65
+ return satisfies(command.data.version, item.version);
66
+ });
67
+ })
68
+ .map((service) => {
69
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
70
+ return service;
64
71
  });
65
- })
66
- .map((service) => {
67
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
68
- return service;
69
- });
70
-
71
- const messageChannels = command.data.channels || [];
72
- const channelsForCommand = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
73
-
74
- return {
75
- ...command,
76
- data: {
77
- ...command.data,
78
- messageChannels: channelsForCommand,
79
- producers,
80
- consumers,
81
- versions,
82
- latestVersion,
83
- },
84
- catalog: {
85
- path: path.join(command.collection, command.id.replace('/index.mdx', '')),
86
- absoluteFilePath: path.join(PROJECT_DIR, command.collection, command.id.replace('/index.mdx', '/index.md')),
87
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', command.collection, command.id),
88
- filePath: path.join(process.cwd(), 'src', 'catalog-files', command.collection, command.id.replace('/index.mdx', '')),
89
- publicPath: path.join('/generated', command.collection, command.id.replace(`-${command.data.version}`, '')),
90
- type: 'command',
91
- },
92
- };
93
- });
72
+
73
+ const messageChannels = command.data.channels || [];
74
+ const channelsForCommand = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
75
+
76
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
77
+ const folderName = await getResourceFolderName(
78
+ process.env.PROJECT_DIR ?? '',
79
+ command.data.id,
80
+ command.data.version.toString()
81
+ );
82
+ const commandFolderName = folderName ?? command.id.replace(`-${command.data.version}`, '');
83
+
84
+ return {
85
+ ...command,
86
+ data: {
87
+ ...command.data,
88
+ messageChannels: channelsForCommand,
89
+ producers,
90
+ consumers,
91
+ versions,
92
+ latestVersion,
93
+ },
94
+ catalog: {
95
+ path: path.join(command.collection, command.id.replace('/index.mdx', '')),
96
+ absoluteFilePath: path.join(PROJECT_DIR, command.collection, command.id.replace('/index.mdx', '/index.md')),
97
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', command.collection, command.id),
98
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', command.collection, command.id.replace('/index.mdx', '')),
99
+ publicPath: path.join('/generated', command.collection, commandFolderName),
100
+ type: 'command',
101
+ },
102
+ };
103
+ })
104
+ );
94
105
 
95
106
  // order them by the name of the command
96
107
  cachedCommands[cacheKey].sort((a, b) => {
@@ -2,6 +2,7 @@ import { getCollection } from 'astro:content';
2
2
  import type { CollectionEntry } from 'astro:content';
3
3
  import path from 'path';
4
4
  import { getVersionForCollectionItem, satisfies } from './collections/util';
5
+ import utils from '@eventcatalog/sdk';
5
6
 
6
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
7
8
 
@@ -37,44 +38,54 @@ export const getEntities = async ({ getAllVersions = true }: Props = {}): Promis
37
38
  const services = await getCollection('services');
38
39
  const domains = await getCollection('domains');
39
40
 
40
- cachedEntities[cacheKey] = entities.map((entity) => {
41
- const { latestVersion, versions } = getVersionForCollectionItem(entity, entities);
41
+ cachedEntities[cacheKey] = await Promise.all(
42
+ entities.map(async (entity) => {
43
+ const { latestVersion, versions } = getVersionForCollectionItem(entity, entities);
42
44
 
43
- const servicesThatReferenceEntity = services.filter((service) =>
44
- service.data.entities?.some((item) => {
45
- if (item.id != entity.data.id) return false;
46
- if (item.version == 'latest' || item.version == undefined) return entity.data.version == latestVersion;
47
- return satisfies(entity.data.version, item.version);
48
- })
49
- );
45
+ const servicesThatReferenceEntity = services.filter((service) =>
46
+ service.data.entities?.some((item) => {
47
+ if (item.id != entity.data.id) return false;
48
+ if (item.version == 'latest' || item.version == undefined) return entity.data.version == latestVersion;
49
+ return satisfies(entity.data.version, item.version);
50
+ })
51
+ );
50
52
 
51
- const domainsThatReferenceEntity = domains.filter((domain) =>
52
- domain.data.entities?.some((item) => {
53
- if (item.id != entity.data.id) return false;
54
- if (item.version == 'latest' || item.version == undefined) return entity.data.version == latestVersion;
55
- return satisfies(entity.data.version, item.version);
56
- })
57
- );
53
+ const domainsThatReferenceEntity = domains.filter((domain) =>
54
+ domain.data.entities?.some((item) => {
55
+ if (item.id != entity.data.id) return false;
56
+ if (item.version == 'latest' || item.version == undefined) return entity.data.version == latestVersion;
57
+ return satisfies(entity.data.version, item.version);
58
+ })
59
+ );
58
60
 
59
- return {
60
- ...entity,
61
- data: {
62
- ...entity.data,
63
- versions,
64
- latestVersion,
65
- services: servicesThatReferenceEntity,
66
- domains: domainsThatReferenceEntity,
67
- },
68
- catalog: {
69
- path: path.join(entity.collection, entity.id.replace('/index.mdx', '')),
70
- absoluteFilePath: path.join(PROJECT_DIR, entity.collection, entity.id.replace('/index.mdx', '/index.md')),
71
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', entity.collection, entity.id),
72
- filePath: path.join(process.cwd(), 'src', 'catalog-files', entity.collection, entity.id.replace('/index.mdx', '')),
73
- publicPath: path.join('/generated', entity.collection, entity.id.replace(`-${entity.data.version}`, '')),
74
- type: 'entity',
75
- },
76
- };
77
- });
61
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
62
+ const folderName = await getResourceFolderName(
63
+ process.env.PROJECT_DIR ?? '',
64
+ entity.data.id,
65
+ entity.data.version.toString()
66
+ );
67
+ const entityFolderName = folderName ?? entity.id.replace(`-${entity.data.version}`, '');
68
+
69
+ return {
70
+ ...entity,
71
+ data: {
72
+ ...entity.data,
73
+ versions,
74
+ latestVersion,
75
+ services: servicesThatReferenceEntity,
76
+ domains: domainsThatReferenceEntity,
77
+ },
78
+ catalog: {
79
+ path: path.join(entity.collection, entity.id.replace('/index.mdx', '')),
80
+ absoluteFilePath: path.join(PROJECT_DIR, entity.collection, entity.id.replace('/index.mdx', '/index.md')),
81
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', entity.collection, entity.id),
82
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', entity.collection, entity.id.replace('/index.mdx', '')),
83
+ publicPath: path.join('/generated', entity.collection, entityFolderName),
84
+ type: 'entity',
85
+ },
86
+ };
87
+ })
88
+ );
78
89
 
79
90
  // order them by the name of the event
80
91
  cachedEntities[cacheKey].sort((a, b) => {
@@ -2,6 +2,7 @@ import { getCollection } from 'astro:content';
2
2
  import type { CollectionEntry } from 'astro:content';
3
3
  import path from 'path';
4
4
  import { getVersionForCollectionItem, satisfies } from './collections/util';
5
+ import utils from '@eventcatalog/sdk';
5
6
 
6
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
7
8
 
@@ -39,58 +40,64 @@ export const getEvents = async ({ getAllVersions = true, hydrateServices = true
39
40
  const allChannels = await getCollection('channels');
40
41
 
41
42
  // @ts-ignore
42
- cachedEvents[cacheKey] = events.map((event) => {
43
- const { latestVersion, versions } = getVersionForCollectionItem(event, events);
44
-
45
- const producers = services
46
- .filter((service) =>
47
- service.data.sends?.some((item) => {
48
- if (item.id != event.data.id) return false;
49
- if (item.version == 'latest' || item.version == undefined) return event.data.version == latestVersion;
50
- return satisfies(event.data.version, item.version);
51
- })
52
- )
53
- .map((service) => {
54
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
55
- return service;
56
- });
57
-
58
- const consumers = services
59
- .filter((service) =>
60
- service.data.receives?.some((item) => {
61
- if (item.id != event.data.id) return false;
62
- if (item.version == 'latest' || item.version == undefined) return event.data.version == latestVersion;
63
- return satisfies(event.data.version, item.version);
64
- })
65
- )
66
- .map((service) => {
67
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
68
- return service;
69
- });
70
-
71
- const messageChannels = event.data.channels || [];
72
- const channelsForEvent = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
73
-
74
- return {
75
- ...event,
76
- data: {
77
- ...event.data,
78
- messageChannels: channelsForEvent,
79
- producers,
80
- consumers,
81
- versions,
82
- latestVersion,
83
- },
84
- catalog: {
85
- path: path.join(event.collection, event.id.replace('/index.mdx', '')),
86
- absoluteFilePath: path.join(PROJECT_DIR, event.collection, event.id.replace('/index.mdx', '/index.md')),
87
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', event.collection, event.id),
88
- filePath: path.join(process.cwd(), 'src', 'catalog-files', event.collection, event.id.replace('/index.mdx', '')),
89
- publicPath: path.join('/generated', event.collection, event.id.replace(`-${event.data.version}`, '')),
90
- type: 'event',
91
- },
92
- };
93
- });
43
+ cachedEvents[cacheKey] = await Promise.all(
44
+ events.map(async (event) => {
45
+ const { latestVersion, versions } = getVersionForCollectionItem(event, events);
46
+
47
+ const producers = services
48
+ .filter((service) =>
49
+ service.data.sends?.some((item) => {
50
+ if (item.id != event.data.id) return false;
51
+ if (item.version == 'latest' || item.version == undefined) return event.data.version == latestVersion;
52
+ return satisfies(event.data.version, item.version);
53
+ })
54
+ )
55
+ .map((service) => {
56
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
57
+ return service;
58
+ });
59
+
60
+ const consumers = services
61
+ .filter((service) =>
62
+ service.data.receives?.some((item) => {
63
+ if (item.id != event.data.id) return false;
64
+ if (item.version == 'latest' || item.version == undefined) return event.data.version == latestVersion;
65
+ return satisfies(event.data.version, item.version);
66
+ })
67
+ )
68
+ .map((service) => {
69
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
70
+ return service;
71
+ });
72
+
73
+ const messageChannels = event.data.channels || [];
74
+ const channelsForEvent = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
75
+
76
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
77
+ const folderName = await getResourceFolderName(process.env.PROJECT_DIR ?? '', event.data.id, event.data.version.toString());
78
+ const eventFolderName = folderName ?? event.id.replace(`-${event.data.version}`, '');
79
+
80
+ return {
81
+ ...event,
82
+ data: {
83
+ ...event.data,
84
+ messageChannels: channelsForEvent,
85
+ producers,
86
+ consumers,
87
+ versions,
88
+ latestVersion,
89
+ },
90
+ catalog: {
91
+ path: path.join(event.collection, event.id.replace('/index.mdx', '')),
92
+ absoluteFilePath: path.join(PROJECT_DIR, event.collection, event.id.replace('/index.mdx', '/index.md')),
93
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', event.collection, event.id),
94
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', event.collection, event.id.replace('/index.mdx', '')),
95
+ publicPath: path.join('/generated', event.collection, eventFolderName),
96
+ type: 'event',
97
+ },
98
+ };
99
+ })
100
+ );
94
101
 
95
102
  // order them by the name of the event
96
103
  cachedEvents[cacheKey].sort((a, b) => {
@@ -1,6 +1,7 @@
1
1
  import { getCollection } from 'astro:content';
2
2
  import type { CollectionEntry } from 'astro:content';
3
3
  import path from 'path';
4
+ import utils from '@eventcatalog/sdk';
4
5
  import { getVersionForCollectionItem, satisfies } from './collections/util';
5
6
 
6
7
  const PROJECT_DIR = process.env.PROJECT_DIR || process.cwd();
@@ -39,58 +40,64 @@ export const getQueries = async ({ getAllVersions = true, hydrateServices = true
39
40
  const allChannels = await getCollection('channels');
40
41
 
41
42
  // @ts-ignore
42
- cachedQueries[cacheKey] = queries.map((query) => {
43
- const { latestVersion, versions } = getVersionForCollectionItem(query, queries);
44
-
45
- const producers = services
46
- .filter((service) =>
47
- service.data.sends?.some((item) => {
48
- if (item.id != query.data.id) return false;
49
- if (item.version == 'latest' || item.version == undefined) return query.data.version == latestVersion;
50
- return satisfies(query.data.version, item.version);
51
- })
52
- )
53
- .map((service) => {
54
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
55
- return service;
56
- });
57
-
58
- const consumers = services
59
- .filter((service) =>
60
- service.data.receives?.some((item) => {
61
- if (item.id != query.data.id) return false;
62
- if (item.version == 'latest' || item.version == undefined) return query.data.version == latestVersion;
63
- return satisfies(query.data.version, item.version);
64
- })
65
- )
66
- .map((service) => {
67
- if (!hydrateServices) return { id: service.data.id, version: service.data.version };
68
- return service;
69
- });
70
-
71
- const messageChannels = query.data.channels || [];
72
- const channelsForQuery = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
73
-
74
- return {
75
- ...query,
76
- data: {
77
- ...query.data,
78
- messageChannels: channelsForQuery,
79
- producers,
80
- consumers,
81
- versions,
82
- latestVersion,
83
- },
84
- catalog: {
85
- path: path.join(query.collection, query.id.replace('/index.mdx', '')),
86
- absoluteFilePath: path.join(PROJECT_DIR, query.collection, query.id.replace('/index.mdx', '/index.md')),
87
- astroContentFilePath: path.join(process.cwd(), 'src', 'content', query.collection, query.id),
88
- filePath: path.join(process.cwd(), 'src', 'catalog-files', query.collection, query.id.replace('/index.mdx', '')),
89
- publicPath: path.join('/generated', query.collection, query.id.replace(`-${query.data.version}`, '')),
90
- type: 'event',
91
- },
92
- };
93
- });
43
+ cachedQueries[cacheKey] = await Promise.all(
44
+ queries.map(async (query) => {
45
+ const { latestVersion, versions } = getVersionForCollectionItem(query, queries);
46
+
47
+ const producers = services
48
+ .filter((service) =>
49
+ service.data.sends?.some((item) => {
50
+ if (item.id != query.data.id) return false;
51
+ if (item.version == 'latest' || item.version == undefined) return query.data.version == latestVersion;
52
+ return satisfies(query.data.version, item.version);
53
+ })
54
+ )
55
+ .map((service) => {
56
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
57
+ return service;
58
+ });
59
+
60
+ const consumers = services
61
+ .filter((service) =>
62
+ service.data.receives?.some((item) => {
63
+ if (item.id != query.data.id) return false;
64
+ if (item.version == 'latest' || item.version == undefined) return query.data.version == latestVersion;
65
+ return satisfies(query.data.version, item.version);
66
+ })
67
+ )
68
+ .map((service) => {
69
+ if (!hydrateServices) return { id: service.data.id, version: service.data.version };
70
+ return service;
71
+ });
72
+
73
+ const messageChannels = query.data.channels || [];
74
+ const channelsForQuery = allChannels.filter((c) => messageChannels.some((channel) => c.data.id === channel.id));
75
+
76
+ const { getResourceFolderName } = utils(process.env.PROJECT_DIR ?? '');
77
+ const folderName = await getResourceFolderName(process.env.PROJECT_DIR ?? '', query.data.id, query.data.version.toString());
78
+ const queryFolderName = folderName ?? query.id.replace(`-${query.data.version}`, '');
79
+
80
+ return {
81
+ ...query,
82
+ data: {
83
+ ...query.data,
84
+ messageChannels: channelsForQuery,
85
+ producers,
86
+ consumers,
87
+ versions,
88
+ latestVersion,
89
+ },
90
+ catalog: {
91
+ path: path.join(query.collection, query.id.replace('/index.mdx', '')),
92
+ absoluteFilePath: path.join(PROJECT_DIR, query.collection, query.id.replace('/index.mdx', '/index.md')),
93
+ astroContentFilePath: path.join(process.cwd(), 'src', 'content', query.collection, query.id),
94
+ filePath: path.join(process.cwd(), 'src', 'catalog-files', query.collection, query.id.replace('/index.mdx', '')),
95
+ publicPath: path.join('/generated', query.collection, queryFolderName),
96
+ type: 'event',
97
+ },
98
+ };
99
+ })
100
+ );
94
101
 
95
102
  // order them by the name of the query
96
103
  cachedQueries[cacheKey].sort((a, b) => {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/event-catalog/eventcatalog.git"
7
7
  },
8
8
  "type": "module",
9
- "version": "2.61.9",
9
+ "version": "2.62.1",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
@@ -37,9 +37,9 @@
37
37
  "@asyncapi/react-component": "^2.4.3",
38
38
  "@auth/core": "^0.37.4",
39
39
  "@eventcatalog/generator-ai": "^1.1.0",
40
- "@eventcatalog/license": "^0.0.6",
40
+ "@eventcatalog/license": "^0.0.7",
41
41
  "@eventcatalog/linter": "^0.0.2",
42
- "@eventcatalog/sdk": "^2.2.7",
42
+ "@eventcatalog/sdk": "^2.8.4",
43
43
  "@eventcatalog/visualizer": "^0.0.6",
44
44
  "@fontsource/inter": "^5.2.5",
45
45
  "@headlessui/react": "^2.0.3",