@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,388 +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 { fenceMap } from '../../document-context';
4
- import { validateEventContextPaths } from '../../validation';
5
- export class Validator {
6
- readModels = [];
7
- eventSchemas = {};
8
- draftReadModel = null;
9
- setReadModels(readModels) {
10
- this.readModels = readModels || [];
11
- }
12
- setDraftReadModel(draft) {
13
- this.draftReadModel = draft;
14
- }
15
- // Keep for backwards compatibility
16
- setReadModelSchemas(schemas) {
17
- this.readModels = schemas.map(schema => ({
18
- identifier: this.getSchemaName(schema) || '',
19
- displayName: this.getSchemaName(schema) || '',
20
- schema
21
- }));
22
- }
23
- setEventSchemas(schemas) {
24
- if (!schemas) {
25
- this.eventSchemas = {};
26
- return;
27
- }
28
- if (Array.isArray(schemas)) {
29
- const map = {};
30
- schemas.forEach((s, i) => {
31
- if (!s)
32
- return;
33
- const name = this.getSchemaName(s) || `Event${i + 1}`;
34
- map[name] = s;
35
- });
36
- this.eventSchemas = map;
37
- return;
38
- }
39
- this.eventSchemas = schemas;
40
- }
41
- validate(model) {
42
- const markers = [];
43
- const content = model.getValue();
44
- // Skip validation if content is empty or only whitespace
45
- // This prevents spurious errors when the model is first created before content is loaded
46
- if (!content.trim()) {
47
- return markers;
48
- }
49
- // Normalize line endings and split
50
- const lines = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
51
- // Find the first non-empty, non-comment line
52
- let firstNonEmptyLineIndex = 0;
53
- let firstLine = '';
54
- for (let i = 0; i < lines.length; i++) {
55
- const trimmed = lines[i].trim();
56
- if (trimmed && !trimmed.startsWith('#')) {
57
- firstNonEmptyLineIndex = i;
58
- firstLine = trimmed;
59
- break;
60
- }
61
- }
62
- if (!firstLine) {
63
- // This should not happen since we already checked for empty content above,
64
- // but if it does (content is all comments), just return without error
65
- return markers;
66
- }
67
- // Validate first meaningful line - projection declaration
68
- // Supports both "projection Name => ReadModel" and ad hoc "projection Name"
69
- const projectionWithReadModelMatch = firstLine.match(/^projection\s+([\w.]+)\s*=>\s*([\w.]+)\s*$/);
70
- const projectionAdHocMatch = !projectionWithReadModelMatch && firstLine.match(/^projection\s+([\w.]+)\s*$/);
71
- if (!projectionWithReadModelMatch && !projectionAdHocMatch) {
72
- const lineNumber = firstNonEmptyLineIndex + 1;
73
- markers.push(this.createError(lineNumber, 1, firstLine.length + 1, 'Projection definition must start with "projection <ProjectionName>" or "projection <ProjectionName> => <ReadModelIdentifier>"'));
74
- return markers;
75
- }
76
- let activeSchema;
77
- let readModelName = null;
78
- if (projectionWithReadModelMatch) {
79
- readModelName = projectionWithReadModelMatch[2];
80
- // Validate read model exists in schemas or is a draft
81
- const readModelExists = this.resolveReadModelIdentifier(readModelName) !== null;
82
- const isDraftReadModel = this.isDraftReadModel(readModelName);
83
- const readModelStartColumn = this.getReadModelStartColumn(firstLine, readModelName);
84
- if (!readModelExists && !isDraftReadModel) {
85
- const lineNumber = firstNonEmptyLineIndex + 1;
86
- const col = readModelStartColumn;
87
- markers.push(this.createError(lineNumber, col, col + readModelName.length, `Read model '${readModelName}' not found`));
88
- }
89
- else if (isDraftReadModel) {
90
- // Show info marker for draft read models - they exist but haven't been saved yet
91
- const lineNumber = firstNonEmptyLineIndex + 1;
92
- const col = readModelStartColumn;
93
- markers.push(this.createInfo(lineNumber, col, col + readModelName.length, `Read model '${readModelName}' is a draft (not yet saved)`));
94
- }
95
- // Get the active read model schema for property validation (check draft first)
96
- const isDraft = this.isDraftReadModel(readModelName);
97
- const activeReadModel = isDraft ? null : this.resolveReadModelInfo(readModelName);
98
- activeSchema = isDraft ? this.draftReadModel.schema : activeReadModel?.schema;
99
- }
100
- // For ad hoc projections (no read model), activeSchema stays undefined — property validation is skipped
101
- // Validate subsequent lines
102
- const contextStack = [activeSchema];
103
- const indentStack = [0]; // Track indentation levels for context
104
- let lastIndent = 0;
105
- const eventContextStack = [new Map()];
106
- for (let i = 1; i < lines.length; i++) {
107
- const lineNumber = i + 1;
108
- const line = lines[i];
109
- const trimmed = line.trim();
110
- if (!trimmed || trimmed.startsWith('#'))
111
- continue;
112
- // Calculate current indentation
113
- const currentIndent = line.search(/\S/);
114
- // Pop context when dedenting (exiting a children block)
115
- while (currentIndent < lastIndent && indentStack.length > 1) {
116
- const poppedIndent = indentStack.pop();
117
- if (poppedIndent !== undefined && currentIndent < poppedIndent) {
118
- contextStack.pop();
119
- eventContextStack.pop();
120
- }
121
- }
122
- lastIndent = currentIndent;
123
- // Get the current event context (events seen at this level)
124
- const currentEventContext = eventContextStack[eventContextStack.length - 1];
125
- // Validate event types in from/every blocks
126
- const fromMatch = trimmed.match(/^from\s+([\w-]+)/);
127
- if (fromMatch) {
128
- const eventType = fromMatch[1];
129
- const col = line.indexOf(eventType) + 1;
130
- if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {
131
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));
132
- }
133
- // Check for duplicate events at this level
134
- if (currentEventContext.has(eventType)) {
135
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));
136
- }
137
- else {
138
- currentEventContext.set(eventType, { lineNumber, col });
139
- }
140
- }
141
- // Validate variant declarations - each names its own read model, which becomes the active
142
- // schema for property validation inside the block (mirrors the projection-header handling above).
143
- const variantMatch = trimmed.match(/^variant\s+([\w.]+)\s*$/);
144
- if (variantMatch) {
145
- const [, variantName] = variantMatch;
146
- const col = line.indexOf(variantName) + 1;
147
- const isDraft = this.isDraftReadModel(variantName);
148
- const readModelExists = this.resolveReadModelIdentifier(variantName) !== null;
149
- if (!readModelExists && !isDraft) {
150
- markers.push(this.createError(lineNumber, col, col + variantName.length, `Read model '${variantName}' not found`));
151
- }
152
- else if (isDraft) {
153
- markers.push(this.createInfo(lineNumber, col, col + variantName.length, `Read model '${variantName}' is a draft (not yet saved)`));
154
- }
155
- const variantSchema = isDraft ? this.draftReadModel.schema : this.resolveReadModelInfo(variantName)?.schema;
156
- contextStack.push(variantSchema);
157
- indentStack.push(currentIndent);
158
- eventContextStack.push(new Map());
159
- }
160
- // Validate 'enters on' - the event that activates a variant. Read exactly like a 'from' block for
161
- // event-existence and duplicate-at-this-level purposes.
162
- const entersOnMatch = trimmed.match(/^enters\s+on\s+([\w-]+)/);
163
- if (entersOnMatch) {
164
- const eventType = entersOnMatch[1];
165
- const col = line.indexOf(eventType) + 1;
166
- if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {
167
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));
168
- }
169
- if (currentEventContext.has(eventType)) {
170
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));
171
- }
172
- else {
173
- currentEventContext.set(eventType, { lineNumber, col });
174
- }
175
- }
176
- // Validate event types in join/remove blocks
177
- const eventsMatch = trimmed.match(/^events\s+([\w-]+)/);
178
- if (eventsMatch) {
179
- const eventType = eventsMatch[1];
180
- const col = line.indexOf(eventType) + 1;
181
- if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {
182
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));
183
- }
184
- // Check for duplicate events at this level (within join blocks)
185
- if (currentEventContext.has(eventType)) {
186
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));
187
- }
188
- else {
189
- currentEventContext.set(eventType, { lineNumber, col });
190
- }
191
- }
192
- const removeWithMatch = trimmed.match(/^remove\s+(?:with|via\s+join\s+on)\s+([\w-]+)/);
193
- if (removeWithMatch) {
194
- const eventType = removeWithMatch[1];
195
- const col = line.indexOf(eventType) + 1;
196
- if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {
197
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));
198
- }
199
- // Check for duplicate events at this level
200
- if (currentEventContext.has(eventType)) {
201
- markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));
202
- }
203
- else {
204
- currentEventContext.set(eventType, { lineNumber, col });
205
- }
206
- }
207
- // Validate property assignments
208
- const assignmentMatch = trimmed.match(/^(\w+)\s*=\s*(.+)$/);
209
- if (assignmentMatch) {
210
- const currentSchema = contextStack[contextStack.length - 1];
211
- if (currentSchema?.properties) {
212
- const [, propertyName] = assignmentMatch;
213
- if (!currentSchema.properties[propertyName]) {
214
- const col = line.indexOf(propertyName) + 1;
215
- const schemaName = this.getSchemaName(currentSchema) || 'current schema';
216
- markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));
217
- }
218
- }
219
- }
220
- // Validate increment/decrement/count targets
221
- const numericOpMatch = trimmed.match(/^(?:increment|decrement|count)\s+(\w+)$/);
222
- if (numericOpMatch) {
223
- const currentSchema = contextStack[contextStack.length - 1];
224
- if (currentSchema?.properties) {
225
- const [, propertyName] = numericOpMatch;
226
- if (!currentSchema.properties[propertyName]) {
227
- const col = line.indexOf(propertyName) + 1;
228
- const schemaName = this.getSchemaName(currentSchema) || 'current schema';
229
- markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));
230
- }
231
- }
232
- }
233
- // Validate add/subtract targets
234
- const addSubMatch = trimmed.match(/^(?:add|subtract)\s+(\w+)\s+by\s+/);
235
- if (addSubMatch) {
236
- const currentSchema = contextStack[contextStack.length - 1];
237
- if (currentSchema?.properties) {
238
- const [, propertyName] = addSubMatch;
239
- if (!currentSchema.properties[propertyName]) {
240
- const col = line.indexOf(propertyName) + 1;
241
- const schemaName = this.getSchemaName(currentSchema) || 'current schema';
242
- markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));
243
- }
244
- }
245
- }
246
- // Validate children references
247
- const childrenMatch = trimmed.match(/^children\s+(\w+)\s+identified\s+by\s+/);
248
- if (childrenMatch) {
249
- const currentSchema = contextStack[contextStack.length - 1];
250
- if (currentSchema?.properties) {
251
- const [, propertyName] = childrenMatch;
252
- const prop = currentSchema.properties[propertyName];
253
- if (!prop) {
254
- const col = line.indexOf(propertyName) + 1;
255
- const schemaName = this.getSchemaName(currentSchema) || 'current schema';
256
- markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Collection property '${propertyName}' not found in ${schemaName}`));
257
- }
258
- else if (prop.type !== 'array' && !prop.items) {
259
- const col = line.indexOf(propertyName) + 1;
260
- markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' is not a collection (array) type`));
261
- }
262
- else {
263
- // Push child schema onto context stack for validating nested properties
264
- const childSchema = prop.items;
265
- if (childSchema) {
266
- contextStack.push(childSchema);
267
- indentStack.push(currentIndent);
268
- // Push a new event context for the children block
269
- eventContextStack.push(new Map());
270
- }
271
- }
272
- }
273
- }
274
- // Validate join references
275
- const joinMatch = trimmed.match(/^join\s+(\w+)\s+on\s+(\w+)/);
276
- if (joinMatch && activeSchema?.properties) {
277
- const [, collectionName, joinProperty] = joinMatch;
278
- const collectionProp = activeSchema.properties[collectionName];
279
- if (!collectionProp) {
280
- const col = line.indexOf(collectionName) + 1;
281
- markers.push(this.createWarning(lineNumber, col, col + collectionName.length, `Collection property '${collectionName}' not found in read model '${readModelName}'`));
282
- }
283
- else if (collectionProp.type !== 'array' && !collectionProp.items) {
284
- const col = line.indexOf(collectionName) + 1;
285
- markers.push(this.createWarning(lineNumber, col, col + collectionName.length, `Property '${collectionName}' is not a collection (array) type`));
286
- }
287
- if (!activeSchema.properties[joinProperty]) {
288
- const col = line.indexOf(joinProperty, line.indexOf('on')) + 1;
289
- markers.push(this.createWarning(lineNumber, col, col + joinProperty.length, `Property '${joinProperty}' not found in read model '${readModelName}'`));
290
- }
291
- // Push a new event context for the join block
292
- eventContextStack.push(new Map());
293
- indentStack.push(currentIndent);
294
- }
295
- // Validate key references for composite keys
296
- const keyMatch = trimmed.match(/^key\s+(\w+)\s*$/);
297
- if (keyMatch && activeSchema) {
298
- const [, keyName] = keyMatch;
299
- // Check if it's a composite key type (should exist in definitions or as a property)
300
- const isInDefinitions = activeSchema.definitions && activeSchema.definitions[keyName];
301
- const isProperty = activeSchema.properties && activeSchema.properties[keyName];
302
- if (!isInDefinitions && !isProperty && !this.isBuiltInExpression(keyName)) {
303
- const col = line.indexOf(keyName) + 1;
304
- markers.push(this.createWarning(lineNumber, col, col + keyName.length, `Composite key type '${keyName}' not found in read model schema`));
305
- }
306
- }
307
- }
308
- // Share the host's event-context path checks and catalog resolution, including dynamic dictionary keys.
309
- for (const issue of validateEventContextPaths(lines, fenceMap(lines))) {
310
- markers.push({
311
- severity: issue.severity === 'error' ? 8 : 4,
312
- startLineNumber: issue.line + 1,
313
- endLineNumber: issue.line + 1,
314
- startColumn: issue.startColumn,
315
- endColumn: issue.endColumn,
316
- message: issue.message,
317
- code: issue.code,
318
- });
319
- }
320
- return markers;
321
- }
322
- resolveReadModelInfo(readModelToken) {
323
- return this.readModels.find(rm => rm.identifier === readModelToken || rm.displayName === readModelToken) || null;
324
- }
325
- getReadModelStartColumn(firstLine, readModelName) {
326
- const prefixMatch = firstLine.match(/^\s*projection\s+[\w.]+\s*=>\s*/);
327
- if (!prefixMatch) {
328
- const fallbackIndex = firstLine.lastIndexOf(readModelName);
329
- return (fallbackIndex >= 0 ? fallbackIndex : 0) + 1;
330
- }
331
- return prefixMatch[0].length + 1;
332
- }
333
- resolveReadModelIdentifier(readModelToken) {
334
- if (this.isDraftReadModel(readModelToken)) {
335
- return this.draftReadModel.identifier;
336
- }
337
- const readModel = this.resolveReadModelInfo(readModelToken);
338
- return readModel?.identifier ?? null;
339
- }
340
- isDraftReadModel(readModelToken) {
341
- return !!this.draftReadModel && (this.draftReadModel.identifier === readModelToken || this.draftReadModel.displayName === readModelToken);
342
- }
343
- isBuiltInExpression(text) {
344
- return text.startsWith('$') || ['true', 'false', 'null'].includes(text);
345
- }
346
- createError(line, startCol, endCol, message) {
347
- return {
348
- severity: 8, // Error
349
- startLineNumber: line,
350
- startColumn: startCol,
351
- endLineNumber: line,
352
- endColumn: endCol,
353
- message,
354
- };
355
- }
356
- createWarning(line, startCol, endCol, message) {
357
- return {
358
- severity: 4, // Warning
359
- startLineNumber: line,
360
- startColumn: startCol,
361
- endLineNumber: line,
362
- endColumn: endCol,
363
- message,
364
- };
365
- }
366
- createInfo(line, startCol, endCol, message) {
367
- return {
368
- severity: 2, // Info (hint) - shows as blue/green squiggly
369
- startLineNumber: line,
370
- startColumn: startCol,
371
- endLineNumber: line,
372
- endColumn: endCol,
373
- message,
374
- };
375
- }
376
- getSchemaName(schema) {
377
- if (schema.name)
378
- return schema.name;
379
- if (schema.title)
380
- return schema.title;
381
- if (typeof schema.$id === 'string') {
382
- const parts = schema.$id.split('/');
383
- return parts[parts.length - 1] || schema.$id;
384
- }
385
- return undefined;
386
- }
387
- }
388
- //# sourceMappingURL=Validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../sub-languages/projection/Validator.ts"],"names":[],"mappings":"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"}
@@ -1,160 +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 { configuration, languageId, monarchLanguage } from './language';
4
- import { CompletionProvider } from './CompletionProvider';
5
- import { Validator } from './Validator';
6
- import { HoverProvider } from './HoverProvider';
7
- import { CodeActionProvider } from './CodeActionProvider';
8
- let validator;
9
- let completionProvider;
10
- let hoverProvider;
11
- let codeActionProvider;
12
- let disposables = [];
13
- let monacoInstance = null;
14
- let isRegistered = false;
15
- let pendingCreateReadModelCallback = null;
16
- let pendingEditReadModelCallback = null;
17
- export function registerProjectionLanguage(monaco) {
18
- if (!isRegistered) {
19
- isRegistered = true;
20
- monacoInstance = monaco;
21
- monaco.languages.register({ id: languageId });
22
- monaco.languages.setLanguageConfiguration(languageId, configuration);
23
- monaco.languages.setMonarchTokensProvider(languageId, monarchLanguage);
24
- validator = new Validator();
25
- completionProvider = new CompletionProvider();
26
- hoverProvider = new HoverProvider();
27
- codeActionProvider = new CodeActionProvider();
28
- // Apply pending callbacks if they were set before initialization
29
- if (pendingCreateReadModelCallback) {
30
- codeActionProvider.setCreateReadModelCallback(pendingCreateReadModelCallback);
31
- pendingCreateReadModelCallback = null;
32
- }
33
- if (pendingEditReadModelCallback) {
34
- codeActionProvider.setEditReadModelCallback(pendingEditReadModelCallback);
35
- pendingEditReadModelCallback = null;
36
- }
37
- // Register completion provider with helpful trigger characters
38
- disposables.push(monaco.languages.registerCompletionItemProvider(languageId, {
39
- provideCompletionItems: completionProvider.provideCompletionItems.bind(completionProvider),
40
- triggerCharacters: ['.', ' ', '=', '\n', '$'],
41
- }));
42
- // Register hover provider
43
- disposables.push(monaco.languages.registerHoverProvider(languageId, {
44
- provideHover: hoverProvider.provideHover.bind(hoverProvider),
45
- }));
46
- // Register code action provider
47
- disposables.push(monaco.languages.registerCodeActionProvider(languageId, {
48
- provideCodeActions: codeActionProvider.provideCodeActions.bind(codeActionProvider),
49
- }, {
50
- providedCodeActionKinds: ['quickfix']
51
- }));
52
- // Register command for creating read models
53
- disposables.push(monaco.editor.registerCommand('pdl.createReadModel', (_accessor, readModelName) => {
54
- codeActionProvider?.invokeCreateReadModel(readModelName);
55
- }));
56
- // Register command for editing read models
57
- disposables.push(monaco.editor.registerCommand('pdl.editReadModel', (_accessor, readModelName, currentSchema) => {
58
- codeActionProvider?.invokeEditReadModel(readModelName, currentSchema);
59
- }));
60
- // Register validation on model change
61
- disposables.push(monaco.editor.onDidCreateModel((model) => {
62
- if (model.getLanguageId() === languageId) {
63
- validateModel(monaco, model);
64
- disposables.push(model.onDidChangeContent(() => validateModel(monaco, model)));
65
- }
66
- }));
67
- // Validate existing models
68
- monaco.editor.getModels().forEach((model) => {
69
- if (model.getLanguageId() === languageId) {
70
- validateModel(monaco, model);
71
- }
72
- });
73
- }
74
- return { dispose };
75
- }
76
- function dispose() {
77
- disposables.forEach((disposable) => disposable.dispose());
78
- disposables = [];
79
- isRegistered = false;
80
- monacoInstance = null;
81
- }
82
- export function setReadModelSchema(schema) {
83
- // Backwards compatible single-schema setter
84
- validator?.setReadModelSchemas([schema]);
85
- completionProvider?.setReadModelSchemas([schema]);
86
- }
87
- export function setReadModelSchemas(readModels) {
88
- validator?.setReadModels(readModels);
89
- completionProvider?.setReadModels(readModels);
90
- hoverProvider?.setReadModels(readModels);
91
- codeActionProvider?.setReadModels(readModels);
92
- revalidateAllModels();
93
- }
94
- export function setCreateReadModelCallback(callback) {
95
- if (codeActionProvider) {
96
- codeActionProvider.setCreateReadModelCallback(callback);
97
- }
98
- else {
99
- // Store callback for later when the provider is initialized
100
- pendingCreateReadModelCallback = callback;
101
- }
102
- }
103
- export function setEditReadModelCallback(callback) {
104
- if (codeActionProvider) {
105
- codeActionProvider.setEditReadModelCallback(callback);
106
- }
107
- else {
108
- // Store callback for later when the provider is initialized
109
- pendingEditReadModelCallback = callback;
110
- }
111
- }
112
- export function setDraftReadModel(draft) {
113
- codeActionProvider?.setDraftReadModel(draft);
114
- validator?.setDraftReadModel(draft);
115
- hoverProvider?.setDraftReadModel(draft);
116
- revalidateAllModels();
117
- }
118
- export function setEventSchemas(eventSchemas) {
119
- // Normalize either an array of schemas or a keyed record into a record keyed by derived schema name
120
- const normalize = (input) => {
121
- if (!input)
122
- return {};
123
- if (Array.isArray(input)) {
124
- const out = {};
125
- input.forEach((s, i) => {
126
- if (!s)
127
- return;
128
- const name = s.title || s.name || (typeof s.$id === 'string' ? s.$id.split('/').pop() : undefined) || `Event${i + 1}`;
129
- out[name] = s;
130
- });
131
- return out;
132
- }
133
- return input;
134
- };
135
- const normalized = normalize(eventSchemas);
136
- validator?.setEventSchemas(normalized);
137
- completionProvider?.setEventSchemas(normalized);
138
- hoverProvider?.setEventSchemas(normalized);
139
- revalidateAllModels();
140
- }
141
- export function setEventSequences(sequences) {
142
- completionProvider?.setEventSequences(sequences);
143
- }
144
- function validateModel(monaco, model) {
145
- if (validator && !model.isDisposed()) {
146
- const markers = validator.validate(model);
147
- monaco.editor.setModelMarkers(model, 'pdl-validator', markers);
148
- }
149
- }
150
- function revalidateAllModels() {
151
- if (monacoInstance) {
152
- monacoInstance.editor.getModels().forEach((model) => {
153
- if (model.getLanguageId() === languageId) {
154
- validateModel(monacoInstance, model);
155
- }
156
- });
157
- }
158
- }
159
- export { languageId };
160
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sub-languages/projection/index.ts"],"names":[],"mappings":"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"}