@wq2/brigadier-ts 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +1 -0
  2. package/dist/Command.d.ts +2 -2
  3. package/dist/CommandDispatcher.d.ts +1 -1
  4. package/dist/CommandDispatcher.js +231 -357
  5. package/dist/ParseResults.d.ts +1 -1
  6. package/dist/ParseResults.js +9 -10
  7. package/dist/StringReader.d.ts +1 -1
  8. package/dist/StringReader.js +75 -77
  9. package/dist/arguments/ArgumentType.d.ts +1 -1
  10. package/dist/arguments/ArgumentType.js +9 -8
  11. package/dist/arguments/BoolArgumentType.d.ts +5 -1
  12. package/dist/arguments/BoolArgumentType.js +9 -27
  13. package/dist/arguments/FloatArgumentType.d.ts +1 -1
  14. package/dist/arguments/FloatArgumentType.js +11 -30
  15. package/dist/arguments/IntegerArgumentType.d.ts +1 -1
  16. package/dist/arguments/IntegerArgumentType.js +11 -30
  17. package/dist/arguments/LongArgumentType.d.ts +3 -3
  18. package/dist/arguments/LongArgumentType.js +13 -32
  19. package/dist/arguments/NumberArgumentType.d.ts +2 -2
  20. package/dist/arguments/NumberArgumentType.js +15 -33
  21. package/dist/arguments/StringArgumentType.d.ts +1 -1
  22. package/dist/arguments/StringArgumentType.js +11 -29
  23. package/dist/builder/ArgumentBuilder.d.ts +1 -1
  24. package/dist/builder/ArgumentBuilder.js +31 -71
  25. package/dist/builder/LiteralArgumentBuilder.js +14 -33
  26. package/dist/builder/RequiredArgumentBuilder.d.ts +1 -1
  27. package/dist/builder/RequiredArgumentBuilder.js +18 -37
  28. package/dist/context/CommandContext.d.ts +1 -1
  29. package/dist/context/CommandContext.js +31 -32
  30. package/dist/context/CommandContextBuilder.d.ts +1 -1
  31. package/dist/context/CommandContextBuilder.js +47 -50
  32. package/dist/context/ParsedArgument.js +8 -9
  33. package/dist/context/ParsedCommandNode.d.ts +1 -1
  34. package/dist/context/ParsedCommandNode.js +7 -8
  35. package/dist/context/StringRange.js +17 -18
  36. package/dist/context/SuggestionContext.d.ts +1 -1
  37. package/dist/context/SuggestionContext.js +3 -4
  38. package/dist/exceptions/CommandErrorType.d.ts +3 -3
  39. package/dist/exceptions/CommandErrorType.js +10 -19
  40. package/dist/exceptions/CommandSyntaxError.js +36 -54
  41. package/dist/suggestion/Suggestion.d.ts +1 -1
  42. package/dist/suggestion/Suggestion.js +16 -17
  43. package/dist/suggestion/Suggestions.d.ts +1 -1
  44. package/dist/suggestion/Suggestions.js +28 -30
  45. package/dist/suggestion/SuggestionsBuilder.d.ts +1 -1
  46. package/dist/suggestion/SuggestionsBuilder.js +22 -23
  47. package/dist/tree/ArgumentCommandNode.d.ts +1 -1
  48. package/dist/tree/ArgumentCommandNode.js +22 -40
  49. package/dist/tree/CommandNode.d.ts +1 -1
  50. package/dist/tree/CommandNode.js +28 -29
  51. package/dist/tree/LiteralCommandNode.d.ts +1 -1
  52. package/dist/tree/LiteralCommandNode.js +28 -41
  53. package/dist/tree/RootCommandNode.d.ts +1 -1
  54. package/dist/tree/RootCommandNode.js +17 -69
  55. package/jest.config.js +5 -5
  56. package/package.json +32 -32
  57. package/src/Command.ts +2 -2
  58. package/src/CommandDispatcher.ts +397 -295
  59. package/src/ParseResults.ts +26 -22
  60. package/src/StringReader.ts +212 -193
  61. package/src/arguments/ArgumentType.ts +13 -8
  62. package/src/arguments/BoolArgumentType.ts +22 -21
  63. package/src/arguments/FloatArgumentType.ts +13 -14
  64. package/src/arguments/IntegerArgumentType.ts +13 -14
  65. package/src/arguments/LongArgumentType.ts +16 -17
  66. package/src/arguments/NumberArgumentType.ts +48 -38
  67. package/src/arguments/StringArgumentType.ts +26 -26
  68. package/src/builder/ArgumentBuilder.ts +80 -75
  69. package/src/builder/LiteralArgumentBuilder.ts +31 -21
  70. package/src/builder/RequiredArgumentBuilder.ts +42 -32
  71. package/src/context/CommandContext.ts +99 -76
  72. package/src/context/CommandContextBuilder.ts +169 -143
  73. package/src/context/ParsedArgument.ts +13 -13
  74. package/src/context/ParsedCommandNode.ts +14 -14
  75. package/src/context/StringRange.ts +26 -26
  76. package/src/context/SuggestionContext.ts +7 -7
  77. package/src/exceptions/CommandErrorType.ts +20 -13
  78. package/src/exceptions/CommandSyntaxError.ts +78 -37
  79. package/src/index.ts +30 -30
  80. package/src/suggestion/Suggestion.ts +46 -46
  81. package/src/suggestion/Suggestions.ts +59 -57
  82. package/src/suggestion/SuggestionsBuilder.ts +59 -57
  83. package/src/tree/ArgumentCommandNode.ts +51 -40
  84. package/src/tree/CommandNode.ts +96 -87
  85. package/src/tree/LiteralCommandNode.ts +78 -57
  86. package/src/tree/RootCommandNode.ts +33 -23
  87. package/test/Arguments.test.ts +47 -33
  88. package/test/CommandDispatcher.test.ts +18 -22
  89. package/test/StringReader.test.ts +47 -47
  90. package/tsconfig.json +9 -14
@@ -1,30 +1,34 @@
1
- import {
2
- CommandContextBuilder,
3
- StringReader,
4
- CommandNode,
5
- CommandSyntaxError
1
+ import type {
2
+ CommandContextBuilder,
3
+ StringReader,
4
+ CommandNode,
5
+ CommandSyntaxError,
6
6
  } from ".";
7
7
 
8
8
  export class ParseResults<S> {
9
- private context: CommandContextBuilder<S>;
10
- private reader: StringReader;
11
- private errors: Map<CommandNode<S>, CommandSyntaxError>;
9
+ private context: CommandContextBuilder<S>;
10
+ private reader: StringReader;
11
+ private errors: Map<CommandNode<S>, CommandSyntaxError>;
12
12
 
13
- constructor(context: CommandContextBuilder<S>, reader: StringReader, errors: Map<CommandNode<S>, CommandSyntaxError>) {
14
- this.context = context;
15
- this.reader = reader;
16
- this.errors = errors;
17
- }
13
+ constructor(
14
+ context: CommandContextBuilder<S>,
15
+ reader: StringReader,
16
+ errors: Map<CommandNode<S>, CommandSyntaxError>,
17
+ ) {
18
+ this.context = context;
19
+ this.reader = reader;
20
+ this.errors = errors;
21
+ }
18
22
 
19
- getContext(): CommandContextBuilder<S> {
20
- return this.context;
21
- }
23
+ getContext(): CommandContextBuilder<S> {
24
+ return this.context;
25
+ }
22
26
 
23
- getReader(): StringReader {
24
- return this.reader;
25
- }
27
+ getReader(): StringReader {
28
+ return this.reader;
29
+ }
26
30
 
27
- getErrors(): Map<CommandNode<S>, CommandSyntaxError> {
28
- return this.errors;
29
- }
31
+ getErrors(): Map<CommandNode<S>, CommandSyntaxError> {
32
+ return this.errors;
33
+ }
30
34
  }
@@ -1,197 +1,216 @@
1
1
  import { CommandSyntaxError } from "./exceptions/CommandSyntaxError";
2
2
 
3
3
  export class StringReader {
4
- private string: string;
5
- private cursor: number;
6
-
7
- constructor(string: string | StringReader) {
8
- if (string instanceof StringReader) {
9
- this.string = string.getString();
10
- this.cursor = string.getCursor();
11
- } else {
12
- this.string = string;
13
- this.cursor = 0;
14
- }
15
- }
16
-
17
- getString(): string {
18
- return this.string;
19
- }
20
-
21
- getCursor(): number {
22
- return this.cursor;
23
- }
24
-
25
- setCursor(cursor: number): void {
26
- this.cursor = cursor;
27
- }
28
-
29
- getRemainingLength(): number {
30
- return this.string.length - this.cursor;
31
- }
32
-
33
- getTotalLength(): number {
34
- return this.string.length;
35
- }
36
-
37
- getRead(): string {
38
- return this.string.substring(0, this.cursor);
39
- }
40
-
41
- getRemaining(): string {
42
- return this.string.substring(this.cursor);
43
- }
44
-
45
- canRead(length = 1): boolean {
46
- return this.cursor + length <= this.string.length;
47
- }
48
-
49
- peek(offset = 0): string {
50
- return this.string.charAt(this.cursor + offset);
51
- }
52
-
53
- read(): string {
54
- const char = this.string.charAt(this.cursor);
55
- this.cursor += 1;
56
- return char;
57
- }
58
-
59
- skip(): void {
60
- this.cursor += 1;
61
- }
62
-
63
- isAllowedNumber(c: string): boolean {
64
- return c >= "0" && c <= "9" || c === "." || c === "-";
65
- }
66
-
67
- readInt(): number {
68
- const start = this.cursor;
69
- while (this.canRead() && this.isAllowedNumber(this.peek())) {
70
- this.skip();
71
- }
72
- const number = this.string.substring(start, this.cursor);
73
- if (number.length === 0) {
74
- throw CommandSyntaxError.READER_EXPECTED_INT.createWithContext(this);
75
- }
76
- try {
77
- const value = Number(number);
78
- if (isNaN(value) || !Number.isInteger(value)) {
79
- throw new Error()
80
- }
81
- return value
82
- } catch (e) {
83
- this.cursor = start;
84
- throw CommandSyntaxError.READER_INVALID_INT.createWithContext(this, number);
85
- }
86
- }
87
-
88
- readLong(): BigInt {
89
- const start = this.cursor;
90
- while (this.canRead() && this.isAllowedNumber(this.peek())) {
91
- this.skip();
92
- }
93
- const number = this.string.substring(start, this.cursor);
94
- if (number.length === 0) {
95
- throw CommandSyntaxError.READER_EXPECTED_INT.createWithContext(this);
96
- }
97
- try {
98
- return BigInt(number);
99
- } catch (e) {
100
- this.cursor = start;
101
- throw CommandSyntaxError.READER_INVALID_INT.createWithContext(this, number);
102
- }
103
- }
104
-
105
- readFloat(): number {
106
- const start = this.cursor;
107
- while (this.canRead() && this.isAllowedNumber(this.peek())) {
108
- this.skip();
109
- }
110
- const number = this.string.substring(start, this.cursor);
111
- if (number.length === 0) {
112
- throw CommandSyntaxError.READER_EXPECTED_FLOAT.createWithContext(this);
113
- }
114
- try {
115
- const value = Number(number);
116
- if (isNaN(value)) {
117
- throw new Error()
118
- }
119
- return value
120
- } catch (e) {
121
- this.cursor = start;
122
- throw CommandSyntaxError.READER_INVALID_FLOAT.createWithContext(this, number);
123
- }
124
- }
125
-
126
- isAllowedInUnquotedString(c: string): boolean {
127
- return c >= "0" && c <= "9"
128
- || c >= "A" && c <= "Z"
129
- || c >= "a" && c <= "z"
130
- || c == "_" || c == "-"
131
- || c == "." || c == "+";
132
- }
133
-
134
- isQuotedStringStart(c: string): boolean {
135
- return c === "'" || c === "\"";
136
- }
137
-
138
- readUnquotedString(): string {
139
- const start = this.cursor;
140
- while (this.canRead() && this.isAllowedInUnquotedString(this.peek())) {
141
- this.skip();
142
- }
143
- return this.string.substring(start, this.cursor);
144
- }
145
-
146
- readStringUntil(terminator: string): string {
147
- let result = [];
148
- let escaped = false;
149
- while (this.canRead()) {
150
- const c = this.read();
151
- if (escaped) {
152
- if (c === terminator || c === "\\") {
153
- result.push(c);
154
- escaped = false;
155
- } else {
156
- this.setCursor(this.cursor - 1);
157
- throw CommandSyntaxError.READER_INVALID_ESCAPE.createWithContext(this, c);
158
- }
159
- } else if (c === "\\") {
160
- escaped = true;
161
- } else if (c === terminator) {
162
- return result.join("");
163
- } else {
164
- result.push(c);
165
- }
166
- }
167
- throw CommandSyntaxError.READER_EXPECTED_END_OF_QUOTE.createWithContext(this);
168
- }
169
-
170
- readString(): string {
171
- if (!this.canRead()) {
172
- return "";
173
- }
174
- const next = this.peek();
175
- if (this.isQuotedStringStart(next)) {
176
- this.skip();
177
- return this.readStringUntil(next);
178
- }
179
- return this.readUnquotedString();
180
- }
181
-
182
- readBoolean(): boolean {
183
- const start = this.cursor;
184
- const value = this.readUnquotedString();
185
- if (value.length === 0) {
186
- throw CommandSyntaxError.READER_EXPECTED_BOOL.createWithContext(this);
187
- }
188
- if (value === "true") {
189
- return true
190
- } else if (value === "false") {
191
- return false
192
- } else {
193
- throw CommandSyntaxError.READER_INVALID_BOOL.createWithContext(this, value);
194
- }
195
- }
196
-
4
+ private string: string;
5
+ private cursor: number;
6
+
7
+ constructor(string: string | StringReader) {
8
+ if (string instanceof StringReader) {
9
+ this.string = string.getString();
10
+ this.cursor = string.getCursor();
11
+ } else {
12
+ this.string = string;
13
+ this.cursor = 0;
14
+ }
15
+ }
16
+
17
+ getString(): string {
18
+ return this.string;
19
+ }
20
+
21
+ getCursor(): number {
22
+ return this.cursor;
23
+ }
24
+
25
+ setCursor(cursor: number): void {
26
+ this.cursor = cursor;
27
+ }
28
+
29
+ getRemainingLength(): number {
30
+ return this.string.length - this.cursor;
31
+ }
32
+
33
+ getTotalLength(): number {
34
+ return this.string.length;
35
+ }
36
+
37
+ getRead(): string {
38
+ return this.string.substring(0, this.cursor);
39
+ }
40
+
41
+ getRemaining(): string {
42
+ return this.string.substring(this.cursor);
43
+ }
44
+
45
+ canRead(length = 1): boolean {
46
+ return this.cursor + length <= this.string.length;
47
+ }
48
+
49
+ peek(offset = 0): string {
50
+ return this.string.charAt(this.cursor + offset);
51
+ }
52
+
53
+ read(): string {
54
+ const char = this.string.charAt(this.cursor);
55
+ this.cursor += 1;
56
+ return char;
57
+ }
58
+
59
+ skip(): void {
60
+ this.cursor += 1;
61
+ }
62
+
63
+ isAllowedNumber(c: string): boolean {
64
+ return (c >= "0" && c <= "9") || c === "." || c === "-";
65
+ }
66
+
67
+ readInt(): number {
68
+ const start = this.cursor;
69
+ while (this.canRead() && this.isAllowedNumber(this.peek())) {
70
+ this.skip();
71
+ }
72
+ const number = this.string.substring(start, this.cursor);
73
+ if (number.length === 0) {
74
+ throw CommandSyntaxError.READER_EXPECTED_INT.createWithContext(this);
75
+ }
76
+ try {
77
+ const value = Number(number);
78
+ if (Number.isNaN(value) || !Number.isInteger(value)) {
79
+ throw new Error();
80
+ }
81
+ return value;
82
+ } catch (_) {
83
+ this.cursor = start;
84
+ throw CommandSyntaxError.READER_INVALID_INT.createWithContext(
85
+ this,
86
+ number,
87
+ );
88
+ }
89
+ }
90
+
91
+ readLong(): bigint {
92
+ const start = this.cursor;
93
+ while (this.canRead() && this.isAllowedNumber(this.peek())) {
94
+ this.skip();
95
+ }
96
+ const number = this.string.substring(start, this.cursor);
97
+ if (number.length === 0) {
98
+ throw CommandSyntaxError.READER_EXPECTED_INT.createWithContext(this);
99
+ }
100
+ try {
101
+ return BigInt(number);
102
+ } catch (_) {
103
+ this.cursor = start;
104
+ throw CommandSyntaxError.READER_INVALID_INT.createWithContext(
105
+ this,
106
+ number,
107
+ );
108
+ }
109
+ }
110
+
111
+ readFloat(): number {
112
+ const start = this.cursor;
113
+ while (this.canRead() && this.isAllowedNumber(this.peek())) {
114
+ this.skip();
115
+ }
116
+ const number = this.string.substring(start, this.cursor);
117
+ if (number.length === 0) {
118
+ throw CommandSyntaxError.READER_EXPECTED_FLOAT.createWithContext(this);
119
+ }
120
+ try {
121
+ const value = Number(number);
122
+ if (Number.isNaN(value)) {
123
+ throw new Error();
124
+ }
125
+ return value;
126
+ } catch (_e) {
127
+ this.cursor = start;
128
+ throw CommandSyntaxError.READER_INVALID_FLOAT.createWithContext(
129
+ this,
130
+ number,
131
+ );
132
+ }
133
+ }
134
+
135
+ isAllowedInUnquotedString(c: string): boolean {
136
+ return (
137
+ (c >= "0" && c <= "9") ||
138
+ (c >= "A" && c <= "Z") ||
139
+ (c >= "a" && c <= "z") ||
140
+ c === "_" ||
141
+ c === "-" ||
142
+ c === "." ||
143
+ c === "+"
144
+ );
145
+ }
146
+
147
+ isQuotedStringStart(c: string): boolean {
148
+ return c === "'" || c === '"';
149
+ }
150
+
151
+ readUnquotedString(): string {
152
+ const start = this.cursor;
153
+ while (this.canRead() && this.isAllowedInUnquotedString(this.peek())) {
154
+ this.skip();
155
+ }
156
+ return this.string.substring(start, this.cursor);
157
+ }
158
+
159
+ readStringUntil(terminator: string): string {
160
+ const result = [];
161
+ let escaped = false;
162
+ while (this.canRead()) {
163
+ const c = this.read();
164
+ if (escaped) {
165
+ if (c === terminator || c === "\\") {
166
+ result.push(c);
167
+ escaped = false;
168
+ } else {
169
+ this.setCursor(this.cursor - 1);
170
+ throw CommandSyntaxError.READER_INVALID_ESCAPE.createWithContext(
171
+ this,
172
+ c,
173
+ );
174
+ }
175
+ } else if (c === "\\") {
176
+ escaped = true;
177
+ } else if (c === terminator) {
178
+ return result.join("");
179
+ } else {
180
+ result.push(c);
181
+ }
182
+ }
183
+ throw CommandSyntaxError.READER_EXPECTED_END_OF_QUOTE.createWithContext(
184
+ this,
185
+ );
186
+ }
187
+
188
+ readString(): string {
189
+ if (!this.canRead()) {
190
+ return "";
191
+ }
192
+ const next = this.peek();
193
+ if (this.isQuotedStringStart(next)) {
194
+ this.skip();
195
+ return this.readStringUntil(next);
196
+ }
197
+ return this.readUnquotedString();
198
+ }
199
+
200
+ readBoolean(): boolean {
201
+ const value = this.readUnquotedString();
202
+ if (value.length === 0) {
203
+ throw CommandSyntaxError.READER_EXPECTED_BOOL.createWithContext(this);
204
+ }
205
+ if (value === "true") {
206
+ return true;
207
+ } else if (value === "false") {
208
+ return false;
209
+ } else {
210
+ throw CommandSyntaxError.READER_INVALID_BOOL.createWithContext(
211
+ this,
212
+ value,
213
+ );
214
+ }
215
+ }
197
216
  }
@@ -1,14 +1,19 @@
1
1
  import {
2
- StringReader,
3
- CommandContext,
4
- Suggestions,
5
- SuggestionsBuilder
2
+ type StringReader,
3
+ type CommandContext,
4
+ Suggestions,
5
+ type SuggestionsBuilder,
6
6
  } from "..";
7
7
 
8
8
  export abstract class ArgumentType<T> {
9
- abstract parse(reader: StringReader): T;
9
+ abstract parse(reader: StringReader): T;
10
10
 
11
- listSuggestions(context: CommandContext<any>, builder: SuggestionsBuilder): Promise<Suggestions> {
12
- return Suggestions.empty();
13
- }
11
+ listSuggestions(
12
+ // biome-ignore lint/correctness/noUnusedFunctionParameters: optional override
13
+ context: CommandContext<any>,
14
+ // biome-ignore lint/correctness/noUnusedFunctionParameters: optional override
15
+ builder: SuggestionsBuilder,
16
+ ): Promise<Suggestions> {
17
+ return Suggestions.empty();
18
+ }
14
19
  }
@@ -1,28 +1,29 @@
1
- import {
2
- ArgumentType,
3
- StringReader,
4
- CommandContext,
5
- SuggestionsBuilder,
6
- Suggestions
7
- } from "..";
1
+ import { ArgumentType } from "./ArgumentType";
2
+ import type { StringReader } from "../StringReader";
3
+ import type { CommandContext } from "../context/CommandContext";
4
+ import type { SuggestionsBuilder } from "../suggestion/SuggestionsBuilder";
5
+ import type { Suggestions } from "../suggestion/Suggestions";
8
6
 
9
7
  export class BoolArgumentType extends ArgumentType<boolean> {
8
+ parse(reader: StringReader): boolean {
9
+ return reader.readBoolean();
10
+ }
10
11
 
11
- parse(reader: StringReader): boolean {
12
- return reader.readBoolean();
13
- }
14
-
15
- listSuggestions(context: CommandContext<any>, builder: SuggestionsBuilder): Promise<Suggestions> {
16
- if ("true".startsWith(builder.getRemaining().toLowerCase())) {
17
- builder.suggest("true");
18
- }
19
- if ("false".startsWith(builder.getRemaining().toLowerCase())) {
20
- builder.suggest("false");
21
- }
22
- return builder.buildPromise();
23
- }
12
+ listSuggestions(
13
+ // biome-ignore lint/correctness/noUnusedFunctionParameters: optional override
14
+ context: CommandContext<any>,
15
+ builder: SuggestionsBuilder,
16
+ ): Promise<Suggestions> {
17
+ if ("true".startsWith(builder.getRemaining().toLowerCase())) {
18
+ builder.suggest("true");
19
+ }
20
+ if ("false".startsWith(builder.getRemaining().toLowerCase())) {
21
+ builder.suggest("false");
22
+ }
23
+ return builder.buildPromise();
24
+ }
24
25
  }
25
26
 
26
27
  export function bool(): BoolArgumentType {
27
- return new BoolArgumentType();
28
+ return new BoolArgumentType();
28
29
  }
@@ -1,20 +1,19 @@
1
- import { StringReader, NumberArgumentType, CommandSyntaxError } from "..";
1
+ import { type StringReader, NumberArgumentType, CommandSyntaxError } from "..";
2
2
 
3
3
  export class FloatArgumentType extends NumberArgumentType {
4
+ constructor(minimum = -Infinity, maximum = Infinity) {
5
+ super(minimum, maximum);
6
+ }
4
7
 
5
- constructor(minimum = -Infinity, maximum = Infinity) {
6
- super(minimum, maximum);
7
- }
8
+ readNumber(reader: StringReader): number {
9
+ return reader.readFloat();
10
+ }
8
11
 
9
- readNumber(reader: StringReader): number {
10
- return reader.readFloat();
11
- }
12
+ getTooSmallError() {
13
+ return CommandSyntaxError.FLOAT_TOO_SMALL;
14
+ }
12
15
 
13
- getTooSmallError() {
14
- return CommandSyntaxError.FLOAT_TOO_SMALL;
15
- }
16
-
17
- getTooBigError() {
18
- return CommandSyntaxError.FLOAT_TOO_BIG;
19
- }
16
+ getTooBigError() {
17
+ return CommandSyntaxError.FLOAT_TOO_BIG;
18
+ }
20
19
  }
@@ -1,20 +1,19 @@
1
- import { StringReader, NumberArgumentType, CommandSyntaxError } from "..";
1
+ import { type StringReader, NumberArgumentType, CommandSyntaxError } from "..";
2
2
 
3
3
  export class IntegerArgumentType extends NumberArgumentType {
4
+ constructor(minimum = -2147483648, maximum = 2147483647) {
5
+ super(minimum, maximum);
6
+ }
4
7
 
5
- constructor(minimum = -2147483648, maximum = 2147483647) {
6
- super(minimum, maximum);
7
- }
8
+ readNumber(reader: StringReader): number {
9
+ return reader.readInt();
10
+ }
8
11
 
9
- readNumber(reader: StringReader): number {
10
- return reader.readInt();
11
- }
12
-
13
- getTooSmallError() {
14
- return CommandSyntaxError.INTEGER_TOO_SMALL;
15
- }
12
+ getTooSmallError() {
13
+ return CommandSyntaxError.INTEGER_TOO_SMALL;
14
+ }
16
15
 
17
- getTooBigError() {
18
- return CommandSyntaxError.INTEGER_TOO_BIG;
19
- }
16
+ getTooBigError() {
17
+ return CommandSyntaxError.INTEGER_TOO_BIG;
18
+ }
20
19
  }
@@ -1,23 +1,22 @@
1
- import { StringReader, NumberArgumentType, CommandSyntaxError } from "..";
1
+ import { type StringReader, NumberArgumentType, CommandSyntaxError } from "..";
2
2
 
3
- export class LongArgumentType extends NumberArgumentType<BigInt> {
3
+ export class LongArgumentType extends NumberArgumentType<bigint> {
4
+ private static readonly MIN = -9223372036854775808n;
5
+ private static readonly MAX = 9223372036854775807n;
4
6
 
5
- private static readonly MIN = BigInt("-9223372036854775808")
6
- private static readonly MAX = BigInt("9223372036854775807")
7
+ constructor(minimum = LongArgumentType.MIN, maximum = LongArgumentType.MAX) {
8
+ super(minimum, maximum);
9
+ }
7
10
 
8
- constructor(minimum = LongArgumentType.MIN, maximum = LongArgumentType.MAX) {
9
- super(minimum, maximum);
10
- }
11
+ readNumber(reader: StringReader): bigint {
12
+ return reader.readLong();
13
+ }
11
14
 
12
- readNumber(reader: StringReader): BigInt {
13
- return reader.readLong();
14
- }
15
+ getTooSmallError() {
16
+ return CommandSyntaxError.LONG_TOO_SMALL;
17
+ }
15
18
 
16
- getTooSmallError() {
17
- return CommandSyntaxError.LONG_TOO_SMALL;
18
- }
19
-
20
- getTooBigError() {
21
- return CommandSyntaxError.LONG_TOO_BIG;
22
- }
19
+ getTooBigError() {
20
+ return CommandSyntaxError.LONG_TOO_BIG;
21
+ }
23
22
  }