@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.
- package/dist/analytics/analytics.cjs +1 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +1 -1
- package/dist/analytics/log-build.js +3 -3
- package/dist/{chunk-K5AM6PPU.js → chunk-4SNN54V4.js} +1 -1
- package/dist/{chunk-623CFR4T.js → chunk-B7C4DHFE.js} +1 -1
- package/dist/{chunk-BJWMR3ZH.js → chunk-JEQZWJWP.js} +1 -1
- package/dist/{chunk-PP7EDIPX.js → chunk-R4DR3YAH.js} +1 -1
- package/dist/{chunk-IO6EMN5C.js → chunk-VJ357XOI.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/docs/api/01-overview.md +74 -0
- package/dist/docs/api/02-config.md +937 -0
- package/dist/docs/api/03-domain-api.md +394 -0
- package/dist/docs/api/04-service-api.md +368 -0
- package/dist/docs/api/05-command-api.md +319 -0
- package/dist/docs/api/06-event-api.md +318 -0
- package/dist/docs/api/06-query-api.md +316 -0
- package/dist/docs/api/08-channel-api.md +317 -0
- package/dist/docs/api/08-code-blocks.md +53 -0
- package/dist/docs/api/09-flow-api.md +362 -0
- package/dist/docs/api/10-entity-api.md +285 -0
- package/dist/docs/api/11-data-api.md +268 -0
- package/dist/docs/api/12-data-product-api.md +416 -0
- package/dist/docs/api/_category_.json +12 -0
- package/dist/docs/cli/channels.md +180 -0
- package/dist/docs/cli/commands.md +183 -0
- package/dist/docs/cli/custom-docs.md +78 -0
- package/dist/docs/cli/data-products.md +177 -0
- package/dist/docs/cli/data-stores.md +166 -0
- package/dist/docs/cli/diagrams.md +147 -0
- package/dist/docs/cli/domains.md +280 -0
- package/dist/docs/cli/entities.md +138 -0
- package/dist/docs/cli/events.md +186 -0
- package/dist/docs/cli/export.md +27 -0
- package/dist/docs/cli/governance.md +24 -0
- package/dist/docs/cli/import.md +26 -0
- package/dist/docs/cli/index.md +121 -0
- package/dist/docs/cli/messages.md +69 -0
- package/dist/docs/cli/queries.md +183 -0
- package/dist/docs/cli/services.md +266 -0
- package/dist/docs/cli/snapshots.md +44 -0
- package/dist/docs/cli/teams.md +75 -0
- package/dist/docs/cli/users.md +75 -0
- package/dist/docs/cli/utilities.md +43 -0
- package/dist/docs/contributing/01-overview.md +186 -0
- package/dist/docs/contributing/_category_.json +12 -0
- package/dist/docs/development/00-why-eventcatalog.md +87 -0
- package/dist/docs/development/01-fundamentals.md +34 -0
- package/dist/docs/development/01-getting-started/_category_.json +12 -0
- package/dist/docs/development/01-getting-started/configuration-overview.md +124 -0
- package/dist/docs/development/01-getting-started/develop-and-build.md +71 -0
- package/dist/docs/development/01-getting-started/installation.md +103 -0
- package/dist/docs/development/01-getting-started/project-structure.md +269 -0
- package/dist/docs/development/_category_.json +12 -0
- package/dist/docs/development/_getting-started.mdx +15 -0
- package/dist/docs/development/agent-resources/_category_.json +6 -0
- package/dist/docs/development/agent-resources/eventcatalog-skills.md +17 -0
- package/dist/docs/development/agent-resources/llms-full.md +17 -0
- package/dist/docs/development/agent-resources/llms.md +17 -0
- package/dist/docs/development/ask-your-architecture/01-intro.md +89 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +23 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +72 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +385 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +11 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +12 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +216 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +47 -0
- package/dist/docs/development/ask-your-architecture/04-skills/01-introduction.md +40 -0
- package/dist/docs/development/ask-your-architecture/04-skills/02-installation.md +60 -0
- package/dist/docs/development/ask-your-architecture/04-skills/_category_.json +11 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/01-introduction.md +63 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/02-slack-app-setup.md +154 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/03-installation.md +169 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/04-deployment.md +236 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/05-usage.md +140 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/06-troubleshooting.md +268 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/_category_.json +12 -0
- package/dist/docs/development/ask-your-architecture/_category_.json +12 -0
- package/dist/docs/development/authentication/01-introduction.md +78 -0
- package/dist/docs/development/authentication/02-enabling-authentication.md +152 -0
- package/dist/docs/development/authentication/07-rbac-middleware.md +269 -0
- package/dist/docs/development/authentication/_category_.json +11 -0
- package/dist/docs/development/authentication/providers/03-setting-up-github.md +83 -0
- package/dist/docs/development/authentication/providers/03a-setting-up-google.md +92 -0
- package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +100 -0
- package/dist/docs/development/authentication/providers/05-setting-up-okta.md +105 -0
- package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +106 -0
- package/dist/docs/development/authentication/providers/_category_.json +11 -0
- package/dist/docs/development/bring-your-own-documentation/01-introduction.md +48 -0
- package/dist/docs/development/bring-your-own-documentation/_category_.json +12 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +60 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +207 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +46 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +45 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/_category_.json +11 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +34 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +143 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +68 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +45 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/_category_.json +11 -0
- package/dist/docs/development/components/04-snippets.md +134 -0
- package/dist/docs/development/components/05-using-components.md +67 -0
- package/dist/docs/development/components/07-resource-references.md +136 -0
- package/dist/docs/development/components/_category_.json +12 -0
- package/dist/docs/development/components/components/01-accordian.md +41 -0
- package/dist/docs/development/components/components/02-accordian-group.md +57 -0
- package/dist/docs/development/components/components/03-admonitions.md +43 -0
- package/dist/docs/development/components/components/04-attachments.md +56 -0
- package/dist/docs/development/components/components/05-channel-information.md +29 -0
- package/dist/docs/development/components/components/06-design.md +66 -0
- package/dist/docs/development/components/components/07-entitymap.md +71 -0
- package/dist/docs/development/components/components/08-flow.md +46 -0
- package/dist/docs/development/components/components/09-link.md +32 -0
- package/dist/docs/development/components/components/10-mermaid-file-loader.md +63 -0
- package/dist/docs/development/components/components/11-message-table.md +43 -0
- package/dist/docs/development/components/components/12-nodegraph.md +167 -0
- package/dist/docs/development/components/components/13-openapi.md +55 -0
- package/dist/docs/development/components/components/14-prompt.md +69 -0
- package/dist/docs/development/components/components/15-remote-schema.md +174 -0
- package/dist/docs/development/components/components/16-resource-group-table.md +86 -0
- package/dist/docs/development/components/components/17-resource-link.md +57 -0
- package/dist/docs/development/components/components/18-schema.md +44 -0
- package/dist/docs/development/components/components/19-schema-viewer.md +69 -0
- package/dist/docs/development/components/components/20-steps.md +83 -0
- package/dist/docs/development/components/components/21-tabs.md +55 -0
- package/dist/docs/development/components/components/22-tiles.md +53 -0
- package/dist/docs/development/components/components/23-visibility.md +61 -0
- package/dist/docs/development/components/components/_category_.json +12 -0
- package/dist/docs/development/components/diagram-syntax/01-mermaid.md +218 -0
- package/dist/docs/development/components/diagram-syntax/02-plantuml.md +140 -0
- package/dist/docs/development/components/diagram-syntax/03-structurizr.md +24 -0
- package/dist/docs/development/components/diagram-syntax/04-icepanel.md +75 -0
- package/dist/docs/development/components/diagram-syntax/_category_.json +12 -0
- package/dist/docs/development/components/external-diagram-embeds/01-miro.md +64 -0
- package/dist/docs/development/components/external-diagram-embeds/02-lucid.md +47 -0
- package/dist/docs/development/components/external-diagram-embeds/03-drawio.md +46 -0
- package/dist/docs/development/components/external-diagram-embeds/04-figjam.md +44 -0
- package/dist/docs/development/components/external-diagram-embeds/05-icepanel.md +68 -0
- package/dist/docs/development/components/external-diagram-embeds/_category_.json +12 -0
- package/dist/docs/development/customization/01-customize-landing-page.md +155 -0
- package/dist/docs/development/customization/02-themes.md +429 -0
- package/dist/docs/development/customization/06-customize-tables.md +194 -0
- package/dist/docs/development/customization/_category_.json +12 -0
- package/dist/docs/development/customization/custom-components/00-what-is-mdx.md +73 -0
- package/dist/docs/development/customization/custom-components/01-introduction.md +28 -0
- package/dist/docs/development/customization/custom-components/02-adding-components.md +145 -0
- package/dist/docs/development/customization/custom-components/03-component-styling.md +27 -0
- package/dist/docs/development/customization/custom-components/04-javascript-components.md +32 -0
- package/dist/docs/development/customization/custom-components/_category_.json +11 -0
- package/dist/docs/development/customization/customize-sidebars/00-application-sidebar.md +45 -0
- package/dist/docs/development/customization/customize-sidebars/01-documentation-sidebar.md +187 -0
- package/dist/docs/development/customization/customize-sidebars/_category_.json +11 -0
- package/dist/docs/development/customization/customize-visualizer/00-visualizer-nodes.md +50 -0
- package/dist/docs/development/customization/customize-visualizer/_category_.json +11 -0
- package/dist/docs/development/deployment/_category_.json +12 -0
- package/dist/docs/development/deployment/build-and-deploy.md +71 -0
- package/dist/docs/development/deployment/build-ssr-mode.md +50 -0
- package/dist/docs/development/deployment/deployment-workflows.md +43 -0
- package/dist/docs/development/deployment/hosting-options.md +112 -0
- package/dist/docs/development/deployment/licenses.md +50 -0
- package/dist/docs/development/design/_category_.json +12 -0
- package/dist/docs/development/design/embed-designs-into-eventcatalog.md +29 -0
- package/dist/docs/development/design/further-reading.md +19 -0
- package/dist/docs/development/design/import-resources.md +27 -0
- package/dist/docs/development/design/intro.md +22 -0
- package/dist/docs/development/developer-tools/_category_.json +12 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter.md +597 -0
- package/dist/docs/development/developer-tools/github-action.md +147 -0
- package/dist/docs/development/developer-tools/llms.txt.md +55 -0
- package/dist/docs/development/developer-tools/schemas.txt.md +42 -0
- package/dist/docs/development/governance/_category_.json +6 -0
- package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +62 -0
- package/dist/docs/development/governance/architecture-change-detection/02-configuration.md +134 -0
- package/dist/docs/development/governance/architecture-change-detection/03-recipes.md +309 -0
- package/dist/docs/development/governance/architecture-change-detection/04-webhooks.md +187 -0
- package/dist/docs/development/governance/architecture-change-detection/05-ci-cd.md +121 -0
- package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +162 -0
- package/dist/docs/development/governance/architecture-change-detection/_category_.json +6 -0
- package/dist/docs/development/guides/12-customize-your-sidebar.md +12 -0
- package/dist/docs/development/guides/99-adding-analytics.md +138 -0
- package/dist/docs/development/guides/_category_.json +11 -0
- package/dist/docs/development/guides/changelogs/01-introduction.md +33 -0
- package/dist/docs/development/guides/changelogs/02-adding-changelogs.md +94 -0
- package/dist/docs/development/guides/changelogs/03-automated-changelogs.md +44 -0
- package/dist/docs/development/guides/changelogs/_category_.json +11 -0
- package/dist/docs/development/guides/channels/01-introduction.md +111 -0
- package/dist/docs/development/guides/channels/02-adding-channels.md +198 -0
- package/dist/docs/development/guides/channels/04-adding-messages-to-services.md +292 -0
- package/dist/docs/development/guides/channels/09-configuration +39 -0
- package/dist/docs/development/guides/channels/_category_.json +11 -0
- package/dist/docs/development/guides/channels/ownership-and-components/01-owners.md +44 -0
- package/dist/docs/development/guides/channels/ownership-and-components/02-components.md +16 -0
- package/dist/docs/development/guides/channels/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/01-versioning.md +31 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/02-changelog.md +56 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/guides/data/01-introduction.md +34 -0
- package/dist/docs/development/guides/data/02-adding-data.md +86 -0
- package/dist/docs/development/guides/data/03a-adding-schemas-to-data-stores.md +73 -0
- package/dist/docs/development/guides/data/_category_.json +11 -0
- package/dist/docs/development/guides/data/ownership-and-components/01-owners.md +45 -0
- package/dist/docs/development/guides/data/ownership-and-components/02-components.md +17 -0
- package/dist/docs/development/guides/data/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/01-versioning.md +32 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/02-changelog.md +57 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/03-deprecating.md +71 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/guides/data-products/01-introduction.md +116 -0
- package/dist/docs/development/guides/data-products/02-adding-data-products.md +157 -0
- package/dist/docs/development/guides/data-products/03-inputs-and-outputs.md +128 -0
- package/dist/docs/development/guides/data-products/04-contracts.md +102 -0
- package/dist/docs/development/guides/data-products/05-versioning.md +240 -0
- package/dist/docs/development/guides/data-products/06-adding-to-domains.md +52 -0
- package/dist/docs/development/guides/data-products/_category_.json +11 -0
- package/dist/docs/development/guides/diagrams/01-introduction.md +78 -0
- package/dist/docs/development/guides/diagrams/02-creating-diagrams.md +195 -0
- package/dist/docs/development/guides/diagrams/03-referencing-diagrams.md +195 -0
- package/dist/docs/development/guides/diagrams/04-versioning-diagrams.md +204 -0
- package/dist/docs/development/guides/diagrams/05-comparing-diagrams.md +145 -0
- package/dist/docs/development/guides/diagrams/06-diagrams-with-llms.md +165 -0
- package/dist/docs/development/guides/diagrams/_category_.json +10 -0
- package/dist/docs/development/guides/domains/01-introduction.md +22 -0
- package/dist/docs/development/guides/domains/02-creating-domains/02-adding-domains.md +108 -0
- package/dist/docs/development/guides/domains/02-creating-domains/02a-subdomains.md +84 -0
- package/dist/docs/development/guides/domains/02-creating-domains/03-adding-services-to-domains.md +90 -0
- package/dist/docs/development/guides/domains/02-creating-domains/04-adding-messages-to-domains.md +107 -0
- package/dist/docs/development/guides/domains/02-creating-domains/05-adding-data-products-to-domains.md +105 -0
- package/dist/docs/development/guides/domains/02-creating-domains/_category_.json +11 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/01-owners.md +36 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +75 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/_category_.json +10 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/01-versioning.md +40 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/02-changelog.md +53 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/_category_.json +10 -0
- package/dist/docs/development/guides/domains/05-entities/01-introduction.md +24 -0
- package/dist/docs/development/guides/domains/05-entities/02-adding-entities.md +157 -0
- package/dist/docs/development/guides/domains/05-entities/03-adding-entities-to-domains.md +30 -0
- package/dist/docs/development/guides/domains/05-entities/04-domain-entity-map.md +134 -0
- package/dist/docs/development/guides/domains/05-entities/_category_.json +11 -0
- package/dist/docs/development/guides/domains/08-domain-integration-map.md +41 -0
- package/dist/docs/development/guides/domains/_category_.json +11 -0
- package/dist/docs/development/guides/flows/01-introduction.md +36 -0
- package/dist/docs/development/guides/flows/02-adding-flows.md +198 -0
- package/dist/docs/development/guides/flows/03-flow-nodes.md +273 -0
- package/dist/docs/development/guides/flows/04-adding-flows-to-services.md +42 -0
- package/dist/docs/development/guides/flows/05-adding-flows-to-domains.md +43 -0
- package/dist/docs/development/guides/flows/06-versioning.md +27 -0
- package/dist/docs/development/guides/flows/07-create-flow-with-ai.md +171 -0
- package/dist/docs/development/guides/flows/_category_.json +11 -0
- package/dist/docs/development/guides/messages/01-overview.md +57 -0
- package/dist/docs/development/guides/messages/_category_.json +11 -0
- package/dist/docs/development/guides/messages/commands/01-introduction.md +26 -0
- package/dist/docs/development/guides/messages/commands/02-adding-commands.md +131 -0
- package/dist/docs/development/guides/messages/commands/_category_.json +11 -0
- package/dist/docs/development/guides/messages/common/01-map-to-producers-and-consumers.md +37 -0
- package/dist/docs/development/guides/messages/common/02-adding-schemas.md +58 -0
- package/dist/docs/development/guides/messages/common/02-deprecating.md +71 -0
- package/dist/docs/development/guides/messages/common/02-draft-messages.md +63 -0
- package/dist/docs/development/guides/messages/common/02-examples.md +99 -0
- package/dist/docs/development/guides/messages/common/03-owners.md +40 -0
- package/dist/docs/development/guides/messages/common/04-versioning.md +27 -0
- package/dist/docs/development/guides/messages/common/05-changelog.md +73 -0
- package/dist/docs/development/guides/messages/common/07-components.md +12 -0
- package/dist/docs/development/guides/messages/common/08-shared-messages-across-boundaries.md +70 -0
- package/dist/docs/development/guides/messages/common/09-grouping-messages.md +98 -0
- package/dist/docs/development/guides/messages/common/_category_.json +11 -0
- package/dist/docs/development/guides/messages/events/01-introduction.md +25 -0
- package/dist/docs/development/guides/messages/events/02-adding-events.md +130 -0
- package/dist/docs/development/guides/messages/events/_category_.json +11 -0
- package/dist/docs/development/guides/messages/queries/01-introduction.md +25 -0
- package/dist/docs/development/guides/messages/queries/02-adding-queries.md +130 -0
- package/dist/docs/development/guides/messages/queries/_category_.json +11 -0
- package/dist/docs/development/guides/owners/_category_.json +11 -0
- package/dist/docs/development/guides/owners/teams/01-introduction.md +21 -0
- package/dist/docs/development/guides/owners/teams/02-adding-teams.md +73 -0
- package/dist/docs/development/guides/owners/teams/_category_.json +11 -0
- package/dist/docs/development/guides/owners/users/01-introduction.md +20 -0
- package/dist/docs/development/guides/owners/users/02-adding-users.md +70 -0
- package/dist/docs/development/guides/owners/users/_category_.json +11 -0
- package/dist/docs/development/guides/schemas/01-introduction.md +64 -0
- package/dist/docs/development/guides/schemas/02-schema-explorer.md +74 -0
- package/dist/docs/development/guides/schemas/03-schema-api.md +59 -0
- package/dist/docs/development/guides/schemas/04-schema-mcp.md +22 -0
- package/dist/docs/development/guides/schemas/05-field-usage.md +120 -0
- package/dist/docs/development/guides/schemas/06-fields-explorer.md +120 -0
- package/dist/docs/development/guides/schemas/_category_.json +11 -0
- package/dist/docs/development/guides/services/01-introduction.md +33 -0
- package/dist/docs/development/guides/services/02-adding-services.md +113 -0
- package/dist/docs/development/guides/services/03-creating-external-systems.md +71 -0
- package/dist/docs/development/guides/services/_category_.json +11 -0
- package/dist/docs/development/guides/services/adding-to-services/01-messages.md +229 -0
- package/dist/docs/development/guides/services/adding-to-services/02-datastores.md +77 -0
- package/dist/docs/development/guides/services/adding-to-services/03-entities.md +47 -0
- package/dist/docs/development/guides/services/adding-to-services/04-openapi.md +97 -0
- package/dist/docs/development/guides/services/adding-to-services/05-asyncapi.md +97 -0
- package/dist/docs/development/guides/services/adding-to-services/06-graphql.md +96 -0
- package/dist/docs/development/guides/services/adding-to-services/_category_.json +10 -0
- package/dist/docs/development/guides/services/ownership-and-components/01-owners.md +41 -0
- package/dist/docs/development/guides/services/ownership-and-components/02-components.md +13 -0
- package/dist/docs/development/guides/services/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/01-versioning.md +27 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/02-changelog.md +52 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/03-deprecating.md +70 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/upgrading/_category_.json +12 -0
- package/dist/docs/development/upgrading/upgrading.md +142 -0
- package/dist/docs/development/upgrading/v2.md +69 -0
- package/dist/docs/development/upgrading/v3.md +277 -0
- package/dist/docs/miro/_category_.json +12 -0
- package/dist/docs/miro/contributing/01-getting-involved.md +53 -0
- package/dist/docs/miro/contributing/_category_.json +11 -0
- package/dist/docs/miro/getting-started/01-overview.md +63 -0
- package/dist/docs/miro/getting-started/02-installation.md +37 -0
- package/dist/docs/miro/getting-started/03-connecting-to-eventcatalog.md +59 -0
- package/dist/docs/miro/getting-started/_category_.json +11 -0
- package/dist/docs/miro/guides/01-adding-resources-to-board.md +90 -0
- package/dist/docs/miro/guides/02-creating-new-resources.md +61 -0
- package/dist/docs/miro/guides/03-editing-resources.md +50 -0
- package/dist/docs/miro/guides/04-connected-resources.md +54 -0
- package/dist/docs/miro/guides/05-services-and-dependencies.md +54 -0
- package/dist/docs/miro/guides/06-navigating-the-board.md +44 -0
- package/dist/docs/miro/guides/07-exporting-to-eventcatalog.md +75 -0
- package/dist/docs/miro/guides/_category_.json +11 -0
- package/dist/docs/miro/specifications/01-asyncapi.md +86 -0
- package/dist/docs/miro/specifications/02-openapi.md +86 -0
- package/dist/docs/miro/specifications/03-schema-registries.md +88 -0
- package/dist/docs/miro/specifications/_category_.json +11 -0
- package/dist/docs/miro/using-ai/01-overview.md +105 -0
- package/dist/docs/miro/using-ai/_category_.json +11 -0
- package/dist/docs/plugins/01-intro.md +49 -0
- package/dist/docs/plugins/02-generators.md +76 -0
- package/dist/docs/plugins/03-all-plugins.md +26 -0
- package/dist/docs/plugins/_category_.json +12 -0
- package/dist/docs/plugins/amazon-apigateway/00-intro.md +75 -0
- package/dist/docs/plugins/amazon-apigateway/01-installation.md +198 -0
- package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +136 -0
- package/dist/docs/plugins/amazon-apigateway/03-features.md +71 -0
- package/dist/docs/plugins/amazon-apigateway/04-examples.md +15 -0
- package/dist/docs/plugins/amazon-apigateway/_category_.json +11 -0
- package/dist/docs/plugins/apicurio/00-intro.md +102 -0
- package/dist/docs/plugins/apicurio/01-installation.md +165 -0
- package/dist/docs/plugins/apicurio/02-plugin-configuration.md +682 -0
- package/dist/docs/plugins/apicurio/03-features.md +221 -0
- package/dist/docs/plugins/apicurio/04-examples.md +20 -0
- package/dist/docs/plugins/apicurio/_category_.json +12 -0
- package/dist/docs/plugins/asyncapi/00-intro.md +81 -0
- package/dist/docs/plugins/asyncapi/01-installation.md +155 -0
- package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +312 -0
- package/dist/docs/plugins/asyncapi/03-features.md +698 -0
- package/dist/docs/plugins/asyncapi/03a-workflows.md +153 -0
- package/dist/docs/plugins/asyncapi/04-examples.md +23 -0
- package/dist/docs/plugins/asyncapi/04-using-reference-objects.md +45 -0
- package/dist/docs/plugins/asyncapi/_category_.json +12 -0
- package/dist/docs/plugins/aws-glue-registry/00-intro.md +104 -0
- package/dist/docs/plugins/aws-glue-registry/00a-installation.md +305 -0
- package/dist/docs/plugins/aws-glue-registry/01-features.md +287 -0
- package/dist/docs/plugins/aws-glue-registry/02-examples.md +368 -0
- package/dist/docs/plugins/aws-glue-registry/03-api.md +282 -0
- package/dist/docs/plugins/aws-glue-registry/_category_.json +11 -0
- package/dist/docs/plugins/azure-schema-registry/00-intro.md +92 -0
- package/dist/docs/plugins/azure-schema-registry/01-installation.md +409 -0
- package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +375 -0
- package/dist/docs/plugins/azure-schema-registry/03-features.md +347 -0
- package/dist/docs/plugins/azure-schema-registry/04-examples.md +378 -0
- package/dist/docs/plugins/azure-schema-registry/_category_.json +12 -0
- package/dist/docs/plugins/backstage/00-intro.md +67 -0
- package/dist/docs/plugins/backstage/01-installation.md +250 -0
- package/dist/docs/plugins/backstage/02-api.md +51 -0
- package/dist/docs/plugins/backstage/03-examples.md +12 -0
- package/dist/docs/plugins/backstage/_category_.json +11 -0
- package/dist/docs/plugins/confluent-schema-registry/00-intro.md +90 -0
- package/dist/docs/plugins/confluent-schema-registry/01-installation.md +223 -0
- package/dist/docs/plugins/confluent-schema-registry/02-plugin-configuration.md +473 -0
- package/dist/docs/plugins/confluent-schema-registry/03-features.md +43 -0
- package/dist/docs/plugins/confluent-schema-registry/04-examples.md +19 -0
- package/dist/docs/plugins/confluent-schema-registry/_category_.json +12 -0
- package/dist/docs/plugins/eventbridge/00-intro.md +55 -0
- package/dist/docs/plugins/eventbridge/00a-installation.md +317 -0
- package/dist/docs/plugins/eventbridge/01-features.md +225 -0
- package/dist/docs/plugins/eventbridge/02-examples.md +17 -0
- package/dist/docs/plugins/eventbridge/03-api.md +441 -0
- package/dist/docs/plugins/eventbridge/03a-workflows.md +133 -0
- package/dist/docs/plugins/eventbridge/_category_.json +11 -0
- package/dist/docs/plugins/eventcatalog-federation/00-introduction.md +69 -0
- package/dist/docs/plugins/eventcatalog-federation/01-installation.md +182 -0
- package/dist/docs/plugins/eventcatalog-federation/02-plugin-configuration.md +208 -0
- package/dist/docs/plugins/eventcatalog-federation/03-examples.md +15 -0
- package/dist/docs/plugins/eventcatalog-federation/04-configuration.md +193 -0
- package/dist/docs/plugins/eventcatalog-federation/05-setup-team-catalog.md +97 -0
- package/dist/docs/plugins/eventcatalog-federation/_category_.json +11 -0
- package/dist/docs/plugins/github/00-intro.md +93 -0
- package/dist/docs/plugins/github/01-installation.md +293 -0
- package/dist/docs/plugins/github/02-plugin-configuration.md +253 -0
- package/dist/docs/plugins/github/03-features.md +42 -0
- package/dist/docs/plugins/github/04-examples.md +17 -0
- package/dist/docs/plugins/github/_category_.json +12 -0
- package/dist/docs/plugins/graphql/00-intro.md +74 -0
- package/dist/docs/plugins/graphql/01-installation.md +144 -0
- package/dist/docs/plugins/graphql/02-plugin-configuration.md +127 -0
- package/dist/docs/plugins/graphql/03-features.md +197 -0
- package/dist/docs/plugins/graphql/04-examples.md +15 -0
- package/dist/docs/plugins/graphql/_category_.json +12 -0
- package/dist/docs/plugins/hookdeck/01-intro.md +152 -0
- package/dist/docs/plugins/hookdeck/02-api.md +133 -0
- package/dist/docs/plugins/hookdeck/03-cli.md +45 -0
- package/dist/docs/plugins/hookdeck/_category_.json +11 -0
- package/dist/docs/plugins/openapi/00-intro.md +78 -0
- package/dist/docs/plugins/openapi/01-installation.md +148 -0
- package/dist/docs/plugins/openapi/02-plugin-configuration.md +332 -0
- package/dist/docs/plugins/openapi/03-features.md +790 -0
- package/dist/docs/plugins/openapi/03a-workflows.md +153 -0
- package/dist/docs/plugins/openapi/04-examples.md +23 -0
- package/dist/docs/plugins/openapi/_category_.json +12 -0
- package/dist/eventcatalog.cjs +1 -1
- package/dist/eventcatalog.js +5 -5
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/eventcatalog/src/components/Search/SearchModal.tsx +23 -34
- package/eventcatalog/src/components/Search/search-utils.spec.ts +36 -0
- package/eventcatalog/src/components/Search/search-utils.ts +34 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +7 -1
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -0
- package/eventcatalog/src/stores/sidebar-store/builders/flow.ts +77 -0
- package/eventcatalog/src/stores/sidebar-store/builders/message.ts +10 -1
- package/eventcatalog/src/stores/sidebar-store/builders/service.ts +10 -3
- package/eventcatalog/src/stores/sidebar-store/state.ts +126 -2
- package/eventcatalog/src/utils/collections/flows.ts +3 -2
- 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
|
+
}
|
package/dist/eventcatalog.cjs
CHANGED
|
@@ -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.
|
|
117
|
+
var version = "3.35.1";
|
|
118
118
|
|
|
119
119
|
// src/constants.ts
|
|
120
120
|
var VERSION = version;
|
package/dist/eventcatalog.js
CHANGED
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
} from "./chunk-K3ZVEX2Y.js";
|
|
7
7
|
import {
|
|
8
8
|
log_build_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
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-
|
|
25
|
+
} from "./chunk-R4DR3YAH.js";
|
|
26
26
|
import {
|
|
27
27
|
logger
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-4SNN54V4.js";
|
|
29
29
|
import {
|
|
30
30
|
VERSION
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-B7C4DHFE.js";
|
|
32
32
|
import {
|
|
33
33
|
getEventCatalogConfigFile,
|
|
34
34
|
verifyRequiredFieldsAreInCatalogConfigFile
|
package/dist/generate.cjs
CHANGED
package/dist/generate.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generate
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
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
|
package/dist/utils/cli-logger.js
CHANGED
|
@@ -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 =
|
|
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: `
|
|
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 ?
|
|
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
|
|
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[
|
|
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[]),
|