@cratis/screenplay-language 4.52.0 → 4.54.0

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 (191) hide show
  1. package/README.md +15 -0
  2. package/dist/TypeReferenceSymbol.d.ts +8 -0
  3. package/dist/TypeReferenceSymbol.d.ts.map +1 -0
  4. package/dist/bundles/chunk-GJX4NJYC.js +4836 -0
  5. package/dist/bundles/chunk-GJX4NJYC.js.map +7 -0
  6. package/dist/bundles/index.js +1417 -0
  7. package/dist/bundles/index.js.map +7 -0
  8. package/dist/bundles/sub-languages/capture/index.js +677 -0
  9. package/dist/bundles/sub-languages/capture/index.js.map +7 -0
  10. package/dist/bundles/sub-languages/projection/index.js +1647 -0
  11. package/dist/bundles/sub-languages/projection/index.js.map +7 -0
  12. package/dist/code-actions.d.ts +3 -0
  13. package/dist/code-actions.d.ts.map +1 -0
  14. package/dist/completion-items.d.ts +1 -0
  15. package/dist/completion-items.d.ts.map +1 -1
  16. package/dist/completion-planner.d.ts.map +1 -1
  17. package/dist/completions.d.ts.map +1 -1
  18. package/dist/diagnostic-codes.d.ts +3 -0
  19. package/dist/diagnostic-codes.d.ts.map +1 -1
  20. package/dist/diagnostics.d.ts.map +1 -1
  21. package/dist/hover-content.d.ts.map +1 -1
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/keyword-docs.d.ts.map +1 -1
  25. package/dist/language.d.ts +1 -0
  26. package/dist/language.d.ts.map +1 -1
  27. package/dist/production-destinations.d.ts.map +1 -1
  28. package/dist/symbols.d.ts +4 -0
  29. package/dist/symbols.d.ts.map +1 -1
  30. package/dist/tokens.d.ts.map +1 -1
  31. package/dist/validation.d.ts +1 -0
  32. package/dist/validation.d.ts.map +1 -1
  33. package/package.json +13 -9
  34. package/DestinationHint.ts +0 -8
  35. package/ProductionSymbol.ts +0 -11
  36. package/completion-items.ts +0 -261
  37. package/completion-planner.ts +0 -167
  38. package/completions.ts +0 -156
  39. package/diagnostic-codes.ts +0 -43
  40. package/diagnostics.ts +0 -55
  41. package/dist/DestinationHint.js +0 -4
  42. package/dist/DestinationHint.js.map +0 -1
  43. package/dist/ProductionSymbol.js +0 -4
  44. package/dist/ProductionSymbol.js.map +0 -1
  45. package/dist/completion-items.js +0 -228
  46. package/dist/completion-items.js.map +0 -1
  47. package/dist/completion-planner.js +0 -143
  48. package/dist/completion-planner.js.map +0 -1
  49. package/dist/completions.js +0 -101
  50. package/dist/completions.js.map +0 -1
  51. package/dist/diagnostic-codes.js +0 -41
  52. package/dist/diagnostic-codes.js.map +0 -1
  53. package/dist/diagnostics.js +0 -50
  54. package/dist/diagnostics.js.map +0 -1
  55. package/dist/document-context.js +0 -85
  56. package/dist/document-context.js.map +0 -1
  57. package/dist/event-analysis-source.js +0 -19
  58. package/dist/event-analysis-source.js.map +0 -1
  59. package/dist/event-context-catalog.js +0 -116
  60. package/dist/event-context-catalog.js.map +0 -1
  61. package/dist/event-context.js +0 -88
  62. package/dist/event-context.js.map +0 -1
  63. package/dist/file-imports.js +0 -58
  64. package/dist/file-imports.js.map +0 -1
  65. package/dist/file-references.js +0 -70
  66. package/dist/file-references.js.map +0 -1
  67. package/dist/hover-content.js +0 -98
  68. package/dist/hover-content.js.map +0 -1
  69. package/dist/hover.js +0 -15
  70. package/dist/hover.js.map +0 -1
  71. package/dist/index.js +0 -61
  72. package/dist/index.js.map +0 -1
  73. package/dist/inlay-hints.js +0 -15
  74. package/dist/inlay-hints.js.map +0 -1
  75. package/dist/inline-event-validation.js +0 -131
  76. package/dist/inline-event-validation.js.map +0 -1
  77. package/dist/keyword-docs.js +0 -148
  78. package/dist/keyword-docs.js.map +0 -1
  79. package/dist/language.js +0 -196
  80. package/dist/language.js.map +0 -1
  81. package/dist/production-destinations.js +0 -32
  82. package/dist/production-destinations.js.map +0 -1
  83. package/dist/sub-language-registry.js +0 -18
  84. package/dist/sub-language-registry.js.map +0 -1
  85. package/dist/sub-languages/capture/CompletionProvider.js +0 -332
  86. package/dist/sub-languages/capture/CompletionProvider.js.map +0 -1
  87. package/dist/sub-languages/capture/HoverProvider.js +0 -87
  88. package/dist/sub-languages/capture/HoverProvider.js.map +0 -1
  89. package/dist/sub-languages/capture/Validator.js +0 -72
  90. package/dist/sub-languages/capture/Validator.js.map +0 -1
  91. package/dist/sub-languages/capture/index.js +0 -58
  92. package/dist/sub-languages/capture/index.js.map +0 -1
  93. package/dist/sub-languages/capture/language.js +0 -160
  94. package/dist/sub-languages/capture/language.js.map +0 -1
  95. package/dist/sub-languages/cdl.js +0 -74
  96. package/dist/sub-languages/cdl.js.map +0 -1
  97. package/dist/sub-languages/pdl.js +0 -73
  98. package/dist/sub-languages/pdl.js.map +0 -1
  99. package/dist/sub-languages/projection/CodeActionProvider.js +0 -93
  100. package/dist/sub-languages/projection/CodeActionProvider.js.map +0 -1
  101. package/dist/sub-languages/projection/CompletionProvider.js +0 -595
  102. package/dist/sub-languages/projection/CompletionProvider.js.map +0 -1
  103. package/dist/sub-languages/projection/HoverProvider.js +0 -333
  104. package/dist/sub-languages/projection/HoverProvider.js.map +0 -1
  105. package/dist/sub-languages/projection/Validator.js +0 -388
  106. package/dist/sub-languages/projection/Validator.js.map +0 -1
  107. package/dist/sub-languages/projection/index.js +0 -160
  108. package/dist/sub-languages/projection/index.js.map +0 -1
  109. package/dist/sub-languages/projection/language.js +0 -171
  110. package/dist/sub-languages/projection/language.js.map +0 -1
  111. package/dist/symbols.js +0 -275
  112. package/dist/symbols.js.map +0 -1
  113. package/dist/themes/screenplay-dark.js +0 -30
  114. package/dist/themes/screenplay-dark.js.map +0 -1
  115. package/dist/themes/screenplay-light.js +0 -30
  116. package/dist/themes/screenplay-light.js.map +0 -1
  117. package/dist/tokens.js +0 -147
  118. package/dist/tokens.js.map +0 -1
  119. package/dist/validation.js +0 -248
  120. package/dist/validation.js.map +0 -1
  121. package/document-context.ts +0 -93
  122. package/event-analysis-source.ts +0 -18
  123. package/event-context-catalog.ts +0 -135
  124. package/event-context.ts +0 -119
  125. package/file-imports.ts +0 -70
  126. package/file-references.ts +0 -87
  127. package/for_documentContext/when_stripping_comments.ts +0 -32
  128. package/for_eventContext/when_resolving_generated_catalog_vectors.ts +0 -15
  129. package/for_eventGenerations/when_editing_event_generations.ts +0 -57
  130. package/for_fileImports/when_finding_file_imports.ts +0 -38
  131. package/for_fileReferences/when_recognizing_an_absolute_path/with_paths_of_every_shape.ts +0 -26
  132. package/for_fileReferences/when_scanning_a_document/inside_a_code_fence.ts +0 -26
  133. package/for_fileReferences/when_scanning_a_document/with_a_bare_file_keyword.ts +0 -19
  134. package/for_fileReferences/when_scanning_a_document/with_a_file_directive.ts +0 -30
  135. package/for_fileReferences/when_scanning_a_document/with_a_property_named_file.ts +0 -25
  136. package/for_fileReferences/when_scanning_a_document/with_a_trailing_comment.ts +0 -25
  137. package/for_fileReferences/when_scanning_a_document/with_directives_on_several_constructs.ts +0 -41
  138. package/for_importablePaths/when_listing_what_a_document_can_import.ts +0 -34
  139. package/for_inlineEvents/when_analyzing_many_inline_events.ts +0 -59
  140. package/for_inlineEvents/when_authoring_inline_events.ts +0 -149
  141. package/for_inlineEvents/when_completing_many_events.ts +0 -49
  142. package/for_inlineEvents/when_indexing_command_production_ownership.ts +0 -79
  143. package/for_planCompletions/when_completing_a_file_import.ts +0 -26
  144. package/for_planCompletions/when_completing_a_specification_query.ts +0 -24
  145. package/for_planCompletions/when_completing_a_specification_step.ts +0 -42
  146. package/for_planCompletions/when_completing_an_absent_read_model.ts +0 -14
  147. package/for_planCompletions/when_completing_reaction_reads.ts +0 -36
  148. package/for_projectionCompletionProvider/when_completing_an_event_context_path.ts +0 -102
  149. package/for_projectionHoverProvider/when_hovering_an_event_context_path.ts +0 -44
  150. package/for_projectionValidator/when_validating_a_projection_with_variants.ts +0 -128
  151. package/for_projectionValidator/when_validating_event_context_paths.ts +0 -31
  152. package/for_scanDocument/when_scanning_a_query/with_a_dotted_return_type.ts +0 -34
  153. package/for_scanDocument/when_scanning_aliased_reads.ts +0 -33
  154. package/for_scanDocument/when_scanning_many_commands.ts +0 -47
  155. package/for_tokens/when_highlighting_a_file_import.ts +0 -18
  156. package/for_tokens/when_highlighting_event_metadata.ts +0 -63
  157. package/for_tokens/when_highlighting_specification_steps.ts +0 -28
  158. package/for_validateLines/when_validating_a_document/with_a_problem_of_every_coded_kind.ts +0 -77
  159. package/for_validateLines/when_validating_a_document/with_an_unknown_policy.ts +0 -33
  160. package/for_validateLines/when_validating_a_file_placed_by_an_import/with_names_declared_in_other_files.ts +0 -43
  161. package/for_validateLines/when_validating_event_context_paths/in_a_projection.ts +0 -97
  162. package/for_validateLines/when_validating_file_imports/at_every_level.ts +0 -36
  163. package/for_validateLines/when_validating_production_destinations/with_an_available_identifier.ts +0 -120
  164. package/hover-content.ts +0 -117
  165. package/hover.ts +0 -23
  166. package/index.ts +0 -125
  167. package/inlay-hints.ts +0 -17
  168. package/inline-event-validation.ts +0 -115
  169. package/keyword-docs.ts +0 -152
  170. package/language.ts +0 -212
  171. package/production-destinations.ts +0 -32
  172. package/sub-language-registry.ts +0 -42
  173. package/sub-languages/capture/CompletionProvider.ts +0 -365
  174. package/sub-languages/capture/HoverProvider.ts +0 -99
  175. package/sub-languages/capture/Validator.ts +0 -97
  176. package/sub-languages/capture/index.ts +0 -72
  177. package/sub-languages/capture/language.ts +0 -176
  178. package/sub-languages/cdl.ts +0 -76
  179. package/sub-languages/pdl.ts +0 -75
  180. package/sub-languages/projection/CodeActionProvider.ts +0 -123
  181. package/sub-languages/projection/CompletionProvider.ts +0 -660
  182. package/sub-languages/projection/HoverProvider.ts +0 -377
  183. package/sub-languages/projection/Validator.ts +0 -441
  184. package/sub-languages/projection/index.ts +0 -223
  185. package/sub-languages/projection/language.ts +0 -193
  186. package/symbols.ts +0 -374
  187. package/themes/screenplay-dark.ts +0 -33
  188. package/themes/screenplay-light.ts +0 -33
  189. package/tokens.ts +0 -174
  190. package/validation.ts +0 -443
  191. package/vitest.setup.ts +0 -5
@@ -1,333 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
- import { describeEventContext, describeEventContextMember, eventContextMemberAt } from '../../event-context';
4
- export class HoverProvider {
5
- readModels = [];
6
- eventSchemas = {};
7
- draftReadModel = null;
8
- setReadModels(readModels) {
9
- this.readModels = readModels || [];
10
- }
11
- // Keep for backwards compatibility
12
- setReadModelSchemas(schemas) {
13
- this.readModels = schemas.map(schema => ({
14
- identifier: this.getSchemaName(schema) || '',
15
- displayName: this.getSchemaName(schema) || '',
16
- schema
17
- }));
18
- }
19
- setEventSchemas(schemas) {
20
- if (!schemas) {
21
- this.eventSchemas = {};
22
- return;
23
- }
24
- if (Array.isArray(schemas)) {
25
- const map = {};
26
- schemas.forEach((s, i) => {
27
- if (!s)
28
- return;
29
- const name = this.getSchemaName(s) || `Event${i + 1}`;
30
- map[name] = s;
31
- });
32
- this.eventSchemas = map;
33
- return;
34
- }
35
- this.eventSchemas = schemas;
36
- }
37
- setDraftReadModel(draft) {
38
- this.draftReadModel = draft;
39
- }
40
- provideHover(model, position) {
41
- const word = model.getWordAtPosition(position);
42
- if (!word)
43
- return null;
44
- const wordText = word.word;
45
- // Check if we're on the projection name (before '=>')
46
- const lineContent = model.getLineContent(position.lineNumber);
47
- const projectionNameMatch = this.getProjectionNameAtPosition(lineContent, position.column);
48
- if (projectionNameMatch) {
49
- return {
50
- contents: [{ value: 'The name of the projection' }],
51
- range: {
52
- startLineNumber: position.lineNumber,
53
- startColumn: word.startColumn,
54
- endLineNumber: position.lineNumber,
55
- endColumn: word.endColumn,
56
- },
57
- };
58
- }
59
- // A segment of an $eventContext path - before keywords, since a member such as 'id' is also a keyword
60
- const eventContextInfo = this.getEventContextInfo(lineContent, word.startColumn);
61
- if (eventContextInfo) {
62
- return {
63
- contents: [{ value: eventContextInfo }],
64
- range: {
65
- startLineNumber: position.lineNumber,
66
- startColumn: word.startColumn,
67
- endLineNumber: position.lineNumber,
68
- endColumn: word.endColumn,
69
- },
70
- };
71
- }
72
- // Check if it's a keyword
73
- const keywordInfo = this.getKeywordInfo(wordText);
74
- if (keywordInfo) {
75
- return {
76
- contents: [{ value: keywordInfo }],
77
- range: {
78
- startLineNumber: position.lineNumber,
79
- startColumn: word.startColumn,
80
- endLineNumber: position.lineNumber,
81
- endColumn: word.endColumn,
82
- },
83
- };
84
- }
85
- // Check if it's a built-in expression
86
- const expressionInfo = this.getExpressionInfo(wordText);
87
- if (expressionInfo) {
88
- return {
89
- contents: [{ value: expressionInfo }],
90
- range: {
91
- startLineNumber: position.lineNumber,
92
- startColumn: word.startColumn,
93
- endLineNumber: position.lineNumber,
94
- endColumn: word.endColumn,
95
- },
96
- };
97
- }
98
- // Check if it's an event type
99
- if (this.eventSchemas[wordText]) {
100
- const schema = this.eventSchemas[wordText];
101
- const description = this.getSchemaDescription(schema);
102
- const properties = this.getSchemaProperties(schema);
103
- let content = `**Event Type:** \`${wordText}\`\n\n`;
104
- if (description) {
105
- content += `${description}\n\n`;
106
- }
107
- if (properties.length > 0) {
108
- content += `**Properties:**\n\n${properties.map(p => `- \`${p.name}\`: ${p.type}`).join('\n')}`;
109
- }
110
- return {
111
- contents: [{ value: content }],
112
- range: {
113
- startLineNumber: position.lineNumber,
114
- startColumn: word.startColumn,
115
- endLineNumber: position.lineNumber,
116
- endColumn: word.endColumn,
117
- },
118
- };
119
- }
120
- // Check if it's a draft read model
121
- if (this.isDraftReadModel(wordText)) {
122
- const description = this.getSchemaDescription(this.draftReadModel.schema);
123
- const properties = this.getSchemaProperties(this.draftReadModel.schema);
124
- const identifier = this.draftReadModel.identifier;
125
- const displayName = this.draftReadModel.displayName;
126
- let content = `**Read Model (Draft):** \`${displayName}\`\n\n**Identifier:** \`${identifier}\`\n\n`;
127
- if (description) {
128
- content += `${description}\n\n`;
129
- }
130
- if (properties.length > 0) {
131
- content += `**Properties:**\n\n${properties.map(p => `- \`${p.name}\`: ${p.type}`).join('\n')}`;
132
- }
133
- return {
134
- contents: [{ value: content }],
135
- range: {
136
- startLineNumber: position.lineNumber,
137
- startColumn: word.startColumn,
138
- endLineNumber: position.lineNumber,
139
- endColumn: word.endColumn,
140
- },
141
- };
142
- }
143
- // Check if it's a read model
144
- const readModel = this.resolveReadModelInfo(wordText);
145
- if (readModel) {
146
- const description = this.getSchemaDescription(readModel.schema);
147
- const properties = this.getSchemaProperties(readModel.schema);
148
- let content = `**Read Model:** \`${readModel.displayName}\`\n\n**Identifier:** \`${readModel.identifier}\`\n\n`;
149
- if (description) {
150
- content += `${description}\n\n`;
151
- }
152
- if (properties.length > 0) {
153
- content += `**Properties:**\n\n${properties.map(p => `- \`${p.name}\`: ${p.type}`).join('\n')}`;
154
- }
155
- return {
156
- contents: [{ value: content }],
157
- range: {
158
- startLineNumber: position.lineNumber,
159
- startColumn: word.startColumn,
160
- endLineNumber: position.lineNumber,
161
- endColumn: word.endColumn,
162
- },
163
- };
164
- }
165
- // Check if it's a property in the current context
166
- const propertyInfo = this.getPropertyInfo(model, position, wordText);
167
- if (propertyInfo) {
168
- return {
169
- contents: [{ value: propertyInfo }],
170
- range: {
171
- startLineNumber: position.lineNumber,
172
- startColumn: word.startColumn,
173
- endLineNumber: position.lineNumber,
174
- endColumn: word.endColumn,
175
- },
176
- };
177
- }
178
- return null;
179
- }
180
- getKeywordInfo(word) {
181
- const keywords = {
182
- 'projection': '**projection** - Defines a projection that transforms events into a read model',
183
- 'from': '**from** *<EventType>*\n\nHandles specific event types and maps their properties to the read model.',
184
- 'all': '**all**\n\nSubscribes to **all event types in the system**, regardless of explicit `from` blocks. Mappings inside `all` run for every event that arrives system-wide.',
185
- 'every': '**every**\n\nHandles all events the projection **explicitly subscribes to** through `from` blocks, with automatic property mapping.',
186
- 'key': '**key** *<expression>*\n\nDefines the projection key or composite key type.',
187
- 'parent': '**parent** *<expression>*\n\nDefines a parent relationship for hierarchical projections.',
188
- 'join': '**join** *<collection>* **on** *<property>*\n\nJoins with a child collection based on a property.',
189
- 'children': '**children** *<collection>* **id** *<expression>*\n\nDefines operations on child collections.',
190
- 'remove': '**remove with** *<EventType>* or **remove via join on** *<EventType>*\n\nRemoves items from the read model based on events.',
191
- 'clear': '**clear** *<property>*\n\nRemoves the value a property holds. **clear with** *<EventType>* nulls a whole nested object instead.',
192
- 'automap': '**automap** or **no automap**\n\nControls automatic property mapping from events to the read model.',
193
- 'increment': '**increment** *<property>*\n\nIncrements a numeric property by 1.',
194
- 'decrement': '**decrement** *<property>*\n\nDecrements a numeric property by 1.',
195
- 'count': '**count** *<property>*\n\nCounts occurrences and stores in a property.',
196
- 'add': '**add** *<property>* **by** *<expression>*\n\nAdds a value to a property.',
197
- 'subtract': '**subtract** *<property>* **by** *<expression>*\n\nSubtracts a value from a property.',
198
- 'exclude': '**exclude children**\n\nExcludes child collections from automatic mapping.',
199
- 'events': '**events** *<EventType>*, ...\n\nSpecifies which event types to include in a join.',
200
- 'via': 'Used with **remove via join on** to remove items via a join relationship.',
201
- 'with': 'Used with **remove with** to specify which event type triggers removal.',
202
- 'on': 'Used with **join** to specify the join property.',
203
- 'by': 'Used with **add** or **subtract** to specify the value.',
204
- 'id': 'Used with **children** to specify the child identifier expression.',
205
- 'no': 'Used with **no automap** to disable automatic property mapping.',
206
- 'variant': '**variant** *<Name>*\n\nDeclares one of several mutually exclusive named read models sharing the projection\'s identity. Entering one variant removes the entity from every other variant of the same projection.',
207
- 'enters': '**enters on** *<EventType>*\n\nDeclares the event that activates this variant - the only event allowed to create it. Every other event the variant subscribes to is update-only.',
208
- };
209
- return keywords[word] || null;
210
- }
211
- getExpressionInfo(word) {
212
- const expressions = {
213
- '$eventSourceId': '**$eventSourceId**\n\nThe identifier of the event source (aggregate/entity) that generated the event.',
214
- '$causedBy': '**$causedBy**\n\nThe identity that caused the event - `subject`, `name`, `userName` or `onBehalfOf`, itself an identity.\n\nChronicle cannot yet evaluate this short form (Cratis/Chronicle#4119); prefer **$eventContext.causedBy**.*property*.',
215
- '$eventContext': describeEventContext(),
216
- };
217
- return expressions[word] || null;
218
- }
219
- // Describes the $eventContext path segment starting at the given column, if the word there is one.
220
- getEventContextInfo(lineContent, startColumn) {
221
- for (const match of lineContent.matchAll(/\$eventContext((?:\.\w+(?:\(\))?)*)/g)) {
222
- let column = (match.index ?? 0) + 1;
223
- if (startColumn === column)
224
- return describeEventContext();
225
- column += '$eventContext'.length;
226
- const segments = match[1].split('.').slice(1);
227
- for (let index = 0; index < segments.length; index++) {
228
- column += 1;
229
- if (startColumn === column) {
230
- const path = segments.slice(0, index + 1);
231
- const member = eventContextMemberAt(path);
232
- return member ? describeEventContextMember(path.join('.'), member) : null;
233
- }
234
- column += segments[index].length;
235
- }
236
- }
237
- return null;
238
- }
239
- getPropertyInfo(model, position, propertyName) {
240
- // Try to find the active read model
241
- const firstLine = model.getLineContent(1).trim();
242
- const match = firstLine.match(/^projection\s+[\w.]+\s*=>\s*([\w.]+)/);
243
- if (!match)
244
- return null;
245
- const readModelName = match[1];
246
- const draftMatch = this.isDraftReadModel(readModelName) ? this.draftReadModel : null;
247
- const resolvedReadModel = draftMatch ? null : this.resolveReadModelInfo(readModelName);
248
- const activeSchema = draftMatch?.schema || resolvedReadModel?.schema;
249
- if (activeSchema?.properties && activeSchema.properties[propertyName]) {
250
- const prop = activeSchema.properties[propertyName];
251
- const type = this.getPropertyTypeDescription(prop);
252
- const description = prop.description;
253
- let content = `**Property:** \`${propertyName}\`\n\n**Type:** \`${type}\``;
254
- if (description) {
255
- content += `\n\n${description}`;
256
- }
257
- return content;
258
- }
259
- // Check if it's an event property
260
- const eventType = this.getCurrentEventType(model, position.lineNumber);
261
- if (eventType && this.eventSchemas[eventType]) {
262
- const eventSchema = this.eventSchemas[eventType];
263
- if (eventSchema.properties && eventSchema.properties[propertyName]) {
264
- const prop = eventSchema.properties[propertyName];
265
- const type = this.getPropertyTypeDescription(prop);
266
- const description = prop.description;
267
- let content = `**Event Property:** \`${propertyName}\`\n\n**Type:** \`${type}\``;
268
- if (description) {
269
- content += `\n\n${description}`;
270
- }
271
- return content;
272
- }
273
- }
274
- return null;
275
- }
276
- resolveReadModelInfo(readModelToken) {
277
- return this.readModels.find(rm => rm.identifier === readModelToken || rm.displayName === readModelToken) || null;
278
- }
279
- isDraftReadModel(readModelToken) {
280
- return !!this.draftReadModel && (this.draftReadModel.identifier === readModelToken || this.draftReadModel.displayName === readModelToken);
281
- }
282
- getCurrentEventType(model, lineNumber) {
283
- for (let i = lineNumber; i >= 1; i--) {
284
- const line = model.getLineContent(i).trim();
285
- const fromMatch = line.match(/^from\s+([\w-]+)/);
286
- if (fromMatch) {
287
- return fromMatch[1];
288
- }
289
- }
290
- return null;
291
- }
292
- getProjectionNameAtPosition(lineContent, column) {
293
- // Check if we're on line 1 (projection declaration line)
294
- const projectionMatch = lineContent.match(/^\s*projection\s+(\S+)\s*=>/);
295
- if (!projectionMatch)
296
- return false;
297
- const projectionKeywordEnd = lineContent.indexOf('projection') + 'projection'.length;
298
- const arrowStart = lineContent.indexOf('=>');
299
- // Check if cursor is between 'projection' keyword and '=>'
300
- // and is on the projection name itself
301
- return column > projectionKeywordEnd && column <= arrowStart;
302
- }
303
- getSchemaName(schema) {
304
- if (schema.name)
305
- return schema.name;
306
- if (schema.title)
307
- return schema.title;
308
- if (typeof schema.$id === 'string') {
309
- const parts = schema.$id.split('/');
310
- return parts[parts.length - 1] || schema.$id;
311
- }
312
- return undefined;
313
- }
314
- getSchemaDescription(schema) {
315
- return schema.description || undefined;
316
- }
317
- getSchemaProperties(schema) {
318
- if (!schema.properties)
319
- return [];
320
- return Object.entries(schema.properties).map(([name, prop]) => ({
321
- name,
322
- type: this.getPropertyTypeDescription(prop),
323
- }));
324
- }
325
- getPropertyTypeDescription(propSchema) {
326
- if (propSchema.type === 'array' && propSchema.items) {
327
- const itemType = propSchema.items.type || propSchema.items.$ref?.split('/').pop() || 'unknown';
328
- return `${itemType}[]`;
329
- }
330
- return propSchema.type || propSchema.$ref?.split('/').pop() || 'unknown';
331
- }
332
- }
333
- //# sourceMappingURL=HoverProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HoverProvider.js","sourceRoot":"","sources":["../../../sub-languages/projection/HoverProvider.ts"],"names":[],"mappings":"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"}