@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.
- 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-SSSN5FXC.js → chunk-7LWOCX4R.js} +1 -1
- package/dist/{chunk-IIECZFXN.js → chunk-A4JRWRCV.js} +1 -1
- package/dist/{chunk-JHUICVBT.js → chunk-HBVTU6ZP.js} +1 -1
- package/dist/{chunk-PADMH2RJ.js → chunk-I6HUOX4R.js} +1 -1
- package/dist/{chunk-34RMFKFB.js → chunk-Q2ATWE7N.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/docs/api/02-config.md +60 -6
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +18 -11
- package/dist/docs/development/authentication/providers/03-setting-up-github.md +29 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +2 -2
- package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +17 -0
- package/dist/docs/development/components/07-resource-references.md +7 -1
- package/dist/docs/development/components/components/05-architecture-graph.md +65 -0
- package/dist/docs/development/components/components/{05-attachments.md → 06-attachments.md} +1 -1
- package/dist/docs/development/components/components/{06-channel-information.md → 07-channel-information.md} +1 -1
- package/dist/docs/development/components/components/{07-custom-properties.md → 08-custom-properties.md} +1 -1
- package/dist/docs/development/components/components/{08-design.md → 09-design.md} +1 -1
- package/dist/docs/development/components/components/{09-entitymap.md → 10-entitymap.md} +1 -1
- package/dist/docs/development/components/components/{10-flow.md → 11-flow.md} +1 -1
- package/dist/docs/development/components/components/{11-link.md → 12-link.md} +1 -1
- package/dist/docs/development/components/components/{12-mermaid-file-loader.md → 13-mermaid-file-loader.md} +13 -1
- package/dist/docs/development/components/components/{13-message-table.md → 14-message-table.md} +1 -1
- package/dist/docs/development/components/components/{14-nodegraph.md → 15-nodegraph.md} +1 -1
- package/dist/docs/development/components/components/{15-openapi.md → 16-openapi.md} +1 -1
- package/dist/docs/development/components/components/{16-prompt.md → 17-prompt.md} +1 -1
- package/dist/docs/development/components/components/{17-remote-schema.md → 18-remote-schema.md} +1 -1
- package/dist/docs/development/components/components/{18-resource-group-table.md → 19-resource-group-table.md} +1 -1
- package/dist/docs/development/components/components/{19-resource-link.md → 20-resource-link.md} +1 -1
- package/dist/docs/development/components/components/{20-schema.md → 21-schema.md} +1 -1
- package/dist/docs/development/components/components/{21-schema-viewer.md → 22-schema-viewer.md} +1 -1
- package/dist/docs/development/components/components/{22-steps.md → 23-steps.md} +1 -1
- package/dist/docs/development/components/components/{23-tabs.md → 24-tabs.md} +1 -1
- package/dist/docs/development/components/components/{24-tiles.md → 25-tiles.md} +1 -1
- package/dist/docs/development/components/components/{25-visibility.md → 26-visibility.md} +1 -1
- package/dist/docs/development/components/diagram-syntax/06-mermaid.md +45 -6
- package/dist/docs/development/customization/04-documentation-sidebar.md +3 -3
- package/dist/docs/development/customization/05-resource-sidebar.md +235 -0
- package/dist/docs/development/customization/09-embed-eventcatalog.md +179 -0
- package/dist/docs/development/customization/_category_.json +1 -1
- package/dist/docs/development/deployment/build-and-deploy.md +4 -0
- package/dist/docs/development/deployment/hosting-options.md +1 -1
- package/dist/docs/development/deployment/link-validation.md +105 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/00-overview.md +76 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/01-setup.md +144 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/_category_.json +10 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/01-configure-rules.md +130 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/02-run-in-ci.md +93 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/03-use-custom-frontmatter.md +81 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/04-reference-external-catalogs.md +51 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +120 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/_category_.json +12 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/01-cli.md +109 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/02-configuration.md +120 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +287 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/04-versions.md +77 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +75 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter/reference/_category_.json +12 -0
- package/dist/docs/development/guides/97-architecture-graph.md +78 -0
- package/dist/docs/development/guides/domains/02-create-domain.md +1 -1
- package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +29 -0
- package/dist/docs/development/guides/domains/09-reference.md +10 -0
- package/dist/docs/development/guides/resources/messages/04-message-channels/02-adding-channels.md +2 -2
- package/dist/docs/development/guides/resources/messages/04-message-channels/04-adding-messages-to-services.md +8 -0
- package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/01-add-openapi-specifications.md +2 -2
- package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/02-add-asyncapi-specifications.md +3 -3
- package/dist/docs/development/guides/systems/05-system-context-maps.md +2 -0
- package/dist/docs/development/license-keys/license-validation.md +7 -3
- package/dist/docs/development/license-keys/overview.md +7 -3
- package/dist/docs/development/upgrading/upgrading.md +3 -3
- package/dist/docs/development/upgrading/v2.md +3 -3
- package/dist/docs/federation/00-overview.md +158 -0
- package/dist/docs/federation/01-first-federation.md +199 -0
- package/dist/docs/federation/_category_.json +12 -0
- package/dist/docs/federation/explanation/_category_.json +12 -0
- package/dist/docs/federation/explanation/how-it-works.md +129 -0
- package/dist/docs/federation/explanation/lockfile-and-cache.md +134 -0
- package/dist/docs/federation/explanation/mvp-status-and-feedback.md +86 -0
- package/dist/docs/federation/explanation/ownership-and-references.md +134 -0
- package/dist/docs/federation/how-to/_category_.json +12 -0
- package/dist/docs/federation/how-to/configure-github-sources.md +156 -0
- package/dist/docs/federation/how-to/configure-validation-rules.md +127 -0
- package/dist/docs/federation/how-to/run-in-ci.md +138 -0
- package/dist/docs/federation/how-to/share-assets-and-components.md +125 -0
- package/dist/docs/federation/how-to/use-local-sources.md +138 -0
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/00-introduction.md +11 -2
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/01-installation.md +11 -3
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/02-plugin-configuration.md +11 -2
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/03-examples.md +11 -1
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/04-configuration.md +11 -1
- package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/05-setup-team-catalog.md +11 -2
- package/dist/docs/federation/legacy-federation/_category_.json +12 -0
- package/dist/docs/federation/reference/_category_.json +12 -0
- package/dist/docs/federation/reference/cli.md +122 -0
- package/dist/docs/federation/reference/configuration.md +192 -0
- package/dist/docs/federation/reference/diagnostic-rules.md +173 -0
- package/dist/docs/federation/reference/generated-output.md +118 -0
- package/dist/docs/federation/reference/supported-content.md +86 -0
- package/dist/docs/federation/reference/troubleshooting.md +208 -0
- package/dist/docs/plugins/01-intro.md +3 -3
- package/dist/docs/plugins/03-all-plugins.md +2 -2
- package/dist/docs/plugins/asyncapi/00-intro.md +4 -4
- package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +4 -4
- package/dist/docs/plugins/backstage/00-overview.md +53 -0
- package/dist/docs/plugins/backstage/01-get-started.md +95 -0
- package/dist/docs/plugins/backstage/02-embed-entity-tabs.md +109 -0
- package/dist/docs/plugins/backstage/03-add-overview-cards.md +79 -0
- package/dist/docs/plugins/backstage/04-control-theme-and-size.md +54 -0
- package/dist/docs/plugins/backstage/05-migrate-to-annotations.md +49 -0
- package/dist/docs/plugins/backstage/06-configuration.md +85 -0
- package/dist/docs/plugins/backstage/07-components.md +129 -0
- package/dist/docs/plugins/backstage/08-how-embeds-work.md +52 -0
- package/dist/docs/plugins/backstage/_category_.json +4 -3
- package/dist/docs/plugins/eventbridge/00-intro.md +5 -5
- package/dist/docs/plugins/eventbridge/03-api.md +3 -3
- package/dist/docs/plugins/graphql/00-intro.md +2 -2
- package/dist/docs/plugins/graphql/02-plugin-configuration.md +2 -2
- package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
- package/dist/docs/plugins/openapi/00-intro.md +1 -1
- package/dist/eventcatalog.cjs +1 -1
- package/dist/eventcatalog.js +5 -5
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +21 -19
- package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.test.tsx +114 -0
- package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +107 -86
- package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.test.tsx +91 -0
- package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.tsx +115 -33
- package/eventcatalog/src/components/SchemaExplorer/SchemaViewerHover.test.tsx +33 -0
- package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.test.ts +84 -0
- package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.ts +149 -0
- package/eventcatalog/src/utils/collections/glob-loader.ts +2 -2
- package/eventcatalog/src/utils/protobuf-schema.ts +211 -16
- package/package.json +8 -8
- package/dist/docs/cli/channels.md +0 -180
- package/dist/docs/cli/commands.md +0 -183
- package/dist/docs/cli/custom-docs.md +0 -78
- package/dist/docs/cli/data-products.md +0 -177
- package/dist/docs/cli/data-stores.md +0 -166
- package/dist/docs/cli/diagrams.md +0 -147
- package/dist/docs/cli/domains.md +0 -280
- package/dist/docs/cli/entities.md +0 -138
- package/dist/docs/cli/events.md +0 -186
- package/dist/docs/cli/export.md +0 -27
- package/dist/docs/cli/governance.md +0 -24
- package/dist/docs/cli/messages.md +0 -69
- package/dist/docs/cli/queries.md +0 -183
- package/dist/docs/cli/services.md +0 -266
- package/dist/docs/cli/snapshots.md +0 -44
- package/dist/docs/cli/teams.md +0 -75
- package/dist/docs/cli/users.md +0 -75
- package/dist/docs/cli/utilities.md +0 -43
- package/dist/docs/development/developer-tools/eventcatalog-linter.md +0 -732
- package/dist/docs/plugins/backstage/00-intro.md +0 -67
- package/dist/docs/plugins/backstage/01-installation.md +0 -242
- package/dist/docs/plugins/backstage/02-api.md +0 -51
- package/dist/docs/plugins/backstage/03-examples.md +0 -12
- 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.
|