@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.
Files changed (88) hide show
  1. package/dist/browser.d.ts +22 -0
  2. package/dist/browser.d.ts.map +1 -0
  3. package/dist/browser.js +20 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/compiler.js +1 -1
  6. package/dist/compiler.js.map +1 -1
  7. package/dist/completion-data.d.ts +15 -0
  8. package/dist/completion-data.d.ts.map +1 -0
  9. package/dist/completion-data.js +453 -0
  10. package/dist/completion-data.js.map +1 -0
  11. package/dist/completion-utils.d.ts +29 -0
  12. package/dist/completion-utils.d.ts.map +1 -0
  13. package/dist/completion-utils.js +128 -0
  14. package/dist/completion-utils.js.map +1 -0
  15. package/dist/ec-completion-provider.d.ts +22 -1
  16. package/dist/ec-completion-provider.d.ts.map +1 -1
  17. package/dist/ec-completion-provider.js +461 -150
  18. package/dist/ec-completion-provider.js.map +1 -1
  19. package/dist/ec-definition-provider.d.ts +14 -0
  20. package/dist/ec-definition-provider.d.ts.map +1 -0
  21. package/dist/ec-definition-provider.js +123 -0
  22. package/dist/ec-definition-provider.js.map +1 -0
  23. package/dist/ec-formatter-provider.d.ts +10 -0
  24. package/dist/ec-formatter-provider.d.ts.map +1 -0
  25. package/dist/ec-formatter-provider.js +28 -0
  26. package/dist/ec-formatter-provider.js.map +1 -0
  27. package/dist/ec-hover-provider.d.ts +10 -0
  28. package/dist/ec-hover-provider.d.ts.map +1 -0
  29. package/dist/ec-hover-provider.js +41 -0
  30. package/dist/ec-hover-provider.js.map +1 -0
  31. package/dist/ec-module.d.ts +0 -6
  32. package/dist/ec-module.d.ts.map +1 -1
  33. package/dist/ec-module.js +0 -10
  34. package/dist/ec-module.js.map +1 -1
  35. package/dist/ec-resource-index.d.ts +64 -0
  36. package/dist/ec-resource-index.d.ts.map +1 -0
  37. package/dist/ec-resource-index.js +281 -0
  38. package/dist/ec-resource-index.js.map +1 -0
  39. package/dist/ec-validator.d.ts.map +1 -1
  40. package/dist/ec-validator.js +22 -87
  41. package/dist/ec-validator.js.map +1 -1
  42. package/dist/generated/ast.d.ts +2 -2
  43. package/dist/generated/ast.d.ts.map +1 -1
  44. package/dist/generated/ast.js +1 -1
  45. package/dist/generated/ast.js.map +1 -1
  46. package/dist/generated/grammar.d.ts.map +1 -1
  47. package/dist/generated/grammar.js +103 -53
  48. package/dist/generated/grammar.js.map +1 -1
  49. package/dist/graph.d.ts.map +1 -1
  50. package/dist/graph.js +83 -35
  51. package/dist/graph.js.map +1 -1
  52. package/dist/index.d.ts +7 -2
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/main.js +16 -1
  57. package/dist/main.js.map +1 -1
  58. package/dist/resolvers/asyncapi.d.ts +10 -16
  59. package/dist/resolvers/asyncapi.d.ts.map +1 -1
  60. package/dist/resolvers/asyncapi.js +60 -235
  61. package/dist/resolvers/asyncapi.js.map +1 -1
  62. package/dist/resolvers/catalog.d.ts +34 -0
  63. package/dist/resolvers/catalog.d.ts.map +1 -0
  64. package/dist/resolvers/catalog.js +291 -0
  65. package/dist/resolvers/catalog.js.map +1 -0
  66. package/dist/resolvers/index.d.ts +8 -1
  67. package/dist/resolvers/index.d.ts.map +1 -1
  68. package/dist/resolvers/index.js +7 -1
  69. package/dist/resolvers/index.js.map +1 -1
  70. package/dist/resolvers/openapi.d.ts +44 -0
  71. package/dist/resolvers/openapi.d.ts.map +1 -0
  72. package/dist/resolvers/openapi.js +212 -0
  73. package/dist/resolvers/openapi.js.map +1 -0
  74. package/dist/resolvers/resolve.d.ts +28 -0
  75. package/dist/resolvers/resolve.d.ts.map +1 -0
  76. package/dist/resolvers/resolve.js +485 -0
  77. package/dist/resolvers/resolve.js.map +1 -0
  78. package/dist/resolvers/types.d.ts +17 -1
  79. package/dist/resolvers/types.d.ts.map +1 -1
  80. package/dist/resolvers/types.js +11 -1
  81. package/dist/resolvers/types.js.map +1 -1
  82. package/package.json +7 -2
  83. package/specification/03-event.md +1 -0
  84. package/specification/04-command.md +4 -1
  85. package/specification/05-query.md +4 -1
  86. package/specification/06-channel.md +24 -4
  87. package/specification/16-annotations.md +52 -0
  88. 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 | parameter_decl
116
- | route_stmt | annotation ;
117
- address_prop = "address" string_lit ;
118
- protocol_prop = "protocol" string_lit ;
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",