@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.
- package/README.md +15 -0
- package/dist/TypeReferenceSymbol.d.ts +8 -0
- package/dist/TypeReferenceSymbol.d.ts.map +1 -0
- package/dist/bundles/chunk-GJX4NJYC.js +4836 -0
- package/dist/bundles/chunk-GJX4NJYC.js.map +7 -0
- package/dist/bundles/index.js +1417 -0
- package/dist/bundles/index.js.map +7 -0
- package/dist/bundles/sub-languages/capture/index.js +677 -0
- package/dist/bundles/sub-languages/capture/index.js.map +7 -0
- package/dist/bundles/sub-languages/projection/index.js +1647 -0
- package/dist/bundles/sub-languages/projection/index.js.map +7 -0
- package/dist/code-actions.d.ts +3 -0
- package/dist/code-actions.d.ts.map +1 -0
- package/dist/completion-items.d.ts +1 -0
- package/dist/completion-items.d.ts.map +1 -1
- package/dist/completion-planner.d.ts.map +1 -1
- package/dist/completions.d.ts.map +1 -1
- package/dist/diagnostic-codes.d.ts +3 -0
- package/dist/diagnostic-codes.d.ts.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/hover-content.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/keyword-docs.d.ts.map +1 -1
- package/dist/language.d.ts +1 -0
- package/dist/language.d.ts.map +1 -1
- package/dist/production-destinations.d.ts.map +1 -1
- package/dist/symbols.d.ts +4 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/validation.d.ts +1 -0
- package/dist/validation.d.ts.map +1 -1
- package/package.json +13 -9
- package/DestinationHint.ts +0 -8
- package/ProductionSymbol.ts +0 -11
- package/completion-items.ts +0 -261
- package/completion-planner.ts +0 -167
- package/completions.ts +0 -156
- package/diagnostic-codes.ts +0 -43
- package/diagnostics.ts +0 -55
- package/dist/DestinationHint.js +0 -4
- package/dist/DestinationHint.js.map +0 -1
- package/dist/ProductionSymbol.js +0 -4
- package/dist/ProductionSymbol.js.map +0 -1
- package/dist/completion-items.js +0 -228
- package/dist/completion-items.js.map +0 -1
- package/dist/completion-planner.js +0 -143
- package/dist/completion-planner.js.map +0 -1
- package/dist/completions.js +0 -101
- package/dist/completions.js.map +0 -1
- package/dist/diagnostic-codes.js +0 -41
- package/dist/diagnostic-codes.js.map +0 -1
- package/dist/diagnostics.js +0 -50
- package/dist/diagnostics.js.map +0 -1
- package/dist/document-context.js +0 -85
- package/dist/document-context.js.map +0 -1
- package/dist/event-analysis-source.js +0 -19
- package/dist/event-analysis-source.js.map +0 -1
- package/dist/event-context-catalog.js +0 -116
- package/dist/event-context-catalog.js.map +0 -1
- package/dist/event-context.js +0 -88
- package/dist/event-context.js.map +0 -1
- package/dist/file-imports.js +0 -58
- package/dist/file-imports.js.map +0 -1
- package/dist/file-references.js +0 -70
- package/dist/file-references.js.map +0 -1
- package/dist/hover-content.js +0 -98
- package/dist/hover-content.js.map +0 -1
- package/dist/hover.js +0 -15
- package/dist/hover.js.map +0 -1
- package/dist/index.js +0 -61
- package/dist/index.js.map +0 -1
- package/dist/inlay-hints.js +0 -15
- package/dist/inlay-hints.js.map +0 -1
- package/dist/inline-event-validation.js +0 -131
- package/dist/inline-event-validation.js.map +0 -1
- package/dist/keyword-docs.js +0 -148
- package/dist/keyword-docs.js.map +0 -1
- package/dist/language.js +0 -196
- package/dist/language.js.map +0 -1
- package/dist/production-destinations.js +0 -32
- package/dist/production-destinations.js.map +0 -1
- package/dist/sub-language-registry.js +0 -18
- package/dist/sub-language-registry.js.map +0 -1
- package/dist/sub-languages/capture/CompletionProvider.js +0 -332
- package/dist/sub-languages/capture/CompletionProvider.js.map +0 -1
- package/dist/sub-languages/capture/HoverProvider.js +0 -87
- package/dist/sub-languages/capture/HoverProvider.js.map +0 -1
- package/dist/sub-languages/capture/Validator.js +0 -72
- package/dist/sub-languages/capture/Validator.js.map +0 -1
- package/dist/sub-languages/capture/index.js +0 -58
- package/dist/sub-languages/capture/index.js.map +0 -1
- package/dist/sub-languages/capture/language.js +0 -160
- package/dist/sub-languages/capture/language.js.map +0 -1
- package/dist/sub-languages/cdl.js +0 -74
- package/dist/sub-languages/cdl.js.map +0 -1
- package/dist/sub-languages/pdl.js +0 -73
- package/dist/sub-languages/pdl.js.map +0 -1
- package/dist/sub-languages/projection/CodeActionProvider.js +0 -93
- package/dist/sub-languages/projection/CodeActionProvider.js.map +0 -1
- package/dist/sub-languages/projection/CompletionProvider.js +0 -595
- package/dist/sub-languages/projection/CompletionProvider.js.map +0 -1
- package/dist/sub-languages/projection/HoverProvider.js +0 -333
- package/dist/sub-languages/projection/HoverProvider.js.map +0 -1
- package/dist/sub-languages/projection/Validator.js +0 -388
- package/dist/sub-languages/projection/Validator.js.map +0 -1
- package/dist/sub-languages/projection/index.js +0 -160
- package/dist/sub-languages/projection/index.js.map +0 -1
- package/dist/sub-languages/projection/language.js +0 -171
- package/dist/sub-languages/projection/language.js.map +0 -1
- package/dist/symbols.js +0 -275
- package/dist/symbols.js.map +0 -1
- package/dist/themes/screenplay-dark.js +0 -30
- package/dist/themes/screenplay-dark.js.map +0 -1
- package/dist/themes/screenplay-light.js +0 -30
- package/dist/themes/screenplay-light.js.map +0 -1
- package/dist/tokens.js +0 -147
- package/dist/tokens.js.map +0 -1
- package/dist/validation.js +0 -248
- package/dist/validation.js.map +0 -1
- package/document-context.ts +0 -93
- package/event-analysis-source.ts +0 -18
- package/event-context-catalog.ts +0 -135
- package/event-context.ts +0 -119
- package/file-imports.ts +0 -70
- package/file-references.ts +0 -87
- package/for_documentContext/when_stripping_comments.ts +0 -32
- package/for_eventContext/when_resolving_generated_catalog_vectors.ts +0 -15
- package/for_eventGenerations/when_editing_event_generations.ts +0 -57
- package/for_fileImports/when_finding_file_imports.ts +0 -38
- package/for_fileReferences/when_recognizing_an_absolute_path/with_paths_of_every_shape.ts +0 -26
- package/for_fileReferences/when_scanning_a_document/inside_a_code_fence.ts +0 -26
- package/for_fileReferences/when_scanning_a_document/with_a_bare_file_keyword.ts +0 -19
- package/for_fileReferences/when_scanning_a_document/with_a_file_directive.ts +0 -30
- package/for_fileReferences/when_scanning_a_document/with_a_property_named_file.ts +0 -25
- package/for_fileReferences/when_scanning_a_document/with_a_trailing_comment.ts +0 -25
- package/for_fileReferences/when_scanning_a_document/with_directives_on_several_constructs.ts +0 -41
- package/for_importablePaths/when_listing_what_a_document_can_import.ts +0 -34
- package/for_inlineEvents/when_analyzing_many_inline_events.ts +0 -59
- package/for_inlineEvents/when_authoring_inline_events.ts +0 -149
- package/for_inlineEvents/when_completing_many_events.ts +0 -49
- package/for_inlineEvents/when_indexing_command_production_ownership.ts +0 -79
- package/for_planCompletions/when_completing_a_file_import.ts +0 -26
- package/for_planCompletions/when_completing_a_specification_query.ts +0 -24
- package/for_planCompletions/when_completing_a_specification_step.ts +0 -42
- package/for_planCompletions/when_completing_an_absent_read_model.ts +0 -14
- package/for_planCompletions/when_completing_reaction_reads.ts +0 -36
- package/for_projectionCompletionProvider/when_completing_an_event_context_path.ts +0 -102
- package/for_projectionHoverProvider/when_hovering_an_event_context_path.ts +0 -44
- package/for_projectionValidator/when_validating_a_projection_with_variants.ts +0 -128
- package/for_projectionValidator/when_validating_event_context_paths.ts +0 -31
- package/for_scanDocument/when_scanning_a_query/with_a_dotted_return_type.ts +0 -34
- package/for_scanDocument/when_scanning_aliased_reads.ts +0 -33
- package/for_scanDocument/when_scanning_many_commands.ts +0 -47
- package/for_tokens/when_highlighting_a_file_import.ts +0 -18
- package/for_tokens/when_highlighting_event_metadata.ts +0 -63
- package/for_tokens/when_highlighting_specification_steps.ts +0 -28
- package/for_validateLines/when_validating_a_document/with_a_problem_of_every_coded_kind.ts +0 -77
- package/for_validateLines/when_validating_a_document/with_an_unknown_policy.ts +0 -33
- package/for_validateLines/when_validating_a_file_placed_by_an_import/with_names_declared_in_other_files.ts +0 -43
- package/for_validateLines/when_validating_event_context_paths/in_a_projection.ts +0 -97
- package/for_validateLines/when_validating_file_imports/at_every_level.ts +0 -36
- package/for_validateLines/when_validating_production_destinations/with_an_available_identifier.ts +0 -120
- package/hover-content.ts +0 -117
- package/hover.ts +0 -23
- package/index.ts +0 -125
- package/inlay-hints.ts +0 -17
- package/inline-event-validation.ts +0 -115
- package/keyword-docs.ts +0 -152
- package/language.ts +0 -212
- package/production-destinations.ts +0 -32
- package/sub-language-registry.ts +0 -42
- package/sub-languages/capture/CompletionProvider.ts +0 -365
- package/sub-languages/capture/HoverProvider.ts +0 -99
- package/sub-languages/capture/Validator.ts +0 -97
- package/sub-languages/capture/index.ts +0 -72
- package/sub-languages/capture/language.ts +0 -176
- package/sub-languages/cdl.ts +0 -76
- package/sub-languages/pdl.ts +0 -75
- package/sub-languages/projection/CodeActionProvider.ts +0 -123
- package/sub-languages/projection/CompletionProvider.ts +0 -660
- package/sub-languages/projection/HoverProvider.ts +0 -377
- package/sub-languages/projection/Validator.ts +0 -441
- package/sub-languages/projection/index.ts +0 -223
- package/sub-languages/projection/language.ts +0 -193
- package/symbols.ts +0 -374
- package/themes/screenplay-dark.ts +0 -33
- package/themes/screenplay-light.ts +0 -33
- package/tokens.ts +0 -174
- package/validation.ts +0 -443
- 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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"}
|