@spyglassmc/core 0.4.0 → 0.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.
- package/lib/common/Dev.js +5 -2
- package/lib/common/Operations.js +7 -3
- package/lib/common/ReadonlyProxy.js +3 -1
- package/lib/common/StateProxy.js +18 -7
- package/lib/common/externals/BrowserExternals.js +2 -9
- package/lib/common/externals/NodeJsExternals.js +7 -17
- package/lib/common/externals/index.d.ts +0 -3
- package/lib/common/util.d.ts +1 -0
- package/lib/common/util.js +14 -10
- package/lib/node/AstNode.js +6 -4
- package/lib/node/FileNode.js +6 -1
- package/lib/node/ResourceLocationNode.d.ts +2 -2
- package/lib/node/ResourceLocationNode.js +11 -5
- package/lib/parser/boolean.js +1 -1
- package/lib/parser/comment.d.ts +1 -1
- package/lib/parser/comment.js +1 -1
- package/lib/parser/float.js +2 -1
- package/lib/parser/integer.js +2 -1
- package/lib/parser/list.d.ts +1 -1
- package/lib/parser/list.js +3 -3
- package/lib/parser/long.js +2 -1
- package/lib/parser/record.d.ts +1 -1
- package/lib/parser/record.js +18 -8
- package/lib/parser/resourceLocation.js +61 -8
- package/lib/parser/string.js +75 -7
- package/lib/parser/util.js +7 -3
- package/lib/processor/ColorInfoProvider.js +20 -7
- package/lib/processor/binder/builtin.js +27 -17
- package/lib/processor/checker/builtin.d.ts +1 -2
- package/lib/processor/checker/builtin.js +10 -12
- package/lib/processor/colorizer/builtin.js +8 -7
- package/lib/processor/completer/Completer.js +4 -2
- package/lib/processor/completer/builtin.js +26 -23
- package/lib/processor/formatter/builtin.js +14 -12
- package/lib/processor/linter/builtin/undeclaredSymbol.js +47 -24
- package/lib/processor/linter/builtin.js +7 -8
- package/lib/service/CacheService.js +9 -6
- package/lib/service/Config.d.ts +2 -2
- package/lib/service/Config.js +23 -19
- package/lib/service/Downloader.js +12 -7
- package/lib/service/FileService.js +22 -8
- package/lib/service/MetaRegistry.js +7 -6
- package/lib/service/Profiler.js +10 -5
- package/lib/service/Project.js +36 -30
- package/lib/service/Service.js +19 -9
- package/lib/service/fileUtil.js +2 -1
- package/lib/source/IndexMap.js +1 -1
- package/lib/source/LanguageError.js +1 -1
- package/lib/source/Location.js +4 -1
- package/lib/source/Range.js +6 -3
- package/lib/source/Source.js +3 -1
- package/lib/symbol/Symbol.d.ts +7 -7
- package/lib/symbol/Symbol.js +22 -9
- package/lib/symbol/SymbolUtil.d.ts +2 -2
- package/lib/symbol/SymbolUtil.js +74 -43
- package/package.json +2 -2
package/lib/service/Service.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AstNode } from '../node/index.js';
|
|
2
|
-
import { ColorPresentation, completer, traversePreOrder } from '../processor/index.js';
|
|
2
|
+
import { ColorPresentation, completer, traversePreOrder, } from '../processor/index.js';
|
|
3
3
|
import { Range } from '../source/index.js';
|
|
4
4
|
import { SymbolUsageTypes } from '../symbol/index.js';
|
|
5
|
-
import { ColorizerContext, CompleterContext, FormatterContext, ProcessorContext, SignatureHelpProviderContext } from './Context.js';
|
|
5
|
+
import { ColorizerContext, CompleterContext, FormatterContext, ProcessorContext, SignatureHelpProviderContext, } from './Context.js';
|
|
6
6
|
import { fileUtil } from './fileUtil.js';
|
|
7
7
|
import { Hover } from './Hover.js';
|
|
8
8
|
import { ProfilerFactory } from './Profiler.js';
|
|
@@ -44,9 +44,11 @@ export class Service {
|
|
|
44
44
|
try {
|
|
45
45
|
this.debug(`Getting color info for '${doc.uri}' # ${doc.version}`);
|
|
46
46
|
const ans = [];
|
|
47
|
-
traversePreOrder(node, _ => true, node => node.color, node => ans.push({
|
|
47
|
+
traversePreOrder(node, (_) => true, (node) => node.color, (node) => ans.push({
|
|
48
48
|
color: Array.isArray(node.color) ? node.color : node.color.value,
|
|
49
|
-
range: Array.isArray(node.color)
|
|
49
|
+
range: Array.isArray(node.color)
|
|
50
|
+
? node.range
|
|
51
|
+
: node.color.range ?? node.range,
|
|
50
52
|
}));
|
|
51
53
|
return ans;
|
|
52
54
|
}
|
|
@@ -63,7 +65,7 @@ export class Service {
|
|
|
63
65
|
const nodeColor = node.color;
|
|
64
66
|
if (nodeColor && !Array.isArray(nodeColor)) {
|
|
65
67
|
const colorRange = nodeColor.range ?? node.range;
|
|
66
|
-
return nodeColor.format.map(format => ColorPresentation.fromColorFormat(format, color, colorRange));
|
|
68
|
+
return nodeColor.format.map((format) => ColorPresentation.fromColorFormat(format, color, colorRange));
|
|
67
69
|
}
|
|
68
70
|
node = node.parent;
|
|
69
71
|
}
|
|
@@ -78,7 +80,11 @@ export class Service {
|
|
|
78
80
|
this.debug(`Getting completion for '${doc.uri}' # ${doc.version} @ ${offset}`);
|
|
79
81
|
const shouldComplete = this.project.meta.shouldComplete(doc.languageId, triggerCharacter);
|
|
80
82
|
if (shouldComplete) {
|
|
81
|
-
return completer.file(node, CompleterContext.create(this.project, {
|
|
83
|
+
return completer.file(node, CompleterContext.create(this.project, {
|
|
84
|
+
doc,
|
|
85
|
+
offset,
|
|
86
|
+
triggerCharacter,
|
|
87
|
+
}));
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
90
|
catch (e) {
|
|
@@ -121,7 +127,8 @@ export class Service {
|
|
|
121
127
|
while (node) {
|
|
122
128
|
const symbol = this.project.symbols.resolveAlias(node.symbol);
|
|
123
129
|
if (symbol) {
|
|
124
|
-
const hover = `\`\`\`typescript\n(${symbol.category}${symbol.subcategory ? `/${symbol.subcategory}` : ''}) ${symbol.identifier}\n\`\`\`` +
|
|
130
|
+
const hover = `\`\`\`typescript\n(${symbol.category}${symbol.subcategory ? `/${symbol.subcategory}` : ''}) ${symbol.identifier}\n\`\`\`` +
|
|
131
|
+
(symbol.desc ? `\n******\n${symbol.desc}` : '');
|
|
125
132
|
return Hover.create(node.range, hover);
|
|
126
133
|
}
|
|
127
134
|
if (node.hover) {
|
|
@@ -154,7 +161,10 @@ export class Service {
|
|
|
154
161
|
getSignatureHelp(node, doc, offset) {
|
|
155
162
|
try {
|
|
156
163
|
this.debug(`Getting signature help for '${doc.uri}' # ${doc.version} @ ${offset}`);
|
|
157
|
-
const ctx = SignatureHelpProviderContext.create(this.project, {
|
|
164
|
+
const ctx = SignatureHelpProviderContext.create(this.project, {
|
|
165
|
+
doc,
|
|
166
|
+
offset,
|
|
167
|
+
});
|
|
158
168
|
for (const provider of this.project.meta.signatureHelpProviders) {
|
|
159
169
|
const result = provider(node, ctx);
|
|
160
170
|
if (result) {
|
|
@@ -184,7 +194,7 @@ export class Service {
|
|
|
184
194
|
for (const usage of searchedUsages) {
|
|
185
195
|
let locs = symbol[usage] ?? [];
|
|
186
196
|
if (currentFileOnly) {
|
|
187
|
-
locs = locs.filter(l => l.uri === doc.uri);
|
|
197
|
+
locs = locs.filter((l) => l.uri === doc.uri);
|
|
188
198
|
}
|
|
189
199
|
rawLocations.push(...locs);
|
|
190
200
|
}
|
package/lib/service/fileUtil.js
CHANGED
|
@@ -43,7 +43,8 @@ export var fileUtil;
|
|
|
43
43
|
}
|
|
44
44
|
fileUtil.ensureEndingSlash = ensureEndingSlash;
|
|
45
45
|
function join(fromUri, toUri) {
|
|
46
|
-
return ensureEndingSlash(fromUri) +
|
|
46
|
+
return (ensureEndingSlash(fromUri) +
|
|
47
|
+
(toUri.startsWith('/') ? toUri.slice(1) : toUri));
|
|
47
48
|
}
|
|
48
49
|
fileUtil.join = join;
|
|
49
50
|
/**
|
package/lib/source/IndexMap.js
CHANGED
package/lib/source/Location.js
CHANGED
|
@@ -6,7 +6,10 @@ export var Location;
|
|
|
6
6
|
return {
|
|
7
7
|
uri: partial.uri ?? '',
|
|
8
8
|
range: Range.get(partial.range ?? { start: 0, end: 0 }),
|
|
9
|
-
posRange: partial.posRange ?? {
|
|
9
|
+
posRange: partial.posRange ?? {
|
|
10
|
+
start: { line: 0, character: 0 },
|
|
11
|
+
end: { line: 0, character: 0 },
|
|
12
|
+
},
|
|
10
13
|
};
|
|
11
14
|
}
|
|
12
15
|
Location.get = get;
|
package/lib/source/Range.js
CHANGED
|
@@ -42,7 +42,8 @@ export var Range;
|
|
|
42
42
|
}
|
|
43
43
|
Range.span = span;
|
|
44
44
|
function is(obj) {
|
|
45
|
-
return (!!obj &&
|
|
45
|
+
return (!!obj &&
|
|
46
|
+
typeof obj === 'object' &&
|
|
46
47
|
typeof obj.start === 'number' &&
|
|
47
48
|
typeof obj.end === 'number');
|
|
48
49
|
}
|
|
@@ -65,7 +66,8 @@ export var Range;
|
|
|
65
66
|
Range.toString = toString;
|
|
66
67
|
function contains(range, offset, endInclusive = false) {
|
|
67
68
|
range = get(range);
|
|
68
|
-
return range.start <= offset &&
|
|
69
|
+
return (range.start <= offset &&
|
|
70
|
+
(endInclusive ? offset <= range.end : offset < range.end));
|
|
69
71
|
}
|
|
70
72
|
Range.contains = contains;
|
|
71
73
|
function containsRange(a, b, endInclusive = false) {
|
|
@@ -144,7 +146,8 @@ export var Range;
|
|
|
144
146
|
export var RangeContainer;
|
|
145
147
|
(function (RangeContainer) {
|
|
146
148
|
function is(obj) {
|
|
147
|
-
return (!!obj &&
|
|
149
|
+
return (!!obj &&
|
|
150
|
+
typeof obj === 'object' &&
|
|
148
151
|
Range.is(obj.range));
|
|
149
152
|
}
|
|
150
153
|
RangeContainer.is = is;
|
package/lib/source/Source.js
CHANGED
|
@@ -91,7 +91,9 @@ export class ReadonlySource {
|
|
|
91
91
|
slice(param0, end) {
|
|
92
92
|
if (typeof param0 === 'number') {
|
|
93
93
|
const innerStart = IndexMap.toInnerOffset(this.indexMap, param0);
|
|
94
|
-
const innerEnd = end !== undefined
|
|
94
|
+
const innerEnd = end !== undefined
|
|
95
|
+
? IndexMap.toInnerOffset(this.indexMap, end)
|
|
96
|
+
: undefined;
|
|
95
97
|
return this.string.slice(innerStart, innerEnd);
|
|
96
98
|
}
|
|
97
99
|
const range = IndexMap.toInnerRange(this.indexMap, Range.get(param0));
|