@reqlan/language 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +115 -24
  2. package/README.template.md +32 -0
  3. package/package.json +2 -2
  4. package/out/src/file-path-rewrite.d.ts +0 -25
  5. package/out/src/file-path-rewrite.js +0 -56
  6. package/out/src/file-path-rewrite.js.map +0 -1
  7. package/out/src/generated/ast.d.ts +0 -1173
  8. package/out/src/generated/ast.js +0 -994
  9. package/out/src/generated/ast.js.map +0 -1
  10. package/out/src/generated/grammar.d.ts +0 -7
  11. package/out/src/generated/grammar.js +0 -3045
  12. package/out/src/generated/grammar.js.map +0 -1
  13. package/out/src/generated/module.d.ts +0 -20
  14. package/out/src/generated/module.js +0 -32
  15. package/out/src/generated/module.js.map +0 -1
  16. package/out/src/index.d.ts +0 -29
  17. package/out/src/index.js +0 -30
  18. package/out/src/index.js.map +0 -1
  19. package/out/src/reqlan-attribute-catalog.d.ts +0 -19
  20. package/out/src/reqlan-attribute-catalog.js +0 -87
  21. package/out/src/reqlan-attribute-catalog.js.map +0 -1
  22. package/out/src/reqlan-code-action-provider.d.ts +0 -34
  23. package/out/src/reqlan-code-action-provider.js +0 -206
  24. package/out/src/reqlan-code-action-provider.js.map +0 -1
  25. package/out/src/reqlan-comment-resolver.d.ts +0 -35
  26. package/out/src/reqlan-comment-resolver.js +0 -308
  27. package/out/src/reqlan-comment-resolver.js.map +0 -1
  28. package/out/src/reqlan-completion-context.d.ts +0 -46
  29. package/out/src/reqlan-completion-context.js +0 -244
  30. package/out/src/reqlan-completion-context.js.map +0 -1
  31. package/out/src/reqlan-completion-provider.d.ts +0 -41
  32. package/out/src/reqlan-completion-provider.js +0 -320
  33. package/out/src/reqlan-completion-provider.js.map +0 -1
  34. package/out/src/reqlan-definition-provider.d.ts +0 -31
  35. package/out/src/reqlan-definition-provider.js +0 -240
  36. package/out/src/reqlan-definition-provider.js.map +0 -1
  37. package/out/src/reqlan-document-highlight-provider.d.ts +0 -10
  38. package/out/src/reqlan-document-highlight-provider.js +0 -11
  39. package/out/src/reqlan-document-highlight-provider.js.map +0 -1
  40. package/out/src/reqlan-document-link-provider.d.ts +0 -14
  41. package/out/src/reqlan-document-link-provider.js +0 -24
  42. package/out/src/reqlan-document-link-provider.js.map +0 -1
  43. package/out/src/reqlan-embedded-file-references.d.ts +0 -11
  44. package/out/src/reqlan-embedded-file-references.js +0 -50
  45. package/out/src/reqlan-embedded-file-references.js.map +0 -1
  46. package/out/src/reqlan-file-link-resolver.d.ts +0 -44
  47. package/out/src/reqlan-file-link-resolver.js +0 -347
  48. package/out/src/reqlan-file-link-resolver.js.map +0 -1
  49. package/out/src/reqlan-file-references.d.ts +0 -15
  50. package/out/src/reqlan-file-references.js +0 -72
  51. package/out/src/reqlan-file-references.js.map +0 -1
  52. package/out/src/reqlan-grammar-config.d.ts +0 -5
  53. package/out/src/reqlan-grammar-config.js +0 -9
  54. package/out/src/reqlan-grammar-config.js.map +0 -1
  55. package/out/src/reqlan-idea-summary.d.ts +0 -6
  56. package/out/src/reqlan-idea-summary.js +0 -78
  57. package/out/src/reqlan-idea-summary.js.map +0 -1
  58. package/out/src/reqlan-ignore-error.d.ts +0 -10
  59. package/out/src/reqlan-ignore-error.js +0 -42
  60. package/out/src/reqlan-ignore-error.js.map +0 -1
  61. package/out/src/reqlan-import-bindings.d.ts +0 -12
  62. package/out/src/reqlan-import-bindings.js +0 -65
  63. package/out/src/reqlan-import-bindings.js.map +0 -1
  64. package/out/src/reqlan-import-edits.d.ts +0 -17
  65. package/out/src/reqlan-import-edits.js +0 -96
  66. package/out/src/reqlan-import-edits.js.map +0 -1
  67. package/out/src/reqlan-imports.d.ts +0 -22
  68. package/out/src/reqlan-imports.js +0 -61
  69. package/out/src/reqlan-imports.js.map +0 -1
  70. package/out/src/reqlan-inbound-reference-inlay-label.d.ts +0 -23
  71. package/out/src/reqlan-inbound-reference-inlay-label.js +0 -128
  72. package/out/src/reqlan-inbound-reference-inlay-label.js.map +0 -1
  73. package/out/src/reqlan-inlay-hint-provider.d.ts +0 -15
  74. package/out/src/reqlan-inlay-hint-provider.js +0 -54
  75. package/out/src/reqlan-inlay-hint-provider.js.map +0 -1
  76. package/out/src/reqlan-inlay-hint-settings.d.ts +0 -10
  77. package/out/src/reqlan-inlay-hint-settings.js +0 -10
  78. package/out/src/reqlan-inlay-hint-settings.js.map +0 -1
  79. package/out/src/reqlan-linker.d.ts +0 -26
  80. package/out/src/reqlan-linker.js +0 -86
  81. package/out/src/reqlan-linker.js.map +0 -1
  82. package/out/src/reqlan-markdown-links.d.ts +0 -28
  83. package/out/src/reqlan-markdown-links.js +0 -113
  84. package/out/src/reqlan-markdown-links.js.map +0 -1
  85. package/out/src/reqlan-module.d.ts +0 -41
  86. package/out/src/reqlan-module.js +0 -76
  87. package/out/src/reqlan-module.js.map +0 -1
  88. package/out/src/reqlan-name-catalog.d.ts +0 -23
  89. package/out/src/reqlan-name-catalog.js +0 -63
  90. package/out/src/reqlan-name-catalog.js.map +0 -1
  91. package/out/src/reqlan-name-provider.d.ts +0 -10
  92. package/out/src/reqlan-name-provider.js +0 -38
  93. package/out/src/reqlan-name-provider.js.map +0 -1
  94. package/out/src/reqlan-namespace-import-links.d.ts +0 -10
  95. package/out/src/reqlan-namespace-import-links.js +0 -81
  96. package/out/src/reqlan-namespace-import-links.js.map +0 -1
  97. package/out/src/reqlan-path-completion.d.ts +0 -50
  98. package/out/src/reqlan-path-completion.js +0 -304
  99. package/out/src/reqlan-path-completion.js.map +0 -1
  100. package/out/src/reqlan-path-references.d.ts +0 -5
  101. package/out/src/reqlan-path-references.js +0 -124
  102. package/out/src/reqlan-path-references.js.map +0 -1
  103. package/out/src/reqlan-path-resolve.d.ts +0 -59
  104. package/out/src/reqlan-path-resolve.js +0 -173
  105. package/out/src/reqlan-path-resolve.js.map +0 -1
  106. package/out/src/reqlan-quoted-strings.d.ts +0 -9
  107. package/out/src/reqlan-quoted-strings.js +0 -26
  108. package/out/src/reqlan-quoted-strings.js.map +0 -1
  109. package/out/src/reqlan-reference-at-position.d.ts +0 -20
  110. package/out/src/reqlan-reference-at-position.js +0 -89
  111. package/out/src/reqlan-reference-at-position.js.map +0 -1
  112. package/out/src/reqlan-references.d.ts +0 -16
  113. package/out/src/reqlan-references.js +0 -51
  114. package/out/src/reqlan-references.js.map +0 -1
  115. package/out/src/reqlan-scope.d.ts +0 -25
  116. package/out/src/reqlan-scope.js +0 -266
  117. package/out/src/reqlan-scope.js.map +0 -1
  118. package/out/src/reqlan-semantic-token-provider.d.ts +0 -8
  119. package/out/src/reqlan-semantic-token-provider.js +0 -97
  120. package/out/src/reqlan-semantic-token-provider.js.map +0 -1
  121. package/out/src/reqlan-token-builder.d.ts +0 -12
  122. package/out/src/reqlan-token-builder.js +0 -459
  123. package/out/src/reqlan-token-builder.js.map +0 -1
  124. package/out/src/reqlan-validator.d.ts +0 -25
  125. package/out/src/reqlan-validator.js +0 -119
  126. package/out/src/reqlan-validator.js.map +0 -1
  127. package/out/src/reqlan-workspace-attribute-catalog.d.ts +0 -6
  128. package/out/src/reqlan-workspace-attribute-catalog.js +0 -54
  129. package/out/src/reqlan-workspace-attribute-catalog.js.map +0 -1
  130. package/out/test/code-actions.test.d.ts +0 -1
  131. package/out/test/code-actions.test.js +0 -126
  132. package/out/test/code-actions.test.js.map +0 -1
  133. package/out/test/comment-in-string.test.d.ts +0 -1
  134. package/out/test/comment-in-string.test.js +0 -100
  135. package/out/test/comment-in-string.test.js.map +0 -1
  136. package/out/test/completion.test.d.ts +0 -1
  137. package/out/test/completion.test.js +0 -467
  138. package/out/test/completion.test.js.map +0 -1
  139. package/out/test/file-path-rewrite.test.d.ts +0 -1
  140. package/out/test/file-path-rewrite.test.js +0 -64
  141. package/out/test/file-path-rewrite.test.js.map +0 -1
  142. package/out/test/ignore-error.test.d.ts +0 -1
  143. package/out/test/ignore-error.test.js +0 -87
  144. package/out/test/ignore-error.test.js.map +0 -1
  145. package/out/test/implicit-import-extension.test.d.ts +0 -1
  146. package/out/test/implicit-import-extension.test.js +0 -203
  147. package/out/test/implicit-import-extension.test.js.map +0 -1
  148. package/out/test/import-edits.test.d.ts +0 -1
  149. package/out/test/import-edits.test.js +0 -20
  150. package/out/test/import-edits.test.js.map +0 -1
  151. package/out/test/inlay-hints.test.d.ts +0 -1
  152. package/out/test/inlay-hints.test.js +0 -238
  153. package/out/test/inlay-hints.test.js.map +0 -1
  154. package/out/test/linking.test.d.ts +0 -1
  155. package/out/test/linking.test.js +0 -754
  156. package/out/test/linking.test.js.map +0 -1
  157. package/out/test/naked-strings.test.d.ts +0 -1
  158. package/out/test/naked-strings.test.js +0 -50
  159. package/out/test/naked-strings.test.js.map +0 -1
  160. package/out/test/parsing.test.d.ts +0 -1
  161. package/out/test/parsing.test.js +0 -773
  162. package/out/test/parsing.test.js.map +0 -1
  163. package/out/test/path-resolve.test.d.ts +0 -1
  164. package/out/test/path-resolve.test.js +0 -88
  165. package/out/test/path-resolve.test.js.map +0 -1
  166. package/out/test/references.test.d.ts +0 -1
  167. package/out/test/references.test.js +0 -168
  168. package/out/test/references.test.js.map +0 -1
  169. package/out/test/rqconfig.test.d.ts +0 -1
  170. package/out/test/rqconfig.test.js +0 -275
  171. package/out/test/rqconfig.test.js.map +0 -1
  172. package/out/test/test-requirement-refs.d.ts +0 -8
  173. package/out/test/test-requirement-refs.js +0 -35
  174. package/out/test/test-requirement-refs.js.map +0 -1
  175. package/out/test/testing.test.d.ts +0 -1
  176. package/out/test/testing.test.js +0 -23
  177. package/out/test/testing.test.js.map +0 -1
  178. package/out/test/validating.test.d.ts +0 -1
  179. package/out/test/validating.test.js +0 -117
  180. package/out/test/validating.test.js.map +0 -1
  181. package/out/tsconfig.tsbuildinfo +0 -1
@@ -1,459 +0,0 @@
1
- import { DefaultTokenBuilder } from 'langium';
2
- const SL_COMMENT_PATTERN = /\/\/[^\n\r]*/y;
3
- function isInsideNakedQuote(text, offset) {
4
- let inDouble = false;
5
- let inSingle = false;
6
- const lineStart = text.lastIndexOf('\n', offset - 1) + 1;
7
- for (let index = lineStart; index < offset; index++) {
8
- const char = text[index];
9
- if (inDouble || inSingle) {
10
- if (char === '\\') {
11
- index++;
12
- continue;
13
- }
14
- if (inDouble && char === '"') {
15
- inDouble = false;
16
- }
17
- else if (inSingle && char === "'") {
18
- inSingle = false;
19
- }
20
- continue;
21
- }
22
- if (char === '"') {
23
- inDouble = true;
24
- }
25
- else if (char === "'") {
26
- inSingle = true;
27
- }
28
- }
29
- return inDouble || inSingle;
30
- }
31
- const slCommentPattern = (text, offset) => {
32
- if (text.charCodeAt(offset) !== 47 || text.charCodeAt(offset + 1) !== 47) {
33
- return null;
34
- }
35
- if (isInsideNakedQuote(text, offset)) {
36
- return null;
37
- }
38
- let previousIndex = offset - 1;
39
- while (previousIndex >= 0 && /[ \t]/.test(text[previousIndex])) {
40
- previousIndex--;
41
- }
42
- const previous = previousIndex >= 0 ? text[previousIndex] : '';
43
- if (previous === ':' || previous === '/') {
44
- return null;
45
- }
46
- SL_COMMENT_PATTERN.lastIndex = offset;
47
- return SL_COMMENT_PATTERN.exec(text);
48
- };
49
- function makeMatch(text, offset, length) {
50
- const image = text.slice(offset, offset + length);
51
- const match = [image];
52
- match.index = offset;
53
- match.input = text;
54
- return match;
55
- }
56
- /**
57
- * `@` marks an attribute only when it is the first non-whitespace character on a line.
58
- * Mid-line `@` (and `\@` at line start) fall through to OTHER as body text.
59
- */
60
- const atSignAttributeMarker = (text, offset) => {
61
- if (text[offset] !== '@') {
62
- return null;
63
- }
64
- let previousIndex = offset - 1;
65
- while (previousIndex >= 0 && (text[previousIndex] === ' ' || text[previousIndex] === '\t')) {
66
- previousIndex--;
67
- }
68
- if (previousIndex >= 0 && text[previousIndex] !== '\n' && text[previousIndex] !== '\r') {
69
- return null;
70
- }
71
- return makeMatch(text, offset, 1);
72
- };
73
- const markdownLink = (text, offset) => {
74
- if (text[offset] !== '[' || text[offset + 1] === '[') {
75
- return null;
76
- }
77
- let index = offset + 1;
78
- while (index < text.length) {
79
- if (text[index] === ']' && text[index + 1] === '(') {
80
- const label = text.slice(offset + 1, index);
81
- const targetStart = index + 2;
82
- let targetEnd = targetStart;
83
- while (targetEnd < text.length && text[targetEnd] !== ')') {
84
- if (text[targetEnd] === '\n' || text[targetEnd] === '\r') {
85
- return null;
86
- }
87
- targetEnd++;
88
- }
89
- if (targetEnd >= text.length || label.length === 0 || targetEnd === targetStart) {
90
- return null;
91
- }
92
- return makeMatch(text, offset, targetEnd + 1 - offset);
93
- }
94
- if (text[index] === '\n' || text[index] === '\r') {
95
- return null;
96
- }
97
- index++;
98
- }
99
- return null;
100
- };
101
- const topLevelBlockOpener = /(?:^|\n)[ \t]*(?:[A-Za-z_.][\w.]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/;
102
- function isEscapedAt(text, offset) {
103
- let backslashes = 0;
104
- for (let index = offset - 1; index >= 0 && text[index] === '\\'; index--) {
105
- backslashes++;
106
- }
107
- return backslashes % 2 === 1;
108
- }
109
- function isStructuralOpenBraceAtDepth(text, offset, depth) {
110
- if (text[offset] !== '{') {
111
- return false;
112
- }
113
- if (isEscapedAt(text, offset)) {
114
- return false;
115
- }
116
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
117
- if (depth === 0 && topLevelBlockOpener.test(before)) {
118
- return true;
119
- }
120
- if (/@\w+(?::)?\s*$/.test(before)) {
121
- return true;
122
- }
123
- if (depth >= 1 && isLineStartAt(text, offset)) {
124
- return true;
125
- }
126
- 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);
129
- }
130
- return false;
131
- }
132
- /**
133
- * A `}` closes a structural block only when it is the last non-whitespace on its line
134
- * and it is not pairing with an unmatched prose `{` earlier on that line / in the body.
135
- * Own-line closers (`}` after only indentation) always close structurally so an
136
- * unbalanced prose `{` does not swallow the idea's closing brace.
137
- */
138
- function isStructuralCloseBraceAt(text, offset) {
139
- if (text[offset] !== '}') {
140
- return false;
141
- }
142
- if (isEscapedAt(text, offset)) {
143
- return false;
144
- }
145
- const after = text.slice(offset + 1);
146
- const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
147
- if (restOfLine.trim().length !== 0) {
148
- return false;
149
- }
150
- const { structuralDepth, proseDepth } = scanBraceState(text, offset);
151
- if (structuralDepth <= 0) {
152
- return false;
153
- }
154
- if (isLineStartAt(text, offset)) {
155
- return true;
156
- }
157
- return proseDepth === 0;
158
- }
159
- function scanBraceState(text, offset) {
160
- let structuralDepth = 0;
161
- const proseDepthByStructural = [0];
162
- const proseDepthAt = () => proseDepthByStructural[structuralDepth] ?? 0;
163
- const setProseDepth = (value) => {
164
- proseDepthByStructural[structuralDepth] = value;
165
- };
166
- for (let index = 0; index < offset; index++) {
167
- const char = text[index];
168
- if (char === '{') {
169
- if (isEscapedAt(text, index)) {
170
- continue;
171
- }
172
- if (isStructuralOpenBraceAtDepth(text, index, structuralDepth)) {
173
- structuralDepth++;
174
- proseDepthByStructural[structuralDepth] = 0;
175
- }
176
- else {
177
- setProseDepth(proseDepthAt() + 1);
178
- }
179
- continue;
180
- }
181
- if (char !== '}') {
182
- continue;
183
- }
184
- if (isEscapedAt(text, index)) {
185
- continue;
186
- }
187
- const after = text.slice(index + 1);
188
- const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
189
- const atEndOfLine = restOfLine.trim().length === 0;
190
- if (!atEndOfLine) {
191
- if (proseDepthAt() > 0) {
192
- setProseDepth(proseDepthAt() - 1);
193
- }
194
- continue;
195
- }
196
- if (structuralDepth <= 0) {
197
- if (proseDepthAt() > 0) {
198
- setProseDepth(proseDepthAt() - 1);
199
- }
200
- continue;
201
- }
202
- if (isLineStartAt(text, index)) {
203
- structuralDepth--;
204
- continue;
205
- }
206
- if (proseDepthAt() > 0) {
207
- setProseDepth(proseDepthAt() - 1);
208
- }
209
- else {
210
- structuralDepth--;
211
- }
212
- }
213
- return {
214
- structuralDepth,
215
- proseDepth: proseDepthAt()
216
- };
217
- }
218
- function scanStructuralBraceDepth(text, offset) {
219
- return scanBraceState(text, offset).structuralDepth;
220
- }
221
- function isStructuralOpenBraceAt(text, offset) {
222
- return isStructuralOpenBraceAtDepth(text, offset, scanStructuralBraceDepth(text, offset));
223
- }
224
- const structuralOpenBrace = (text, offset) => {
225
- if (text[offset] !== '{') {
226
- return null;
227
- }
228
- return isStructuralOpenBraceAt(text, offset) ? makeMatch(text, offset, 1) : null;
229
- };
230
- const structuralCloseBrace = (text, offset) => {
231
- if (text[offset] !== '}') {
232
- return null;
233
- }
234
- return isStructuralCloseBraceAt(text, offset) ? makeMatch(text, offset, 1) : null;
235
- };
236
- const proseOpenBrace = (text, offset) => {
237
- if (text[offset] !== '{') {
238
- return null;
239
- }
240
- return isStructuralOpenBraceAt(text, offset) ? null : makeMatch(text, offset, 1);
241
- };
242
- const proseCloseBrace = (text, offset) => {
243
- if (text[offset] !== '}') {
244
- return null;
245
- }
246
- return isStructuralCloseBraceAt(text, offset) ? null : makeMatch(text, offset, 1);
247
- };
248
- function braceDepthBefore(text, offset) {
249
- return scanStructuralBraceDepth(text, offset);
250
- }
251
- function isLineStartAt(text, offset) {
252
- let previousIndex = offset - 1;
253
- while (previousIndex >= 0 && (text[previousIndex] === ' ' || text[previousIndex] === '\t')) {
254
- previousIndex--;
255
- }
256
- return previousIndex < 0 || text[previousIndex] === '\n' || text[previousIndex] === '\r';
257
- }
258
- function isStringLiteralContext(text, offset) {
259
- const depth = braceDepthBefore(text, offset);
260
- const trimmed = text.slice(0, offset).replace(/[ \t]+$/, '');
261
- if (depth === 0 && /\b(?:from|import)\s*$/.test(trimmed)) {
262
- return true;
263
- }
264
- if (/\[\s*$/.test(trimmed)) {
265
- return true;
266
- }
267
- const lineStart = trimmed.lastIndexOf('\n') + 1;
268
- if (trimmed.slice(lineStart).length === 0 && depth === 0) {
269
- return true;
270
- }
271
- return false;
272
- }
273
- /** Import keywords are reserved only at top level; in bodies they lex as ordinary words. */
274
- function topLevelFromKeyword(text, offset) {
275
- if (!text.startsWith('from', offset)) {
276
- return null;
277
- }
278
- const next = text[offset + 4];
279
- if (next !== undefined && /[\w_]/.test(next)) {
280
- return null;
281
- }
282
- if (braceDepthBefore(text, offset) !== 0 || !isLineStartAt(text, offset)) {
283
- return null;
284
- }
285
- return makeMatch(text, offset, 4);
286
- }
287
- ;
288
- function topLevelImportKeyword(text, offset) {
289
- if (!text.startsWith('import', offset)) {
290
- return null;
291
- }
292
- const next = text[offset + 6];
293
- if (next !== undefined && /[\w_]/.test(next)) {
294
- return null;
295
- }
296
- if (braceDepthBefore(text, offset) !== 0) {
297
- return null;
298
- }
299
- if (isLineStartAt(text, offset)) {
300
- return makeMatch(text, offset, 6);
301
- }
302
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
303
- if (/(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
304
- return makeMatch(text, offset, 6);
305
- }
306
- return null;
307
- }
308
- ;
309
- function topLevelAsKeyword(text, offset) {
310
- if (!text.startsWith('as', offset)) {
311
- return null;
312
- }
313
- const next = text[offset + 2];
314
- if (next !== undefined && /[\w_]/.test(next)) {
315
- return null;
316
- }
317
- if (braceDepthBefore(text, offset) !== 0) {
318
- return null;
319
- }
320
- const before = text.slice(0, offset).replace(/[ \t]+$/, '');
321
- if (/(?:[_a-zA-Z][\w_]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
322
- return makeMatch(text, offset, 2);
323
- }
324
- return null;
325
- }
326
- ;
327
- const reqlanString = (text, offset) => {
328
- const quote = text[offset];
329
- if (quote !== '"' && quote !== "'") {
330
- return null;
331
- }
332
- if (!isStringLiteralContext(text, offset)) {
333
- return null;
334
- }
335
- let index = offset + 1;
336
- while (index < text.length) {
337
- const char = text[index];
338
- if (char === '\n' || char === '\r') {
339
- return null;
340
- }
341
- if (char === '\\') {
342
- index += 2;
343
- continue;
344
- }
345
- if (char === quote) {
346
- return makeMatch(text, offset, index + 1 - offset);
347
- }
348
- index++;
349
- }
350
- return null;
351
- };
352
- /** Body words with interior apostrophes (e.g. user's); plain identifiers stay ID. */
353
- const reqlanWord = (text, offset) => {
354
- const match = /^[A-Za-z_][\w']*/.exec(text.slice(offset));
355
- if (!match || !match[0].includes("'")) {
356
- return null;
357
- }
358
- return makeMatch(text, offset, match[0].length);
359
- };
360
- export class ReqlanTokenBuilder extends DefaultTokenBuilder {
361
- buildTokens(grammar, options) {
362
- const tokens = super.buildTokens(grammar, options);
363
- if (!Array.isArray(tokens)) {
364
- return tokens;
365
- }
366
- const atToken = tokens.find(token => token.name === '@');
367
- if (atToken) {
368
- atToken.PATTERN = atSignAttributeMarker;
369
- atToken.LINE_BREAKS = false;
370
- }
371
- const markdownIndex = tokens.findIndex(token => token.name === 'MARKDOWN_LINK');
372
- if (markdownIndex >= 0) {
373
- const [markdown] = tokens.splice(markdownIndex, 1);
374
- tokens.unshift(markdown);
375
- }
376
- const wordIndex = tokens.findIndex(token => token.name === 'WORD');
377
- const idIndex = tokens.findIndex(token => token.name === 'ID');
378
- if (wordIndex >= 0 && idIndex >= 0 && idIndex < wordIndex) {
379
- const [word] = tokens.splice(wordIndex, 1);
380
- tokens.splice(idIndex, 0, word);
381
- }
382
- for (const [name, pattern] of [
383
- ['from', topLevelFromKeyword],
384
- ['import', topLevelImportKeyword],
385
- ['as', topLevelAsKeyword]
386
- ]) {
387
- const token = tokens.find(entry => entry.name === name);
388
- if (token) {
389
- token.PATTERN = pattern;
390
- token.LINE_BREAKS = false;
391
- }
392
- }
393
- const openBrace = tokens.find(entry => entry.name === '{');
394
- if (openBrace) {
395
- openBrace.PATTERN = structuralOpenBrace;
396
- openBrace.LINE_BREAKS = false;
397
- }
398
- const closeBrace = tokens.find(entry => entry.name === '}');
399
- if (closeBrace) {
400
- closeBrace.PATTERN = structuralCloseBrace;
401
- closeBrace.LINE_BREAKS = false;
402
- }
403
- const otherIndex = tokens.findIndex(entry => entry.name === 'OTHER');
404
- if (otherIndex >= 0) {
405
- const other = tokens[otherIndex];
406
- const basePattern = other.PATTERN;
407
- other.PATTERN = (text, offset) => {
408
- const proseBrace = proseOpenBrace(text, offset) ?? proseCloseBrace(text, offset);
409
- if (proseBrace) {
410
- return proseBrace;
411
- }
412
- if (typeof basePattern === 'function') {
413
- return basePattern(text, offset);
414
- }
415
- if (basePattern instanceof RegExp) {
416
- const slice = text.slice(offset);
417
- const match = basePattern.exec(slice);
418
- return match?.index === 0 ? makeMatch(text, offset, match[0].length) : null;
419
- }
420
- return null;
421
- };
422
- other.LINE_BREAKS = false;
423
- }
424
- return tokens;
425
- }
426
- buildTerminalToken(terminal) {
427
- if (terminal.name === 'SL_COMMENT') {
428
- return {
429
- name: 'SL_COMMENT',
430
- GROUP: 'hidden',
431
- LINE_BREAKS: true,
432
- PATTERN: slCommentPattern
433
- };
434
- }
435
- if (terminal.name === 'MARKDOWN_LINK') {
436
- return {
437
- name: 'MARKDOWN_LINK',
438
- LINE_BREAKS: false,
439
- PATTERN: markdownLink
440
- };
441
- }
442
- if (terminal.name === 'STRING') {
443
- return {
444
- name: 'STRING',
445
- LINE_BREAKS: false,
446
- PATTERN: reqlanString
447
- };
448
- }
449
- if (terminal.name === 'WORD') {
450
- return {
451
- name: 'WORD',
452
- LINE_BREAKS: false,
453
- PATTERN: reqlanWord
454
- };
455
- }
456
- return super.buildTerminalToken(terminal);
457
- }
458
- }
459
- //# sourceMappingURL=reqlan-token-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reqlan-token-builder.js","sourceRoot":"","sources":["../../src/reqlan-token-builder.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { ValidationAcceptor } from 'langium';
2
- import { type Model } from './generated/ast.js';
3
- import type { ReqlanServices } from './reqlan-module.js';
4
- /**
5
- * Registers validation hooks for the requirement graph AST.
6
- * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
7
- */
8
- export declare function registerValidationChecks(services: ReqlanServices): void;
9
- /**
10
- * Custom validations for Reqlan documents.
11
- * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
12
- */
13
- export declare class ReqlanValidator {
14
- private readonly services;
15
- constructor(services: ReqlanServices);
16
- checkModelDuplicates(model: Model, accept: ValidationAcceptor): void;
17
- checkDuplicateImportBindings(model: Model, accept: ValidationAcceptor): void;
18
- checkDuplicateIdeaNames(model: Model, accept: ValidationAcceptor): void;
19
- /**
20
- * Error underline when an `import` / `from` path does not resolve to a file.
21
- * Missing imported ideas are reported by the linker as unresolved references.
22
- */
23
- checkImportTargets(model: Model, accept: ValidationAcceptor): void;
24
- checkFileReferenceTargets(model: Model, accept: ValidationAcceptor): void;
25
- }
@@ -1,119 +0,0 @@
1
- import { AstUtils } from 'langium';
2
- import { isIdea, isOneLinerIdea } from './generated/ast.js';
3
- import { collectFileLinks, fileLinkTargetIssueMessage } from './reqlan-file-link-resolver.js';
4
- import { importBindings, importedIdeaNames } from './reqlan-import-bindings.js';
5
- import { isResolvableImportPath } from './reqlan-imports.js';
6
- import { pathResolveContextFromServices } from './reqlan-path-resolve.js';
7
- import { unquoteReqlanString } from './reqlan-quoted-strings.js';
8
- /**
9
- * Registers validation hooks for the requirement graph AST.
10
- * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
11
- */
12
- export function registerValidationChecks(services) {
13
- const registry = services.validation.ValidationRegistry;
14
- const validator = services.validation.ReqlanValidator;
15
- const checks = {
16
- Model: validator.checkModelDuplicates
17
- };
18
- registry.register(checks, validator);
19
- }
20
- /**
21
- * Custom validations for Reqlan documents.
22
- * rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
23
- */
24
- export class ReqlanValidator {
25
- constructor(services) {
26
- this.services = services;
27
- }
28
- checkModelDuplicates(model, accept) {
29
- this.checkDuplicateImportBindings(model, accept);
30
- this.checkDuplicateIdeaNames(model, accept);
31
- this.checkImportTargets(model, accept);
32
- this.checkFileReferenceTargets(model, accept);
33
- }
34
- checkDuplicateImportBindings(model, accept) {
35
- const seen = new Map();
36
- for (const importDecl of model.imports) {
37
- for (const binding of importBindings(importDecl)) {
38
- if (seen.has(binding.name)) {
39
- accept('error', `'${binding.name}' is already defined in this file.`, {
40
- node: binding.node,
41
- property: binding.property
42
- });
43
- }
44
- else {
45
- seen.set(binding.name, binding);
46
- }
47
- }
48
- }
49
- }
50
- checkDuplicateIdeaNames(model, accept) {
51
- const seen = new Map();
52
- for (const importDecl of model.imports) {
53
- for (const binding of importBindings(importDecl)) {
54
- seen.set(binding.name, importDecl);
55
- }
56
- }
57
- for (const element of model.elements) {
58
- if (!isIdea(element) && !isOneLinerIdea(element)) {
59
- continue;
60
- }
61
- const name = element.name;
62
- if (seen.has(name)) {
63
- accept('error', `'${name}' is already defined in this file.`, {
64
- node: element,
65
- property: 'name'
66
- });
67
- continue;
68
- }
69
- const importedNameConflict = model.imports.some(importDecl => importedIdeaNames(importDecl).includes(name));
70
- if (importedNameConflict) {
71
- accept('error', `'${name}' is already defined in this file.`, {
72
- node: element,
73
- property: 'name'
74
- });
75
- continue;
76
- }
77
- seen.set(name, element);
78
- }
79
- }
80
- /**
81
- * Error underline when an `import` / `from` path does not resolve to a file.
82
- * Missing imported ideas are reported by the linker as unresolved references.
83
- */
84
- checkImportTargets(model, accept) {
85
- const document = AstUtils.getDocument(model);
86
- const { shared } = this.services;
87
- const pathContext = pathResolveContextFromServices(this.services);
88
- for (const importDecl of model.imports) {
89
- const path = unquoteReqlanString(importDecl.path);
90
- if (!path || isRemoteImportPath(path)) {
91
- continue;
92
- }
93
- if (isResolvableImportPath(path, document, shared.workspace.LangiumDocuments, shared.workspace.FileSystemProvider, pathContext)) {
94
- continue;
95
- }
96
- accept('error', `Could not resolve import '${path}'.`, {
97
- node: importDecl,
98
- property: 'path'
99
- });
100
- }
101
- }
102
- checkFileReferenceTargets(model, accept) {
103
- const document = AstUtils.getDocument(model);
104
- const { shared } = this.services;
105
- for (const link of collectFileLinks(document, shared.workspace.LangiumDocuments, shared.workspace.FileSystemProvider, pathResolveContextFromServices(this.services))) {
106
- if (!link.targetIssue) {
107
- continue;
108
- }
109
- accept('warning', fileLinkTargetIssueMessage(link.targetIssue), {
110
- node: model,
111
- range: link.sourceRange
112
- });
113
- }
114
- }
115
- }
116
- function isRemoteImportPath(path) {
117
- return /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(path);
118
- }
119
- //# sourceMappingURL=reqlan-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../../src/reqlan-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EACH,MAAM,EACN,cAAc,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAwB;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC;IACtD,MAAM,MAAM,GAAoC;QAC5C,KAAK,EAAE,SAAS,CAAC,oBAAoB;KACxC,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IAExB,YAA6B,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAEzD,oBAAoB,CAAC,KAAY,EAAE,MAA0B;QACzD,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,4BAA4B,CAAC,KAAY,EAAE,MAA0B;QACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAA+B,CAAC;QACpD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,IAAI,oCAAoC,EAAE;wBAClE,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;qBAC7B,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,KAAY,EAAE,MAA0B;QAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;QACxC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,SAAS;YACb,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,oCAAoC,EAAE;oBAC1D,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,MAAM;iBACnB,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YACD,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CACzD,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/C,CAAC;YACF,IAAI,oBAAoB,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,oCAAoC,EAAE;oBAC1D,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,MAAM;iBACnB,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAY,EAAE,MAA0B;QACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,MAAM,WAAW,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClE,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,SAAS;YACb,CAAC;YACD,IAAI,sBAAsB,CACtB,IAAI,EACJ,QAAQ,EACR,MAAM,CAAC,SAAS,CAAC,gBAAgB,EACjC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EACnC,WAAW,CACd,EAAE,CAAC;gBACA,SAAS;YACb,CAAC;YACD,MAAM,CAAC,OAAO,EAAE,6BAA6B,IAAI,IAAI,EAAE;gBACnD,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,MAAM;aACnB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,KAAY,EAAE,MAA0B;QAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAC/B,QAAQ,EACR,MAAM,CAAC,SAAS,CAAC,gBAAgB,EACjC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EACnC,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChD,EAAE,CAAC;YACA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpB,SAAS;YACb,CAAC;YACD,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAC5D,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ;AAID,SAAS,kBAAkB,CAAC,IAAY;IACpC,OAAO,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Collects attribute keys and values from parsed workspace documents.
3
- */
4
- import type { LangiumDocuments } from 'langium';
5
- import type { AttributeCatalog } from './reqlan-attribute-catalog.js';
6
- export declare function collectWorkspaceAttributeCatalog(documents: LangiumDocuments): AttributeCatalog;