@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,49 @@
1
+ ---
2
+ sidebar_position: 6
3
+ sidebar_label: Migrate legacy mappings
4
+ title: Migrate legacy resource mappings to entity annotations
5
+ description: Replace pre-1.0 Backstage app configuration mappings with EventCatalog entity annotations.
6
+ keywords:
7
+ - backstage
8
+ - migration
9
+ - annotations
10
+ ---
11
+
12
+ Plugin versions before 1.0 mapped Backstage names to EventCatalog IDs in `app-config.yaml`:
13
+
14
+ ```yaml title="app-config.yaml"
15
+ eventcatalog:
16
+ URL: https://demo.eventcatalog.dev
17
+ services:
18
+ - backstage-name: order-service
19
+ eventcatalog-id: order-service
20
+ eventcatalog-version: 1.0.0
21
+ ```
22
+
23
+ Move each resource mapping to the matching Backstage entity:
24
+
25
+ ```yaml title="catalog-info.yaml"
26
+ apiVersion: backstage.io/v1alpha1
27
+ kind: Component
28
+ metadata:
29
+ name: order-service
30
+ annotations:
31
+ eventcatalog.dev/id: order-service
32
+ eventcatalog.dev/version: 1.0.0
33
+ eventcatalog.dev/collection: services
34
+ spec:
35
+ type: service
36
+ lifecycle: production
37
+ owner: team-orders
38
+ ```
39
+
40
+ Keep only the EventCatalog base URL in `app-config.yaml`:
41
+
42
+ ```yaml title="app-config.yaml"
43
+ eventcatalog:
44
+ URL: https://demo.eventcatalog.dev
45
+ ```
46
+
47
+ Re-ingest the entity in Backstage, then open an EventCatalog tab or card and verify that it resolves the expected resource. Repeat for every legacy `services` and `apis` mapping.
48
+
49
+ See the [configuration reference](/docs/plugins/backstage/configuration) for annotation defaults and supported collections.
@@ -0,0 +1,85 @@
1
+ ---
2
+ sidebar_position: 7
3
+ sidebar_label: Configuration reference
4
+ title: Backstage plugin configuration reference
5
+ description: Reference for the EventCatalog base URL and Backstage entity annotations.
6
+ keywords:
7
+ - backstage
8
+ - app-config
9
+ - annotations
10
+ ---
11
+
12
+ ## Backstage app configuration
13
+
14
+ Configure one EventCatalog base URL in Backstage:
15
+
16
+ ```yaml title="app-config.yaml"
17
+ eventcatalog:
18
+ URL: https://demo.eventcatalog.dev
19
+ ```
20
+
21
+ | Field | Type | Required | Description |
22
+ | --- | --- | --- | --- |
23
+ | `eventcatalog.URL` | string | Yes | Base URL of the EventCatalog instance. The browser displaying Backstage must be able to reach it. |
24
+
25
+ Configure the EventCatalog origin, without an EventCatalog page path such as `/docs`, `/discover`, or `/visualiser`.
26
+
27
+ ## Entity annotations
28
+
29
+ Add these annotations to a Backstage catalog entity:
30
+
31
+ ```yaml
32
+ metadata:
33
+ annotations:
34
+ eventcatalog.dev/id: order-service
35
+ eventcatalog.dev/version: 1.0.0
36
+ eventcatalog.dev/collection: services
37
+ ```
38
+
39
+ | Annotation | Required | Default | Description |
40
+ | --- | --- | --- | --- |
41
+ | `eventcatalog.dev/id` | Yes for resource views | None | EventCatalog resource ID. |
42
+ | `eventcatalog.dev/version` | No | Latest resource page where supported | EventCatalog resource version. Entity maps, specific system context maps, and flows should provide a version. |
43
+ | `eventcatalog.dev/collection` | No | Inferred for Backstage services, APIs, and domains | EventCatalog collection containing the resource. |
44
+
45
+ Supported collections include:
46
+
47
+ - `agents`
48
+ - `commands`
49
+ - `containers`
50
+ - `data-products`
51
+ - `domains`
52
+ - `entities`
53
+ - `events`
54
+ - `flows`
55
+ - `queries`
56
+ - `services`
57
+ - `systems`
58
+ - `teams`
59
+
60
+ For a Backstage `Component` with `spec.type: service`, and for a Backstage `API`, the inferred collection is `services`. For a Backstage `Domain`, it is `domains`. Other entity kinds should set `eventcatalog.dev/collection` explicitly.
61
+
62
+ ## Prop overrides
63
+
64
+ Component props override annotations. For example, this always displays the `ordering` domain even when the current Backstage entity maps to another resource:
65
+
66
+ ```tsx
67
+ <EventCatalogDocumentationEntityPage
68
+ page="entity-map"
69
+ id="ordering"
70
+ version="1.0.0"
71
+ collection="domains"
72
+ />
73
+ ```
74
+
75
+ `type` is an alias for `collection` and accepts singular or plural values. Known singular resource types are converted to their plural collection, so `type="service"` resolves to `services`.
76
+
77
+ ## EventCatalog license configuration
78
+
79
+ For commercial use, set the Scale license key in the EventCatalog deployment rather than the Backstage app:
80
+
81
+ ```bash title=".env"
82
+ EVENTCATALOG_SCALE_LICENSE_KEY=your-scale-license-key
83
+ ```
84
+
85
+ Existing Backstage-specific keys can continue to use `EVENTCATALOG_LICENSE_KEY_BACKSTAGE`, but new deployments should use `EVENTCATALOG_SCALE_LICENSE_KEY`. See [Getting a license key for integrations](/docs/development/license-keys/integrations).
@@ -0,0 +1,129 @@
1
+ ---
2
+ sidebar_position: 8
3
+ sidebar_label: Component reference
4
+ title: Backstage plugin component reference
5
+ description: Reference for all EventCatalog Backstage page and card components and their props.
6
+ keywords:
7
+ - backstage
8
+ - react components
9
+ - props
10
+ ---
11
+
12
+ Import components from `@eventcatalog/backstage-plugin-eventcatalog`.
13
+
14
+ ## Full-page components
15
+
16
+ Use these components as children of `EntityLayout.Route`.
17
+
18
+ ### `EventCatalogDocumentationEntityPage`
19
+
20
+ The general-purpose page component.
21
+
22
+ ```tsx
23
+ <EventCatalogDocumentationEntityPage page="docs" />
24
+ ```
25
+
26
+ Supported `page` values:
27
+
28
+ | Value | Embedded view | Resource selection |
29
+ | --- | --- | --- |
30
+ | `docs` | Resource documentation | Current mapping or `id`, `version`, and `collection` props |
31
+ | `visualiser` | Resource visualizer | Current mapping or override props |
32
+ | `discover` | Discovery table for the mapped collection | Current mapping or override props |
33
+ | `entity-map` | Resource entity map | Current mapping or override props; provide a version |
34
+ | `schema-explorer` | Catalog schema explorer | Global catalog view, rendered from a mapped entity page |
35
+ | `architecture-graph` | Catalog Architecture Graph | Prefer `EventCatalogArchitectureGraphEntityPage` |
36
+ | `system-context-map` | System Context Map | Prefer `EventCatalogSystemContextMapEntityPage` |
37
+ | `flow` | Flow visualizer | Prefer `EventCatalogFlowEntityPage` |
38
+
39
+ ### `EventCatalogArchitectureGraphEntityPage`
40
+
41
+ Displays `/visualiser/graph` and focuses the graph on the selected resource.
42
+
43
+ ```tsx
44
+ <EventCatalogArchitectureGraphEntityPage
45
+ type="service"
46
+ depth={2}
47
+ />
48
+ ```
49
+
50
+ The graph accepts `depth={1 | 2 | 3}` and defaults to `2`. The Architecture Graph currently uses the latest version of each resource, so `version` does not change its graph data.
51
+
52
+ ### `EventCatalogSystemContextMapEntityPage`
53
+
54
+ Displays the catalog-wide System Context Map when no system is selected:
55
+
56
+ ```tsx
57
+ <EventCatalogSystemContextMapEntityPage />
58
+ ```
59
+
60
+ Pass `system` and `version` to display one system's context:
61
+
62
+ ```tsx
63
+ <EventCatalogSystemContextMapEntityPage
64
+ system="order-management-system"
65
+ version="1.0.0"
66
+ />
67
+ ```
68
+
69
+ `id` is accepted as an alias for `system`. A mapped Backstage `System` entity can supply both values through annotations.
70
+
71
+ ### `EventCatalogFlowEntityPage`
72
+
73
+ Displays a flow visualizer. A flow ID and version are required.
74
+
75
+ ```tsx
76
+ <EventCatalogFlowEntityPage
77
+ flow="checkout-saga"
78
+ version="1.0.0"
79
+ />
80
+ ```
81
+
82
+ `id` is accepted as an alias for `flow`.
83
+
84
+ ## Card components
85
+
86
+ Card components render the same embeds and fill the dimensions of their parent container.
87
+
88
+ | Component | View | Selection props |
89
+ | --- | --- | --- |
90
+ | `EventCatalogEntityVisualiserCard` | Resource visualizer | Current entity mapping |
91
+ | `EventCatalogEntityMessageCard` | Discovery table | Current entity mapping |
92
+ | `EventCatalogEntityEntityMapCard` | Entity map | Current mapping or `id`, `version`, and `collection` |
93
+ | `EventCatalogEntitySchemaExplorerCard` | Schema explorer | Global view |
94
+ | `EventCatalogEntityArchitectureGraphCard` | Architecture Graph | Current mapping or `id`, `type`/`collection`, and `depth` |
95
+ | `EventCatalogEntitySystemContextMapCard` | System Context Map | Overview, or `system`/`id` and `version` |
96
+ | `EventCatalogEntityFlowCard` | Flow visualizer | `flow`/`id` and `version`, or current entity mapping |
97
+
98
+ Set a concrete height on the parent grid item. See [Control embed theme and size](/docs/plugins/backstage/control-theme-and-size).
99
+
100
+ ## Shared props
101
+
102
+ | Prop | Type | Default | Description |
103
+ | --- | --- | --- | --- |
104
+ | `id` | `string` | Entity annotation | Override the EventCatalog resource ID. Also aliases `system` and `flow` on their dedicated components. |
105
+ | `version` | `string` | Entity annotation | Override the EventCatalog version. |
106
+ | `collection` | `string` | Entity annotation or inferred value | Override the EventCatalog collection. |
107
+ | `type` | `string` | None | Alias for `collection`; singular known types are converted to plural collections. |
108
+ | `theme` | `'light' \| 'dark'` | Saved EventCatalog theme | Force the color theme for this embed. |
109
+
110
+ ## Specialized props
111
+
112
+ | Prop | Component | Type | Default | Description |
113
+ | --- | --- | --- | --- | --- |
114
+ | `page` | `EventCatalogDocumentationEntityPage` | `EventCatalogPage` | `docs` | Select the embedded EventCatalog view. |
115
+ | `depth` | Architecture Graph components | `1 \| 2 \| 3` | `2` | Number of relationship hops around the focused resource. |
116
+ | `system` | System Context Map components | `string` | None | EventCatalog system ID. Omit for the overview. |
117
+ | `flow` | Flow components | `string` | Entity annotation | EventCatalog flow ID. |
118
+
119
+ ## Exported types
120
+
121
+ The package exports these public types:
122
+
123
+ - `EventCatalogArchitectureGraphDepth`
124
+ - `EventCatalogArchitectureGraphEntityPageProps`
125
+ - `EventCatalogDocumentationEntityPageProps`
126
+ - `EventCatalogEmbedTheme`
127
+ - `EventCatalogEmbedThemeProps`
128
+ - `EventCatalogFlowEntityPageProps`
129
+ - `EventCatalogSystemContextMapEntityPageProps`
@@ -0,0 +1,52 @@
1
+ ---
2
+ sidebar_position: 9
3
+ sidebar_label: How embeds work
4
+ title: How EventCatalog embeds work in Backstage
5
+ description: Understand resource mapping, iframe rendering, embed mode, themes, and sizing.
6
+ keywords:
7
+ - backstage
8
+ - iframe
9
+ - architecture
10
+ ---
11
+
12
+ The Backstage plugin is a frontend integration. EventCatalog remains the source of the documentation and visualizations; the plugin selects a view and embeds it inside a Backstage entity page.
13
+
14
+ ## Resource mapping
15
+
16
+ Backstage and EventCatalog use different resource models. The plugin connects them with three annotations:
17
+
18
+ - `eventcatalog.dev/id` identifies the EventCatalog resource.
19
+ - `eventcatalog.dev/version` selects its version.
20
+ - `eventcatalog.dev/collection` identifies the resource collection, such as `services`, `domains`, or `events`.
21
+
22
+ Keeping this mapping on the Backstage entity makes the relationship portable with the entity definition. Props can override the annotations when a tab or card deliberately shows a different resource.
23
+
24
+ ## URL construction and embed mode
25
+
26
+ The plugin combines the configured `eventcatalog.URL`, the selected component, and the resolved resource mapping. It adds `embed=true` to the EventCatalog URL.
27
+
28
+ Embed mode removes EventCatalog navigation that would duplicate or cover Backstage navigation. Interactive content such as graph controls, filters, schema tabs, and flow exploration remains available inside the iframe.
29
+
30
+ Specialized views use their native EventCatalog routes:
31
+
32
+ - Architecture Graph: `/visualiser/graph`, with `focus` and `depth` query parameters
33
+ - System Context Map overview: `/visualiser/system-context-map`
34
+ - one system's context: `/visualiser/systems/{id}/{version}/context`
35
+ - flow: `/visualiser/flows/{id}/{version}`
36
+ - schema explorer: `/schemas/explorer`
37
+
38
+ ## Theme selection
39
+
40
+ Passing `theme="light"` or `theme="dark"` adds a theme request to the embed URL. EventCatalog applies it before the embedded page paints, avoiding a flash of the wrong theme. The override is local to the embed and does not replace the visitor's saved EventCatalog preference.
41
+
42
+ Without an explicit prop, the embedded page follows that saved preference. The Backstage theme is not automatically mirrored because the two applications have separate theme state.
43
+
44
+ ## Height and layout
45
+
46
+ The plugin's wrapper and iframe both use the full width and height available from their parent. This makes the same component suitable for a full route or a grid card, but the parent still determines how much space exists.
47
+
48
+ `height: 100%` only resolves when the ancestor layout has a defined height. Entity tabs typically provide that layout. Overview grid items should set an explicit height so graphs, tables, and schema panels can use the complete card area.
49
+
50
+ ## Browser access
51
+
52
+ The iframe loads EventCatalog directly in the user's browser. The configured EventCatalog URL must therefore be reachable by users of Backstage and permit embedding in your deployment environment. Backstage does not copy EventCatalog content into its own backend.
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "label": "Backstage Plugin",
3
+ "position": 8,
3
4
  "collapsible": true,
4
5
  "collapsed": true,
5
6
  "link": {
6
7
  "type": "generated-index",
7
8
  "slug": "backstage",
8
- "title": "Backstage",
9
- "description": "Backstage integration with EventCatalog"
9
+ "title": "EventCatalog for Backstage",
10
+ "description": "Embed EventCatalog documentation, diagrams, schemas, and flows in Backstage."
10
11
  }
11
- }
12
+ }
@@ -35,10 +35,10 @@ Using the EventCatalog EventBridge generator you can automate and generate your
35
35
  The EventCatalog Amazon EventBridge plugin can provide you with many features:
36
36
 
37
37
  - ⭐️ Generate domains, services, channels and messages into your catalog
38
- - ⭐️ [Automatically version your changes in EventCatalog in sync with your registry versions](#automatic-versioning)
39
- - ⭐️ [Allow you to write and persist custom markdown between changes](#persist-markdown)
40
- - ⭐️ [Display your JSONDraft and OpenAPI schemas for each event in EventCatalog](#downloading-schemas)
41
- - ⭐️ [Filter events to match to your services](#using-filters-to-map-events-to-your-services)
38
+ - ⭐️ [Automatically version your changes in EventCatalog in sync with your registry versions](/docs/plugins/eventbridge/features#automatic-versioning)
39
+ - ⭐️ [Allow you to write and persist custom markdown between changes](/docs/plugins/eventbridge/features#persist-markdown)
40
+ - ⭐️ [Display your JSONDraft and OpenAPI schemas for each event in EventCatalog](/docs/plugins/eventbridge/features#downloading-schemas)
41
+ - ⭐️ [Filter events to match to your services](/docs/plugins/eventbridge/features#using-filters-to-map-events-to-your-services)
42
42
  - ⭐️ Visualize your architecture
43
43
  - ⭐️ Download schemas and code bindings
44
44
  - ⭐️ and more....
@@ -49,7 +49,7 @@ The EventCatalog Amazon EventBridge plugin can provide you with many features:
49
49
 
50
50
  EventCatalog supports [generators](/docs/plugins/generators). These are scripts or plugins that can be run to integrate with any external API, system or specification files. EventCatalog also provides an [SDK](/docs/sdk) to give developers easier access to their catalogs through custom scripts or generators.
51
51
 
52
- The EventCatalog EventBridge plugin let's you map your events into domains and services. You can use [custom filters (prefix, suffix, detailType and source)](#using-filters-to-map-events-to-your-services) to map which events you want your service to produce and consume.
52
+ The EventCatalog EventBridge plugin let's you map your events into domains and services. You can use [custom filters (prefix, suffix, detailType and source)](/docs/plugins/eventbridge/features#using-filters-to-map-events-to-your-services) to map which events you want your service to produce and consume.
53
53
 
54
54
  You can also use the EventCatalog plugin to map ALL events from your registry into your system and not map them into services if you wish to have a direct import.
55
55
 
@@ -198,9 +198,9 @@ List of services to add and what events they publish (sends) and consume (receiv
198
198
  | ------------- | -------- | ----------------------------------------------------------------------------- |
199
199
  | id | required | Id of the service, this will also be used as the folder name of your service. |
200
200
  | version | required | The version of the service |
201
- | sends | optional | The events the service sends (publishes). You can use [EventCatalog filters](/docs/plugins/eventbridge/intro#using-filters-to-map-events-to-your-services) to match your events. |
201
+ | sends | optional | The events the service sends (publishes). You can use [EventCatalog filters](/docs/plugins/eventbridge/features#using-filters-to-map-events-to-your-services) to match your events. |
202
202
  | sends.eventBusName | optional | The name of the EventBus for the matched events. This will be displayed as an EventCatalog Channel. |
203
- | receives | optional | The events the service receives (consumes). You can use [EventCatalog filters](/docs/plugins/eventbridge/intro#using-filters-to-map-events-to-your-services) to match your events. |
203
+ | receives | optional | The events the service receives (consumes). You can use [EventCatalog filters](/docs/plugins/eventbridge/features#using-filters-to-map-events-to-your-services) to match your events. |
204
204
  | receives.eventBusName | optional | The name of the EventBus for the matched events. This will be displayed as an EventCatalog Channel. |
205
205
  | writesTo | optional | Array of [data stores](/docs/development/guides/resources/data/introduction) ids that the service writes to. (Added in v3.2.2) |
206
206
  | readsFrom | optional | Array of [data stores](/docs/development/guides/resources/data/introduction) ids that the service reads from. (Added in v3.2.2) |
@@ -333,7 +333,7 @@ AWS credentials to use for your plugin.
333
333
  ];
334
334
  ```
335
335
 
336
- If you are using credentials you will want to create a user with limited permissions. [See the documentation to get started](/docs/plugins/eventbridge/intro#aws-configuration).
336
+ If you are using credentials you will want to create a user with limited permissions. [See the documentation to get started](/docs/plugins/eventbridge/api#credentials).
337
337
 
338
338
  ### `domain` {#domain}
339
339
 
@@ -29,8 +29,8 @@ The EventCatalog GraphQL plugin can provide you with many features:
29
29
  - ⭐️ [Map queries, mutations and subscriptions from your GraphQL schema](/docs/plugins/graphql/features#mapping-operations-as-queries-mutations-or-subscriptions)
30
30
  - ⭐️ [Assign owners (your teams) to your services and messages all generated by your GraphQL schemas](/docs/plugins/graphql/features#assign-owners-to-your-domains-services-and-messages)
31
31
  - ⭐️ [Add semantic meaning to your GraphQL schemas, persist this meaning between versions](/docs/plugins/graphql/features#persist-markdown)
32
- - ⭐️ [Automatically version your changes in EventCatalog in sync with your GraphQL schema versions](#automatic-versioning)
33
- - ⭐️ [Display your GraphQL schemas and operations in the catalog](#displaying-schemas)
32
+ - ⭐️ [Automatically version your changes in EventCatalog in sync with your GraphQL schema versions](/docs/plugins/graphql/features#automatic-versioning)
33
+ - ⭐️ [Display your GraphQL schemas and operations in the catalog](/docs/plugins/graphql/features#displaying-schemas)
34
34
  - ⭐️ Ability to download your schemas and GraphQL files (also versioned)
35
35
  - ⭐️ Ability to draft services and operations in EventCatalog from your GraphQL schemas
36
36
  - ⭐️ and more....
@@ -35,7 +35,7 @@ Each service in the `services` array requires the following properties:
35
35
  | `owners` | string[] | No | Owners of the service. You can assign EventCatalog users or teams to services. Setting owners on the service will also set the owners of the messages in the GraphQL schema. If owners are already set on any resource, those owners are persisted. |
36
36
  | `name` | string | No | Display name for the service. If not provided, the `id` will be used. |
37
37
  | `summary` | string | No | Short summary of the service. |
38
- | `generateMarkdown` | function | - | Function to override the default markdown generation for the service. See [Markdown templates](#markdown-templates) for more information. |
38
+ | `generateMarkdown` | function | - | Function to override the default markdown generation for the service. |
39
39
  | `writesTo` | array[\{id: string, version?: string\}] | No | Array of [data stores](/docs/development/guides/resources/data/introduction) id and version (optional) that the service writes to. (Added in v0.4.4) |
40
40
  | `readsFrom` | array[\{id: string, version?: string\}] | No | Array of [data stores](/docs/development/guides/resources/data/introduction) id and version (optional) that the service reads from. (Added in v0.4.0) |
41
41
 
@@ -49,7 +49,7 @@ Each service in the `services` array requires the following properties:
49
49
  | `domain.version` | string | - | Domain version |
50
50
  | `domain.owners` | string[] | - | Owners of the domain. If owners are already set on the domain, those owners are persisted. |
51
51
  | `domain.markdown` | string | - | Custom markdown content for the domain. |
52
- | `messages.generateMarkdown` | function | - | Function to override the default markdown generation for the message. See [Markdown templates](#markdown-templates) for more information. |
52
+ | `messages.generateMarkdown` | function | - | Function to override the default markdown generation for the message. |
53
53
  | `writeFilesToRoot` | boolean | `false` | Write GraphQL messages to root instead of service folder. By default all domains, services and messages will be grouped in the folder directory structure. |
54
54
 
55
55
  ## Example Configuration
@@ -18,7 +18,7 @@ Using the EventCatalog Hookdeck plugin you can extract information from Hookdeck
18
18
  The Hookdeck plugin can provide you with the following features:
19
19
 
20
20
  - ⭐️ [Generate EventCatalog Services](#generate-services) from Hookdeck Sources and Destinations
21
- - ⭐️ [Auto-generate EventCatalog Messages](#generate-messages) from Hookdeck Requests and Events
21
+ - ⭐️ [Auto-generate EventCatalog Messages](#generate-message) from Hookdeck Requests and Events
22
22
  - ⭐️ [Auto-generate EventCatalog Message Schemas](#generate-schemas) from Hookdeck Requests and Events
23
23
  - ⭐️ [Provide insight into Hookdeck Filters](#filtered-messages) by indicating Requests that are received by an EventCatalog Service but are not connected to destination Service.
24
24
 
@@ -34,7 +34,7 @@ The EventCatalog OpenAPI plugin can provide you with many features:
34
34
  - ⭐️ [Automate your EventCatalog and fetch OpenAPI files by URL](/docs/plugins/openapi/features#fetch-openapi-files-by-url)
35
35
  - ⭐️ [Map commands, queries and events from your OpenAPI file using custom extensions](/docs/plugins/openapi/features#mapping-messages-as-commands-queries-or-events)
36
36
  - ⭐️ [Add semantic meaning to your OpenAPI files, persist this meaning between versions](/docs/plugins/openapi/features#persist-markdown)
37
- - ⭐️ [Automatically version your changes in EventCatalog in sync with your OpenAPI versions](#automatic-versioning)
37
+ - ⭐️ [Automatically version your changes in EventCatalog in sync with your OpenAPI versions](/docs/plugins/openapi/features#automatic-versioning)
38
38
  - ⭐️ [Render and display your OpenAPI specification in EventCatalog](/docs/plugins/openapi/intro)
39
39
  - ⭐️ Display your endpoints and parameters in the catalog
40
40
  - ⭐️ Ability to download your schemas and OpenAPI files (also versioned)
@@ -144,7 +144,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
144
144
  var import_picocolors = __toESM(require("picocolors"), 1);
145
145
 
146
146
  // package.json
147
- var version = "4.10.13";
147
+ var version = "4.10.15";
148
148
 
149
149
  // src/constants.ts
150
150
  var VERSION = version;
@@ -4,8 +4,8 @@ import {
4
4
  import "./chunk-CA4U2JP7.js";
5
5
  import {
6
6
  log_build_default
7
- } from "./chunk-34RMFKFB.js";
8
- import "./chunk-IIECZFXN.js";
7
+ } from "./chunk-Q2ATWE7N.js";
8
+ import "./chunk-A4JRWRCV.js";
9
9
  import "./chunk-ZAZHAVKB.js";
10
10
  import {
11
11
  FederationConflictError,
@@ -31,10 +31,10 @@ import {
31
31
  } from "./chunk-B7HCX5HM.js";
32
32
  import {
33
33
  generate
34
- } from "./chunk-SSSN5FXC.js";
34
+ } from "./chunk-7LWOCX4R.js";
35
35
  import {
36
36
  logger
37
- } from "./chunk-JHUICVBT.js";
37
+ } from "./chunk-HBVTU6ZP.js";
38
38
  import {
39
39
  resolve_catalog_dependencies_default
40
40
  } from "./chunk-LHR4G2UO.js";
@@ -54,7 +54,7 @@ import {
54
54
  import "./chunk-W5JQON7Z.js";
55
55
  import {
56
56
  VERSION
57
- } from "./chunk-PADMH2RJ.js";
57
+ } from "./chunk-I6HUOX4R.js";
58
58
  import {
59
59
  linkCoreNodeModules,
60
60
  resolveInstalledCoreNodeModules
package/dist/generate.cjs CHANGED
@@ -108,7 +108,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
108
108
  var import_picocolors = __toESM(require("picocolors"), 1);
109
109
 
110
110
  // package.json
111
- var version = "4.10.13";
111
+ var version = "4.10.15";
112
112
 
113
113
  // src/constants.ts
114
114
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-SSSN5FXC.js";
4
- import "./chunk-JHUICVBT.js";
5
- import "./chunk-PADMH2RJ.js";
3
+ } from "./chunk-7LWOCX4R.js";
4
+ import "./chunk-HBVTU6ZP.js";
5
+ import "./chunk-I6HUOX4R.js";
6
6
  import "./chunk-6QENHZZP.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "4.10.13";
39
+ var version = "4.10.15";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-JHUICVBT.js";
4
- import "../chunk-PADMH2RJ.js";
3
+ } from "../chunk-HBVTU6ZP.js";
4
+ import "../chunk-I6HUOX4R.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -138,28 +138,30 @@ const AvroField = ({ field, level, expand, showRequired }: AvroFieldProps) => {
138
138
 
139
139
  {/* Field details */}
140
140
  <div className="flex-grow min-w-0">
141
- <div className="flex flex-wrap items-baseline gap-x-1.5 gap-y-1">
142
- <span className="avro-field-name font-semibold text-[rgb(var(--ec-page-text))] text-sm">{field.name}</span>
143
- <span className="text-[rgb(var(--ec-accent))] font-mono text-xs">{formatAvroType(field.type)}</span>
144
- {showRequired && isRequired && (
145
- <span className="text-red-600 dark:text-red-400 text-xs ml-auto flex-shrink-0">required</span>
141
+ <div className="-mx-1 rounded px-1 transition-colors hover:bg-[rgb(var(--ec-content-hover))]">
142
+ <div className="flex flex-wrap items-baseline gap-x-1.5 gap-y-1">
143
+ <span className="avro-field-name font-semibold text-[rgb(var(--ec-page-text))] text-sm">{field.name}</span>
144
+ <span className="text-[rgb(var(--ec-accent))] font-mono text-xs">{formatAvroType(field.type)}</span>
145
+ {showRequired && isRequired && (
146
+ <span className="text-red-600 dark:text-red-400 text-xs ml-auto flex-shrink-0">required</span>
147
+ )}
148
+ </div>
149
+
150
+ {field.doc && <p className="text-[rgb(var(--ec-page-text-muted))] text-xs mt-1">{field.doc}</p>}
151
+
152
+ {/* Show enum values if present */}
153
+ {enumType && enumType.symbols && (
154
+ <div className="text-xs text-[rgb(var(--ec-page-text-muted))] mt-1">
155
+ Values:{' '}
156
+ {enumType.symbols.map((s: string) => (
157
+ <code key={s} className="bg-[rgb(var(--ec-content-hover))] px-1 rounded mx-0.5 text-[rgb(var(--ec-page-text))]">
158
+ {s}
159
+ </code>
160
+ ))}
161
+ </div>
146
162
  )}
147
163
  </div>
148
164
 
149
- {field.doc && <p className="text-[rgb(var(--ec-page-text-muted))] text-xs mt-1">{field.doc}</p>}
150
-
151
- {/* Show enum values if present */}
152
- {enumType && enumType.symbols && (
153
- <div className="text-xs text-[rgb(var(--ec-page-text-muted))] mt-1">
154
- Values:{' '}
155
- {enumType.symbols.map((s: string) => (
156
- <code key={s} className="bg-[rgb(var(--ec-content-hover))] px-1 rounded mx-0.5 text-[rgb(var(--ec-page-text))]">
157
- {s}
158
- </code>
159
- ))}
160
- </div>
161
- )}
162
-
163
165
  {/* Nested fields for record types */}
164
166
  {hasNested && recordType && (
165
167
  <div className={`avro-nested-content mt-2 ${!isExpanded ? 'hidden' : ''}`}>