@eventcatalog/core 4.10.13 → 4.10.14

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 (160) 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-HERAHLM2.js} +1 -1
  6. package/dist/{chunk-IIECZFXN.js → chunk-LITOQH56.js} +1 -1
  7. package/dist/{chunk-34RMFKFB.js → chunk-LUW6RDA7.js} +1 -1
  8. package/dist/{chunk-JHUICVBT.js → chunk-ONDFEA5R.js} +1 -1
  9. package/dist/{chunk-PADMH2RJ.js → chunk-V2SKOQYF.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 +55 -1
  13. package/dist/docs/development/authentication/providers/03-setting-up-github.md +29 -0
  14. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +2 -2
  15. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +17 -0
  16. package/dist/docs/development/components/07-resource-references.md +7 -1
  17. package/dist/docs/development/components/components/05-architecture-graph.md +65 -0
  18. package/dist/docs/development/components/components/{05-attachments.md → 06-attachments.md} +1 -1
  19. package/dist/docs/development/components/components/{06-channel-information.md → 07-channel-information.md} +1 -1
  20. package/dist/docs/development/components/components/{07-custom-properties.md → 08-custom-properties.md} +1 -1
  21. package/dist/docs/development/components/components/{08-design.md → 09-design.md} +1 -1
  22. package/dist/docs/development/components/components/{09-entitymap.md → 10-entitymap.md} +1 -1
  23. package/dist/docs/development/components/components/{10-flow.md → 11-flow.md} +1 -1
  24. package/dist/docs/development/components/components/{11-link.md → 12-link.md} +1 -1
  25. package/dist/docs/development/components/components/{12-mermaid-file-loader.md → 13-mermaid-file-loader.md} +1 -1
  26. package/dist/docs/development/components/components/{13-message-table.md → 14-message-table.md} +1 -1
  27. package/dist/docs/development/components/components/{14-nodegraph.md → 15-nodegraph.md} +1 -1
  28. package/dist/docs/development/components/components/{15-openapi.md → 16-openapi.md} +1 -1
  29. package/dist/docs/development/components/components/{16-prompt.md → 17-prompt.md} +1 -1
  30. package/dist/docs/development/components/components/{17-remote-schema.md → 18-remote-schema.md} +1 -1
  31. package/dist/docs/development/components/components/{18-resource-group-table.md → 19-resource-group-table.md} +1 -1
  32. package/dist/docs/development/components/components/{19-resource-link.md → 20-resource-link.md} +1 -1
  33. package/dist/docs/development/components/components/{20-schema.md → 21-schema.md} +1 -1
  34. package/dist/docs/development/components/components/{21-schema-viewer.md → 22-schema-viewer.md} +1 -1
  35. package/dist/docs/development/components/components/{22-steps.md → 23-steps.md} +1 -1
  36. package/dist/docs/development/components/components/{23-tabs.md → 24-tabs.md} +1 -1
  37. package/dist/docs/development/components/components/{24-tiles.md → 25-tiles.md} +1 -1
  38. package/dist/docs/development/components/components/{25-visibility.md → 26-visibility.md} +1 -1
  39. package/dist/docs/development/customization/04-documentation-sidebar.md +3 -3
  40. package/dist/docs/development/customization/05-resource-sidebar.md +235 -0
  41. package/dist/docs/development/customization/09-embed-eventcatalog.md +179 -0
  42. package/dist/docs/development/customization/_category_.json +1 -1
  43. package/dist/docs/development/deployment/build-and-deploy.md +4 -0
  44. package/dist/docs/development/deployment/hosting-options.md +1 -1
  45. package/dist/docs/development/deployment/link-validation.md +105 -0
  46. package/dist/docs/development/developer-tools/eventcatalog-linter/00-overview.md +76 -0
  47. package/dist/docs/development/developer-tools/eventcatalog-linter/01-setup.md +144 -0
  48. package/dist/docs/development/developer-tools/eventcatalog-linter/_category_.json +10 -0
  49. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/01-configure-rules.md +130 -0
  50. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/02-run-in-ci.md +93 -0
  51. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/03-use-custom-frontmatter.md +81 -0
  52. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/04-reference-external-catalogs.md +51 -0
  53. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +120 -0
  54. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/_category_.json +12 -0
  55. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/01-cli.md +109 -0
  56. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/02-configuration.md +120 -0
  57. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +287 -0
  58. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/04-versions.md +77 -0
  59. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +75 -0
  60. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/_category_.json +12 -0
  61. package/dist/docs/development/guides/97-architecture-graph.md +78 -0
  62. package/dist/docs/development/guides/domains/02-create-domain.md +1 -1
  63. package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +29 -0
  64. package/dist/docs/development/guides/domains/09-reference.md +10 -0
  65. package/dist/docs/development/guides/resources/messages/04-message-channels/02-adding-channels.md +2 -2
  66. package/dist/docs/development/guides/resources/messages/04-message-channels/04-adding-messages-to-services.md +8 -0
  67. package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/01-add-openapi-specifications.md +2 -2
  68. package/dist/docs/development/guides/resources/schemas/03-add-specifications-to-services/02-add-asyncapi-specifications.md +3 -3
  69. package/dist/docs/development/guides/systems/05-system-context-maps.md +2 -0
  70. package/dist/docs/development/license-keys/license-validation.md +7 -3
  71. package/dist/docs/development/license-keys/overview.md +7 -3
  72. package/dist/docs/development/upgrading/upgrading.md +3 -3
  73. package/dist/docs/development/upgrading/v2.md +3 -3
  74. package/dist/docs/federation/00-overview.md +158 -0
  75. package/dist/docs/federation/01-first-federation.md +199 -0
  76. package/dist/docs/federation/_category_.json +12 -0
  77. package/dist/docs/federation/explanation/_category_.json +12 -0
  78. package/dist/docs/federation/explanation/how-it-works.md +129 -0
  79. package/dist/docs/federation/explanation/lockfile-and-cache.md +134 -0
  80. package/dist/docs/federation/explanation/mvp-status-and-feedback.md +86 -0
  81. package/dist/docs/federation/explanation/ownership-and-references.md +134 -0
  82. package/dist/docs/federation/how-to/_category_.json +12 -0
  83. package/dist/docs/federation/how-to/configure-github-sources.md +156 -0
  84. package/dist/docs/federation/how-to/configure-validation-rules.md +127 -0
  85. package/dist/docs/federation/how-to/run-in-ci.md +138 -0
  86. package/dist/docs/federation/how-to/share-assets-and-components.md +125 -0
  87. package/dist/docs/federation/how-to/use-local-sources.md +138 -0
  88. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/00-introduction.md +11 -2
  89. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/01-installation.md +11 -3
  90. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/02-plugin-configuration.md +11 -2
  91. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/03-examples.md +11 -1
  92. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/04-configuration.md +11 -1
  93. package/dist/docs/{plugins/eventcatalog-federation → federation/legacy-federation}/05-setup-team-catalog.md +11 -2
  94. package/dist/docs/federation/legacy-federation/_category_.json +12 -0
  95. package/dist/docs/federation/reference/_category_.json +12 -0
  96. package/dist/docs/federation/reference/cli.md +122 -0
  97. package/dist/docs/federation/reference/configuration.md +192 -0
  98. package/dist/docs/federation/reference/diagnostic-rules.md +173 -0
  99. package/dist/docs/federation/reference/generated-output.md +118 -0
  100. package/dist/docs/federation/reference/supported-content.md +86 -0
  101. package/dist/docs/federation/reference/troubleshooting.md +208 -0
  102. package/dist/docs/plugins/01-intro.md +3 -3
  103. package/dist/docs/plugins/03-all-plugins.md +2 -2
  104. package/dist/docs/plugins/asyncapi/00-intro.md +4 -4
  105. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +4 -4
  106. package/dist/docs/plugins/backstage/00-overview.md +53 -0
  107. package/dist/docs/plugins/backstage/01-get-started.md +95 -0
  108. package/dist/docs/plugins/backstage/02-embed-entity-tabs.md +109 -0
  109. package/dist/docs/plugins/backstage/03-add-overview-cards.md +79 -0
  110. package/dist/docs/plugins/backstage/04-control-theme-and-size.md +54 -0
  111. package/dist/docs/plugins/backstage/05-migrate-to-annotations.md +49 -0
  112. package/dist/docs/plugins/backstage/06-configuration.md +85 -0
  113. package/dist/docs/plugins/backstage/07-components.md +129 -0
  114. package/dist/docs/plugins/backstage/08-how-embeds-work.md +52 -0
  115. package/dist/docs/plugins/backstage/_category_.json +4 -3
  116. package/dist/docs/plugins/eventbridge/00-intro.md +5 -5
  117. package/dist/docs/plugins/eventbridge/03-api.md +3 -3
  118. package/dist/docs/plugins/graphql/00-intro.md +2 -2
  119. package/dist/docs/plugins/graphql/02-plugin-configuration.md +2 -2
  120. package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
  121. package/dist/docs/plugins/openapi/00-intro.md +1 -1
  122. package/dist/eventcatalog.cjs +1 -1
  123. package/dist/eventcatalog.js +5 -5
  124. package/dist/generate.cjs +1 -1
  125. package/dist/generate.js +3 -3
  126. package/dist/utils/cli-logger.cjs +1 -1
  127. package/dist/utils/cli-logger.js +2 -2
  128. package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +21 -19
  129. package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +79 -77
  130. package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.test.tsx +91 -0
  131. package/eventcatalog/src/components/SchemaExplorer/ProtobufSchemaViewer.tsx +115 -33
  132. package/eventcatalog/src/components/SchemaExplorer/SchemaViewerHover.test.tsx +33 -0
  133. package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.test.ts +84 -0
  134. package/eventcatalog/src/components/SchemaExplorer/protobuf-validation.ts +149 -0
  135. package/eventcatalog/src/utils/protobuf-schema.ts +211 -16
  136. package/package.json +3 -3
  137. package/dist/docs/cli/channels.md +0 -180
  138. package/dist/docs/cli/commands.md +0 -183
  139. package/dist/docs/cli/custom-docs.md +0 -78
  140. package/dist/docs/cli/data-products.md +0 -177
  141. package/dist/docs/cli/data-stores.md +0 -166
  142. package/dist/docs/cli/diagrams.md +0 -147
  143. package/dist/docs/cli/domains.md +0 -280
  144. package/dist/docs/cli/entities.md +0 -138
  145. package/dist/docs/cli/events.md +0 -186
  146. package/dist/docs/cli/export.md +0 -27
  147. package/dist/docs/cli/governance.md +0 -24
  148. package/dist/docs/cli/messages.md +0 -69
  149. package/dist/docs/cli/queries.md +0 -183
  150. package/dist/docs/cli/services.md +0 -266
  151. package/dist/docs/cli/snapshots.md +0 -44
  152. package/dist/docs/cli/teams.md +0 -75
  153. package/dist/docs/cli/users.md +0 -75
  154. package/dist/docs/cli/utilities.md +0 -43
  155. package/dist/docs/development/developer-tools/eventcatalog-linter.md +0 -732
  156. package/dist/docs/plugins/backstage/00-intro.md +0 -67
  157. package/dist/docs/plugins/backstage/01-installation.md +0 -242
  158. package/dist/docs/plugins/backstage/02-api.md +0 -51
  159. package/dist/docs/plugins/backstage/03-examples.md +0 -12
  160. package/dist/docs/plugins/eventcatalog-federation/_category_.json +0 -11
@@ -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.
@@ -0,0 +1,208 @@
1
+ ---
2
+ sidebar_position: 6
3
+ sidebar_label: Troubleshooting
4
+ title: Troubleshooting EventCatalog Federation
5
+ description: Fix common source, ownership, relationship, asset, cache, and generated-output problems.
6
+ ---
7
+
8
+ import EventCatalogEnterprise from '@site/src/components/MDX/EventCatalogEnterprise';
9
+
10
+ <EventCatalogEnterprise />
11
+
12
+ Run with verbose diagnostics before investigating a warning:
13
+
14
+ ```bash
15
+ npx eventcatalog federate --verbose
16
+ ```
17
+
18
+ Errors always include details. Verbose mode adds the attributes for warnings.
19
+
20
+ ## Federation is not enabled
21
+
22
+ If the command reports that Federation is an Enterprise feature:
23
+
24
+ - Confirm the Enterprise `license.jwt` file is in the central catalog root
25
+ - If the file is stored elsewhere, confirm `EC_LICENSE` points to it
26
+ - Confirm the license has not expired
27
+ - Email [hello@eventcatalog.dev](mailto:hello@eventcatalog.dev?subject=EventCatalog%20Federation%20Trial) to request or replace an offline trial key
28
+ - Review [offline license validation](/docs/development/license-keys/license-validation#offline-validation)
29
+
30
+ ## No sources are configured
31
+
32
+ Add at least one entry to `federation.sources`:
33
+
34
+ ```js title="eventcatalog.config.js"
35
+ export default {
36
+ federation: {
37
+ sources: [
38
+ {
39
+ id: 'acme/payments',
40
+ source: 'github:acme/payments-catalog',
41
+ },
42
+ ],
43
+ },
44
+ };
45
+ ```
46
+
47
+ If previous Federation output exists, an empty source list intentionally removes it and its managed public files.
48
+
49
+ ## A source ID is configured more than once
50
+
51
+ Every source entry needs a unique stable `id`. Change or remove the duplicate configuration entry.
52
+
53
+ This configuration error is different from `federation/duplicate-source`, which means several catalogs own the same resource ID.
54
+
55
+ ## GitHub source errors
56
+
57
+ ### Unsupported GitHub locator
58
+
59
+ Use:
60
+
61
+ ```text
62
+ github:owner/repository
63
+ ```
64
+
65
+ Do not use a full `https://github.com/...` URL.
66
+
67
+ ### Repository cannot be fetched
68
+
69
+ Check:
70
+
71
+ - The owner and repository name
72
+ - The configured `ref`
73
+ - Network access to GitHub
74
+ - Git is installed when the source does not publish an index
75
+ - `EVENTCATALOG_GITHUB_TOKEN` or `GITHUB_TOKEN` has repository contents read access
76
+
77
+ ### Published index source does not match
78
+
79
+ The `source` value inside `catalog.index.json` must equal the configured source `id`.
80
+
81
+ Either correct the published index or configure the matching stable ID.
82
+
83
+ ### Catalog path escapes the source
84
+
85
+ `path` must be a safe relative path inside the selected repository. Remove absolute paths, `..` segments, or backslashes.
86
+
87
+ ## Filesystem source errors
88
+
89
+ ### Source does not exist
90
+
91
+ `file:` paths are resolved from the central catalog directory, not from the terminal's parent directory.
92
+
93
+ For sibling catalogs:
94
+
95
+ ```js
96
+ {
97
+ id: 'acme/payments',
98
+ source: 'file:../payments-catalog',
99
+ }
100
+ ```
101
+
102
+ Confirm that the resolved directory exists and contains an EventCatalog project.
103
+
104
+ ### Filesystem source does not support `ref`
105
+
106
+ Remove `ref` from the source. Filesystem sources always read the current local files.
107
+
108
+ ### Source or artifact escapes its allowed directory
109
+
110
+ Federation rejects paths and symbolic links that resolve outside the selected filesystem source. Keep the catalog and its referenced files within the source root.
111
+
112
+ ## Ownership and type errors
113
+
114
+ ### `federation/duplicate-source`
115
+
116
+ Several catalogs own the same resource ID. Choose one owner and remove copied or placeholder definitions from the other catalogs.
117
+
118
+ ### `federation/type-collision`
119
+
120
+ The same ID is documented with different resource types. Correct the type or assign distinct IDs.
121
+
122
+ ### `federation/pointer-type-mismatch`
123
+
124
+ A relationship expects one type but resolves to another. Correct the relationship pointer or its target ID.
125
+
126
+ Use the [diagnostic rule reference](/docs/federation/reference/diagnostic-rules) to interpret the printed attributes.
127
+
128
+ ## Relationship warnings
129
+
130
+ ### Referenced resource does not exist
131
+
132
+ For `federation/missing-resource`:
133
+
134
+ - Check the referenced ID for a typo
135
+ - Add the owning catalog to `federation.sources`
136
+ - Confirm the owner documents the resource
137
+ - Keep the warning if the external reference is deliberate
138
+
139
+ ### Referenced resource version does not exist
140
+
141
+ For `federation/unresolved-version`:
142
+
143
+ - Compare `requested version` with `available versions`
144
+ - Correct the exact version or semantic range
145
+ - Publish the required version in the owning catalog
146
+
147
+ ## Public assets or components are not correct
148
+
149
+ For `federation/asset-collision`, run with `--verbose` to see the source order and winner.
150
+
151
+ Then:
152
+
153
+ - Namespace remote asset paths by team or domain
154
+ - Make intentionally shared files identical
155
+ - Reorder sources only when last-source-wins is deliberate
156
+ - Check whether the central catalog owns the public path
157
+ - Check whether a local component overrides the federated component
158
+
159
+ If a custom component imports an npm package, install that dependency in the central catalog.
160
+
161
+ Top-level source `snippets/` are not currently federated. Move required content into the page, provide it centrally, or avoid the remote snippet import.
162
+
163
+ ## Content hash mismatch
164
+
165
+ Federation fetched bytes that did not match the hash recorded by the source index.
166
+
167
+ Rerun the command first. If the error remains:
168
+
169
+ - Regenerate or remove a stale published `catalog.index.json`
170
+ - Confirm the source content still exists at the indexed commit
171
+ - Check whether content was changed without updating the index
172
+
173
+ Federation does not install content that fails integrity validation.
174
+
175
+ ## The lockfile cannot be read
176
+
177
+ Check that `eventcatalog.lock` contains valid JSON and was not partially edited.
178
+
179
+ If you do not need its audit or managed public-file state, move the malformed file aside and rerun Federation. Review public assets carefully because the new run will not know which existing files were managed by the unreadable lockfile.
180
+
181
+ ## Federated content looks stale
182
+
183
+ Run Federation again before starting or building EventCatalog:
184
+
185
+ ```bash
186
+ npx eventcatalog federate
187
+ npm run dev
188
+ ```
189
+
190
+ For a local source, remember there is no watcher integration yet.
191
+
192
+ Use `--no-cache` when investigating cache behavior:
193
+
194
+ ```bash
195
+ npx eventcatalog federate --no-cache
196
+ ```
197
+
198
+ The cache is content-addressed and verified, so changing source content normally produces a different cache key without this option.
199
+
200
+ ## A failed run left the previous content visible
201
+
202
+ This is expected. Federation preserves or restores the previous successful output when validation or a normal output update fails.
203
+
204
+ Fix the reported problem and rerun the command. New output and a new lockfile are installed only after Federation succeeds.
205
+
206
+ ## Get help
207
+
208
+ Share the command output, relevant source configuration with secrets removed, and the expected ownership model in the [EventCatalog Discord](https://eventcatalog.dev/discord) or [open an issue](https://github.com/event-catalog/eventcatalog/issues).
@@ -29,11 +29,11 @@ These plugins are maintained by the EventCatalog team and are updated regularly,
29
29
  - [OpenAPI Plugin](/docs/plugins/openapi/intro) - Generate documentation from your OpenAPI files
30
30
  - [GraphQL Plugin](/docs/plugins/graphql/intro) - Generate documentation from your GraphQL files
31
31
  - [Github Plugin](/docs/plugins/github/intro) - Sync your schemas from GitHub to EventCatalog
32
- - [Backstage Plugin](/docs/plugins/backstage/intro) - Use EventCatalog features within Backstage
32
+ - [Backstage Plugin](/docs/plugins/backstage/overview) - Embed EventCatalog documentation and visualizations in Backstage
33
33
  - [Amazon EventBridge](/docs/plugins/eventbridge/intro) - Sync Amazon EventBridge schemas to EventCatalog
34
34
  - [Amazon API Gateway](/docs/plugins/amazon-apigateway/intro) - Generate documentation from your Amazon API Gateway
35
35
  - [Confluent Schema Registry](/docs/plugins/confluent-schema-registry/intro) - Sync your schemas from Confluent Schema Registry to EventCatalog
36
- - [EventCatalog Federation](/docs/plugins/eventcatalog-federation/introduction) - Merge multiple EventCatalog instances into a single catalog.
36
+ - [EventCatalog Federation](/docs/federation/overview) - Merge multiple EventCatalog instances into a single catalog.
37
37
 
38
38
  #### Community plugins
39
39
 
@@ -46,4 +46,4 @@ EventCatalog can integrate with anything that has an API.
46
46
 
47
47
  We offer support and services to build custom integrations for your EventCatalog.
48
48
 
49
- If you would like to explore custom integrations and have us build your integrate for you please contact us at `hello@eventcatalog.dev`.
49
+ If you would like to explore custom integrations and have us build your integrate for you please contact us at `hello@eventcatalog.dev`.
@@ -19,8 +19,8 @@ Automate and sync your data from a wide range of systems to EventCatalog.
19
19
  | [Apicurio Registry](/docs/plugins/apicurio/intro) | Import schemas and specifications from Apicurio Registry into EventCatalog |
20
20
  | [Azure Schema Registry](/docs/plugins/azure-schema-registry/intro) | Import schemas from Azure Schema Registry into EventCatalog |
21
21
  | [Github Plugin](/docs/plugins/github/intro) | Sync your schemas from GitHub to EventCatalog |
22
- | [Backstage Plugin](/docs/plugins/backstage/intro) | Use EventCatalog features within Backstage |
22
+ | [Backstage Plugin](/docs/plugins/backstage/overview) | Embed EventCatalog documentation and visualizations in Backstage |
23
23
  | [Amazon EventBridge](/docs/plugins/eventbridge/intro) | Sync Amazon EventBridge schemas to EventCatalog |
24
24
  | [Amazon API Gateway](/docs/plugins/amazon-apigateway/intro) | Generate documentation from your Amazon API Gateway |
25
25
  | [Confluent Schema Registry](/docs/plugins/confluent-schema-registry/intro) | Sync your schemas from Confluent Schema Registry to EventCatalog |
26
- | [EventCatalog Federation](/docs/plugins/eventcatalog-federation/introduction) | Merge multiple EventCatalog instances into a single catalog. |
26
+ | [EventCatalog Federation](/docs/federation/overview) | Merge multiple EventCatalog instances into a single catalog. |
@@ -38,10 +38,10 @@ The EventCatalog AsyncAPI plugin can provide you with many features:
38
38
  - ⭐️ Generate domains, services and messages into your catalog from your AsyncAPI specification files
39
39
  - ⭐️ [Automate your EventCatalog and fetch AsyncAPI files by URL](/docs/plugins/asyncapi/features#fetch-asyncapi-files-by-url)
40
40
  - ⭐️ [Map commands, queries and events from your OpenAPI file using custom extensions](/docs/plugins/asyncapi/features#mapping-messages-events-commands-or-queries)
41
- - ⭐️ [Automatically version your changes in EventCatalog in sync with your AsyncAPI versions](#automatic-versioning)
42
- - ⭐️ [Allow you to write and persist custom markdown between changes](#persist-markdown)
43
- - ⭐️ [Display your message schemas in the catalog](#downloading-schemas)
44
- - ⭐️ [Fetch AsyncAPI files from any URL](#fetch-asyncapi-files-by-url)
41
+ - ⭐️ [Automatically version your changes in EventCatalog in sync with your AsyncAPI versions](/docs/plugins/asyncapi/features#automatic-versioning)
42
+ - ⭐️ [Allow you to write and persist custom markdown between changes](/docs/plugins/asyncapi/features#persist-markdown)
43
+ - ⭐️ [Display your message schemas in the catalog](/docs/plugins/asyncapi/features#downloading-schemas)
44
+ - ⭐️ [Fetch AsyncAPI files from any URL](/docs/plugins/asyncapi/features#fetch-asyncapi-files-by-url)
45
45
  - ⭐️ Ability to download your message schemas and AsyncAPI files (also versioned)
46
46
  - ⭐️ Ability to draft services and endpoints in EventCatalog from your AsyncAPI files
47
47
  - ⭐️ and more....
@@ -53,13 +53,13 @@ Each service in the `services` array requires the following properties:
53
53
  | `domain.generateMarkdown` | function | - | Function to override the default markdown generation for the domain. See [Markdown templates](#markdown-templates) for more information. |
54
54
  | `messages.generateMarkdown` | function | - | Function to override the default markdown generation for the message. See [Markdown templates](#markdown-templates) for more information. |
55
55
  | `messages.id` | object | - | Configure the id of the messages that are generated (for example, set a prefix to all messages that are generated) _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/features#adding-prefix-to-all-messages) |
56
- | `messages.id.prefix` | string | - | A prefix value for the message that is generated. For example a message with the id `orderPlaced` with a configured prefix of `hello-` will be `hello-orderPlaced`. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/plugin-configuration#adding-prefix-to-all-messages) |
57
- | `messages.id.separator` | string | `-` | The separator to use between the prefix and the message id. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/plugin-configuration#adding-prefix-to-all-messages) |
58
- | `messages.id.prefixWithServiceId` | boolean | | If true, the service id will be added to the id of the messages that are generated. For example a message with the id `orderPlaced` and the service id `orders-service` will be `orders-service-orderPlaced`. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/plugin-configuration#adding-prefix-to-all-messages) |
56
+ | `messages.id.prefix` | string | - | A prefix value for the message that is generated. For example a message with the id `orderPlaced` with a configured prefix of `hello-` will be `hello-orderPlaced`. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/features#adding-prefix-to-all-messages) |
57
+ | `messages.id.separator` | string | `-` | The separator to use between the prefix and the message id. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/features#adding-prefix-to-all-messages) |
58
+ | `messages.id.prefixWithServiceId` | boolean | | If true, the service id will be added to the id of the messages that are generated. For example a message with the id `orderPlaced` and the service id `orders-service` will be `orders-service-orderPlaced`. _(Added in v4.5.1)_ [(Read more)](/docs/plugins/asyncapi/features#adding-prefix-to-all-messages) |
59
59
  | `messages.id.lowerCase` | boolean | false | If true, the message id will be stored in lowercase and the folder will also be lowercased. (e.g `/events/orderplaced/index.mdx) _(Added in v5.0.0)_ |
60
60
  | `preserveExistingMessages` | boolean | `true` | Preserve existing message Markdown when the generator runs again. Set to `false` to replace existing Markdown with content generated from the AsyncAPI specification and `messages.generateMarkdown` template. Referenced and external messages are never overwritten. |
61
61
  | `saveParsedSpecFile` | boolean | `false` | Parse and save expanded AsyncAPI spec (helpful for files with $refs) |
62
- | `parseSchemas` | boolean | `true` | If you choose to parse your specification file using the [saveParsedSpecFile](#saveparsedspecfile-saveparsedspecfile) field, you can also opt in or out to have your ,message schemas parsed using the `parseSchemas` field. By default message schemas are parsed, if you want to keep your original schemas you have to set `parseSchemas` to false. | | `parseChannels` | boolean | `false` | Parse and save channels. If you set to true the AsyncAPI channels will also be documented in the catalog. |
62
+ | `parseSchemas` | boolean | `true` | If you choose to parse your specification file using the [saveParsedSpecFile](#optional-configuration-options) field, you can also opt in or out to have your ,message schemas parsed using the `parseSchemas` field. By default message schemas are parsed, if you want to keep your original schemas you have to set `parseSchemas` to false. | | `parseChannels` | boolean | `false` | Parse and save channels. If you set to true the AsyncAPI channels will also be documented in the catalog. |
63
63
  | `parseChannels` | boolean | `false` | When setting the value to true the generator will parse and write channels to your EventCatalog. |
64
64
  | `writeFilesToRoot` | boolean | `false` | Write AsyncAPI messages to root instead of service folder. By default all domains, services and messages will be grouped in the folder directory structure. |
65
65
  | `saveParsedSpecFile` | boolean | `true` | By default your AsyncAPI file will render in your catalog as you define it. If you are using $refs, or having issues seeing your AsyncAPI file in your catalog, then you can set this value to true. `saveParsedSpecFile` is false by default. |