@eventcatalog/core 2.61.8 → 2.62.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/analytics/analytics.cjs +1 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +1 -1
- package/dist/analytics/log-build.js +3 -3
- package/dist/{chunk-WXXNY7YM.js → chunk-5XCX54DV.js} +1 -1
- package/dist/{chunk-FJTZJDTP.js → chunk-O46GCWLU.js} +1 -1
- package/dist/{chunk-USUBTL4C.js → chunk-QFX5AZFO.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +1 -1
- package/dist/eventcatalog.js +3 -3
- package/eventcatalog/astro.config.mjs +1 -1
- package/eventcatalog/src/pages/docs/llm/llms-services.txt.ts +50 -27
- package/eventcatalog/src/utils/channels.ts +41 -30
- package/eventcatalog/src/utils/collections/containers.ts +59 -42
- package/eventcatalog/src/utils/collections/domains.ts +61 -50
- package/eventcatalog/src/utils/collections/services.ts +74 -63
- package/eventcatalog/src/utils/commands.ts +61 -50
- package/eventcatalog/src/utils/entities.ts +46 -35
- package/eventcatalog/src/utils/events.ts +59 -52
- package/eventcatalog/src/utils/queries.ts +59 -52
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log_build_default
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-QFX5AZFO.js";
|
|
4
|
+
import "../chunk-O46GCWLU.js";
|
|
5
|
+
import "../chunk-5XCX54DV.js";
|
|
6
6
|
import "../chunk-UPONRQSN.js";
|
|
7
7
|
export {
|
|
8
8
|
log_build_default as default
|
package/dist/constants.cjs
CHANGED
package/dist/constants.js
CHANGED
package/dist/eventcatalog.cjs
CHANGED
package/dist/eventcatalog.js
CHANGED
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
} from "./chunk-PLNJC7NZ.js";
|
|
7
7
|
import {
|
|
8
8
|
log_build_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QFX5AZFO.js";
|
|
10
|
+
import "./chunk-O46GCWLU.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-
|
|
18
|
+
} from "./chunk-5XCX54DV.js";
|
|
19
19
|
import {
|
|
20
20
|
getProjectOutDir,
|
|
21
21
|
isAuthEnabled,
|
|
@@ -24,7 +24,7 @@ import ecstudioWatcher from './integrations/ecstudio-watcher.mjs';
|
|
|
24
24
|
const projectDirectory = process.env.PROJECT_DIR || process.cwd();
|
|
25
25
|
const base = config.base || '/';
|
|
26
26
|
const host = config.host || false;
|
|
27
|
-
const compress = config.compress ??
|
|
27
|
+
const compress = config.compress ?? false;
|
|
28
28
|
|
|
29
29
|
const expressiveCodeConfig = {
|
|
30
30
|
themes: ['andromeeda'],
|
|
@@ -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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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] =
|
|
43
|
-
|
|
43
|
+
cachedChannels[cacheKey] = await Promise.all(
|
|
44
|
+
channels.map(async (channel) => {
|
|
45
|
+
const { latestVersion, versions } = getVersionForCollectionItem(channel, channels);
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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] =
|
|
40
|
-
|
|
40
|
+
cachedEntities[cacheKey] = await Promise.all(
|
|
41
|
+
containers.map(async (container) => {
|
|
42
|
+
const { latestVersion, versions } = getVersionForCollectionItem(container, containers);
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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] =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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] =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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] =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (
|
|
63
|
-
return
|
|
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
|
-
.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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] =
|
|
41
|
-
|
|
41
|
+
cachedEntities[cacheKey] = await Promise.all(
|
|
42
|
+
entities.map(async (entity) => {
|
|
43
|
+
const { latestVersion, versions } = getVersionForCollectionItem(entity, entities);
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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] =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
data
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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] =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
data
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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.
|
|
9
|
+
"version": "2.62.0",
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@eventcatalog/generator-ai": "^1.1.0",
|
|
40
40
|
"@eventcatalog/license": "^0.0.6",
|
|
41
41
|
"@eventcatalog/linter": "^0.0.2",
|
|
42
|
-
"@eventcatalog/sdk": "^2.
|
|
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",
|