@jsprismarine/brigadier 0.2.1 → 0.3.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/CHANGELOG.md +29 -0
- package/LICENSE +21 -21
- package/README.md +85 -81
- package/dist/CommandSyntaxException-BKBHJvxr.cjs +173 -0
- package/dist/CommandSyntaxException-Dz8Qlq9d.js +168 -0
- package/dist/LiteralArgumentBuilder-2hpX2C86.js +121 -0
- package/dist/LiteralArgumentBuilder-s6PUMmST.cjs +125 -0
- package/dist/RequiredArgumentBuilder-D105occO.js +144 -0
- package/dist/RequiredArgumentBuilder-DMJ4kl0u.cjs +148 -0
- package/dist/index.cjs.js +63 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +31 -0
- package/dist/lib/AmbiguityConsumer.cjs.js +3 -0
- package/dist/lib/AmbiguityConsumer.d.ts +6 -0
- package/dist/lib/AmbiguityConsumer.d.ts.map +1 -0
- package/dist/lib/AmbiguityConsumer.es.js +2 -0
- package/dist/lib/Command.cjs.js +3 -0
- package/dist/lib/Command.d.ts +6 -0
- package/dist/lib/Command.d.ts.map +1 -0
- package/dist/lib/Command.es.js +2 -0
- package/dist/lib/CommandDispatcher.cjs.js +369 -0
- package/dist/lib/CommandDispatcher.d.ts +31 -0
- package/dist/lib/CommandDispatcher.d.ts.map +1 -0
- package/dist/lib/CommandDispatcher.es.js +365 -0
- package/dist/lib/ImmutableStringReader.cjs.js +3 -0
- package/dist/lib/ImmutableStringReader.d.ts +13 -0
- package/dist/lib/ImmutableStringReader.d.ts.map +1 -0
- package/dist/lib/ImmutableStringReader.es.js +2 -0
- package/dist/lib/LiteralMessage.cjs.js +19 -0
- package/dist/lib/LiteralMessage.d.ts +9 -0
- package/dist/lib/LiteralMessage.d.ts.map +1 -0
- package/dist/lib/LiteralMessage.es.js +15 -0
- package/dist/lib/Message.cjs.js +3 -0
- package/dist/lib/Message.d.ts +4 -0
- package/dist/lib/Message.d.ts.map +1 -0
- package/dist/lib/Message.es.js +2 -0
- package/dist/lib/ParseResults.cjs.js +30 -0
- package/dist/lib/ParseResults.d.ts +15 -0
- package/dist/lib/ParseResults.d.ts.map +1 -0
- package/dist/lib/ParseResults.es.js +26 -0
- package/dist/lib/Predicate.cjs.js +3 -0
- package/dist/lib/Predicate.d.ts +4 -0
- package/dist/lib/Predicate.d.ts.map +1 -0
- package/dist/lib/Predicate.es.js +2 -0
- package/dist/lib/RedirectModifier.cjs.js +3 -0
- package/dist/lib/RedirectModifier.d.ts +6 -0
- package/dist/lib/RedirectModifier.d.ts.map +1 -0
- package/dist/lib/RedirectModifier.es.js +2 -0
- package/dist/lib/ResultConsumer.cjs.js +3 -0
- package/dist/lib/ResultConsumer.d.ts +6 -0
- package/dist/lib/ResultConsumer.d.ts.map +1 -0
- package/dist/lib/ResultConsumer.es.js +2 -0
- package/dist/lib/SingleRedirectModifier.cjs.js +3 -0
- package/dist/lib/SingleRedirectModifier.d.ts +6 -0
- package/dist/lib/SingleRedirectModifier.d.ts.map +1 -0
- package/dist/lib/SingleRedirectModifier.es.js +2 -0
- package/dist/lib/StringReader.cjs.js +164 -0
- package/dist/lib/StringReader.d.ts +29 -0
- package/dist/lib/StringReader.d.ts.map +1 -0
- package/dist/lib/StringReader.es.js +160 -0
- package/dist/lib/arguments/ArgumentType.cjs.js +23 -0
- package/dist/lib/arguments/ArgumentType.d.ts +23 -0
- package/dist/lib/arguments/ArgumentType.d.ts.map +1 -0
- package/dist/lib/arguments/ArgumentType.es.js +19 -0
- package/dist/lib/arguments/BoolArgumentType.cjs.js +33 -0
- package/dist/lib/arguments/BoolArgumentType.d.ts +15 -0
- package/dist/lib/arguments/BoolArgumentType.d.ts.map +1 -0
- package/dist/lib/arguments/BoolArgumentType.es.js +29 -0
- package/dist/lib/arguments/FloatArgumentType.cjs.js +71 -0
- package/dist/lib/arguments/FloatArgumentType.d.ts +18 -0
- package/dist/lib/arguments/FloatArgumentType.d.ts.map +1 -0
- package/dist/lib/arguments/FloatArgumentType.es.js +67 -0
- package/dist/lib/arguments/IntegerArgumentType.cjs.js +71 -0
- package/dist/lib/arguments/IntegerArgumentType.d.ts +18 -0
- package/dist/lib/arguments/IntegerArgumentType.d.ts.map +1 -0
- package/dist/lib/arguments/IntegerArgumentType.es.js +67 -0
- package/dist/lib/arguments/StringArgumentType.cjs.js +73 -0
- package/dist/lib/arguments/StringArgumentType.d.ts +23 -0
- package/dist/lib/arguments/StringArgumentType.d.ts.map +1 -0
- package/dist/lib/arguments/StringArgumentType.es.js +68 -0
- package/dist/lib/builder/ArgumentBuilder.cjs.js +72 -0
- package/dist/lib/builder/ArgumentBuilder.d.ts +30 -0
- package/dist/lib/builder/ArgumentBuilder.d.ts.map +1 -0
- package/dist/lib/builder/ArgumentBuilder.es.js +68 -0
- package/dist/lib/builder/LiteralArgumentBuilder.cjs.js +20 -0
- package/dist/lib/builder/LiteralArgumentBuilder.d.ts +13 -0
- package/dist/lib/builder/LiteralArgumentBuilder.d.ts.map +1 -0
- package/dist/lib/builder/LiteralArgumentBuilder.es.js +11 -0
- package/dist/lib/builder/RequiredArgumentBuilder.cjs.js +21 -0
- package/dist/lib/builder/RequiredArgumentBuilder.d.ts +20 -0
- package/dist/lib/builder/RequiredArgumentBuilder.d.ts.map +1 -0
- package/dist/lib/builder/RequiredArgumentBuilder.es.js +12 -0
- package/dist/lib/context/CommandContext.cjs.js +117 -0
- package/dist/lib/context/CommandContext.d.ts +35 -0
- package/dist/lib/context/CommandContext.d.ts.map +1 -0
- package/dist/lib/context/CommandContext.es.js +113 -0
- package/dist/lib/context/CommandContextBuilder.cjs.js +142 -0
- package/dist/lib/context/CommandContextBuilder.d.ts +40 -0
- package/dist/lib/context/CommandContextBuilder.d.ts.map +1 -0
- package/dist/lib/context/CommandContextBuilder.es.js +138 -0
- package/dist/lib/context/ParsedArgument.cjs.js +30 -0
- package/dist/lib/context/ParsedArgument.d.ts +11 -0
- package/dist/lib/context/ParsedArgument.d.ts.map +1 -0
- package/dist/lib/context/ParsedArgument.es.js +26 -0
- package/dist/lib/context/ParsedCommandNode.cjs.js +32 -0
- package/dist/lib/context/ParsedCommandNode.d.ts +13 -0
- package/dist/lib/context/ParsedCommandNode.d.ts.map +1 -0
- package/dist/lib/context/ParsedCommandNode.es.js +28 -0
- package/dist/lib/context/StringRange.cjs.js +52 -0
- package/dist/lib/context/StringRange.d.ts +18 -0
- package/dist/lib/context/StringRange.d.ts.map +1 -0
- package/dist/lib/context/StringRange.es.js +48 -0
- package/dist/lib/context/SuggestionContext.cjs.js +15 -0
- package/dist/lib/context/SuggestionContext.d.ts +8 -0
- package/dist/lib/context/SuggestionContext.d.ts.map +1 -0
- package/dist/lib/context/SuggestionContext.es.js +11 -0
- package/dist/lib/exceptions/BuiltInExceptionProvider.cjs.js +3 -0
- package/dist/lib/exceptions/BuiltInExceptionProvider.d.ts +25 -0
- package/dist/lib/exceptions/BuiltInExceptionProvider.d.ts.map +1 -0
- package/dist/lib/exceptions/BuiltInExceptionProvider.es.js +2 -0
- package/dist/lib/exceptions/BuiltInExceptions.cjs.js +11 -0
- package/dist/lib/exceptions/BuiltInExceptions.d.ts +45 -0
- package/dist/lib/exceptions/BuiltInExceptions.d.ts.map +1 -0
- package/dist/lib/exceptions/BuiltInExceptions.es.js +3 -0
- package/dist/lib/exceptions/CommandExceptionType.cjs.js +3 -0
- package/dist/lib/exceptions/CommandExceptionType.d.ts +3 -0
- package/dist/lib/exceptions/CommandExceptionType.d.ts.map +1 -0
- package/dist/lib/exceptions/CommandExceptionType.es.js +2 -0
- package/dist/lib/exceptions/CommandSyntaxException.cjs.js +11 -0
- package/dist/lib/exceptions/CommandSyntaxException.d.ts +21 -0
- package/dist/lib/exceptions/CommandSyntaxException.d.ts.map +1 -0
- package/dist/lib/exceptions/CommandSyntaxException.es.js +3 -0
- package/dist/lib/exceptions/DynamicCommandExceptionType.cjs.js +11 -0
- package/dist/lib/exceptions/DynamicCommandExceptionType.d.ts +12 -0
- package/dist/lib/exceptions/DynamicCommandExceptionType.d.ts.map +1 -0
- package/dist/lib/exceptions/DynamicCommandExceptionType.es.js +3 -0
- package/dist/lib/exceptions/SimpleCommandExceptionType.cjs.js +11 -0
- package/dist/lib/exceptions/SimpleCommandExceptionType.d.ts +13 -0
- package/dist/lib/exceptions/SimpleCommandExceptionType.d.ts.map +1 -0
- package/dist/lib/exceptions/SimpleCommandExceptionType.es.js +3 -0
- package/dist/lib/suggestion/IntegerSuggestion.cjs.js +39 -0
- package/dist/lib/suggestion/IntegerSuggestion.d.ts +14 -0
- package/dist/lib/suggestion/IntegerSuggestion.d.ts.map +1 -0
- package/dist/lib/suggestion/IntegerSuggestion.es.js +35 -0
- package/dist/lib/suggestion/Suggestion.cjs.js +72 -0
- package/dist/lib/suggestion/Suggestion.d.ts +19 -0
- package/dist/lib/suggestion/Suggestion.d.ts.map +1 -0
- package/dist/lib/suggestion/Suggestion.es.js +68 -0
- package/dist/lib/suggestion/SuggestionProvider.cjs.js +3 -0
- package/dist/lib/suggestion/SuggestionProvider.d.ts +8 -0
- package/dist/lib/suggestion/SuggestionProvider.d.ts.map +1 -0
- package/dist/lib/suggestion/SuggestionProvider.es.js +2 -0
- package/dist/lib/suggestion/Suggestions.cjs.js +71 -0
- package/dist/lib/suggestion/Suggestions.d.ts +18 -0
- package/dist/lib/suggestion/Suggestions.d.ts.map +1 -0
- package/dist/lib/suggestion/Suggestions.es.js +67 -0
- package/dist/lib/suggestion/SuggestionsBuilder.cjs.js +59 -0
- package/dist/lib/suggestion/SuggestionsBuilder.d.ts +20 -0
- package/dist/lib/suggestion/SuggestionsBuilder.d.ts.map +1 -0
- package/dist/lib/suggestion/SuggestionsBuilder.es.js +55 -0
- package/dist/lib/tree/ArgumentCommandNode.cjs.js +20 -0
- package/dist/lib/tree/ArgumentCommandNode.d.ts +33 -0
- package/dist/lib/tree/ArgumentCommandNode.d.ts.map +1 -0
- package/dist/lib/tree/ArgumentCommandNode.es.js +12 -0
- package/dist/lib/tree/CommandNode.cjs.js +133 -0
- package/dist/lib/tree/CommandNode.d.ts +47 -0
- package/dist/lib/tree/CommandNode.d.ts.map +1 -0
- package/dist/lib/tree/CommandNode.es.js +129 -0
- package/dist/lib/tree/LiteralCommandNode.cjs.js +19 -0
- package/dist/lib/tree/LiteralCommandNode.d.ts +29 -0
- package/dist/lib/tree/LiteralCommandNode.d.ts.map +1 -0
- package/dist/lib/tree/LiteralCommandNode.es.js +11 -0
- package/dist/lib/tree/RootCommandNode.cjs.js +59 -0
- package/dist/lib/tree/RootCommandNode.d.ts +23 -0
- package/dist/lib/tree/RootCommandNode.d.ts.map +1 -0
- package/dist/lib/tree/RootCommandNode.es.js +55 -0
- package/dist/lib/util/isEqual.cjs.js +59 -0
- package/dist/lib/util/isEqual.d.ts +2 -0
- package/dist/lib/util/isEqual.d.ts.map +1 -0
- package/dist/lib/util/isEqual.es.js +55 -0
- package/package.json +40 -41
- package/dist/index.js +0 -82
- package/dist/index.js.map +0 -1
- package/dist/lib/AmbiguityConsumer.js +0 -3
- package/dist/lib/AmbiguityConsumer.js.map +0 -1
- package/dist/lib/Command.js +0 -3
- package/dist/lib/Command.js.map +0 -1
- package/dist/lib/CommandDispatcher.js +0 -360
- package/dist/lib/CommandDispatcher.js.map +0 -1
- package/dist/lib/ImmutableStringReader.js +0 -3
- package/dist/lib/ImmutableStringReader.js.map +0 -1
- package/dist/lib/LiteralMessage.js +0 -15
- package/dist/lib/LiteralMessage.js.map +0 -1
- package/dist/lib/Message.js +0 -3
- package/dist/lib/Message.js.map +0 -1
- package/dist/lib/ParseResults.js +0 -24
- package/dist/lib/ParseResults.js.map +0 -1
- package/dist/lib/Predicate.js +0 -3
- package/dist/lib/Predicate.js.map +0 -1
- package/dist/lib/RedirectModifier.js +0 -3
- package/dist/lib/RedirectModifier.js.map +0 -1
- package/dist/lib/ResultConsumer.js +0 -3
- package/dist/lib/ResultConsumer.js.map +0 -1
- package/dist/lib/SingleRedirectModifier.js +0 -3
- package/dist/lib/SingleRedirectModifier.js.map +0 -1
- package/dist/lib/StringReader.js +0 -176
- package/dist/lib/StringReader.js.map +0 -1
- package/dist/lib/arguments/ArgumentType.js +0 -19
- package/dist/lib/arguments/ArgumentType.js.map +0 -1
- package/dist/lib/arguments/BoolArgumentType.js +0 -30
- package/dist/lib/arguments/BoolArgumentType.js.map +0 -1
- package/dist/lib/arguments/FloatArgumentType.js +0 -61
- package/dist/lib/arguments/FloatArgumentType.js.map +0 -1
- package/dist/lib/arguments/IntegerArgumentType.js +0 -61
- package/dist/lib/arguments/IntegerArgumentType.js.map +0 -1
- package/dist/lib/arguments/StringArgumentType.js +0 -71
- package/dist/lib/arguments/StringArgumentType.js.map +0 -1
- package/dist/lib/builder/ArgumentBuilder.js +0 -66
- package/dist/lib/builder/ArgumentBuilder.js.map +0 -1
- package/dist/lib/builder/LiteralArgumentBuilder.js +0 -33
- package/dist/lib/builder/LiteralArgumentBuilder.js.map +0 -1
- package/dist/lib/builder/RequiredArgumentBuilder.js +0 -44
- package/dist/lib/builder/RequiredArgumentBuilder.js.map +0 -1
- package/dist/lib/context/CommandContext.js +0 -96
- package/dist/lib/context/CommandContext.js.map +0 -1
- package/dist/lib/context/CommandContextBuilder.js +0 -120
- package/dist/lib/context/CommandContextBuilder.js.map +0 -1
- package/dist/lib/context/ParsedArgument.js +0 -27
- package/dist/lib/context/ParsedArgument.js.map +0 -1
- package/dist/lib/context/ParsedCommandNode.js +0 -27
- package/dist/lib/context/ParsedCommandNode.js.map +0 -1
- package/dist/lib/context/StringRange.js +0 -47
- package/dist/lib/context/StringRange.js.map +0 -1
- package/dist/lib/context/SuggestionContext.js +0 -10
- package/dist/lib/context/SuggestionContext.js.map +0 -1
- package/dist/lib/exceptions/BuiltInExceptionProvider.js +0 -3
- package/dist/lib/exceptions/BuiltInExceptionProvider.js.map +0 -1
- package/dist/lib/exceptions/BuiltInExceptions.js +0 -88
- package/dist/lib/exceptions/BuiltInExceptions.js.map +0 -1
- package/dist/lib/exceptions/CommandExceptionType.js +0 -3
- package/dist/lib/exceptions/CommandExceptionType.js.map +0 -1
- package/dist/lib/exceptions/CommandSyntaxException.js +0 -57
- package/dist/lib/exceptions/CommandSyntaxException.js.map +0 -1
- package/dist/lib/exceptions/DynamicCommandExceptionType.js +0 -20
- package/dist/lib/exceptions/DynamicCommandExceptionType.js.map +0 -1
- package/dist/lib/exceptions/SimpleCommandExceptionType.js +0 -23
- package/dist/lib/exceptions/SimpleCommandExceptionType.js.map +0 -1
- package/dist/lib/suggestion/IntegerSuggestion.js +0 -41
- package/dist/lib/suggestion/IntegerSuggestion.js.map +0 -1
- package/dist/lib/suggestion/Suggestion.js +0 -72
- package/dist/lib/suggestion/Suggestion.js.map +0 -1
- package/dist/lib/suggestion/SuggestionProvider.js +0 -3
- package/dist/lib/suggestion/SuggestionProvider.js.map +0 -1
- package/dist/lib/suggestion/Suggestions.js +0 -71
- package/dist/lib/suggestion/Suggestions.js.map +0 -1
- package/dist/lib/suggestion/SuggestionsBuilder.js +0 -54
- package/dist/lib/suggestion/SuggestionsBuilder.js.map +0 -1
- package/dist/lib/tree/ArgumentCommandNode.js +0 -97
- package/dist/lib/tree/ArgumentCommandNode.js.map +0 -1
- package/dist/lib/tree/CommandNode.js +0 -134
- package/dist/lib/tree/CommandNode.js.map +0 -1
- package/dist/lib/tree/LiteralCommandNode.js +0 -93
- package/dist/lib/tree/LiteralCommandNode.js.map +0 -1
- package/dist/lib/tree/RootCommandNode.js +0 -50
- package/dist/lib/tree/RootCommandNode.js.map +0 -1
- package/dist/lib/util/isEqual.js +0 -57
- package/dist/lib/util/isEqual.js.map +0 -1
- package/index.js +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import LiteralMessage from './lib/LiteralMessage.es.js';
|
|
2
|
+
|
|
3
|
+
class SimpleCommandExceptionType {
|
|
4
|
+
message;
|
|
5
|
+
constructor(message) {
|
|
6
|
+
this.message = message;
|
|
7
|
+
Error.captureStackTrace?.(this, SimpleCommandExceptionType);
|
|
8
|
+
}
|
|
9
|
+
create() {
|
|
10
|
+
return new CommandSyntaxException(this, this.message);
|
|
11
|
+
}
|
|
12
|
+
createWithContext(reader) {
|
|
13
|
+
return new CommandSyntaxException(this, this.message, reader.getString(), reader.getCursor());
|
|
14
|
+
}
|
|
15
|
+
toString() {
|
|
16
|
+
return this.message.getString();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
class DynamicCommandExceptionType {
|
|
21
|
+
fn;
|
|
22
|
+
constructor(fn) {
|
|
23
|
+
this.fn = fn;
|
|
24
|
+
Error.captureStackTrace?.(this, DynamicCommandExceptionType);
|
|
25
|
+
}
|
|
26
|
+
create(...args) {
|
|
27
|
+
return new CommandSyntaxException(this, this.fn(...args));
|
|
28
|
+
}
|
|
29
|
+
createWithContext(reader, ...args) {
|
|
30
|
+
return new CommandSyntaxException(this, this.fn(...args), reader.getString(), reader.getCursor());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
class BuiltInExceptions {
|
|
35
|
+
static FLOAT_TOO_SMALL = new DynamicCommandExceptionType((found, min) => new LiteralMessage("Float must not be less than " + min + ", found " + found));
|
|
36
|
+
static FLOAT_TOO_BIG = new DynamicCommandExceptionType((found, max) => new LiteralMessage("Float must not be more than " + max + ", found " + found));
|
|
37
|
+
static INTEGER_TOO_SMALL = new DynamicCommandExceptionType((found, min) => new LiteralMessage("Integer must not be less than " + min + ", found " + found));
|
|
38
|
+
static INTEGER_TOO_BIG = new DynamicCommandExceptionType((found, max) => new LiteralMessage("Integer must not be more than " + max + ", found " + found));
|
|
39
|
+
static LITERAL_INCORRECT = new DynamicCommandExceptionType((expected) => new LiteralMessage("Expected literal " + expected));
|
|
40
|
+
static READER_EXPECTED_START_OF_QUOTE = new SimpleCommandExceptionType(new LiteralMessage("Expected quote to start a string"));
|
|
41
|
+
static READER_EXPECTED_END_OF_QUOTE = new SimpleCommandExceptionType(new LiteralMessage("Unclosed quoted string"));
|
|
42
|
+
static READER_INVALID_ESCAPE = new DynamicCommandExceptionType((character) => new LiteralMessage("Invalid escape sequence '" + character + "' in quoted string"));
|
|
43
|
+
static READER_INVALID_BOOL = new DynamicCommandExceptionType((value) => new LiteralMessage("Invalid bool, expected true or false but found '" + value + "'"));
|
|
44
|
+
static READER_INVALID_INT = new DynamicCommandExceptionType((value) => new LiteralMessage("Invalid integer '" + value + "'"));
|
|
45
|
+
static READER_EXPECTED_INT = new SimpleCommandExceptionType(new LiteralMessage("Expected integer"));
|
|
46
|
+
static READER_INVALID_FLOAT = new DynamicCommandExceptionType((value) => new LiteralMessage("Invalid float '" + value + "'"));
|
|
47
|
+
static READER_EXPECTED_FLOAT = new SimpleCommandExceptionType(new LiteralMessage("Expected float"));
|
|
48
|
+
static READER_EXPECTED_BOOL = new SimpleCommandExceptionType(new LiteralMessage("Expected bool"));
|
|
49
|
+
static READER_EXPECTED_SYMBOL = new DynamicCommandExceptionType((symbol) => new LiteralMessage("Expected '" + symbol + "'"));
|
|
50
|
+
static DISPATCHER_UNKNOWN_COMMAND = new SimpleCommandExceptionType(new LiteralMessage("Unknown command"));
|
|
51
|
+
static DISPATCHER_UNKNOWN_ARGUMENT = new SimpleCommandExceptionType(new LiteralMessage("Incorrect argument for command"));
|
|
52
|
+
static DISPATCHER_EXPECTED_ARGUMENT_SEPARATOR = new SimpleCommandExceptionType(new LiteralMessage("Expected whitespace to end one argument, but found trailing data"));
|
|
53
|
+
static DISPATCHER_PARSE_EXCEPTION = new DynamicCommandExceptionType((message) => new LiteralMessage("Could not parse command: " + message));
|
|
54
|
+
floatTooLow() {
|
|
55
|
+
return BuiltInExceptions.FLOAT_TOO_SMALL;
|
|
56
|
+
}
|
|
57
|
+
floatTooHigh() {
|
|
58
|
+
return BuiltInExceptions.FLOAT_TOO_BIG;
|
|
59
|
+
}
|
|
60
|
+
integerTooLow() {
|
|
61
|
+
return BuiltInExceptions.INTEGER_TOO_SMALL;
|
|
62
|
+
}
|
|
63
|
+
integerTooHigh() {
|
|
64
|
+
return BuiltInExceptions.INTEGER_TOO_BIG;
|
|
65
|
+
}
|
|
66
|
+
literalIncorrect() {
|
|
67
|
+
return BuiltInExceptions.LITERAL_INCORRECT;
|
|
68
|
+
}
|
|
69
|
+
readerExpectedStartOfQuote() {
|
|
70
|
+
return BuiltInExceptions.READER_EXPECTED_START_OF_QUOTE;
|
|
71
|
+
}
|
|
72
|
+
readerExpectedEndOfQuote() {
|
|
73
|
+
return BuiltInExceptions.READER_EXPECTED_END_OF_QUOTE;
|
|
74
|
+
}
|
|
75
|
+
readerInvalidEscape() {
|
|
76
|
+
return BuiltInExceptions.READER_INVALID_ESCAPE;
|
|
77
|
+
}
|
|
78
|
+
readerInvalidBool() {
|
|
79
|
+
return BuiltInExceptions.READER_INVALID_BOOL;
|
|
80
|
+
}
|
|
81
|
+
readerInvalidInt() {
|
|
82
|
+
return BuiltInExceptions.READER_INVALID_INT;
|
|
83
|
+
}
|
|
84
|
+
readerExpectedInt() {
|
|
85
|
+
return BuiltInExceptions.READER_EXPECTED_INT;
|
|
86
|
+
}
|
|
87
|
+
readerInvalidFloat() {
|
|
88
|
+
return BuiltInExceptions.READER_INVALID_FLOAT;
|
|
89
|
+
}
|
|
90
|
+
readerExpectedFloat() {
|
|
91
|
+
return BuiltInExceptions.READER_EXPECTED_FLOAT;
|
|
92
|
+
}
|
|
93
|
+
readerExpectedBool() {
|
|
94
|
+
return BuiltInExceptions.READER_EXPECTED_BOOL;
|
|
95
|
+
}
|
|
96
|
+
readerExpectedSymbol() {
|
|
97
|
+
return BuiltInExceptions.READER_EXPECTED_SYMBOL;
|
|
98
|
+
}
|
|
99
|
+
dispatcherUnknownCommand() {
|
|
100
|
+
return BuiltInExceptions.DISPATCHER_UNKNOWN_COMMAND;
|
|
101
|
+
}
|
|
102
|
+
dispatcherUnknownArgument() {
|
|
103
|
+
return BuiltInExceptions.DISPATCHER_UNKNOWN_ARGUMENT;
|
|
104
|
+
}
|
|
105
|
+
dispatcherExpectedArgumentSeparator() {
|
|
106
|
+
return BuiltInExceptions.DISPATCHER_EXPECTED_ARGUMENT_SEPARATOR;
|
|
107
|
+
}
|
|
108
|
+
dispatcherParseException() {
|
|
109
|
+
return BuiltInExceptions.DISPATCHER_PARSE_EXCEPTION;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
class CommandSyntaxException extends Error {
|
|
114
|
+
static CONTEXT_AMOUNT = 10;
|
|
115
|
+
static BUILT_IN_EXCEPTIONS = new BuiltInExceptions();
|
|
116
|
+
type;
|
|
117
|
+
__message;
|
|
118
|
+
input;
|
|
119
|
+
cursor;
|
|
120
|
+
constructor(type, message, input = null, cursor = -1) {
|
|
121
|
+
super(message.getString());
|
|
122
|
+
Error.captureStackTrace?.(this, CommandSyntaxException);
|
|
123
|
+
this.type = type;
|
|
124
|
+
this.__message = message;
|
|
125
|
+
this.input = input;
|
|
126
|
+
this.cursor = cursor;
|
|
127
|
+
this.message = this.getMessage();
|
|
128
|
+
}
|
|
129
|
+
getMessage() {
|
|
130
|
+
let message = this.__message.getString();
|
|
131
|
+
let context = this.getContext();
|
|
132
|
+
if (context != null) {
|
|
133
|
+
message += " at position " + this.cursor + ": " + context;
|
|
134
|
+
}
|
|
135
|
+
return message;
|
|
136
|
+
}
|
|
137
|
+
getRawMessage() {
|
|
138
|
+
return this.__message;
|
|
139
|
+
}
|
|
140
|
+
getContext() {
|
|
141
|
+
if (this.input == null || this.cursor < 0) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
let builder = "";
|
|
145
|
+
let cursor = Math.min(this.input.length, this.cursor);
|
|
146
|
+
if (cursor > CommandSyntaxException.CONTEXT_AMOUNT) {
|
|
147
|
+
builder += "...";
|
|
148
|
+
}
|
|
149
|
+
builder += this.input.substring(Math.max(0, cursor - CommandSyntaxException.CONTEXT_AMOUNT), cursor);
|
|
150
|
+
builder += "<--[HERE]";
|
|
151
|
+
return builder;
|
|
152
|
+
}
|
|
153
|
+
getType() {
|
|
154
|
+
return this.type;
|
|
155
|
+
}
|
|
156
|
+
getInput() {
|
|
157
|
+
return this.input;
|
|
158
|
+
}
|
|
159
|
+
getCursor() {
|
|
160
|
+
return this.cursor;
|
|
161
|
+
}
|
|
162
|
+
toString() {
|
|
163
|
+
return this.message;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export { BuiltInExceptions as B, CommandSyntaxException as C, DynamicCommandExceptionType as D, SimpleCommandExceptionType as S };
|
|
168
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi1EejhRbHE5ZC5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9leGNlcHRpb25zL1NpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlLnRzIiwiLi4vc3JjL2xpYi9leGNlcHRpb25zL0R5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZS50cyIsIi4uL3NyYy9saWIvZXhjZXB0aW9ucy9CdWlsdEluRXhjZXB0aW9ucy50cyIsIi4uL3NyYy9saWIvZXhjZXB0aW9ucy9Db21tYW5kU3ludGF4RXhjZXB0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSAnLi4vTWVzc2FnZSc7XG5pbXBvcnQgdHlwZSBJbW11dGFibGVTdHJpbmdSZWFkZXIgZnJvbSAnLi4vSW1tdXRhYmxlU3RyaW5nUmVhZGVyJztcbmltcG9ydCB0eXBlIENvbW1hbmRFeGNlcHRpb25UeXBlIGZyb20gJy4vQ29tbWFuZEV4Y2VwdGlvblR5cGUnO1xuaW1wb3J0IENvbW1hbmRTeW50YXhFeGNlcHRpb24gZnJvbSAnLi9Db21tYW5kU3ludGF4RXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUgaW1wbGVtZW50cyBDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBNZXNzYWdlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgKEVycm9yIGFzIGFueSkuY2FwdHVyZVN0YWNrVHJhY2U/Lih0aGlzLCBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZSgpOiBDb21tYW5kU3ludGF4RXhjZXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kU3ludGF4RXhjZXB0aW9uKHRoaXMsIHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVdpdGhDb250ZXh0KHJlYWRlcjogSW1tdXRhYmxlU3RyaW5nUmVhZGVyKTogQ29tbWFuZFN5bnRheEV4Y2VwdGlvbiB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbih0aGlzLCB0aGlzLm1lc3NhZ2UsIHJlYWRlci5nZXRTdHJpbmcoKSwgcmVhZGVyLmdldEN1cnNvcigpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZS5nZXRTdHJpbmcoKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gJy4uL01lc3NhZ2UnO1xuaW1wb3J0IHR5cGUgQ29tbWFuZEV4Y2VwdGlvblR5cGUgZnJvbSAnLi9Db21tYW5kRXhjZXB0aW9uVHlwZSc7XG5pbXBvcnQgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbiBmcm9tICcuL0NvbW1hbmRTeW50YXhFeGNlcHRpb24nO1xuaW1wb3J0IHR5cGUgSW1tdXRhYmxlU3RyaW5nUmVhZGVyIGZyb20gJy4uL0ltbXV0YWJsZVN0cmluZ1JlYWRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSBpbXBsZW1lbnRzIENvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICBwcml2YXRlIGZuOiBGdW5jdGlvbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICAgICAgKEVycm9yIGFzIGFueSkuY2FwdHVyZVN0YWNrVHJhY2U/Lih0aGlzLCBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoLi4uYXJnczogYW55W10pOiBDb21tYW5kU3ludGF4RXhjZXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kU3ludGF4RXhjZXB0aW9uKHRoaXMsIHRoaXMuZm4oLi4uYXJncykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVXaXRoQ29udGV4dChyZWFkZXI6IEltbXV0YWJsZVN0cmluZ1JlYWRlciwgLi4uYXJnczogYW55W10pOiBDb21tYW5kU3ludGF4RXhjZXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kU3ludGF4RXhjZXB0aW9uKHRoaXMsIHRoaXMuZm4oLi4uYXJncyksIHJlYWRlci5nZXRTdHJpbmcoKSwgcmVhZGVyLmdldEN1cnNvcigpKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgTGl0ZXJhbE1lc3NhZ2UgZnJvbSBcIi4uL0xpdGVyYWxNZXNzYWdlXCJcbmltcG9ydCBCdWlsdEluRXhjZXB0aW9uUHJvdmlkZXIgZnJvbSBcIi4vQnVpbHRJbkV4Y2VwdGlvblByb3ZpZGVyXCJcbmltcG9ydCBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSBmcm9tIFwiLi9TaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZVwiXG5pbXBvcnQgRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlIGZyb20gXCIuL0R5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWx0SW5FeGNlcHRpb25zIGltcGxlbWVudHMgQnVpbHRJbkV4Y2VwdGlvblByb3ZpZGVyIHsgICAgXG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgRkxPQVRfVE9PX1NNQUxMID0gbmV3IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSgoZm91bmQsIG1pbikgPT4gbmV3IExpdGVyYWxNZXNzYWdlKFwiRmxvYXQgbXVzdCBub3QgYmUgbGVzcyB0aGFuIFwiICsgbWluICsgXCIsIGZvdW5kIFwiICsgZm91bmQpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBGTE9BVF9UT09fQklHID0gbmV3IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSgoZm91bmQsIG1heCkgPT4gbmV3IExpdGVyYWxNZXNzYWdlKFwiRmxvYXQgbXVzdCBub3QgYmUgbW9yZSB0aGFuIFwiICsgbWF4ICsgXCIsIGZvdW5kIFwiICsgZm91bmQpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBJTlRFR0VSX1RPT19TTUFMTCA9IG5ldyBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUoKGZvdW5kLCBtaW4pID0+IG5ldyBMaXRlcmFsTWVzc2FnZShcIkludGVnZXIgbXVzdCBub3QgYmUgbGVzcyB0aGFuIFwiICsgbWluICsgXCIsIGZvdW5kIFwiICsgZm91bmQpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBJTlRFR0VSX1RPT19CSUcgPSBuZXcgRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlKChmb3VuZCwgbWF4KSA9PiBuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJJbnRlZ2VyIG11c3Qgbm90IGJlIG1vcmUgdGhhbiBcIiArIG1heCArIFwiLCBmb3VuZCBcIiArIGZvdW5kKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgTElURVJBTF9JTkNPUlJFQ1Q6IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSA9IG5ldyBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUoZXhwZWN0ZWQgPT4gbmV3IExpdGVyYWxNZXNzYWdlKFwiRXhwZWN0ZWQgbGl0ZXJhbCBcIiArIGV4cGVjdGVkKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgUkVBREVSX0VYUEVDVEVEX1NUQVJUX09GX1FVT1RFOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSA9IG5ldyBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZShuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJFeHBlY3RlZCBxdW90ZSB0byBzdGFydCBhIHN0cmluZ1wiKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgUkVBREVSX0VYUEVDVEVEX0VORF9PRl9RVU9URTogU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUgPSBuZXcgU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUobmV3IExpdGVyYWxNZXNzYWdlKFwiVW5jbG9zZWQgcXVvdGVkIHN0cmluZ1wiKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgUkVBREVSX0lOVkFMSURfRVNDQVBFOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUgPSBuZXcgRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlKGNoYXJhY3RlciA9PiBuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXCIgKyBjaGFyYWN0ZXIgKyBcIicgaW4gcXVvdGVkIHN0cmluZ1wiKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgUkVBREVSX0lOVkFMSURfQk9PTDogRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSh2YWx1ZSA9PiBuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJJbnZhbGlkIGJvb2wsIGV4cGVjdGVkIHRydWUgb3IgZmFsc2UgYnV0IGZvdW5kICdcIiArIHZhbHVlICsgXCInXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBSRUFERVJfSU5WQUxJRF9JTlQ6IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSA9IG5ldyBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUodmFsdWUgPT4gbmV3IExpdGVyYWxNZXNzYWdlKFwiSW52YWxpZCBpbnRlZ2VyICdcIiArIHZhbHVlICsgXCInXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBSRUFERVJfRVhQRUNURURfSU5UOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSA9IG5ldyBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZShuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJFeHBlY3RlZCBpbnRlZ2VyXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBSRUFERVJfSU5WQUxJRF9GTE9BVDogRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSh2YWx1ZSA9PiBuZXcgTGl0ZXJhbE1lc3NhZ2UoXCJJbnZhbGlkIGZsb2F0ICdcIiArIHZhbHVlICsgXCInXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBSRUFERVJfRVhQRUNURURfRkxPQVQ6IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlKG5ldyBMaXRlcmFsTWVzc2FnZShcIkV4cGVjdGVkIGZsb2F0XCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBSRUFERVJfRVhQRUNURURfQk9PTDogU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUgPSBuZXcgU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUobmV3IExpdGVyYWxNZXNzYWdlKFwiRXhwZWN0ZWQgYm9vbFwiKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgUkVBREVSX0VYUEVDVEVEX1NZTUJPTDogRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZShzeW1ib2wgPT4gbmV3IExpdGVyYWxNZXNzYWdlKFwiRXhwZWN0ZWQgJ1wiICsgc3ltYm9sICsgXCInXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBESVNQQVRDSEVSX1VOS05PV05fQ09NTUFORDogU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUgPSBuZXcgU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUobmV3IExpdGVyYWxNZXNzYWdlKFwiVW5rbm93biBjb21tYW5kXCIpKTtcbiAgICBcbiAgICBwcml2YXRlIHN0YXRpYyBESVNQQVRDSEVSX1VOS05PV05fQVJHVU1FTlQ6IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlKG5ldyBMaXRlcmFsTWVzc2FnZShcIkluY29ycmVjdCBhcmd1bWVudCBmb3IgY29tbWFuZFwiKSk7XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgRElTUEFUQ0hFUl9FWFBFQ1RFRF9BUkdVTUVOVF9TRVBBUkFUT1I6IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlID0gbmV3IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlKG5ldyBMaXRlcmFsTWVzc2FnZShcIkV4cGVjdGVkIHdoaXRlc3BhY2UgdG8gZW5kIG9uZSBhcmd1bWVudCwgYnV0IGZvdW5kIHRyYWlsaW5nIGRhdGFcIikpO1xuICAgIFxuICAgIHByaXZhdGUgc3RhdGljIERJU1BBVENIRVJfUEFSU0VfRVhDRVBUSU9OOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUgPSBuZXcgRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlKG1lc3NhZ2UgPT4gbmV3IExpdGVyYWxNZXNzYWdlKChcIkNvdWxkIG5vdCBwYXJzZSBjb21tYW5kOiBcIiArIG1lc3NhZ2UpKSk7XG4gICAgICAgICAgICBcbiAgICBwdWJsaWMgZmxvYXRUb29Mb3coKTogRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIEJ1aWx0SW5FeGNlcHRpb25zLkZMT0FUX1RPT19TTUFMTDtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGZsb2F0VG9vSGlnaCgpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuRkxPQVRfVE9PX0JJRztcbiAgICB9XG5cbiAgICBwdWJsaWMgaW50ZWdlclRvb0xvdygpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuSU5URUdFUl9UT09fU01BTEw7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBpbnRlZ2VyVG9vSGlnaCgpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuSU5URUdFUl9UT09fQklHO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgbGl0ZXJhbEluY29ycmVjdCgpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuTElURVJBTF9JTkNPUlJFQ1Q7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyByZWFkZXJFeHBlY3RlZFN0YXJ0T2ZRdW90ZSgpOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5SRUFERVJfRVhQRUNURURfU1RBUlRfT0ZfUVVPVEU7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyByZWFkZXJFeHBlY3RlZEVuZE9mUXVvdGUoKTogU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuUkVBREVSX0VYUEVDVEVEX0VORF9PRl9RVU9URTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHJlYWRlckludmFsaWRFc2NhcGUoKTogRHluYW1pY0NvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIEJ1aWx0SW5FeGNlcHRpb25zLlJFQURFUl9JTlZBTElEX0VTQ0FQRTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHJlYWRlckludmFsaWRCb29sKCk6IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5SRUFERVJfSU5WQUxJRF9CT09MO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgcmVhZGVySW52YWxpZEludCgpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuUkVBREVSX0lOVkFMSURfSU5UO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgcmVhZGVyRXhwZWN0ZWRJbnQoKTogU2ltcGxlQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuUkVBREVSX0VYUEVDVEVEX0lOVDtcblx0fVxuXHQgICAgXG4gICAgcHVibGljIHJlYWRlckludmFsaWRGbG9hdCgpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuUkVBREVSX0lOVkFMSURfRkxPQVQ7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyByZWFkZXJFeHBlY3RlZEZsb2F0KCk6IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIEJ1aWx0SW5FeGNlcHRpb25zLlJFQURFUl9FWFBFQ1RFRF9GTE9BVDtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHJlYWRlckV4cGVjdGVkQm9vbCgpOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5SRUFERVJfRVhQRUNURURfQk9PTDtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHJlYWRlckV4cGVjdGVkU3ltYm9sKCk6IER5bmFtaWNDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5SRUFERVJfRVhQRUNURURfU1lNQk9MO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZGlzcGF0Y2hlclVua25vd25Db21tYW5kKCk6IFNpbXBsZUNvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIEJ1aWx0SW5FeGNlcHRpb25zLkRJU1BBVENIRVJfVU5LTk9XTl9DT01NQU5EO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZGlzcGF0Y2hlclVua25vd25Bcmd1bWVudCgpOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5ESVNQQVRDSEVSX1VOS05PV05fQVJHVU1FTlQ7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBkaXNwYXRjaGVyRXhwZWN0ZWRBcmd1bWVudFNlcGFyYXRvcigpOiBTaW1wbGVDb21tYW5kRXhjZXB0aW9uVHlwZSB7XG4gICAgICAgIHJldHVybiBCdWlsdEluRXhjZXB0aW9ucy5ESVNQQVRDSEVSX0VYUEVDVEVEX0FSR1VNRU5UX1NFUEFSQVRPUjtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGRpc3BhdGNoZXJQYXJzZUV4Y2VwdGlvbigpOiBEeW5hbWljQ29tbWFuZEV4Y2VwdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gQnVpbHRJbkV4Y2VwdGlvbnMuRElTUEFUQ0hFUl9QQVJTRV9FWENFUFRJT047XG4gICAgfVxufVxuIiwiaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tICcuLi9NZXNzYWdlJztcbmltcG9ydCBCdWlsdEluRXhjZXB0aW9ucyBmcm9tICcuL0J1aWx0SW5FeGNlcHRpb25zJztcbmltcG9ydCB0eXBlIEJ1aWx0SW5FeGNlcHRpb25Qcm92aWRlciBmcm9tICcuL0J1aWx0SW5FeGNlcHRpb25Qcm92aWRlcic7XG5pbXBvcnQgdHlwZSBDb21tYW5kRXhjZXB0aW9uVHlwZSBmcm9tICcuL0NvbW1hbmRFeGNlcHRpb25UeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgc3RhdGljIENPTlRFWFRfQU1PVU5UID0gMTA7XG4gICAgcHVibGljIHN0YXRpYyBCVUlMVF9JTl9FWENFUFRJT05TOiBCdWlsdEluRXhjZXB0aW9uUHJvdmlkZXIgPSBuZXcgQnVpbHRJbkV4Y2VwdGlvbnMoKTtcblxuICAgIHByaXZhdGUgdHlwZTogQ29tbWFuZEV4Y2VwdGlvblR5cGU7XG4gICAgcHJpdmF0ZSBfX21lc3NhZ2U6IE1lc3NhZ2U7XG4gICAgcHJpdmF0ZSBpbnB1dDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIGN1cnNvcjogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IENvbW1hbmRFeGNlcHRpb25UeXBlLCBtZXNzYWdlOiBNZXNzYWdlLCBpbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGN1cnNvciA9IC0xKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UuZ2V0U3RyaW5nKCkpO1xuICAgICAgICAoRXJyb3IgYXMgYW55KS5jYXB0dXJlU3RhY2tUcmFjZT8uKHRoaXMsIENvbW1hbmRTeW50YXhFeGNlcHRpb24pO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLl9fbWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5jdXJzb3IgPSBjdXJzb3I7XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5nZXRNZXNzYWdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLl9fbWVzc2FnZS5nZXRTdHJpbmcoKTtcbiAgICAgICAgbGV0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcbiAgICAgICAgaWYgKGNvbnRleHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWVzc2FnZSArPSAnIGF0IHBvc2l0aW9uICcgKyB0aGlzLmN1cnNvciArICc6ICcgKyBjb250ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSYXdNZXNzYWdlKCk6IE1lc3NhZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fX21lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0ID09IG51bGwgfHwgdGhpcy5jdXJzb3IgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWlsZGVyID0gJyc7XG4gICAgICAgIGxldCBjdXJzb3IgPSBNYXRoLm1pbih0aGlzLmlucHV0Lmxlbmd0aCwgdGhpcy5jdXJzb3IpO1xuICAgICAgICBpZiAoY3Vyc29yID4gQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5DT05URVhUX0FNT1VOVCkge1xuICAgICAgICAgICAgYnVpbGRlciArPSAnLi4uJztcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1aWxkZXIgKz0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoTWF0aC5tYXgoMCwgY3Vyc29yIC0gQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5DT05URVhUX0FNT1VOVCksIGN1cnNvcik7XG4gICAgICAgIGJ1aWxkZXIgKz0gJzwtLVtIRVJFXSc7XG4gICAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUeXBlKCk6IENvbW1hbmRFeGNlcHRpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5wdXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJzb3IoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3Vyc29yO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLE1BQXFCLDBCQUEyRCxDQUFBO0FBQUEsRUFDcEUsT0FBQSxDQUFBO0FBQUEsRUFFRCxZQUFZLE9BQWtCLEVBQUE7QUFDakMsSUFBQSxJQUFBLENBQUssT0FBVSxHQUFBLE9BQUEsQ0FBQTtBQUNmLElBQUMsS0FBQSxDQUFjLGlCQUFvQixHQUFBLElBQUEsRUFBTSwwQkFBMEIsQ0FBQSxDQUFBO0FBQUEsR0FDdkU7QUFBQSxFQUVPLE1BQWlDLEdBQUE7QUFDcEMsSUFBQSxPQUFPLElBQUksc0JBQUEsQ0FBdUIsSUFBTSxFQUFBLElBQUEsQ0FBSyxP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
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import CommandNode from './lib/tree/CommandNode.es.js';
|
|
2
|
+
import StringReader from './lib/StringReader.es.js';
|
|
3
|
+
import ArgumentBuilder from './lib/builder/ArgumentBuilder.es.js';
|
|
4
|
+
import StringRange from './lib/context/StringRange.es.js';
|
|
5
|
+
import { C as CommandSyntaxException } from './CommandSyntaxException-Dz8Qlq9d.js';
|
|
6
|
+
import Suggestions from './lib/suggestion/Suggestions.es.js';
|
|
7
|
+
|
|
8
|
+
class LiteralCommandNode extends CommandNode {
|
|
9
|
+
literal;
|
|
10
|
+
constructor(literal, command, requirement, redirect, modifier, forks) {
|
|
11
|
+
super(command, requirement, redirect, modifier, forks);
|
|
12
|
+
this.literal = literal;
|
|
13
|
+
}
|
|
14
|
+
getNodeType() {
|
|
15
|
+
return "literal";
|
|
16
|
+
}
|
|
17
|
+
getLiteral() {
|
|
18
|
+
return this.literal;
|
|
19
|
+
}
|
|
20
|
+
getName() {
|
|
21
|
+
return this.literal;
|
|
22
|
+
}
|
|
23
|
+
parse(reader, contextBuilder) {
|
|
24
|
+
let start = reader.getCursor();
|
|
25
|
+
let end = this.__parse(reader);
|
|
26
|
+
if (end > -1) {
|
|
27
|
+
contextBuilder.withNode(this, StringRange.between(start, end));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
throw CommandSyntaxException.BUILT_IN_EXCEPTIONS.literalIncorrect().createWithContext(reader, this.literal);
|
|
31
|
+
}
|
|
32
|
+
__parse(reader) {
|
|
33
|
+
let start = reader.getCursor();
|
|
34
|
+
if (reader.canRead(this.literal.length)) {
|
|
35
|
+
let end = start + this.literal.length;
|
|
36
|
+
if (reader.getString().substring(start, end) === this.literal) {
|
|
37
|
+
reader.setCursor(end);
|
|
38
|
+
if (!reader.canRead() || reader.peek() == " ") {
|
|
39
|
+
return end;
|
|
40
|
+
} else {
|
|
41
|
+
reader.setCursor(start);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
listSuggestions(context, builder) {
|
|
48
|
+
if (this.literal.toLowerCase().startsWith(builder.getRemaining().toLowerCase())) {
|
|
49
|
+
return builder.suggest(this.literal).buildPromise();
|
|
50
|
+
} else {
|
|
51
|
+
return Suggestions.empty();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
isValidInput(input) {
|
|
55
|
+
return this.__parse(new StringReader(input)) > -1;
|
|
56
|
+
}
|
|
57
|
+
equals(o) {
|
|
58
|
+
if (this === o)
|
|
59
|
+
return true;
|
|
60
|
+
if (!(o instanceof LiteralCommandNode))
|
|
61
|
+
return false;
|
|
62
|
+
if (this.literal !== o.literal)
|
|
63
|
+
return false;
|
|
64
|
+
return super.equals(o);
|
|
65
|
+
}
|
|
66
|
+
getUsageText() {
|
|
67
|
+
return this.literal;
|
|
68
|
+
}
|
|
69
|
+
createBuilder() {
|
|
70
|
+
let builder = LiteralArgumentBuilder.literal(this.literal);
|
|
71
|
+
builder.requires(this.getRequirement());
|
|
72
|
+
builder.forward(this.getRedirect(), this.getRedirectModifier(), this.isFork());
|
|
73
|
+
if (this.getCommand() != null)
|
|
74
|
+
builder.executes(this.getCommand());
|
|
75
|
+
return builder;
|
|
76
|
+
}
|
|
77
|
+
getSortedKey() {
|
|
78
|
+
return this.literal;
|
|
79
|
+
}
|
|
80
|
+
getExamples() {
|
|
81
|
+
return [this.literal];
|
|
82
|
+
}
|
|
83
|
+
toString() {
|
|
84
|
+
return "<literal " + this.literal + ">";
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
class LiteralArgumentBuilder extends ArgumentBuilder {
|
|
89
|
+
literal;
|
|
90
|
+
constructor(literal2) {
|
|
91
|
+
super();
|
|
92
|
+
this.literal = literal2;
|
|
93
|
+
}
|
|
94
|
+
static literal(name) {
|
|
95
|
+
return new LiteralArgumentBuilder(name);
|
|
96
|
+
}
|
|
97
|
+
getThis() {
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
getLiteral() {
|
|
101
|
+
return this.literal;
|
|
102
|
+
}
|
|
103
|
+
build() {
|
|
104
|
+
let result = new LiteralCommandNode(
|
|
105
|
+
this.getLiteral(),
|
|
106
|
+
this.getCommand(),
|
|
107
|
+
this.getRequirement(),
|
|
108
|
+
this.getRedirect(),
|
|
109
|
+
this.getRedirectModifier(),
|
|
110
|
+
this.isFork()
|
|
111
|
+
);
|
|
112
|
+
for (let arg of this.getArguments()) {
|
|
113
|
+
result.addChild(arg);
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const literal = LiteralArgumentBuilder.literal;
|
|
119
|
+
|
|
120
|
+
export { LiteralArgumentBuilder as L, LiteralCommandNode as a, literal as l };
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl0ZXJhbEFyZ3VtZW50QnVpbGRlci0yaHBYMkM4Ni5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi90cmVlL0xpdGVyYWxDb21tYW5kTm9kZS50cyIsIi4uL3NyYy9saWIvYnVpbGRlci9MaXRlcmFsQXJndW1lbnRCdWlsZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIENvbW1hbmQgZnJvbSAnLi4vQ29tbWFuZCc7XG5pbXBvcnQgQ29tbWFuZE5vZGUgZnJvbSAnLi9Db21tYW5kTm9kZSc7XG5pbXBvcnQgdHlwZSBQcmVkaWNhdGUgZnJvbSAnLi4vUHJlZGljYXRlJztcbmltcG9ydCB0eXBlIFJlZGlyZWN0TW9kaWZpZXIgZnJvbSAnLi4vUmVkaXJlY3RNb2RpZmllcic7XG5pbXBvcnQgU3RyaW5nUmVhZGVyIGZyb20gJy4uL1N0cmluZ1JlYWRlcic7XG5pbXBvcnQgTGl0ZXJhbEFyZ3VtZW50QnVpbGRlciBmcm9tICcuLi9idWlsZGVyL0xpdGVyYWxBcmd1bWVudEJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgQ29tbWFuZENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Db21tYW5kQ29udGV4dCc7XG5pbXBvcnQgdHlwZSBDb21tYW5kQ29udGV4dEJ1aWxkZXIgZnJvbSAnLi4vY29udGV4dC9Db21tYW5kQ29udGV4dEJ1aWxkZXInO1xuaW1wb3J0IFN0cmluZ1JhbmdlIGZyb20gJy4uL2NvbnRleHQvU3RyaW5nUmFuZ2UnO1xuaW1wb3J0IENvbW1hbmRTeW50YXhFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9ucy9Db21tYW5kU3ludGF4RXhjZXB0aW9uJztcbmltcG9ydCBTdWdnZXN0aW9ucyBmcm9tICcuLi9zdWdnZXN0aW9uL1N1Z2dlc3Rpb25zJztcbmltcG9ydCB0eXBlIFN1Z2dlc3Rpb25zQnVpbGRlciBmcm9tICcuLi9zdWdnZXN0aW9uL1N1Z2dlc3Rpb25zQnVpbGRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpdGVyYWxDb21tYW5kTm9kZTxTPiBleHRlbmRzIENvbW1hbmROb2RlPFM+IHtcbiAgICBwcml2YXRlIGxpdGVyYWw6IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgbGl0ZXJhbDogc3RyaW5nLFxuICAgICAgICBjb21tYW5kOiBDb21tYW5kPFM+LFxuICAgICAgICByZXF1aXJlbWVudDogUHJlZGljYXRlPFM+LFxuICAgICAgICByZWRpcmVjdDogQ29tbWFuZE5vZGU8Uz4sXG4gICAgICAgIG1vZGlmaWVyOiBSZWRpcmVjdE1vZGlmaWVyPFM+IHwgbnVsbCxcbiAgICAgICAgZm9ya3M6IGJvb2xlYW5cbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29tbWFuZCwgcmVxdWlyZW1lbnQsIHJlZGlyZWN0LCBtb2RpZmllciwgZm9ya3MpO1xuICAgICAgICB0aGlzLmxpdGVyYWwgPSBsaXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROb2RlVHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ2xpdGVyYWwnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMaXRlcmFsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpdGVyYWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2UocmVhZGVyOiBTdHJpbmdSZWFkZXIsIGNvbnRleHRCdWlsZGVyOiBDb21tYW5kQ29udGV4dEJ1aWxkZXI8Uz4pIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcmVhZGVyLmdldEN1cnNvcigpO1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5fX3BhcnNlKHJlYWRlcik7XG4gICAgICAgIGlmIChlbmQgPiAtMSkge1xuICAgICAgICAgICAgY29udGV4dEJ1aWxkZXIud2l0aE5vZGUodGhpcywgU3RyaW5nUmFuZ2UuYmV0d2VlbihzdGFydCwgZW5kKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBDb21tYW5kU3ludGF4RXhjZXB0aW9uLkJVSUxUX0lOX0VYQ0VQVElPTlMubGl0ZXJhbEluY29ycmVjdCgpLmNyZWF0ZVdpdGhDb250ZXh0KHJlYWRlciwgdGhpcy5saXRlcmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9fcGFyc2UocmVhZGVyOiBTdHJpbmdSZWFkZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgc3RhcnQgPSByZWFkZXIuZ2V0Q3Vyc29yKCk7XG4gICAgICAgIGlmIChyZWFkZXIuY2FuUmVhZCh0aGlzLmxpdGVyYWwubGVuZ3RoKSkge1xuICAgICAgICAgICAgbGV0IGVuZCA9IHN0YXJ0ICsgdGhpcy5saXRlcmFsLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChyZWFkZXIuZ2V0U3RyaW5nKCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpID09PSB0aGlzLmxpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICByZWFkZXIuc2V0Q3Vyc29yKGVuZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWFkZXIuY2FuUmVhZCgpIHx8IHJlYWRlci5wZWVrKCkgPT0gJyAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnNldEN1cnNvcihzdGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGlzdFN1Z2dlc3Rpb25zKGNvbnRleHQ6IENvbW1hbmRDb250ZXh0PFM+LCBidWlsZGVyOiBTdWdnZXN0aW9uc0J1aWxkZXIpOiBQcm9taXNlPFN1Z2dlc3Rpb25zPiB7XG4gICAgICAgIGlmICh0aGlzLmxpdGVyYWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGJ1aWxkZXIuZ2V0UmVtYWluaW5nKCkudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBidWlsZGVyLnN1Z2dlc3QodGhpcy5saXRlcmFsKS5idWlsZFByb21pc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBTdWdnZXN0aW9ucy5lbXB0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWRJbnB1dChpbnB1dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fcGFyc2UobmV3IFN0cmluZ1JlYWRlcihpbnB1dCkpID4gLTE7XG4gICAgfVxuXG4gICAgcHVibGljIGVxdWFscyhvOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMgPT09IG8pIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgTGl0ZXJhbENvbW1hbmROb2RlKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmxpdGVyYWwgIT09IG8ubGl0ZXJhbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBzdXBlci5lcXVhbHMobyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFVzYWdlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVCdWlsZGVyKCk6IExpdGVyYWxBcmd1bWVudEJ1aWxkZXI8Uz4ge1xuICAgICAgICBsZXQgYnVpbGRlcjogTGl0ZXJhbEFyZ3VtZW50QnVpbGRlcjxTPiA9IExpdGVyYWxBcmd1bWVudEJ1aWxkZXIubGl0ZXJhbCh0aGlzLmxpdGVyYWwpO1xuICAgICAgICBidWlsZGVyLnJlcXVpcmVzKHRoaXMuZ2V0UmVxdWlyZW1lbnQoKSk7XG4gICAgICAgIGJ1aWxkZXIuZm9yd2FyZCh0aGlzLmdldFJlZGlyZWN0KCkhLCB0aGlzLmdldFJlZGlyZWN0TW9kaWZpZXIoKSwgdGhpcy5pc0ZvcmsoKSk7XG4gICAgICAgIGlmICh0aGlzLmdldENvbW1hbmQoKSAhPSBudWxsKSBidWlsZGVyLmV4ZWN1dGVzKHRoaXMuZ2V0Q29tbWFuZCgpISk7XG5cbiAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnRlZEtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeGFtcGxlcygpOiBJdGVyYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmxpdGVyYWxdO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJzxsaXRlcmFsICcgKyB0aGlzLmxpdGVyYWwgKyAnPic7XG4gICAgfVxufVxuIiwiaW1wb3J0IExpdGVyYWxDb21tYW5kTm9kZSBmcm9tICcuLi90cmVlL0xpdGVyYWxDb21tYW5kTm9kZSc7XG5pbXBvcnQgQXJndW1lbnRCdWlsZGVyIGZyb20gJy4vQXJndW1lbnRCdWlsZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGl0ZXJhbEFyZ3VtZW50QnVpbGRlcjxTPiBleHRlbmRzIEFyZ3VtZW50QnVpbGRlcjxTLCBMaXRlcmFsQXJndW1lbnRCdWlsZGVyPFM+PiB7XG4gICAgcHJpdmF0ZSBsaXRlcmFsOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobGl0ZXJhbDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubGl0ZXJhbCA9IGxpdGVyYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBsaXRlcmFsPFM+KG5hbWU6IHN0cmluZyk6IExpdGVyYWxBcmd1bWVudEJ1aWxkZXI8Uz4ge1xuICAgICAgICByZXR1cm4gbmV3IExpdGVyYWxBcmd1bWVudEJ1aWxkZXIobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRoaXMoKTogTGl0ZXJhbEFyZ3VtZW50QnVpbGRlcjxTPiB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMaXRlcmFsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpdGVyYWw7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IExpdGVyYWxDb21tYW5kTm9kZTxTPiB7XG4gICAgICAgIGxldCByZXN1bHQ6IExpdGVyYWxDb21tYW5kTm9kZTxTPiA9IG5ldyBMaXRlcmFsQ29tbWFuZE5vZGUoXG4gICAgICAgICAgICB0aGlzLmdldExpdGVyYWwoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tbWFuZCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRSZXF1aXJlbWVudCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRSZWRpcmVjdCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRSZWRpcmVjdE1vZGlmaWVyKCksXG4gICAgICAgICAgICB0aGlzLmlzRm9yaygpXG4gICAgICAgICk7XG4gICAgICAgIGZvciAobGV0IGFyZyBvZiB0aGlzLmdldEFyZ3VtZW50cygpKSB7XG4gICAgICAgICAgICByZXN1bHQuYWRkQ2hpbGQoYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgbGl0ZXJhbCA9IExpdGVyYWxBcmd1bWVudEJ1aWxkZXIubGl0ZXJhbDtcbiJdLCJuYW1lcyI6WyJsaXRlcmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBYUEsTUFBcUIsMkJBQThCLFdBQWUsQ0FBQTtBQUFBLEVBQ3RELE9BQUEsQ0FBQTtBQUFBLEVBRUQsWUFDSCxPQUNBLEVBQUEsT0FBQSxFQUNBLFdBQ0EsRUFBQSxRQUFBLEVBQ0EsVUFDQSxLQUNGLEVBQUE7QUFDRSxJQUFBLEtBQUEsQ0FBTSxPQUFTLEVBQUEsV0FBQSxFQUFhLFFBQVUsRUFBQSxRQUFBLEVBQVUsS0FBSyxDQUFBLENBQUE7QUFDckQsSUFBQSxJQUFBLENBQUssT0FBVSxHQUFBLE9BQUEsQ0FB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
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const lib_tree_CommandNode = require('./lib/tree/CommandNode.cjs.js');
|
|
4
|
+
const lib_StringReader = require('./lib/StringReader.cjs.js');
|
|
5
|
+
const lib_builder_ArgumentBuilder = require('./lib/builder/ArgumentBuilder.cjs.js');
|
|
6
|
+
const lib_context_StringRange = require('./lib/context/StringRange.cjs.js');
|
|
7
|
+
const lib_exceptions_SimpleCommandExceptionType = require('./CommandSyntaxException-BKBHJvxr.cjs');
|
|
8
|
+
const lib_suggestion_Suggestions = require('./lib/suggestion/Suggestions.cjs.js');
|
|
9
|
+
|
|
10
|
+
class LiteralCommandNode extends lib_tree_CommandNode.default {
|
|
11
|
+
literal;
|
|
12
|
+
constructor(literal, command, requirement, redirect, modifier, forks) {
|
|
13
|
+
super(command, requirement, redirect, modifier, forks);
|
|
14
|
+
this.literal = literal;
|
|
15
|
+
}
|
|
16
|
+
getNodeType() {
|
|
17
|
+
return "literal";
|
|
18
|
+
}
|
|
19
|
+
getLiteral() {
|
|
20
|
+
return this.literal;
|
|
21
|
+
}
|
|
22
|
+
getName() {
|
|
23
|
+
return this.literal;
|
|
24
|
+
}
|
|
25
|
+
parse(reader, contextBuilder) {
|
|
26
|
+
let start = reader.getCursor();
|
|
27
|
+
let end = this.__parse(reader);
|
|
28
|
+
if (end > -1) {
|
|
29
|
+
contextBuilder.withNode(this, lib_context_StringRange.default.between(start, end));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
throw lib_exceptions_SimpleCommandExceptionType.CommandSyntaxException.BUILT_IN_EXCEPTIONS.literalIncorrect().createWithContext(reader, this.literal);
|
|
33
|
+
}
|
|
34
|
+
__parse(reader) {
|
|
35
|
+
let start = reader.getCursor();
|
|
36
|
+
if (reader.canRead(this.literal.length)) {
|
|
37
|
+
let end = start + this.literal.length;
|
|
38
|
+
if (reader.getString().substring(start, end) === this.literal) {
|
|
39
|
+
reader.setCursor(end);
|
|
40
|
+
if (!reader.canRead() || reader.peek() == " ") {
|
|
41
|
+
return end;
|
|
42
|
+
} else {
|
|
43
|
+
reader.setCursor(start);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return -1;
|
|
48
|
+
}
|
|
49
|
+
listSuggestions(context, builder) {
|
|
50
|
+
if (this.literal.toLowerCase().startsWith(builder.getRemaining().toLowerCase())) {
|
|
51
|
+
return builder.suggest(this.literal).buildPromise();
|
|
52
|
+
} else {
|
|
53
|
+
return lib_suggestion_Suggestions.default.empty();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
isValidInput(input) {
|
|
57
|
+
return this.__parse(new lib_StringReader.default(input)) > -1;
|
|
58
|
+
}
|
|
59
|
+
equals(o) {
|
|
60
|
+
if (this === o)
|
|
61
|
+
return true;
|
|
62
|
+
if (!(o instanceof LiteralCommandNode))
|
|
63
|
+
return false;
|
|
64
|
+
if (this.literal !== o.literal)
|
|
65
|
+
return false;
|
|
66
|
+
return super.equals(o);
|
|
67
|
+
}
|
|
68
|
+
getUsageText() {
|
|
69
|
+
return this.literal;
|
|
70
|
+
}
|
|
71
|
+
createBuilder() {
|
|
72
|
+
let builder = LiteralArgumentBuilder.literal(this.literal);
|
|
73
|
+
builder.requires(this.getRequirement());
|
|
74
|
+
builder.forward(this.getRedirect(), this.getRedirectModifier(), this.isFork());
|
|
75
|
+
if (this.getCommand() != null)
|
|
76
|
+
builder.executes(this.getCommand());
|
|
77
|
+
return builder;
|
|
78
|
+
}
|
|
79
|
+
getSortedKey() {
|
|
80
|
+
return this.literal;
|
|
81
|
+
}
|
|
82
|
+
getExamples() {
|
|
83
|
+
return [this.literal];
|
|
84
|
+
}
|
|
85
|
+
toString() {
|
|
86
|
+
return "<literal " + this.literal + ">";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
class LiteralArgumentBuilder extends lib_builder_ArgumentBuilder.default {
|
|
91
|
+
literal;
|
|
92
|
+
constructor(literal2) {
|
|
93
|
+
super();
|
|
94
|
+
this.literal = literal2;
|
|
95
|
+
}
|
|
96
|
+
static literal(name) {
|
|
97
|
+
return new LiteralArgumentBuilder(name);
|
|
98
|
+
}
|
|
99
|
+
getThis() {
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
getLiteral() {
|
|
103
|
+
return this.literal;
|
|
104
|
+
}
|
|
105
|
+
build() {
|
|
106
|
+
let result = new LiteralCommandNode(
|
|
107
|
+
this.getLiteral(),
|
|
108
|
+
this.getCommand(),
|
|
109
|
+
this.getRequirement(),
|
|
110
|
+
this.getRedirect(),
|
|
111
|
+
this.getRedirectModifier(),
|
|
112
|
+
this.isFork()
|
|
113
|
+
);
|
|
114
|
+
for (let arg of this.getArguments()) {
|
|
115
|
+
result.addChild(arg);
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const literal = LiteralArgumentBuilder.literal;
|
|
121
|
+
|
|
122
|
+
exports.LiteralArgumentBuilder = LiteralArgumentBuilder;
|
|
123
|
+
exports.LiteralCommandNode = LiteralCommandNode;
|
|
124
|
+
exports.literal = literal;
|
|
125
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl0ZXJhbEFyZ3VtZW50QnVpbGRlci1zNlBVTW1TVC5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvdHJlZS9MaXRlcmFsQ29tbWFuZE5vZGUudHMiLCIuLi9zcmMvbGliL2J1aWxkZXIvTGl0ZXJhbEFyZ3VtZW50QnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBDb21tYW5kIGZyb20gJy4uL0NvbW1hbmQnO1xuaW1wb3J0IENvbW1hbmROb2RlIGZyb20gJy4vQ29tbWFuZE5vZGUnO1xuaW1wb3J0IHR5cGUgUHJlZGljYXRlIGZyb20gJy4uL1ByZWRpY2F0ZSc7XG5pbXBvcnQgdHlwZSBSZWRpcmVjdE1vZGlmaWVyIGZyb20gJy4uL1JlZGlyZWN0TW9kaWZpZXInO1xuaW1wb3J0IFN0cmluZ1JlYWRlciBmcm9tICcuLi9TdHJpbmdSZWFkZXInO1xuaW1wb3J0IExpdGVyYWxBcmd1bWVudEJ1aWxkZXIgZnJvbSAnLi4vYnVpbGRlci9MaXRlcmFsQXJndW1lbnRCdWlsZGVyJztcbmltcG9ydCB0eXBlIENvbW1hbmRDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ29tbWFuZENvbnRleHQnO1xuaW1wb3J0IHR5cGUgQ29tbWFuZENvbnRleHRCdWlsZGVyIGZyb20gJy4uL2NvbnRleHQvQ29tbWFuZENvbnRleHRCdWlsZGVyJztcbmltcG9ydCBTdHJpbmdSYW5nZSBmcm9tICcuLi9jb250ZXh0L1N0cmluZ1JhbmdlJztcbmltcG9ydCBDb21tYW5kU3ludGF4RXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbnMvQ29tbWFuZFN5bnRheEV4Y2VwdGlvbic7XG5pbXBvcnQgU3VnZ2VzdGlvbnMgZnJvbSAnLi4vc3VnZ2VzdGlvbi9TdWdnZXN0aW9ucyc7XG5pbXBvcnQgdHlwZSBTdWdnZXN0aW9uc0J1aWxkZXIgZnJvbSAnLi4vc3VnZ2VzdGlvbi9TdWdnZXN0aW9uc0J1aWxkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXRlcmFsQ29tbWFuZE5vZGU8Uz4gZXh0ZW5kcyBDb21tYW5kTm9kZTxTPiB7XG4gICAgcHJpdmF0ZSBsaXRlcmFsOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGxpdGVyYWw6IHN0cmluZyxcbiAgICAgICAgY29tbWFuZDogQ29tbWFuZDxTPixcbiAgICAgICAgcmVxdWlyZW1lbnQ6IFByZWRpY2F0ZTxTPixcbiAgICAgICAgcmVkaXJlY3Q6IENvbW1hbmROb2RlPFM+LFxuICAgICAgICBtb2RpZmllcjogUmVkaXJlY3RNb2RpZmllcjxTPiB8IG51bGwsXG4gICAgICAgIGZvcmtzOiBib29sZWFuXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbW1hbmQsIHJlcXVpcmVtZW50LCByZWRpcmVjdCwgbW9kaWZpZXIsIGZvcmtzKTtcbiAgICAgICAgdGhpcy5saXRlcmFsID0gbGl0ZXJhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Tm9kZVR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdsaXRlcmFsJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGl0ZXJhbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpdGVyYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlKHJlYWRlcjogU3RyaW5nUmVhZGVyLCBjb250ZXh0QnVpbGRlcjogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+KSB7XG4gICAgICAgIGxldCBzdGFydCA9IHJlYWRlci5nZXRDdXJzb3IoKTtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuX19wYXJzZShyZWFkZXIpO1xuICAgICAgICBpZiAoZW5kID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRCdWlsZGVyLndpdGhOb2RlKHRoaXMsIFN0cmluZ1JhbmdlLmJldHdlZW4oc3RhcnQsIGVuZCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5CVUlMVF9JTl9FWENFUFRJT05TLmxpdGVyYWxJbmNvcnJlY3QoKS5jcmVhdGVXaXRoQ29udGV4dChyZWFkZXIsIHRoaXMubGl0ZXJhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfX3BhcnNlKHJlYWRlcjogU3RyaW5nUmVhZGVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcmVhZGVyLmdldEN1cnNvcigpO1xuICAgICAgICBpZiAocmVhZGVyLmNhblJlYWQodGhpcy5saXRlcmFsLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIGxldCBlbmQgPSBzdGFydCArIHRoaXMubGl0ZXJhbC5sZW5ndGg7XG4gICAgICAgICAgICBpZiAocmVhZGVyLmdldFN0cmluZygpLnN1YnN0cmluZyhzdGFydCwgZW5kKSA9PT0gdGhpcy5saXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnNldEN1cnNvcihlbmQpO1xuICAgICAgICAgICAgICAgIGlmICghcmVhZGVyLmNhblJlYWQoKSB8fCByZWFkZXIucGVlaygpID09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5zZXRDdXJzb3Ioc3RhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RTdWdnZXN0aW9ucyhjb250ZXh0OiBDb21tYW5kQ29udGV4dDxTPiwgYnVpbGRlcjogU3VnZ2VzdGlvbnNCdWlsZGVyKTogUHJvbWlzZTxTdWdnZXN0aW9ucz4ge1xuICAgICAgICBpZiAodGhpcy5saXRlcmFsLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChidWlsZGVyLmdldFJlbWFpbmluZygpLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRlci5zdWdnZXN0KHRoaXMubGl0ZXJhbCkuYnVpbGRQcm9taXNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gU3VnZ2VzdGlvbnMuZW1wdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkSW5wdXQoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fX3BhcnNlKG5ldyBTdHJpbmdSZWFkZXIoaW5wdXQpKSA+IC0xO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcXVhbHMobzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzID09PSBvKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIExpdGVyYWxDb21tYW5kTm9kZSkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5saXRlcmFsICE9PSBvLmxpdGVyYWwpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRVc2FnZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQnVpbGRlcigpOiBMaXRlcmFsQXJndW1lbnRCdWlsZGVyPFM+IHtcbiAgICAgICAgbGV0IGJ1aWxkZXI6IExpdGVyYWxBcmd1bWVudEJ1aWxkZXI8Uz4gPSBMaXRlcmFsQXJndW1lbnRCdWlsZGVyLmxpdGVyYWwodGhpcy5saXRlcmFsKTtcbiAgICAgICAgYnVpbGRlci5yZXF1aXJlcyh0aGlzLmdldFJlcXVpcmVtZW50KCkpO1xuICAgICAgICBidWlsZGVyLmZvcndhcmQodGhpcy5nZXRSZWRpcmVjdCgpISwgdGhpcy5nZXRSZWRpcmVjdE1vZGlmaWVyKCksIHRoaXMuaXNGb3JrKCkpO1xuICAgICAgICBpZiAodGhpcy5nZXRDb21tYW5kKCkgIT0gbnVsbCkgYnVpbGRlci5leGVjdXRlcyh0aGlzLmdldENvbW1hbmQoKSEpO1xuXG4gICAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0ZWRLZXkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhhbXBsZXMoKTogSXRlcmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbdGhpcy5saXRlcmFsXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICc8bGl0ZXJhbCAnICsgdGhpcy5saXRlcmFsICsgJz4nO1xuICAgIH1cbn1cbiIsImltcG9ydCBMaXRlcmFsQ29tbWFuZE5vZGUgZnJvbSAnLi4vdHJlZS9MaXRlcmFsQ29tbWFuZE5vZGUnO1xuaW1wb3J0IEFyZ3VtZW50QnVpbGRlciBmcm9tICcuL0FyZ3VtZW50QnVpbGRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpdGVyYWxBcmd1bWVudEJ1aWxkZXI8Uz4gZXh0ZW5kcyBBcmd1bWVudEJ1aWxkZXI8UywgTGl0ZXJhbEFyZ3VtZW50QnVpbGRlcjxTPj4ge1xuICAgIHByaXZhdGUgbGl0ZXJhbDogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGxpdGVyYWw6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmxpdGVyYWwgPSBsaXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbGl0ZXJhbDxTPihuYW1lOiBzdHJpbmcpOiBMaXRlcmFsQXJndW1lbnRCdWlsZGVyPFM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaXRlcmFsQXJndW1lbnRCdWlsZGVyKG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaGlzKCk6IExpdGVyYWxBcmd1bWVudEJ1aWxkZXI8Uz4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGl0ZXJhbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saXRlcmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZCgpOiBMaXRlcmFsQ29tbWFuZE5vZGU8Uz4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBMaXRlcmFsQ29tbWFuZE5vZGU8Uz4gPSBuZXcgTGl0ZXJhbENvbW1hbmROb2RlKFxuICAgICAgICAgICAgdGhpcy5nZXRMaXRlcmFsKCksXG4gICAgICAgICAgICB0aGlzLmdldENvbW1hbmQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVxdWlyZW1lbnQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVkaXJlY3QoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVkaXJlY3RNb2RpZmllcigpLFxuICAgICAgICAgICAgdGhpcy5pc0ZvcmsoKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBhcmcgb2YgdGhpcy5nZXRBcmd1bWVudHMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFkZENoaWxkKGFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxpdGVyYWwgPSBMaXRlcmFsQXJndW1lbnRCdWlsZGVyLmxpdGVyYWw7XG4iXSwibmFtZXMiOlsiQ29tbWFuZE5vZGUiLCJTdHJpbmdSYW5nZSIsIkNvbW1hbmRTeW50YXhFeGNlcHRpb24iLCJTdWdnZXN0aW9ucyIsIlN0cmluZ1JlYWRlciIsIkFyZ3VtZW50QnVpbGRlciIsImxpdGVyYWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQWFBLE1BQXFCLDJCQUE4QkEsNEJBQWUsQ0FBQTtBQUFBLEVBQ3RELE9BQUEsQ0FBQTtBQUFBLEVBRUQsWUFDSCxPQUNBLEVBQUEsT0FBQSxFQUNBLFdBQ0EsRUFBQSxRQUFBLEVBQ0EsVUFDQSxLQUNGLEVBQUE7QUFDRSxJQUFB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
|