@reqlan/language 1.5.3 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/out/file-path-rewrite.d.ts +8 -1
- package/out/file-path-rewrite.js +63 -12
- package/out/file-path-rewrite.js.map +1 -1
- package/out/index.d.ts +3 -0
- package/out/index.js +3 -0
- package/out/index.js.map +1 -1
- package/out/reqlan-code-action-provider.d.ts +13 -0
- package/out/reqlan-code-action-provider.js +59 -1
- package/out/reqlan-code-action-provider.js.map +1 -1
- package/out/reqlan-comment-rename.d.ts +28 -0
- package/out/reqlan-comment-rename.js +113 -0
- package/out/reqlan-comment-rename.js.map +1 -0
- package/out/reqlan-idea-refactor.d.ts +23 -0
- package/out/reqlan-idea-refactor.js +158 -0
- package/out/reqlan-idea-refactor.js.map +1 -0
- package/out/reqlan-import-bindings.d.ts +9 -1
- package/out/reqlan-import-bindings.js +9 -9
- package/out/reqlan-import-bindings.js.map +1 -1
- package/out/reqlan-module.js +3 -1
- package/out/reqlan-module.js.map +1 -1
- package/out/reqlan-path-references.js.map +1 -1
- package/out/reqlan-path-resolve.d.ts +10 -2
- package/out/reqlan-path-resolve.js +25 -14
- package/out/reqlan-path-resolve.js.map +1 -1
- package/out/reqlan-rename-provider.d.ts +15 -0
- package/out/reqlan-rename-provider.js +84 -0
- package/out/reqlan-rename-provider.js.map +1 -0
- package/out/reqlan-scope.js +2 -0
- package/out/reqlan-scope.js.map +1 -1
- package/out/reqlan-validator.d.ts +6 -0
- package/out/reqlan-validator.js +7 -9
- package/out/reqlan-validator.js.map +1 -1
- package/package.json +1 -1
- package/src/file-path-rewrite.ts +89 -12
- package/src/index.ts +10 -0
- package/src/reqlan-code-action-provider.ts +73 -1
- package/src/reqlan-comment-rename.ts +151 -0
- package/src/reqlan-idea-refactor.ts +222 -0
- package/src/reqlan-import-bindings.ts +9 -10
- package/src/reqlan-module.ts +3 -1
- package/src/reqlan-path-references.ts +2 -0
- package/src/reqlan-path-resolve.ts +30 -15
- package/src/reqlan-rename-provider.ts +124 -0
- package/src/reqlan-scope.ts +2 -0
- package/src/reqlan-validator.ts +6 -11
- package/src/reqlan.langium +5 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { AstUtils } from 'langium';
|
|
2
|
+
import { isIdea, isModel, isOneLinerIdea } from './generated/ast.js';
|
|
3
|
+
import { buildFromImportEdit, findImportInsertPosition, relativeRqImportPath } from './reqlan-import-edits.js';
|
|
4
|
+
export function isRefactorIdeaDeclaration(node) {
|
|
5
|
+
return isIdea(node) || isOneLinerIdea(node);
|
|
6
|
+
}
|
|
7
|
+
export function ideaDeclarationText(document, idea) {
|
|
8
|
+
const range = idea.$cstNode?.range;
|
|
9
|
+
if (!range) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
return document.textDocument.getText(range);
|
|
13
|
+
}
|
|
14
|
+
export function planIdeaDeleteEdits(idea, references, documentsText) {
|
|
15
|
+
const byUri = new Map();
|
|
16
|
+
const declarationDoc = AstUtils.getDocument(idea);
|
|
17
|
+
const declarationUri = declarationDoc.uri.toString();
|
|
18
|
+
const declarationRange = expandDeclarationRange(idea);
|
|
19
|
+
if (declarationRange) {
|
|
20
|
+
pushEdit(byUri, declarationUri, { range: declarationRange, newText: '' });
|
|
21
|
+
}
|
|
22
|
+
for (const reference of references) {
|
|
23
|
+
const uri = reference.sourceUri.toString();
|
|
24
|
+
if (uri === declarationUri && rangesOverlap(reference.segment.range, declarationRange)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const clearRange = expandReferenceClearRange(documentsText?.get(uri), reference.segment.range);
|
|
28
|
+
pushEdit(byUri, uri, { range: clearRange, newText: '' });
|
|
29
|
+
}
|
|
30
|
+
if (documentsText) {
|
|
31
|
+
for (const [uri, text] of documentsText) {
|
|
32
|
+
for (const edit of planCommentReferenceRemovals(text, idea.name)) {
|
|
33
|
+
pushEdit(byUri, uri, edit);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return toDocumentEdits(byUri);
|
|
38
|
+
}
|
|
39
|
+
export function planIdeaMoveEdits(input) {
|
|
40
|
+
const ideaText = ideaDeclarationText(input.sourceDocument, input.idea);
|
|
41
|
+
if (!ideaText) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const byUri = new Map();
|
|
45
|
+
const sourceUri = input.sourceDocument.uri.toString();
|
|
46
|
+
const destUri = input.destinationDocument.uri.toString();
|
|
47
|
+
const declarationRange = expandDeclarationRange(input.idea);
|
|
48
|
+
if (declarationRange) {
|
|
49
|
+
pushEdit(byUri, sourceUri, { range: declarationRange, newText: '' });
|
|
50
|
+
}
|
|
51
|
+
const destModel = input.destinationDocument.parseResult.value;
|
|
52
|
+
if (isModel(destModel)) {
|
|
53
|
+
const insert = findIdeaInsertPosition(destModel);
|
|
54
|
+
pushEdit(byUri, destUri, {
|
|
55
|
+
range: { start: insert, end: insert },
|
|
56
|
+
newText: `${ideaText}\n`
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (sourceKeepsReferences(input.references, sourceUri, declarationRange)) {
|
|
60
|
+
const importPath = relativeRqImportPath(input.sourceDocument.uri, input.destinationDocument.uri);
|
|
61
|
+
const importEdit = buildFromImportEdit(input.sourceDocument, importPath, input.idea.name);
|
|
62
|
+
if (importEdit) {
|
|
63
|
+
pushEdit(byUri, sourceUri, importEdit);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return toDocumentEdits(byUri);
|
|
67
|
+
}
|
|
68
|
+
function sourceKeepsReferences(references, sourceUri, declarationRange) {
|
|
69
|
+
return references.some(reference => reference.sourceUri.toString() === sourceUri
|
|
70
|
+
&& !rangesOverlap(reference.segment.range, declarationRange));
|
|
71
|
+
}
|
|
72
|
+
function findIdeaInsertPosition(model) {
|
|
73
|
+
const lastElement = model.elements[model.elements.length - 1];
|
|
74
|
+
if (lastElement?.$cstNode) {
|
|
75
|
+
const end = lastElement.$cstNode.range.end;
|
|
76
|
+
return { line: end.line + 1, character: 0 };
|
|
77
|
+
}
|
|
78
|
+
return findImportInsertPosition(model).position;
|
|
79
|
+
}
|
|
80
|
+
function expandDeclarationRange(idea) {
|
|
81
|
+
const range = idea.$cstNode?.range;
|
|
82
|
+
if (!range) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
start: { line: range.start.line, character: 0 },
|
|
87
|
+
end: { line: range.end.line + 1, character: 0 }
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function expandReferenceClearRange(text, range) {
|
|
91
|
+
if (!text) {
|
|
92
|
+
return range;
|
|
93
|
+
}
|
|
94
|
+
const line = text.split(/\r?\n/)[range.start.line] ?? '';
|
|
95
|
+
const before = line.slice(0, range.start.character);
|
|
96
|
+
const after = line.slice(range.end.character);
|
|
97
|
+
const wikiOpen = before.endsWith('[[') ? 2 : before.endsWith('[') ? 1 : 0;
|
|
98
|
+
const wikiClose = after.startsWith(']]') ? 2 : after.startsWith(']') ? 1 : 0;
|
|
99
|
+
if (wikiOpen > 0 && wikiClose > 0) {
|
|
100
|
+
return {
|
|
101
|
+
start: { line: range.start.line, character: range.start.character - wikiOpen },
|
|
102
|
+
end: { line: range.end.line, character: range.end.character + wikiClose }
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return range;
|
|
106
|
+
}
|
|
107
|
+
function planCommentReferenceRemovals(text, ideaName) {
|
|
108
|
+
const edits = [];
|
|
109
|
+
const pattern = /rq:\s*\[[^\]]*\]/g;
|
|
110
|
+
for (const match of text.matchAll(pattern)) {
|
|
111
|
+
const body = match[0];
|
|
112
|
+
if (!new RegExp(`(\\.|\\[)${escapeRegExp(ideaName)}(\\]|$)`).test(body)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const start = offsetToPosition(text, match.index ?? 0);
|
|
116
|
+
const end = offsetToPosition(text, (match.index ?? 0) + body.length);
|
|
117
|
+
edits.push({ range: { start, end }, newText: '' });
|
|
118
|
+
}
|
|
119
|
+
return edits;
|
|
120
|
+
}
|
|
121
|
+
function pushEdit(map, uri, edit) {
|
|
122
|
+
const list = map.get(uri) ?? [];
|
|
123
|
+
list.push(edit);
|
|
124
|
+
map.set(uri, list);
|
|
125
|
+
}
|
|
126
|
+
function toDocumentEdits(byUri) {
|
|
127
|
+
return [...byUri.entries()].map(([uri, edits]) => ({
|
|
128
|
+
uri,
|
|
129
|
+
edits: [...edits].sort((left, right) => {
|
|
130
|
+
if (left.range.start.line !== right.range.start.line) {
|
|
131
|
+
return right.range.start.line - left.range.start.line;
|
|
132
|
+
}
|
|
133
|
+
return right.range.start.character - left.range.start.character;
|
|
134
|
+
})
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
function rangesOverlap(left, right) {
|
|
138
|
+
if (!right) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const leftStart = left.start.line * 1e9 + left.start.character;
|
|
142
|
+
const leftEnd = left.end.line * 1e9 + left.end.character;
|
|
143
|
+
const rightStart = right.start.line * 1e9 + right.start.character;
|
|
144
|
+
const rightEnd = right.end.line * 1e9 + right.end.character;
|
|
145
|
+
return leftStart < rightEnd && rightStart < leftEnd;
|
|
146
|
+
}
|
|
147
|
+
function offsetToPosition(text, offset) {
|
|
148
|
+
const before = text.slice(0, offset);
|
|
149
|
+
const lines = before.split(/\r?\n/);
|
|
150
|
+
return {
|
|
151
|
+
line: lines.length - 1,
|
|
152
|
+
character: lines[lines.length - 1].length
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function escapeRegExp(value) {
|
|
156
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=reqlan-idea-refactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqlan-idea-refactor.js","sourceRoot":"","sources":["../src/reqlan-idea-refactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,20 @@ export interface ImportBinding {
|
|
|
6
6
|
property: 'alias' | 'idea';
|
|
7
7
|
}
|
|
8
8
|
export type PathBearingImport = Exclude<Import, InvalidFromImport>;
|
|
9
|
+
/**
|
|
10
|
+
* Local binding name for a from-import specifier.
|
|
11
|
+
* When `as alias` is present, only the alias is bound; the imported idea's base name
|
|
12
|
+
* remains free for a local idea (see import_tokenisation).
|
|
13
|
+
*/
|
|
9
14
|
export declare function specifierBindingName(specifier: FromImportSpecifier): string | undefined;
|
|
10
15
|
/** True when a from-import has the required `import <idea>` clause. */
|
|
11
16
|
export declare function isWellFormedFromImport(importDecl: FromImport): boolean;
|
|
12
17
|
export declare function isPathBearingImport(importDecl: Import): importDecl is PathBearingImport;
|
|
13
18
|
export declare function importPathOf(importDecl: Import): string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Names bound into the importing file's local namespace.
|
|
21
|
+
* Aliased imports bind only the alias — never the imported idea's base name.
|
|
22
|
+
*/
|
|
14
23
|
export declare function importBindings(importDecl: Import): ImportBinding[];
|
|
15
|
-
export declare function importedIdeaNames(importDecl: Import): string[];
|
|
16
24
|
export declare function findNamespaceImportByAlias(imports: Import[], alias: string): Import | undefined;
|
|
17
25
|
export declare function findFromImportSpecifierByBinding(imports: Import[], bindingName: string): FromImportSpecifier | undefined;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { isFromImport, isInvalidFromImport, isNamespaceImport, isQualifiedImport } from './generated/ast.js';
|
|
2
|
+
/**
|
|
3
|
+
* Local binding name for a from-import specifier.
|
|
4
|
+
* When `as alias` is present, only the alias is bound; the imported idea's base name
|
|
5
|
+
* remains free for a local idea (see import_tokenisation).
|
|
6
|
+
*/
|
|
2
7
|
export function specifierBindingName(specifier) {
|
|
3
8
|
return specifier.alias ?? specifier.idea.$refText;
|
|
4
9
|
}
|
|
@@ -12,6 +17,10 @@ export function isPathBearingImport(importDecl) {
|
|
|
12
17
|
export function importPathOf(importDecl) {
|
|
13
18
|
return isPathBearingImport(importDecl) ? importDecl.path : undefined;
|
|
14
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Names bound into the importing file's local namespace.
|
|
22
|
+
* Aliased imports bind only the alias — never the imported idea's base name.
|
|
23
|
+
*/
|
|
15
24
|
export function importBindings(importDecl) {
|
|
16
25
|
if (isFromImport(importDecl)) {
|
|
17
26
|
// Mistaken `from "path" as alias` (no idea specifiers) must not bind a name.
|
|
@@ -49,15 +58,6 @@ export function importBindings(importDecl) {
|
|
|
49
58
|
}
|
|
50
59
|
return [];
|
|
51
60
|
}
|
|
52
|
-
export function importedIdeaNames(importDecl) {
|
|
53
|
-
if (isFromImport(importDecl)) {
|
|
54
|
-
return importDecl.specifiers.map(specifier => specifier.idea.$refText);
|
|
55
|
-
}
|
|
56
|
-
if (isQualifiedImport(importDecl)) {
|
|
57
|
-
return [importDecl.idea.$refText];
|
|
58
|
-
}
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
61
|
export function findNamespaceImportByAlias(imports, alias) {
|
|
62
62
|
for (const importDecl of imports) {
|
|
63
63
|
if (!isNamespaceImport(importDecl) || importDecl.alias !== alias) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-import-bindings.js","sourceRoot":"","sources":["../src/reqlan-import-bindings.ts"],"names":[],"mappings":"AACA,OAAO,EACH,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAKpB,MAAM,oBAAoB,CAAC;AAU5B,MAAM,UAAU,oBAAoB,CAAC,SAA8B;IAC/D,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB,CAAC,UAAsB;IACzD,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IAClD,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC3C,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC7C,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,6EAA6E;QAC7E,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7C,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;YACd,CAAC;YACD,OAAO,CAAC;oBACJ,IAAI;oBACJ,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,MAAe;iBACjE,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC;gBACJ,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aAChD,CAAC,CAAC;IACP,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"reqlan-import-bindings.js","sourceRoot":"","sources":["../src/reqlan-import-bindings.ts"],"names":[],"mappings":"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"}
|
package/out/reqlan-module.js
CHANGED
|
@@ -13,6 +13,7 @@ import { ReqlanCodeActionProvider } from './reqlan-code-action-provider.js';
|
|
|
13
13
|
import { sharedAttributeCatalog } from './reqlan-attribute-catalog.js';
|
|
14
14
|
import { ReqlanCodeLensProvider } from './reqlan-code-lens-provider.js';
|
|
15
15
|
import { ReqlanInlayHintProvider } from './reqlan-inlay-hint-provider.js';
|
|
16
|
+
import { ReqlanRenameProvider } from './reqlan-rename-provider.js';
|
|
16
17
|
import { ReqlanSemanticTokenProvider } from './reqlan-semantic-token-provider.js';
|
|
17
18
|
import { ReqlanTokenBuilder } from './reqlan-token-builder.js';
|
|
18
19
|
import { registerRqIgnoreErrorFiltering } from './reqlan-ignore-error.js';
|
|
@@ -44,7 +45,8 @@ export const ReqlanModule = {
|
|
|
44
45
|
InlayHintProvider: services => new ReqlanInlayHintProvider(services),
|
|
45
46
|
CodeLensProvider: services => new ReqlanCodeLensProvider(services),
|
|
46
47
|
CompletionProvider: services => new ReqlanCompletionProvider(services, sharedAttributeCatalog),
|
|
47
|
-
CodeActionProvider: services => new ReqlanCodeActionProvider(services)
|
|
48
|
+
CodeActionProvider: services => new ReqlanCodeActionProvider(services),
|
|
49
|
+
RenameProvider: services => new ReqlanRenameProvider(services)
|
|
48
50
|
}
|
|
49
51
|
};
|
|
50
52
|
/**
|
package/out/reqlan-module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-module.js","sourceRoot":"","sources":["../src/reqlan-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAkH,MAAM,aAAa,CAAC;AAC7L,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAiBlF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAyE;IAC9F,UAAU,EAAE;QACR,eAAe,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC;KAC7D;IACD,UAAU,EAAE;QACR,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC;QAC9C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE;QAC5C,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAClE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC;KAC/D;IACD,MAAM,EAAE;QACJ,aAAa,EAAE,yBAAyB;QACxC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE;KAC/C;IACD,GAAG,EAAE;QACD,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;QACtE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,+BAA+B,CAAC,QAAQ,CAAC;QACpF,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,0BAA0B,CAAC,QAAQ,CAAC;QAC1E,qBAAqB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,2BAA2B,CAAC,QAAQ,CAAC;QAC5E,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,QAAQ,CAAC;QACpE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC;QAClE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,wBAAwB,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QAC9F,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"reqlan-module.js","sourceRoot":"","sources":["../src/reqlan-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-path-references.js","sourceRoot":"","sources":["../src/reqlan-path-references.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reqlan-path-references.js","sourceRoot":"","sources":["../src/reqlan-path-references.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { FileSystemProvider, LangiumDocument, URI } from 'langium';
|
|
8
8
|
export declare const DEFAULT_IMPORT_ROOT_ALIAS = "@";
|
|
9
|
-
|
|
9
|
+
/** Base marker / application-memory directory name (must match analytical APPLICATION_MEMORY_DIR). */
|
|
10
|
+
export declare const REQLAN_DIR = ".reqlan";
|
|
11
|
+
/** Config filename under `<base>/.reqlan/`. */
|
|
12
|
+
export declare const CONFIG_FILENAME = "config.json";
|
|
10
13
|
export interface ImportRootMapping {
|
|
11
14
|
alias: string;
|
|
12
15
|
/** Absolute URI of that alias’s import-root directory, when set. */
|
|
@@ -45,7 +48,7 @@ export interface PathResolveContext {
|
|
|
45
48
|
workspaceFolderUri?: URI;
|
|
46
49
|
fileSystem?: FileSystemProvider;
|
|
47
50
|
/**
|
|
48
|
-
* Preloaded config. `undefined` loads
|
|
51
|
+
* Preloaded config. `undefined` loads the owning base’s `.reqlan/config.json` when fileSystem is set.
|
|
49
52
|
* `null` skips loading and uses defaults only.
|
|
50
53
|
*/
|
|
51
54
|
config?: RqConfig | null;
|
|
@@ -58,6 +61,11 @@ export declare function matchImportRootMapping(path: string, mappings: readonly
|
|
|
58
61
|
remainder: string;
|
|
59
62
|
} | undefined;
|
|
60
63
|
export declare function findWorkspaceFolderUri(documentUri: URI, folderUris: readonly URI[] | undefined): URI | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Walk ancestors from startDir. The first directory that owns `.reqlan/` is the applying base.
|
|
66
|
+
* Load that base’s `.reqlan/config.json` when present; otherwise return undefined (defaults).
|
|
67
|
+
* Does not inherit a parent base’s config.
|
|
68
|
+
*/
|
|
61
69
|
export declare function loadApplyingRqConfig(startDirUri: URI, fileSystem: FileSystemProvider): RqConfig | undefined;
|
|
62
70
|
export declare function resolveRqConfig(document: LangiumDocument, context?: PathResolveContext): RqConfig;
|
|
63
71
|
export declare function resolveImportRootUri(document: LangiumDocument, context: PathResolveContext | undefined, mapping: ImportRootMapping): URI | undefined;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { URI as UriCtor, UriUtils } from 'langium';
|
|
2
2
|
export const DEFAULT_IMPORT_ROOT_ALIAS = '@';
|
|
3
|
-
|
|
3
|
+
/** Base marker / application-memory directory name (must match analytical APPLICATION_MEMORY_DIR). */
|
|
4
|
+
export const REQLAN_DIR = '.reqlan';
|
|
5
|
+
/** Config filename under `<base>/.reqlan/`. */
|
|
6
|
+
export const CONFIG_FILENAME = 'config.json';
|
|
4
7
|
export function defaultRqConfig() {
|
|
5
8
|
return { importRoots: [{ alias: DEFAULT_IMPORT_ROOT_ALIAS }] };
|
|
6
9
|
}
|
|
@@ -49,12 +52,21 @@ export function findWorkspaceFolderUri(documentUri, folderUris) {
|
|
|
49
52
|
}
|
|
50
53
|
return best;
|
|
51
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Walk ancestors from startDir. The first directory that owns `.reqlan/` is the applying base.
|
|
57
|
+
* Load that base’s `.reqlan/config.json` when present; otherwise return undefined (defaults).
|
|
58
|
+
* Does not inherit a parent base’s config.
|
|
59
|
+
*/
|
|
52
60
|
export function loadApplyingRqConfig(startDirUri, fileSystem) {
|
|
53
61
|
let dir = startDirUri;
|
|
54
62
|
for (;;) {
|
|
55
|
-
const
|
|
56
|
-
if (fileSystem.existsSync(
|
|
57
|
-
|
|
63
|
+
const reqlanDir = UriUtils.joinPath(dir, REQLAN_DIR);
|
|
64
|
+
if (fileSystem.existsSync(reqlanDir) && fileSystem.statSync(reqlanDir).isDirectory) {
|
|
65
|
+
const configUri = UriUtils.joinPath(reqlanDir, CONFIG_FILENAME);
|
|
66
|
+
if (fileSystem.existsSync(configUri) && !fileSystem.statSync(configUri).isDirectory) {
|
|
67
|
+
return parseRqConfig(configUri, dir, fileSystem);
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
58
70
|
}
|
|
59
71
|
const parent = UriUtils.dirname(dir);
|
|
60
72
|
if (UriUtils.equals(parent, dir)) {
|
|
@@ -63,7 +75,7 @@ export function loadApplyingRqConfig(startDirUri, fileSystem) {
|
|
|
63
75
|
dir = parent;
|
|
64
76
|
}
|
|
65
77
|
}
|
|
66
|
-
function parseRqConfig(configUri, fileSystem) {
|
|
78
|
+
function parseRqConfig(configUri, baseRootUri, fileSystem) {
|
|
67
79
|
let raw;
|
|
68
80
|
try {
|
|
69
81
|
raw = JSON.parse(fileSystem.readFileSync(configUri));
|
|
@@ -75,11 +87,11 @@ function parseRqConfig(configUri, fileSystem) {
|
|
|
75
87
|
return undefined;
|
|
76
88
|
}
|
|
77
89
|
const record = raw;
|
|
78
|
-
const importRoots = parseImportRoots(record.importRoots,
|
|
90
|
+
const importRoots = parseImportRoots(record.importRoots, baseRootUri);
|
|
79
91
|
if (record.importRoots !== undefined && importRoots === undefined) {
|
|
80
92
|
return undefined;
|
|
81
93
|
}
|
|
82
|
-
const parsedExport = parseExportConfig(record.export,
|
|
94
|
+
const parsedExport = parseExportConfig(record.export, baseRootUri);
|
|
83
95
|
const config = {
|
|
84
96
|
importRoots: importRoots ?? defaultRqConfig().importRoots
|
|
85
97
|
};
|
|
@@ -88,7 +100,7 @@ function parseRqConfig(configUri, fileSystem) {
|
|
|
88
100
|
}
|
|
89
101
|
return config;
|
|
90
102
|
}
|
|
91
|
-
function parseImportRootEntry(entry,
|
|
103
|
+
function parseImportRootEntry(entry, baseRootUri) {
|
|
92
104
|
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
93
105
|
return undefined;
|
|
94
106
|
}
|
|
@@ -100,28 +112,27 @@ function parseImportRootEntry(entry, configDir) {
|
|
|
100
112
|
if (typeof record.root === 'string' && record.root.length > 0) {
|
|
101
113
|
mapping.rootUri = isAbsoluteUriOrPath(record.root)
|
|
102
114
|
? toDirectoryUri(record.root)
|
|
103
|
-
: UriUtils.resolvePath(
|
|
115
|
+
: UriUtils.resolvePath(baseRootUri, record.root);
|
|
104
116
|
}
|
|
105
117
|
return mapping;
|
|
106
118
|
}
|
|
107
|
-
function parseImportRoots(raw,
|
|
119
|
+
function parseImportRoots(raw, baseRootUri) {
|
|
108
120
|
if (raw === undefined) {
|
|
109
121
|
return undefined;
|
|
110
122
|
}
|
|
111
123
|
if (!Array.isArray(raw)) {
|
|
112
124
|
return undefined;
|
|
113
125
|
}
|
|
114
|
-
const configDir = UriUtils.dirname(configUri);
|
|
115
126
|
const importRoots = [];
|
|
116
127
|
for (const entry of raw) {
|
|
117
|
-
const mapping = parseImportRootEntry(entry,
|
|
128
|
+
const mapping = parseImportRootEntry(entry, baseRootUri);
|
|
118
129
|
if (mapping) {
|
|
119
130
|
importRoots.push(mapping);
|
|
120
131
|
}
|
|
121
132
|
}
|
|
122
133
|
return importRoots.length > 0 ? importRoots : defaultRqConfig().importRoots;
|
|
123
134
|
}
|
|
124
|
-
function parseExportConfig(raw,
|
|
135
|
+
function parseExportConfig(raw, baseRootUri) {
|
|
125
136
|
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
126
137
|
return undefined;
|
|
127
138
|
}
|
|
@@ -130,7 +141,7 @@ function parseExportConfig(raw, configDir) {
|
|
|
130
141
|
if (typeof record.outputFolder === 'string' && record.outputFolder.trim().length > 0) {
|
|
131
142
|
config.outputFolder = isAbsoluteUriOrPath(record.outputFolder)
|
|
132
143
|
? toDirectoryUri(record.outputFolder).fsPath
|
|
133
|
-
: UriUtils.resolvePath(
|
|
144
|
+
: UriUtils.resolvePath(baseRootUri, record.outputFolder).fsPath;
|
|
134
145
|
}
|
|
135
146
|
if (typeof record.templateId === 'string' && record.templateId.trim().length > 0) {
|
|
136
147
|
config.templateId = record.templateId.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-path-resolve.js","sourceRoot":"","sources":["../src/reqlan-path-resolve.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"reqlan-path-resolve.js","sourceRoot":"","sources":["../src/reqlan-path-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP rename for reqlan symbols, including `rq:[...]` comment idea tokens in .rq docs.
|
|
3
|
+
* rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_rename]
|
|
4
|
+
* rq:["../../../reqlan rq/extension/syntax/features-syntax.rq".refactor_support]
|
|
5
|
+
*/
|
|
6
|
+
import type { LangiumDocument } from 'langium';
|
|
7
|
+
import { DefaultRenameProvider } from 'langium/lsp';
|
|
8
|
+
import type { RenameParams, WorkspaceEdit } from 'vscode-languageserver';
|
|
9
|
+
import type { ReqlanServices } from './reqlan-module.js';
|
|
10
|
+
export declare class ReqlanRenameProvider extends DefaultRenameProvider {
|
|
11
|
+
private readonly documents;
|
|
12
|
+
constructor(services: ReqlanServices);
|
|
13
|
+
rename(document: LangiumDocument, params: RenameParams): Promise<WorkspaceEdit | undefined>;
|
|
14
|
+
private resolveRenameTarget;
|
|
15
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { AstUtils, CstUtils } from 'langium';
|
|
2
|
+
import { DefaultRenameProvider } from 'langium/lsp';
|
|
3
|
+
import { TextEdit } from 'vscode-languageserver';
|
|
4
|
+
import { isIdea, isIdeaSet, isOneLinerIdea } from './generated/ast.js';
|
|
5
|
+
import { findCommentIdeaRenameMatches } from './reqlan-comment-rename.js';
|
|
6
|
+
export class ReqlanRenameProvider extends DefaultRenameProvider {
|
|
7
|
+
constructor(services) {
|
|
8
|
+
super(services);
|
|
9
|
+
this.documents = services.shared.workspace.LangiumDocuments;
|
|
10
|
+
}
|
|
11
|
+
async rename(document, params) {
|
|
12
|
+
const base = await super.rename(document, params);
|
|
13
|
+
const target = this.resolveRenameTarget(document, params.position);
|
|
14
|
+
const oldName = targetName(target, node => this.nameProvider.getName(node));
|
|
15
|
+
if (!oldName || oldName === params.newName) {
|
|
16
|
+
return base;
|
|
17
|
+
}
|
|
18
|
+
const declarationDoc = target ? AstUtils.getDocument(target) : document;
|
|
19
|
+
const declarationPath = declarationDoc.uri.path;
|
|
20
|
+
const changes = { ...(base?.changes ?? {}) };
|
|
21
|
+
for (const doc of this.documents.all) {
|
|
22
|
+
const uri = doc.uri.toString();
|
|
23
|
+
const text = doc.textDocument.getText();
|
|
24
|
+
const matches = findCommentIdeaRenameMatches(text, oldName, { includePathless: true });
|
|
25
|
+
const edits = matches
|
|
26
|
+
.filter(match => commentMatchApplies(match.path, declarationPath, doc.uri.toString() === declarationDoc.uri.toString()))
|
|
27
|
+
.map(match => ({
|
|
28
|
+
range: match.range,
|
|
29
|
+
newText: params.newName
|
|
30
|
+
}))
|
|
31
|
+
.filter(edit => !(changes[uri] ?? []).some(existing => rangesEqual(existing.range, edit.range)));
|
|
32
|
+
if (edits.length === 0) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
changes[uri] = [
|
|
36
|
+
...(changes[uri] ?? []),
|
|
37
|
+
...edits.map(edit => TextEdit.replace(edit.range, edit.newText))
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
return Object.keys(changes).length > 0 ? { changes } : base;
|
|
41
|
+
}
|
|
42
|
+
resolveRenameTarget(document, position) {
|
|
43
|
+
const rootNode = document.parseResult.value.$cstNode;
|
|
44
|
+
if (!rootNode) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const offset = document.textDocument.offsetAt(position);
|
|
48
|
+
const leafNode = CstUtils.findDeclarationNodeAtOffset(rootNode, offset, this.grammarConfig.nameRegexp);
|
|
49
|
+
if (!leafNode) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const declarations = this.references.findDeclarations(leafNode);
|
|
53
|
+
return declarations[0] ?? leafNode.astNode;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function targetName(target, getName) {
|
|
57
|
+
if (!target) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
if (isIdea(target) || isOneLinerIdea(target) || isIdeaSet(target)) {
|
|
61
|
+
return target.name;
|
|
62
|
+
}
|
|
63
|
+
return getName(target);
|
|
64
|
+
}
|
|
65
|
+
function commentMatchApplies(path, declarationPath, isDeclarationDocument) {
|
|
66
|
+
if (path === undefined) {
|
|
67
|
+
return isDeclarationDocument;
|
|
68
|
+
}
|
|
69
|
+
const normalizedDecl = declarationPath.replace(/\\/g, '/');
|
|
70
|
+
const normalizedPath = path.replace(/\\/g, '/');
|
|
71
|
+
const declBase = normalizedDecl.slice(normalizedDecl.lastIndexOf('/') + 1);
|
|
72
|
+
const pathBase = normalizedPath.slice(normalizedPath.lastIndexOf('/') + 1);
|
|
73
|
+
return normalizedDecl.endsWith(normalizedPath)
|
|
74
|
+
|| normalizedDecl.endsWith(`${normalizedPath.replace(/\.rq$/i, '')}.rq`)
|
|
75
|
+
|| declBase === pathBase
|
|
76
|
+
|| declBase.replace(/\.rq$/i, '') === pathBase.replace(/\.rq$/i, '');
|
|
77
|
+
}
|
|
78
|
+
function rangesEqual(left, right) {
|
|
79
|
+
return left.start.line === right.start.line
|
|
80
|
+
&& left.start.character === right.start.character
|
|
81
|
+
&& left.end.line === right.end.line
|
|
82
|
+
&& left.end.character === right.end.character;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=reqlan-rename-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqlan-rename-provider.js","sourceRoot":"","sources":["../src/reqlan-rename-provider.ts"],"names":[],"mappings":"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"}
|
package/out/reqlan-scope.js
CHANGED
|
@@ -96,6 +96,8 @@ export class ReqlanScopeProvider extends DefaultScopeProvider {
|
|
|
96
96
|
const descriptions = model.elements
|
|
97
97
|
.filter(element => isIdea(element) || isOneLinerIdea(element))
|
|
98
98
|
.map(idea => this.descriptions.createDescription(idea, idea.name, document));
|
|
99
|
+
// Imported ideas enter scope under their binding name only (alias when present).
|
|
100
|
+
// See import_tokenisation: aliased base names are not reserved locally.
|
|
99
101
|
for (const importDecl of model.imports) {
|
|
100
102
|
if (isFromImport(importDecl)) {
|
|
101
103
|
for (const specifier of importDecl.specifiers) {
|