@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,365 @@
|
|
|
1
|
+
import CommandContextBuilder from './context/CommandContextBuilder.es.js';
|
|
2
|
+
import { C as CommandSyntaxException } from '../CommandSyntaxException-Dz8Qlq9d.js';
|
|
3
|
+
import ParseResults from './ParseResults.es.js';
|
|
4
|
+
import RootCommandNode from './tree/RootCommandNode.es.js';
|
|
5
|
+
import StringReader from './StringReader.es.js';
|
|
6
|
+
import Suggestions from './suggestion/Suggestions.es.js';
|
|
7
|
+
import SuggestionsBuilder from './suggestion/SuggestionsBuilder.es.js';
|
|
8
|
+
import './context/StringRange.es.js';
|
|
9
|
+
import './context/CommandContext.es.js';
|
|
10
|
+
import './util/isEqual.es.js';
|
|
11
|
+
import './context/SuggestionContext.es.js';
|
|
12
|
+
import './context/ParsedCommandNode.es.js';
|
|
13
|
+
import './LiteralMessage.es.js';
|
|
14
|
+
import './tree/CommandNode.es.js';
|
|
15
|
+
import './suggestion/Suggestion.es.js';
|
|
16
|
+
import './suggestion/IntegerSuggestion.es.js';
|
|
17
|
+
|
|
18
|
+
const ARGUMENT_SEPARATOR = " ";
|
|
19
|
+
const USAGE_OPTIONAL_OPEN = "[";
|
|
20
|
+
const USAGE_OPTIONAL_CLOSE = "]";
|
|
21
|
+
const USAGE_REQUIRED_OPEN = "(";
|
|
22
|
+
const USAGE_REQUIRED_CLOSE = ")";
|
|
23
|
+
const USAGE_OR = "|";
|
|
24
|
+
class CommandDispatcher {
|
|
25
|
+
root;
|
|
26
|
+
consumer = {
|
|
27
|
+
onCommandComplete() {
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
constructor(root = null) {
|
|
31
|
+
this.root = root || new RootCommandNode();
|
|
32
|
+
}
|
|
33
|
+
register(command) {
|
|
34
|
+
let build = command.build();
|
|
35
|
+
this.root.addChild(build);
|
|
36
|
+
return build;
|
|
37
|
+
}
|
|
38
|
+
setConsumer(consumer) {
|
|
39
|
+
this.consumer = consumer;
|
|
40
|
+
}
|
|
41
|
+
execute(input, source = null) {
|
|
42
|
+
if (typeof input === "string")
|
|
43
|
+
input = new StringReader(input);
|
|
44
|
+
let parse;
|
|
45
|
+
if (input instanceof StringReader) {
|
|
46
|
+
if (source)
|
|
47
|
+
parse = this.parse(input, source);
|
|
48
|
+
} else
|
|
49
|
+
parse = input;
|
|
50
|
+
if (parse.getReader().canRead()) {
|
|
51
|
+
if (parse.getExceptions().size === 1) {
|
|
52
|
+
throw parse.getExceptions().values().next().value;
|
|
53
|
+
} else if (parse.getContext().getRange().isEmpty()) {
|
|
54
|
+
throw CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherUnknownCommand().createWithContext(
|
|
55
|
+
parse.getReader()
|
|
56
|
+
);
|
|
57
|
+
} else {
|
|
58
|
+
throw CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherUnknownArgument().createWithContext(
|
|
59
|
+
parse.getReader()
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
let result = [];
|
|
64
|
+
let forked = false;
|
|
65
|
+
let foundCommand = false;
|
|
66
|
+
let command = parse.getReader().getString();
|
|
67
|
+
let original = parse.getContext().build(command);
|
|
68
|
+
let contexts = [];
|
|
69
|
+
contexts.push(original);
|
|
70
|
+
let next = null;
|
|
71
|
+
while (contexts !== null) {
|
|
72
|
+
for (let i = 0; i < contexts.length; i++) {
|
|
73
|
+
let context = contexts[i];
|
|
74
|
+
let child = context.getChild();
|
|
75
|
+
if (child) {
|
|
76
|
+
forked = forked || context.isForked();
|
|
77
|
+
if (child.hasNodes()) {
|
|
78
|
+
foundCommand = true;
|
|
79
|
+
let modifier = context.getRedirectModifier();
|
|
80
|
+
if (!modifier) {
|
|
81
|
+
if (!next)
|
|
82
|
+
next = [];
|
|
83
|
+
next.push(child.copyFor(context.getSource()));
|
|
84
|
+
} else {
|
|
85
|
+
try {
|
|
86
|
+
let results = modifier.apply(context);
|
|
87
|
+
if (results.length !== 0) {
|
|
88
|
+
if (!next)
|
|
89
|
+
next = [];
|
|
90
|
+
for (let source2 of results) {
|
|
91
|
+
next.push(child.copyFor(source2));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
} catch (ex) {
|
|
95
|
+
this.consumer.onCommandComplete(context, false, 0);
|
|
96
|
+
if (!forked)
|
|
97
|
+
throw ex;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
} else if (context.getCommand()) {
|
|
102
|
+
foundCommand = true;
|
|
103
|
+
try {
|
|
104
|
+
let value = context.getCommand()(context);
|
|
105
|
+
result.push(value);
|
|
106
|
+
this.consumer.onCommandComplete(context, true, value);
|
|
107
|
+
} catch (ex) {
|
|
108
|
+
this.consumer.onCommandComplete(context, false, ex);
|
|
109
|
+
if (!forked)
|
|
110
|
+
throw ex;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
contexts = next;
|
|
115
|
+
next = null;
|
|
116
|
+
}
|
|
117
|
+
if (!foundCommand) {
|
|
118
|
+
this.consumer.onCommandComplete(original, false, 0);
|
|
119
|
+
throw CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherUnknownCommand().createWithContext(
|
|
120
|
+
parse.getReader()
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
parse(command, source) {
|
|
126
|
+
if (typeof command === "string")
|
|
127
|
+
command = new StringReader(command);
|
|
128
|
+
let context = new CommandContextBuilder(this, source, this.root, command.getCursor());
|
|
129
|
+
return this.parseNodes(this.root, command, context);
|
|
130
|
+
}
|
|
131
|
+
parseNodes(node, originalReader, contextSoFar) {
|
|
132
|
+
let source = contextSoFar.getSource();
|
|
133
|
+
let errors = null;
|
|
134
|
+
let potentials = null;
|
|
135
|
+
let cursor = originalReader.getCursor();
|
|
136
|
+
for (let child of node.getRelevantNodes(originalReader)) {
|
|
137
|
+
if (!child.canUse(source))
|
|
138
|
+
continue;
|
|
139
|
+
let context = contextSoFar.copy();
|
|
140
|
+
let reader = new StringReader(originalReader);
|
|
141
|
+
try {
|
|
142
|
+
child.parse(reader, context);
|
|
143
|
+
if (reader.canRead()) {
|
|
144
|
+
if (reader.peek() != ARGUMENT_SEPARATOR)
|
|
145
|
+
throw CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherExpectedArgumentSeparator().createWithContext(
|
|
146
|
+
reader
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
} catch (ex) {
|
|
150
|
+
if (errors == null) {
|
|
151
|
+
errors = /* @__PURE__ */ new Map();
|
|
152
|
+
}
|
|
153
|
+
errors.set(child, ex);
|
|
154
|
+
reader.setCursor(cursor);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
context.withCommand(child.getCommand());
|
|
158
|
+
if (reader.canRead(!child.getRedirect() ? 2 : 1)) {
|
|
159
|
+
reader.skip();
|
|
160
|
+
if (child.getRedirect()) {
|
|
161
|
+
let childContext = new CommandContextBuilder(
|
|
162
|
+
this,
|
|
163
|
+
source,
|
|
164
|
+
child.getRedirect(),
|
|
165
|
+
reader.getCursor()
|
|
166
|
+
);
|
|
167
|
+
let parse = this.parseNodes(child.getRedirect(), reader, childContext);
|
|
168
|
+
context.withChild(parse.getContext());
|
|
169
|
+
return new ParseResults(context, parse.getReader(), parse.getExceptions());
|
|
170
|
+
} else {
|
|
171
|
+
let parse = this.parseNodes(child, reader, context);
|
|
172
|
+
if (potentials == null) {
|
|
173
|
+
potentials = [];
|
|
174
|
+
}
|
|
175
|
+
potentials.push(parse);
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
if (potentials == null) {
|
|
179
|
+
potentials = [];
|
|
180
|
+
}
|
|
181
|
+
potentials.push(new ParseResults(context, reader, /* @__PURE__ */ new Map()));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (potentials) {
|
|
185
|
+
if (potentials.length > 1) {
|
|
186
|
+
potentials.sort((a, b) => {
|
|
187
|
+
if (!a.getReader().canRead() && b.getReader().canRead()) {
|
|
188
|
+
return -1;
|
|
189
|
+
}
|
|
190
|
+
if (a.getReader().canRead() && !b.getReader().canRead()) {
|
|
191
|
+
return 1;
|
|
192
|
+
}
|
|
193
|
+
if (a.getExceptions().size === 0 && b.getExceptions().size !== 0) {
|
|
194
|
+
return -1;
|
|
195
|
+
}
|
|
196
|
+
if (a.getExceptions().size !== 0 && b.getExceptions().size === 0) {
|
|
197
|
+
return 1;
|
|
198
|
+
}
|
|
199
|
+
return 0;
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return potentials[0];
|
|
203
|
+
}
|
|
204
|
+
return new ParseResults(contextSoFar, originalReader, errors == null ? /* @__PURE__ */ new Map() : errors);
|
|
205
|
+
}
|
|
206
|
+
getAllUsage(node, source, restricted) {
|
|
207
|
+
const result = [];
|
|
208
|
+
this.__getAllUsage(node, source, result, "", restricted);
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
__getAllUsage(node, source, result, prefix = "", restricted) {
|
|
212
|
+
if (restricted && !node.canUse(source)) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (node.getCommand() != null) {
|
|
216
|
+
result.push(prefix);
|
|
217
|
+
}
|
|
218
|
+
if (node.getRedirect() != null) {
|
|
219
|
+
const redirect = node.getRedirect() === this.root ? "..." : "-> " + node.getRedirect()?.getUsageText();
|
|
220
|
+
result.push(
|
|
221
|
+
prefix.length === 0 ? node.getUsageText() + ARGUMENT_SEPARATOR + redirect : prefix + ARGUMENT_SEPARATOR + redirect
|
|
222
|
+
);
|
|
223
|
+
} else if (node.getChildrenCount() > 0) {
|
|
224
|
+
for (let child of node.getChildren()) {
|
|
225
|
+
this.__getAllUsage(
|
|
226
|
+
child,
|
|
227
|
+
source,
|
|
228
|
+
result,
|
|
229
|
+
prefix.length === 0 ? child.getUsageText() : prefix + ARGUMENT_SEPARATOR + child.getUsageText(),
|
|
230
|
+
restricted
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
getSmartUsage(node, source) {
|
|
236
|
+
let result = /* @__PURE__ */ new Map();
|
|
237
|
+
let optional = node.getCommand() !== null;
|
|
238
|
+
for (let child of node.getChildren()) {
|
|
239
|
+
let usage = this.__getSmartUsage(child, source, optional, false);
|
|
240
|
+
if (usage !== null) {
|
|
241
|
+
result.set(child, usage);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return result;
|
|
245
|
+
}
|
|
246
|
+
__getSmartUsage(node, source, optional, deep) {
|
|
247
|
+
if (!node.canUse(source)) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
let self = optional ? USAGE_OPTIONAL_OPEN + node.getUsageText() + USAGE_OPTIONAL_CLOSE : node.getUsageText();
|
|
251
|
+
let childOptional = node.getCommand() != null;
|
|
252
|
+
let open = childOptional ? USAGE_OPTIONAL_OPEN : USAGE_REQUIRED_OPEN;
|
|
253
|
+
let close = childOptional ? USAGE_OPTIONAL_CLOSE : USAGE_REQUIRED_CLOSE;
|
|
254
|
+
if (!deep) {
|
|
255
|
+
if (node.getRedirect() != null) {
|
|
256
|
+
let redirect = node.getRedirect() == this.root ? "..." : "-> " + node.getRedirect()?.getUsageText();
|
|
257
|
+
return self + ARGUMENT_SEPARATOR + redirect;
|
|
258
|
+
} else {
|
|
259
|
+
let children = [...node.getChildren()].filter((c) => c.canUse(source));
|
|
260
|
+
if (children.length == 1) {
|
|
261
|
+
let usage = this.__getSmartUsage(
|
|
262
|
+
children[0],
|
|
263
|
+
// FIXME
|
|
264
|
+
source,
|
|
265
|
+
childOptional,
|
|
266
|
+
childOptional
|
|
267
|
+
);
|
|
268
|
+
if (usage !== null) {
|
|
269
|
+
return self + ARGUMENT_SEPARATOR + usage;
|
|
270
|
+
}
|
|
271
|
+
} else if (children.length > 1) {
|
|
272
|
+
let childUsage = /* @__PURE__ */ new Set();
|
|
273
|
+
for (let child of children) {
|
|
274
|
+
let usage = this.__getSmartUsage(child, source, childOptional, true);
|
|
275
|
+
if (usage !== null) {
|
|
276
|
+
childUsage.add(usage);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (childUsage.size === 1) {
|
|
280
|
+
let usage = childUsage.values().next().value;
|
|
281
|
+
return self + ARGUMENT_SEPARATOR + (childOptional ? USAGE_OPTIONAL_OPEN + usage + USAGE_OPTIONAL_CLOSE : usage);
|
|
282
|
+
} else if (childUsage.size > 1) {
|
|
283
|
+
let builder = open;
|
|
284
|
+
let count = 0;
|
|
285
|
+
for (let child of children) {
|
|
286
|
+
if (count > 0) {
|
|
287
|
+
builder += USAGE_OR;
|
|
288
|
+
}
|
|
289
|
+
builder += child.getUsageText();
|
|
290
|
+
count++;
|
|
291
|
+
}
|
|
292
|
+
if (count > 0) {
|
|
293
|
+
builder += close;
|
|
294
|
+
return self + ARGUMENT_SEPARATOR + builder;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return self;
|
|
301
|
+
}
|
|
302
|
+
async getCompletionSuggestions(parse, cursor = parse.getReader().getTotalLength()) {
|
|
303
|
+
let context = parse.getContext();
|
|
304
|
+
let nodeBeforeCursor = context.findSuggestionContext(cursor);
|
|
305
|
+
let parent = nodeBeforeCursor.parent;
|
|
306
|
+
let start = Math.min(nodeBeforeCursor.startPos, cursor);
|
|
307
|
+
let fullInput = parse.getReader().getString();
|
|
308
|
+
let truncatedInput = fullInput.substring(0, cursor);
|
|
309
|
+
let futures = [];
|
|
310
|
+
for (let node of parent.getChildren()) {
|
|
311
|
+
let future = await Suggestions.empty();
|
|
312
|
+
try {
|
|
313
|
+
future = await node.listSuggestions(
|
|
314
|
+
context.build(truncatedInput),
|
|
315
|
+
new SuggestionsBuilder(truncatedInput, start)
|
|
316
|
+
);
|
|
317
|
+
} catch (ignored) {
|
|
318
|
+
}
|
|
319
|
+
futures.push(future);
|
|
320
|
+
}
|
|
321
|
+
return Promise.resolve(Suggestions.merge(fullInput, futures));
|
|
322
|
+
}
|
|
323
|
+
getRoot() {
|
|
324
|
+
return this.root;
|
|
325
|
+
}
|
|
326
|
+
getPath(target) {
|
|
327
|
+
let nodes = [];
|
|
328
|
+
this.addPaths(this.root, nodes, []);
|
|
329
|
+
for (let list of nodes) {
|
|
330
|
+
if (list[list.length - 1] === target) {
|
|
331
|
+
let result = [];
|
|
332
|
+
for (let node of list) {
|
|
333
|
+
if (node !== this.root) {
|
|
334
|
+
result.push(node.getName());
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return [];
|
|
341
|
+
}
|
|
342
|
+
findNode(path) {
|
|
343
|
+
let node = this.root;
|
|
344
|
+
for (let name of path) {
|
|
345
|
+
node = node.getChild(name);
|
|
346
|
+
if (!node)
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
return node;
|
|
350
|
+
}
|
|
351
|
+
findAmbiguities(consumer, context) {
|
|
352
|
+
this.root.findAmbiguities(consumer, context);
|
|
353
|
+
}
|
|
354
|
+
addPaths(node, result, parents) {
|
|
355
|
+
let current = [];
|
|
356
|
+
current.push(...parents);
|
|
357
|
+
current.push(node);
|
|
358
|
+
result.push(current);
|
|
359
|
+
for (let child of node.getChildren())
|
|
360
|
+
this.addPaths(child, result, current);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
export { CommandDispatcher as default };
|
|
365
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZERpc3BhdGNoZXIuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvQ29tbWFuZERpc3BhdGNoZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQW1iaWd1aXR5Q29uc3VtZXIgZnJvbSAnLi9BbWJpZ3VpdHlDb25zdW1lcic7XG5pbXBvcnQgdHlwZSBDb21tYW5kQ29udGV4dCBmcm9tICcuL2NvbnRleHQvQ29tbWFuZENvbnRleHQnO1xuaW1wb3J0IENvbW1hbmRDb250ZXh0QnVpbGRlciBmcm9tICcuL2NvbnRleHQvQ29tbWFuZENvbnRleHRCdWlsZGVyJztcbmltcG9ydCB0eXBlIENvbW1hbmROb2RlIGZyb20gJy4vdHJlZS9Db21tYW5kTm9kZSc7XG5pbXBvcnQgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbnMvQ29tbWFuZFN5bnRheEV4Y2VwdGlvbic7XG5pbXBvcnQgdHlwZSBMaXRlcmFsQXJndW1lbnRCdWlsZGVyIGZyb20gJy4vYnVpbGRlci9MaXRlcmFsQXJndW1lbnRCdWlsZGVyJztcbmltcG9ydCB0eXBlIExpdGVyYWxDb21tYW5kTm9kZSBmcm9tICcuL3RyZWUvTGl0ZXJhbENvbW1hbmROb2RlJztcbmltcG9ydCBQYXJzZVJlc3VsdHMgZnJvbSAnLi9QYXJzZVJlc3VsdHMnO1xuaW1wb3J0IHR5cGUgUmVzdWx0Q29uc3VtZXIgZnJvbSAnLi9SZXN1bHRDb25zdW1lcic7XG5pbXBvcnQgUm9vdENvbW1hbmROb2RlIGZyb20gJy4vdHJlZS9Sb290Q29tbWFuZE5vZGUnO1xuaW1wb3J0IFN0cmluZ1JlYWRlciBmcm9tICcuL1N0cmluZ1JlYWRlcic7XG5pbXBvcnQgdHlwZSBTdWdnZXN0aW9uQ29udGV4dCBmcm9tICcuL2NvbnRleHQvU3VnZ2VzdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN1Z2dlc3Rpb25zIGZyb20gJy4vc3VnZ2VzdGlvbi9TdWdnZXN0aW9ucyc7XG5pbXBvcnQgU3VnZ2VzdGlvbnNCdWlsZGVyIGZyb20gJy4vc3VnZ2VzdGlvbi9TdWdnZXN0aW9uc0J1aWxkZXInO1xuXG5jb25zdCBBUkdVTUVOVF9TRVBBUkFUT1IgPSAnICc7XG5jb25zdCBVU0FHRV9PUFRJT05BTF9PUEVOID0gJ1snO1xuY29uc3QgVVNBR0VfT1BUSU9OQUxfQ0xPU0UgPSAnXSc7XG5jb25zdCBVU0FHRV9SRVFVSVJFRF9PUEVOID0gJygnO1xuY29uc3QgVVNBR0VfUkVRVUlSRURfQ0xPU0UgPSAnKSc7XG5jb25zdCBVU0FHRV9PUiA9ICd8JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tbWFuZERpc3BhdGNoZXI8Uz4ge1xuICAgIHByaXZhdGUgcm9vdDogUm9vdENvbW1hbmROb2RlPFM+O1xuXG4gICAgcHJpdmF0ZSBjb25zdW1lcjogUmVzdWx0Q29uc3VtZXI8Uz4gPSB7XG4gICAgICAgIG9uQ29tbWFuZENvbXBsZXRlKCkge31cbiAgICB9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHJvb3Q6IFJvb3RDb21tYW5kTm9kZTxTPiB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3QgfHwgbmV3IFJvb3RDb21tYW5kTm9kZTxTPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlcihjb21tYW5kOiBMaXRlcmFsQXJndW1lbnRCdWlsZGVyPFM+KTogTGl0ZXJhbENvbW1hbmROb2RlPFM+IHtcbiAgICAgICAgbGV0IGJ1aWxkID0gY29tbWFuZC5idWlsZCgpO1xuICAgICAgICB0aGlzLnJvb3QuYWRkQ2hpbGQoYnVpbGQpO1xuICAgICAgICByZXR1cm4gYnVpbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldENvbnN1bWVyKGNvbnN1bWVyOiBSZXN1bHRDb25zdW1lcjxTPikge1xuICAgICAgICB0aGlzLmNvbnN1bWVyID0gY29uc3VtZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGV4ZWN1dGUoXG4gICAgICAgIGlucHV0OiBzdHJpbmcgfCBTdHJpbmdSZWFkZXIgfCBQYXJzZVJlc3VsdHM8Uz4sXG4gICAgICAgIHNvdXJjZTogUyB8IG51bGwgPSBudWxsXG4gICAgKTogUHJvbWlzZTxhbnk+IHwgUHJvbWlzZTxhbnk+W10gfCBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykgaW5wdXQgPSBuZXcgU3RyaW5nUmVhZGVyKGlucHV0KTtcblxuICAgICAgICBsZXQgcGFyc2UhOiBQYXJzZVJlc3VsdHM8Uz47IC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0byBtYWtlIFR5cGVTY3JpcHQgaGFwcHkuXG4gICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFN0cmluZ1JlYWRlcikge1xuICAgICAgICAgICAgaWYgKHNvdXJjZSkgcGFyc2UgPSB0aGlzLnBhcnNlKGlucHV0LCBzb3VyY2UpO1xuICAgICAgICB9IGVsc2UgcGFyc2UgPSBpbnB1dDtcblxuICAgICAgICBpZiAocGFyc2UuZ2V0UmVhZGVyKCkuY2FuUmVhZCgpKSB7XG4gICAgICAgICAgICBpZiAocGFyc2UuZ2V0RXhjZXB0aW9ucygpLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBwYXJzZS5nZXRFeGNlcHRpb25zKCkudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJzZS5nZXRDb250ZXh0KCkuZ2V0UmFuZ2UoKS5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBDb21tYW5kU3ludGF4RXhjZXB0aW9uLkJVSUxUX0lOX0VYQ0VQVElPTlMuZGlzcGF0Y2hlclVua25vd25Db21tYW5kKCkuY3JlYXRlV2l0aENvbnRleHQoXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlLmdldFJlYWRlcigpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5CVUlMVF9JTl9FWENFUFRJT05TLmRpc3BhdGNoZXJVbmtub3duQXJndW1lbnQoKS5jcmVhdGVXaXRoQ29udGV4dChcbiAgICAgICAgICAgICAgICAgICAgcGFyc2UuZ2V0UmVhZGVyKClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgZm9ya2VkID0gZmFsc2U7XG4gICAgICAgIGxldCBmb3VuZENvbW1hbmQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNvbW1hbmQgPSBwYXJzZS5nZXRSZWFkZXIoKS5nZXRTdHJpbmcoKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsID0gcGFyc2UuZ2V0Q29udGV4dCgpLmJ1aWxkKGNvbW1hbmQpO1xuICAgICAgICBsZXQgY29udGV4dHM6IEFycmF5PENvbW1hbmRDb250ZXh0PFM+PiB8IG51bGwgPSBbXTtcbiAgICAgICAgY29udGV4dHMucHVzaChvcmlnaW5hbCk7XG4gICAgICAgIGxldCBuZXh0OiBDb21tYW5kQ29udGV4dDxTPltdIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHdoaWxlICgoY29udGV4dHMgYXMgYW55KSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZXh0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZXh0ID0gY29udGV4dHNbaV0hOyAvLyBGSVhNRVxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IGNvbnRleHQuZ2V0Q2hpbGQoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ya2VkID0gZm9ya2VkIHx8IGNvbnRleHQuaXNGb3JrZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmhhc05vZGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZpZXIgPSBjb250ZXh0LmdldFJlZGlyZWN0TW9kaWZpZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHQpIG5leHQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnB1c2goY2hpbGQuY29weUZvcihjb250ZXh0LmdldFNvdXJjZSgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRzOiBBcnJheTxTPiA9IG1vZGlmaWVyLmFwcGx5KGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCkgbmV4dCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQucHVzaChjaGlsZC5jb3B5Rm9yKHNvdXJjZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lci5vbkNvbW1hbmRDb21wbGV0ZShjb250ZXh0LCBmYWxzZSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9ya2VkKSB0aHJvdyBleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuZ2V0Q29tbWFuZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjb250ZXh0LmdldENvbW1hbmQoKShjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZXIub25Db21tYW5kQ29tcGxldGUoY29udGV4dCwgdHJ1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lci5vbkNvbW1hbmRDb21wbGV0ZShjb250ZXh0LCBmYWxzZSwgZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3JrZWQpIHRocm93IGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250ZXh0cyA9IG5leHQhOyAvLyBGSVhNRVxuICAgICAgICAgICAgbmV4dCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWZvdW5kQ29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lci5vbkNvbW1hbmRDb21wbGV0ZShvcmlnaW5hbCwgZmFsc2UsIDApO1xuICAgICAgICAgICAgdGhyb3cgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5CVUlMVF9JTl9FWENFUFRJT05TLmRpc3BhdGNoZXJVbmtub3duQ29tbWFuZCgpLmNyZWF0ZVdpdGhDb250ZXh0KFxuICAgICAgICAgICAgICAgIHBhcnNlLmdldFJlYWRlcigpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2UoY29tbWFuZDogc3RyaW5nIHwgU3RyaW5nUmVhZGVyLCBzb3VyY2U6IFMpOiBQYXJzZVJlc3VsdHM8Uz4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT09ICdzdHJpbmcnKSBjb21tYW5kID0gbmV3IFN0cmluZ1JlYWRlcihjb21tYW5kKTtcblxuICAgICAgICBsZXQgY29udGV4dDogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+ID0gbmV3IENvbW1hbmRDb250ZXh0QnVpbGRlcih0aGlzLCBzb3VyY2UsIHRoaXMucm9vdCwgY29tbWFuZC5nZXRDdXJzb3IoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlTm9kZXModGhpcy5yb290LCBjb21tYW5kLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlTm9kZXMoXG4gICAgICAgIG5vZGU6IENvbW1hbmROb2RlPFM+LFxuICAgICAgICBvcmlnaW5hbFJlYWRlcjogU3RyaW5nUmVhZGVyLFxuICAgICAgICBjb250ZXh0U29GYXI6IENvbW1hbmRDb250ZXh0QnVpbGRlcjxTPlxuICAgICk6IFBhcnNlUmVzdWx0czxTPiB7XG4gICAgICAgIGxldCBzb3VyY2U6IFMgPSBjb250ZXh0U29GYXIuZ2V0U291cmNlKCk7XG4gICAgICAgIGxldCBlcnJvcnM6IE1hcDxDb21tYW5kTm9kZTxTPiwgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbj4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHBvdGVudGlhbHM6IFBhcnNlUmVzdWx0czxTPltdIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBjdXJzb3IgPSBvcmlnaW5hbFJlYWRlci5nZXRDdXJzb3IoKTtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5nZXRSZWxldmFudE5vZGVzKG9yaWdpbmFsUmVhZGVyKSkge1xuICAgICAgICAgICAgaWYgKCFjaGlsZC5jYW5Vc2Uoc291cmNlKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGxldCBjb250ZXh0OiBDb21tYW5kQ29udGV4dEJ1aWxkZXI8Uz4gPSBjb250ZXh0U29GYXIuY29weSgpO1xuICAgICAgICAgICAgbGV0IHJlYWRlcjogU3RyaW5nUmVhZGVyID0gbmV3IFN0cmluZ1JlYWRlcihvcmlnaW5hbFJlYWRlcik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNoaWxkLnBhcnNlKHJlYWRlciwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVhZGVyLmNhblJlYWQoKSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRlci5wZWVrKCkgIT0gQVJHVU1FTlRfU0VQQVJBVE9SKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbi5CVUlMVF9JTl9FWENFUFRJT05TLmRpc3BhdGNoZXJFeHBlY3RlZEFyZ3VtZW50U2VwYXJhdG9yKCkuY3JlYXRlV2l0aENvbnRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlcnJvcnMuc2V0KGNoaWxkLCBleCBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIHJlYWRlci5zZXRDdXJzb3IoY3Vyc29yKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGV4dC53aXRoQ29tbWFuZChjaGlsZC5nZXRDb21tYW5kKCkhKTtcbiAgICAgICAgICAgIGlmIChyZWFkZXIuY2FuUmVhZCghY2hpbGQuZ2V0UmVkaXJlY3QoKSA/IDIgOiAxKSkge1xuICAgICAgICAgICAgICAgIHJlYWRlci5za2lwKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldFJlZGlyZWN0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkQ29udGV4dDogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+ID0gbmV3IENvbW1hbmRDb250ZXh0QnVpbGRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5nZXRSZWRpcmVjdCgpISxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5nZXRDdXJzb3IoKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyc2U6IFBhcnNlUmVzdWx0czxTPiA9IHRoaXMucGFyc2VOb2RlcyhjaGlsZC5nZXRSZWRpcmVjdCgpISwgcmVhZGVyLCBjaGlsZENvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndpdGhDaGlsZChwYXJzZS5nZXRDb250ZXh0KCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFBhcnNlUmVzdWx0cyhjb250ZXh0LCBwYXJzZS5nZXRSZWFkZXIoKSwgcGFyc2UuZ2V0RXhjZXB0aW9ucygpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyc2U6IFBhcnNlUmVzdWx0czxTPiA9IHRoaXMucGFyc2VOb2RlcyhjaGlsZCwgcmVhZGVyLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvdGVudGlhbHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFscy5wdXNoKHBhcnNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFscyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxzLnB1c2gobmV3IFBhcnNlUmVzdWx0cyhjb250ZXh0LCByZWFkZXIsIG5ldyBNYXAoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvdGVudGlhbHMpIHtcbiAgICAgICAgICAgIGlmIChwb3RlbnRpYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhLmdldFJlYWRlcigpLmNhblJlYWQoKSAmJiBiLmdldFJlYWRlcigpLmNhblJlYWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmdldFJlYWRlcigpLmNhblJlYWQoKSAmJiAhYi5nZXRSZWFkZXIoKS5jYW5SZWFkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmdldEV4Y2VwdGlvbnMoKS5zaXplID09PSAwICYmIGIuZ2V0RXhjZXB0aW9ucygpLnNpemUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5nZXRFeGNlcHRpb25zKCkuc2l6ZSAhPT0gMCAmJiBiLmdldEV4Y2VwdGlvbnMoKS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxzWzBdITsgLy8gRklYTUVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUGFyc2VSZXN1bHRzPFM+KGNvbnRleHRTb0Zhciwgb3JpZ2luYWxSZWFkZXIsIGVycm9ycyA9PSBudWxsID8gbmV3IE1hcCgpIDogZXJyb3JzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsVXNhZ2Uobm9kZTogQ29tbWFuZE5vZGU8Uz4sIHNvdXJjZTogUywgcmVzdHJpY3RlZDogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIHRoaXMuX19nZXRBbGxVc2FnZShub2RlLCBzb3VyY2UsIHJlc3VsdCwgJycsIHJlc3RyaWN0ZWQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX19nZXRBbGxVc2FnZShub2RlOiBDb21tYW5kTm9kZTxTPiwgc291cmNlOiBTLCByZXN1bHQ6IHN0cmluZ1tdLCBwcmVmaXggPSAnJywgcmVzdHJpY3RlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAocmVzdHJpY3RlZCAmJiAhbm9kZS5jYW5Vc2Uoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuZ2V0Q29tbWFuZCgpICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHByZWZpeCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5nZXRSZWRpcmVjdCgpICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0ID0gbm9kZS5nZXRSZWRpcmVjdCgpID09PSB0aGlzLnJvb3QgPyAnLi4uJyA6ICctPiAnICsgbm9kZS5nZXRSZWRpcmVjdCgpPy5nZXRVc2FnZVRleHQoKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBub2RlLmdldFVzYWdlVGV4dCgpICsgQVJHVU1FTlRfU0VQQVJBVE9SICsgcmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgOiBwcmVmaXggKyBBUkdVTUVOVF9TRVBBUkFUT1IgKyByZWRpcmVjdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLmdldENoaWxkcmVuQ291bnQoKSA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX19nZXRBbGxVc2FnZShcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXgubGVuZ3RoID09PSAwID8gY2hpbGQuZ2V0VXNhZ2VUZXh0KCkgOiBwcmVmaXggKyBBUkdVTUVOVF9TRVBBUkFUT1IgKyBjaGlsZC5nZXRVc2FnZVRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RlZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U21hcnRVc2FnZShub2RlOiBDb21tYW5kTm9kZTxTPiwgc291cmNlOiBTKTogTWFwPENvbW1hbmROb2RlPFM+LCBzdHJpbmc+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXA8Q29tbWFuZE5vZGU8Uz4sIHN0cmluZz4oKTtcblxuICAgICAgICBsZXQgb3B0aW9uYWwgPSBub2RlLmdldENvbW1hbmQoKSAhPT0gbnVsbDtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICBsZXQgdXNhZ2UgPSB0aGlzLl9fZ2V0U21hcnRVc2FnZShjaGlsZCwgc291cmNlLCBvcHRpb25hbCwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKHVzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNldChjaGlsZCwgdXNhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9fZ2V0U21hcnRVc2FnZShub2RlOiBDb21tYW5kTm9kZTxTPiwgc291cmNlOiBTLCBvcHRpb25hbDogYm9vbGVhbiwgZGVlcDogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIW5vZGUuY2FuVXNlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGYgPSBvcHRpb25hbCA/IFVTQUdFX09QVElPTkFMX09QRU4gKyBub2RlLmdldFVzYWdlVGV4dCgpICsgVVNBR0VfT1BUSU9OQUxfQ0xPU0UgOiBub2RlLmdldFVzYWdlVGV4dCgpO1xuICAgICAgICBsZXQgY2hpbGRPcHRpb25hbCA9IG5vZGUuZ2V0Q29tbWFuZCgpICE9IG51bGw7XG4gICAgICAgIGxldCBvcGVuID0gY2hpbGRPcHRpb25hbCA/IFVTQUdFX09QVElPTkFMX09QRU4gOiBVU0FHRV9SRVFVSVJFRF9PUEVOO1xuICAgICAgICBsZXQgY2xvc2UgPSBjaGlsZE9wdGlvbmFsID8gVVNBR0VfT1BUSU9OQUxfQ0xPU0UgOiBVU0FHRV9SRVFVSVJFRF9DTE9TRTtcblxuICAgICAgICBpZiAoIWRlZXApIHtcbiAgICAgICAgICAgIGlmIChub2RlLmdldFJlZGlyZWN0KCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxldCByZWRpcmVjdCA9IG5vZGUuZ2V0UmVkaXJlY3QoKSA9PSB0aGlzLnJvb3QgPyAnLi4uJyA6ICctPiAnICsgbm9kZS5nZXRSZWRpcmVjdCgpPy5nZXRVc2FnZVRleHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZiArIEFSR1VNRU5UX1NFUEFSQVRPUiArIHJlZGlyZWN0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW46IENvbW1hbmROb2RlPFM+W10gPSBbLi4ubm9kZS5nZXRDaGlsZHJlbigpXS5maWx0ZXIoKGMpID0+IGMuY2FuVXNlKHNvdXJjZSkpO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdXNhZ2UgPSB0aGlzLl9fZ2V0U21hcnRVc2FnZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuWzBdISwgLy8gRklYTUVcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkT3B0aW9uYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE9wdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYgKyBBUkdVTUVOVF9TRVBBUkFUT1IgKyB1c2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGRVc2FnZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVzYWdlID0gdGhpcy5fX2dldFNtYXJ0VXNhZ2UoY2hpbGQsIHNvdXJjZSwgY2hpbGRPcHRpb25hbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFVzYWdlLmFkZCh1c2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkVXNhZ2Uuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVzYWdlID0gY2hpbGRVc2FnZS52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSR1VNRU5UX1NFUEFSQVRPUiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkT3B0aW9uYWwgPyBVU0FHRV9PUFRJT05BTF9PUEVOICsgdXNhZ2UgKyBVU0FHRV9PUFRJT05BTF9DTE9TRSA6IHVzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZFVzYWdlLnNpemUgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnVpbGRlciA9IG9wZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIgKz0gVVNBR0VfT1I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIgKz0gY2hpbGQuZ2V0VXNhZ2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyICs9IGNsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmICsgQVJHVU1FTlRfU0VQQVJBVE9SICsgYnVpbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29tcGxldGlvblN1Z2dlc3Rpb25zKFxuICAgICAgICBwYXJzZTogUGFyc2VSZXN1bHRzPFM+LFxuICAgICAgICBjdXJzb3IgPSBwYXJzZS5nZXRSZWFkZXIoKS5nZXRUb3RhbExlbmd0aCgpXG4gICAgKTogUHJvbWlzZTxTdWdnZXN0aW9ucz4ge1xuICAgICAgICBsZXQgY29udGV4dDogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+ID0gcGFyc2UuZ2V0Q29udGV4dCgpO1xuICAgICAgICBsZXQgbm9kZUJlZm9yZUN1cnNvcjogU3VnZ2VzdGlvbkNvbnRleHQ8Uz4gPSBjb250ZXh0LmZpbmRTdWdnZXN0aW9uQ29udGV4dChjdXJzb3IpO1xuICAgICAgICBsZXQgcGFyZW50OiBDb21tYW5kTm9kZTxTPiA9IG5vZGVCZWZvcmVDdXJzb3IucGFyZW50O1xuICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLm1pbihub2RlQmVmb3JlQ3Vyc29yLnN0YXJ0UG9zLCBjdXJzb3IpO1xuICAgICAgICBsZXQgZnVsbElucHV0ID0gcGFyc2UuZ2V0UmVhZGVyKCkuZ2V0U3RyaW5nKCk7XG4gICAgICAgIGxldCB0cnVuY2F0ZWRJbnB1dCA9IGZ1bGxJbnB1dC5zdWJzdHJpbmcoMCwgY3Vyc29yKTtcbiAgICAgICAgbGV0IGZ1dHVyZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBwYXJlbnQuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgbGV0IGZ1dHVyZSA9IGF3YWl0IFN1Z2dlc3Rpb25zLmVtcHR5KCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZ1dHVyZSA9IGF3YWl0IG5vZGUubGlzdFN1Z2dlc3Rpb25zKFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmJ1aWxkKHRydW5jYXRlZElucHV0KSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IFN1Z2dlc3Rpb25zQnVpbGRlcih0cnVuY2F0ZWRJbnB1dCwgc3RhcnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZWQpIHt9XG4gICAgICAgICAgICBmdXR1cmVzLnB1c2goZnV0dXJlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoU3VnZ2VzdGlvbnMubWVyZ2UoZnVsbElucHV0LCBmdXR1cmVzKSEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSb290KCk6IFJvb3RDb21tYW5kTm9kZTxTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhdGgodGFyZ2V0OiBDb21tYW5kTm9kZTxTPik6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IG5vZGVzOiBBcnJheTxBcnJheTxDb21tYW5kTm9kZTxTPj4+ID0gW107XG4gICAgICAgIHRoaXMuYWRkUGF0aHModGhpcy5yb290LCBub2RlcywgW10pO1xuICAgICAgICBmb3IgKGxldCBsaXN0IG9mIG5vZGVzKSB7XG4gICAgICAgICAgICBpZiAobGlzdFtsaXN0Lmxlbmd0aCAtIDFdID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBsaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlICE9PSB0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUuZ2V0TmFtZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZE5vZGUocGF0aDogc3RyaW5nW10pOiBDb21tYW5kTm9kZTxTPiB8IG51bGwge1xuICAgICAgICBsZXQgbm9kZTogQ29tbWFuZE5vZGU8Uz4gfCB1bmRlZmluZWQgPSB0aGlzLnJvb3Q7XG4gICAgICAgIGZvciAobGV0IG5hbWUgb2YgcGF0aCkge1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUuZ2V0Q2hpbGQobmFtZSk7XG4gICAgICAgICAgICBpZiAoIW5vZGUpIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kQW1iaWd1aXRpZXMoY29uc3VtZXI6IEFtYmlndWl0eUNvbnN1bWVyPFM+LCBjb250ZXh0OiBhbnkpIHtcbiAgICAgICAgdGhpcy5yb290LmZpbmRBbWJpZ3VpdGllcyhjb25zdW1lciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRQYXRocyhub2RlOiBDb21tYW5kTm9kZTxTPiwgcmVzdWx0OiBBcnJheTxBcnJheTxDb21tYW5kTm9kZTxTPj4+LCBwYXJlbnRzOiBBcnJheTxDb21tYW5kTm9kZTxTPj4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGN1cnJlbnQ6IEFycmF5PENvbW1hbmROb2RlPFM+PiA9IFtdO1xuICAgICAgICBjdXJyZW50LnB1c2goLi4ucGFyZW50cyk7XG4gICAgICAgIGN1cnJlbnQucHVzaChub2RlKTtcbiAgICAgICAgcmVzdWx0LnB1c2goY3VycmVudCk7XG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuZ2V0Q2hpbGRyZW4oKSkgdGhpcy5hZGRQYXRocyhjaGlsZCwgcmVzdWx0LCBjdXJyZW50KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsic291cmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLE1BQU0sa0JBQXFCLEdBQUEsR0FBQSxDQUFBO0FBQzNCLE1BQU0sbUJBQXNCLEdBQUEsR0FBQSxDQUFBO0FBQzVCLE1BQU0sb0JBQXVCLEdBQUEsR0FBQSxDQUFBO0FBQzdCLE1BQU0sbUJBQXNCLEdBQUEsR0FBQSxDQUFBO0FBQzVCLE1BQU0sb0JBQXVCLEdBQUEsR0FBQSxDQUFBO0FBQzdCLE1BQU0sUUFBVyxHQUFBLEdBQUEsQ0FBQTtBQUVqQixNQUFxQixpQkFBcUIsQ0FBQTtBQUFBLEVBQzlCLElBQUEsQ0FBQTtBQUFBLEVBRUEsUUFBOEIsR0FBQTtBQUFBLElBQ2xDLGlCQUFvQixHQUFBO0FBQUEsS0FBQztBQUFBLEdBQ3pCLENBQUE7QUFBQSxFQUVPLFdBQUEsQ0FBWSxPQUFrQyxJQUFNLEVBQUE7QUFDdkQsSUFBSyxJQUFBLENBQUEsSUFBQSxHQUFPLElBQVEsSUFBQSxJQUFJLGVBQW1CLEVBQUEsQ0FBQTtBQUFBLEdBQy9DO0FBQUEsRUFFTyxTQUFTLE9BQTJELEVBQUE7QUFDdkUsSUFBSSxJQUFBLEtBQUEsR0FBUSxRQUFRLEtBQU0sRUFBQSxDQUFBO0FBQzFCLElBQUssSUFBQSxDQUFBLElBQUEsQ0FBSyxTQUFTLEtBQUssQ0FBQSxDQUFBO0FBQ3hCLElBQU8sT0FBQSxLQUFBLENBQUE7QUFBQSxHQUNYO0FBQUEsRUFFTyxZQUFZLFFBQTZC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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default interface ImmutableStringReader {
|
|
2
|
+
getString(): string;
|
|
3
|
+
getRemainingLength(): number;
|
|
4
|
+
getTotalLength(): number;
|
|
5
|
+
getCursor(): number;
|
|
6
|
+
getRead(): string;
|
|
7
|
+
getRemaining(): string;
|
|
8
|
+
canRead(length: number): boolean;
|
|
9
|
+
canRead(): boolean;
|
|
10
|
+
peek(): string;
|
|
11
|
+
peek(offset: number): string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ImmutableStringReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImmutableStringReader.d.ts","sourceRoot":"","sources":["../../src/lib/ImmutableStringReader.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC1C,SAAS,IAAI,MAAM,CAAC;IAEpB,kBAAkB,IAAI,MAAM,CAAC;IAE7B,cAAc,IAAI,MAAM,CAAC;IAEzB,SAAS,IAAI,MAAM,CAAC;IAEpB,OAAO,IAAI,MAAM,CAAC;IAElB,YAAY,IAAI,MAAM,CAAC;IAEvB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjC,OAAO,IAAI,OAAO,CAAC;IAEnB,IAAI,IAAI,MAAM,CAAC;IAEf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
class LiteralMessage {
|
|
6
|
+
str;
|
|
7
|
+
constructor(str) {
|
|
8
|
+
this.str = str;
|
|
9
|
+
}
|
|
10
|
+
getString() {
|
|
11
|
+
return this.str;
|
|
12
|
+
}
|
|
13
|
+
toString() {
|
|
14
|
+
return this.str;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.default = LiteralMessage;
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl0ZXJhbE1lc3NhZ2UuY2pzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0xpdGVyYWxNZXNzYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSAnLi9NZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGl0ZXJhbE1lc3NhZ2UgaW1wbGVtZW50cyBNZXNzYWdlIHtcbiAgICBzdHI6IHN0cmluZztcbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdHIgPSBzdHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHI7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cjtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE1BQXFCLGNBQWtDLENBQUE7QUFBQSxFQUNuRCxHQUFBLENBQUE7QUFBQSxFQUNPLFlBQVksR0FBYSxFQUFBO0FBQzVCLElBQUEsSUFBQSxDQUFLLEdBQU0sR0FBQSxHQUFBLENBQUE7QUFBQSxHQUNmO0FBQUEsRUFFTyxTQUFvQixHQUFBO0FBQ3ZCLElBQUEsT0FBTyxJQUFLLENBQUEsR0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLFFBQW1CLEdBQUE7QUFDdEIsSUFBQSxPQUFPLElBQUssQ0FBQSxHQUFBLENBQUE7QUFBQSxHQUNoQjtBQUNKOzs7OyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiteralMessage.d.ts","sourceRoot":"","sources":["../../src/lib/LiteralMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IAClD,GAAG,EAAE,MAAM,CAAC;gBACO,GAAG,EAAE,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,MAAM;CAG5B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class LiteralMessage {
|
|
2
|
+
str;
|
|
3
|
+
constructor(str) {
|
|
4
|
+
this.str = str;
|
|
5
|
+
}
|
|
6
|
+
getString() {
|
|
7
|
+
return this.str;
|
|
8
|
+
}
|
|
9
|
+
toString() {
|
|
10
|
+
return this.str;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { LiteralMessage as default };
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl0ZXJhbE1lc3NhZ2UuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTGl0ZXJhbE1lc3NhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tICcuL01lc3NhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXRlcmFsTWVzc2FnZSBpbXBsZW1lbnRzIE1lc3NhZ2Uge1xuICAgIHN0cjogc3RyaW5nO1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzdHI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0ciA9IHN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFxQixjQUFrQyxDQUFBO0FBQUEsRUFDbkQsR0FBQSxDQUFBO0FBQUEsRUFDTyxZQUFZLEdBQWEsRUFBQTtBQUM1QixJQUFBLElBQUEsQ0FBSyxHQUFNLEdBQUEsR0FBQSxDQUFBO0FBQUEsR0FDZjtBQUFBLEVBRU8sU0FBb0IsR0FBQTtBQUN2QixJQUFBLE9BQU8sSUFBSyxDQUFBLEdBQUEsQ0FBQTtBQUFBLEdBQ2hCO0FBQUEsRUFFTyxRQUFtQixHQUFBO0FBQ3RCLElBQUEsT0FBTyxJQUFLLENBQUEsR0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFDSjs7OzsifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/lib/Message.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,OAAO;IAC5B,SAAS,IAAI,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const lib_StringReader = require('./StringReader.cjs.js');
|
|
6
|
+
require('../CommandSyntaxException-BKBHJvxr.cjs');
|
|
7
|
+
require('./LiteralMessage.cjs.js');
|
|
8
|
+
|
|
9
|
+
class ParseResults {
|
|
10
|
+
context;
|
|
11
|
+
exceptions;
|
|
12
|
+
reader;
|
|
13
|
+
constructor(context, reader, exceptions) {
|
|
14
|
+
this.context = context;
|
|
15
|
+
this.reader = reader || new lib_StringReader.default("");
|
|
16
|
+
this.exceptions = exceptions || /* @__PURE__ */ new Map();
|
|
17
|
+
}
|
|
18
|
+
getContext() {
|
|
19
|
+
return this.context;
|
|
20
|
+
}
|
|
21
|
+
getReader() {
|
|
22
|
+
return this.reader;
|
|
23
|
+
}
|
|
24
|
+
getExceptions() {
|
|
25
|
+
return this.exceptions;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exports.default = ParseResults;
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VSZXN1bHRzLmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9QYXJzZVJlc3VsdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQ29tbWFuZENvbnRleHRCdWlsZGVyIGZyb20gJy4vY29udGV4dC9Db21tYW5kQ29udGV4dEJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbnMvQ29tbWFuZFN5bnRheEV4Y2VwdGlvbic7XG5pbXBvcnQgdHlwZSBDb21tYW5kTm9kZSBmcm9tICcuL3RyZWUvQ29tbWFuZE5vZGUnO1xuaW1wb3J0IHR5cGUgSW1tdXRhYmxlU3RyaW5nUmVhZGVyIGZyb20gJy4vSW1tdXRhYmxlU3RyaW5nUmVhZGVyJztcbmltcG9ydCBTdHJpbmdSZWFkZXIgZnJvbSAnLi9TdHJpbmdSZWFkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZVJlc3VsdHM8Uz4ge1xuICAgIHByaXZhdGUgY29udGV4dDogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+O1xuXG4gICAgcHJpdmF0ZSBleGNlcHRpb25zOiBNYXA8Q29tbWFuZE5vZGU8Uz4sIENvbW1hbmRTeW50YXhFeGNlcHRpb24+O1xuXG4gICAgcHJpdmF0ZSByZWFkZXI6IEltbXV0YWJsZVN0cmluZ1JlYWRlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29udGV4dDogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+LFxuICAgICAgICByZWFkZXI6IEltbXV0YWJsZVN0cmluZ1JlYWRlcixcbiAgICAgICAgZXhjZXB0aW9uczogTWFwPENvbW1hbmROb2RlPFM+LCBDb21tYW5kU3ludGF4RXhjZXB0aW9uPlxuICAgICkge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlciB8fCBuZXcgU3RyaW5nUmVhZGVyKCcnKTtcbiAgICAgICAgdGhpcy5leGNlcHRpb25zID0gZXhjZXB0aW9ucyB8fCBuZXcgTWFwPENvbW1hbmROb2RlPFM+LCBDb21tYW5kU3ludGF4RXhjZXB0aW9uPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb250ZXh0KCk6IENvbW1hbmRDb250ZXh0QnVpbGRlcjxTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlYWRlcigpOiBJbW11dGFibGVTdHJpbmdSZWFkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4Y2VwdGlvbnMoKTogTWFwPENvbW1hbmROb2RlPFM+LCBDb21tYW5kU3ludGF4RXhjZXB0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4Y2VwdGlvbnM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIlN0cmluZ1JlYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQSxNQUFxQixZQUFnQixDQUFBO0FBQUEsRUFDekIsT0FBQSxDQUFBO0FBQUEsRUFFQSxVQUFBLENBQUE7QUFBQSxFQUVBLE1BQUEsQ0FBQTtBQUFBLEVBRUQsV0FBQSxDQUNILE9BQ0EsRUFBQSxNQUFBLEVBQ0EsVUFDRixFQUFBO0FBQ0UsSUFBQSxJQUFBLENBQUssT0FBVSxHQUFBLE9BQUEsQ0FBQTtBQUNmLElBQUEsSUFBQSxDQUFLLE1BQVMsR0FBQSxNQUFBLElBQVUsSUFBSUEsd0JBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQTtBQUMzQyxJQUFLLElBQUEsQ0FBQSxVQUFBLEdBQWEsVUFBYyxvQkFBQSxJQUFJLEdBQTRDLEVBQUEsQ0FBQTtBQUFBLEdBQ3BGO0FBQUEsRUFFTyxVQUF1QyxHQUFBO0FBQzFDLElBQUEsT0FBTyxJQUFLLENBQUEsT0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLFNBQW1DLEdBQUE7QUFDdEMsSUFBQSxPQUFPLElBQUssQ0FBQSxNQUFBLENBQUE7QUFBQSxHQUNoQjtBQUFBLEVBRU8sYUFBNkQsR0FBQTtBQUNoRSxJQUFBLE9BQU8sSUFBSyxDQUFBLFVBQUEsQ0FBQTtBQUFBLEdBQ2hCO0FBQ0o7Ozs7In0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as ImmutableStringReader } from './ImmutableStringReader';
|
|
2
|
+
import { default as CommandNode } from './tree/CommandNode';
|
|
3
|
+
import { default as CommandSyntaxException } from './exceptions/CommandSyntaxException';
|
|
4
|
+
import { default as CommandContextBuilder } from './context/CommandContextBuilder';
|
|
5
|
+
|
|
6
|
+
export default class ParseResults<S> {
|
|
7
|
+
private context;
|
|
8
|
+
private exceptions;
|
|
9
|
+
private reader;
|
|
10
|
+
constructor(context: CommandContextBuilder<S>, reader: ImmutableStringReader, exceptions: Map<CommandNode<S>, CommandSyntaxException>);
|
|
11
|
+
getContext(): CommandContextBuilder<S>;
|
|
12
|
+
getReader(): ImmutableStringReader;
|
|
13
|
+
getExceptions(): Map<CommandNode<S>, CommandSyntaxException>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ParseResults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParseResults.d.ts","sourceRoot":"","sources":["../../src/lib/ParseResults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,sBAAsB,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,qBAAqB,MAAM,yBAAyB,CAAC;AAGjE,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,UAAU,CAA8C;IAEhE,OAAO,CAAC,MAAM,CAAwB;gBAGlC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAOpD,UAAU,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAItC,SAAS,IAAI,qBAAqB;IAIlC,aAAa,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;CAGtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import StringReader from './StringReader.es.js';
|
|
2
|
+
import '../CommandSyntaxException-Dz8Qlq9d.js';
|
|
3
|
+
import './LiteralMessage.es.js';
|
|
4
|
+
|
|
5
|
+
class ParseResults {
|
|
6
|
+
context;
|
|
7
|
+
exceptions;
|
|
8
|
+
reader;
|
|
9
|
+
constructor(context, reader, exceptions) {
|
|
10
|
+
this.context = context;
|
|
11
|
+
this.reader = reader || new StringReader("");
|
|
12
|
+
this.exceptions = exceptions || /* @__PURE__ */ new Map();
|
|
13
|
+
}
|
|
14
|
+
getContext() {
|
|
15
|
+
return this.context;
|
|
16
|
+
}
|
|
17
|
+
getReader() {
|
|
18
|
+
return this.reader;
|
|
19
|
+
}
|
|
20
|
+
getExceptions() {
|
|
21
|
+
return this.exceptions;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { ParseResults as default };
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VSZXN1bHRzLmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1BhcnNlUmVzdWx0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBDb21tYW5kQ29udGV4dEJ1aWxkZXIgZnJvbSAnLi9jb250ZXh0L0NvbW1hbmRDb250ZXh0QnVpbGRlcic7XG5pbXBvcnQgdHlwZSBDb21tYW5kU3ludGF4RXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9ucy9Db21tYW5kU3ludGF4RXhjZXB0aW9uJztcbmltcG9ydCB0eXBlIENvbW1hbmROb2RlIGZyb20gJy4vdHJlZS9Db21tYW5kTm9kZSc7XG5pbXBvcnQgdHlwZSBJbW11dGFibGVTdHJpbmdSZWFkZXIgZnJvbSAnLi9JbW11dGFibGVTdHJpbmdSZWFkZXInO1xuaW1wb3J0IFN0cmluZ1JlYWRlciBmcm9tICcuL1N0cmluZ1JlYWRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlUmVzdWx0czxTPiB7XG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb21tYW5kQ29udGV4dEJ1aWxkZXI8Uz47XG5cbiAgICBwcml2YXRlIGV4Y2VwdGlvbnM6IE1hcDxDb21tYW5kTm9kZTxTPiwgQ29tbWFuZFN5bnRheEV4Y2VwdGlvbj47XG5cbiAgICBwcml2YXRlIHJlYWRlcjogSW1tdXRhYmxlU3RyaW5nUmVhZGVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBjb250ZXh0OiBDb21tYW5kQ29udGV4dEJ1aWxkZXI8Uz4sXG4gICAgICAgIHJlYWRlcjogSW1tdXRhYmxlU3RyaW5nUmVhZGVyLFxuICAgICAgICBleGNlcHRpb25zOiBNYXA8Q29tbWFuZE5vZGU8Uz4sIENvbW1hbmRTeW50YXhFeGNlcHRpb24+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMucmVhZGVyID0gcmVhZGVyIHx8IG5ldyBTdHJpbmdSZWFkZXIoJycpO1xuICAgICAgICB0aGlzLmV4Y2VwdGlvbnMgPSBleGNlcHRpb25zIHx8IG5ldyBNYXA8Q29tbWFuZE5vZGU8Uz4sIENvbW1hbmRTeW50YXhFeGNlcHRpb24+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQoKTogQ29tbWFuZENvbnRleHRCdWlsZGVyPFM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVhZGVyKCk6IEltbXV0YWJsZVN0cmluZ1JlYWRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhjZXB0aW9ucygpOiBNYXA8Q29tbWFuZE5vZGU8Uz4sIENvbW1hbmRTeW50YXhFeGNlcHRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhjZXB0aW9ucztcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQU1BLE1BQXFCLFlBQWdCLENBQUE7QUFBQSxFQUN6QixPQUFBLENBQUE7QUFBQSxFQUVBLFVBQUEsQ0FBQTtBQUFBLEVBRUEsTUFBQSxDQUFBO0FBQUEsRUFFRCxXQUFBLENBQ0gsT0FDQSxFQUFBLE1BQUEsRUFDQSxVQUNGLEVBQUE7QUFDRSxJQUFBLElBQUEsQ0FBSyxPQUFVLEdBQUEsT0FBQSxDQUFBO0FBQ2YsSUFBQSxJQUFBLENBQUssTUFBUyxHQUFBLE1BQUEsSUFBVSxJQUFJLFlBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQTtBQUMzQyxJQUFLLElBQUEsQ0FBQSxVQUFBLEdBQWEsVUFBYyxvQkFBQSxJQUFJLEdBQTRDLEVBQUEsQ0FBQTtBQUFBLEdBQ3BGO0FBQUEsRUFFTyxVQUF1QyxHQUFBO0FBQzFDLElBQUEsT0FBTyxJQUFLLENBQUEsT0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLFNBQW1DLEdBQUE7QUFDdEMsSUFBQSxPQUFPLElBQUssQ0FBQSxNQUFBLENBQUE7QUFBQSxHQUNoQjtBQUFBLEVBRU8sYUFBNkQsR0FBQTtBQUNoRSxJQUFBLE9BQU8sSUFBSyxDQUFBLFVBQUEsQ0FBQTtBQUFBLEdBQ2hCO0FBQ0o7Ozs7In0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Predicate.d.ts","sourceRoot":"","sources":["../../src/lib/Predicate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;CACnB"}
|