@eventcatalog/core 2.42.6 → 2.42.7
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/README.md +1 -1
- 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-FRAHATZL.js → chunk-3HMUTETN.js} +1 -1
- package/dist/{chunk-R2ESPFL6.js → chunk-774S2HDO.js} +1 -1
- package/dist/{chunk-ZDLD4Z6H.js → chunk-AIFALM4J.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/src/content.config.ts +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/language.mdx.ts +42 -0
- package/eventcatalog/src/pages/docs/llm/llms-full.txt.ts +18 -1
- package/eventcatalog/src/pages/docs/llm/llms.txt.ts +80 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ You can read more on [how it works on GitHub](https://github.com/event-catalog/e
|
|
|
101
101
|
|
|
102
102
|
You should be able to get setup within minutes if you head over to our documentation to get started 👇
|
|
103
103
|
|
|
104
|
-
➡️ [Get Started](https://eventcatalog
|
|
104
|
+
➡️ [Get Started](https://www.eventcatalog.dev/docs/development/getting-started/installation)
|
|
105
105
|
|
|
106
106
|
Or run this command to build a new catalog
|
|
107
107
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log_build_default
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-3HMUTETN.js";
|
|
4
|
+
import "../chunk-774S2HDO.js";
|
|
5
|
+
import "../chunk-AIFALM4J.js";
|
|
6
6
|
import "../chunk-E7TXTI7G.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,15 +6,15 @@ import {
|
|
|
6
6
|
} from "./chunk-DCLTVJDP.js";
|
|
7
7
|
import {
|
|
8
8
|
log_build_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-3HMUTETN.js";
|
|
10
|
+
import "./chunk-774S2HDO.js";
|
|
11
11
|
import {
|
|
12
12
|
catalogToAstro,
|
|
13
13
|
checkAndConvertMdToMdx
|
|
14
14
|
} from "./chunk-SLEMYHTU.js";
|
|
15
15
|
import {
|
|
16
16
|
VERSION
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-AIFALM4J.js";
|
|
18
18
|
import {
|
|
19
19
|
isBackstagePluginEnabled,
|
|
20
20
|
isEventCatalogScaleEnabled,
|
|
@@ -387,7 +387,7 @@ const channels = defineCollection({
|
|
|
387
387
|
|
|
388
388
|
const ubiquitousLanguages = defineCollection({
|
|
389
389
|
loader: glob({
|
|
390
|
-
pattern: ['domains/*/ubiquitous-language.(md|mdx)'],
|
|
390
|
+
pattern: ['domains/*/ubiquitous-language.(md|mdx)', 'domains/*/subdomains/*/ubiquitous-language.(md|mdx)'],
|
|
391
391
|
base: projectDirBase,
|
|
392
392
|
generateId: ({ data }) => {
|
|
393
393
|
// File has no id, so we need to generate one
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { getDomains, getUbiquitousLanguage } from '@utils/collections/domains';
|
|
2
|
+
import type { CollectionEntry } from 'astro:content';
|
|
3
|
+
import type { APIRoute } from 'astro';
|
|
4
|
+
import config from '@config';
|
|
5
|
+
import fs from 'fs';
|
|
6
|
+
|
|
7
|
+
export async function getStaticPaths() {
|
|
8
|
+
const domains = await getDomains({ getAllVersions: false });
|
|
9
|
+
|
|
10
|
+
const buildPages = (collection: CollectionEntry<'domains'>[]) => {
|
|
11
|
+
return collection.map((item) => ({
|
|
12
|
+
params: {
|
|
13
|
+
type: item.collection,
|
|
14
|
+
id: item.data.id,
|
|
15
|
+
},
|
|
16
|
+
props: {
|
|
17
|
+
type: item.collection,
|
|
18
|
+
...item,
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
return [...buildPages(domains)];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const GET: APIRoute = async ({ params, props }) => {
|
|
27
|
+
// Just return empty array if LLMs are not enabled
|
|
28
|
+
if (!config.llmsTxt?.enabled) {
|
|
29
|
+
return new Response('llms.txt is not enabled for this Catalog.', { status: 404 });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const ubiquitousLanguages = await getUbiquitousLanguage(props);
|
|
33
|
+
const ubiquitousLanguage = ubiquitousLanguages[0];
|
|
34
|
+
|
|
35
|
+
if (ubiquitousLanguage?.filePath) {
|
|
36
|
+
let file = fs.readFileSync(ubiquitousLanguage.filePath, 'utf8');
|
|
37
|
+
|
|
38
|
+
return new Response(file, { status: 200 });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return new Response('Not found', { status: 404 });
|
|
42
|
+
};
|
|
@@ -5,7 +5,18 @@ import fs from 'fs';
|
|
|
5
5
|
import { isCustomDocsEnabled } from '@utils/feature';
|
|
6
6
|
import { addSchemaToMarkdown } from '@utils/llms';
|
|
7
7
|
|
|
8
|
-
type AllowedCollections =
|
|
8
|
+
type AllowedCollections =
|
|
9
|
+
| 'events'
|
|
10
|
+
| 'commands'
|
|
11
|
+
| 'queries'
|
|
12
|
+
| 'services'
|
|
13
|
+
| 'domains'
|
|
14
|
+
| 'teams'
|
|
15
|
+
| 'users'
|
|
16
|
+
| 'customPages'
|
|
17
|
+
| 'channels'
|
|
18
|
+
| 'entities'
|
|
19
|
+
| 'flows';
|
|
9
20
|
|
|
10
21
|
const events = await getCollection('events');
|
|
11
22
|
const commands = await getCollection('commands');
|
|
@@ -14,6 +25,9 @@ const services = await getCollection('services');
|
|
|
14
25
|
const domains = await getCollection('domains');
|
|
15
26
|
const teams = await getCollection('teams');
|
|
16
27
|
const users = await getCollection('users');
|
|
28
|
+
const entities = await getCollection('entities');
|
|
29
|
+
const channels = await getCollection('channels');
|
|
30
|
+
const flows = await getCollection('flows');
|
|
17
31
|
|
|
18
32
|
const customDocs = await getCollection('customPages');
|
|
19
33
|
|
|
@@ -30,6 +44,9 @@ export const GET: APIRoute = async ({ params, request }) => {
|
|
|
30
44
|
...domains,
|
|
31
45
|
...teams,
|
|
32
46
|
...users,
|
|
47
|
+
...entities,
|
|
48
|
+
...channels,
|
|
49
|
+
...flows,
|
|
33
50
|
];
|
|
34
51
|
|
|
35
52
|
if (isCustomDocsEnabled()) {
|
|
@@ -3,6 +3,7 @@ import config from '@config';
|
|
|
3
3
|
import type { APIRoute } from 'astro';
|
|
4
4
|
|
|
5
5
|
import { isCustomDocsEnabled } from '@utils/feature';
|
|
6
|
+
import { getUbiquitousLanguage, type UbiquitousLanguage } from '@utils/collections/domains';
|
|
6
7
|
|
|
7
8
|
const events = await getCollection('events');
|
|
8
9
|
const commands = await getCollection('commands');
|
|
@@ -14,14 +15,78 @@ const domains = await getCollection('domains');
|
|
|
14
15
|
const teams = await getCollection('teams');
|
|
15
16
|
const users = await getCollection('users');
|
|
16
17
|
|
|
18
|
+
const flows = await getCollection('flows');
|
|
19
|
+
const channels = await getCollection('channels');
|
|
20
|
+
|
|
21
|
+
const entities = await getCollection('entities');
|
|
22
|
+
|
|
17
23
|
const customDocs = await getCollection('customPages');
|
|
18
24
|
|
|
25
|
+
const ubiquitousLanguages: Record<string, { id: string; version: string; properties: any }[]> = {};
|
|
26
|
+
|
|
27
|
+
for (const domain of domains) {
|
|
28
|
+
const ubiquitousLanguagesForDomain = await getUbiquitousLanguage(domain);
|
|
29
|
+
if (ubiquitousLanguagesForDomain.length > 0) {
|
|
30
|
+
ubiquitousLanguages[domain.id] = ubiquitousLanguagesForDomain.map((item) => ({
|
|
31
|
+
id: domain.id,
|
|
32
|
+
version: domain.data.version,
|
|
33
|
+
properties: item.data.dictionary,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Render the Ubiquitous Languages section
|
|
39
|
+
const renderUbiquitousLanguages = (baseUrl: string) => {
|
|
40
|
+
return Object.entries(ubiquitousLanguages)
|
|
41
|
+
.map(([domainId, items]) => {
|
|
42
|
+
const domainName = domains.find((domain) => domain.id === domainId)?.data.name || domainId;
|
|
43
|
+
const itemsList = items
|
|
44
|
+
.map((item) => {
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
const propertiesList = Object.entries(item.properties)
|
|
47
|
+
.map(
|
|
48
|
+
([key, value]) =>
|
|
49
|
+
` - [${value.name}: - ${value.summary}](${baseUrl}/docs/domains/${domainId.split('-')[0]}/language.mdx)`
|
|
50
|
+
)
|
|
51
|
+
.join('\n');
|
|
52
|
+
return propertiesList;
|
|
53
|
+
})
|
|
54
|
+
.join('\n');
|
|
55
|
+
return `- ${domainName} Domain\n${itemsList}`;
|
|
56
|
+
})
|
|
57
|
+
.join('\n');
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// render the entities from the domain list
|
|
61
|
+
const renderEntities = (baseUrl: string) => {
|
|
62
|
+
const domainsWithEntities = domains.filter((domain) => domain.data.entities?.length && domain.data.entities.length > 0);
|
|
63
|
+
|
|
64
|
+
if (domainsWithEntities.length === 0) {
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return domainsWithEntities
|
|
69
|
+
.map((domain) => {
|
|
70
|
+
const entitiesList = domain.data.entities
|
|
71
|
+
?.map((entity) => {
|
|
72
|
+
const entityItem = entities.find((e) => e.data.id === entity.id);
|
|
73
|
+
return ` - [${entityItem?.data.name}](${baseUrl}/docs/entities/${entityItem?.data.id}/${entityItem?.data.version}.mdx) - ${entityItem?.data.summary}`;
|
|
74
|
+
})
|
|
75
|
+
.join('\n');
|
|
76
|
+
return `- ${domain.data.name} Domain\n${entitiesList || ''}`;
|
|
77
|
+
})
|
|
78
|
+
.join('\n');
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
console.log('PROTOCOL', channels[0]);
|
|
19
82
|
export const GET: APIRoute = async ({ params, request }) => {
|
|
20
83
|
const url = new URL(request.url);
|
|
21
84
|
const baseUrl = process.env.LLMS_TXT_BASE_URL || `${url.origin}`;
|
|
22
85
|
|
|
23
|
-
const formatVersionedItem = (item: any, type: string) =>
|
|
24
|
-
|
|
86
|
+
const formatVersionedItem = (item: any, type: string, extraParams?: string | string[]) => {
|
|
87
|
+
const params = Array.isArray(extraParams) ? extraParams.join('&') : extraParams || '';
|
|
88
|
+
return `- [${item.data.name} - ${item.data.id} - ${item.data.version} ${params ? `- ${params}` : ''}](${baseUrl}/docs/${type}/${item.data.id}/${item.data.version}.mdx) ${item.data.summary ? `- ${item.data.summary}` : ''}`;
|
|
89
|
+
};
|
|
25
90
|
|
|
26
91
|
const formatSimpleItem = (item: any, type: string) =>
|
|
27
92
|
`- [${item.id.replace('.mdx', '')}](${baseUrl}/docs/${type}/${item.data.id}.mdx) - ${item.data.name}`;
|
|
@@ -31,8 +96,8 @@ export const GET: APIRoute = async ({ params, request }) => {
|
|
|
31
96
|
|
|
32
97
|
const content = [
|
|
33
98
|
`# ${config.organizationName} EventCatalog Documentation\n`,
|
|
34
|
-
`> ${config.tagline}`,
|
|
35
|
-
'
|
|
99
|
+
`> ${config.tagline}\n`,
|
|
100
|
+
'## Events',
|
|
36
101
|
events.map((item) => formatVersionedItem(item, 'events')).join(''),
|
|
37
102
|
'\n## Commands',
|
|
38
103
|
commands.map((item) => formatVersionedItem(item, 'commands')).join(''),
|
|
@@ -42,6 +107,17 @@ export const GET: APIRoute = async ({ params, request }) => {
|
|
|
42
107
|
services.map((item) => formatVersionedItem(item, 'services')).join(''),
|
|
43
108
|
'\n## Domains',
|
|
44
109
|
domains.map((item) => formatVersionedItem(item, 'domains')).join(''),
|
|
110
|
+
'\n## Flows',
|
|
111
|
+
flows.map((item) => formatVersionedItem(item, 'flows')).join('\n'),
|
|
112
|
+
'\n## Channels',
|
|
113
|
+
channels
|
|
114
|
+
.map((item) =>
|
|
115
|
+
formatVersionedItem(item, 'channels', item.data.protocols?.map((protocol) => `protocol - ${protocol}`).join('&'))
|
|
116
|
+
)
|
|
117
|
+
.join(''),
|
|
118
|
+
...(Object.keys(ubiquitousLanguages).length > 0 ? ['## Ubiquitous Language', renderUbiquitousLanguages(baseUrl)] : []),
|
|
119
|
+
'\n## Entities',
|
|
120
|
+
renderEntities(baseUrl),
|
|
45
121
|
'\n## Teams',
|
|
46
122
|
teams.map((item) => formatSimpleItem(item, 'teams')).join('\n'),
|
|
47
123
|
'\n## Users',
|