@reqlan/language 1.6.2 → 1.7.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 (55) hide show
  1. package/README.md +6 -0
  2. package/out/generated/ast.d.ts +3 -3
  3. package/out/generated/ast.js +1 -1
  4. package/out/generated/ast.js.map +1 -1
  5. package/out/generated/grammar.js +2 -3318
  6. package/out/generated/grammar.js.map +1 -1
  7. package/out/generated/module.d.ts +2 -2
  8. package/out/generated/module.js +2 -2
  9. package/out/generated/module.js.map +1 -1
  10. package/out/index.d.ts +3 -0
  11. package/out/index.js +3 -0
  12. package/out/index.js.map +1 -1
  13. package/out/reqlan-async-parser.d.ts +37 -0
  14. package/out/reqlan-async-parser.js +117 -0
  15. package/out/reqlan-async-parser.js.map +1 -0
  16. package/out/reqlan-completion-provider.js +1 -1
  17. package/out/reqlan-completion-provider.js.map +1 -1
  18. package/out/reqlan-document-factory.d.ts +16 -0
  19. package/out/reqlan-document-factory.js +50 -0
  20. package/out/reqlan-document-factory.js.map +1 -0
  21. package/out/reqlan-linker.js +2 -2
  22. package/out/reqlan-linker.js.map +1 -1
  23. package/out/reqlan-module.d.ts +2 -1
  24. package/out/reqlan-module.js +12 -2
  25. package/out/reqlan-module.js.map +1 -1
  26. package/out/reqlan-parse-budget.d.ts +50 -0
  27. package/out/reqlan-parse-budget.js +89 -0
  28. package/out/reqlan-parse-budget.js.map +1 -0
  29. package/out/reqlan-parse-worker.d.ts +1 -0
  30. package/out/reqlan-parse-worker.js +34 -0
  31. package/out/reqlan-parse-worker.js.map +1 -0
  32. package/out/reqlan-token-builder.js +102 -25
  33. package/out/reqlan-token-builder.js.map +1 -1
  34. package/out/reqlan-validator.d.ts +9 -1
  35. package/out/reqlan-validator.js +16 -2
  36. package/out/reqlan-validator.js.map +1 -1
  37. package/out/reqlan-workspace-manager.d.ts +11 -0
  38. package/out/reqlan-workspace-manager.js +24 -0
  39. package/out/reqlan-workspace-manager.js.map +1 -0
  40. package/package.json +1 -1
  41. package/src/generated/ast.ts +3 -3
  42. package/src/generated/grammar.ts +2 -3318
  43. package/src/generated/module.ts +2 -2
  44. package/src/index.ts +3 -0
  45. package/src/reqlan-async-parser.ts +178 -0
  46. package/src/reqlan-completion-provider.ts +1 -1
  47. package/src/reqlan-document-factory.ts +75 -0
  48. package/src/reqlan-linker.ts +4 -2
  49. package/src/reqlan-module.ts +15 -3
  50. package/src/reqlan-parse-budget.ts +155 -0
  51. package/src/reqlan-parse-worker.ts +35 -0
  52. package/src/reqlan-token-builder.ts +122 -25
  53. package/src/reqlan-validator.ts +22 -1
  54. package/src/reqlan-workspace-manager.ts +38 -0
  55. package/src/reqlan.langium +3 -1
@@ -0,0 +1,89 @@
1
+ /** Default wall-clock budget for lex+parse of one file (worker-enforced). */
2
+ export const DEFAULT_PARSE_BUDGET_MS = 8000;
3
+ /**
4
+ * Prefer in-process sync parse below this size. Worker threads (killable budget)
5
+ * are reserved for larger inputs, hang-sentinel tests, sticky timeout escalation,
6
+ * or an explicit force.
7
+ */
8
+ export const DEFAULT_WORKER_PARSE_THRESHOLD_CHARS = 64000;
9
+ /** Test-only sentinel: a worker that sees this marker hangs until terminated. */
10
+ export const PARSE_HANG_SENTINEL = '__REQLAN_PARSE_HANG__';
11
+ export const PARSE_TIMEOUT_WARNING = 'Parse budget exceeded for this file; semantic features may be incomplete until the file is simplified or the budget is raised.';
12
+ export function parseTimeoutErrorMessage(timeoutMs) {
13
+ return `Failed to lex/parse this file within ${timeoutMs}ms; left unloaded so the rest of the workspace can continue.`;
14
+ }
15
+ export function parseFailureErrorMessage(cause) {
16
+ return `Lex/parse aborted for this file (${cause}); left unloaded so the rest of the workspace can continue.`;
17
+ }
18
+ /** Whether this parse should run in a killable worker thread. */
19
+ export function shouldEscalateToParseWorker(text, options = {}) {
20
+ const mode = options.useWorker ?? 'auto';
21
+ if (mode === false) {
22
+ return false;
23
+ }
24
+ if (mode === true || options.forceWorker) {
25
+ return true;
26
+ }
27
+ if (text.includes(PARSE_HANG_SENTINEL)) {
28
+ return true;
29
+ }
30
+ const threshold = options.thresholdChars ?? DEFAULT_WORKER_PARSE_THRESHOLD_CHARS;
31
+ return text.length >= threshold;
32
+ }
33
+ export function isReqlanIncompleteParseResult(result) {
34
+ return Boolean(result.reqlanIncomplete);
35
+ }
36
+ function placeholderToken() {
37
+ return {
38
+ image: '',
39
+ startOffset: Number.NaN,
40
+ endOffset: Number.NaN,
41
+ startLine: Number.NaN,
42
+ endLine: Number.NaN,
43
+ startColumn: Number.NaN,
44
+ endColumn: Number.NaN,
45
+ tokenTypeIdx: -1,
46
+ tokenType: { name: 'EOF' }
47
+ };
48
+ }
49
+ function timeoutParserError(message) {
50
+ return {
51
+ name: 'ReqlanParseTimeout',
52
+ message,
53
+ token: placeholderToken(),
54
+ resyncedTokens: [],
55
+ context: {
56
+ ruleStack: [],
57
+ ruleOccurrenceStack: []
58
+ }
59
+ };
60
+ }
61
+ function timeoutLexerWarning(message) {
62
+ return {
63
+ offset: 0,
64
+ line: 1,
65
+ column: 1,
66
+ length: 1,
67
+ message,
68
+ severity: 'warning'
69
+ };
70
+ }
71
+ /**
72
+ * Empty model with a lexer warning and a parser error so the editor shows both severities.
73
+ */
74
+ export function createIncompleteParseResult(parser, options) {
75
+ const empty = parser.parse('');
76
+ const errorMessage = options.reason === 'timeout'
77
+ ? parseTimeoutErrorMessage(options.timeoutMs ?? DEFAULT_PARSE_BUDGET_MS)
78
+ : parseFailureErrorMessage(options.cause ?? 'unexpected error');
79
+ // Casts: Chevrotain exception shapes are structural; Langium only needs message + token positions.
80
+ empty.parserErrors = [timeoutParserError(errorMessage)];
81
+ empty.lexerErrors = [timeoutLexerWarning(PARSE_TIMEOUT_WARNING)];
82
+ empty.reqlanIncomplete = {
83
+ reason: options.reason,
84
+ timeoutMs: options.timeoutMs,
85
+ cause: options.cause
86
+ };
87
+ return empty;
88
+ }
89
+ //# sourceMappingURL=reqlan-parse-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-parse-budget.js","sourceRoot":"","sources":["../src/reqlan-parse-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Langium worker-thread parse entry: sync lex/parse, dehydrate, postMessage.
3
+ * The parent enforces the wall-clock budget via worker.terminate().
4
+ * rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
5
+ */
6
+ import { parentPort } from 'node:worker_threads';
7
+ import { EmptyFileSystem } from 'langium';
8
+ import { createReqlanServices } from './reqlan-module.js';
9
+ import { PARSE_HANG_SENTINEL } from './reqlan-parse-budget.js';
10
+ if (!parentPort) {
11
+ throw new Error('reqlan-parse-worker must run as a worker thread');
12
+ }
13
+ const { Reqlan } = createReqlanServices(EmptyFileSystem);
14
+ const parser = Reqlan.parser.LangiumParser;
15
+ const hydrator = Reqlan.serializer.Hydrator;
16
+ parentPort.on('message', (text) => {
17
+ const input = typeof text === 'string' ? text : '';
18
+ if (input.includes(PARSE_HANG_SENTINEL)) {
19
+ // Intentional hang for tests — parent terminates on budget expiry.
20
+ for (;;) {
21
+ /* spin */
22
+ }
23
+ }
24
+ try {
25
+ const result = parser.parse(input);
26
+ parentPort.postMessage(hydrator.dehydrate(result));
27
+ }
28
+ catch (error) {
29
+ // Surface as worker 'error' so ParserWorker rejects instead of hydrating garbage.
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ throw new Error(`reqlan parse worker failed: ${message}`);
32
+ }
33
+ });
34
+ //# sourceMappingURL=reqlan-parse-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-parse-worker.js","sourceRoot":"","sources":["../src/reqlan-parse-worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;IACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AAE5C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtC,mEAAmE;QACnE,SAAS,CAAC;YACN,UAAU;QACd,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,UAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,kFAAkF;QAClF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -98,7 +98,13 @@ const markdownLink = (text, offset) => {
98
98
  }
99
99
  return null;
100
100
  };
101
- const topLevelBlockOpener = /(?:^|\n)[ \t]*(?:[A-Za-z_.][\w.-]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/;
101
+ const blockOpenerLine = /^[ \t]*(?:[A-Za-z_.][\w.-]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/;
102
+ function lineStartOffset(text, offset) {
103
+ return text.lastIndexOf('\n', offset - 1) + 1;
104
+ }
105
+ function textBeforeOnLine(text, offset) {
106
+ return text.slice(lineStartOffset(text, offset), offset).replace(/[ \t]+$/, '');
107
+ }
102
108
  function isEscapedAt(text, offset) {
103
109
  let backslashes = 0;
104
110
  for (let index = offset - 1; index >= 0 && text[index] === '\\'; index--) {
@@ -113,8 +119,10 @@ function isStructuralOpenBraceAtDepth(text, offset, depth) {
113
119
  if (isEscapedAt(text, offset)) {
114
120
  return false;
115
121
  }
116
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
117
- if (depth === 0 && topLevelBlockOpener.test(before)) {
122
+ const before = textBeforeOnLine(text, offset);
123
+ // Top-level named blocks (`name {`) and nameless recoverable blocks (`{` alone).
124
+ // Leading indentation is allowed — top-level ideas are often indented in fixtures.
125
+ if (depth === 0 && (blockOpenerLine.test(before) || (isLineStartAt(text, offset) && before.trim().length === 0))) {
118
126
  return true;
119
127
  }
120
128
  if (/@[A-Za-z_][\w-]*(?::)?\s*$/.test(before)) {
@@ -124,8 +132,7 @@ function isStructuralOpenBraceAtDepth(text, offset, depth) {
124
132
  return true;
125
133
  }
126
134
  if (depth >= 1 && /[A-Za-z_][\w-]*\s*$/.test(before) && !isLineStartAt(text, offset)) {
127
- const after = text.slice(offset + 1);
128
- return /^[ \t]*(?:\r?\n|$)/.test(after);
135
+ return restOfLineIsBlank(text, offset);
129
136
  }
130
137
  return false;
131
138
  }
@@ -142,12 +149,10 @@ function isStructuralCloseBraceAt(text, offset) {
142
149
  if (isEscapedAt(text, offset)) {
143
150
  return false;
144
151
  }
145
- const after = text.slice(offset + 1);
146
- const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
147
- if (restOfLine.trim().length !== 0) {
152
+ if (!restOfLineIsBlank(text, offset)) {
148
153
  return false;
149
154
  }
150
- const { structuralDepth, proseDepth } = scanBraceState(text, offset);
155
+ const { structuralDepth, proseDepth } = braceStateBefore(text, offset);
151
156
  if (structuralDepth <= 0) {
152
157
  return false;
153
158
  }
@@ -156,14 +161,64 @@ function isStructuralCloseBraceAt(text, offset) {
156
161
  }
157
162
  return proseDepth === 0;
158
163
  }
159
- function scanBraceState(text, offset) {
164
+ let braceScanCache;
165
+ function fenceEndAfter(text, openOffset) {
166
+ // Match CODE_FENCE: ```…``` including optional body; return index after closing fence.
167
+ if (text.charCodeAt(openOffset) !== 96
168
+ || text.charCodeAt(openOffset + 1) !== 96
169
+ || text.charCodeAt(openOffset + 2) !== 96) {
170
+ return openOffset;
171
+ }
172
+ const afterOpen = openOffset + 3;
173
+ const firstNewline = text.indexOf('\n', afterOpen);
174
+ if (firstNewline < 0) {
175
+ const sameLineClose = text.indexOf('```', afterOpen);
176
+ return sameLineClose < 0 ? text.length : sameLineClose + 3;
177
+ }
178
+ const close = text.indexOf('```', firstNewline + 1);
179
+ return close < 0 ? text.length : close + 3;
180
+ }
181
+ function restOfLineIsBlank(text, offset) {
182
+ for (let index = offset + 1; index < text.length; index++) {
183
+ const char = text[index];
184
+ if (char === '\n' || char === '\r') {
185
+ return true;
186
+ }
187
+ if (char !== ' ' && char !== '\t') {
188
+ return false;
189
+ }
190
+ }
191
+ return true;
192
+ }
193
+ function buildBraceScanCache(text) {
160
194
  let structuralDepth = 0;
161
195
  const proseDepthByStructural = [0];
196
+ const offsets = [0];
197
+ const structuralDepthAt = [0];
198
+ const proseDepthAtOffsets = [0];
162
199
  const proseDepthAt = () => proseDepthByStructural[structuralDepth] ?? 0;
163
200
  const setProseDepth = (value) => {
164
201
  proseDepthByStructural[structuralDepth] = value;
165
202
  };
166
- for (let index = 0; index < offset; index++) {
203
+ const recordStateFrom = (offset) => {
204
+ const last = offsets.length - 1;
205
+ if (offsets[last] === offset) {
206
+ structuralDepthAt[last] = structuralDepth;
207
+ proseDepthAtOffsets[last] = proseDepthAt();
208
+ return;
209
+ }
210
+ offsets.push(offset);
211
+ structuralDepthAt.push(structuralDepth);
212
+ proseDepthAtOffsets.push(proseDepthAt());
213
+ };
214
+ for (let index = 0; index < text.length; index++) {
215
+ // Fenced snippets are opaque to the parser; braces inside must not change depth.
216
+ if (text.charCodeAt(index) === 96
217
+ && text.charCodeAt(index + 1) === 96
218
+ && text.charCodeAt(index + 2) === 96) {
219
+ index = fenceEndAfter(text, index) - 1;
220
+ continue;
221
+ }
167
222
  const char = text[index];
168
223
  if (char === '{') {
169
224
  if (isEscapedAt(text, index)) {
@@ -176,6 +231,7 @@ function scanBraceState(text, offset) {
176
231
  else {
177
232
  setProseDepth(proseDepthAt() + 1);
178
233
  }
234
+ recordStateFrom(index + 1);
179
235
  continue;
180
236
  }
181
237
  if (char !== '}') {
@@ -184,23 +240,24 @@ function scanBraceState(text, offset) {
184
240
  if (isEscapedAt(text, index)) {
185
241
  continue;
186
242
  }
187
- const after = text.slice(index + 1);
188
- const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
189
- const atEndOfLine = restOfLine.trim().length === 0;
243
+ const atEndOfLine = restOfLineIsBlank(text, index);
190
244
  if (!atEndOfLine) {
191
245
  if (proseDepthAt() > 0) {
192
246
  setProseDepth(proseDepthAt() - 1);
247
+ recordStateFrom(index + 1);
193
248
  }
194
249
  continue;
195
250
  }
196
251
  if (structuralDepth <= 0) {
197
252
  if (proseDepthAt() > 0) {
198
253
  setProseDepth(proseDepthAt() - 1);
254
+ recordStateFrom(index + 1);
199
255
  }
200
256
  continue;
201
257
  }
202
258
  if (isLineStartAt(text, index)) {
203
259
  structuralDepth--;
260
+ recordStateFrom(index + 1);
204
261
  continue;
205
262
  }
206
263
  if (proseDepthAt() > 0) {
@@ -209,17 +266,38 @@ function scanBraceState(text, offset) {
209
266
  else {
210
267
  structuralDepth--;
211
268
  }
269
+ recordStateFrom(index + 1);
212
270
  }
271
+ return { text, offsets, structuralDepth: structuralDepthAt, proseDepth: proseDepthAtOffsets };
272
+ }
273
+ function braceStateAtOffset(cache, offset) {
274
+ const { offsets, structuralDepth, proseDepth } = cache;
275
+ let low = 0;
276
+ let high = offsets.length - 1;
277
+ while (low <= high) {
278
+ const mid = (low + high) >> 1;
279
+ if (offsets[mid] <= offset) {
280
+ low = mid + 1;
281
+ }
282
+ else {
283
+ high = mid - 1;
284
+ }
285
+ }
286
+ const index = Math.max(0, high);
213
287
  return {
214
- structuralDepth,
215
- proseDepth: proseDepthAt()
288
+ structuralDepth: structuralDepth[index] ?? 0,
289
+ proseDepth: proseDepth[index] ?? 0
216
290
  };
217
291
  }
218
- function scanStructuralBraceDepth(text, offset) {
219
- return scanBraceState(text, offset).structuralDepth;
292
+ function braceStateBefore(text, offset) {
293
+ if (braceScanCache?.text !== text) {
294
+ braceScanCache = buildBraceScanCache(text);
295
+ }
296
+ const boundedOffset = Math.max(0, Math.min(offset, text.length));
297
+ return braceStateAtOffset(braceScanCache, boundedOffset);
220
298
  }
221
299
  function isStructuralOpenBraceAt(text, offset) {
222
- return isStructuralOpenBraceAtDepth(text, offset, scanStructuralBraceDepth(text, offset));
300
+ return isStructuralOpenBraceAtDepth(text, offset, braceStateBefore(text, offset).structuralDepth);
223
301
  }
224
302
  const structuralOpenBrace = (text, offset) => {
225
303
  if (text[offset] !== '{') {
@@ -246,7 +324,7 @@ const proseCloseBrace = (text, offset) => {
246
324
  return isStructuralCloseBraceAt(text, offset) ? null : makeMatch(text, offset, 1);
247
325
  };
248
326
  function braceDepthBefore(text, offset) {
249
- return scanStructuralBraceDepth(text, offset);
327
+ return braceStateBefore(text, offset).structuralDepth;
250
328
  }
251
329
  function isLineStartAt(text, offset) {
252
330
  let previousIndex = offset - 1;
@@ -257,15 +335,14 @@ function isLineStartAt(text, offset) {
257
335
  }
258
336
  function isStringLiteralContext(text, offset) {
259
337
  const depth = braceDepthBefore(text, offset);
260
- const trimmed = text.slice(0, offset).replace(/[ \t]+$/, '');
338
+ const trimmed = textBeforeOnLine(text, offset);
261
339
  if (depth === 0 && /\b(?:from|import)\s*$/.test(trimmed)) {
262
340
  return true;
263
341
  }
264
342
  if (/\[\s*$/.test(trimmed)) {
265
343
  return true;
266
344
  }
267
- const lineStart = trimmed.lastIndexOf('\n') + 1;
268
- if (trimmed.slice(lineStart).length === 0 && depth === 0) {
345
+ if (trimmed.length === 0 && depth === 0) {
269
346
  return true;
270
347
  }
271
348
  return false;
@@ -299,7 +376,7 @@ function topLevelImportKeyword(text, offset) {
299
376
  if (isLineStartAt(text, offset)) {
300
377
  return makeMatch(text, offset, 6);
301
378
  }
302
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
379
+ const before = textBeforeOnLine(text, offset);
303
380
  if (/(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
304
381
  return makeMatch(text, offset, 6);
305
382
  }
@@ -317,7 +394,7 @@ function topLevelAsKeyword(text, offset) {
317
394
  if (braceDepthBefore(text, offset) !== 0) {
318
395
  return null;
319
396
  }
320
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
397
+ const before = textBeforeOnLine(text, offset);
321
398
  if (/(?:[_a-zA-Z][\w-]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
322
399
  return makeMatch(text, offset, 2);
323
400
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reqlan-token-builder.js","sourceRoot":"","sources":["../src/reqlan-token-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqlan-token-builder.js","sourceRoot":"","sources":["../src/reqlan-token-builder.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { ValidationAcceptor } from 'langium';
2
- import { type Model } from './generated/ast.js';
2
+ import { type AnonymousBlock, type Model } from './generated/ast.js';
3
3
  import type { ReqlanServices } from './reqlan-module.js';
4
4
  /**
5
5
  * Registers validation hooks for the requirement graph AST.
6
6
  * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
7
7
  * rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
8
8
  * rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
9
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
9
10
  */
10
11
  export declare function registerValidationChecks(services: ReqlanServices): void;
11
12
  /**
@@ -13,11 +14,18 @@ export declare function registerValidationChecks(services: ReqlanServices): void
13
14
  * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
14
15
  * rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
15
16
  * rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
17
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
16
18
  */
17
19
  export declare class ReqlanValidator {
18
20
  private readonly services;
19
21
  constructor(services: ReqlanServices);
20
22
  checkModelDuplicates(model: Model, accept: ValidationAcceptor): void;
23
+ /**
24
+ * Top-level nameless `{ ... }` blocks parse so the rest of the file stays alive,
25
+ * but they need a name to be addressable ideas.
26
+ * List-item anonymous blocks remain valid (see lists).
27
+ */
28
+ checkNamelessIdeaBlock(block: AnonymousBlock, accept: ValidationAcceptor): void;
21
29
  /**
22
30
  * Local diagnostics for recoverable but invalid import shapes.
23
31
  * Keeps the rest of the file parseable — see import_error_recovery.
@@ -1,5 +1,5 @@
1
1
  import { AstUtils } from 'langium';
2
- import { isFromImport, isIdea, isInvalidFromImport, isOneLinerIdea } from './generated/ast.js';
2
+ import { isFromImport, isIdea, isInvalidFromImport, isModel, isOneLinerIdea } from './generated/ast.js';
3
3
  import { collectFileLinks, fileLinkTargetIssueMessage } from './reqlan-file-link-resolver.js';
4
4
  import { importBindings, importPathOf, isWellFormedFromImport } from './reqlan-import-bindings.js';
5
5
  import { isResolvableImportPath } from './reqlan-imports.js';
@@ -10,12 +10,14 @@ import { unquoteReqlanString } from './reqlan-quoted-strings.js';
10
10
  * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
11
11
  * rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
12
12
  * rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
13
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
13
14
  */
14
15
  export function registerValidationChecks(services) {
15
16
  const registry = services.validation.ValidationRegistry;
16
17
  const validator = services.validation.ReqlanValidator;
17
18
  const checks = {
18
- Model: validator.checkModelDuplicates
19
+ Model: validator.checkModelDuplicates,
20
+ AnonymousBlock: validator.checkNamelessIdeaBlock
19
21
  };
20
22
  registry.register(checks, validator);
21
23
  }
@@ -24,6 +26,7 @@ export function registerValidationChecks(services) {
24
26
  * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
25
27
  * rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
26
28
  * rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
29
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
27
30
  */
28
31
  export class ReqlanValidator {
29
32
  constructor(services) {
@@ -36,6 +39,17 @@ export class ReqlanValidator {
36
39
  this.checkImportTargets(model, accept);
37
40
  this.checkFileReferenceTargets(model, accept);
38
41
  }
42
+ /**
43
+ * Top-level nameless `{ ... }` blocks parse so the rest of the file stays alive,
44
+ * but they need a name to be addressable ideas.
45
+ * List-item anonymous blocks remain valid (see lists).
46
+ */
47
+ checkNamelessIdeaBlock(block, accept) {
48
+ if (!isModel(block.$container)) {
49
+ return;
50
+ }
51
+ accept('warning', 'Nameless idea block: add a name before `{` (for example `my_idea { ... }`). The block was kept so the rest of the file still parses.', { node: block });
52
+ }
39
53
  /**
40
54
  * Local diagnostics for recoverable but invalid import shapes.
41
55
  * Keeps the rest of the file parseable — see import_error_recovery.
@@ -1 +1 @@
1
- {"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { DefaultWorkspaceManager, type LangiumDocument, type LangiumSharedCoreServices, type Stream, type URI } from 'langium';
2
+ /**
3
+ * Loads workspace documents independently so one catastrophic parse failure
4
+ * (for example Chevrotain recovery stack overflow) cannot abort LSP workspace init.
5
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
6
+ * rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
7
+ */
8
+ export declare class ReqlanWorkspaceManager extends DefaultWorkspaceManager {
9
+ constructor(services: LangiumSharedCoreServices);
10
+ protected loadWorkspaceDocuments(uris: Stream<URI>, collector: (document: LangiumDocument) => void): Promise<void>;
11
+ }
@@ -0,0 +1,24 @@
1
+ import { DefaultWorkspaceManager } from 'langium';
2
+ /**
3
+ * Loads workspace documents independently so one catastrophic parse failure
4
+ * (for example Chevrotain recovery stack overflow) cannot abort LSP workspace init.
5
+ * rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
6
+ * rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
7
+ */
8
+ export class ReqlanWorkspaceManager extends DefaultWorkspaceManager {
9
+ constructor(services) {
10
+ super(services);
11
+ }
12
+ async loadWorkspaceDocuments(uris, collector) {
13
+ await Promise.all(uris.map(async (uri) => {
14
+ try {
15
+ const document = await this.langiumDocuments.getOrCreateDocument(uri);
16
+ collector(document);
17
+ }
18
+ catch (error) {
19
+ console.error(`[reqlan] Skipping document that failed to load during workspace init: ${uri.toString()}`, error);
20
+ }
21
+ }));
22
+ }
23
+ }
24
+ //# sourceMappingURL=reqlan-workspace-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-workspace-manager.js","sourceRoot":"","sources":["../src/reqlan-workspace-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EAK1B,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAC/D,YAAY,QAAmC;QAC3C,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAEkB,KAAK,CAAC,sBAAsB,CAC3C,IAAiB,EACjB,SAA8C;QAE9C,MAAM,OAAO,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACjB,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtE,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACT,yEAAyE,GAAG,CAAC,QAAQ,EAAE,EAAE,EACzF,KAAK,CACR,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CACL,CAAC;IACN,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reqlan/language",
3
3
  "description": "Langium language definition for reqlan (.rq) requirement files",
4
- "version": "1.6.2",
4
+ "version": "1.7.0",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
7
7
  "repository": {