@eventcatalog/core 4.0.4 → 4.0.5

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.
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(analytics_exports);
36
36
  var import_os = __toESM(require("os"), 1);
37
37
 
38
38
  // package.json
39
- var version = "4.0.4";
39
+ var version = "4.0.5";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "../chunk-QYEAFNQS.js";
4
- import "../chunk-VG53ZMUK.js";
3
+ } from "../chunk-P4JJRN7P.js";
4
+ import "../chunk-3RHS7TFM.js";
5
5
  export {
6
6
  raiseEvent
7
7
  };
@@ -140,7 +140,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
140
140
  var import_os = __toESM(require("os"), 1);
141
141
 
142
142
  // package.json
143
- var version = "4.0.4";
143
+ var version = "4.0.5";
144
144
 
145
145
  // src/constants.ts
146
146
  var VERSION = version;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-B577BDMM.js";
4
- import "../chunk-QYEAFNQS.js";
3
+ } from "../chunk-YGSPS7DC.js";
4
+ import "../chunk-P4JJRN7P.js";
5
5
  import "../chunk-DAOXTQVS.js";
6
- import "../chunk-VG53ZMUK.js";
6
+ import "../chunk-3RHS7TFM.js";
7
7
  import "../chunk-6QENHZZP.js";
8
8
  export {
9
9
  log_build_default as default
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "4.0.4";
2
+ var version = "4.0.5";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-UQH6BDUK.js";
3
+ } from "./chunk-VENVGFLE.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-VG53ZMUK.js";
3
+ } from "./chunk-3RHS7TFM.js";
4
4
 
5
5
  // src/analytics/analytics.js
6
6
  import os from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-VG53ZMUK.js";
3
+ } from "./chunk-3RHS7TFM.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "./chunk-QYEAFNQS.js";
3
+ } from "./chunk-P4JJRN7P.js";
4
4
  import {
5
5
  countResources,
6
6
  serializeCounts
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "4.0.4";
28
+ var version = "4.0.5";
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-VG53ZMUK.js";
3
+ } from "./chunk-3RHS7TFM.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -144,7 +144,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
144
144
  var import_picocolors = __toESM(require("picocolors"), 1);
145
145
 
146
146
  // package.json
147
- var version = "4.0.4";
147
+ var version = "4.0.5";
148
148
 
149
149
  // src/constants.ts
150
150
  var VERSION = version;
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  log_build_default
3
- } from "./chunk-B577BDMM.js";
3
+ } from "./chunk-YGSPS7DC.js";
4
4
  import {
5
5
  runMigrations
6
6
  } from "./chunk-XUAF2H54.js";
7
7
  import "./chunk-CA4U2JP7.js";
8
8
  import {
9
9
  generate
10
- } from "./chunk-EHVNV53Y.js";
10
+ } from "./chunk-KDWSGOTX.js";
11
11
  import {
12
12
  logger
13
- } from "./chunk-UQH6BDUK.js";
13
+ } from "./chunk-VENVGFLE.js";
14
14
  import {
15
15
  resolve_catalog_dependencies_default
16
16
  } from "./chunk-LHR4G2UO.js";
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  watch
22
22
  } from "./chunk-O3Y2G6CY.js";
23
- import "./chunk-QYEAFNQS.js";
23
+ import "./chunk-P4JJRN7P.js";
24
24
  import "./chunk-DAOXTQVS.js";
25
25
  import {
26
26
  catalogToAstro
@@ -28,7 +28,7 @@ import {
28
28
  import "./chunk-VC6VUJIX.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-VG53ZMUK.js";
31
+ } from "./chunk-3RHS7TFM.js";
32
32
  import {
33
33
  linkCoreNodeModules,
34
34
  resolveInstalledCoreNodeModules
package/dist/generate.cjs CHANGED
@@ -108,7 +108,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
108
108
  var import_picocolors = __toESM(require("picocolors"), 1);
109
109
 
110
110
  // package.json
111
- var version = "4.0.4";
111
+ var version = "4.0.5";
112
112
 
113
113
  // src/constants.ts
114
114
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-EHVNV53Y.js";
4
- import "./chunk-UQH6BDUK.js";
5
- import "./chunk-VG53ZMUK.js";
3
+ } from "./chunk-KDWSGOTX.js";
4
+ import "./chunk-VENVGFLE.js";
5
+ import "./chunk-3RHS7TFM.js";
6
6
  import "./chunk-6QENHZZP.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "4.0.4";
39
+ var version = "4.0.5";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-UQH6BDUK.js";
4
- import "../chunk-VG53ZMUK.js";
3
+ } from "../chunk-VENVGFLE.js";
4
+ import "../chunk-3RHS7TFM.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -54,6 +54,7 @@ export interface DiscoverTableData {
54
54
  hasServices?: boolean;
55
55
  hasFlows?: boolean;
56
56
  isSubdomain?: boolean;
57
+ parentDomains?: Array<{ id: string; name: string; version: string }>;
57
58
  data: {
58
59
  id: string;
59
60
  name: string;
@@ -84,6 +85,7 @@ export interface DiscoverTableData {
84
85
  model?: any;
85
86
  agents?: Array<any>;
86
87
  services?: Array<any>;
88
+ domains?: Array<any>;
87
89
  flows?: Array<any>;
88
90
  servicesThatWriteToContainer?: Array<any>;
89
91
  servicesThatReadFromContainer?: Array<any>;
@@ -165,6 +167,11 @@ const AgentProviderIcon = ({ provider, className }: { provider: string; classNam
165
167
  const areStringArraysEqual = (left: string[], right: string[]) =>
166
168
  left.length === right.length && left.every((value, index) => value === right[index]);
167
169
 
170
+ const DOMAIN_TYPE_OPTIONS = [
171
+ { id: 'root', label: 'Root domains' },
172
+ { id: 'subdomain', label: 'Subdomains' },
173
+ ];
174
+
168
175
  export function DiscoverTable<T extends DiscoverTableData>({
169
176
  data: initialData,
170
177
  collectionType,
@@ -272,6 +279,13 @@ export function DiscoverTable<T extends DiscoverTableData>({
272
279
  ? filterKnownValues(initialUrlFilters.agentModels, new Set(agentModels.map((model) => model.id)))
273
280
  : []
274
281
  );
282
+ const [selectedDomainTypes, setSelectedDomainTypes] = useState<string[]>(() =>
283
+ collectionType === 'domains'
284
+ ? initialUrlFilters.domainTypes.length > 0
285
+ ? filterKnownValues(initialUrlFilters.domainTypes, new Set(DOMAIN_TYPE_OPTIONS.map((option) => option.id)))
286
+ : ['root']
287
+ : []
288
+ );
275
289
  const [selectedBadges, setSelectedBadges] = useState<string[]>(() =>
276
290
  filterKnownValues(initialUrlFilters.badges, new Set(allBadges.map((badge) => badge.content)))
277
291
  );
@@ -292,6 +306,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
292
306
  consumers: showConsumersFilter ? new Set(consumers.map((consumer) => consumer.id)) : new Set<string>(),
293
307
  agentProviders: collectionType === 'agents' ? new Set(agentProviders.map((provider) => provider.id)) : new Set<string>(),
294
308
  agentModels: collectionType === 'agents' ? new Set(agentModels.map((model) => model.id)) : new Set<string>(),
309
+ domainTypes: collectionType === 'domains' ? new Set(DOMAIN_TYPE_OPTIONS.map((option) => option.id)) : new Set<string>(),
295
310
  badges: new Set(allBadges.map((badge) => badge.content)),
296
311
  properties: new Set(propertyOptions.map((property) => property.id)),
297
312
  statuses: collectionType === 'adrs' ? new Set(statusOptions.map((status) => status.id)) : new Set<string>(),
@@ -325,6 +340,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
325
340
  badges: selectedBadges,
326
341
  properties: selectedProperties,
327
342
  statuses: selectedStatuses,
343
+ domainTypes: selectedDomainTypes,
328
344
  showOnlyLatest,
329
345
  onlyShowDrafts,
330
346
  }),
@@ -334,6 +350,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
334
350
  selectedAgentProviders,
335
351
  selectedBadges,
336
352
  selectedConsumers,
353
+ selectedDomainTypes,
337
354
  selectedDomains,
338
355
  selectedOwners,
339
356
  selectedProducers,
@@ -356,6 +373,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
356
373
  setSelectedConsumers((values) => pruneState(values, knownFilterValues.consumers));
357
374
  setSelectedAgentProviders((values) => pruneState(values, knownFilterValues.agentProviders));
358
375
  setSelectedAgentModels((values) => pruneState(values, knownFilterValues.agentModels));
376
+ setSelectedDomainTypes((values) => pruneState(values, knownFilterValues.domainTypes));
359
377
  setSelectedBadges((values) => pruneState(values, knownFilterValues.badges));
360
378
  setSelectedProperties((values) => pruneState(values, knownFilterValues.properties));
361
379
  setSelectedStatuses((values) => pruneState(values, knownFilterValues.statuses));
@@ -402,6 +420,15 @@ export function DiscoverTable<T extends DiscoverTableData>({
402
420
  }
403
421
  }
404
422
 
423
+ // Domain type filter
424
+ if (collectionType === 'domains' && selectedDomainTypes.length > 0) {
425
+ const matchesRoot = selectedDomainTypes.includes('root') && !row.isSubdomain;
426
+ const matchesSubdomain = selectedDomainTypes.includes('subdomain') && row.isSubdomain;
427
+ if (!matchesRoot && !matchesSubdomain) {
428
+ return false;
429
+ }
430
+ }
431
+
405
432
  // Owner filter
406
433
  if (selectedOwners.length > 0) {
407
434
  const itemOwners = row.owners || [];
@@ -541,6 +568,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
541
568
  selectedOwners,
542
569
  selectedProducers,
543
570
  selectedConsumers,
571
+ selectedDomainTypes,
544
572
  selectedAgentProviders,
545
573
  selectedAgentModels,
546
574
  selectedBadges,
@@ -652,6 +680,18 @@ export function DiscoverTable<T extends DiscoverTableData>({
652
680
  return counts;
653
681
  }, [initialData]);
654
682
 
683
+ const domainTypeCounts = useMemo(() => {
684
+ const counts: Record<string, number> = { root: 0, subdomain: 0 };
685
+ initialData.forEach((item) => {
686
+ if (item.isSubdomain) {
687
+ counts.subdomain++;
688
+ } else {
689
+ counts.root++;
690
+ }
691
+ });
692
+ return counts;
693
+ }, [initialData]);
694
+
655
695
  const toggleDomain = (domainId: string) => {
656
696
  setSelectedDomains((prev) => (prev.includes(domainId) ? prev.filter((id) => id !== domainId) : [...prev, domainId]));
657
697
  };
@@ -678,6 +718,12 @@ export function DiscoverTable<T extends DiscoverTableData>({
678
718
  setSelectedAgentModels((prev) => (prev.includes(modelId) ? prev.filter((id) => id !== modelId) : [...prev, modelId]));
679
719
  };
680
720
 
721
+ const toggleDomainType = (domainType: string) => {
722
+ setSelectedDomainTypes((prev) =>
723
+ prev.includes(domainType) ? prev.filter((id) => id !== domainType) : [...prev, domainType]
724
+ );
725
+ };
726
+
681
727
  const toggleBadge = (badgeContent: string) => {
682
728
  setSelectedBadges((prev) => (prev.includes(badgeContent) ? prev.filter((b) => b !== badgeContent) : [...prev, badgeContent]));
683
729
  };
@@ -703,6 +749,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
703
749
  setSelectedConsumers([]);
704
750
  setSelectedAgentProviders([]);
705
751
  setSelectedAgentModels([]);
752
+ setSelectedDomainTypes(collectionType === 'domains' ? ['root'] : []);
706
753
  setSelectedBadges([]);
707
754
  setSelectedStatuses([]);
708
755
  setSelectedProperties([]);
@@ -719,6 +766,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
719
766
  selectedConsumers.length +
720
767
  selectedAgentProviders.length +
721
768
  selectedAgentModels.length +
769
+ selectedDomainTypes.length +
722
770
  selectedBadges.length +
723
771
  selectedStatuses.length +
724
772
  selectedProperties.length +
@@ -742,6 +790,9 @@ export function DiscoverTable<T extends DiscoverTableData>({
742
790
  (id) => agentProviders.find((provider) => provider.id === id)?.name || id
743
791
  );
744
792
  const selectedAgentModelNames = selectedAgentModels.map((id) => agentModels.find((model) => model.id === id)?.name || id);
793
+ const selectedDomainTypeNames = selectedDomainTypes.map(
794
+ (id) => DOMAIN_TYPE_OPTIONS.find((option) => option.id === id)?.label || id
795
+ );
745
796
  const selectedStatusNames = selectedStatuses.map((id) => statusOptions.find((status) => status.id === id)?.name || id);
746
797
 
747
798
  // Filter producers/consumers to only show those with count > 0
@@ -853,6 +904,33 @@ export function DiscoverTable<T extends DiscoverTableData>({
853
904
 
854
905
  {/* Catalog Filters Section */}
855
906
  <div className="space-y-3">
907
+ {collectionType === 'domains' && (
908
+ <div>
909
+ <label className="block text-xs font-medium text-[rgb(var(--ec-page-text)/0.8)] mb-1.5">
910
+ Filter by Domain type
911
+ </label>
912
+ <FilterDropdown
913
+ label="All domains"
914
+ selectedItems={selectedDomainTypeNames}
915
+ onClear={() => setSelectedDomainTypes([])}
916
+ onRemoveItem={(label) => {
917
+ const option = DOMAIN_TYPE_OPTIONS.find((item) => item.label === label);
918
+ if (option) toggleDomainType(option.id);
919
+ }}
920
+ >
921
+ {DOMAIN_TYPE_OPTIONS.map((option) => (
922
+ <CheckboxItem
923
+ key={option.id}
924
+ label={option.label}
925
+ checked={selectedDomainTypes.includes(option.id)}
926
+ onChange={() => toggleDomainType(option.id)}
927
+ count={domainTypeCounts[option.id] || 0}
928
+ />
929
+ ))}
930
+ </FilterDropdown>
931
+ </div>
932
+ )}
933
+
856
934
  {collectionType === 'agents' && (filteredAgentProviders.length > 0 || filteredAgentModels.length > 0) && (
857
935
  <>
858
936
  {filteredAgentProviders.length > 0 && (
@@ -19,6 +19,7 @@ import { favoritesStore, toggleFavorite, type FavoriteItem } from '../../../stor
19
19
  import type { DiscoverTableData, CollectionType } from './DiscoverTable';
20
20
  import type { TableConfiguration } from '@types';
21
21
  import { formatAdrDate, isAdrCollection } from '@utils/collections/adr-constants';
22
+ import { CornerDownRight } from 'lucide-react';
22
23
 
23
24
  const columnHelper = createColumnHelper<DiscoverTableData>();
24
25
 
@@ -121,22 +122,48 @@ const ResourceNameCell = ({ item }: { item: DiscoverTableData }) => {
121
122
  const { color, Icon } = getColorAndIconForCollection(item.collection);
122
123
  const resourceIcon = item.data.icon;
123
124
  const resourceIconUrl = isIconPath(resourceIcon) ? resolveIconUrl(resourceIcon) : null;
125
+ const isDomain = item.collection === 'domains';
126
+ const subdomains = isDomain ? item.data.domains || [] : [];
124
127
 
125
128
  return (
126
- <a
127
- href={buildUrl(`/docs/${item.collection}/${item.data.id}/${item.data.version}`)}
128
- className="group inline-flex items-center gap-2.5 hover:text-[rgb(var(--ec-accent))] transition-colors"
129
- >
130
- {resourceIconUrl ? (
131
- <img src={resourceIconUrl} alt="" className="h-5 w-5 flex-shrink-0 rounded-sm object-contain" />
132
- ) : (
133
- <Icon className={`h-4 w-4 flex-shrink-0 ${getCollectionTextColorClass(color, 'text-[rgb(var(--ec-icon-color))]')}`} />
129
+ <div className="flex min-w-0 flex-col gap-2">
130
+ <a
131
+ href={buildUrl(`/docs/${item.collection}/${item.data.id}/${item.data.version}`)}
132
+ className="group inline-flex items-center gap-2.5 hover:text-[rgb(var(--ec-accent))] transition-colors"
133
+ >
134
+ {resourceIconUrl ? (
135
+ <img src={resourceIconUrl} alt="" className="h-5 w-5 flex-shrink-0 rounded-sm object-contain" />
136
+ ) : (
137
+ <Icon className={`h-4 w-4 flex-shrink-0 ${getCollectionTextColorClass(color, 'text-[rgb(var(--ec-icon-color))]')}`} />
138
+ )}
139
+ <span className="text-sm font-semibold text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-accent))]">
140
+ {item.data.name}
141
+ </span>
142
+ {!isLatestVersion && <span className="text-xs text-[rgb(var(--ec-icon-color))]">v{item.data.version}</span>}
143
+ {item.isSubdomain && (
144
+ <span className="rounded-full border border-[rgb(var(--ec-page-border))] px-1.5 py-0.5 text-[10px] font-medium text-[rgb(var(--ec-page-text-muted))]">
145
+ Subdomain
146
+ </span>
147
+ )}
148
+ </a>
149
+
150
+ {subdomains.length > 0 && (
151
+ <div className="flex flex-col gap-1 pl-6">
152
+ {subdomains.map((domain: any) => (
153
+ <a
154
+ key={`${domain.data.id}-${domain.data.version}`}
155
+ href={buildUrl(`/docs/${domain.collection || 'domains'}/${domain.data.id}/${domain.data.version}`)}
156
+ className="group/subdomain inline-flex w-fit items-center gap-1.5 text-xs text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-accent))]"
157
+ >
158
+ <CornerDownRight className="h-3.5 w-3.5 flex-shrink-0 text-[rgb(var(--ec-icon-color))] group-hover/subdomain:text-[rgb(var(--ec-accent))]" />
159
+ <span className="font-medium text-[rgb(var(--ec-page-text))] group-hover/subdomain:text-[rgb(var(--ec-accent))]">
160
+ {domain.data.name}
161
+ </span>
162
+ </a>
163
+ ))}
164
+ </div>
134
165
  )}
135
- <span className="text-sm font-semibold text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-accent))]">
136
- {item.data.name}
137
- </span>
138
- {!isLatestVersion && <span className="text-xs text-[rgb(var(--ec-icon-color))]">v{item.data.version}</span>}
139
- </a>
166
+ </div>
140
167
  );
141
168
  };
142
169
 
@@ -6,6 +6,7 @@ export interface DiscoverFilterQueryState {
6
6
  consumers: string[];
7
7
  agentProviders: string[];
8
8
  agentModels: string[];
9
+ domainTypes: string[];
9
10
  badges: string[];
10
11
  properties: string[];
11
12
  statuses: string[];
@@ -21,6 +22,7 @@ const FILTER_PARAM_NAMES = [
21
22
  'consumer',
22
23
  'agentProvider',
23
24
  'agentModel',
25
+ 'domainType',
24
26
  'badge',
25
27
  'property',
26
28
  'status',
@@ -47,6 +49,7 @@ export const parseDiscoverFilterSearch = (search: string): DiscoverFilterQuerySt
47
49
  consumers: getValues(params, 'consumer'),
48
50
  agentProviders: getValues(params, 'agentProvider'),
49
51
  agentModels: getValues(params, 'agentModel'),
52
+ domainTypes: getValues(params, 'domainType'),
50
53
  badges: getValues(params, 'badge'),
51
54
  properties: getValues(params, 'property'),
52
55
  statuses: getValues(params, 'status'),
@@ -73,6 +76,7 @@ export const buildDiscoverFilterSearch = (filters: DiscoverFilterQueryState, cur
73
76
  appendValues('consumer', filters.consumers);
74
77
  appendValues('agentProvider', filters.agentProviders);
75
78
  appendValues('agentModel', filters.agentModels);
79
+ appendValues('domainType', filters.domainTypes);
76
80
  appendValues('badge', filters.badges);
77
81
  appendValues('property', filters.properties);
78
82
  appendValues('status', filters.statuses);
@@ -93,7 +93,6 @@ const typeConfig: Record<
93
93
  propertyOptions: [
94
94
  { id: 'hasServices', label: 'Has Services' },
95
95
  { id: 'hasOwners', label: 'Has Owners' },
96
- { id: 'isSubdomain', label: 'Is Subdomain' },
97
96
  { id: 'isDeprecated', label: 'Is Deprecated' },
98
97
  ],
99
98
  },
@@ -285,6 +284,21 @@ function resolvePointer(pointer: { id: string; version?: string }) {
285
284
  const allSubdomainIds = new Set(
286
285
  domains.flatMap((d: any) => (d.data?.domains || []).map((sd: any) => sd.data?.id || sd.id)).filter(Boolean)
287
286
  );
287
+ const parentDomainsBySubdomainId = domains.reduce((parentsBySubdomain: Map<string, any[]>, domain: any) => {
288
+ (domain.data?.domains || []).forEach((subdomain: any) => {
289
+ const subdomainId = subdomain.data?.id || subdomain.id;
290
+ if (!subdomainId) return;
291
+
292
+ const parents = parentsBySubdomain.get(subdomainId) || [];
293
+ parents.push({
294
+ id: domain.data.id,
295
+ name: domain.data.name,
296
+ version: domain.data.version,
297
+ });
298
+ parentsBySubdomain.set(subdomainId, parents);
299
+ });
300
+ return parentsBySubdomain;
301
+ }, new Map<string, any[]>());
288
302
 
289
303
  const isAgentLike = type === 'agents';
290
304
  const isServiceLike = type === 'services' || type === 'external-systems';
@@ -314,6 +328,7 @@ const tableData = enrichedData.map((d: any) => ({
314
328
  hasServices: type === 'domains' || type === 'systems' ? (d.data?.services || []).length > 0 : false,
315
329
  hasFlows: type === 'systems' ? (d.data?.flows || []).length > 0 : false,
316
330
  isSubdomain: type === 'domains' ? allSubdomainIds.has(d.data.id) : false,
331
+ parentDomains: type === 'domains' ? parentDomainsBySubdomainId.get(d.data.id) || [] : undefined,
317
332
  // Service-specific properties
318
333
  domains: isServiceOrAgentLike ? d.enrichedDomains : undefined,
319
334
  hasSpecifications: isServiceLike ? hasSpecifications(d) : false,
@@ -347,6 +362,7 @@ const tableData = enrichedData.map((d: any) => ({
347
362
  tools: d.data?.tools ?? [],
348
363
  agents: d.data?.agents?.map(mapToItem) ?? [],
349
364
  services: d.data?.services?.map(mapToItem) ?? [],
365
+ domains: d.data?.domains?.map(mapToItem) ?? [],
350
366
  flows: d.data?.flows?.map(mapToItem) ?? [],
351
367
  servicesThatWriteToContainer: d.data?.servicesThatWriteToContainer?.map(mapToItem) ?? [],
352
368
  servicesThatReadFromContainer: d.data?.servicesThatReadFromContainer?.map(mapToItem) ?? [],
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "SEE LICENSE IN LICENSE",
9
9
  "type": "module",
10
- "version": "4.0.4",
10
+ "version": "4.0.5",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },