@eventcatalog/core 3.34.0 → 3.35.1

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 (431) 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-K5AM6PPU.js → chunk-4SNN54V4.js} +1 -1
  6. package/dist/{chunk-623CFR4T.js → chunk-B7C4DHFE.js} +1 -1
  7. package/dist/{chunk-BJWMR3ZH.js → chunk-JEQZWJWP.js} +1 -1
  8. package/dist/{chunk-PP7EDIPX.js → chunk-R4DR3YAH.js} +1 -1
  9. package/dist/{chunk-IO6EMN5C.js → chunk-VJ357XOI.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/docs/api/01-overview.md +74 -0
  13. package/dist/docs/api/02-config.md +937 -0
  14. package/dist/docs/api/03-domain-api.md +394 -0
  15. package/dist/docs/api/04-service-api.md +368 -0
  16. package/dist/docs/api/05-command-api.md +319 -0
  17. package/dist/docs/api/06-event-api.md +318 -0
  18. package/dist/docs/api/06-query-api.md +316 -0
  19. package/dist/docs/api/08-channel-api.md +317 -0
  20. package/dist/docs/api/08-code-blocks.md +53 -0
  21. package/dist/docs/api/09-flow-api.md +362 -0
  22. package/dist/docs/api/10-entity-api.md +285 -0
  23. package/dist/docs/api/11-data-api.md +268 -0
  24. package/dist/docs/api/12-data-product-api.md +416 -0
  25. package/dist/docs/api/_category_.json +12 -0
  26. package/dist/docs/cli/channels.md +180 -0
  27. package/dist/docs/cli/commands.md +183 -0
  28. package/dist/docs/cli/custom-docs.md +78 -0
  29. package/dist/docs/cli/data-products.md +177 -0
  30. package/dist/docs/cli/data-stores.md +166 -0
  31. package/dist/docs/cli/diagrams.md +147 -0
  32. package/dist/docs/cli/domains.md +280 -0
  33. package/dist/docs/cli/entities.md +138 -0
  34. package/dist/docs/cli/events.md +186 -0
  35. package/dist/docs/cli/export.md +27 -0
  36. package/dist/docs/cli/governance.md +24 -0
  37. package/dist/docs/cli/import.md +26 -0
  38. package/dist/docs/cli/index.md +121 -0
  39. package/dist/docs/cli/messages.md +69 -0
  40. package/dist/docs/cli/queries.md +183 -0
  41. package/dist/docs/cli/services.md +266 -0
  42. package/dist/docs/cli/snapshots.md +44 -0
  43. package/dist/docs/cli/teams.md +75 -0
  44. package/dist/docs/cli/users.md +75 -0
  45. package/dist/docs/cli/utilities.md +43 -0
  46. package/dist/docs/contributing/01-overview.md +186 -0
  47. package/dist/docs/contributing/_category_.json +12 -0
  48. package/dist/docs/development/00-why-eventcatalog.md +87 -0
  49. package/dist/docs/development/01-fundamentals.md +34 -0
  50. package/dist/docs/development/01-getting-started/_category_.json +12 -0
  51. package/dist/docs/development/01-getting-started/configuration-overview.md +124 -0
  52. package/dist/docs/development/01-getting-started/develop-and-build.md +71 -0
  53. package/dist/docs/development/01-getting-started/installation.md +103 -0
  54. package/dist/docs/development/01-getting-started/project-structure.md +269 -0
  55. package/dist/docs/development/_category_.json +12 -0
  56. package/dist/docs/development/_getting-started.mdx +15 -0
  57. package/dist/docs/development/agent-resources/_category_.json +6 -0
  58. package/dist/docs/development/agent-resources/eventcatalog-skills.md +17 -0
  59. package/dist/docs/development/agent-resources/llms-full.md +17 -0
  60. package/dist/docs/development/agent-resources/llms.md +17 -0
  61. package/dist/docs/development/ask-your-architecture/01-intro.md +89 -0
  62. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +23 -0
  63. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +72 -0
  64. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +385 -0
  65. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +11 -0
  66. package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +12 -0
  67. package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +216 -0
  68. package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +47 -0
  69. package/dist/docs/development/ask-your-architecture/04-skills/01-introduction.md +40 -0
  70. package/dist/docs/development/ask-your-architecture/04-skills/02-installation.md +60 -0
  71. package/dist/docs/development/ask-your-architecture/04-skills/_category_.json +11 -0
  72. package/dist/docs/development/ask-your-architecture/05-slack-integration/01-introduction.md +63 -0
  73. package/dist/docs/development/ask-your-architecture/05-slack-integration/02-slack-app-setup.md +154 -0
  74. package/dist/docs/development/ask-your-architecture/05-slack-integration/03-installation.md +169 -0
  75. package/dist/docs/development/ask-your-architecture/05-slack-integration/04-deployment.md +236 -0
  76. package/dist/docs/development/ask-your-architecture/05-slack-integration/05-usage.md +140 -0
  77. package/dist/docs/development/ask-your-architecture/05-slack-integration/06-troubleshooting.md +268 -0
  78. package/dist/docs/development/ask-your-architecture/05-slack-integration/_category_.json +12 -0
  79. package/dist/docs/development/ask-your-architecture/_category_.json +12 -0
  80. package/dist/docs/development/authentication/01-introduction.md +78 -0
  81. package/dist/docs/development/authentication/02-enabling-authentication.md +152 -0
  82. package/dist/docs/development/authentication/07-rbac-middleware.md +269 -0
  83. package/dist/docs/development/authentication/_category_.json +11 -0
  84. package/dist/docs/development/authentication/providers/03-setting-up-github.md +83 -0
  85. package/dist/docs/development/authentication/providers/03a-setting-up-google.md +92 -0
  86. package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +100 -0
  87. package/dist/docs/development/authentication/providers/05-setting-up-okta.md +105 -0
  88. package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +106 -0
  89. package/dist/docs/development/authentication/providers/_category_.json +11 -0
  90. package/dist/docs/development/bring-your-own-documentation/01-introduction.md +48 -0
  91. package/dist/docs/development/bring-your-own-documentation/_category_.json +12 -0
  92. package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +60 -0
  93. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +207 -0
  94. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +46 -0
  95. package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +45 -0
  96. package/dist/docs/development/bring-your-own-documentation/custom-pages/_category_.json +11 -0
  97. package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +34 -0
  98. package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +143 -0
  99. package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +68 -0
  100. package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +45 -0
  101. package/dist/docs/development/bring-your-own-documentation/resource-docs/_category_.json +11 -0
  102. package/dist/docs/development/components/04-snippets.md +134 -0
  103. package/dist/docs/development/components/05-using-components.md +67 -0
  104. package/dist/docs/development/components/07-resource-references.md +136 -0
  105. package/dist/docs/development/components/_category_.json +12 -0
  106. package/dist/docs/development/components/components/01-accordian.md +41 -0
  107. package/dist/docs/development/components/components/02-accordian-group.md +57 -0
  108. package/dist/docs/development/components/components/03-admonitions.md +43 -0
  109. package/dist/docs/development/components/components/04-attachments.md +56 -0
  110. package/dist/docs/development/components/components/05-channel-information.md +29 -0
  111. package/dist/docs/development/components/components/06-design.md +66 -0
  112. package/dist/docs/development/components/components/07-entitymap.md +71 -0
  113. package/dist/docs/development/components/components/08-flow.md +46 -0
  114. package/dist/docs/development/components/components/09-link.md +32 -0
  115. package/dist/docs/development/components/components/10-mermaid-file-loader.md +63 -0
  116. package/dist/docs/development/components/components/11-message-table.md +43 -0
  117. package/dist/docs/development/components/components/12-nodegraph.md +167 -0
  118. package/dist/docs/development/components/components/13-openapi.md +55 -0
  119. package/dist/docs/development/components/components/14-prompt.md +69 -0
  120. package/dist/docs/development/components/components/15-remote-schema.md +174 -0
  121. package/dist/docs/development/components/components/16-resource-group-table.md +86 -0
  122. package/dist/docs/development/components/components/17-resource-link.md +57 -0
  123. package/dist/docs/development/components/components/18-schema.md +44 -0
  124. package/dist/docs/development/components/components/19-schema-viewer.md +69 -0
  125. package/dist/docs/development/components/components/20-steps.md +83 -0
  126. package/dist/docs/development/components/components/21-tabs.md +55 -0
  127. package/dist/docs/development/components/components/22-tiles.md +53 -0
  128. package/dist/docs/development/components/components/23-visibility.md +61 -0
  129. package/dist/docs/development/components/components/_category_.json +12 -0
  130. package/dist/docs/development/components/diagram-syntax/01-mermaid.md +218 -0
  131. package/dist/docs/development/components/diagram-syntax/02-plantuml.md +140 -0
  132. package/dist/docs/development/components/diagram-syntax/03-structurizr.md +24 -0
  133. package/dist/docs/development/components/diagram-syntax/04-icepanel.md +75 -0
  134. package/dist/docs/development/components/diagram-syntax/_category_.json +12 -0
  135. package/dist/docs/development/components/external-diagram-embeds/01-miro.md +64 -0
  136. package/dist/docs/development/components/external-diagram-embeds/02-lucid.md +47 -0
  137. package/dist/docs/development/components/external-diagram-embeds/03-drawio.md +46 -0
  138. package/dist/docs/development/components/external-diagram-embeds/04-figjam.md +44 -0
  139. package/dist/docs/development/components/external-diagram-embeds/05-icepanel.md +68 -0
  140. package/dist/docs/development/components/external-diagram-embeds/_category_.json +12 -0
  141. package/dist/docs/development/customization/01-customize-landing-page.md +155 -0
  142. package/dist/docs/development/customization/02-themes.md +429 -0
  143. package/dist/docs/development/customization/06-customize-tables.md +194 -0
  144. package/dist/docs/development/customization/_category_.json +12 -0
  145. package/dist/docs/development/customization/custom-components/00-what-is-mdx.md +73 -0
  146. package/dist/docs/development/customization/custom-components/01-introduction.md +28 -0
  147. package/dist/docs/development/customization/custom-components/02-adding-components.md +145 -0
  148. package/dist/docs/development/customization/custom-components/03-component-styling.md +27 -0
  149. package/dist/docs/development/customization/custom-components/04-javascript-components.md +32 -0
  150. package/dist/docs/development/customization/custom-components/_category_.json +11 -0
  151. package/dist/docs/development/customization/customize-sidebars/00-application-sidebar.md +45 -0
  152. package/dist/docs/development/customization/customize-sidebars/01-documentation-sidebar.md +187 -0
  153. package/dist/docs/development/customization/customize-sidebars/_category_.json +11 -0
  154. package/dist/docs/development/customization/customize-visualizer/00-visualizer-nodes.md +50 -0
  155. package/dist/docs/development/customization/customize-visualizer/_category_.json +11 -0
  156. package/dist/docs/development/deployment/_category_.json +12 -0
  157. package/dist/docs/development/deployment/build-and-deploy.md +71 -0
  158. package/dist/docs/development/deployment/build-ssr-mode.md +50 -0
  159. package/dist/docs/development/deployment/deployment-workflows.md +43 -0
  160. package/dist/docs/development/deployment/hosting-options.md +112 -0
  161. package/dist/docs/development/deployment/licenses.md +50 -0
  162. package/dist/docs/development/design/_category_.json +12 -0
  163. package/dist/docs/development/design/embed-designs-into-eventcatalog.md +29 -0
  164. package/dist/docs/development/design/further-reading.md +19 -0
  165. package/dist/docs/development/design/import-resources.md +27 -0
  166. package/dist/docs/development/design/intro.md +22 -0
  167. package/dist/docs/development/developer-tools/_category_.json +12 -0
  168. package/dist/docs/development/developer-tools/eventcatalog-linter.md +597 -0
  169. package/dist/docs/development/developer-tools/github-action.md +147 -0
  170. package/dist/docs/development/developer-tools/llms.txt.md +55 -0
  171. package/dist/docs/development/developer-tools/schemas.txt.md +42 -0
  172. package/dist/docs/development/governance/_category_.json +6 -0
  173. package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +62 -0
  174. package/dist/docs/development/governance/architecture-change-detection/02-configuration.md +134 -0
  175. package/dist/docs/development/governance/architecture-change-detection/03-recipes.md +309 -0
  176. package/dist/docs/development/governance/architecture-change-detection/04-webhooks.md +187 -0
  177. package/dist/docs/development/governance/architecture-change-detection/05-ci-cd.md +121 -0
  178. package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +162 -0
  179. package/dist/docs/development/governance/architecture-change-detection/_category_.json +6 -0
  180. package/dist/docs/development/guides/12-customize-your-sidebar.md +12 -0
  181. package/dist/docs/development/guides/99-adding-analytics.md +138 -0
  182. package/dist/docs/development/guides/_category_.json +11 -0
  183. package/dist/docs/development/guides/changelogs/01-introduction.md +33 -0
  184. package/dist/docs/development/guides/changelogs/02-adding-changelogs.md +94 -0
  185. package/dist/docs/development/guides/changelogs/03-automated-changelogs.md +44 -0
  186. package/dist/docs/development/guides/changelogs/_category_.json +11 -0
  187. package/dist/docs/development/guides/channels/01-introduction.md +111 -0
  188. package/dist/docs/development/guides/channels/02-adding-channels.md +198 -0
  189. package/dist/docs/development/guides/channels/04-adding-messages-to-services.md +292 -0
  190. package/dist/docs/development/guides/channels/09-configuration +39 -0
  191. package/dist/docs/development/guides/channels/_category_.json +11 -0
  192. package/dist/docs/development/guides/channels/ownership-and-components/01-owners.md +44 -0
  193. package/dist/docs/development/guides/channels/ownership-and-components/02-components.md +16 -0
  194. package/dist/docs/development/guides/channels/ownership-and-components/_category_.json +11 -0
  195. package/dist/docs/development/guides/channels/versioning-and-lifecycle/01-versioning.md +31 -0
  196. package/dist/docs/development/guides/channels/versioning-and-lifecycle/02-changelog.md +56 -0
  197. package/dist/docs/development/guides/channels/versioning-and-lifecycle/_category_.json +11 -0
  198. package/dist/docs/development/guides/data/01-introduction.md +34 -0
  199. package/dist/docs/development/guides/data/02-adding-data.md +86 -0
  200. package/dist/docs/development/guides/data/03a-adding-schemas-to-data-stores.md +73 -0
  201. package/dist/docs/development/guides/data/_category_.json +11 -0
  202. package/dist/docs/development/guides/data/ownership-and-components/01-owners.md +45 -0
  203. package/dist/docs/development/guides/data/ownership-and-components/02-components.md +17 -0
  204. package/dist/docs/development/guides/data/ownership-and-components/_category_.json +11 -0
  205. package/dist/docs/development/guides/data/versioning-and-lifecycle/01-versioning.md +32 -0
  206. package/dist/docs/development/guides/data/versioning-and-lifecycle/02-changelog.md +57 -0
  207. package/dist/docs/development/guides/data/versioning-and-lifecycle/03-deprecating.md +71 -0
  208. package/dist/docs/development/guides/data/versioning-and-lifecycle/_category_.json +11 -0
  209. package/dist/docs/development/guides/data-products/01-introduction.md +116 -0
  210. package/dist/docs/development/guides/data-products/02-adding-data-products.md +157 -0
  211. package/dist/docs/development/guides/data-products/03-inputs-and-outputs.md +128 -0
  212. package/dist/docs/development/guides/data-products/04-contracts.md +102 -0
  213. package/dist/docs/development/guides/data-products/05-versioning.md +240 -0
  214. package/dist/docs/development/guides/data-products/06-adding-to-domains.md +52 -0
  215. package/dist/docs/development/guides/data-products/_category_.json +11 -0
  216. package/dist/docs/development/guides/diagrams/01-introduction.md +78 -0
  217. package/dist/docs/development/guides/diagrams/02-creating-diagrams.md +195 -0
  218. package/dist/docs/development/guides/diagrams/03-referencing-diagrams.md +195 -0
  219. package/dist/docs/development/guides/diagrams/04-versioning-diagrams.md +204 -0
  220. package/dist/docs/development/guides/diagrams/05-comparing-diagrams.md +145 -0
  221. package/dist/docs/development/guides/diagrams/06-diagrams-with-llms.md +165 -0
  222. package/dist/docs/development/guides/diagrams/_category_.json +10 -0
  223. package/dist/docs/development/guides/domains/01-introduction.md +22 -0
  224. package/dist/docs/development/guides/domains/02-creating-domains/02-adding-domains.md +108 -0
  225. package/dist/docs/development/guides/domains/02-creating-domains/02a-subdomains.md +84 -0
  226. package/dist/docs/development/guides/domains/02-creating-domains/03-adding-services-to-domains.md +90 -0
  227. package/dist/docs/development/guides/domains/02-creating-domains/04-adding-messages-to-domains.md +107 -0
  228. package/dist/docs/development/guides/domains/02-creating-domains/05-adding-data-products-to-domains.md +105 -0
  229. package/dist/docs/development/guides/domains/02-creating-domains/_category_.json +11 -0
  230. package/dist/docs/development/guides/domains/03-ownership-and-language/01-owners.md +36 -0
  231. package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +75 -0
  232. package/dist/docs/development/guides/domains/03-ownership-and-language/_category_.json +10 -0
  233. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/01-versioning.md +40 -0
  234. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/02-changelog.md +53 -0
  235. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/_category_.json +10 -0
  236. package/dist/docs/development/guides/domains/05-entities/01-introduction.md +24 -0
  237. package/dist/docs/development/guides/domains/05-entities/02-adding-entities.md +157 -0
  238. package/dist/docs/development/guides/domains/05-entities/03-adding-entities-to-domains.md +30 -0
  239. package/dist/docs/development/guides/domains/05-entities/04-domain-entity-map.md +134 -0
  240. package/dist/docs/development/guides/domains/05-entities/_category_.json +11 -0
  241. package/dist/docs/development/guides/domains/08-domain-integration-map.md +41 -0
  242. package/dist/docs/development/guides/domains/_category_.json +11 -0
  243. package/dist/docs/development/guides/flows/01-introduction.md +36 -0
  244. package/dist/docs/development/guides/flows/02-adding-flows.md +198 -0
  245. package/dist/docs/development/guides/flows/03-flow-nodes.md +273 -0
  246. package/dist/docs/development/guides/flows/04-adding-flows-to-services.md +42 -0
  247. package/dist/docs/development/guides/flows/05-adding-flows-to-domains.md +43 -0
  248. package/dist/docs/development/guides/flows/06-versioning.md +27 -0
  249. package/dist/docs/development/guides/flows/07-create-flow-with-ai.md +171 -0
  250. package/dist/docs/development/guides/flows/_category_.json +11 -0
  251. package/dist/docs/development/guides/messages/01-overview.md +57 -0
  252. package/dist/docs/development/guides/messages/_category_.json +11 -0
  253. package/dist/docs/development/guides/messages/commands/01-introduction.md +26 -0
  254. package/dist/docs/development/guides/messages/commands/02-adding-commands.md +131 -0
  255. package/dist/docs/development/guides/messages/commands/_category_.json +11 -0
  256. package/dist/docs/development/guides/messages/common/01-map-to-producers-and-consumers.md +37 -0
  257. package/dist/docs/development/guides/messages/common/02-adding-schemas.md +58 -0
  258. package/dist/docs/development/guides/messages/common/02-deprecating.md +71 -0
  259. package/dist/docs/development/guides/messages/common/02-draft-messages.md +63 -0
  260. package/dist/docs/development/guides/messages/common/02-examples.md +99 -0
  261. package/dist/docs/development/guides/messages/common/03-owners.md +40 -0
  262. package/dist/docs/development/guides/messages/common/04-versioning.md +27 -0
  263. package/dist/docs/development/guides/messages/common/05-changelog.md +73 -0
  264. package/dist/docs/development/guides/messages/common/07-components.md +12 -0
  265. package/dist/docs/development/guides/messages/common/08-shared-messages-across-boundaries.md +70 -0
  266. package/dist/docs/development/guides/messages/common/09-grouping-messages.md +98 -0
  267. package/dist/docs/development/guides/messages/common/_category_.json +11 -0
  268. package/dist/docs/development/guides/messages/events/01-introduction.md +25 -0
  269. package/dist/docs/development/guides/messages/events/02-adding-events.md +130 -0
  270. package/dist/docs/development/guides/messages/events/_category_.json +11 -0
  271. package/dist/docs/development/guides/messages/queries/01-introduction.md +25 -0
  272. package/dist/docs/development/guides/messages/queries/02-adding-queries.md +130 -0
  273. package/dist/docs/development/guides/messages/queries/_category_.json +11 -0
  274. package/dist/docs/development/guides/owners/_category_.json +11 -0
  275. package/dist/docs/development/guides/owners/teams/01-introduction.md +21 -0
  276. package/dist/docs/development/guides/owners/teams/02-adding-teams.md +73 -0
  277. package/dist/docs/development/guides/owners/teams/_category_.json +11 -0
  278. package/dist/docs/development/guides/owners/users/01-introduction.md +20 -0
  279. package/dist/docs/development/guides/owners/users/02-adding-users.md +70 -0
  280. package/dist/docs/development/guides/owners/users/_category_.json +11 -0
  281. package/dist/docs/development/guides/schemas/01-introduction.md +64 -0
  282. package/dist/docs/development/guides/schemas/02-schema-explorer.md +74 -0
  283. package/dist/docs/development/guides/schemas/03-schema-api.md +59 -0
  284. package/dist/docs/development/guides/schemas/04-schema-mcp.md +22 -0
  285. package/dist/docs/development/guides/schemas/05-field-usage.md +120 -0
  286. package/dist/docs/development/guides/schemas/06-fields-explorer.md +120 -0
  287. package/dist/docs/development/guides/schemas/_category_.json +11 -0
  288. package/dist/docs/development/guides/services/01-introduction.md +33 -0
  289. package/dist/docs/development/guides/services/02-adding-services.md +113 -0
  290. package/dist/docs/development/guides/services/03-creating-external-systems.md +71 -0
  291. package/dist/docs/development/guides/services/_category_.json +11 -0
  292. package/dist/docs/development/guides/services/adding-to-services/01-messages.md +229 -0
  293. package/dist/docs/development/guides/services/adding-to-services/02-datastores.md +77 -0
  294. package/dist/docs/development/guides/services/adding-to-services/03-entities.md +47 -0
  295. package/dist/docs/development/guides/services/adding-to-services/04-openapi.md +97 -0
  296. package/dist/docs/development/guides/services/adding-to-services/05-asyncapi.md +97 -0
  297. package/dist/docs/development/guides/services/adding-to-services/06-graphql.md +96 -0
  298. package/dist/docs/development/guides/services/adding-to-services/_category_.json +10 -0
  299. package/dist/docs/development/guides/services/ownership-and-components/01-owners.md +41 -0
  300. package/dist/docs/development/guides/services/ownership-and-components/02-components.md +13 -0
  301. package/dist/docs/development/guides/services/ownership-and-components/_category_.json +11 -0
  302. package/dist/docs/development/guides/services/versioning-and-lifecycle/01-versioning.md +27 -0
  303. package/dist/docs/development/guides/services/versioning-and-lifecycle/02-changelog.md +52 -0
  304. package/dist/docs/development/guides/services/versioning-and-lifecycle/03-deprecating.md +70 -0
  305. package/dist/docs/development/guides/services/versioning-and-lifecycle/_category_.json +11 -0
  306. package/dist/docs/development/upgrading/_category_.json +12 -0
  307. package/dist/docs/development/upgrading/upgrading.md +142 -0
  308. package/dist/docs/development/upgrading/v2.md +69 -0
  309. package/dist/docs/development/upgrading/v3.md +277 -0
  310. package/dist/docs/miro/_category_.json +12 -0
  311. package/dist/docs/miro/contributing/01-getting-involved.md +53 -0
  312. package/dist/docs/miro/contributing/_category_.json +11 -0
  313. package/dist/docs/miro/getting-started/01-overview.md +63 -0
  314. package/dist/docs/miro/getting-started/02-installation.md +37 -0
  315. package/dist/docs/miro/getting-started/03-connecting-to-eventcatalog.md +59 -0
  316. package/dist/docs/miro/getting-started/_category_.json +11 -0
  317. package/dist/docs/miro/guides/01-adding-resources-to-board.md +90 -0
  318. package/dist/docs/miro/guides/02-creating-new-resources.md +61 -0
  319. package/dist/docs/miro/guides/03-editing-resources.md +50 -0
  320. package/dist/docs/miro/guides/04-connected-resources.md +54 -0
  321. package/dist/docs/miro/guides/05-services-and-dependencies.md +54 -0
  322. package/dist/docs/miro/guides/06-navigating-the-board.md +44 -0
  323. package/dist/docs/miro/guides/07-exporting-to-eventcatalog.md +75 -0
  324. package/dist/docs/miro/guides/_category_.json +11 -0
  325. package/dist/docs/miro/specifications/01-asyncapi.md +86 -0
  326. package/dist/docs/miro/specifications/02-openapi.md +86 -0
  327. package/dist/docs/miro/specifications/03-schema-registries.md +88 -0
  328. package/dist/docs/miro/specifications/_category_.json +11 -0
  329. package/dist/docs/miro/using-ai/01-overview.md +105 -0
  330. package/dist/docs/miro/using-ai/_category_.json +11 -0
  331. package/dist/docs/plugins/01-intro.md +49 -0
  332. package/dist/docs/plugins/02-generators.md +76 -0
  333. package/dist/docs/plugins/03-all-plugins.md +26 -0
  334. package/dist/docs/plugins/_category_.json +12 -0
  335. package/dist/docs/plugins/amazon-apigateway/00-intro.md +75 -0
  336. package/dist/docs/plugins/amazon-apigateway/01-installation.md +198 -0
  337. package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +136 -0
  338. package/dist/docs/plugins/amazon-apigateway/03-features.md +71 -0
  339. package/dist/docs/plugins/amazon-apigateway/04-examples.md +15 -0
  340. package/dist/docs/plugins/amazon-apigateway/_category_.json +11 -0
  341. package/dist/docs/plugins/apicurio/00-intro.md +102 -0
  342. package/dist/docs/plugins/apicurio/01-installation.md +165 -0
  343. package/dist/docs/plugins/apicurio/02-plugin-configuration.md +682 -0
  344. package/dist/docs/plugins/apicurio/03-features.md +221 -0
  345. package/dist/docs/plugins/apicurio/04-examples.md +20 -0
  346. package/dist/docs/plugins/apicurio/_category_.json +12 -0
  347. package/dist/docs/plugins/asyncapi/00-intro.md +81 -0
  348. package/dist/docs/plugins/asyncapi/01-installation.md +155 -0
  349. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +312 -0
  350. package/dist/docs/plugins/asyncapi/03-features.md +698 -0
  351. package/dist/docs/plugins/asyncapi/03a-workflows.md +153 -0
  352. package/dist/docs/plugins/asyncapi/04-examples.md +23 -0
  353. package/dist/docs/plugins/asyncapi/04-using-reference-objects.md +45 -0
  354. package/dist/docs/plugins/asyncapi/_category_.json +12 -0
  355. package/dist/docs/plugins/aws-glue-registry/00-intro.md +104 -0
  356. package/dist/docs/plugins/aws-glue-registry/00a-installation.md +305 -0
  357. package/dist/docs/plugins/aws-glue-registry/01-features.md +287 -0
  358. package/dist/docs/plugins/aws-glue-registry/02-examples.md +368 -0
  359. package/dist/docs/plugins/aws-glue-registry/03-api.md +282 -0
  360. package/dist/docs/plugins/aws-glue-registry/_category_.json +11 -0
  361. package/dist/docs/plugins/azure-schema-registry/00-intro.md +92 -0
  362. package/dist/docs/plugins/azure-schema-registry/01-installation.md +409 -0
  363. package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +375 -0
  364. package/dist/docs/plugins/azure-schema-registry/03-features.md +347 -0
  365. package/dist/docs/plugins/azure-schema-registry/04-examples.md +378 -0
  366. package/dist/docs/plugins/azure-schema-registry/_category_.json +12 -0
  367. package/dist/docs/plugins/backstage/00-intro.md +67 -0
  368. package/dist/docs/plugins/backstage/01-installation.md +250 -0
  369. package/dist/docs/plugins/backstage/02-api.md +51 -0
  370. package/dist/docs/plugins/backstage/03-examples.md +12 -0
  371. package/dist/docs/plugins/backstage/_category_.json +11 -0
  372. package/dist/docs/plugins/confluent-schema-registry/00-intro.md +90 -0
  373. package/dist/docs/plugins/confluent-schema-registry/01-installation.md +223 -0
  374. package/dist/docs/plugins/confluent-schema-registry/02-plugin-configuration.md +473 -0
  375. package/dist/docs/plugins/confluent-schema-registry/03-features.md +43 -0
  376. package/dist/docs/plugins/confluent-schema-registry/04-examples.md +19 -0
  377. package/dist/docs/plugins/confluent-schema-registry/_category_.json +12 -0
  378. package/dist/docs/plugins/eventbridge/00-intro.md +55 -0
  379. package/dist/docs/plugins/eventbridge/00a-installation.md +317 -0
  380. package/dist/docs/plugins/eventbridge/01-features.md +225 -0
  381. package/dist/docs/plugins/eventbridge/02-examples.md +17 -0
  382. package/dist/docs/plugins/eventbridge/03-api.md +441 -0
  383. package/dist/docs/plugins/eventbridge/03a-workflows.md +133 -0
  384. package/dist/docs/plugins/eventbridge/_category_.json +11 -0
  385. package/dist/docs/plugins/eventcatalog-federation/00-introduction.md +69 -0
  386. package/dist/docs/plugins/eventcatalog-federation/01-installation.md +182 -0
  387. package/dist/docs/plugins/eventcatalog-federation/02-plugin-configuration.md +208 -0
  388. package/dist/docs/plugins/eventcatalog-federation/03-examples.md +15 -0
  389. package/dist/docs/plugins/eventcatalog-federation/04-configuration.md +193 -0
  390. package/dist/docs/plugins/eventcatalog-federation/05-setup-team-catalog.md +97 -0
  391. package/dist/docs/plugins/eventcatalog-federation/_category_.json +11 -0
  392. package/dist/docs/plugins/github/00-intro.md +93 -0
  393. package/dist/docs/plugins/github/01-installation.md +293 -0
  394. package/dist/docs/plugins/github/02-plugin-configuration.md +253 -0
  395. package/dist/docs/plugins/github/03-features.md +42 -0
  396. package/dist/docs/plugins/github/04-examples.md +17 -0
  397. package/dist/docs/plugins/github/_category_.json +12 -0
  398. package/dist/docs/plugins/graphql/00-intro.md +74 -0
  399. package/dist/docs/plugins/graphql/01-installation.md +144 -0
  400. package/dist/docs/plugins/graphql/02-plugin-configuration.md +127 -0
  401. package/dist/docs/plugins/graphql/03-features.md +197 -0
  402. package/dist/docs/plugins/graphql/04-examples.md +15 -0
  403. package/dist/docs/plugins/graphql/_category_.json +12 -0
  404. package/dist/docs/plugins/hookdeck/01-intro.md +152 -0
  405. package/dist/docs/plugins/hookdeck/02-api.md +133 -0
  406. package/dist/docs/plugins/hookdeck/03-cli.md +45 -0
  407. package/dist/docs/plugins/hookdeck/_category_.json +11 -0
  408. package/dist/docs/plugins/openapi/00-intro.md +78 -0
  409. package/dist/docs/plugins/openapi/01-installation.md +148 -0
  410. package/dist/docs/plugins/openapi/02-plugin-configuration.md +332 -0
  411. package/dist/docs/plugins/openapi/03-features.md +790 -0
  412. package/dist/docs/plugins/openapi/03a-workflows.md +153 -0
  413. package/dist/docs/plugins/openapi/04-examples.md +23 -0
  414. package/dist/docs/plugins/openapi/_category_.json +12 -0
  415. package/dist/eventcatalog.cjs +1 -1
  416. package/dist/eventcatalog.js +5 -5
  417. package/dist/generate.cjs +1 -1
  418. package/dist/generate.js +3 -3
  419. package/dist/utils/cli-logger.cjs +1 -1
  420. package/dist/utils/cli-logger.js +2 -2
  421. package/eventcatalog/src/components/Search/SearchModal.tsx +23 -34
  422. package/eventcatalog/src/components/Search/search-utils.spec.ts +36 -0
  423. package/eventcatalog/src/components/Search/search-utils.ts +34 -0
  424. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +7 -1
  425. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -0
  426. package/eventcatalog/src/stores/sidebar-store/builders/flow.ts +77 -0
  427. package/eventcatalog/src/stores/sidebar-store/builders/message.ts +10 -1
  428. package/eventcatalog/src/stores/sidebar-store/builders/service.ts +10 -3
  429. package/eventcatalog/src/stores/sidebar-store/state.ts +126 -2
  430. package/eventcatalog/src/utils/collections/flows.ts +3 -2
  431. package/package.json +4 -4
@@ -0,0 +1,153 @@
1
+ ---
2
+ sidebar_position: 1
3
+ keywords:
4
+ - components
5
+ sidebar_label: Workflows
6
+ title: Workflows
7
+ description: Workflows of OpenAPI with EventCatalog
8
+ ---
9
+
10
+ import AddedIn from '@site/src/components/MDX/AddedIn';
11
+ import Tabs from '@theme/Tabs';
12
+ import TabItem from '@theme/TabItem';
13
+
14
+ There are a few ways to configure the OpenAPI plugin depending on your preferred development workflows.
15
+ Many companies have different needs, so we have provided a few different workflows to choose from.
16
+
17
+ - [Simple mapping between OpenAPI files and EventCatalog services](#simple-mapping-between-openapi-files-and-eventcatalog-services)
18
+ - Map a single OpenAPI file to a single EventCatalog service
19
+ - [Independent message versions from your OpenAPI file](#independent-message-versions-from-your-openapi-file)
20
+ - Version your messages independently of the service version
21
+ - [Mapping multiple OpenAPI files to a single EventCatalog service](#mapping-multiple-openapi-files-to-a-single-eventcatalog-service)
22
+ - Map multiple OpenAPI files to a single EventCatalog service
23
+ - [Mapping OpenAPI and AsyncAPI files to the same EventCatalog service](#mapping-openapi-and-asyncapi-files-to-the-same-eventcatalog-service)
24
+ - Map an OpenAPI and AsyncAPI file to the same EventCatalog service
25
+
26
+ _If we are missing a workflow that you think is useful, please raise an [issue on GitHub](https://github.com/event-catalog/generators/issues)._
27
+
28
+ ## Simple mapping between OpenAPI files and EventCatalog services
29
+
30
+ This is the simplest workflow and is useful if you have a single OpenAPI file per service.
31
+
32
+ EventCatalog will parse your OpenAPI file and map it's specification to the service you define.
33
+
34
+ This will document your service, and the messages it produces and consumes.
35
+
36
+ ```js title="eventcatalog.config.js"
37
+ // ...rest of file
38
+ generators: [
39
+ [
40
+ '@eventcatalog/generator-openapi',
41
+ {
42
+ services: [
43
+ // Tell EventCatalog where the OpenAPI file is located and map it to the service you define
44
+ { path: path.join(__dirname, 'openapi-files', 'orders-service.yml'), id: 'orders-service' },
45
+ ],
46
+ },
47
+ ],
48
+ ],
49
+ ```
50
+
51
+ ### Independent message versions from your OpenAPI file
52
+
53
+ This is useful if you want to version your messages separately from the OpenAPI file.
54
+
55
+ OpenAPI currently does not support versioning messages separately from the OpenAPI file, that's why you have to use the `x-eventcatalog-message-version` extension.
56
+
57
+ You can use the `x-eventcatalog-message-version` extension to specify a different version for a particular message.
58
+
59
+ ```yaml
60
+ openapi: 3.0.0
61
+ info:
62
+ title: Orders Service
63
+ version: 1.0.0
64
+ paths:
65
+ /orders:
66
+ get:
67
+ summary: List all orders
68
+ operationId: listOrders
69
+ # Specify the version of the message to 2.0.0
70
+ x-eventcatalog-message-version: 2.0.0
71
+ tags:
72
+ - orders
73
+ responses:
74
+ '200':
75
+ description: A list of orders
76
+ content:
77
+ application/json:
78
+ ```
79
+
80
+ In the example above, the message `listOrders` will be versioned as `2.0.0` and all other messages will be versioned as `1.0.0`.
81
+
82
+ You can read more about message versioning in the [Features](/docs/plugins/openapi/features#defining-message-versions) section.
83
+
84
+ ## Mapping multiple OpenAPI files to a single EventCatalog service
85
+
86
+ This is useful if you have a single service that produces and consumes multiple OpenAPI versions.
87
+
88
+ Some people call this a "polyglot" service, as it produces and consumes multiple APIs.
89
+
90
+ ```js title="eventcatalog.config.js"
91
+ // ...rest of file
92
+ generators: [
93
+ [
94
+ '@eventcatalog/generator-asyncapi',
95
+ {
96
+ services: [
97
+ // Version 1 of the OpenAPI file
98
+ { path: path.join(__dirname, 'openapi-files', 'orders-service-v1.yml'), id: 'orders-service' },
99
+ // Version 2 of the AsyncAPI File
100
+ { path: path.join(__dirname, 'openapi-files', 'orders-service-v2.yml'), id: 'orders-service' },
101
+ ],
102
+ },
103
+ ],
104
+ ],
105
+ ```
106
+
107
+ :::info Versioning
108
+ When you map multiple versions of an OpenAPI file to a single service, the `version` property in your OpenAPI files needs to be the same.
109
+
110
+ If they are different, EventCatalog will version the previous versions of your service.
111
+
112
+ In the example above, the `version` property in the OpenAPI files is `1.0.0` and `2.0.0`.
113
+
114
+ EventCatalog will version the service as `1.0.0` and `2.0.0`.
115
+
116
+ The messages in the service will be versioned as `1.0.0` and `2.0.0`.
117
+
118
+ This allows you to track the history of your service and the messages in it.
119
+
120
+ :::
121
+
122
+ ## Mapping OpenAPI and AsyncAPI files to the same EventCatalog service
123
+
124
+ <AddedIn version="5.1.1" pkg="@eventcatalog/generator-asyncapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
125
+ <AddedIn version="7.6.1" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
126
+
127
+ This is useful if you have a single service that produces and consumes both OpenAPI and AsyncAPI files.
128
+
129
+ In this example we map an OpenAPI file and an AsyncAPI file to the same service (inventory-service).
130
+
131
+ The OpenAPI and AsyncAPI may have their own versions independent of each other, but EventCatalog will document both of them in the same service.
132
+
133
+ :::tip Message Versioning
134
+ You can still use the `x-eventcatalog-message-version` extension to version your messages independently of the service version.
135
+ :::
136
+
137
+ ```js title="eventcatalog.config.js"
138
+ // ...rest of file
139
+ generators: [
140
+ [
141
+ "@eventcatalog/generator-openapi",
142
+ {
143
+ services: [{ path: path.join(__dirname, "specifications", "openapi.yml"), id: "inventory-service", version: "15.2.0" }],
144
+ },
145
+ ],
146
+ [
147
+ "@eventcatalog/generator-asyncapi",
148
+ {
149
+ services: [{ path: path.join(__dirname, "specifications", "asyncapi.yml"), id: "inventory-service", version: "15.2.0" }],
150
+ },
151
+ ],
152
+ ],
153
+ ```
@@ -0,0 +1,23 @@
1
+ ---
2
+ sidebar_position: 1
3
+ keywords:
4
+ - components
5
+ sidebar_label: Examples
6
+ title: Examples
7
+ description: Examples of using the OpenAPI plugin
8
+ ---
9
+
10
+ You can find many examples of using the OpenAPI plugin in the [EventCatalog GitHub repository](https://github.com/event-catalog/generators).
11
+
12
+ ## Examples
13
+
14
+ - [OpenAPI Example](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/basic)
15
+ - A basic example of using the OpenAPI plugin to generate a catalog from an OpenAPI file.
16
+ - [Fetch OpenAPI files from remote URLs](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/fetch-from-remote-urls)
17
+ - An example of using the OpenAPI plugin to fetch an OpenAPI file from a remote URL.
18
+ - [Version OpenAPI messages in EventCatalog](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/independent-message-versioning)
19
+ - An example of using the OpenAPI plugin to version OpenAPI messages in EventCatalog.
20
+ - [Map OpenAPI routes to commands, events and queries](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/mapping-commands-events-queries)
21
+ - An example of using the OpenAPI plugin to map OpenAPI routes to commands, events and queries.
22
+ - [Map many OpenAPI files to a single service](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/mapping-many-openapi-files-to-a-service)
23
+ - An example of using the OpenAPI plugin to map many OpenAPI files to a single service. This can be useful if your service exposes multiple APIs.
@@ -0,0 +1,12 @@
1
+ {
2
+ "label": "OpenAPI Plugin",
3
+ "collapsible": true,
4
+ "position": 3,
5
+ "collapsed": false,
6
+ "link": {
7
+ "type": "generated-index",
8
+ "slug": "openapi",
9
+ "title": "OpenAPI",
10
+ "description": "OpenAPI integration documentation for EventCatalog"
11
+ }
12
+ }
@@ -114,7 +114,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
114
114
  var import_picocolors = __toESM(require("picocolors"), 1);
115
115
 
116
116
  // package.json
117
- var version = "3.34.0";
117
+ var version = "3.35.1";
118
118
 
119
119
  // src/constants.ts
120
120
  var VERSION = version;
@@ -6,8 +6,8 @@ import {
6
6
  } from "./chunk-K3ZVEX2Y.js";
7
7
  import {
8
8
  log_build_default
9
- } from "./chunk-BJWMR3ZH.js";
10
- import "./chunk-IO6EMN5C.js";
9
+ } from "./chunk-JEQZWJWP.js";
10
+ import "./chunk-VJ357XOI.js";
11
11
  import "./chunk-4UVFXLPI.js";
12
12
  import {
13
13
  runMigrations
@@ -22,13 +22,13 @@ import {
22
22
  } from "./chunk-3KXCGYET.js";
23
23
  import {
24
24
  generate
25
- } from "./chunk-PP7EDIPX.js";
25
+ } from "./chunk-R4DR3YAH.js";
26
26
  import {
27
27
  logger
28
- } from "./chunk-K5AM6PPU.js";
28
+ } from "./chunk-4SNN54V4.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-623CFR4T.js";
31
+ } from "./chunk-B7C4DHFE.js";
32
32
  import {
33
33
  getEventCatalogConfigFile,
34
34
  verifyRequiredFieldsAreInCatalogConfigFile
package/dist/generate.cjs CHANGED
@@ -78,7 +78,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
78
78
  var import_picocolors = __toESM(require("picocolors"), 1);
79
79
 
80
80
  // package.json
81
- var version = "3.34.0";
81
+ var version = "3.35.1";
82
82
 
83
83
  // src/constants.ts
84
84
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-PP7EDIPX.js";
4
- import "./chunk-K5AM6PPU.js";
5
- import "./chunk-623CFR4T.js";
3
+ } from "./chunk-R4DR3YAH.js";
4
+ import "./chunk-4SNN54V4.js";
5
+ import "./chunk-B7C4DHFE.js";
6
6
  import "./chunk-5T63CXKU.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 = "3.34.0";
39
+ var version = "3.35.1";
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-K5AM6PPU.js";
4
- import "../chunk-623CFR4T.js";
3
+ } from "../chunk-4SNN54V4.js";
4
+ import "../chunk-B7C4DHFE.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -27,6 +27,7 @@ import { useStore } from '@nanostores/react';
27
27
  import { favoritesStore, toggleFavorite as toggleFavoriteAction } from '../../stores/favorites-store';
28
28
  import { buildUrl } from '@utils/url-builder';
29
29
  import { resolveIconUrl } from '@utils/icon';
30
+ import { getUrlForSearchItem } from './search-utils';
30
31
 
31
32
  const typeIcons: any = {
32
33
  Domain: RectangleGroupIcon,
@@ -43,6 +44,8 @@ const typeIcons: any = {
43
44
  AsyncAPI: DocumentTextIcon,
44
45
  Design: Square2StackIcon,
45
46
  Container: CircleStackIcon,
47
+ 'Data Product': CubeIcon,
48
+ Flow: QueueListIcon,
46
49
  default: DocumentTextIcon,
47
50
  };
48
51
 
@@ -62,6 +65,8 @@ const typeColors: any = {
62
65
  AsyncAPI: 'text-violet-500 dark:text-violet-400 bg-violet-50 dark:bg-violet-500/10 ring-violet-200 dark:ring-violet-500/30',
63
66
  Design: 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
64
67
  Container: 'text-indigo-500 dark:text-indigo-400 bg-indigo-50 dark:bg-indigo-500/10 ring-indigo-200 dark:ring-indigo-500/30',
68
+ 'Data Product': 'text-sky-500 dark:text-sky-400 bg-sky-50 dark:bg-sky-500/10 ring-sky-200 dark:ring-sky-500/30',
69
+ Flow: 'text-fuchsia-500 dark:text-fuchsia-400 bg-fuchsia-50 dark:bg-fuchsia-500/10 ring-fuchsia-200 dark:ring-fuchsia-500/30',
65
70
  default: 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
66
71
  };
67
72
 
@@ -69,35 +74,6 @@ function classNames(...classes: (string | boolean | undefined)[]) {
69
74
  return classes.filter(Boolean).join(' ');
70
75
  }
71
76
 
72
- // Helper to construct URL from key if href is missing
73
- const getUrlForItem = (node: any, key: string) => {
74
- const parts = key.split(':');
75
- if (parts.length < 2) return null; // Need at least type:id
76
-
77
- const type = parts[0];
78
- const id = parts[1];
79
- const version = parts[2]; // May be undefined
80
-
81
- // Skip list items and other special keys
82
- if (type === 'list') return null;
83
-
84
- // Only show items that have a version to avoid duplicates
85
- if (!version) return null;
86
-
87
- // If node has href, use it, otherwise construct from key
88
- if (node.href) return node.href;
89
-
90
- // Pluralize type for URL if needed
91
- let pluralType = type;
92
- if (['event', 'command', 'domain', 'service', 'flow', 'container', 'channel'].includes(type)) {
93
- pluralType = type + 's';
94
- } else if (type === 'query') {
95
- pluralType = 'queries';
96
- }
97
-
98
- return buildUrl(`/docs/${pluralType}/${id}/${version}`);
99
- };
100
-
101
77
  interface SearchNode {
102
78
  key: string;
103
79
  title: string;
@@ -203,7 +179,7 @@ export default function SearchModal() {
203
179
  const items = useMemo(() => {
204
180
  return searchNodes
205
181
  .map((node) => {
206
- const url = getUrlForItem(node as any, node.key);
182
+ const url = getUrlForSearchItem(node as any, node.key);
207
183
  if (!url) return null;
208
184
 
209
185
  return {
@@ -252,8 +228,11 @@ export default function SearchModal() {
252
228
  Message: 0,
253
229
  Team: 0,
254
230
  Container: 0,
231
+ Entity: 0,
255
232
  Design: 0,
256
233
  Channel: 0,
234
+ Flow: 0,
235
+ 'Data Product': 0,
257
236
  };
258
237
 
259
238
  itemsToCount.forEach((item) => {
@@ -277,8 +256,12 @@ export default function SearchModal() {
277
256
  if (counts.Domain > 0) dynamicFilters.push({ id: 'Domain', name: `Domains (${counts.Domain})` });
278
257
  if (counts.Service > 0) dynamicFilters.push({ id: 'Service', name: `Services (${counts.Service})` });
279
258
  if (counts.Message > 0) dynamicFilters.push({ id: 'Message', name: `Messages (${counts.Message})` });
280
- if (counts.Container > 0) dynamicFilters.push({ id: 'Container', name: `Containers (${counts.Container})` });
259
+ if (counts.Container > 0) dynamicFilters.push({ id: 'Container', name: `Data Stores (${counts.Container})` });
260
+ if (counts.Entity > 0) dynamicFilters.push({ id: 'Entity', name: `Entities (${counts.Entity})` });
281
261
  if (counts.Channel > 0) dynamicFilters.push({ id: 'Channel', name: `Channels (${counts.Channel})` });
262
+ if (counts.Flow > 0) dynamicFilters.push({ id: 'Flow', name: `Flows (${counts.Flow})` });
263
+ if (counts['Data Product'] > 0)
264
+ dynamicFilters.push({ id: 'Data Product', name: `Data Products (${counts['Data Product']})` });
282
265
  if (counts.Design > 0) dynamicFilters.push({ id: 'Design', name: `Designs (${counts.Design})` });
283
266
  if (counts.Team > 0) dynamicFilters.push({ id: 'Team', name: `Teams & Users (${counts.Team})` });
284
267
 
@@ -317,7 +300,7 @@ export default function SearchModal() {
317
300
  .slice(0, 5)
318
301
  .map((fav) => {
319
302
  const node = searchNodeLookup.get(fav.nodeKey);
320
- const url = node ? getUrlForItem(node as any, fav.nodeKey) : fav.href;
303
+ const url = node ? getUrlForSearchItem(node as any, fav.nodeKey) : fav.href;
321
304
  if (!url) return null;
322
305
 
323
306
  return {
@@ -411,7 +394,13 @@ export default function SearchModal() {
411
394
  </div>
412
395
 
413
396
  {/* Filter Tabs */}
414
- <div className="flex items-center gap-2 px-4 py-3 overflow-x-auto no-scrollbar border-b border-[rgb(var(--ec-page-border))]">
397
+ <div
398
+ className="flex items-center gap-2 px-4 pt-3 pb-3.5 overflow-x-auto overscroll-x-contain border-b border-[rgb(var(--ec-page-border))]"
399
+ style={{
400
+ scrollbarWidth: 'thin',
401
+ scrollbarColor: 'rgb(var(--ec-page-border)) transparent',
402
+ }}
403
+ >
415
404
  {filters.map((tab) => (
416
405
  <button
417
406
  key={tab.id}
@@ -566,7 +555,7 @@ export default function SearchModal() {
566
555
  <MagnifyingGlassIcon className="mx-auto h-6 w-6 text-[rgb(var(--ec-icon-color))]" />
567
556
  <p className="mt-4 font-semibold text-[rgb(var(--ec-page-text))]">Search for anything</p>
568
557
  <p className="mt-2 text-[rgb(var(--ec-page-text-muted))]">
569
- Search for domains, services, events, commands, queries and more.
558
+ Search for domains, services, events, commands, queries, data stores, data products, flows and more.
570
559
  </p>
571
560
  </div>
572
561
  )}
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it, beforeEach } from 'vitest';
2
+ import { getUrlForSearchItem } from './search-utils';
3
+
4
+ declare global {
5
+ interface Window {
6
+ __EC_TRAILING_SLASH__: boolean;
7
+ }
8
+ }
9
+
10
+ describe('getUrlForSearchItem', () => {
11
+ beforeEach(() => {
12
+ // @ts-ignore
13
+ global.__EC_TRAILING_SLASH__ = false;
14
+ });
15
+
16
+ it.each([
17
+ ['container:OrdersDatabase:1.0.0', '/docs/containers/OrdersDatabase/1.0.0'],
18
+ ['data-product:Customer360:1.0.0', '/docs/data-products/Customer360/1.0.0'],
19
+ ['entity:Order:1.0.0', '/docs/entities/Order/1.0.0'],
20
+ ['flow:CheckoutFlow:1.0.0', '/docs/flows/CheckoutFlow/1.0.0'],
21
+ ])('builds a docs URL for %s', (key, expected) => {
22
+ expect(getUrlForSearchItem({}, key)).toBe(expected);
23
+ });
24
+
25
+ it('uses the explicit node href when provided', () => {
26
+ expect(getUrlForSearchItem({ href: '/custom/search-result' }, 'data-product:Customer360:1.0.0')).toBe(
27
+ '/custom/search-result'
28
+ );
29
+ });
30
+
31
+ it('skips aliases and unsupported keys', () => {
32
+ expect(getUrlForSearchItem({}, 'data-product:Customer360')).toBeNull();
33
+ expect(getUrlForSearchItem({}, 'list:data-products')).toBeNull();
34
+ expect(getUrlForSearchItem({}, 'unknown:Customer360:1.0.0')).toBeNull();
35
+ });
36
+ });
@@ -0,0 +1,34 @@
1
+ import { buildUrl } from '@utils/url-builder';
2
+
3
+ const docsPathByType: Record<string, string> = {
4
+ channel: 'channels',
5
+ command: 'commands',
6
+ container: 'containers',
7
+ 'data-product': 'data-products',
8
+ domain: 'domains',
9
+ entity: 'entities',
10
+ event: 'events',
11
+ flow: 'flows',
12
+ query: 'queries',
13
+ service: 'services',
14
+ };
15
+
16
+ export const getUrlForSearchItem = (node: { href?: string }, key: string) => {
17
+ const parts = key.split(':');
18
+ if (parts.length < 2) return null;
19
+
20
+ const type = parts[0];
21
+ const id = parts[1];
22
+ const version = parts[2];
23
+
24
+ if (type === 'list') return null;
25
+
26
+ if (!version) return null;
27
+
28
+ if (node.href) return node.href;
29
+
30
+ const docsPath = docsPathByType[type];
31
+ if (!docsPath) return null;
32
+
33
+ return buildUrl(`/docs/${docsPath}/${id}/${version}`);
34
+ };
@@ -16,6 +16,8 @@ import {
16
16
  SquareMousePointer,
17
17
  ListOrdered,
18
18
  ArrowLeftRight,
19
+ Package,
20
+ Box,
19
21
  } from 'lucide-react';
20
22
  import type { NavNode } from '@stores/sidebar-store/state';
21
23
  import { getBadgeClasses } from './utils';
@@ -83,8 +85,10 @@ export default function SearchBar({ nodes, onSelectResult, onSearchChange }: Pro
83
85
  { key: 'channel', label: 'Channels', badge: 'Channel', icon: ArrowLeftRight },
84
86
  { key: 'command', label: 'Commands', badge: 'Command', icon: MessageSquare },
85
87
  { key: 'container', label: 'Data Stores', badge: 'Container', icon: Database },
88
+ { key: 'data-product', label: 'Data Products', badge: 'Data Product', icon: Package },
86
89
  { key: 'design', label: 'Designs', badge: 'Design', icon: SquareMousePointer },
87
90
  { key: 'domain', label: 'Domains', badge: 'Domain', icon: Boxes },
91
+ { key: 'entity', label: 'Entities', badge: 'Entity', icon: Box },
88
92
  { key: 'event', label: 'Events', badge: 'Event', icon: Zap },
89
93
  { key: 'flow', label: 'Flows', badge: 'Flow', icon: Waypoints },
90
94
  { key: 'query', label: 'Queries', badge: 'Query', icon: SearchIcon },
@@ -116,9 +120,11 @@ export default function SearchBar({ nodes, onSelectResult, onSearchChange }: Pro
116
120
  Command: 'command',
117
121
  Query: 'query',
118
122
  Container: 'container',
123
+ 'Data Product': 'data-product',
119
124
  Flow: 'flow',
120
125
  Design: 'design',
121
126
  Channel: 'channel',
127
+ Entity: 'entity',
122
128
  };
123
129
 
124
130
  // Use the memoized array instead of Object.entries(nodes)
@@ -135,7 +141,7 @@ export default function SearchBar({ nodes, onSelectResult, onSearchChange }: Pro
135
141
 
136
142
  const keyParts = key.split(':');
137
143
  if (keyParts.length >= 3) {
138
- const id = keyParts[2].toLowerCase();
144
+ const id = keyParts[1].toLowerCase();
139
145
  if (id.includes(query)) {
140
146
  results.push({ nodeKey: key, node, matchType: 'id' });
141
147
  }
@@ -239,6 +239,8 @@ export default function NestedSideBar() {
239
239
  // Data Products
240
240
  { pattern: /^\/docs\/data-products\/([^/]+)\/([^/]+)/, type: 'data-product' },
241
241
  { pattern: /^\/visualiser\/data-products\/([^/]+)\/([^/]+)/, type: 'data-product' },
242
+ // Entities
243
+ { pattern: /^\/docs\/entities\/([^/]+)\/([^/]+)/, type: 'entity' },
242
244
  ];
243
245
 
244
246
  // URL patterns without version (language pages, etc)
@@ -3,6 +3,44 @@ import { buildUrl } from '@utils/url-builder';
3
3
  import type { NavNode, ChildRef, ResourceGroupContext } from './shared';
4
4
  import { buildQuickReferenceSection, buildResourceDocsSection, shouldRenderSideBarSection } from './shared';
5
5
  import { isChangelogEnabled } from '@utils/feature';
6
+ import { createVersionedMap, findInMap } from '@utils/collections/util';
7
+ import { pluralizeMessageType } from '@utils/collections/messages';
8
+
9
+ type VersionedEntry = { collection?: string; data: { id: string; version: string } };
10
+ type VersionedEntryMap<T extends VersionedEntry> = Map<string, T[]>;
11
+
12
+ const uniqueRefs = (refs: string[]) => [...new Set(refs)];
13
+
14
+ const resolvePointer = <T extends VersionedEntry>(
15
+ map: VersionedEntryMap<T>,
16
+ pointer: { id: string; version?: string }
17
+ ): T | undefined => {
18
+ return findInMap(map, pointer.id, pointer.version);
19
+ };
20
+
21
+ const resolveMessageStep = (
22
+ step: any,
23
+ maps: {
24
+ eventMap: VersionedEntryMap<CollectionEntry<'events'>>;
25
+ commandMap: VersionedEntryMap<CollectionEntry<'commands'>>;
26
+ queryMap: VersionedEntryMap<CollectionEntry<'queries'>>;
27
+ }
28
+ ): string | null => {
29
+ if (!step.message) return null;
30
+
31
+ const hydratedMessage = Array.isArray(step.message) ? step.message[0] : undefined;
32
+ if (hydratedMessage?.collection && hydratedMessage?.data) {
33
+ return `${pluralizeMessageType(hydratedMessage as any)}:${hydratedMessage.data.id}:${hydratedMessage.data.version}`;
34
+ }
35
+
36
+ const pointer = Array.isArray(step.message) ? undefined : step.message;
37
+ if (!pointer?.id) return null;
38
+
39
+ const message =
40
+ resolvePointer(maps.eventMap, pointer) || resolvePointer(maps.commandMap, pointer) || resolvePointer(maps.queryMap, pointer);
41
+
42
+ return message ? `${pluralizeMessageType(message as any)}:${message.data.id}:${message.data.version}` : null;
43
+ };
6
44
 
7
45
  export const buildFlowNode = (flow: CollectionEntry<'flows'>, context: ResourceGroupContext): NavNode => {
8
46
  const docsSection = buildResourceDocsSection(
@@ -12,6 +50,27 @@ export const buildFlowNode = (flow: CollectionEntry<'flows'>, context: ResourceG
12
50
  context.resourceDocs,
13
51
  context.resourceDocCategories
14
52
  );
53
+ const steps = flow.data.steps || [];
54
+ const eventMap = createVersionedMap(context.events);
55
+ const commandMap = createVersionedMap(context.commands);
56
+ const queryMap = createVersionedMap(context.queries);
57
+ const serviceMap = createVersionedMap(context.services);
58
+ const flowMap = createVersionedMap(context.flows);
59
+ const messageRefs = uniqueRefs(
60
+ steps.map((step) => resolveMessageStep(step, { eventMap, commandMap, queryMap })).filter(Boolean) as string[]
61
+ );
62
+ const serviceRefs = uniqueRefs(
63
+ steps
64
+ .map((step) => (step.service ? resolvePointer(serviceMap, step.service) : undefined))
65
+ .filter(Boolean)
66
+ .map((service) => `service:${service!.data.id}:${service!.data.version}`)
67
+ );
68
+ const flowRefs = uniqueRefs(
69
+ steps
70
+ .map((step) => (step.flow ? resolvePointer(flowMap, step.flow) : undefined))
71
+ .filter(Boolean)
72
+ .map((referencedFlow) => `flow:${referencedFlow!.data.id}:${referencedFlow!.data.version}`)
73
+ );
15
74
 
16
75
  return {
17
76
  type: 'item',
@@ -43,6 +102,24 @@ export const buildFlowNode = (flow: CollectionEntry<'flows'>, context: ResourceG
43
102
  },
44
103
  ].filter(Boolean) as ChildRef[],
45
104
  },
105
+ messageRefs.length > 0 && {
106
+ type: 'group',
107
+ title: 'Messages',
108
+ icon: 'Mail',
109
+ pages: messageRefs,
110
+ },
111
+ serviceRefs.length > 0 && {
112
+ type: 'group',
113
+ title: 'Services',
114
+ icon: 'Server',
115
+ pages: serviceRefs,
116
+ },
117
+ flowRefs.length > 0 && {
118
+ type: 'group',
119
+ title: 'Subflows',
120
+ icon: 'Waypoints',
121
+ pages: flowRefs,
122
+ },
46
123
  ].filter(Boolean) as ChildRef[],
47
124
  };
48
125
  };
@@ -18,7 +18,8 @@ export const buildMessageNode = (
18
18
  message: CollectionEntry<'events' | 'commands' | 'queries'>,
19
19
  owners: any[],
20
20
  context: ResourceGroupContext,
21
- hasFieldUsage: boolean = false
21
+ hasFieldUsage: boolean = false,
22
+ flowRefs: string[] = []
22
23
  ): NavNode => {
23
24
  const producers = message.data.producers || [];
24
25
  const consumers = message.data.consumers || [];
@@ -26,6 +27,7 @@ export const buildMessageNode = (
26
27
 
27
28
  const renderProducers = producers.length > 0 && shouldRenderSideBarSection(message, 'producers');
28
29
  const renderConsumers = consumers.length > 0 && shouldRenderSideBarSection(message, 'consumers');
30
+ const renderFlows = flowRefs.length > 0 && shouldRenderSideBarSection(message, 'flows');
29
31
  const renderRepository = message.data.repository && shouldRenderSideBarSection(message, 'repository');
30
32
 
31
33
  // Determine badge based on collection type
@@ -132,6 +134,13 @@ export const buildMessageNode = (
132
134
  pages: consumers.map((consumer) => `service:${(consumer as any).data.id}:${(consumer as any).data.version}`),
133
135
  visible: consumers.length > 0,
134
136
  },
137
+ renderFlows && {
138
+ type: 'group',
139
+ title: 'Flows',
140
+ icon: 'Waypoints',
141
+ pages: flowRefs,
142
+ visible: flowRefs.length > 0,
143
+ },
135
144
  renderOwners && buildOwnersSection(owners),
136
145
  renderRepository && buildRepositorySection(message.data.repository as { url: string; language: string }),
137
146
  hasAttachments && buildAttachmentsSection(message.data.attachments as any[]),