@eventcatalog/core 3.35.0 → 3.36.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-LUWCWNOR.js → chunk-6D65JSOA.js} +1 -1
- package/dist/{chunk-NEWQKEP7.js → chunk-C7JCOHTI.js} +1 -1
- package/dist/chunk-D6IBLY3O.js +320 -0
- package/dist/{chunk-Y5O6SCX3.js → chunk-HDENGAZL.js} +1 -1
- package/dist/{chunk-DFLUDECO.js → chunk-UJ7DX4SA.js} +3 -3
- package/dist/{chunk-3KXCGYET.js → chunk-ULZYHF3V.js} +5 -0
- package/dist/{chunk-B2LDVIVY.js → chunk-V22QY5Q3.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 +959 -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/03-search.md +79 -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 +434 -35
- package/dist/eventcatalog.config.d.cts +8 -0
- package/dist/eventcatalog.config.d.ts +8 -0
- package/dist/eventcatalog.js +87 -10
- package/dist/features.cjs +6 -0
- package/dist/features.d.cts +2 -1
- package/dist/features.d.ts +2 -1
- package/dist/features.js +3 -1
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/search-indexer.cjs +356 -0
- package/dist/search-indexer.d.cts +30 -0
- package/dist/search-indexer.d.ts +30 -0
- package/dist/search-indexer.js +10 -0
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/eventcatalog/astro.config.mjs +28 -32
- package/eventcatalog/src/components/Search/SearchModal.tsx +248 -148
- package/eventcatalog/src/components/Search/search-utils.spec.ts +138 -1
- package/eventcatalog/src/components/Search/search-utils.ts +271 -0
- package/eventcatalog/src/env.d.ts +1 -0
- package/package.json +4 -3
|
@@ -27,7 +27,18 @@ 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 {
|
|
30
|
+
import {
|
|
31
|
+
applyActiveFilter,
|
|
32
|
+
getSearchFilters,
|
|
33
|
+
getUrlForSearchItem,
|
|
34
|
+
highlightQuery,
|
|
35
|
+
mapPagefindResultsToSearchItems,
|
|
36
|
+
type SearchItem,
|
|
37
|
+
type SearchNode,
|
|
38
|
+
} from './search-utils';
|
|
39
|
+
|
|
40
|
+
const INDEXED_RESULT_LOAD_LIMIT = 50;
|
|
41
|
+
const SEARCH_RESULT_DISPLAY_LIMIT = 25;
|
|
31
42
|
|
|
32
43
|
const typeIcons: any = {
|
|
33
44
|
Domain: RectangleGroupIcon,
|
|
@@ -46,6 +57,9 @@ const typeIcons: any = {
|
|
|
46
57
|
Container: CircleStackIcon,
|
|
47
58
|
'Data Product': CubeIcon,
|
|
48
59
|
Flow: QueueListIcon,
|
|
60
|
+
'Custom Doc': DocumentTextIcon,
|
|
61
|
+
'Resource Doc': DocumentTextIcon,
|
|
62
|
+
Changelog: DocumentTextIcon,
|
|
49
63
|
default: DocumentTextIcon,
|
|
50
64
|
};
|
|
51
65
|
|
|
@@ -67,6 +81,9 @@ const typeColors: any = {
|
|
|
67
81
|
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
82
|
'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
83
|
Flow: 'text-fuchsia-500 dark:text-fuchsia-400 bg-fuchsia-50 dark:bg-fuchsia-500/10 ring-fuchsia-200 dark:ring-fuchsia-500/30',
|
|
84
|
+
'Custom Doc': 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
|
|
85
|
+
'Resource Doc': 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
|
|
86
|
+
Changelog: 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
|
|
70
87
|
default: 'text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-500/10 ring-gray-200 dark:ring-gray-500/30',
|
|
71
88
|
};
|
|
72
89
|
|
|
@@ -74,15 +91,8 @@ function classNames(...classes: (string | boolean | undefined)[]) {
|
|
|
74
91
|
return classes.filter(Boolean).join(' ');
|
|
75
92
|
}
|
|
76
93
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
title: string;
|
|
80
|
-
badge?: string;
|
|
81
|
-
summary?: string;
|
|
82
|
-
href?: string;
|
|
83
|
-
icon?: string;
|
|
84
|
-
leftIcon?: string;
|
|
85
|
-
}
|
|
94
|
+
const searchResultHighlightClassName =
|
|
95
|
+
'[&_mark]:bg-transparent [&_mark]:p-0 [&_mark]:font-semibold [&_mark]:text-[rgb(var(--ec-accent))]';
|
|
86
96
|
|
|
87
97
|
interface SearchNodeCompact {
|
|
88
98
|
k: string;
|
|
@@ -99,6 +109,12 @@ interface SearchIndexPayload {
|
|
|
99
109
|
items?: SearchNode[];
|
|
100
110
|
}
|
|
101
111
|
|
|
112
|
+
interface PagefindModule {
|
|
113
|
+
init: () => Promise<void>;
|
|
114
|
+
options?: (options: Record<string, unknown>) => Promise<void>;
|
|
115
|
+
debouncedSearch: (term: string) => Promise<{ results: Array<{ id: string; score?: number; data: () => Promise<any> }> } | null>;
|
|
116
|
+
}
|
|
117
|
+
|
|
102
118
|
const normalizeSearchIndexPayload = (payload: SearchIndexPayload): SearchNode[] => {
|
|
103
119
|
if (payload.i) {
|
|
104
120
|
return payload.i.map((item) => ({
|
|
@@ -115,11 +131,21 @@ const normalizeSearchIndexPayload = (payload: SearchIndexPayload): SearchNode[]
|
|
|
115
131
|
return payload.items || [];
|
|
116
132
|
};
|
|
117
133
|
|
|
134
|
+
const loadPagefindModule = (url: string) => {
|
|
135
|
+
const nativeImport = new Function('url', 'return import(url)') as (url: string) => Promise<PagefindModule>;
|
|
136
|
+
return nativeImport(url);
|
|
137
|
+
};
|
|
138
|
+
|
|
118
139
|
export default function SearchModal() {
|
|
140
|
+
const searchType = typeof __EC_SEARCH_TYPE__ !== 'undefined' ? __EC_SEARCH_TYPE__ : 'resource';
|
|
141
|
+
const isIndexedSearch = searchType === 'indexed';
|
|
119
142
|
const [query, setQuery] = useState('');
|
|
120
143
|
const [open, setOpen] = useState(false);
|
|
121
144
|
const [activeFilter, setActiveFilter] = useState('all');
|
|
122
145
|
const [searchNodes, setSearchNodes] = useState<SearchNode[]>([]);
|
|
146
|
+
const [indexedItems, setIndexedItems] = useState<SearchItem[]>([]);
|
|
147
|
+
const [pagefind, setPagefind] = useState<PagefindModule | null>(null);
|
|
148
|
+
const [isSearchingIndexed, setIsSearchingIndexed] = useState(false);
|
|
123
149
|
const [isLoadingSearchIndex, setIsLoadingSearchIndex] = useState(false);
|
|
124
150
|
const [searchIndexLoadError, setSearchIndexLoadError] = useState<string | null>(null);
|
|
125
151
|
const favorites = useStore(favoritesStore);
|
|
@@ -141,7 +167,7 @@ export default function SearchModal() {
|
|
|
141
167
|
}, []);
|
|
142
168
|
|
|
143
169
|
useEffect(() => {
|
|
144
|
-
if (!open || searchNodes.length > 0 || isLoadingSearchIndex) {
|
|
170
|
+
if (isIndexedSearch || !open || searchNodes.length > 0 || isLoadingSearchIndex) {
|
|
145
171
|
return;
|
|
146
172
|
}
|
|
147
173
|
|
|
@@ -166,7 +192,46 @@ export default function SearchModal() {
|
|
|
166
192
|
.finally(() => {
|
|
167
193
|
setIsLoadingSearchIndex(false);
|
|
168
194
|
});
|
|
169
|
-
}, [open, searchNodes.length, isLoadingSearchIndex]);
|
|
195
|
+
}, [isIndexedSearch, open, searchNodes.length, isLoadingSearchIndex]);
|
|
196
|
+
|
|
197
|
+
useEffect(() => {
|
|
198
|
+
if (!isIndexedSearch || !open || pagefind || isLoadingSearchIndex) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
setIsLoadingSearchIndex(true);
|
|
203
|
+
setSearchIndexLoadError(null);
|
|
204
|
+
|
|
205
|
+
const pagefindUrl = buildUrl('/pagefind/pagefind.js', true);
|
|
206
|
+
|
|
207
|
+
loadPagefindModule(pagefindUrl)
|
|
208
|
+
.then(async (module: PagefindModule) => {
|
|
209
|
+
await module.options?.({
|
|
210
|
+
excerptLength: 30,
|
|
211
|
+
ranking: {
|
|
212
|
+
metaWeights: {
|
|
213
|
+
title: 5.0,
|
|
214
|
+
id: 4.0,
|
|
215
|
+
summary: 2.0,
|
|
216
|
+
type: 1.5,
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
await module.init();
|
|
221
|
+
setPagefind(module);
|
|
222
|
+
})
|
|
223
|
+
.catch((error) => {
|
|
224
|
+
console.error(error);
|
|
225
|
+
setSearchIndexLoadError(
|
|
226
|
+
import.meta.env.DEV
|
|
227
|
+
? 'The local indexed search files could not be loaded. Restart the catalog dev server to rebuild the index.'
|
|
228
|
+
: 'Indexed search is enabled, but the generated search index could not be loaded. Run `eventcatalog build` to create it.'
|
|
229
|
+
);
|
|
230
|
+
})
|
|
231
|
+
.finally(() => {
|
|
232
|
+
setIsLoadingSearchIndex(false);
|
|
233
|
+
});
|
|
234
|
+
}, [isIndexedSearch, open, pagefind, isLoadingSearchIndex]);
|
|
170
235
|
|
|
171
236
|
const closeModal = () => {
|
|
172
237
|
if ((window as any).searchModalState) {
|
|
@@ -194,8 +259,55 @@ export default function SearchModal() {
|
|
|
194
259
|
.filter((item): item is NonNullable<typeof item> => item !== null);
|
|
195
260
|
}, [searchNodes]);
|
|
196
261
|
|
|
262
|
+
useEffect(() => {
|
|
263
|
+
if (!isIndexedSearch || !pagefind || query.trim() === '') {
|
|
264
|
+
setIndexedItems([]);
|
|
265
|
+
setIsSearchingIndexed(false);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
let cancelled = false;
|
|
270
|
+
setIsSearchingIndexed(true);
|
|
271
|
+
|
|
272
|
+
const timeout = window.setTimeout(async () => {
|
|
273
|
+
try {
|
|
274
|
+
const search = await pagefind.debouncedSearch(query);
|
|
275
|
+
if (cancelled || !search?.results) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const results = await mapPagefindResultsToSearchItems({
|
|
280
|
+
results: search.results,
|
|
281
|
+
query,
|
|
282
|
+
limit: INDEXED_RESULT_LOAD_LIMIT,
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
if (!cancelled) {
|
|
286
|
+
setIndexedItems(results);
|
|
287
|
+
}
|
|
288
|
+
} catch (error) {
|
|
289
|
+
if (!cancelled) {
|
|
290
|
+
setSearchIndexLoadError(error instanceof Error ? error.message : 'Unable to search the indexed catalog');
|
|
291
|
+
}
|
|
292
|
+
} finally {
|
|
293
|
+
if (!cancelled) {
|
|
294
|
+
setIsSearchingIndexed(false);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}, 120);
|
|
298
|
+
|
|
299
|
+
return () => {
|
|
300
|
+
cancelled = true;
|
|
301
|
+
window.clearTimeout(timeout);
|
|
302
|
+
};
|
|
303
|
+
}, [isIndexedSearch, pagefind, query]);
|
|
304
|
+
|
|
197
305
|
// Get searchable items (items that match the query but not filtered by type yet)
|
|
198
306
|
const searchableItems = useMemo(() => {
|
|
307
|
+
if (isIndexedSearch) {
|
|
308
|
+
return indexedItems;
|
|
309
|
+
}
|
|
310
|
+
|
|
199
311
|
if (query === '') {
|
|
200
312
|
// When no query, show all items for filter counts
|
|
201
313
|
return items;
|
|
@@ -208,66 +320,20 @@ export default function SearchModal() {
|
|
|
208
320
|
// Match against the id so users can find resources by their raw id too.
|
|
209
321
|
const keyParts = item.key?.split(':') ?? [];
|
|
210
322
|
const id = keyParts[1];
|
|
211
|
-
|
|
323
|
+
if (id?.toLowerCase().includes(lowerQuery)) return true;
|
|
324
|
+
return !!item.rawNode.summary && item.rawNode.summary.toLowerCase().includes(lowerQuery);
|
|
212
325
|
});
|
|
213
|
-
}, [items, query]);
|
|
326
|
+
}, [indexedItems, isIndexedSearch, items, query]);
|
|
214
327
|
|
|
215
328
|
const filters = useMemo(() => {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return [{ id: 'all', name: 'All (0)' }];
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
const itemsToCount = query === '' ? items : searchableItems;
|
|
223
|
-
|
|
224
|
-
const counts: Record<string, number> = {
|
|
225
|
-
all: itemsToCount.length,
|
|
226
|
-
Domain: 0,
|
|
227
|
-
Service: 0,
|
|
228
|
-
Message: 0,
|
|
229
|
-
Team: 0,
|
|
230
|
-
Container: 0,
|
|
231
|
-
Entity: 0,
|
|
232
|
-
Design: 0,
|
|
233
|
-
Channel: 0,
|
|
234
|
-
Flow: 0,
|
|
235
|
-
'Data Product': 0,
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
itemsToCount.forEach((item) => {
|
|
239
|
-
// Count specific types
|
|
240
|
-
if (counts[item.type] !== undefined) {
|
|
241
|
-
counts[item.type]++;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Group counts
|
|
245
|
-
if (['Event', 'Command', 'Query'].includes(item.type)) {
|
|
246
|
-
counts.Message++;
|
|
247
|
-
}
|
|
248
|
-
if (['Team', 'User'].includes(item.type)) {
|
|
249
|
-
counts.Team++;
|
|
250
|
-
}
|
|
329
|
+
return getSearchFilters({
|
|
330
|
+
items: query === '' ? items : searchableItems,
|
|
331
|
+
query,
|
|
251
332
|
});
|
|
252
|
-
|
|
253
|
-
const dynamicFilters = [{ id: 'all', name: `All (${counts.all})` }];
|
|
254
|
-
|
|
255
|
-
// Only show filters that have results when searching
|
|
256
|
-
if (counts.Domain > 0) dynamicFilters.push({ id: 'Domain', name: `Domains (${counts.Domain})` });
|
|
257
|
-
if (counts.Service > 0) dynamicFilters.push({ id: 'Service', name: `Services (${counts.Service})` });
|
|
258
|
-
if (counts.Message > 0) dynamicFilters.push({ id: 'Message', name: `Messages (${counts.Message})` });
|
|
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})` });
|
|
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']})` });
|
|
265
|
-
if (counts.Design > 0) dynamicFilters.push({ id: 'Design', name: `Designs (${counts.Design})` });
|
|
266
|
-
if (counts.Team > 0) dynamicFilters.push({ id: 'Team', name: `Teams & Users (${counts.Team})` });
|
|
267
|
-
|
|
268
|
-
return dynamicFilters;
|
|
269
333
|
}, [searchableItems, items, query]);
|
|
270
334
|
|
|
335
|
+
const showFilterTabs = filters.some((filter) => filter.count > 0);
|
|
336
|
+
|
|
271
337
|
// Reset active filter if it no longer has results
|
|
272
338
|
useEffect(() => {
|
|
273
339
|
if (activeFilter !== 'all' && !filters.some((f) => f.id === activeFilter)) {
|
|
@@ -279,6 +345,8 @@ export default function SearchModal() {
|
|
|
279
345
|
e.preventDefault();
|
|
280
346
|
e.stopPropagation();
|
|
281
347
|
|
|
348
|
+
if (!item.key) return;
|
|
349
|
+
|
|
282
350
|
toggleFavoriteAction({
|
|
283
351
|
nodeKey: item.key,
|
|
284
352
|
path: [], // Path is not easily available here, but Sidebar rebuilds it
|
|
@@ -293,6 +361,14 @@ export default function SearchModal() {
|
|
|
293
361
|
}, [searchNodes]);
|
|
294
362
|
|
|
295
363
|
const filteredItems = useMemo(() => {
|
|
364
|
+
if (isIndexedSearch) {
|
|
365
|
+
if (query === '') {
|
|
366
|
+
return [];
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return applyActiveFilter(searchableItems, activeFilter).slice(0, SEARCH_RESULT_DISPLAY_LIMIT);
|
|
370
|
+
}
|
|
371
|
+
|
|
296
372
|
if (query === '') {
|
|
297
373
|
// Show favorites when search is empty
|
|
298
374
|
if (favorites.length > 0 && activeFilter === 'all') {
|
|
@@ -318,22 +394,8 @@ export default function SearchModal() {
|
|
|
318
394
|
return [];
|
|
319
395
|
}
|
|
320
396
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
// Apply type filter
|
|
325
|
-
if (activeFilter !== 'all') {
|
|
326
|
-
if (activeFilter === 'Message') {
|
|
327
|
-
result = result.filter((item) => ['Event', 'Command', 'Query'].includes(item.type));
|
|
328
|
-
} else if (activeFilter === 'Team') {
|
|
329
|
-
result = result.filter((item) => ['Team', 'User'].includes(item.type));
|
|
330
|
-
} else {
|
|
331
|
-
result = result.filter((item) => item.type === activeFilter);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
return result.slice(0, 50); // Limit results for performance
|
|
336
|
-
}, [searchableItems, query, activeFilter, favorites, searchNodeLookup]);
|
|
397
|
+
return applyActiveFilter(searchableItems, activeFilter).slice(0, SEARCH_RESULT_DISPLAY_LIMIT);
|
|
398
|
+
}, [isIndexedSearch, searchableItems, query, activeFilter, favorites, searchNodeLookup]);
|
|
337
399
|
|
|
338
400
|
return (
|
|
339
401
|
<Transition.Root
|
|
@@ -384,58 +446,74 @@ export default function SearchModal() {
|
|
|
384
446
|
/>
|
|
385
447
|
<Combobox.Input
|
|
386
448
|
ref={inputRef}
|
|
387
|
-
className=
|
|
449
|
+
className={classNames(
|
|
450
|
+
'h-12 w-full border-0 bg-transparent pl-11 text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-0 sm:text-sm focus:outline-hidden',
|
|
451
|
+
query.trim() !== '' && filteredItems.length > 0 ? 'pr-20' : 'pr-4'
|
|
452
|
+
)}
|
|
388
453
|
placeholder="Search..."
|
|
389
454
|
onChange={(event) => setQuery(event.target.value)}
|
|
390
455
|
value={query}
|
|
391
456
|
autoFocus
|
|
392
457
|
autoComplete="off"
|
|
393
458
|
/>
|
|
459
|
+
{query.trim() !== '' && filteredItems.length > 0 && (
|
|
460
|
+
<kbd className="pointer-events-none absolute right-4 top-2.5 rounded-lg bg-[rgb(var(--ec-content-hover))] px-2.5 py-1 text-xs font-semibold text-[rgb(var(--ec-page-text-muted))] ring-1 ring-inset ring-[rgb(var(--ec-page-border))]">
|
|
461
|
+
ESC
|
|
462
|
+
</kbd>
|
|
463
|
+
)}
|
|
394
464
|
</div>
|
|
395
465
|
|
|
396
466
|
{/* Filter Tabs */}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
467
|
+
{showFilterTabs && (
|
|
468
|
+
<div
|
|
469
|
+
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))]"
|
|
470
|
+
style={{
|
|
471
|
+
scrollbarWidth: 'thin',
|
|
472
|
+
scrollbarColor: 'rgb(var(--ec-page-border)) transparent',
|
|
473
|
+
}}
|
|
474
|
+
>
|
|
475
|
+
{filters.map((tab) => (
|
|
476
|
+
<button
|
|
477
|
+
key={tab.id}
|
|
478
|
+
onClick={() => setActiveFilter(tab.id)}
|
|
479
|
+
className={classNames(
|
|
480
|
+
'px-3 py-1 text-xs font-medium rounded-full transition-colors whitespace-nowrap',
|
|
481
|
+
activeFilter === tab.id
|
|
482
|
+
? 'bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-accent-text))]'
|
|
483
|
+
: 'bg-[rgb(var(--ec-content-hover))] text-[rgb(var(--ec-page-text-muted))] hover:bg-[rgb(var(--ec-content-active))]'
|
|
484
|
+
)}
|
|
485
|
+
>
|
|
486
|
+
{tab.name}
|
|
487
|
+
</button>
|
|
488
|
+
))}
|
|
489
|
+
</div>
|
|
490
|
+
)}
|
|
419
491
|
|
|
420
492
|
{isLoadingSearchIndex && (
|
|
421
493
|
<div className="py-10 px-6 text-center text-sm sm:px-14">
|
|
422
494
|
<MagnifyingGlassIcon className="mx-auto h-6 w-6 text-[rgb(var(--ec-icon-color))] animate-pulse" />
|
|
423
495
|
<p className="mt-4 font-semibold text-[rgb(var(--ec-page-text))]">Loading search index…</p>
|
|
424
|
-
<p className="mt-2 text-[rgb(var(--ec-page-text-muted))]">
|
|
496
|
+
<p className="mt-2 text-[rgb(var(--ec-page-text-muted))]">
|
|
497
|
+
{isIndexedSearch ? 'Preparing indexed search.' : 'Preparing resources for search.'}
|
|
498
|
+
</p>
|
|
425
499
|
</div>
|
|
426
500
|
)}
|
|
427
501
|
|
|
428
502
|
{searchIndexLoadError && !isLoadingSearchIndex && (
|
|
429
|
-
<div className="
|
|
430
|
-
<
|
|
431
|
-
|
|
432
|
-
|
|
503
|
+
<div className="px-6 py-12 text-center text-sm sm:px-14">
|
|
504
|
+
<div className="mx-auto flex h-10 w-10 items-center justify-center rounded-lg bg-[rgb(var(--ec-content-hover))] text-[rgb(var(--ec-icon-color))] ring-1 ring-inset ring-[rgb(var(--ec-page-border))]">
|
|
505
|
+
<ExclamationCircleIcon className="h-5 w-5" aria-hidden="true" />
|
|
506
|
+
</div>
|
|
507
|
+
<p className="mt-4 font-semibold text-[rgb(var(--ec-page-text))]">
|
|
508
|
+
{isIndexedSearch ? 'Indexed search is not ready' : 'Search is not ready'}
|
|
509
|
+
</p>
|
|
510
|
+
<p className="mx-auto mt-2 max-w-sm text-[rgb(var(--ec-page-text-muted))]">{searchIndexLoadError}</p>
|
|
433
511
|
</div>
|
|
434
512
|
)}
|
|
435
513
|
|
|
436
514
|
{!isLoadingSearchIndex && !searchIndexLoadError && filteredItems.length > 0 && (
|
|
437
515
|
<>
|
|
438
|
-
{query === '' && favorites.length > 0 && (
|
|
516
|
+
{!isIndexedSearch && query === '' && favorites.length > 0 && (
|
|
439
517
|
<div className="px-6 pt-3 pb-2">
|
|
440
518
|
<p className="text-xs text-[rgb(var(--ec-page-text-muted))]">Favourites</p>
|
|
441
519
|
</div>
|
|
@@ -445,7 +523,7 @@ export default function SearchModal() {
|
|
|
445
523
|
const Icon = typeIcons[item.type] || typeIcons.default;
|
|
446
524
|
const colors = typeColors[item.type] || typeColors.default;
|
|
447
525
|
|
|
448
|
-
const isFavorite = favorites.some((fav) => fav.nodeKey === item.key);
|
|
526
|
+
const isFavorite = !!item.key && favorites.some((fav) => fav.nodeKey === item.key);
|
|
449
527
|
|
|
450
528
|
return (
|
|
451
529
|
<Combobox.Option
|
|
@@ -481,48 +559,60 @@ export default function SearchModal() {
|
|
|
481
559
|
<p
|
|
482
560
|
className={classNames(
|
|
483
561
|
'text-sm font-medium',
|
|
562
|
+
searchResultHighlightClassName,
|
|
484
563
|
active ? 'text-[rgb(var(--ec-page-text))]' : 'text-[rgb(var(--ec-page-text))]'
|
|
485
564
|
)}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
</p>
|
|
565
|
+
dangerouslySetInnerHTML={{ __html: highlightQuery(item.name, query) }}
|
|
566
|
+
/>
|
|
489
567
|
<div className="flex items-center gap-2">
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
568
|
+
{!item.rawNode.matchedExcerpt && (
|
|
569
|
+
<p
|
|
570
|
+
className={classNames(
|
|
571
|
+
'text-xs flex-shrink-0',
|
|
572
|
+
active ? 'text-[rgb(var(--ec-page-text))]' : 'text-[rgb(var(--ec-page-text-muted))]'
|
|
573
|
+
)}
|
|
574
|
+
>
|
|
575
|
+
{item.type}
|
|
576
|
+
</p>
|
|
577
|
+
)}
|
|
498
578
|
{item.rawNode.summary && (
|
|
499
579
|
<p
|
|
500
580
|
className={classNames(
|
|
501
|
-
'text-
|
|
581
|
+
'text-xs truncate',
|
|
502
582
|
active ? 'text-[rgb(var(--ec-page-text-muted))]' : 'text-[rgb(var(--ec-icon-color))]'
|
|
503
583
|
)}
|
|
504
584
|
>
|
|
505
|
-
|
|
585
|
+
{!item.rawNode.matchedExcerpt && '• '}
|
|
586
|
+
{item.rawNode.matchedExcerpt ? (
|
|
587
|
+
<span
|
|
588
|
+
className={searchResultHighlightClassName}
|
|
589
|
+
dangerouslySetInnerHTML={{ __html: item.rawNode.matchedExcerpt }}
|
|
590
|
+
/>
|
|
591
|
+
) : (
|
|
592
|
+
item.rawNode.summary
|
|
593
|
+
)}
|
|
506
594
|
</p>
|
|
507
595
|
)}
|
|
508
596
|
</div>
|
|
509
597
|
</div>
|
|
510
598
|
<div className="flex items-center">
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
e
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
599
|
+
{!!item.key && (
|
|
600
|
+
<button
|
|
601
|
+
onClick={(e) => handleToggleFavorite(e, item)}
|
|
602
|
+
onMouseDown={(e) => {
|
|
603
|
+
e.preventDefault();
|
|
604
|
+
e.stopPropagation();
|
|
605
|
+
}}
|
|
606
|
+
className={classNames(
|
|
607
|
+
'p-1 rounded-md transition-colors mr-2',
|
|
608
|
+
isFavorite
|
|
609
|
+
? 'text-amber-400 hover:text-amber-500'
|
|
610
|
+
: 'text-[rgb(var(--ec-icon-color))] opacity-0 group-hover:opacity-100 hover:text-amber-400'
|
|
611
|
+
)}
|
|
612
|
+
>
|
|
613
|
+
{isFavorite ? <StarIconSolid className="h-5 w-5" /> : <StarIcon className="h-5 w-5" />}
|
|
614
|
+
</button>
|
|
615
|
+
)}
|
|
526
616
|
{active && (
|
|
527
617
|
<ArrowRightIcon className="h-5 w-5 text-[rgb(var(--ec-icon-color))]" aria-hidden="true" />
|
|
528
618
|
)}
|
|
@@ -538,14 +628,22 @@ export default function SearchModal() {
|
|
|
538
628
|
|
|
539
629
|
{!isLoadingSearchIndex && !searchIndexLoadError && query !== '' && filteredItems.length === 0 && (
|
|
540
630
|
<div className="py-14 px-6 text-center text-sm sm:px-14">
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
631
|
+
{isSearchingIndexed ? (
|
|
632
|
+
<MagnifyingGlassIcon className="mx-auto h-6 w-6 text-[rgb(var(--ec-icon-color))] animate-pulse" />
|
|
633
|
+
) : (
|
|
634
|
+
<ExclamationCircleIcon
|
|
635
|
+
type="outline"
|
|
636
|
+
name="exclamation-circle"
|
|
637
|
+
className="mx-auto h-6 w-6 text-[rgb(var(--ec-icon-color))]"
|
|
638
|
+
/>
|
|
639
|
+
)}
|
|
640
|
+
<p className="mt-4 font-semibold text-[rgb(var(--ec-page-text))]">
|
|
641
|
+
{isSearchingIndexed ? 'Searching…' : 'No results found'}
|
|
642
|
+
</p>
|
|
547
643
|
<p className="mt-2 text-[rgb(var(--ec-page-text-muted))]">
|
|
548
|
-
|
|
644
|
+
{isSearchingIndexed
|
|
645
|
+
? 'Searching the indexed catalog.'
|
|
646
|
+
: 'No components found for this search term. Please try again.'}
|
|
549
647
|
</p>
|
|
550
648
|
</div>
|
|
551
649
|
)}
|
|
@@ -555,7 +653,9 @@ export default function SearchModal() {
|
|
|
555
653
|
<MagnifyingGlassIcon className="mx-auto h-6 w-6 text-[rgb(var(--ec-icon-color))]" />
|
|
556
654
|
<p className="mt-4 font-semibold text-[rgb(var(--ec-page-text))]">Search for anything</p>
|
|
557
655
|
<p className="mt-2 text-[rgb(var(--ec-page-text-muted))]">
|
|
558
|
-
|
|
656
|
+
{isIndexedSearch
|
|
657
|
+
? 'Search indexed catalog content, custom docs, resources and more.'
|
|
658
|
+
: 'Search for domains, services, events, commands, queries, data stores, data products, flows and more.'}
|
|
559
659
|
</p>
|
|
560
660
|
</div>
|
|
561
661
|
)}
|