@eventcatalog/language-server 0.5.0 → 0.6.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/browser.d.ts +22 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +20 -0
- package/dist/browser.js.map +1 -0
- package/dist/compiler.js +1 -1
- package/dist/compiler.js.map +1 -1
- package/dist/completion-data.d.ts +15 -0
- package/dist/completion-data.d.ts.map +1 -0
- package/dist/completion-data.js +453 -0
- package/dist/completion-data.js.map +1 -0
- package/dist/completion-utils.d.ts +29 -0
- package/dist/completion-utils.d.ts.map +1 -0
- package/dist/completion-utils.js +128 -0
- package/dist/completion-utils.js.map +1 -0
- package/dist/ec-completion-provider.d.ts +22 -1
- package/dist/ec-completion-provider.d.ts.map +1 -1
- package/dist/ec-completion-provider.js +461 -150
- package/dist/ec-completion-provider.js.map +1 -1
- package/dist/ec-definition-provider.d.ts +14 -0
- package/dist/ec-definition-provider.d.ts.map +1 -0
- package/dist/ec-definition-provider.js +123 -0
- package/dist/ec-definition-provider.js.map +1 -0
- package/dist/ec-formatter-provider.d.ts +10 -0
- package/dist/ec-formatter-provider.d.ts.map +1 -0
- package/dist/ec-formatter-provider.js +28 -0
- package/dist/ec-formatter-provider.js.map +1 -0
- package/dist/ec-hover-provider.d.ts +10 -0
- package/dist/ec-hover-provider.d.ts.map +1 -0
- package/dist/ec-hover-provider.js +41 -0
- package/dist/ec-hover-provider.js.map +1 -0
- package/dist/ec-module.d.ts +0 -6
- package/dist/ec-module.d.ts.map +1 -1
- package/dist/ec-module.js +0 -10
- package/dist/ec-module.js.map +1 -1
- package/dist/ec-resource-index.d.ts +64 -0
- package/dist/ec-resource-index.d.ts.map +1 -0
- package/dist/ec-resource-index.js +281 -0
- package/dist/ec-resource-index.js.map +1 -0
- package/dist/ec-validator.d.ts.map +1 -1
- package/dist/ec-validator.js +22 -87
- package/dist/ec-validator.js.map +1 -1
- package/dist/generated/ast.d.ts +2 -2
- package/dist/generated/ast.d.ts.map +1 -1
- package/dist/generated/ast.js +1 -1
- package/dist/generated/ast.js.map +1 -1
- package/dist/generated/grammar.d.ts.map +1 -1
- package/dist/generated/grammar.js +103 -53
- package/dist/generated/grammar.js.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +83 -35
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +16 -1
- package/dist/main.js.map +1 -1
- package/dist/resolvers/asyncapi.d.ts +10 -16
- package/dist/resolvers/asyncapi.d.ts.map +1 -1
- package/dist/resolvers/asyncapi.js +60 -235
- package/dist/resolvers/asyncapi.js.map +1 -1
- package/dist/resolvers/catalog.d.ts +34 -0
- package/dist/resolvers/catalog.d.ts.map +1 -0
- package/dist/resolvers/catalog.js +291 -0
- package/dist/resolvers/catalog.js.map +1 -0
- package/dist/resolvers/index.d.ts +8 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +7 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/openapi.d.ts +44 -0
- package/dist/resolvers/openapi.d.ts.map +1 -0
- package/dist/resolvers/openapi.js +212 -0
- package/dist/resolvers/openapi.js.map +1 -0
- package/dist/resolvers/resolve.d.ts +28 -0
- package/dist/resolvers/resolve.d.ts.map +1 -0
- package/dist/resolvers/resolve.js +485 -0
- package/dist/resolvers/resolve.js.map +1 -0
- package/dist/resolvers/types.d.ts +17 -1
- package/dist/resolvers/types.d.ts.map +1 -1
- package/dist/resolvers/types.js +11 -1
- package/dist/resolvers/types.js.map +1 -1
- package/package.json +7 -2
- package/specification/03-event.md +1 -0
- package/specification/04-command.md +4 -1
- package/specification/05-query.md +4 -1
- package/specification/06-channel.md +24 -4
- package/specification/16-annotations.md +52 -0
- package/syntaxes/ec.tmLanguage.json +1 -1
|
@@ -11,6 +11,7 @@ channel <id> {
|
|
|
11
11
|
|
|
12
12
|
address "<address-string>"
|
|
13
13
|
protocol "<protocol>"
|
|
14
|
+
deliveryGuarantee at-most-once|at-least-once|exactly-once
|
|
14
15
|
|
|
15
16
|
// Channel parameters
|
|
16
17
|
parameter <name> {
|
|
@@ -29,6 +30,24 @@ channel <id> {
|
|
|
29
30
|
}
|
|
30
31
|
```
|
|
31
32
|
|
|
33
|
+
## Delivery guarantee
|
|
34
|
+
|
|
35
|
+
The `deliveryGuarantee` property declares the message delivery semantics of a channel. The visualiser renders a colored badge on the channel node to make the guarantee visible at a glance.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
channel OrderEvents {
|
|
39
|
+
version 1.0.0
|
|
40
|
+
protocol "Kafka"
|
|
41
|
+
deliveryGuarantee exactly-once
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
| Value | Meaning |
|
|
46
|
+
| --------------- | ----------------------------------------------------------- |
|
|
47
|
+
| `at-most-once` | Messages may be lost; never delivered more than once |
|
|
48
|
+
| `at-least-once` | Messages are never lost but may be delivered more than once |
|
|
49
|
+
| `exactly-once` | Messages are delivered exactly once with no duplicates |
|
|
50
|
+
|
|
32
51
|
## Channel-to-Channel Routing
|
|
33
52
|
|
|
34
53
|
Channels can route to other channels using the `route` statement. This models message pipelines where data flows through multiple channels (e.g., Kafka topic → Kafka topic → MQTT broker):
|
|
@@ -112,10 +131,11 @@ service OrderService {
|
|
|
112
131
|
```ebnf
|
|
113
132
|
channel_decl = "channel" identifier "{" common_props
|
|
114
133
|
{ channel_body_item } "}" ;
|
|
115
|
-
channel_body_item= address_prop | protocol_prop |
|
|
116
|
-
| route_stmt | annotation ;
|
|
117
|
-
address_prop
|
|
118
|
-
protocol_prop
|
|
134
|
+
channel_body_item= address_prop | protocol_prop | delivery_guarantee_prop
|
|
135
|
+
| parameter_decl | route_stmt | annotation ;
|
|
136
|
+
address_prop = "address" string_lit ;
|
|
137
|
+
protocol_prop = "protocol" string_lit ;
|
|
138
|
+
delivery_guarantee_prop = "deliveryGuarantee" ( "at-most-once" | "at-least-once" | "exactly-once" ) ;
|
|
119
139
|
parameter_decl = "parameter" identifier "{" { param_prop } "}" ;
|
|
120
140
|
param_prop = "description" string_lit
|
|
121
141
|
| "default" string_lit
|
|
@@ -68,6 +68,58 @@ service PaymentService {
|
|
|
68
68
|
}
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
## @api
|
|
72
|
+
|
|
73
|
+
Attaches HTTP API metadata to a message (event, command, or query). Typically generated automatically when importing an OpenAPI spec, but can also be written manually. The visualiser displays the method badge, API path, and response status codes on the node.
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
// Basic usage with method and path
|
|
77
|
+
command CreateOrder {
|
|
78
|
+
version 1.0.0
|
|
79
|
+
summary "Create a new order"
|
|
80
|
+
@api(method: "POST", path: "/orders")
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// With status codes
|
|
84
|
+
query GetOrders {
|
|
85
|
+
version 1.0.0
|
|
86
|
+
summary "List all orders"
|
|
87
|
+
@api(method: "GET", path: "/orders", statusCodes: "200,401")
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// On inline message definitions
|
|
91
|
+
service PaymentService {
|
|
92
|
+
version 2.0.0
|
|
93
|
+
receives command CreatePayment {
|
|
94
|
+
version 2.0.0
|
|
95
|
+
summary "Process a new payment"
|
|
96
|
+
@api(method: "POST", path: "/payments", statusCodes: "201,400,422")
|
|
97
|
+
}
|
|
98
|
+
receives query GetPayment {
|
|
99
|
+
version 2.0.0
|
|
100
|
+
@api(method: "GET", path: "/payments/{paymentId}", statusCodes: "200,404")
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Parameters
|
|
106
|
+
|
|
107
|
+
| Parameter | Type | Description |
|
|
108
|
+
| ------------- | ------ | -------------------------------------------------------- |
|
|
109
|
+
| `method` | string | HTTP method (GET, POST, PUT, PATCH, DELETE) |
|
|
110
|
+
| `path` | string | API path (e.g. `/orders`, `/users/{id}`) |
|
|
111
|
+
| `statusCodes` | string | Comma-separated HTTP status codes (e.g. `"200,401,500"`) |
|
|
112
|
+
|
|
113
|
+
### Auto-generated from OpenAPI
|
|
114
|
+
|
|
115
|
+
When importing an OpenAPI spec, `@api` annotations are automatically added to the generated `.ec` definitions:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
import PaymentService from "./payments-openapi.yml"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
This generates commands and queries with `@api` annotations populated from the OpenAPI paths, methods, and response codes.
|
|
122
|
+
|
|
71
123
|
## @detailsPanel
|
|
72
124
|
|
|
73
125
|
Controls visibility of detail panel sections:
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"name": "keyword.control.ec",
|
|
13
|
-
"match": "\\b(access-mode|actor|address|and|animated|appendOnly|authoritative|avatar|cache|channel|channels|classification|color|command|commands|confidential|container|container-type|contract|data-product|dataLake|dataWarehouse|database|default|delivery|deprecated|description|diagram|domain|draft|email|enum|event|events|examples|external-system|externalSaaS|false|flow|focus-mode|from|hidden|icon|import|input|internal|label|legend|member|message|ms-teams|name|objectStore|other|output|owner|parameter|path|post-it|protocol|public|pull|push|push-pull|queries|query|read|readWrite|reads-from|receives|regulated|residency|retention|role|route|schema|search|searchIndex|sends|service|slack|style|subdomain|summary|team|technology|title|to|toolbar|true|type|url|user|version|visible|visualizer|when|write|writes-to)\\b"
|
|
13
|
+
"match": "\\b(access-mode|actor|address|and|animated|appendOnly|authoritative|avatar|cache|channel|channels|classification|color|command|commands|confidential|container|container-type|containers|contract|data-product|dataLake|dataWarehouse|database|default|delivery|deprecated|description|diagram|domain|draft|email|enum|event|events|examples|external-system|externalSaaS|false|flow|focus-mode|from|hidden|icon|import|input|internal|label|legend|member|message|ms-teams|name|objectStore|other|output|owner|parameter|path|post-it|protocol|public|pull|push|push-pull|queries|query|read|readWrite|reads-from|receives|regulated|residency|retention|role|route|schema|search|searchIndex|sends|service|services|slack|style|subdomain|summary|team|technology|title|to|toolbar|true|type|url|user|version|visible|visualizer|when|write|writes-to)\\b"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"name": "string.quoted.double.ec",
|