@eventcatalog/core 4.2.3 → 4.2.4
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-M2YEUPPP.js → chunk-5MIGBCON.js} +1 -1
- package/dist/{chunk-WOASLQ3F.js → chunk-BXEGST4Z.js} +1 -1
- package/dist/{chunk-QQC5UX3E.js → chunk-GCEFDCZB.js} +1 -1
- package/dist/{chunk-DGDCWOWP.js → chunk-J2MVHSKA.js} +1 -1
- package/dist/{chunk-I4TTHHXI.js → chunk-WVIOZDVK.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/docs/development/00-why-eventcatalog.md +8 -8
- package/dist/docs/development/01-fundamentals.md +15 -12
- package/dist/docs/development/bring-your-own-documentation/diagrams/07-reference.md +4 -0
- package/dist/docs/development/components/components/07-custom-properties.md +85 -0
- package/dist/docs/development/components/components/{07-design.md → 08-design.md} +1 -1
- package/dist/docs/development/components/components/{08-entitymap.md → 09-entitymap.md} +2 -2
- package/dist/docs/development/components/components/{09-flow.md → 10-flow.md} +1 -1
- package/dist/docs/development/components/components/{10-link.md → 11-link.md} +1 -1
- package/dist/docs/development/components/components/{11-mermaid-file-loader.md → 12-mermaid-file-loader.md} +1 -1
- package/dist/docs/development/components/components/{12-message-table.md → 13-message-table.md} +1 -1
- package/dist/docs/development/components/components/{13-nodegraph.md → 14-nodegraph.md} +1 -2
- package/dist/docs/development/components/components/{14-openapi.md → 15-openapi.md} +1 -1
- package/dist/docs/development/components/components/{15-prompt.md → 16-prompt.md} +1 -1
- package/dist/docs/development/components/components/{16-remote-schema.md → 17-remote-schema.md} +1 -1
- package/dist/docs/development/components/components/{17-resource-group-table.md → 18-resource-group-table.md} +1 -1
- package/dist/docs/development/components/components/{18-resource-link.md → 19-resource-link.md} +1 -1
- package/dist/docs/development/components/components/{19-schema.md → 20-schema.md} +1 -1
- package/dist/docs/development/components/components/{20-schema-viewer.md → 21-schema-viewer.md} +1 -1
- package/dist/docs/development/components/components/{21-steps.md → 22-steps.md} +1 -1
- package/dist/docs/development/components/components/{22-tabs.md → 23-tabs.md} +1 -1
- package/dist/docs/development/components/components/{23-tiles.md → 24-tiles.md} +1 -1
- package/dist/docs/development/components/components/{24-visibility.md → 25-visibility.md} +1 -1
- package/dist/docs/development/customization/02-themes.md +1 -1
- package/dist/docs/development/customization/06-customize-tables.md +1 -1
- package/dist/docs/development/customization/07-resource-icons.md +1 -1
- package/dist/docs/development/customization/08-custom-properties.md +176 -0
- package/dist/docs/development/customization/customize-visualizer/_category_.json +1 -1
- package/dist/docs/development/deployment/build-ssr-mode.md +9 -1
- package/dist/docs/development/guides/domains/09-reference.md +4 -0
- package/dist/docs/development/guides/resources/adrs/06-reference.md +4 -0
- package/dist/docs/development/guides/resources/agents/11-reference.md +4 -0
- package/dist/docs/development/guides/resources/data/04-reference.md +4 -0
- package/dist/docs/development/guides/resources/data-products/07-reference.md +4 -0
- package/dist/docs/development/guides/resources/entities/06-reference.md +4 -0
- package/dist/docs/development/guides/resources/flows/06-reference.md +4 -0
- package/dist/docs/development/guides/resources/messages/04-connect-messages/02-shared-messages-across-boundaries.md +1 -0
- package/dist/docs/development/guides/resources/messages/04-connect-messages/04-map-commands-to-events.md +95 -0
- package/dist/docs/development/guides/resources/messages/04-message-channels/05-reference.md +4 -0
- package/dist/docs/development/guides/resources/messages/10-reference.md +4 -0
- package/dist/docs/development/guides/resources/services/08-reference.md +12 -0
- package/dist/docs/development/guides/systems/06-reference.md +4 -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/package.json +11 -11
|
@@ -140,7 +140,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
|
|
|
140
140
|
var import_os = __toESM(require("os"), 1);
|
|
141
141
|
|
|
142
142
|
// package.json
|
|
143
|
-
var version = "4.2.
|
|
143
|
+
var version = "4.2.4";
|
|
144
144
|
|
|
145
145
|
// src/constants.ts
|
|
146
146
|
var VERSION = version;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log_build_default
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-GCEFDCZB.js";
|
|
4
4
|
import "../chunk-K2XIENVT.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-BXEGST4Z.js";
|
|
6
|
+
import "../chunk-J2MVHSKA.js";
|
|
7
7
|
import "../chunk-6QENHZZP.js";
|
|
8
8
|
export {
|
|
9
9
|
log_build_default as default
|
package/dist/constants.cjs
CHANGED
package/dist/constants.js
CHANGED
|
@@ -18,33 +18,33 @@ As systems grow, complexity grows. Documentation becomes important for teams but
|
|
|
18
18
|
|
|
19
19
|
### What is EventCatalog?
|
|
20
20
|
|
|
21
|
-
EventCatalog is
|
|
21
|
+
EventCatalog is an open source documentation tool that is built for software architecture.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
We focus on architecture primitives like domains, systems and resources (e.g services, messages) and let you document your architecture with primitives you are already familiar with.
|
|
24
24
|
|
|
25
25
|
EventCatalog creates an internal architecture graph of how your systems work. This makes EventCatalog accessible to your AI agents, LLMs and AI workflows and [creates context of your business and architecture](/docs/development/ask-your-architecture/intro).
|
|
26
26
|
|
|
27
|
-
EventCatalog is technology agnostic, this means you can document and model any systems you have
|
|
27
|
+
EventCatalog is technology agnostic, this means you can document and model any systems you have.
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
####
|
|
30
|
+
#### Our project goals for you
|
|
31
31
|
|
|
32
|
-
- **
|
|
32
|
+
- **Help you save time across the organization**
|
|
33
33
|
- Help teams find information they need across your business and organization
|
|
34
34
|
- Document high level information for stakeholders while providing lower level details to your teams.
|
|
35
35
|
- Connect to your AI Agents and AI Workflows. Give your LLMs the context they need.
|
|
36
|
-
- **Create documentation you can trust**
|
|
36
|
+
- **Create a documentation solution you can trust**
|
|
37
37
|
- Sync documentation from your code with our Agent
|
|
38
38
|
- Automate documentation from your OpenAPI, AsyncAPI, or schema registries
|
|
39
39
|
- Use EventCatalog Agent to sync code to docs from your CI/CD workflows.
|
|
40
40
|
- Write your own automation and plugins with the [EventCatalog SDK](/docs/sdk)
|
|
41
|
-
- **
|
|
41
|
+
- **Help you detect breaking changes before they reach production**
|
|
42
42
|
- Use EventCatalog Agent to detect breaking schema changes
|
|
43
43
|
- Bring your own model and get notified when things break
|
|
44
44
|
- **Use natural langugage to query your architecture**
|
|
45
45
|
- Connect AI tools to your architecture using [EventCatalog's MCP server](/docs/development/ask-your-architecture/mcp-server/introduction)
|
|
46
46
|
- Ask architectural questions grounded in your documented domains, services, events, data products, and schemas
|
|
47
|
-
- **
|
|
47
|
+
- **Help your teams understand the bigger picture**
|
|
48
48
|
- Help business stakeholders understand the bigger picture
|
|
49
49
|
- Visualize your architecture and future ideas
|
|
50
50
|
- Document key business workflows
|
|
@@ -8,27 +8,28 @@ title: Fundamentals
|
|
|
8
8
|
description: Understanding the fundamentals of EventCatalog
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
EventCatalog is a
|
|
11
|
+
EventCatalog is a self hosted [open source documentation tool](https://github.com/event-catalog/eventcatalog/stargazers) for software architecture. It allows you to document your architecture using software primitives and patterns such as domains, systems and resources rather than random documentation pages (e.g Confluence).
|
|
12
12
|
|
|
13
|
-
EventCatalog
|
|
13
|
+
EventCatalog follows the [docs-as-code](https://www.writethedocs.org/guide/docs-as-code/) pattern. Your documentation is stored in code using [markdown (MDX)](https://mdxjs.com/) and stays private, in your own repository and infrastructure.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
At its core, EventCatalog gives you a small set of building blocks for your documentation.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
At its core, EventCatalog gives you a small set of building blocks.
|
|
17
|
+

|
|
20
18
|
|
|
21
19
|
- **Domains (Level 1)** - a domain describes a business boundary
|
|
22
20
|
- **Systems (Level 2)** - a system is a collection of resources that work together to perform a function.
|
|
23
21
|
- **Resources (Level 3)** - individual resources (e.g services, messages, data stores) that can be assigned to systems or domains.
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
:::info What blocks to use?
|
|
24
|
+
All building blocks are optional in your catalog. It's up to you how you want to model your documentation.
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
Want to match your c4 model?, you can. Want to document a monolith you can. Want to document distributed systems you can.
|
|
27
|
+
We focus on architecture primitives and let you fill in the details.
|
|
28
|
+
:::
|
|
28
29
|
|
|
29
30
|
## The EventCatalog model
|
|
30
31
|
|
|
31
|
-
Domains
|
|
32
|
+
Domains describe a business capability or boundary. They help users understand the boundaries in your architecture, such as `Shopping`, `Payments`, `Fulfilment`, or `Customer`.
|
|
32
33
|
|
|
33
34
|
Systems give your catalog an operating shape. A system is a collection of resources that work together to perform a function. For example, a `Shopping` domain might contain a `Cart System` and a `Promotion System`.
|
|
34
35
|
|
|
@@ -48,7 +49,9 @@ Teams and users can own domains, systems, resources, and contracts. This makes o
|
|
|
48
49
|
|
|
49
50
|
## Levels of detail
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
Architecture documentation all have different audiences, and EventCatalog can be useful to anyone in your organization.
|
|
53
|
+
|
|
54
|
+
You can define a high level of information for stakeholders whilst whilst giving lower level implementation details for developers.
|
|
52
55
|
|
|
53
56
|
| Level | Name | What it answers | Example |
|
|
54
57
|
|-------|------|-----------------|---------|
|
|
@@ -76,9 +79,9 @@ It's up to you where you define your catalog (or catalogs). Here are some exampl
|
|
|
76
79
|
| **Federated** | Multiple EventCatalog instances connected into one view |
|
|
77
80
|
|
|
78
81
|
|
|
79
|
-
##
|
|
82
|
+
## Living documentation
|
|
80
83
|
|
|
81
|
-
Your documentation can also be automated, keeping your implementation details close to your documentation. There are many [integrations](/integrations) or you can create your own automations with our [SDK](/docs/sdk).
|
|
84
|
+
Your documentation can also be automated, keeping your implementation details close to your documentation. There are many [integrations](/integrations) or you can create your own automations with our [SDK](/docs/sdk). We also have started building some [AI Agents to help you manage your documentation](https://github.com/event-catalog/agents) in CI/CD environments.
|
|
82
85
|
|
|
83
86
|
## Visual editing
|
|
84
87
|
|
|
@@ -142,3 +142,7 @@ attachments:
|
|
|
142
142
|
## Content
|
|
143
143
|
|
|
144
144
|
Diagram pages can contain any MDX supported by EventCatalog, including Mermaid, PlantUML, Miro, IcePanel, Lucid, Draw.io, FigJam, images, and normal markdown.
|
|
145
|
+
|
|
146
|
+
## Custom properties
|
|
147
|
+
|
|
148
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 7
|
|
3
|
+
keywords:
|
|
4
|
+
- components
|
|
5
|
+
- custom properties
|
|
6
|
+
- resource metadata
|
|
7
|
+
sidebar_label: CustomProperties
|
|
8
|
+
title: CustomProperties
|
|
9
|
+
description: Render custom x-* resource properties in EventCatalog.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
13
|
+
|
|
14
|
+
<AddedIn version="4.3.0" />
|
|
15
|
+
|
|
16
|
+
`<CustomProperties />` and `<CustomProperty />` render organization-specific `x-*` properties from the current resource.
|
|
17
|
+
|
|
18
|
+
Both are built-in components, so you can use them in resource MDX without importing them.
|
|
19
|
+
|
|
20
|
+
Read [Custom properties on resources](/docs/development/customization/custom-properties) to learn how to define `x-*` properties and reference them from MDX or your own components.
|
|
21
|
+
|
|
22
|
+
## Render all custom properties
|
|
23
|
+
|
|
24
|
+
Add custom properties to the resource frontmatter, then add `<CustomProperties />` to its Markdown content.
|
|
25
|
+
|
|
26
|
+
```jsx title="/adrs/adr-001-use-transactional-outbox/index.mdx"
|
|
27
|
+
---
|
|
28
|
+
id: adr-001-use-transactional-outbox
|
|
29
|
+
name: 'ADR-001: Publish product events via a transactional outbox'
|
|
30
|
+
version: 1.0.0
|
|
31
|
+
status: accepted
|
|
32
|
+
date: 2026-02-10
|
|
33
|
+
x-next-review-date: '2027-02-10'
|
|
34
|
+
x-risk-level: medium
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Context
|
|
38
|
+
|
|
39
|
+
The Product Catalog System publishes product changes through a transactional outbox.
|
|
40
|
+
|
|
41
|
+
<CustomProperties title="Review metadata" />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Output
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
Property names are converted into readable labels. For example, `x-next-review-date` is displayed as **Next Review Date**. The information icon beside each label shows the original `x-*` property name.
|
|
49
|
+
|
|
50
|
+
Strings, numbers, and booleans are rendered directly. Arrays are rendered as bullet lists, and nested objects are rendered recursively as grouped values.
|
|
51
|
+
|
|
52
|
+
### CustomProperties props
|
|
53
|
+
|
|
54
|
+
| Name | Type | Default | Description |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| `title` | `string` | `Custom properties` | Heading displayed above the properties table. Pass an empty string to hide the heading. |
|
|
57
|
+
|
|
58
|
+
## Render one custom property
|
|
59
|
+
|
|
60
|
+
Use `<CustomProperty />` when you only want to render one `x-*` value.
|
|
61
|
+
|
|
62
|
+
```mdx
|
|
63
|
+
<CustomProperty name="x-risk-level" />
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Use `label` to override the generated property label.
|
|
67
|
+
|
|
68
|
+
```mdx
|
|
69
|
+
<CustomProperty name="x-next-review-date" label="Review again on" />
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If the named property is not defined on the current resource, the component renders nothing.
|
|
73
|
+
|
|
74
|
+
### CustomProperty props
|
|
75
|
+
|
|
76
|
+
| Name | Type | Required | Description |
|
|
77
|
+
| --- | --- | --- | --- |
|
|
78
|
+
| `name` | `string` | Yes | Name of the `x-*` property to render. |
|
|
79
|
+
| `label` | `string` | No | Label displayed for the property. By default, EventCatalog generates a label from `name`. |
|
|
80
|
+
|
|
81
|
+
## Support
|
|
82
|
+
|
|
83
|
+
`<CustomProperties />` and `<CustomProperty />` are supported on domains, systems, services, agents, events, commands, queries, channels, flows, containers, entities, data products, diagrams, and ADRs.
|
|
84
|
+
|
|
85
|
+
The components require an `.mdx` resource file. Plain `.md` files do not evaluate MDX components.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
sidebar_position:
|
|
2
|
+
sidebar_position: 9
|
|
3
3
|
keywords:
|
|
4
4
|
- components
|
|
5
5
|
sidebar_label: EntityMap
|
|
@@ -68,4 +68,4 @@ If you want to render a subset of the entities in the map, you can use the `enti
|
|
|
68
68
|
|
|
69
69
|
In this example, only the `Order` and `Customer` entities will be chosen to be rendered in the map.
|
|
70
70
|
|
|
71
|
-
If the `Order` or `Customer` entity references other entities, they will also be rendered in the map
|
|
71
|
+
If the `Order` or `Customer` entity references other entities, they will also be rendered in the map
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 6
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog custom properties
|
|
5
|
+
- resource metadata
|
|
6
|
+
- custom frontmatter
|
|
7
|
+
sidebar_label: Resource custom properties
|
|
8
|
+
title: Custom properties on resources
|
|
9
|
+
description: Add organization-specific metadata to EventCatalog resources and render it in Markdown or custom components.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
13
|
+
|
|
14
|
+
<AddedIn version="4.2.3" />
|
|
15
|
+
|
|
16
|
+
Custom properties let you add organization-specific metadata to a resource without changing EventCatalog's built-in resource model.
|
|
17
|
+
|
|
18
|
+
Custom property names must:
|
|
19
|
+
|
|
20
|
+
- be defined at the top level of the resource frontmatter
|
|
21
|
+
- start with `x-`
|
|
22
|
+
- contain at least one character after `x-`
|
|
23
|
+
|
|
24
|
+
Their values can be strings, numbers, booleans, arrays, or nested objects.
|
|
25
|
+
|
|
26
|
+
```markdown title="/services/PaymentAPI/index.mdx"
|
|
27
|
+
---
|
|
28
|
+
id: PaymentAPI
|
|
29
|
+
name: Payment API
|
|
30
|
+
version: 1.0.0
|
|
31
|
+
summary: Authorizes and records payments.
|
|
32
|
+
x-operational-tier: 1
|
|
33
|
+
x-scrum-masters:
|
|
34
|
+
- David
|
|
35
|
+
- Andrew
|
|
36
|
+
x-on-call:
|
|
37
|
+
schedule: payments-primary
|
|
38
|
+
escalation-channel: '#payments-incidents'
|
|
39
|
+
---
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can add custom properties to domains, systems, services, agents, events, commands, queries, channels, flows, containers, entities, data products, diagrams, and ADRs.
|
|
43
|
+
|
|
44
|
+
## Why use custom properties?
|
|
45
|
+
|
|
46
|
+
EventCatalog provides first-class fields for common concepts such as owners, messages, relationships, schemas, and repositories. Custom properties are useful when your organization needs metadata that is specific to its own platform or processes.
|
|
47
|
+
|
|
48
|
+
For example, you can use them to record:
|
|
49
|
+
|
|
50
|
+
- operational tiers, recovery objectives, or on-call schedules
|
|
51
|
+
- data classification, retention, or compliance requirements
|
|
52
|
+
- internal cost centres or business capabilities
|
|
53
|
+
- maturity scores or governance review dates
|
|
54
|
+
- metadata consumed by generators, plugins, or custom components
|
|
55
|
+
|
|
56
|
+
Custom properties are also useful when you want to introduce an internal convention gradually without requiring EventCatalog to understand or interpret the value.
|
|
57
|
+
|
|
58
|
+
:::tip
|
|
59
|
+
Use EventCatalog's built-in fields when they already describe the concept. Use custom properties for metadata that is specific to your organization.
|
|
60
|
+
:::
|
|
61
|
+
|
|
62
|
+
## Render all custom properties
|
|
63
|
+
|
|
64
|
+
Add the `CustomProperties` component to the Markdown content of a resource to render every `x-*` property.
|
|
65
|
+
|
|
66
|
+
`CustomProperties` and `CustomProperty` are built-in components, so you do not need to import them.
|
|
67
|
+
|
|
68
|
+
```jsx title="/services/PaymentAPI/index.mdx"
|
|
69
|
+
<CustomProperties />
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
By default, the component uses **Custom properties** as its heading. Use the `title` prop to change it.
|
|
73
|
+
|
|
74
|
+
```jsx
|
|
75
|
+
<CustomProperties title="Operational metadata" />
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Property names are converted into readable labels. For example, `x-operational-tier` is displayed as **Operational Tier**. The original `x-*` name is available from the information icon beside the label.
|
|
79
|
+
|
|
80
|
+
Arrays are rendered as lists and nested objects are rendered as grouped values.
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
These component and JavaScript expression examples require an `.mdx` resource file. Plain `.md` files do not evaluate MDX components or expressions.
|
|
85
|
+
|
|
86
|
+
## Render one custom property
|
|
87
|
+
|
|
88
|
+
Use `CustomProperty` when you only want to show one value.
|
|
89
|
+
|
|
90
|
+
```jsx title="/services/PaymentAPI/index.mdx"
|
|
91
|
+
<CustomProperty name="x-operational-tier" />
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
You can override the generated label.
|
|
95
|
+
|
|
96
|
+
```jsx
|
|
97
|
+
<CustomProperty name="x-scrum-masters" label="Scrum masters" />
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
If the named property is not present on the resource, the component renders nothing.
|
|
101
|
+
|
|
102
|
+
## Reference custom properties in Markdown
|
|
103
|
+
|
|
104
|
+
Resource frontmatter is available through the `frontmatter` variable. Because custom property names contain hyphens, use JavaScript bracket notation.
|
|
105
|
+
|
|
106
|
+
```jsx title="/services/PaymentAPI/index.mdx"
|
|
107
|
+
## Operations
|
|
108
|
+
|
|
109
|
+
Operational tier: {frontmatter['x-operational-tier']}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Dot notation does not work:
|
|
113
|
+
|
|
114
|
+
```jsx
|
|
115
|
+
{/* This is interpreted as subtraction and causes a runtime error. */}
|
|
116
|
+
{frontmatter.x-operational-tier}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Render an array by mapping over its value.
|
|
120
|
+
|
|
121
|
+
```jsx
|
|
122
|
+
<ul>
|
|
123
|
+
{frontmatter['x-scrum-masters']?.map((name) => (
|
|
124
|
+
<li>{name}</li>
|
|
125
|
+
))}
|
|
126
|
+
</ul>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Nested object values can be referenced in the same way.
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
On-call schedule: {frontmatter['x-on-call'].schedule}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Pass custom properties to your own components
|
|
136
|
+
|
|
137
|
+
Custom components do not receive resource frontmatter automatically. Pass the values they need as props.
|
|
138
|
+
|
|
139
|
+
```jsx title="/services/PaymentAPI/index.mdx"
|
|
140
|
+
import OperationalMetadata from '@catalog/components/operational-metadata.astro';
|
|
141
|
+
|
|
142
|
+
<OperationalMetadata
|
|
143
|
+
tier={frontmatter['x-operational-tier']}
|
|
144
|
+
scrumMasters={frontmatter['x-scrum-masters']}
|
|
145
|
+
/>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Read those props in your Astro component.
|
|
149
|
+
|
|
150
|
+
```jsx title="/components/operational-metadata.astro"
|
|
151
|
+
---
|
|
152
|
+
interface Props {
|
|
153
|
+
tier: number;
|
|
154
|
+
scrumMasters?: string[];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const { tier, scrumMasters = [] } = Astro.props;
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
<section class="not-prose">
|
|
161
|
+
<p>Operational tier: {tier}</p>
|
|
162
|
+
<ul>
|
|
163
|
+
{scrumMasters.map((name) => <li>{name}</li>)}
|
|
164
|
+
</ul>
|
|
165
|
+
</section>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Read [Pass data into components](/docs/development/components/custom-components/pass-data-into-components) to learn more about using resource frontmatter with your own components.
|
|
169
|
+
|
|
170
|
+
## Naming and security guidance
|
|
171
|
+
|
|
172
|
+
- Use stable, descriptive names such as `x-operational-tier` or `x-data-classification`.
|
|
173
|
+
- Consider an organization namespace, such as `x-acme-cost-centre`, when properties may be shared across tools.
|
|
174
|
+
- Keep the meaning and expected value type consistent across resources.
|
|
175
|
+
- Do not store secrets, credentials, or private tokens in custom properties. Resource frontmatter is catalog content and may be included in generated output.
|
|
176
|
+
- Custom properties are stored and rendered, but EventCatalog does not automatically use them for relationships, diagrams, search behavior, or validation beyond the `x-*` naming requirement.
|
|
@@ -47,4 +47,12 @@ This will output one directory
|
|
|
47
47
|
|
|
48
48
|
You will need to deploy your EventCatalog to a server that can run Node.js.
|
|
49
49
|
|
|
50
|
-
The easiest way to do this is to use [a docker container](/docs/development/deployment/hosting-options#hosting-static-website-with-docker).
|
|
50
|
+
The easiest way to do this is to use [a docker container](/docs/development/deployment/hosting-options#hosting-static-website-with-docker).
|
|
51
|
+
|
|
52
|
+
## Loading indicator
|
|
53
|
+
|
|
54
|
+
<AddedIn version="4.2.4" />
|
|
55
|
+
|
|
56
|
+
Server-side rendering means a page's render time depends on your server, so navigations can occasionally take longer than a static build.
|
|
57
|
+
|
|
58
|
+
EventCatalog shows a thin progress bar at the top of the page during navigations that take longer than 200ms, so the catalog never looks unresponsive. It works automatically and needs no configuration.
|
|
@@ -515,3 +515,7 @@ The attachments can be a URL string or an object with additional properties.
|
|
|
515
515
|
| `description` | `string` | No | The description of the attachment. |
|
|
516
516
|
| `type` | `string` | No | The type of the attachment, used to group attachments in the UI. |
|
|
517
517
|
| `icon` | `string` | No | The icon of the attachment. You can pick from the [lucide icons](https://lucide.dev/icons/) library. |
|
|
518
|
+
|
|
519
|
+
## Custom properties
|
|
520
|
+
|
|
521
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -245,3 +245,7 @@ appliesTo:
|
|
|
245
245
|
```
|
|
246
246
|
|
|
247
247
|
Supported resource types include `agent`, `service`, `system`, `event`, `command`, `query`, `flow`, `channel`, `domain`, `user`, `team`, `container`, `entity`, `diagram`, and `data-product`.
|
|
248
|
+
|
|
249
|
+
## Custom properties
|
|
250
|
+
|
|
251
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -236,3 +236,7 @@ tools:
|
|
|
236
236
|
description: Retrieves order status and recent order events.
|
|
237
237
|
---
|
|
238
238
|
```
|
|
239
|
+
|
|
240
|
+
## Custom properties
|
|
241
|
+
|
|
242
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -209,3 +209,7 @@ badges:
|
|
|
209
209
|
textColor: green
|
|
210
210
|
---
|
|
211
211
|
```
|
|
212
|
+
|
|
213
|
+
## Custom properties
|
|
214
|
+
|
|
215
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -199,3 +199,7 @@ outputs:
|
|
|
199
199
|
type: avro
|
|
200
200
|
---
|
|
201
201
|
```
|
|
202
|
+
|
|
203
|
+
## Custom properties
|
|
204
|
+
|
|
205
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -271,3 +271,7 @@ Use `<EntityPropertiesTable />` in the entity Markdown body to render the entity
|
|
|
271
271
|
```
|
|
272
272
|
|
|
273
273
|
This is useful when you want the documentation page to show the same properties defined in frontmatter.
|
|
274
|
+
|
|
275
|
+
## Custom properties
|
|
276
|
+
|
|
277
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -224,3 +224,7 @@ steps:
|
|
|
224
224
|
next_step: submit-order
|
|
225
225
|
---
|
|
226
226
|
```
|
|
227
|
+
|
|
228
|
+
## Custom properties
|
|
229
|
+
|
|
230
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
keywords:
|
|
3
|
+
- EventCatalog command events
|
|
4
|
+
- command outcomes
|
|
5
|
+
- map commands to events
|
|
6
|
+
sidebar_label: Map commands to events
|
|
7
|
+
title: Map commands to events
|
|
8
|
+
description: Document which events a command can trigger, including the events produced in different scenarios.
|
|
9
|
+
sidebar_position: 2
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
13
|
+
|
|
14
|
+
<AddedIn version="4.2.0" />
|
|
15
|
+
|
|
16
|
+
Commands often produce one of several events. For example, a `CreateOrder` command may produce `OrderCreated` when it succeeds or `OrderRejected` when it fails.
|
|
17
|
+
|
|
18
|
+
EventCatalog lets you document these relationships so teams can see which events to expect from a command and which commands can produce a specific event.
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
## Connect a command to events
|
|
23
|
+
|
|
24
|
+
Commands are `received` from particular resources in EventCatalog (e.g services). When you receive a command, you can also specify what events are triggered downstream, you do this by using the `triggers` property.
|
|
25
|
+
|
|
26
|
+
In the example below, the `OrderService` receives the `CreateOrder` (command) and we also specify that htis command is linked to and triggers the `OrderCreated` and `OrderRejected` event.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
```md title="/services/OrderService/index.mdx"
|
|
30
|
+
---
|
|
31
|
+
id: OrderService
|
|
32
|
+
version: 1.0.0
|
|
33
|
+
name: Order service
|
|
34
|
+
receives:
|
|
35
|
+
# receives the CreateOrder Command
|
|
36
|
+
- id: CreateOrder
|
|
37
|
+
version: 1.0.0
|
|
38
|
+
# Tell EventCatalog that the CreateOrderCommand
|
|
39
|
+
# in this context will trigger the OrderCreated and Rejeected events.
|
|
40
|
+
triggers:
|
|
41
|
+
- id: OrderCreated
|
|
42
|
+
version: 1.0.0
|
|
43
|
+
- id: OrderRejected
|
|
44
|
+
version: 1.0.0
|
|
45
|
+
---
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The command and every event it triggers must already exist in your catalog before EventCatalog can resolve the relationship.
|
|
49
|
+
|
|
50
|
+
## Describe different scenarios
|
|
51
|
+
|
|
52
|
+
Add an optional `condition` to explain the scenario in which an event is produced. Conditions are useful for success and failure outcomes, business-rule branches, or different paths that produce the same event.
|
|
53
|
+
|
|
54
|
+
```md title="/services/OrderService/index.mdx"
|
|
55
|
+
---
|
|
56
|
+
id: OrderService
|
|
57
|
+
version: 1.0.0
|
|
58
|
+
name: Order service
|
|
59
|
+
receives:
|
|
60
|
+
- id: CreateOrder
|
|
61
|
+
version: 1.0.0
|
|
62
|
+
triggers:
|
|
63
|
+
- id: OrderCreated
|
|
64
|
+
version: 1.0.0
|
|
65
|
+
# specify the scenario when this event would be triggered
|
|
66
|
+
condition: When payment is authorized and stock is available
|
|
67
|
+
---
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
This lets you document common command-handling scenarios such as:
|
|
71
|
+
|
|
72
|
+
- A command producing a success event or a failure event.
|
|
73
|
+
- A command producing different events based on a business rule.
|
|
74
|
+
- Multiple paths producing the same event for different reasons.
|
|
75
|
+
- Different services producing different events from the same command.
|
|
76
|
+
|
|
77
|
+
| Property | Type | Required | Description |
|
|
78
|
+
| -------- | ---- | -------- | ----------- |
|
|
79
|
+
| `id` | `string` | Yes | Id of the event produced by the command. |
|
|
80
|
+
| `version` | `string` | No | Version or semver range of the event. Defaults to `latest`. |
|
|
81
|
+
| `condition` | `string` | No | Scenario in which the command produces the event. |
|
|
82
|
+
|
|
83
|
+
The `version` on the received command also defaults to `latest` when omitted.
|
|
84
|
+
|
|
85
|
+
## Explore command and event relationships
|
|
86
|
+
|
|
87
|
+
The command page lists its events under **Triggers**. Each event page lists the commands that can produce it under **Triggered by**. Message maps also show the command, the resource handling it, and the resulting events.
|
|
88
|
+
|
|
89
|
+
The example below shows the `Cancel Order` command mapped to the `Order Cancelled` event through the `Order Service`, including the scenario in which the event is produced.
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
Select **Map commands to events** under **Architecture** to compare these relationships. EventCatalog draws each command-to-event path through the receiving service or domain and groups repeated paths into selectable scenarios.
|
|
94
|
+
|
|
95
|
+
The **Map commands to events** link is only generated for messages that participate in at least one resolved relationship.
|
|
@@ -175,3 +175,7 @@ Supported values are `at-most-once`, `at-least-once`, and `exactly-once`.
|
|
|
175
175
|
deliveryGuarantee: at-least-once
|
|
176
176
|
---
|
|
177
177
|
```
|
|
178
|
+
|
|
179
|
+
## Custom properties
|
|
180
|
+
|
|
181
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -437,3 +437,7 @@ schemas:
|
|
|
437
437
|
format: jsonschema
|
|
438
438
|
---
|
|
439
439
|
```
|
|
440
|
+
|
|
441
|
+
## Custom properties
|
|
442
|
+
|
|
443
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -8,6 +8,8 @@ title: Services reference
|
|
|
8
8
|
description: Frontmatter fields, paths, and routes for services in EventCatalog.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
12
|
+
|
|
11
13
|
This page lists the fields, paths, and routes supported by services.
|
|
12
14
|
|
|
13
15
|
## Paths
|
|
@@ -132,6 +134,12 @@ receives:
|
|
|
132
134
|
---
|
|
133
135
|
```
|
|
134
136
|
|
|
137
|
+
#### Map commands to events
|
|
138
|
+
|
|
139
|
+
<AddedIn version="4.2.0" />
|
|
140
|
+
|
|
141
|
+
Each received command can declare the events it triggers. See [Map commands to events](/docs/development/guides/resources/messages/connect-messages/map-commands-to-events) for the supported fields, scenarios, and generated views.
|
|
142
|
+
|
|
135
143
|
### `entities` {#entities}
|
|
136
144
|
|
|
137
145
|
- Type: `array`
|
|
@@ -293,3 +301,7 @@ flows:
|
|
|
293
301
|
```
|
|
294
302
|
|
|
295
303
|
If `version` is omitted, EventCatalog uses the latest version.
|
|
304
|
+
|
|
305
|
+
## Custom properties
|
|
306
|
+
|
|
307
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
|
@@ -327,3 +327,7 @@ actors:
|
|
|
327
327
|
| `name` | `string` | Display name shown in diagrams. Optional. |
|
|
328
328
|
| `label` | `string` | Text shown on the actor relationship edge. Optional. |
|
|
329
329
|
| `direction` | `inbound` or `outbound` | `inbound` means actor to system. `outbound` means system to actor. Defaults to `inbound`. |
|
|
330
|
+
|
|
331
|
+
## Custom properties
|
|
332
|
+
|
|
333
|
+
You can add organization-specific metadata to this resource using frontmatter fields prefixed with `x-`. Learn how to define, render, and reference them in [Custom properties on resources](/docs/development/customization/custom-properties).
|
package/dist/eventcatalog.cjs
CHANGED
|
@@ -144,7 +144,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
|
|
|
144
144
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
145
145
|
|
|
146
146
|
// package.json
|
|
147
|
-
var version = "4.2.
|
|
147
|
+
var version = "4.2.4";
|
|
148
148
|
|
|
149
149
|
// src/constants.ts
|
|
150
150
|
var VERSION = version;
|
package/dist/eventcatalog.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log_build_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GCEFDCZB.js";
|
|
4
4
|
import "./chunk-K2XIENVT.js";
|
|
5
5
|
import {
|
|
6
6
|
runMigrations
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
} from "./chunk-B7HCX5HM.js";
|
|
15
15
|
import {
|
|
16
16
|
generate
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WVIOZDVK.js";
|
|
18
18
|
import {
|
|
19
19
|
logger
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-5MIGBCON.js";
|
|
21
21
|
import {
|
|
22
22
|
resolve_catalog_dependencies_default
|
|
23
23
|
} from "./chunk-LHR4G2UO.js";
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
watch
|
|
29
29
|
} from "./chunk-CAJUIMDJ.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-BXEGST4Z.js";
|
|
31
31
|
import {
|
|
32
32
|
createAstroDevLineFilter,
|
|
33
33
|
createAstroLineFilter
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
import "./chunk-W5JQON7Z.js";
|
|
39
39
|
import {
|
|
40
40
|
VERSION
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-J2MVHSKA.js";
|
|
42
42
|
import {
|
|
43
43
|
linkCoreNodeModules,
|
|
44
44
|
resolveInstalledCoreNodeModules
|
package/dist/generate.cjs
CHANGED
|
@@ -108,7 +108,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
|
|
|
108
108
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
109
109
|
|
|
110
110
|
// package.json
|
|
111
|
-
var version = "4.2.
|
|
111
|
+
var version = "4.2.4";
|
|
112
112
|
|
|
113
113
|
// src/constants.ts
|
|
114
114
|
var VERSION = version;
|
package/dist/generate.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generate
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-WVIOZDVK.js";
|
|
4
|
+
import "./chunk-5MIGBCON.js";
|
|
5
|
+
import "./chunk-J2MVHSKA.js";
|
|
6
6
|
import "./chunk-6QENHZZP.js";
|
|
7
7
|
export {
|
|
8
8
|
generate
|
package/dist/utils/cli-logger.js
CHANGED
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"license": "SEE LICENSE IN LICENSE",
|
|
9
9
|
"type": "module",
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.4",
|
|
11
11
|
"publishConfig": {
|
|
12
12
|
"access": "public"
|
|
13
13
|
},
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@ai-sdk/react": "^3.0.17",
|
|
35
|
-
"@astrojs/markdown-remark": "^7.2.
|
|
36
|
-
"@astrojs/mdx": "^7.0.
|
|
37
|
-
"@astrojs/node": "^11.0.
|
|
38
|
-
"@astrojs/react": "^6.0.
|
|
39
|
-
"@astrojs/rss": "^4.0.
|
|
35
|
+
"@astrojs/markdown-remark": "^7.2.1",
|
|
36
|
+
"@astrojs/mdx": "^7.0.3",
|
|
37
|
+
"@astrojs/node": "^11.0.2",
|
|
38
|
+
"@astrojs/react": "^6.0.1",
|
|
39
|
+
"@astrojs/rss": "^4.0.19",
|
|
40
40
|
"@asyncapi/avro-schema-parser": "3.0.24",
|
|
41
41
|
"@asyncapi/parser": "^3.6.0",
|
|
42
42
|
"@asyncapi/react-component": "3.1.0",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@tanstack/react-table": "^8.17.3",
|
|
62
62
|
"@xyflow/react": "^12.3.6",
|
|
63
63
|
"ai": "^6.0.17",
|
|
64
|
-
"astro": "^7.
|
|
64
|
+
"astro": "^7.1.1",
|
|
65
65
|
"astro-compress": "^2.4.0",
|
|
66
66
|
"astro-expressive-code": "^0.44.0",
|
|
67
67
|
"astro-seo": "^0.8.4",
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"elkjs": "^0.10.0",
|
|
77
77
|
"glob": "^13.0.6",
|
|
78
78
|
"gray-matter": "^4.0.3",
|
|
79
|
-
"hono": "4.12.
|
|
79
|
+
"hono": "4.12.27",
|
|
80
80
|
"html-to-image": "^1.11.11",
|
|
81
|
-
"js-yaml": "^4.
|
|
81
|
+
"js-yaml": "^4.3.0",
|
|
82
82
|
"jsonpath-plus": "^10.4.0",
|
|
83
83
|
"jsonwebtoken": "^9.0.2",
|
|
84
84
|
"lodash.debounce": "^4.0.8",
|
|
@@ -117,8 +117,8 @@
|
|
|
117
117
|
"uuid": "^10.0.0",
|
|
118
118
|
"zod": "^4.3.6",
|
|
119
119
|
"@eventcatalog/sdk": "2.26.1",
|
|
120
|
-
"@eventcatalog/
|
|
121
|
-
"@eventcatalog/
|
|
120
|
+
"@eventcatalog/linter": "1.1.6",
|
|
121
|
+
"@eventcatalog/visualiser": "^4.1.0"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@astrojs/check": "^0.9.9",
|