@eventcatalog/core 2.48.2 → 2.48.3
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-TU4LMTL7.js → chunk-6GN2GDPD.js} +1 -1
- package/dist/{chunk-SKRYED6N.js → chunk-BPCESQRH.js} +1 -1
- package/dist/{chunk-UVANOIYF.js → chunk-UFBO6R65.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/components/SideNav/ListViewSideBar/components/MessageList.tsx +1 -0
- package/eventcatalog/src/components/SideNav/ListViewSideBar/index.tsx +1 -0
- package/eventcatalog/src/components/SideNav/ListViewSideBar/types.ts +1 -0
- package/eventcatalog/src/components/SideNav/ListViewSideBar/utils.ts +5 -0
- package/eventcatalog/src/components/Tables/Table.tsx +44 -12
- package/eventcatalog/src/components/Tables/columns/DomainTableColumns.tsx +5 -1
- package/eventcatalog/src/components/Tables/columns/MessageTableColumns.tsx +5 -1
- package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +5 -1
- package/eventcatalog/src/content.config.ts +1 -0
- package/eventcatalog/src/layouts/DiscoverLayout.astro +15 -3
- package/eventcatalog/src/pages/discover/[type]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +15 -0
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log_build_default
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-UFBO6R65.js";
|
|
4
|
+
import "../chunk-BPCESQRH.js";
|
|
5
|
+
import "../chunk-6GN2GDPD.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,8 +6,8 @@ import {
|
|
|
6
6
|
} from "./chunk-XE6PFSH5.js";
|
|
7
7
|
import {
|
|
8
8
|
log_build_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-UFBO6R65.js";
|
|
10
|
+
import "./chunk-BPCESQRH.js";
|
|
11
11
|
import {
|
|
12
12
|
catalogToAstro,
|
|
13
13
|
checkAndConvertMdToMdx
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import "./chunk-LDBRNJIL.js";
|
|
16
16
|
import {
|
|
17
17
|
VERSION
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-6GN2GDPD.js";
|
|
19
19
|
import {
|
|
20
20
|
isAuthEnabled,
|
|
21
21
|
isBackstagePluginEnabled,
|
|
@@ -61,6 +61,7 @@ const MessageList: React.FC<MessageListProps> = ({ messages, decodedCurrentPath,
|
|
|
61
61
|
>
|
|
62
62
|
<span className="truncate">
|
|
63
63
|
<HighlightedText text={message.data?.sidebar?.label || message.data.name} searchTerm={searchTerm} />
|
|
64
|
+
<span className="text-xs text-gray-400">{message.data.draft ? ' (DRAFT)' : ''}</span>
|
|
64
65
|
</span>
|
|
65
66
|
<span
|
|
66
67
|
className={`ml-2 text-[10px] flex items-center gap-1 font-medium px-2 uppercase py-0.5 rounded ${getMessageColorByLabelOrCollection(message.collection, message.data?.sidebar?.badge)}`}
|
|
@@ -91,6 +91,7 @@ const ServiceItem = React.memo(
|
|
|
91
91
|
>
|
|
92
92
|
<span className="truncate text-xs font-bold">
|
|
93
93
|
<HighlightedText text={item.label} searchTerm={searchTerm} />
|
|
94
|
+
<span className="text-xs text-gray-400">{item.draft ? ' (DRAFT)' : ''}</span>
|
|
94
95
|
</span>
|
|
95
96
|
<span className="text-purple-600 ml-2 text-[10px] font-medium bg-purple-50 px-2 py-0.5 rounded">SERVICE</span>
|
|
96
97
|
</button>
|
|
@@ -59,6 +59,7 @@ export async function getResourcesForNavigation({ currentPath }: { currentPath:
|
|
|
59
59
|
name: send.data.name,
|
|
60
60
|
sidebar: send.data.sidebar,
|
|
61
61
|
aggregateRoot: send?.data?.aggregateRoot,
|
|
62
|
+
draft: send.data.draft,
|
|
62
63
|
},
|
|
63
64
|
collection: send.collection,
|
|
64
65
|
href: buildUrl(`/${route}/${send.collection}/${send.data.id}/${send.data.version}`),
|
|
@@ -69,6 +70,7 @@ export async function getResourcesForNavigation({ currentPath }: { currentPath:
|
|
|
69
70
|
name: receive.data.name,
|
|
70
71
|
sidebar: receive.data.sidebar,
|
|
71
72
|
aggregateRoot: receive?.data?.aggregateRoot,
|
|
73
|
+
draft: receive.data.draft,
|
|
72
74
|
},
|
|
73
75
|
collection: receive.collection,
|
|
74
76
|
href: buildUrl(`/${route}/${receive.collection}/${receive.data.id}/${receive.data.version}`),
|
|
@@ -79,6 +81,7 @@ export async function getResourcesForNavigation({ currentPath }: { currentPath:
|
|
|
79
81
|
name: entity.data.name,
|
|
80
82
|
sidebar: entity.data.sidebar,
|
|
81
83
|
aggregateRoot: entity?.data?.aggregateRoot,
|
|
84
|
+
draft: entity.data.draft,
|
|
82
85
|
},
|
|
83
86
|
collection: entity.collection,
|
|
84
87
|
href: buildUrl(`/${route}/${entity.collection}/${entity.data.id}/${entity.data.version}`),
|
|
@@ -103,6 +106,7 @@ export async function getResourcesForNavigation({ currentPath }: { currentPath:
|
|
|
103
106
|
servicesCount,
|
|
104
107
|
id: item.data.id,
|
|
105
108
|
name: item.data.name,
|
|
109
|
+
draft: item.data.draft,
|
|
106
110
|
services: isCollectionDomain ? stripCollection(item.data.services) : null,
|
|
107
111
|
domains: isCollectionDomain ? stripCollection(item.data.domains) : null,
|
|
108
112
|
sends: sendsWithHref,
|
|
@@ -127,6 +131,7 @@ export async function getResourcesForNavigation({ currentPath }: { currentPath:
|
|
|
127
131
|
version: item.data.version,
|
|
128
132
|
id: item.data.id,
|
|
129
133
|
name: item.data.name,
|
|
134
|
+
draft: item.data.draft,
|
|
130
135
|
href: buildUrl(`/${route}/${item.collection}/${item.data.id}/${item.data.version}`),
|
|
131
136
|
collection: item.collection,
|
|
132
137
|
}));
|
|
@@ -48,6 +48,7 @@ export type TData<T extends TCollectionTypes> = {
|
|
|
48
48
|
summary: string;
|
|
49
49
|
version: string;
|
|
50
50
|
latestVersion?: string; // Defined on getter collection utility
|
|
51
|
+
draft?: boolean | { title?: string; message: string }; // Draft property from base schema
|
|
51
52
|
badges?: Array<{
|
|
52
53
|
id: string; // Where is it defined?
|
|
53
54
|
content: string;
|
|
@@ -124,13 +125,14 @@ export const Table = <T extends TCollectionTypes>({
|
|
|
124
125
|
collection,
|
|
125
126
|
mode = 'simple',
|
|
126
127
|
checkboxLatestId,
|
|
128
|
+
checkboxDraftsId,
|
|
127
129
|
}: {
|
|
128
130
|
data: TData<T>[];
|
|
129
131
|
collection: T;
|
|
130
132
|
checkboxLatestId: string;
|
|
133
|
+
checkboxDraftsId: string;
|
|
131
134
|
mode?: 'simple' | 'full';
|
|
132
135
|
}) => {
|
|
133
|
-
const [data, _setData] = useState(initialData);
|
|
134
136
|
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
|
|
135
137
|
|
|
136
138
|
useEffect(() => {
|
|
@@ -142,11 +144,13 @@ export const Table = <T extends TCollectionTypes>({
|
|
|
142
144
|
}, []);
|
|
143
145
|
|
|
144
146
|
const [showOnlyLatest, setShowOnlyLatest] = useState(true);
|
|
147
|
+
const [onlyShowDrafts, setOnlyShowDrafts] = useState(false);
|
|
145
148
|
|
|
146
149
|
useEffect(() => {
|
|
147
150
|
const checkbox = document.getElementById(checkboxLatestId);
|
|
148
151
|
function handleChange(evt: Event) {
|
|
149
|
-
|
|
152
|
+
const checked = (evt.target as HTMLInputElement).checked;
|
|
153
|
+
setShowOnlyLatest(checked);
|
|
150
154
|
}
|
|
151
155
|
|
|
152
156
|
checkbox?.addEventListener('change', handleChange);
|
|
@@ -154,10 +158,47 @@ export const Table = <T extends TCollectionTypes>({
|
|
|
154
158
|
return () => checkbox?.removeEventListener('change', handleChange);
|
|
155
159
|
}, [checkboxLatestId]);
|
|
156
160
|
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
const checkbox = document.getElementById(checkboxDraftsId);
|
|
163
|
+
function handleChange(evt: Event) {
|
|
164
|
+
const checked = (evt.target as HTMLInputElement).checked;
|
|
165
|
+
setOnlyShowDrafts(checked);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
checkbox?.addEventListener('change', handleChange);
|
|
169
|
+
|
|
170
|
+
return () => checkbox?.removeEventListener('change', handleChange);
|
|
171
|
+
}, [checkboxDraftsId]);
|
|
172
|
+
|
|
173
|
+
// Filter data based on checkbox states
|
|
174
|
+
const filteredData = useMemo(() => {
|
|
175
|
+
return initialData.filter((row) => {
|
|
176
|
+
// Check if item is a draft
|
|
177
|
+
const isDraft = row.data.draft === true || (typeof row.data.draft === 'object' && row.data.draft !== null);
|
|
178
|
+
|
|
179
|
+
// If "Only show drafts" is enabled, show only drafts
|
|
180
|
+
if (onlyShowDrafts && !isDraft) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// If "Only show drafts" is enabled, don't apply other filters
|
|
185
|
+
if (onlyShowDrafts) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Check latest version filter (only when not showing only drafts)
|
|
190
|
+
if (showOnlyLatest) {
|
|
191
|
+
return isSameVersion(row.data.version, row.data.latestVersion);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return true;
|
|
195
|
+
});
|
|
196
|
+
}, [initialData, showOnlyLatest, onlyShowDrafts]);
|
|
197
|
+
|
|
157
198
|
const columns = useMemo(() => getColumnsByCollection(collection), [collection]);
|
|
158
199
|
|
|
159
200
|
const table = useReactTable({
|
|
160
|
-
data,
|
|
201
|
+
data: filteredData,
|
|
161
202
|
columns,
|
|
162
203
|
onColumnFiltersChange: setColumnFilters,
|
|
163
204
|
getCoreRowModel: getCoreRowModel(),
|
|
@@ -168,15 +209,6 @@ export const Table = <T extends TCollectionTypes>({
|
|
|
168
209
|
getPaginationRowModel: getPaginationRowModel(),
|
|
169
210
|
state: {
|
|
170
211
|
columnFilters,
|
|
171
|
-
globalFilter: showOnlyLatest,
|
|
172
|
-
},
|
|
173
|
-
onGlobalFilterChange: setShowOnlyLatest,
|
|
174
|
-
globalFilterFn: (row, _columnId, showOnlyLatest: boolean) => {
|
|
175
|
-
if (showOnlyLatest) {
|
|
176
|
-
return isSameVersion(row.original.data.version, row.original.data.latestVersion);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return true;
|
|
180
212
|
},
|
|
181
213
|
});
|
|
182
214
|
|
|
@@ -43,7 +43,11 @@ export const columns = () => [
|
|
|
43
43
|
columnHelper.accessor('data.summary', {
|
|
44
44
|
id: 'summary',
|
|
45
45
|
header: () => 'Summary',
|
|
46
|
-
cell: (info) =>
|
|
46
|
+
cell: (info) => (
|
|
47
|
+
<span className="font-light ">
|
|
48
|
+
{info.renderValue()} {info.row.original.data.draft ? ' (Draft)' : ''}
|
|
49
|
+
</span>
|
|
50
|
+
),
|
|
47
51
|
footer: (info) => info.column.id,
|
|
48
52
|
meta: {
|
|
49
53
|
showFilter: false,
|
|
@@ -60,7 +60,11 @@ export const columns = () => [
|
|
|
60
60
|
columnHelper.accessor('data.summary', {
|
|
61
61
|
id: 'summary',
|
|
62
62
|
header: () => 'Summary',
|
|
63
|
-
cell: (info) =>
|
|
63
|
+
cell: (info) => (
|
|
64
|
+
<span className="font-light ">
|
|
65
|
+
{info.renderValue()} {info.row.original.data.draft ? ' (Draft)' : ''}
|
|
66
|
+
</span>
|
|
67
|
+
),
|
|
64
68
|
footer: (info) => info.column.id,
|
|
65
69
|
meta: {
|
|
66
70
|
showFilter: false,
|
|
@@ -44,7 +44,11 @@ export const columns = () => [
|
|
|
44
44
|
columnHelper.accessor('data.summary', {
|
|
45
45
|
id: 'summary',
|
|
46
46
|
header: () => 'Summary',
|
|
47
|
-
cell: (info) =>
|
|
47
|
+
cell: (info) => (
|
|
48
|
+
<span className="font-light ">
|
|
49
|
+
{info.renderValue()} {info.row.original.data.draft ? ' (Draft)' : ''}
|
|
50
|
+
</span>
|
|
51
|
+
),
|
|
48
52
|
footer: (info) => info.column.id,
|
|
49
53
|
meta: {
|
|
50
54
|
showFilter: false,
|
|
@@ -73,6 +73,7 @@ const baseSchema = z.object({
|
|
|
73
73
|
name: z.string(),
|
|
74
74
|
summary: z.string().optional(),
|
|
75
75
|
version: z.string(),
|
|
76
|
+
draft: z.union([z.boolean(), z.object({ title: z.string().optional(), message: z.string() })]).optional(),
|
|
76
77
|
badges: z.array(badge).optional(),
|
|
77
78
|
owners: z.array(ownerReference).optional(),
|
|
78
79
|
schemaPath: z.string().optional(),
|
|
@@ -31,6 +31,7 @@ const { title, subtitle, data, type } = Astro.props;
|
|
|
31
31
|
const currentPath = Astro.url.pathname;
|
|
32
32
|
|
|
33
33
|
const checkboxLatestId = 'latest-only';
|
|
34
|
+
const checkboxDraftsId = 'show-drafts';
|
|
34
35
|
|
|
35
36
|
const tabs = [
|
|
36
37
|
{
|
|
@@ -117,14 +118,25 @@ const tabs = [
|
|
|
117
118
|
<h1 class="text-4xl font-semibold text-gray-900 capitalize">{title}</h1>
|
|
118
119
|
<p class="text-md text-gray-700">{subtitle}</p>
|
|
119
120
|
</div>
|
|
120
|
-
<div class="
|
|
121
|
-
<
|
|
121
|
+
<div class="flex gap-4">
|
|
122
|
+
<div class="p-4 border border-gray-200 rounded-md">
|
|
123
|
+
<Checkbox id={checkboxLatestId} name={checkboxLatestId} label="Show latest version only" checked />
|
|
124
|
+
</div>
|
|
125
|
+
<div class="p-4 border border-gray-200 rounded-md">
|
|
126
|
+
<Checkbox id={checkboxDraftsId} name={checkboxDraftsId} label="Show drafts only" />
|
|
127
|
+
</div>
|
|
122
128
|
</div>
|
|
123
129
|
</div>
|
|
124
130
|
<div class="mt-4 flow-root">
|
|
125
131
|
<div class="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
|
|
126
132
|
<div class="inline-block min-w-full align-middle sm:px-6 lg:px-8">
|
|
127
|
-
<Table
|
|
133
|
+
<Table
|
|
134
|
+
checkboxLatestId={checkboxLatestId}
|
|
135
|
+
checkboxDraftsId={checkboxDraftsId}
|
|
136
|
+
data={data}
|
|
137
|
+
collection={type}
|
|
138
|
+
client:load
|
|
139
|
+
/>
|
|
128
140
|
</div>
|
|
129
141
|
</div>
|
|
130
142
|
</div>
|
|
@@ -278,6 +278,21 @@ nodeGraphs.push({
|
|
|
278
278
|
</div>
|
|
279
279
|
)
|
|
280
280
|
}
|
|
281
|
+
|
|
282
|
+
{
|
|
283
|
+
props.data.draft && (
|
|
284
|
+
<Admonition type="warning" title={props.data?.draft?.title || `Draft ${friendlyCollectionName}`}>
|
|
285
|
+
<div>
|
|
286
|
+
{!props.data.draft.message && (
|
|
287
|
+
<p>This resource has been marked as a draft and may still be under development.</p>
|
|
288
|
+
)}
|
|
289
|
+
{props.data.draft.message && (
|
|
290
|
+
<div class="prose prose-sm max-w-none" set:html={marked.parse(props.data.draft.message)} />
|
|
291
|
+
)}
|
|
292
|
+
</div>
|
|
293
|
+
</Admonition>
|
|
294
|
+
)
|
|
295
|
+
}
|
|
281
296
|
</div>
|
|
282
297
|
</div>
|
|
283
298
|
|