@spyglassmc/core 0.1.2 → 0.2.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 +7 -0
- package/lib/browser.d.ts +2 -0
- package/lib/browser.js +2 -0
- package/lib/common/TwoWayMap.js +4 -10
- package/lib/common/externals/BrowserExternals.d.ts +3 -0
- package/lib/common/externals/BrowserExternals.js +191 -0
- package/lib/common/externals/NodeJsExternals.d.ts +3 -0
- package/lib/common/externals/NodeJsExternals.js +151 -0
- package/lib/common/externals/downloader.d.ts +31 -0
- package/lib/common/externals/downloader.js +32 -0
- package/lib/common/externals/index.d.ts +96 -0
- package/lib/common/externals/index.js +2 -0
- package/lib/common/index.d.ts +2 -1
- package/lib/common/index.js +2 -17
- package/lib/common/util.d.ts +15 -15
- package/lib/common/util.js +30 -77
- package/lib/index.d.ts +7 -7
- package/lib/index.js +7 -23
- package/lib/node/AstNode.d.ts +3 -3
- package/lib/node/AstNode.js +10 -16
- package/lib/node/BooleanNode.d.ts +2 -2
- package/lib/node/BooleanNode.js +4 -7
- package/lib/node/CommentNode.d.ts +1 -1
- package/lib/node/CommentNode.js +2 -5
- package/lib/node/ErrorNode.d.ts +1 -1
- package/lib/node/ErrorNode.js +2 -5
- package/lib/node/FileNode.d.ts +3 -3
- package/lib/node/FileNode.js +2 -5
- package/lib/node/FloatNode.d.ts +2 -2
- package/lib/node/FloatNode.js +4 -7
- package/lib/node/IntegerNode.d.ts +2 -2
- package/lib/node/IntegerNode.js +4 -7
- package/lib/node/ListNode.d.ts +2 -2
- package/lib/node/ListNode.js +2 -5
- package/lib/node/LiteralNode.d.ts +3 -3
- package/lib/node/LiteralNode.js +4 -7
- package/lib/node/LongNode.d.ts +2 -2
- package/lib/node/LongNode.js +4 -7
- package/lib/node/RecordNode.d.ts +2 -2
- package/lib/node/RecordNode.js +2 -5
- package/lib/node/ResourceLocationNode.d.ts +5 -5
- package/lib/node/ResourceLocationNode.js +9 -12
- package/lib/node/Sequence.d.ts +2 -2
- package/lib/node/Sequence.js +4 -7
- package/lib/node/StringNode.d.ts +4 -4
- package/lib/node/StringNode.js +9 -12
- package/lib/node/SymbolNode.d.ts +3 -3
- package/lib/node/SymbolNode.js +4 -7
- package/lib/node/index.d.ts +15 -15
- package/lib/node/index.js +15 -31
- package/lib/nodejs.d.ts +2 -0
- package/lib/nodejs.js +2 -0
- package/lib/parser/Parser.d.ts +3 -3
- package/lib/parser/Parser.js +1 -4
- package/lib/parser/boolean.d.ts +2 -2
- package/lib/parser/boolean.js +3 -6
- package/lib/parser/comment.d.ts +2 -2
- package/lib/parser/comment.js +5 -9
- package/lib/parser/empty.d.ts +1 -1
- package/lib/parser/empty.js +1 -5
- package/lib/parser/error.d.ts +2 -2
- package/lib/parser/error.js +5 -9
- package/lib/parser/file.d.ts +3 -3
- package/lib/parser/file.js +9 -13
- package/lib/parser/float.d.ts +4 -4
- package/lib/parser/float.js +12 -16
- package/lib/parser/index.d.ts +16 -16
- package/lib/parser/index.js +16 -38
- package/lib/parser/integer.d.ts +4 -4
- package/lib/parser/integer.js +10 -14
- package/lib/parser/list.d.ts +2 -2
- package/lib/parser/list.js +15 -19
- package/lib/parser/literal.d.ts +2 -2
- package/lib/parser/literal.js +5 -9
- package/lib/parser/long.d.ts +4 -4
- package/lib/parser/long.js +10 -14
- package/lib/parser/record.d.ts +3 -3
- package/lib/parser/record.js +20 -24
- package/lib/parser/resourceLocation.d.ts +2 -2
- package/lib/parser/resourceLocation.js +14 -18
- package/lib/parser/string.d.ts +5 -5
- package/lib/parser/string.js +36 -42
- package/lib/parser/symbol.d.ts +3 -3
- package/lib/parser/symbol.js +3 -7
- package/lib/parser/util.d.ts +5 -5
- package/lib/parser/util.js +38 -56
- package/lib/processor/ColorInfoProvider.d.ts +1 -1
- package/lib/processor/ColorInfoProvider.js +6 -9
- package/lib/processor/InlayHintProvider.d.ts +2 -2
- package/lib/processor/InlayHintProvider.js +1 -2
- package/lib/processor/SignatureHelpProvider.d.ts +2 -2
- package/lib/processor/SignatureHelpProvider.js +1 -2
- package/lib/processor/checker/Checker.d.ts +2 -2
- package/lib/processor/checker/Checker.js +1 -5
- package/lib/processor/checker/builtin.d.ts +4 -4
- package/lib/processor/checker/builtin.js +19 -30
- package/lib/processor/checker/index.d.ts +2 -2
- package/lib/processor/checker/index.js +2 -31
- package/lib/processor/colorizer/Colorizer.d.ts +4 -4
- package/lib/processor/colorizer/Colorizer.js +8 -11
- package/lib/processor/colorizer/builtin.d.ts +3 -3
- package/lib/processor/colorizer/builtin.js +33 -46
- package/lib/processor/colorizer/index.d.ts +2 -2
- package/lib/processor/colorizer/index.js +2 -31
- package/lib/processor/completer/Completer.d.ts +4 -4
- package/lib/processor/completer/Completer.js +14 -33
- package/lib/processor/completer/builtin.d.ts +7 -7
- package/lib/processor/completer/builtin.js +46 -62
- package/lib/processor/completer/index.d.ts +2 -2
- package/lib/processor/completer/index.js +2 -31
- package/lib/processor/formatter/Formatter.d.ts +2 -2
- package/lib/processor/formatter/Formatter.js +2 -7
- package/lib/processor/formatter/builtin.d.ts +3 -3
- package/lib/processor/formatter/builtin.js +22 -36
- package/lib/processor/formatter/index.d.ts +2 -2
- package/lib/processor/formatter/index.js +2 -31
- package/lib/processor/index.d.ts +9 -9
- package/lib/processor/index.js +9 -25
- package/lib/processor/linter/Linter.d.ts +2 -2
- package/lib/processor/linter/Linter.js +1 -2
- package/lib/processor/linter/builtin/undeclaredSymbol.d.ts +2 -2
- package/lib/processor/linter/builtin/undeclaredSymbol.js +20 -24
- package/lib/processor/linter/builtin.d.ts +3 -3
- package/lib/processor/linter/builtin.js +19 -26
- package/lib/processor/linter/index.d.ts +2 -2
- package/lib/processor/linter/index.js +2 -31
- package/lib/processor/util.d.ts +2 -2
- package/lib/processor/util.js +4 -9
- package/lib/service/CacheService.d.ts +6 -6
- package/lib/service/CacheService.js +32 -56
- package/lib/service/Config.d.ts +11 -12
- package/lib/service/Config.js +50 -45
- package/lib/service/Context.d.ts +13 -13
- package/lib/service/Context.js +29 -32
- package/lib/service/Dependency.js +2 -5
- package/lib/service/Downloader.d.ts +10 -40
- package/lib/service/Downloader.js +37 -110
- package/lib/service/ErrorReporter.d.ts +2 -2
- package/lib/service/ErrorReporter.js +10 -14
- package/lib/service/FileService.d.ts +16 -14
- package/lib/service/FileService.js +55 -92
- package/lib/service/Hover.d.ts +2 -2
- package/lib/service/Hover.js +4 -7
- package/lib/service/Logger.js +2 -5
- package/lib/service/MetaRegistry.d.ts +12 -12
- package/lib/service/MetaRegistry.js +62 -73
- package/lib/service/Operations.js +3 -9
- package/lib/service/Profiler.d.ts +1 -1
- package/lib/service/Profiler.js +25 -41
- package/lib/service/Project.d.ts +47 -51
- package/lib/service/Project.js +199 -239
- package/lib/service/Service.d.ts +17 -27
- package/lib/service/Service.js +37 -43
- package/lib/service/SymbolLocations.d.ts +3 -3
- package/lib/service/SymbolLocations.js +4 -7
- package/lib/service/SymbolRegistrar.d.ts +1 -1
- package/lib/service/SymbolRegistrar.js +1 -2
- package/lib/service/fileUtil.d.ts +15 -45
- package/lib/service/fileUtil.js +38 -143
- package/lib/service/index.d.ts +17 -17
- package/lib/service/index.js +17 -35
- package/lib/source/IndexMap.d.ts +1 -1
- package/lib/source/IndexMap.js +7 -10
- package/lib/source/LanguageError.d.ts +2 -2
- package/lib/source/LanguageError.js +2 -5
- package/lib/source/Location.d.ts +3 -3
- package/lib/source/Location.js +6 -9
- package/lib/source/Offset.d.ts +1 -1
- package/lib/source/Offset.js +4 -7
- package/lib/source/Position.js +2 -5
- package/lib/source/PositionRange.d.ts +2 -2
- package/lib/source/PositionRange.js +14 -17
- package/lib/source/Range.d.ts +1 -1
- package/lib/source/Range.js +7 -10
- package/lib/source/Source.d.ts +3 -3
- package/lib/source/Source.js +28 -29
- package/lib/source/index.d.ts +8 -8
- package/lib/source/index.js +8 -24
- package/lib/symbol/Symbol.d.ts +2 -2
- package/lib/symbol/Symbol.js +49 -65
- package/lib/symbol/SymbolUtil.d.ts +22 -25
- package/lib/symbol/SymbolUtil.js +150 -151
- package/lib/symbol/UriBinder.d.ts +1 -1
- package/lib/symbol/UriBinder.js +1 -2
- package/lib/symbol/index.d.ts +3 -3
- package/lib/symbol/index.js +3 -19
- package/package.json +7 -4
package/lib/parser/string.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const source_1 = require("../source");
|
|
8
|
-
const Parser_1 = require("./Parser");
|
|
9
|
-
function string(options) {
|
|
1
|
+
import { localeQuote, localize } from '@spyglassmc/locales';
|
|
2
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import { EscapeChar, EscapeTable } from '../node/index.js';
|
|
4
|
+
import { Range, Source } from '../source/index.js';
|
|
5
|
+
import { Failure } from './Parser.js';
|
|
6
|
+
export function string(options) {
|
|
10
7
|
return (src, ctx) => {
|
|
11
8
|
const ans = {
|
|
12
9
|
type: 'string',
|
|
13
|
-
range:
|
|
10
|
+
range: Range.create(src),
|
|
14
11
|
options,
|
|
15
12
|
value: '',
|
|
16
13
|
valueMap: [],
|
|
@@ -25,39 +22,39 @@ function string(options) {
|
|
|
25
22
|
const cStart = src.cursor;
|
|
26
23
|
src.skip();
|
|
27
24
|
const c2 = src.read();
|
|
28
|
-
if (c2 === '\\' || c2 === currentQuote ||
|
|
25
|
+
if (c2 === '\\' || c2 === currentQuote || EscapeChar.is(options.escapable.characters, c2)) {
|
|
29
26
|
ans.valueMap.push({
|
|
30
|
-
inner:
|
|
31
|
-
outer:
|
|
27
|
+
inner: Range.create(ans.value.length, ans.value.length + 1),
|
|
28
|
+
outer: Range.create(cStart, src),
|
|
32
29
|
});
|
|
33
|
-
ans.value +=
|
|
30
|
+
ans.value += EscapeTable.get(c2);
|
|
34
31
|
}
|
|
35
32
|
else if (options.escapable.unicode && c2 === 'u') {
|
|
36
33
|
const hex = src.peek(4);
|
|
37
34
|
if (/^[0-9a-f]{4}$/i.test(hex)) {
|
|
38
35
|
src.skip(4);
|
|
39
36
|
ans.valueMap.push({
|
|
40
|
-
inner:
|
|
41
|
-
outer:
|
|
37
|
+
inner: Range.create(ans.value.length, ans.value.length + 1),
|
|
38
|
+
outer: Range.create(cStart, src),
|
|
42
39
|
});
|
|
43
40
|
ans.value += String.fromCharCode(parseInt(hex, 16));
|
|
44
41
|
}
|
|
45
42
|
else {
|
|
46
|
-
ctx.err.report(
|
|
43
|
+
ctx.err.report(localize('parser.string.illegal-unicode-escape'), Range.create(src, src.getCharRange(3).end));
|
|
47
44
|
ans.valueMap.push({
|
|
48
|
-
inner:
|
|
49
|
-
outer:
|
|
45
|
+
inner: Range.create(ans.value.length, ans.value.length + 1),
|
|
46
|
+
outer: Range.create(cStart, src),
|
|
50
47
|
});
|
|
51
48
|
ans.value += c2;
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
else {
|
|
55
52
|
if (!options.escapable.allowUnknown) {
|
|
56
|
-
ctx.err.report(
|
|
53
|
+
ctx.err.report(localize('parser.string.illegal-escape', localeQuote(c2)), src.getCharRange(-1));
|
|
57
54
|
}
|
|
58
55
|
ans.valueMap.push({
|
|
59
|
-
inner:
|
|
60
|
-
outer:
|
|
56
|
+
inner: Range.create(ans.value.length, ans.value.length + 1),
|
|
57
|
+
outer: Range.create(cStart, src),
|
|
61
58
|
});
|
|
62
59
|
ans.value += c2;
|
|
63
60
|
}
|
|
@@ -68,10 +65,10 @@ function string(options) {
|
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
if (!src.trySkip(currentQuote)) {
|
|
71
|
-
ctx.err.report(
|
|
68
|
+
ctx.err.report(localize('expected', localeQuote(currentQuote)), src);
|
|
72
69
|
}
|
|
73
70
|
if (!options.quotes.includes(currentQuote)) {
|
|
74
|
-
ctx.err.report(
|
|
71
|
+
ctx.err.report(localize('parser.string.illegal-quote', options.quotes), ans);
|
|
75
72
|
}
|
|
76
73
|
start = contentStart;
|
|
77
74
|
}
|
|
@@ -80,17 +77,17 @@ function string(options) {
|
|
|
80
77
|
ans.value += src.read();
|
|
81
78
|
}
|
|
82
79
|
if (!ans.value && !options.unquotable.allowEmpty) {
|
|
83
|
-
ctx.err.report(
|
|
80
|
+
ctx.err.report(localize('expected', localize('string')), src);
|
|
84
81
|
}
|
|
85
82
|
}
|
|
86
83
|
else {
|
|
87
|
-
ctx.err.report(
|
|
84
|
+
ctx.err.report(localize('expected', options.quotes), src);
|
|
88
85
|
}
|
|
89
|
-
ans.valueMap.unshift({ inner:
|
|
86
|
+
ans.valueMap.unshift({ inner: Range.create(0), outer: Range.create(start) });
|
|
90
87
|
if (options.value?.parser) {
|
|
91
88
|
const valueResult = parseStringValue(options.value.parser, ans.value, ans.valueMap, ctx);
|
|
92
89
|
/* istanbul ignore else */
|
|
93
|
-
if (valueResult !==
|
|
90
|
+
if (valueResult !== Failure) {
|
|
94
91
|
ans.children = [valueResult];
|
|
95
92
|
}
|
|
96
93
|
}
|
|
@@ -98,34 +95,31 @@ function string(options) {
|
|
|
98
95
|
return ans;
|
|
99
96
|
};
|
|
100
97
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const valueSrc = new source_1.Source(value, map);
|
|
98
|
+
export function parseStringValue(parser, value, map, ctx) {
|
|
99
|
+
const valueSrc = new Source(value, map);
|
|
104
100
|
const valueCtx = {
|
|
105
101
|
...ctx,
|
|
106
|
-
doc:
|
|
102
|
+
doc: TextDocument.create(ctx.doc.uri, ctx.doc.languageId, ctx.doc.version, value),
|
|
107
103
|
};
|
|
108
104
|
// TODO: Mark trailing string as errors.
|
|
109
105
|
return parser(valueSrc, valueCtx);
|
|
110
106
|
}
|
|
111
|
-
|
|
112
|
-
exports.BrigadierUnquotableCharacters = Object.freeze([
|
|
107
|
+
export const BrigadierUnquotableCharacters = Object.freeze([
|
|
113
108
|
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
|
114
109
|
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
|
115
110
|
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
|
116
111
|
'_', '.', '+', '-',
|
|
117
112
|
]);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
113
|
+
export const BrigadierUnquotableCharacterSet = new Set(BrigadierUnquotableCharacters);
|
|
114
|
+
export const BrigadierUnquotablePattern = /^[0-9A-Za-z_\.\+\-]*$/;
|
|
115
|
+
export const BrigadierUnquotableOption = { allowEmpty: true, allowList: BrigadierUnquotableCharacterSet };
|
|
116
|
+
export const BrigadierStringOptions = {
|
|
122
117
|
escapable: {},
|
|
123
118
|
quotes: ['"', "'"],
|
|
124
|
-
unquotable:
|
|
119
|
+
unquotable: BrigadierUnquotableOption,
|
|
125
120
|
};
|
|
126
|
-
|
|
127
|
-
function isAllowedCharacter(c, options) {
|
|
121
|
+
export const brigadierString = string(BrigadierStringOptions);
|
|
122
|
+
export function isAllowedCharacter(c, options) {
|
|
128
123
|
return options.allowList?.has(c) ?? !options.blockList?.has(c);
|
|
129
124
|
}
|
|
130
|
-
exports.isAllowedCharacter = isAllowedCharacter;
|
|
131
125
|
//# sourceMappingURL=string.js.map
|
package/lib/parser/symbol.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SymbolNode, SymbolOptions } from '../node/SymbolNode';
|
|
2
|
-
import type { AllCategory } from '../symbol';
|
|
3
|
-
import type { InfallibleParser } from './Parser';
|
|
1
|
+
import type { SymbolNode, SymbolOptions } from '../node/SymbolNode.js';
|
|
2
|
+
import type { AllCategory } from '../symbol/index.js';
|
|
3
|
+
import type { InfallibleParser } from './Parser.js';
|
|
4
4
|
/**
|
|
5
5
|
* This parser reads _everything_ until the end of the {@link Source}.
|
|
6
6
|
*
|
package/lib/parser/symbol.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.symbol = void 0;
|
|
4
|
-
const source_1 = require("../source");
|
|
5
|
-
function symbol(param) {
|
|
1
|
+
import { Range } from '../source/index.js';
|
|
2
|
+
export function symbol(param) {
|
|
6
3
|
const options = getOptions(param);
|
|
7
4
|
return (src, ctx) => {
|
|
8
5
|
const ans = {
|
|
9
6
|
type: 'symbol',
|
|
10
|
-
range:
|
|
7
|
+
range: Range.create(src),
|
|
11
8
|
options,
|
|
12
9
|
value: src.readRemaining(),
|
|
13
10
|
};
|
|
@@ -21,7 +18,6 @@ function symbol(param) {
|
|
|
21
18
|
return ans;
|
|
22
19
|
};
|
|
23
20
|
}
|
|
24
|
-
exports.symbol = symbol;
|
|
25
21
|
function getOptions(param) {
|
|
26
22
|
if (typeof param === 'string') {
|
|
27
23
|
return { category: param };
|
package/lib/parser/util.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { AstNode } from '../node';
|
|
2
|
-
import { SequenceUtil } from '../node';
|
|
3
|
-
import type { ParserContext } from '../service';
|
|
4
|
-
import type { ErrorSeverity, ReadonlySource, Source } from '../source';
|
|
5
|
-
import type { InfallibleParser, Parser, Result, Returnable } from './Parser';
|
|
1
|
+
import type { AstNode } from '../node/index.js';
|
|
2
|
+
import { SequenceUtil } from '../node/index.js';
|
|
3
|
+
import type { ParserContext } from '../service/index.js';
|
|
4
|
+
import type { ErrorSeverity, ReadonlySource, Source } from '../source/index.js';
|
|
5
|
+
import type { InfallibleParser, Parser, Result, Returnable } from './Parser.js';
|
|
6
6
|
declare type ExtractNodeType<P extends Parser<Returnable>> = P extends Parser<infer V> ? V : never;
|
|
7
7
|
/**
|
|
8
8
|
* @template PA Parser array.
|
package/lib/parser/util.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const source_1 = require("../source");
|
|
7
|
-
const Parser_1 = require("./Parser");
|
|
8
|
-
function attempt(parser, src, ctx) {
|
|
1
|
+
import { SequenceUtil, SequenceUtilDiscriminator } from '../node/index.js';
|
|
2
|
+
import { ErrorReporter } from '../service/index.js';
|
|
3
|
+
import { Range } from '../source/index.js';
|
|
4
|
+
import { Failure } from './Parser.js';
|
|
5
|
+
export function attempt(parser, src, ctx) {
|
|
9
6
|
const tmpSrc = src.clone();
|
|
10
7
|
const tmpCtx = {
|
|
11
8
|
...ctx,
|
|
12
|
-
err: new
|
|
9
|
+
err: new ErrorReporter(),
|
|
13
10
|
symbols: ctx.symbols.clone(),
|
|
14
11
|
};
|
|
15
12
|
const result = parser(tmpSrc, tmpCtx);
|
|
@@ -24,13 +21,12 @@ function attempt(parser, src, ctx) {
|
|
|
24
21
|
},
|
|
25
22
|
};
|
|
26
23
|
}
|
|
27
|
-
|
|
28
|
-
function sequence(parsers, parseGap) {
|
|
24
|
+
export function sequence(parsers, parseGap) {
|
|
29
25
|
return (src, ctx) => {
|
|
30
26
|
const ans = {
|
|
31
|
-
[
|
|
27
|
+
[SequenceUtilDiscriminator]: true,
|
|
32
28
|
children: [],
|
|
33
|
-
range:
|
|
29
|
+
range: Range.create(src),
|
|
34
30
|
};
|
|
35
31
|
for (const [i, p] of parsers.entries()) {
|
|
36
32
|
const parser = typeof p === 'function' ? p : p.get(ans);
|
|
@@ -41,13 +37,13 @@ function sequence(parsers, parseGap) {
|
|
|
41
37
|
ans.children.push(...parseGap(src, ctx));
|
|
42
38
|
}
|
|
43
39
|
const result = parser(src, ctx);
|
|
44
|
-
if (result ===
|
|
45
|
-
return
|
|
40
|
+
if (result === Failure) {
|
|
41
|
+
return Failure;
|
|
46
42
|
}
|
|
47
43
|
else if (result === undefined) {
|
|
48
44
|
continue;
|
|
49
45
|
}
|
|
50
|
-
else if (
|
|
46
|
+
else if (SequenceUtil.is(result)) {
|
|
51
47
|
ans.children.push(...result.children);
|
|
52
48
|
}
|
|
53
49
|
else {
|
|
@@ -58,24 +54,23 @@ function sequence(parsers, parseGap) {
|
|
|
58
54
|
return ans;
|
|
59
55
|
};
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
function repeat(parser, parseGap) {
|
|
57
|
+
export function repeat(parser, parseGap) {
|
|
63
58
|
return (src, ctx) => {
|
|
64
59
|
const ans = {
|
|
65
|
-
[
|
|
60
|
+
[SequenceUtilDiscriminator]: true,
|
|
66
61
|
children: [],
|
|
67
|
-
range:
|
|
62
|
+
range: Range.create(src),
|
|
68
63
|
};
|
|
69
64
|
while (src.canRead()) {
|
|
70
65
|
if (parseGap) {
|
|
71
66
|
ans.children.push(...parseGap(src, ctx));
|
|
72
67
|
}
|
|
73
68
|
const { result, updateSrcAndCtx } = attempt(parser, src, ctx);
|
|
74
|
-
if (result ===
|
|
69
|
+
if (result === Failure) {
|
|
75
70
|
break;
|
|
76
71
|
}
|
|
77
72
|
updateSrcAndCtx();
|
|
78
|
-
if (
|
|
73
|
+
if (SequenceUtil.is(result)) {
|
|
79
74
|
ans.children.push(...result.children);
|
|
80
75
|
}
|
|
81
76
|
else {
|
|
@@ -86,18 +81,17 @@ function repeat(parser, parseGap) {
|
|
|
86
81
|
return ans;
|
|
87
82
|
};
|
|
88
83
|
}
|
|
89
|
-
|
|
90
|
-
function any(parsers, out) {
|
|
84
|
+
export function any(parsers, out) {
|
|
91
85
|
return (src, ctx) => {
|
|
92
86
|
const results = parsers
|
|
93
87
|
.map((parser, i) => ({ attempt: attempt(parser, src, ctx), index: i }))
|
|
94
|
-
.filter(({ attempt }) => attempt.result !==
|
|
88
|
+
.filter(({ attempt }) => attempt.result !== Failure)
|
|
95
89
|
.sort((a, b) => (b.attempt.endCursor - a.attempt.endCursor) || (a.attempt.errorAmount - b.attempt.errorAmount));
|
|
96
90
|
if (results.length === 0) {
|
|
97
91
|
if (out) {
|
|
98
92
|
out.index = -1;
|
|
99
93
|
}
|
|
100
|
-
return
|
|
94
|
+
return Failure;
|
|
101
95
|
}
|
|
102
96
|
results[0].attempt.updateSrcAndCtx();
|
|
103
97
|
if (out) {
|
|
@@ -106,11 +100,10 @@ function any(parsers, out) {
|
|
|
106
100
|
return results[0].attempt.result;
|
|
107
101
|
};
|
|
108
102
|
}
|
|
109
|
-
exports.any = any;
|
|
110
103
|
/**
|
|
111
104
|
* @returns A parser that fails when the passed-in parser didn't move the cursor at all.
|
|
112
105
|
*/
|
|
113
|
-
function failOnEmpty(parser) {
|
|
106
|
+
export function failOnEmpty(parser) {
|
|
114
107
|
return (src, ctx) => {
|
|
115
108
|
const start = src.cursor;
|
|
116
109
|
const { endCursor, updateSrcAndCtx, result } = attempt(parser, src, ctx);
|
|
@@ -118,14 +111,13 @@ function failOnEmpty(parser) {
|
|
|
118
111
|
updateSrcAndCtx();
|
|
119
112
|
return result;
|
|
120
113
|
}
|
|
121
|
-
return
|
|
114
|
+
return Failure;
|
|
122
115
|
};
|
|
123
116
|
}
|
|
124
|
-
exports.failOnEmpty = failOnEmpty;
|
|
125
117
|
/**
|
|
126
118
|
* @returns A parser that fails when the passed-in parser produced any errors.
|
|
127
119
|
*/
|
|
128
|
-
function failOnError(parser) {
|
|
120
|
+
export function failOnError(parser) {
|
|
129
121
|
return (src, ctx) => {
|
|
130
122
|
const start = src.cursor;
|
|
131
123
|
const { errorAmount, updateSrcAndCtx, result } = attempt(parser, src, ctx);
|
|
@@ -133,14 +125,13 @@ function failOnError(parser) {
|
|
|
133
125
|
updateSrcAndCtx();
|
|
134
126
|
return result;
|
|
135
127
|
}
|
|
136
|
-
return
|
|
128
|
+
return Failure;
|
|
137
129
|
};
|
|
138
130
|
}
|
|
139
|
-
|
|
140
|
-
function optional(parser) {
|
|
131
|
+
export function optional(parser) {
|
|
141
132
|
return ((src, ctx) => {
|
|
142
133
|
const { result, updateSrcAndCtx } = attempt(parser, src, ctx);
|
|
143
|
-
if (result ===
|
|
134
|
+
if (result === Failure) {
|
|
144
135
|
return undefined;
|
|
145
136
|
}
|
|
146
137
|
else {
|
|
@@ -149,19 +140,17 @@ function optional(parser) {
|
|
|
149
140
|
}
|
|
150
141
|
});
|
|
151
142
|
}
|
|
152
|
-
|
|
153
|
-
function recover(parser, defaultValue) {
|
|
143
|
+
export function recover(parser, defaultValue) {
|
|
154
144
|
return (src, ctx) => {
|
|
155
145
|
const result = parser(src, ctx);
|
|
156
|
-
if (result ===
|
|
146
|
+
if (result === Failure) {
|
|
157
147
|
const ans = defaultValue(src, ctx);
|
|
158
148
|
return ans;
|
|
159
149
|
}
|
|
160
150
|
return result;
|
|
161
151
|
};
|
|
162
152
|
}
|
|
163
|
-
|
|
164
|
-
function select(cases) {
|
|
153
|
+
export function select(cases) {
|
|
165
154
|
return (src, ctx) => {
|
|
166
155
|
for (const { predicate, prefix, parser } of cases) {
|
|
167
156
|
if (predicate?.(src) ?? (prefix !== undefined ? src.tryPeek(prefix) : undefined) ?? true) {
|
|
@@ -172,31 +161,28 @@ function select(cases) {
|
|
|
172
161
|
throw new Error('The select parser util was called with non-exhaustive cases');
|
|
173
162
|
};
|
|
174
163
|
}
|
|
175
|
-
|
|
176
|
-
function map(parser, fn) {
|
|
164
|
+
export function map(parser, fn) {
|
|
177
165
|
return (src, ctx) => {
|
|
178
166
|
const result = parser(src, ctx);
|
|
179
|
-
if (result ===
|
|
180
|
-
return
|
|
167
|
+
if (result === Failure) {
|
|
168
|
+
return Failure;
|
|
181
169
|
}
|
|
182
170
|
const ans = fn(result, src, ctx);
|
|
183
171
|
return ans;
|
|
184
172
|
};
|
|
185
173
|
}
|
|
186
|
-
|
|
187
|
-
function setType(type, parser) {
|
|
174
|
+
export function setType(type, parser) {
|
|
188
175
|
return map(parser, res => {
|
|
189
176
|
const { type: _type, ...restResult } = res;
|
|
190
177
|
const ans = {
|
|
191
178
|
type,
|
|
192
179
|
...restResult,
|
|
193
180
|
};
|
|
194
|
-
delete ans[
|
|
181
|
+
delete ans[SequenceUtilDiscriminator];
|
|
195
182
|
return ans;
|
|
196
183
|
});
|
|
197
184
|
}
|
|
198
|
-
|
|
199
|
-
function validate(parser, validator, message, severity) {
|
|
185
|
+
export function validate(parser, validator, message, severity) {
|
|
200
186
|
return map(parser, (res, src, ctx) => {
|
|
201
187
|
const isLegal = validator(res, src, ctx);
|
|
202
188
|
if (!isLegal) {
|
|
@@ -205,8 +191,7 @@ function validate(parser, validator, message, severity) {
|
|
|
205
191
|
return res;
|
|
206
192
|
});
|
|
207
193
|
}
|
|
208
|
-
|
|
209
|
-
function stopBefore(parser, ...teminators) {
|
|
194
|
+
export function stopBefore(parser, ...teminators) {
|
|
210
195
|
const flatTerminators = teminators.flat();
|
|
211
196
|
return (src, ctx) => {
|
|
212
197
|
const tmpSrc = src.clone();
|
|
@@ -220,8 +205,7 @@ function stopBefore(parser, ...teminators) {
|
|
|
220
205
|
return ans;
|
|
221
206
|
};
|
|
222
207
|
}
|
|
223
|
-
|
|
224
|
-
function acceptOnly(parser, ...characters) {
|
|
208
|
+
export function acceptOnly(parser, ...characters) {
|
|
225
209
|
const set = new Set(characters.flat());
|
|
226
210
|
return (src, ctx) => {
|
|
227
211
|
const tmpSrc = src.clone();
|
|
@@ -237,8 +221,7 @@ function acceptOnly(parser, ...characters) {
|
|
|
237
221
|
return ans;
|
|
238
222
|
};
|
|
239
223
|
}
|
|
240
|
-
|
|
241
|
-
function acceptIf(parser, predicate) {
|
|
224
|
+
export function acceptIf(parser, predicate) {
|
|
242
225
|
return ((src, ctx) => {
|
|
243
226
|
const tmpSrc = src.clone();
|
|
244
227
|
// Cut tmpSrc.string before the nearest unacceptable character.
|
|
@@ -253,5 +236,4 @@ function acceptIf(parser, predicate) {
|
|
|
253
236
|
return ans;
|
|
254
237
|
});
|
|
255
238
|
}
|
|
256
|
-
exports.acceptIf = acceptIf;
|
|
257
239
|
//# sourceMappingURL=util.js.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ColorPresentation = exports.ColorFormat = exports.Color = void 0;
|
|
4
|
-
var Color;
|
|
1
|
+
export var Color;
|
|
5
2
|
(function (Color) {
|
|
6
3
|
Color.NamedColors = new Map([
|
|
7
4
|
['aqua', 0x55ffff],
|
|
@@ -75,8 +72,8 @@ var Color;
|
|
|
75
72
|
return fromIntRGB(r, g, b);
|
|
76
73
|
}
|
|
77
74
|
Color.fromCompositeInt = fromCompositeInt;
|
|
78
|
-
})(Color
|
|
79
|
-
var ColorFormat;
|
|
75
|
+
})(Color || (Color = {}));
|
|
76
|
+
export var ColorFormat;
|
|
80
77
|
(function (ColorFormat) {
|
|
81
78
|
/**
|
|
82
79
|
* `1 0.6 0.2 1.0`
|
|
@@ -106,8 +103,8 @@ var ColorFormat;
|
|
|
106
103
|
* `16620441`
|
|
107
104
|
*/
|
|
108
105
|
ColorFormat[ColorFormat["CompositeInt"] = 6] = "CompositeInt";
|
|
109
|
-
})(ColorFormat
|
|
110
|
-
var ColorPresentation;
|
|
106
|
+
})(ColorFormat || (ColorFormat = {}));
|
|
107
|
+
export var ColorPresentation;
|
|
111
108
|
(function (ColorPresentation) {
|
|
112
109
|
function fromColorFormat(format, color, range) {
|
|
113
110
|
const presentation = colorPresentation(format, color);
|
|
@@ -137,5 +134,5 @@ var ColorPresentation;
|
|
|
137
134
|
return `${Math.round((color[0] * 255 << 16) + (color[1] * 255 << 8) + color[2] * 255)}`;
|
|
138
135
|
}
|
|
139
136
|
}
|
|
140
|
-
})(ColorPresentation
|
|
137
|
+
})(ColorPresentation || (ColorPresentation = {}));
|
|
141
138
|
//# sourceMappingURL=ColorInfoProvider.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AstNode } from '../node';
|
|
2
|
-
import type { ProcessorContext } from '../service';
|
|
1
|
+
import type { AstNode } from '../node/index.js';
|
|
2
|
+
import type { ProcessorContext } from '../service/index.js';
|
|
3
3
|
export interface InlayHint {
|
|
4
4
|
offset: number;
|
|
5
5
|
text: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AstNode } from '../node';
|
|
2
|
-
import type { SignatureHelpProviderContext } from '../service';
|
|
1
|
+
import type { AstNode } from '../node/index.js';
|
|
2
|
+
import type { SignatureHelpProviderContext } from '../service/index.js';
|
|
3
3
|
export interface SignatureHelp {
|
|
4
4
|
signatures: SignatureInfo[];
|
|
5
5
|
activeSignature: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AstNode } from '../../node';
|
|
2
|
-
import type { CheckerContext } from '../../service';
|
|
1
|
+
import type { AstNode } from '../../node/index.js';
|
|
2
|
+
import type { CheckerContext } from '../../service/index.js';
|
|
3
3
|
export declare type Checker<N extends AstNode> = (node: N, ctx: CheckerContext) => PromiseLike<void> | void;
|
|
4
4
|
export declare type SyncChecker<N extends AstNode> = (node: N, ctx: CheckerContext) => void;
|
|
5
5
|
export declare type AsyncChecker<N extends AstNode> = (node: N, ctx: CheckerContext) => PromiseLike<void>;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FallbackChecker = void 0;
|
|
4
1
|
/* istanbul ignore next */
|
|
5
|
-
const FallbackChecker = () => Promise.resolve();
|
|
6
|
-
exports.FallbackChecker = FallbackChecker;
|
|
2
|
+
export const FallbackChecker = () => Promise.resolve();
|
|
7
3
|
//# sourceMappingURL=Checker.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AstNode, SymbolBaseNode } from '../../node';
|
|
2
|
-
import { ResourceLocationNode } from '../../node';
|
|
3
|
-
import type { CheckerContext, MetaRegistry } from '../../service';
|
|
4
|
-
import type { Checker, SyncChecker } from './Checker';
|
|
1
|
+
import type { AstNode, SymbolBaseNode } from '../../node/index.js';
|
|
2
|
+
import { ResourceLocationNode } from '../../node/index.js';
|
|
3
|
+
import type { CheckerContext, MetaRegistry } from '../../service/index.js';
|
|
4
|
+
import type { Checker, SyncChecker } from './Checker.js';
|
|
5
5
|
export declare type AttemptResult = {
|
|
6
6
|
errorAmount: number;
|
|
7
7
|
totalErrorSpan: number;
|