@eventcatalog/core 4.10.13 → 4.10.15

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.
Files changed (164) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/{chunk-SSSN5FXC.js → chunk-7LWOCX4R.js} +1 -1
  6. package/dist/{chunk-IIECZFXN.js → chunk-A4JRWRCV.js} +1 -1
  7. package/dist/{chunk-JHUICVBT.js → chunk-HBVTU6ZP.js} +1 -1
  8. package/dist/{chunk-PADMH2RJ.js → chunk-I6HUOX4R.js} +1 -1
  9. package/dist/{chunk-34RMFKFB.js → chunk-Q2ATWE7N.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/docs/api/02-config.md +60 -6
  13. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +18 -11
  14. package/dist/docs/development/authentication/providers/03-setting-up-github.md +29 -0
  15. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +2 -2
  16. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +17 -0
  17. package/dist/docs/development/components/07-resource-references.md +7 -1
  18. package/dist/docs/development/components/components/05-architecture-graph.md +65 -0
  19. package/dist/docs/development/components/components/{05-attachments.md → 06-attachments.md} +1 -1
  20. package/dist/docs/development/components/components/{06-channel-information.md → 07-channel-information.md} +1 -1
  21. package/dist/docs/development/components/components/{07-custom-properties.md → 08-custom-properties.md} +1 -1
  22. package/dist/docs/development/components/components/{08-design.md → 09-design.md} +1 -1
  23. package/dist/docs/development/components/components/{09-entitymap.md → 10-entitymap.md} +1 -1
  24. package/dist/docs/development/components/components/{10-flow.md → 11-flow.md} +1 -1
  25. package/dist/docs/development/components/components/{11-link.md → 12-link.md} +1 -1
  26. package/dist/docs/development/components/components/{12-mermaid-file-loader.md → 13-mermaid-file-loader.md} +13 -1
  27. package/dist/docs/development/components/components/{13-message-table.md → 14-message-table.md} +1 -1
  28. package/dist/docs/development/components/components/{14-nodegraph.md → 15-nodegraph.md} +1 -1
  29. package/dist/docs/development/components/components/{15-openapi.md → 16-openapi.md} +1 -1
  30. package/dist/docs/development/components/components/{16-prompt.md → 17-prompt.md} +1 -1
  31. package/dist/docs/development/components/components/{17-remote-schema.md → 18-remote-schema.md} +1 -1
  32. package/dist/docs/development/components/components/{18-resource-group-table.md → 19-resource-group-table.md} +1 -1
  33. package/dist/docs/development/components/components/{19-resource-link.md → 20-resource-link.md} +1 -1
  34. package/dist/docs/development/components/components/{20-schema.md → 21-schema.md} +1 -1
  35. package/dist/docs/development/components/components/{21-schema-viewer.md → 22-schema-viewer.md} +1 -1
  36. package/dist/docs/development/components/components/{22-steps.md → 23-steps.md} +1 -1
  37. package/dist/docs/development/components/components/{23-tabs.md → 24-tabs.md} +1 -1
  38. package/dist/docs/development/components/components/{24-tiles.md → 25-tiles.md} +1 -1
  39. package/dist/docs/development/components/components/{25-visibility.md → 26-visibility.md} +1 -1
  40. package/dist/docs/development/components/diagram-syntax/06-mermaid.md +45 -6
  41. package/dist/docs/development/customization/04-documentation-sidebar.md +3 -3
  42. package/dist/docs/development/customization/05-resource-sidebar.md +235 -0
  43. package/dist/docs/development/customization/09-embed-eventcatalog.md +179 -0
  44. package/dist/docs/development/customization/_category_.json +1 -1
  45. package/dist/docs/development/deployment/build-and-deploy.md +4 -0
  46. package/dist/docs/development/deployment/hosting-options.md +1 -1
  47. package/dist/docs/development/deployment/link-validation.md +105 -0
  48. package/dist/docs/development/developer-tools/eventcatalog-linter/00-overview.md +76 -0
  49. package/dist/docs/development/developer-tools/eventcatalog-linter/01-setup.md +144 -0
  50. package/dist/docs/development/developer-tools/eventcatalog-linter/_category_.json +10 -0
  51. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/01-configure-rules.md +130 -0
  52. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/02-run-in-ci.md +93 -0
  53. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/03-use-custom-frontmatter.md +81 -0
  54. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/04-reference-external-catalogs.md +51 -0
  55. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +120 -0
  56. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/_category_.json +12 -0
  57. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/01-cli.md +109 -0
  58. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/02-configuration.md +120 -0
  59. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +287 -0
  60. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/04-versions.md +77 -0
  61. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +75 -0
  62. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/_category_.json +12 -0
  63. package/dist/docs/development/guides/97-architecture-graph.md +78 -0
  64. package/dist/docs/development/guides/domains/02-create-domain.md +1 -1
  65. package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +29 -0
  66. package/dist/docs/development/guides/domains/09-reference.md +10 -0
  67. package/dist/docs/development/guides/resources/messages/04-message-channels/02-adding-channels.md +2 -2
  68. package/dist/docs/development/guides/resources/messages/04-message-channels/04-adding-messages-to-services.md +8 -0
  69. package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/01-add-openapi-specifications.md +2 -2
  70. package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/02-add-asyncapi-specifications.md +3 -3
  71. package/dist/docs/development/guides/systems/05-system-context-maps.md +2 -0
  72. package/dist/docs/development/license-keys/license-validation.md +7 -3
  73. package/dist/docs/development/license-keys/overview.md +7 -3
  74. package/dist/docs/development/upgrading/upgrading.md +3 -3
  75. package/dist/docs/development/upgrading/v2.md +3 -3
  76. package/dist/docs/federation/00-overview.md +158 -0
  77. package/dist/docs/federation/01-first-federation.md +199 -0
  78. package/dist/docs/federation/_category_.json +12 -0
  79. package/dist/docs/federation/explanation/_category_.json +12 -0
  80. package/dist/docs/federation/explanation/how-it-works.md +129 -0
  81. package/dist/docs/federation/explanation/lockfile-and-cache.md +134 -0
  82. package/dist/docs/federation/explanation/mvp-status-and-feedback.md +86 -0
  83. package/dist/docs/federation/explanation/ownership-and-references.md +134 -0
  84. package/dist/docs/federation/how-to/_category_.json +12 -0
  85. package/dist/docs/federation/how-to/configure-github-sources.md +156 -0
  86. package/dist/docs/federation/how-to/configure-validation-rules.md +127 -0
  87. package/dist/docs/federation/how-to/run-in-ci.md +138 -0
  88. package/dist/docs/federation/how-to/share-assets-and-components.md +125 -0
  89. package/dist/docs/federation/how-to/use-local-sources.md +138 -0
  90. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/00-introduction.md +11 -2
  91. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/01-installation.md +11 -3
  92. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/02-plugin-configuration.md +11 -2
  93. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/03-examples.md +11 -1
  94. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/04-configuration.md +11 -1
  95. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/05-setup-team-catalog.md +11 -2
  96. package/dist/docs/federation/legacy-federation/_category_.json +12 -0
  97. package/dist/docs/federation/reference/_category_.json +12 -0
  98. package/dist/docs/federation/reference/cli.md +122 -0
  99. package/dist/docs/federation/reference/configuration.md +192 -0
  100. package/dist/docs/federation/reference/diagnostic-rules.md +173 -0
  101. package/dist/docs/federation/reference/generated-output.md +118 -0
  102. package/dist/docs/federation/reference/supported-content.md +86 -0
  103. package/dist/docs/federation/reference/troubleshooting.md +208 -0
  104. package/dist/docs/plugins/01-intro.md +3 -3
  105. package/dist/docs/plugins/03-all-plugins.md +2 -2
  106. package/dist/docs/plugins/asyncapi/00-intro.md +4 -4
  107. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +4 -4
  108. package/dist/docs/plugins/backstage/00-overview.md +53 -0
  109. package/dist/docs/plugins/backstage/01-get-started.md +95 -0
  110. package/dist/docs/plugins/backstage/02-embed-entity-tabs.md +109 -0
  111. package/dist/docs/plugins/backstage/03-add-overview-cards.md +79 -0
  112. package/dist/docs/plugins/backstage/04-control-theme-and-size.md +54 -0
  113. package/dist/docs/plugins/backstage/05-migrate-to-annotations.md +49 -0
  114. package/dist/docs/plugins/backstage/06-configuration.md +85 -0
  115. package/dist/docs/plugins/backstage/07-components.md +129 -0
  116. package/dist/docs/plugins/backstage/08-how-embeds-work.md +52 -0
  117. package/dist/docs/plugins/backstage/_category_.json +4 -3
  118. package/dist/docs/plugins/eventbridge/00-intro.md +5 -5
  119. package/dist/docs/plugins/eventbridge/03-api.md +3 -3
  120. package/dist/docs/plugins/graphql/00-intro.md +2 -2
  121. package/dist/docs/plugins/graphql/02-plugin-configuration.md +2 -2
  122. package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
  123. package/dist/docs/plugins/openapi/00-intro.md +1 -1
  124. package/dist/eventcatalog.cjs +1 -1
  125. package/dist/eventcatalog.js +5 -5
  126. package/dist/generate.cjs +1 -1
  127. package/dist/generate.js +3 -3
  128. package/dist/utils/cli-logger.cjs +1 -1
  129. package/dist/utils/cli-logger.js +2 -2
  130. package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +21 -19
  131. package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.test.tsx +114 -0
  132. package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +107 -86
  133. package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.test.tsx +91 -0
  134. package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.tsx +115 -33
  135. package/eventcatalog/src/components/SchemaExplorer/SchemaViewerHover.test.tsx +33 -0
  136. package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.test.ts +84 -0
  137. package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.ts +149 -0
  138. package/eventcatalog/src/utils/collections/glob-loader.ts +2 -2
  139. package/eventcatalog/src/utils/protobuf-schema.ts +211 -16
  140. package/package.json +8 -8
  141. package/dist/docs/cli/channels.md +0 -180
  142. package/dist/docs/cli/commands.md +0 -183
  143. package/dist/docs/cli/custom-docs.md +0 -78
  144. package/dist/docs/cli/data-products.md +0 -177
  145. package/dist/docs/cli/data-stores.md +0 -166
  146. package/dist/docs/cli/diagrams.md +0 -147
  147. package/dist/docs/cli/domains.md +0 -280
  148. package/dist/docs/cli/entities.md +0 -138
  149. package/dist/docs/cli/events.md +0 -186
  150. package/dist/docs/cli/export.md +0 -27
  151. package/dist/docs/cli/governance.md +0 -24
  152. package/dist/docs/cli/messages.md +0 -69
  153. package/dist/docs/cli/queries.md +0 -183
  154. package/dist/docs/cli/services.md +0 -266
  155. package/dist/docs/cli/snapshots.md +0 -44
  156. package/dist/docs/cli/teams.md +0 -75
  157. package/dist/docs/cli/users.md +0 -75
  158. package/dist/docs/cli/utilities.md +0 -43
  159. package/dist/docs/development/developer-tools/eventcatalog-linter.md +0 -732
  160. package/dist/docs/plugins/backstage/00-intro.md +0 -67
  161. package/dist/docs/plugins/backstage/01-installation.md +0 -242
  162. package/dist/docs/plugins/backstage/02-api.md +0 -51
  163. package/dist/docs/plugins/backstage/03-examples.md +0 -12
  164. package/dist/docs/plugins/eventcatalog-federation/_category_.json +0 -11
@@ -0,0 +1,192 @@
1
+ ---
2
+ sidebar_position: 1
3
+ sidebar_label: Configuration
4
+ title: Federation configuration reference
5
+ description: Reference for federation sources and rule levels in eventcatalog.config.js.
6
+ ---
7
+
8
+ import EventCatalogEnterprise from '@site/src/components/MDX/EventCatalogEnterprise';
9
+
10
+ <EventCatalogEnterprise />
11
+
12
+ Configure Federation under the `federation` key in the central catalog's `eventcatalog.config.js`.
13
+
14
+ ```js title="eventcatalog.config.js"
15
+ export default {
16
+ federation: {
17
+ rules: {
18
+ 'federation/missing-resource': 'error',
19
+ },
20
+ sources: [
21
+ {
22
+ id: 'acme/payments',
23
+ source: 'github:acme/payments-catalog',
24
+ path: 'catalog',
25
+ ref: 'main',
26
+ },
27
+ ],
28
+ },
29
+ };
30
+ ```
31
+
32
+ ## `federation`
33
+
34
+ | Field | Type | Required | Description |
35
+ | --- | --- | --- | --- |
36
+ | `sources` | `FederationSourceConfig[]` | Yes | Catalogs included in the organization view. Use an empty array to remove previous Federation output. |
37
+ | `rules` | `Record<FederationRuleId, FederationRuleLevel>` | No | Overrides diagnostic levels. Unconfigured rules keep their defaults. |
38
+
39
+ ## Sources
40
+
41
+ Each entry in `federation.sources` selects one EventCatalog project.
42
+
43
+ | Field | Type | Required | Default | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `id` | `string` | Yes | | Stable source identity used by indexes, ownership, generated paths, diagnostics, and the lockfile. |
46
+ | `source` | `string` | Yes | | Source locator. Supported protocols are `github:` and `file:`. |
47
+ | `path` | `string` | No | `.` | Catalog directory within the selected repository or filesystem source. |
48
+ | `ref` | `string` | No | `main` | GitHub branch, tag, or commit. Not supported by filesystem sources. |
49
+
50
+ ### Source IDs
51
+
52
+ Every source requires a non-empty `id`, and the same ID cannot be configured more than once.
53
+
54
+ Use stable organization-oriented IDs:
55
+
56
+ ```js
57
+ {
58
+ id: 'acme/payments',
59
+ source: 'github:acme/payments-catalog',
60
+ }
61
+ ```
62
+
63
+ Changing the repository or directory does not require changing the ID. Keeping it stable preserves understandable provenance and generated paths.
64
+
65
+ If a GitHub source publishes `catalog.index.json`, its `source` value must exactly match the configured `id`.
66
+
67
+ ### GitHub locator
68
+
69
+ Syntax:
70
+
71
+ ```text
72
+ github:<owner>/<repository>
73
+ ```
74
+
75
+ Example at the repository root:
76
+
77
+ ```js
78
+ {
79
+ id: 'acme/payments',
80
+ source: 'github:acme/payments-catalog',
81
+ }
82
+ ```
83
+
84
+ Example in a monorepo:
85
+
86
+ ```js
87
+ {
88
+ id: 'acme/payments',
89
+ source: 'github:acme/architecture-catalogs',
90
+ path: 'catalogs/payments',
91
+ ref: 'production',
92
+ }
93
+ ```
94
+
95
+ GitHub authentication is read from `EVENTCATALOG_GITHUB_TOKEN`, then `GITHUB_TOKEN` as a fallback.
96
+
97
+ ### Filesystem locator
98
+
99
+ Syntax:
100
+
101
+ ```text
102
+ file:<path-from-central-catalog>
103
+ ```
104
+
105
+ Example:
106
+
107
+ ```js
108
+ {
109
+ id: 'acme/payments',
110
+ source: 'file:../payments-catalog',
111
+ }
112
+ ```
113
+
114
+ Example with a catalog inside the selected source root:
115
+
116
+ ```js
117
+ {
118
+ id: 'acme/payments',
119
+ source: 'file:../architecture-catalogs',
120
+ path: 'payments',
121
+ }
122
+ ```
123
+
124
+ Filesystem sources reject `ref`. Paths must remain within the selected source root, including after symbolic links are resolved.
125
+
126
+ ## Rules
127
+
128
+ Every rule accepts:
129
+
130
+ ```ts
131
+ 'off' | 'warn' | 'error'
132
+ ```
133
+
134
+ | Rule ID | Default |
135
+ | --- | --- |
136
+ | `federation/duplicate-source` | `error` |
137
+ | `federation/type-collision` | `error` |
138
+ | `federation/pointer-type-mismatch` | `error` |
139
+ | `federation/facet-disagreement` | `error` |
140
+ | `federation/asset-collision` | `warn` |
141
+ | `federation/missing-resource` | `warn` |
142
+ | `federation/unresolved-version` | `warn` |
143
+
144
+ Example:
145
+
146
+ ```js title="eventcatalog.config.js"
147
+ export default {
148
+ federation: {
149
+ rules: {
150
+ 'federation/duplicate-source': 'error',
151
+ 'federation/missing-resource': 'error',
152
+ 'federation/asset-collision': 'off',
153
+ },
154
+ sources: [/* ... */],
155
+ },
156
+ };
157
+ ```
158
+
159
+ Unknown rule IDs and values other than `off`, `warn`, or `error` cause a configuration error.
160
+
161
+ See the [diagnostic rule reference](/docs/federation/reference/diagnostic-rules) for triggers and output attributes.
162
+
163
+ ## Complete conditional source example
164
+
165
+ This example uses local sibling catalogs during development and GitHub in shared environments:
166
+
167
+ ```js title="eventcatalog.config.js"
168
+ const source =
169
+ process.env.EVENTCATALOG_FEDERATION_LOCAL === 'true'
170
+ ? 'file:..'
171
+ : 'github:acme/architecture-catalogs';
172
+
173
+ export default {
174
+ federation: {
175
+ rules: {
176
+ 'federation/unresolved-version': 'error',
177
+ },
178
+ sources: [
179
+ {
180
+ id: 'acme/orders',
181
+ source,
182
+ path: 'orders',
183
+ },
184
+ {
185
+ id: 'acme/payments',
186
+ source,
187
+ path: 'payments',
188
+ },
189
+ ],
190
+ },
191
+ };
192
+ ```
@@ -0,0 +1,173 @@
1
+ ---
2
+ sidebar_position: 3
3
+ sidebar_label: Diagnostic rules
4
+ title: Federation diagnostic rule reference
5
+ description: Reference for every Federation rule, default level, trigger, output attributes, and resolution.
6
+ ---
7
+
8
+ import EventCatalogEnterprise from '@site/src/components/MDX/EventCatalogEnterprise';
9
+
10
+ <EventCatalogEnterprise />
11
+
12
+ Federation diagnostics use stable rule IDs. Configure each rule as `off`, `warn`, or `error` under `federation.rules`.
13
+
14
+ | Rule | Default | Summary |
15
+ | --- | --- | --- |
16
+ | `federation/duplicate-source` | `error` | A resource has multiple owning catalogs |
17
+ | `federation/type-collision` | `error` | One resource ID is documented with conflicting types |
18
+ | `federation/pointer-type-mismatch` | `error` | A relationship expects the wrong target type |
19
+ | `federation/facet-disagreement` | `error` | Catalogs provide contradictory facets for a resource |
20
+ | `federation/asset-collision` | `warn` | Remote sources publish different files at one asset path |
21
+ | `federation/missing-resource` | `warn` | A relationship points to an ID that is not present |
22
+ | `federation/unresolved-version` | `warn` | The target ID exists, but its requested version does not |
23
+
24
+ ## `federation/duplicate-source`
25
+
26
+ **Message:** `Resource has multiple owners`
27
+
28
+ Triggered when the same resource ID and type are owned by more than one catalog. All versions of one resource ID must have the same owner.
29
+
30
+ Attributes:
31
+
32
+ | Attribute | Meaning |
33
+ | --- | --- |
34
+ | `resource` | Conflicting resource ID |
35
+ | `catalogs` | Catalogs claiming ownership |
36
+ | `resolution` | Suggested ownership action |
37
+
38
+ Resolution: choose one owning catalog. Remove copied or placeholder resource definitions from consumers.
39
+
40
+ ## `federation/type-collision`
41
+
42
+ **Message:** `Resource ID has conflicting types`
43
+
44
+ Triggered when the same resource ID is documented as different EventCatalog resource types, such as an event in one catalog and a command in another.
45
+
46
+ Attributes:
47
+
48
+ | Attribute | Meaning |
49
+ | --- | --- |
50
+ | `resource` | Conflicting resource ID |
51
+ | `<catalog ID>` | Type documented by that catalog |
52
+
53
+ Resolution: correct the resource type or use distinct IDs for different resources.
54
+
55
+ ## `federation/pointer-type-mismatch`
56
+
57
+ **Message:** `Reference type does not match resource`
58
+
59
+ Triggered when a relationship pointer expects one target type but the resolved resource has another type.
60
+
61
+ Attributes:
62
+
63
+ | Attribute | Meaning |
64
+ | --- | --- |
65
+ | `resource` | Referenced resource ID |
66
+ | `expected type` | Type required by the relationship |
67
+ | `actual type` | Type documented by the owner |
68
+ | `catalogs` | Catalogs involved in the mismatch |
69
+
70
+ Resolution: correct the pointer or point it to the intended resource ID.
71
+
72
+ ## `federation/facet-disagreement`
73
+
74
+ **Message:** `Catalogs disagree about this resource`
75
+
76
+ Represents contradictory contributed facets for a resource, such as incompatible content supplied for the same facet by several catalogs.
77
+
78
+ Attributes:
79
+
80
+ | Attribute | Meaning |
81
+ | --- | --- |
82
+ | `resource` | Resource ID with contradictory facets |
83
+ | `detail` | Available disagreement detail |
84
+ | `catalogs` | Catalogs contributing the conflicting values |
85
+
86
+ Resolution: decide which source is authoritative and align or remove the conflicting contribution.
87
+
88
+ ## `federation/asset-collision`
89
+
90
+ **Message:** `Asset collision`
91
+
92
+ Triggered when remote sources publish different content to the same `public/` or `components/` path.
93
+
94
+ Attributes:
95
+
96
+ | Attribute | Meaning |
97
+ | --- | --- |
98
+ | `asset` | Conflicting catalog-relative asset path |
99
+ | `sources` | Sources publishing the path |
100
+ | `winner` | Source selected by Federation |
101
+ | `resolution` | Selection rule, currently `last configured source wins` |
102
+
103
+ Resolution: namespace the paths, make the files identical, or deliberately order the sources and keep the warning visible.
104
+
105
+ An existing public asset owned by the central catalog is preserved.
106
+
107
+ ## `federation/missing-resource`
108
+
109
+ **Message:** `Referenced EventCatalog resource does not exist`
110
+
111
+ Triggered when a relationship points to a resource ID that is not documented by any participating remote or central catalog.
112
+
113
+ Attributes:
114
+
115
+ | Attribute | Meaning |
116
+ | --- | --- |
117
+ | `source catalog` | Catalog containing the relationship pointer |
118
+ | `referenced by` | Resource containing the pointer |
119
+ | `missing resource` | Missing ID and requested version, when present |
120
+
121
+ Resolution: add the owning catalog, document the resource in its owner, or correct the pointer ID.
122
+
123
+ ## `federation/unresolved-version`
124
+
125
+ **Message:** `Referenced EventCatalog resource version does not exist`
126
+
127
+ Triggered when the resource ID exists, but no available version satisfies the pointer.
128
+
129
+ Attributes:
130
+
131
+ | Attribute | Meaning |
132
+ | --- | --- |
133
+ | `source catalog` | Catalog containing the relationship pointer |
134
+ | `referenced by` | Versioned resource containing the pointer |
135
+ | `resource` | Target resource ID |
136
+ | `requested version` | Exact version, range, or authored pointer value |
137
+ | `available versions` | Versions published by the owner |
138
+
139
+ Resolution: change the pointer to an available version or publish a matching version in the owning catalog.
140
+
141
+ ## Configure levels
142
+
143
+ ```js title="eventcatalog.config.js"
144
+ export default {
145
+ federation: {
146
+ rules: {
147
+ 'federation/missing-resource': 'error',
148
+ 'federation/unresolved-version': 'error',
149
+ 'federation/asset-collision': 'off',
150
+ },
151
+ sources: [/* ... */],
152
+ },
153
+ };
154
+ ```
155
+
156
+ Changing structural rules from `error` can allow ambiguous ownership or types into the generated view. See [Configure validation rules](/docs/federation/how-to/configure-validation-rules).
157
+
158
+ ## Operational errors without rule IDs
159
+
160
+ Some failures stop Federation directly and do not have configurable `federation/*` rule IDs. These include:
161
+
162
+ - Missing or invalid license access
163
+ - Duplicate configured source IDs
164
+ - Unsupported source locators
165
+ - GitHub authentication or network failures
166
+ - Missing filesystem source directories
167
+ - Unsafe source, catalog, or artifact paths
168
+ - Invalid published indexes
169
+ - Content hash mismatches
170
+ - Unreadable lockfiles
171
+ - Filesystem write or rollback failures
172
+
173
+ See [Troubleshooting Federation](/docs/federation/reference/troubleshooting).
@@ -0,0 +1,118 @@
1
+ ---
2
+ sidebar_position: 5
3
+ sidebar_label: Generated output
4
+ title: Federation generated output reference
5
+ description: Reference for federated resources, shared components, public assets, the lockfile, and content cache.
6
+ ---
7
+
8
+ import EventCatalogEnterprise from '@site/src/components/MDX/EventCatalogEnterprise';
9
+
10
+ <EventCatalogEnterprise />
11
+
12
+ A successful Federation run can create or update four locations in the central catalog:
13
+
14
+ ```text
15
+ central-catalog/
16
+ ├── federated/
17
+ ├── public/
18
+ ├── .eventcatalog-cache/
19
+ └── eventcatalog.lock
20
+ ```
21
+
22
+ ## `federated/`
23
+
24
+ Federated resource files are grouped by stable source identity:
25
+
26
+ ```text
27
+ federated/
28
+ ├── acme-payments--0cfe83f789ab/
29
+ │ ├── domains/
30
+ │ ├── services/
31
+ │ ├── events/
32
+ │ ├── teams/
33
+ │ └── users/
34
+ ├── acme-orders--7575b99c8b32/
35
+ │ ├── domains/
36
+ │ ├── services/
37
+ │ └── events/
38
+ └── components/
39
+ ```
40
+
41
+ The directory name contains:
42
+
43
+ - A filesystem-safe form of the source `id`
44
+ - A short hash of the complete source `id`
45
+
46
+ The hash prevents different IDs that produce the same safe text from sharing a directory.
47
+
48
+ Resource-relative files remain with their resource, including:
49
+
50
+ - Schemas
51
+ - OpenAPI, AsyncAPI, and GraphQL specifications
52
+ - Sidecar documentation and files
53
+ - Diagrams and other resource-local content
54
+
55
+ Do not edit `federated/`. It is replaced by the next successful run.
56
+
57
+ ## `federated/components/`
58
+
59
+ Top-level custom components from remote catalogs are materialized into the shared `federated/components/` directory.
60
+
61
+ When EventCatalog prepares the application, federated components form the base layer and the central catalog's local `components/` directory is applied afterward. A local component at the same relative path overrides the federated component.
62
+
63
+ Top-level reusable `snippets/` are not federated in the current release.
64
+
65
+ ## `public/`
66
+
67
+ Remote `public/` assets are first hydrated, then composed into the central catalog's `public/` directory.
68
+
69
+ Selection rules:
70
+
71
+ 1. When several remote sources publish different content at one path, the last configured source wins and `federation/asset-collision` is reported.
72
+ 2. When the central catalog already owns the path, the central file is preserved.
73
+ 3. When a previously managed remote file was changed manually, Federation preserves it instead of treating it as managed output.
74
+ 4. When a managed remote file disappears from all sources, a later successful run removes it.
75
+
76
+ Managed public-file hashes and source IDs are stored in `eventcatalog.lock`.
77
+
78
+ ## `eventcatalog.lock`
79
+
80
+ The lockfile records:
81
+
82
+ - `lockVersion`
83
+ - Source IDs
84
+ - Source commits or local content revisions
85
+ - Source index digests
86
+ - Resolution times
87
+ - Managed public files
88
+
89
+ It is written after a successful output update. It records what the run used but does not control the next run.
90
+
91
+ See [Federation lockfile and content cache](/docs/federation/explanation/lockfile-and-cache).
92
+
93
+ ## `.eventcatalog-cache/`
94
+
95
+ Federation content is cached under:
96
+
97
+ ```text
98
+ .eventcatalog-cache/federation/content/
99
+ ```
100
+
101
+ Entries use SHA-256 content keys and are verified before reuse. The cache is disposable and should normally be ignored by Git.
102
+
103
+ The current release does not automatically remove content that is no longer referenced, so the cache can grow over time.
104
+
105
+ ## Cleanup when sources change
106
+
107
+ On a successful run:
108
+
109
+ - Resources no longer present in an index disappear from `federated/`
110
+ - Removed sources disappear from `federated/`
111
+ - Stale managed public files are removed
112
+ - New source content replaces the previous generated content
113
+
114
+ When `federation.sources` becomes empty, the command removes previous Federation output, managed public files, and the lockfile.
115
+
116
+ ## Failed output updates
117
+
118
+ Federation stages new output and snapshots affected public files. If a normal output update fails, it attempts to restore the previous generated resources and public assets. The previous lockfile remains associated with the previous successful view.
@@ -0,0 +1,86 @@
1
+ ---
2
+ sidebar_position: 4
3
+ sidebar_label: Supported content
4
+ title: Federation supported content
5
+ description: Reference for resources, files, assets, and catalog-level content included by Federation.
6
+ ---
7
+
8
+ import EventCatalogEnterprise from '@site/src/components/MDX/EventCatalogEnterprise';
9
+
10
+ <EventCatalogEnterprise />
11
+
12
+ Federation indexes and materializes normal EventCatalog resource content from every configured source.
13
+
14
+ ## Supported resources
15
+
16
+ The current release supports:
17
+
18
+ - Architecture decision records (ADRs)
19
+ - Agents
20
+ - Channels
21
+ - Commands
22
+ - Data products
23
+ - Data stores (`container` resources)
24
+ - Diagrams
25
+ - Domains and subdomains
26
+ - Entities
27
+ - Events
28
+ - Flows
29
+ - Queries
30
+ - Services
31
+ - Systems
32
+ - Teams
33
+ - Users
34
+
35
+ Resource versions remain with their owner and are included in cross-catalog version resolution.
36
+
37
+ ## Resource files
38
+
39
+ Federation includes files associated with supported resources:
40
+
41
+ - Markdown and MDX resource documentation
42
+ - Schemas attached to events, commands, and queries
43
+ - OpenAPI, AsyncAPI, and GraphQL specifications
44
+ - Resource-local sidecar documentation
45
+ - Resource-local images, diagrams, examples, and other files
46
+ - Changelog and version documentation stored with the resource
47
+
48
+ Paths and content hashes from the source index are used to fetch and verify these files.
49
+
50
+ ## Teams and users
51
+
52
+ Top-level teams and users are included. Give shared people and teams one owning catalog to avoid organization-wide duplicate ownership.
53
+
54
+ ## Public assets
55
+
56
+ Files under a source catalog's top-level `public/` directory are included and composed into the central `public/` directory.
57
+
58
+ Remote collisions use last-configured-source-wins and report `federation/asset-collision`. Existing central public files are preserved.
59
+
60
+ See [Share public assets and custom components](/docs/federation/how-to/share-assets-and-components).
61
+
62
+ ## Custom components
63
+
64
+ Files under a source catalog's top-level `components/` directory are included in the federated component layer.
65
+
66
+ Central components override federated components at the same relative path. Any npm packages imported by a federated component must be installed in the central catalog.
67
+
68
+ ## Content not included
69
+
70
+ The current release does not federate:
71
+
72
+ - Top-level reusable `snippets/`
73
+ - Custom pages and API routes
74
+ - `eventcatalog.config.js` settings from source catalogs
75
+ - Source catalog themes, navigation, or global styles
76
+ - Source `package.json` dependencies
77
+ - `node_modules/`, build output, or cache directories
78
+ - Content already under a source catalog's generated `federated/` directory
79
+
80
+ The central catalog owns its application configuration, navigation, theme, custom pages, global dependencies, and build process.
81
+
82
+ ## Why generated Federation content is excluded
83
+
84
+ When a source catalog is itself a central view, its generated `federated/` directory is excluded from indexing. This prevents generated paths from being nested repeatedly and avoids treating copied output as newly authored ownership.
85
+
86
+ Only content owned by the selected source catalog is indexed for the next composition level.