@eventcatalog/core 2.12.1 → 2.12.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @eventcatalog/core
2
2
 
3
+ ## 2.12.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 93e224c: fix(core): custom defined landing page for docs now render on docs tab
8
+
3
9
  ## 2.12.1
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -133,6 +133,15 @@ Thank you to our project sponsors.
133
133
 
134
134
  <hr />
135
135
 
136
+ <div align="center">
137
+ <img alt="oso" src="./images/sponsors/oso-logo-green.png" width="30%" />
138
+ <p style="margin: 0; padding: 0;">Delivering Apache Kafka professional services to your business
139
+ </p>
140
+ <a href="https://oso.sh/?utm_source=eventcatalog&utm_medium=web&utm_campaign=sponsorship" target="_blank" >Learn more</a>
141
+ </div>
142
+
143
+ <hr />
144
+
136
145
  _Sponsors help make EventCatalog sustainable, want to help the project? Get in touch! Or [visit our sponsor page](https://www.eventcatalog.dev/support)._
137
146
 
138
147
  # Enterprise support
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.12.1",
9
+ "version": "2.12.2",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
@@ -16,10 +16,11 @@ import { getServices } from '@utils/services/services';
16
16
  import { getFlows } from '@utils/flows/flows';
17
17
  import { getTeams } from '@utils/teams';
18
18
  import { getUsers } from '@utils/users';
19
- import config, { type CatalogConfig } from '@eventcatalog';
19
+ import { isCollectionVisibleInCatalog } from '@eventcatalog';
20
20
  import { buildUrl } from '@utils/url-builder';
21
21
  import { getQueries } from '@utils/queries';
22
22
  import CatalogResourcesSideBar from '@components/SideBars/CatalogResourcesSideBar';
23
+ import { hasLandingPageForDocs } from '@utils/pages';
23
24
 
24
25
  const events = await getEvents({ getAllVersions: false });
25
26
  const commands = await getCommands({ getAllVersions: false });
@@ -37,12 +38,23 @@ const allData = [...domains, ...services, ...messages, ...flows, ...teams, ...us
37
38
 
38
39
  const currentPath = Astro.url.pathname;
39
40
 
41
+ const catalogHasDefaultLandingPageForDocs = await hasLandingPageForDocs();
42
+
40
43
  const getDefaultUrl = (route: string, defaultValue: string) => {
41
- if (domains.length > 0) return buildUrl(`/${route}/domains/${domains[0].data.id}/${domains[0].data.latestVersion}`);
42
- if (services.length > 0) return buildUrl(`/${route}/services/${services[0].data.id}/${services[0].data.latestVersion}`);
43
- if (messages.length > 0)
44
- return buildUrl(`/${route}/${messages[0].collection}/${messages[0].data.id}/${messages[0].data.latestVersion}`);
45
- if (flows.length > 0) return buildUrl(`/${route}/flows/${flows[0].data.id}/${flows[0].data.latestVersion}`);
44
+ const collections = [
45
+ { data: domains, key: 'domains' },
46
+ { data: services, key: 'services' },
47
+ { data: messages, key: 'messages' },
48
+ { data: flows, key: 'flows' },
49
+ ];
50
+
51
+ for (const { data, key } of collections) {
52
+ if (data.length > 0 && isCollectionVisibleInCatalog(key)) {
53
+ const item = data[0];
54
+ return buildUrl(`/${route}/${key}/${item.data.id}/${item.data.latestVersion}`);
55
+ }
56
+ }
57
+
46
58
  return buildUrl(defaultValue);
47
59
  };
48
60
 
@@ -59,7 +71,7 @@ const navigationItems = [
59
71
  id: '/docs',
60
72
  label: 'Documentation',
61
73
  icon: BookOpenText,
62
- href: getDefaultUrl('docs', '/docs'),
74
+ href: catalogHasDefaultLandingPageForDocs ? buildUrl('/docs') : getDefaultUrl('docs', '/docs'),
63
75
  current: currentPath.includes('/docs'),
64
76
  sidebar: true,
65
77
  },
@@ -81,31 +93,6 @@ const navigationItems = [
81
93
  },
82
94
  ];
83
95
 
84
- const eventCatalogConfig = config as CatalogConfig;
85
-
86
- const {
87
- services: servicesConfig,
88
- domains: domainsConfig,
89
- messages: messagesConfig,
90
- flows: flowsConfig,
91
- teams: teamsConfig,
92
- users: usersConfig,
93
- } = eventCatalogConfig?.docs?.sidebar || {};
94
-
95
- const getConfigValue = (obj: any, key: string, defaultValue: any) => {
96
- return obj?.[key] ?? defaultValue;
97
- };
98
-
99
- const visibleCollections: { [key: string]: boolean } = {
100
- events: getConfigValue(messagesConfig, 'visible', true),
101
- commands: getConfigValue(messagesConfig, 'visible', true),
102
- domains: getConfigValue(domainsConfig, 'visible', true),
103
- flows: getConfigValue(flowsConfig, 'visible', true),
104
- services: getConfigValue(servicesConfig, 'visible', true),
105
- teams: getConfigValue(teamsConfig, 'visible', true),
106
- users: getConfigValue(usersConfig, 'visible', true),
107
- };
108
-
109
96
  const sideNav = allData.reduce((acc, item) => {
110
97
  const title = item.collection;
111
98
  const group = acc[title] || [];
@@ -120,7 +107,7 @@ const sideNav = allData.reduce((acc, item) => {
120
107
  label: item.data.name,
121
108
  version: item.collection === 'teams' || item.collection === 'users' ? null : item.data.version,
122
109
  // items: item.collection === 'users' ? [] : item.headings,
123
- visible: visibleCollections[item.collection],
110
+ visible: isCollectionVisibleInCatalog(item.collection),
124
111
  // @ts-ignore
125
112
  href: item.data.version
126
113
  ? // @ts-ignore
@@ -17,11 +17,15 @@ if (page) {
17
17
  {
18
18
  CustomContent && (
19
19
  <VerticalSideBarLayout title="EventCatalog">
20
- <main class="py-8 px-8">
21
- <div class="prose prose-md w-full !max-w-none">
22
- <CustomContent components={components} />
20
+ <main class="flex sm:px-8 docs-layout h-full">
21
+ <div class="flex docs-layout w-full">
22
+ <div class="w-full lg:mr-2 pr-8 overflow-y-auto py-8">
23
+ <div class="prose prose-md w-full !max-w-none">
24
+ <CustomContent components={components} />
25
+ </div>
26
+ <Footer />
27
+ </div>
23
28
  </div>
24
- <Footer />
25
29
  </main>
26
30
  </VerticalSideBarLayout>
27
31
  )
@@ -18,4 +18,19 @@ export type CatalogConfig = {
18
18
  };
19
19
  };
20
20
 
21
+ const getConfigValue = (obj: any, key: string, defaultValue: any) => {
22
+ return obj?.[key] ?? defaultValue;
23
+ };
24
+
25
+ export const isCollectionVisibleInCatalog = (collection: string) => {
26
+ const sidebarConfig = config?.default?.docs?.sidebar || {};
27
+ const collections = ['events', 'commands', 'queries', 'domains', 'flows', 'services', 'teams', 'users'];
28
+
29
+ if (!collections.includes(collection)) return false;
30
+
31
+ const collectionConfig =
32
+ sidebarConfig[collection === 'events' || collection === 'commands' || collection === 'queries' ? 'messages' : collection];
33
+ return getConfigValue(collectionConfig, 'visible', true);
34
+ };
35
+
21
36
  export default config.default;
@@ -13,3 +13,8 @@ export const getIndexPage = async (): Promise<Page> => {
13
13
  const pages = await getCollection('pages');
14
14
  return pages.find((page) => page.slug === 'index')!;
15
15
  };
16
+
17
+ export const hasLandingPageForDocs = async (): Promise<boolean> => {
18
+ const pages = await getCollection('pages');
19
+ return pages.some((page) => page.slug === 'index')!;
20
+ };