@sapphire/lexure 1.2.0-pr-601.2f2c308a.0 → 1.2.0-pr-935.7da5c8bb

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 CHANGED
@@ -2,6 +2,40 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ # [@sapphire/lexure@1.1.11](https://github.com/sapphiredev/utilities/compare/@sapphire/lexure@1.1.10...@sapphire/lexure@1.1.11) - (2025-09-24)
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - **deps:** Update all non-major dependencies ([636a5ee](https://github.com/sapphiredev/utilities/commit/636a5eed0939fd96a82213bf8459846aedd54037)) ([#897](https://github.com/sapphiredev/utilities/pull/897) by @renovate[bot])
10
+ - **deps:** Update all non-major dependencies ([4bc5591](https://github.com/sapphiredev/utilities/commit/4bc55911f95456a2caee10a3588c7b5f1542fb00)) ([#879](https://github.com/sapphiredev/utilities/pull/879) by @renovate[bot])
11
+ - **deps:** Update all non-major dependencies ([bc2f01c](https://github.com/sapphiredev/utilities/commit/bc2f01ce7d6932c9a0e02faa7cc081ecbae9640d)) ([#869](https://github.com/sapphiredev/utilities/pull/869) by @renovate[bot])
12
+
13
+ # [@sapphire/lexure@1.1.8](https://github.com/sapphiredev/utilities/compare/@sapphire/lexure@1.1.7...@sapphire/lexure@1.1.8) - (2024-11-02)
14
+
15
+ ## 🐛 Bug Fixes
16
+
17
+ - Move browser imports ([100ffb0](https://github.com/sapphiredev/utilities/commit/100ffb0a2471bb9f74cc580d282d11059e1a0a68)) ([#826](https://github.com/sapphiredev/utilities/pull/826) by @kyranet)
18
+ - **deps:** Update all non-major dependencies ([083376a](https://github.com/sapphiredev/utilities/commit/083376aac55094dbeddb5194e8a8f0d794b8cceb)) ([#763](https://github.com/sapphiredev/utilities/pull/763) by @renovate[bot])
19
+ - **deps:** Update all non-major dependencies ([e7fdc5d](https://github.com/sapphiredev/utilities/commit/e7fdc5db3632a7f90292ef3978898da32730343a)) ([#752](https://github.com/sapphiredev/utilities/pull/752) by @renovate[bot])
20
+
21
+ # [@sapphire/lexure@1.1.7](https://github.com/sapphiredev/utilities/compare/@sapphire/lexure@1.1.7...@sapphire/lexure@1.1.7) - (2024-01-19)
22
+
23
+ ## 🐛 Bug Fixes
24
+
25
+ - Fixed commonjs typings export mapping (#707) ([216ff02](https://github.com/sapphiredev/utilities/commit/216ff0260d63a9590357f9a5069f1ae2b34eaf5d))
26
+
27
+ # [@sapphire/lexure@1.1.6](https://github.com/sapphiredev/utilities/compare/@sapphire/lexure@1.1.6...@sapphire/lexure@1.1.6) - (2023-12-04)
28
+
29
+ ## 🐛 Bug Fixes
30
+
31
+ - **lexure:** Properly split CJS, ESM and IIFE ([d218a22](https://github.com/sapphiredev/utilities/commit/d218a22a3ca997151963e5abb97aa79146a20e29))
32
+ - Update export mapping for proper ESM/CJS split ([dd0cff8](https://github.com/sapphiredev/utilities/commit/dd0cff8e9b03a15812f25f7a1180501a92422629))
33
+ - **deps:** Update all non-major dependencies (#607) ([9cc8bd0](https://github.com/sapphiredev/utilities/commit/9cc8bd0d4b5d650deab2c913e6c3d713861bae28))
34
+
35
+ ## 🧪 Testing
36
+
37
+ - Update vitest to coverage v8 ([a4bc6e4](https://github.com/sapphiredev/utilities/commit/a4bc6e4f24ea60143a150ecc76fda6484f172ab9))
38
+
5
39
  # [@sapphire/lexure@1.1.3](https://github.com/sapphiredev/utilities/compare/@sapphire/lexure@1.1.2...@sapphire/lexure@1.1.3) - (2023-04-10)
6
40
 
7
41
  ## 🐛 Bug Fixes
package/README.md CHANGED
@@ -7,7 +7,6 @@
7
7
  **A powerful and fast parser for non-technical user input**
8
8
 
9
9
  [![GitHub](https://img.shields.io/github/license/sapphiredev/utilities)](https://github.com/sapphiredev/utilities/blob/main/LICENSE.md)
10
- [![codecov](https://codecov.io/gh/sapphiredev/utilities/branch/main/graph/badge.svg?token=OEGIV6RFDO)](https://codecov.io/gh/sapphiredev/utilities)
11
10
  [![npm bundle size](https://img.shields.io/bundlephobia/min/@sapphire/lexure?logo=webpack&style=flat-square)](https://bundlephobia.com/lexure?p=@sapphire/lexure)
12
11
  [![npm](https://img.shields.io/npm/v/@sapphire/lexure?color=crimson&logo=npm&style=flat-square)](https://www.npmjs.com/package/@sapphire/lexure)
13
12
 
@@ -5,11 +5,8 @@ var result = require('@sapphire/result');
5
5
  var __defProp = Object.defineProperty;
6
6
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
- var __publicField = (obj, key, value) => {
9
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
- return value;
11
- };
12
- var ArgumentStream = class {
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
+ var _ArgumentStream = class _ArgumentStream {
13
10
  constructor(results) {
14
11
  __publicField(this, "results");
15
12
  __publicField(this, "state");
@@ -63,8 +60,7 @@ var ArgumentStream = class {
63
60
  * @returns The value, if any.
64
61
  */
65
62
  single() {
66
- if (this.finished)
67
- return result.Option.none;
63
+ if (this.finished) return result.Option.none;
68
64
  while (this.state.used.has(this.state.position)) {
69
65
  ++this.state.position;
70
66
  }
@@ -104,8 +100,7 @@ var ArgumentStream = class {
104
100
  * @returns The mapped value, if any.
105
101
  */
106
102
  singleMap(predicate, useAnyways = false) {
107
- if (this.finished)
108
- return result.Option.none;
103
+ if (this.finished) return result.Option.none;
109
104
  while (this.state.used.has(this.state.position)) {
110
105
  ++this.state.position;
111
106
  }
@@ -127,8 +122,7 @@ var ArgumentStream = class {
127
122
  * @returns The mapped value, if any.
128
123
  */
129
124
  async singleMapAsync(predicate, useAnyways = false) {
130
- if (this.finished)
131
- return result.Option.none;
125
+ if (this.finished) return result.Option.none;
132
126
  while (this.state.used.has(this.state.position)) {
133
127
  ++this.state.position;
134
128
  }
@@ -176,8 +170,7 @@ var ArgumentStream = class {
176
170
  * @returns The transformed value, if any.
177
171
  */
178
172
  singleParse(predicate, useAnyways = false) {
179
- if (this.finished)
180
- return result.Result.err(null);
173
+ if (this.finished) return result.Result.err(null);
181
174
  while (this.state.used.has(this.state.position)) {
182
175
  ++this.state.position;
183
176
  }
@@ -200,8 +193,7 @@ var ArgumentStream = class {
200
193
  * @returns The mapped value, if any.
201
194
  */
202
195
  async singleParseAsync(predicate, useAnyways = false) {
203
- if (this.finished)
204
- return result.Result.err(null);
196
+ if (this.finished) return result.Result.err(null);
205
197
  while (this.state.used.has(this.state.position)) {
206
198
  ++this.state.position;
207
199
  }
@@ -234,8 +226,7 @@ var ArgumentStream = class {
234
226
  */
235
227
  find(predicate, from = this.state.position) {
236
228
  for (let i = from; i < this.length; ++i) {
237
- if (this.state.used.has(i))
238
- continue;
229
+ if (this.state.used.has(i)) continue;
239
230
  const parameter = this.results.ordered[i].value;
240
231
  if (predicate(parameter)) {
241
232
  this.state.used.add(i);
@@ -266,8 +257,7 @@ var ArgumentStream = class {
266
257
  */
267
258
  async findAsync(predicate, from = this.state.position) {
268
259
  for (let i = from; i < this.length; ++i) {
269
- if (this.state.used.has(i))
270
- continue;
260
+ if (this.state.used.has(i)) continue;
271
261
  const parameter = this.results.ordered[i].value;
272
262
  if (await predicate(parameter)) {
273
263
  this.state.used.add(i);
@@ -299,8 +289,7 @@ var ArgumentStream = class {
299
289
  */
300
290
  findMap(predicate, from = this.state.position) {
301
291
  for (let i = from; i < this.length; ++i) {
302
- if (this.state.used.has(i))
303
- continue;
292
+ if (this.state.used.has(i)) continue;
304
293
  const parameter = this.results.ordered[i].value;
305
294
  const result = predicate(parameter);
306
295
  if (result.isSome()) {
@@ -333,8 +322,7 @@ var ArgumentStream = class {
333
322
  */
334
323
  async findMapAsync(predicate, from = this.state.position) {
335
324
  for (let i = from; i < this.length; ++i) {
336
- if (this.state.used.has(i))
337
- continue;
325
+ if (this.state.used.has(i)) continue;
338
326
  const parameter = this.results.ordered[i].value;
339
327
  const result = await predicate(parameter);
340
328
  if (result.isSome()) {
@@ -384,8 +372,7 @@ var ArgumentStream = class {
384
372
  findParse(predicate, from = this.state.position) {
385
373
  const errors = [];
386
374
  for (let i = from; i < this.length; ++i) {
387
- if (this.state.used.has(i))
388
- continue;
375
+ if (this.state.used.has(i)) continue;
389
376
  const parameter = this.results.ordered[i].value;
390
377
  const result = predicate(parameter);
391
378
  if (result.isOk()) {
@@ -413,8 +400,7 @@ var ArgumentStream = class {
413
400
  async findParseAsync(predicate, from = this.state.position) {
414
401
  const errors = [];
415
402
  for (let i = from; i < this.length; ++i) {
416
- if (this.state.used.has(i))
417
- continue;
403
+ if (this.state.used.has(i)) continue;
418
404
  const parameter = this.results.ordered[i].value;
419
405
  const result = await predicate(parameter);
420
406
  if (result.isOk()) {
@@ -449,26 +435,21 @@ var ArgumentStream = class {
449
435
  * @returns The unused parameters within the range.
450
436
  */
451
437
  many(limit = Infinity, from = this.state.position) {
452
- if (this.finished)
453
- return result.Option.none;
438
+ if (this.finished) return result.Option.none;
454
439
  const parameters = [];
455
440
  for (let i = from; i < this.length; ++i) {
456
- if (this.state.used.has(i))
457
- continue;
441
+ if (this.state.used.has(i)) continue;
458
442
  this.state.used.add(i);
459
443
  parameters.push(this.results.ordered[i]);
460
- if (parameters.length >= limit)
461
- break;
444
+ if (parameters.length >= limit) break;
462
445
  }
463
446
  return parameters.length ? result.Option.some(parameters) : result.Option.none;
464
447
  }
465
448
  filter(predicate, from = this.state.position) {
466
- if (this.finished)
467
- return result.Option.none;
449
+ if (this.finished) return result.Option.none;
468
450
  const parameters = [];
469
451
  for (let i = from; i < this.length; ++i) {
470
- if (this.state.used.has(i))
471
- continue;
452
+ if (this.state.used.has(i)) continue;
472
453
  const parameter = this.results.ordered[i].value;
473
454
  if (predicate(parameter)) {
474
455
  this.state.used.add(i);
@@ -478,12 +459,10 @@ var ArgumentStream = class {
478
459
  return result.Option.some(parameters);
479
460
  }
480
461
  async filterAsync(predicate, from = this.state.position) {
481
- if (this.finished)
482
- return result.Option.none;
462
+ if (this.finished) return result.Option.none;
483
463
  const parameters = [];
484
464
  for (let i = from; i < this.length; ++i) {
485
- if (this.state.used.has(i))
486
- continue;
465
+ if (this.state.used.has(i)) continue;
487
466
  const parameter = this.results.ordered[i].value;
488
467
  if (await predicate(parameter)) {
489
468
  this.state.used.add(i);
@@ -493,12 +472,10 @@ var ArgumentStream = class {
493
472
  return result.Option.some(parameters);
494
473
  }
495
474
  filterMap(predicate, from = this.state.position) {
496
- if (this.finished)
497
- return result.Option.none;
475
+ if (this.finished) return result.Option.none;
498
476
  const parameters = [];
499
477
  for (let i = from; i < this.length; ++i) {
500
- if (this.state.used.has(i))
501
- continue;
478
+ if (this.state.used.has(i)) continue;
502
479
  const parameter = this.results.ordered[i].value;
503
480
  const result = predicate(parameter);
504
481
  result.inspect((value) => {
@@ -509,12 +486,10 @@ var ArgumentStream = class {
509
486
  return result.Option.some(parameters);
510
487
  }
511
488
  async filterMapAsync(predicate, from = this.state.position) {
512
- if (this.finished)
513
- return result.Option.none;
489
+ if (this.finished) return result.Option.none;
514
490
  const parameters = [];
515
491
  for (let i = from; i < this.length; ++i) {
516
- if (this.state.used.has(i))
517
- continue;
492
+ if (this.state.used.has(i)) continue;
518
493
  const parameter = this.results.ordered[i].value;
519
494
  const result = await predicate(parameter);
520
495
  result.inspect((value) => {
@@ -592,8 +567,7 @@ var ArgumentStream = class {
592
567
  const entries = [];
593
568
  for (const key of keys) {
594
569
  const values = this.results.options.get(key);
595
- if (values)
596
- entries.push(...values);
570
+ if (values) entries.push(...values);
597
571
  }
598
572
  return entries.length ? result.Option.some(entries) : result.Option.none;
599
573
  }
@@ -610,10 +584,11 @@ var ArgumentStream = class {
610
584
  this.restore({ used: /* @__PURE__ */ new Set(), position: 0 });
611
585
  }
612
586
  };
613
- __name(ArgumentStream, "ArgumentStream");
587
+ __name(_ArgumentStream, "ArgumentStream");
588
+ var ArgumentStream = _ArgumentStream;
614
589
 
615
590
  // src/lib/lexer/streams/parameters/BaseParameter.ts
616
- var BaseParameter = class {
591
+ var _BaseParameter = class _BaseParameter {
617
592
  constructor(separators) {
618
593
  __publicField(this, "separators");
619
594
  this.separators = separators;
@@ -622,10 +597,11 @@ var BaseParameter = class {
622
597
  return this.separators.join("");
623
598
  }
624
599
  };
625
- __name(BaseParameter, "BaseParameter");
600
+ __name(_BaseParameter, "BaseParameter");
601
+ var BaseParameter = _BaseParameter;
626
602
 
627
603
  // src/lib/lexer/streams/parameters/QuotedParameter.ts
628
- var QuotedParameter = class extends BaseParameter {
604
+ var _QuotedParameter = class _QuotedParameter extends BaseParameter {
629
605
  constructor(separators, part) {
630
606
  super(separators);
631
607
  __publicField(this, "value");
@@ -639,10 +615,11 @@ var QuotedParameter = class extends BaseParameter {
639
615
  return `${this.open}${this.value}${this.close}`;
640
616
  }
641
617
  };
642
- __name(QuotedParameter, "QuotedParameter");
618
+ __name(_QuotedParameter, "QuotedParameter");
619
+ var QuotedParameter = _QuotedParameter;
643
620
 
644
621
  // src/lib/lexer/streams/parameters/WordParameter.ts
645
- var WordParameter = class extends BaseParameter {
622
+ var _WordParameter = class _WordParameter extends BaseParameter {
646
623
  constructor(separators, part) {
647
624
  super(separators);
648
625
  __publicField(this, "value");
@@ -652,10 +629,11 @@ var WordParameter = class extends BaseParameter {
652
629
  return this.value;
653
630
  }
654
631
  };
655
- __name(WordParameter, "WordParameter");
632
+ __name(_WordParameter, "WordParameter");
633
+ var WordParameter = _WordParameter;
656
634
 
657
635
  // src/lib/lexer/streams/raw/TokenStream.ts
658
- var TokenStream = class {
636
+ var _TokenStream = class _TokenStream {
659
637
  constructor(lexer, input) {
660
638
  __publicField(this, "input");
661
639
  __publicField(this, "quotes");
@@ -682,11 +660,9 @@ var TokenStream = class {
682
660
  }
683
661
  getPossibleQuotedArgument() {
684
662
  for (const [open, close] of this.quotes) {
685
- if (!this.input.startsWith(open, this.position))
686
- continue;
663
+ if (!this.input.startsWith(open, this.position)) continue;
687
664
  const end = this.input.indexOf(close, this.position + open.length);
688
- if (end === -1)
689
- continue;
665
+ if (end === -1) continue;
690
666
  const value = this.input.slice(this.position + open.length, end);
691
667
  this.position = end + close.length;
692
668
  return { type: 1 /* Quoted */, value, open, close };
@@ -700,7 +676,8 @@ var TokenStream = class {
700
676
  return { type: 0 /* Parameter */, value };
701
677
  }
702
678
  };
703
- __name(TokenStream, "TokenStream");
679
+ __name(_TokenStream, "TokenStream");
680
+ var TokenStream = _TokenStream;
704
681
  var TokenType = /* @__PURE__ */ ((TokenType2) => {
705
682
  TokenType2[TokenType2["Parameter"] = 0] = "Parameter";
706
683
  TokenType2[TokenType2["Quoted"] = 1] = "Quoted";
@@ -709,7 +686,7 @@ var TokenType = /* @__PURE__ */ ((TokenType2) => {
709
686
  })(TokenType || {});
710
687
 
711
688
  // src/lib/lexer/streams/ParameterStream.ts
712
- var ParameterStream = class {
689
+ var _ParameterStream = class _ParameterStream {
713
690
  constructor(stream) {
714
691
  __publicField(this, "stream");
715
692
  __publicField(this, "separators", []);
@@ -727,10 +704,11 @@ var ParameterStream = class {
727
704
  return this.separators;
728
705
  }
729
706
  };
730
- __name(ParameterStream, "ParameterStream");
707
+ __name(_ParameterStream, "ParameterStream");
708
+ var ParameterStream = _ParameterStream;
731
709
 
732
710
  // src/lib/lexer/Lexer.ts
733
- var Lexer = class {
711
+ var _Lexer = class _Lexer {
734
712
  constructor(options = {}) {
735
713
  __publicField(this, "quotes");
736
714
  __publicField(this, "separator");
@@ -744,10 +722,11 @@ var Lexer = class {
744
722
  return new TokenStream(this, input);
745
723
  }
746
724
  };
747
- __name(Lexer, "Lexer");
725
+ __name(_Lexer, "Lexer");
726
+ var Lexer = _Lexer;
748
727
 
749
728
  // src/lib/parser/ParserResult.ts
750
- var ParserResult = class {
729
+ var _ParserResult = class _ParserResult {
751
730
  constructor(parser) {
752
731
  __publicField(this, "ordered", []);
753
732
  __publicField(this, "flags", /* @__PURE__ */ new Set());
@@ -767,10 +746,8 @@ var ParserResult = class {
767
746
  parsePossibleOptions(parameter) {
768
747
  return this.strategy.matchOption(parameter.value).inspect(([key, value]) => {
769
748
  const existing = this.options.get(key);
770
- if (existing)
771
- existing.push(value);
772
- else
773
- this.options.set(key, [value]);
749
+ if (existing) existing.push(value);
750
+ else this.options.set(key, [value]);
774
751
  }).isSome();
775
752
  }
776
753
  parseOrdered(parameter) {
@@ -778,8 +755,9 @@ var ParserResult = class {
778
755
  return true;
779
756
  }
780
757
  };
781
- __name(ParserResult, "ParserResult");
782
- var EmptyStrategy = class {
758
+ __name(_ParserResult, "ParserResult");
759
+ var ParserResult = _ParserResult;
760
+ var _EmptyStrategy = class _EmptyStrategy {
783
761
  matchFlag() {
784
762
  return result.Option.none;
785
763
  }
@@ -787,10 +765,11 @@ var EmptyStrategy = class {
787
765
  return result.Option.none;
788
766
  }
789
767
  };
790
- __name(EmptyStrategy, "EmptyStrategy");
768
+ __name(_EmptyStrategy, "EmptyStrategy");
769
+ var EmptyStrategy = _EmptyStrategy;
791
770
 
792
771
  // src/lib/parser/Parser.ts
793
- var Parser = class {
772
+ var _Parser = class _Parser {
794
773
  constructor(strategy) {
795
774
  __publicField(this, "strategy");
796
775
  this.strategy = strategy ?? new EmptyStrategy();
@@ -803,8 +782,9 @@ var Parser = class {
803
782
  return new ParserResult(this).parse(input);
804
783
  }
805
784
  };
806
- __name(Parser, "Parser");
807
- var PrefixedStrategy = class {
785
+ __name(_Parser, "Parser");
786
+ var Parser = _Parser;
787
+ var _PrefixedStrategy = class _PrefixedStrategy {
808
788
  constructor(prefixes, separators) {
809
789
  __publicField(this, "prefixes");
810
790
  __publicField(this, "separators");
@@ -813,22 +793,17 @@ var PrefixedStrategy = class {
813
793
  }
814
794
  matchFlag(input) {
815
795
  const prefix = this.prefixes.find((x) => input.startsWith(x));
816
- if (!prefix)
817
- return result.Option.none;
818
- if (this.separators.some((x) => input.includes(x, prefix.length)))
819
- return result.Option.none;
796
+ if (!prefix) return result.Option.none;
797
+ if (this.separators.some((x) => input.includes(x, prefix.length))) return result.Option.none;
820
798
  return result.Option.some(input.slice(prefix.length));
821
799
  }
822
800
  matchOption(input) {
823
801
  const prefix = this.prefixes.find((x) => input.startsWith(x));
824
- if (!prefix)
825
- return result.Option.none;
802
+ if (!prefix) return result.Option.none;
826
803
  for (const separator of this.separators) {
827
804
  const index = input.indexOf(separator, prefix.length + 1);
828
- if (index === -1)
829
- continue;
830
- if (index + separator.length === input.length)
831
- return result.Option.none;
805
+ if (index === -1) continue;
806
+ if (index + separator.length === input.length) return result.Option.none;
832
807
  const key = input.slice(prefix.length, index);
833
808
  const value = input.slice(index + separator.length);
834
809
  return result.Option.some([key, value]);
@@ -836,14 +811,13 @@ var PrefixedStrategy = class {
836
811
  return result.Option.none;
837
812
  }
838
813
  };
839
- __name(PrefixedStrategy, "PrefixedStrategy");
814
+ __name(_PrefixedStrategy, "PrefixedStrategy");
815
+ var PrefixedStrategy = _PrefixedStrategy;
840
816
 
841
817
  // src/lib/util/util.ts
842
818
  function join(parameters) {
843
- if (parameters.length === 0)
844
- return "";
845
- if (parameters.length === 1)
846
- return parameters[0].value;
819
+ if (parameters.length === 0) return "";
820
+ if (parameters.length === 1) return parameters[0].value;
847
821
  let output = parameters[0].value;
848
822
  for (let i = 1; i < parameters.length; i++) {
849
823
  const parameter = parameters[i];
@@ -853,10 +827,8 @@ function join(parameters) {
853
827
  }
854
828
  __name(join, "join");
855
829
  function joinRaw(parameters) {
856
- if (parameters.length === 0)
857
- return "";
858
- if (parameters.length === 1)
859
- return parameters[0].raw;
830
+ if (parameters.length === 0) return "";
831
+ if (parameters.length === 1) return parameters[0].raw;
860
832
  let output = parameters[0].raw;
861
833
  for (let i = 1; i < parameters.length; i++) {
862
834
  const parameter = parameters[i];
@@ -880,5 +852,5 @@ exports.TokenType = TokenType;
880
852
  exports.WordParameter = WordParameter;
881
853
  exports.join = join;
882
854
  exports.joinRaw = joinRaw;
883
- //# sourceMappingURL=out.js.map
884
- //# sourceMappingURL=index.js.map
855
+ //# sourceMappingURL=index.cjs.map
856
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/ArgumentStream.ts","../../src/lib/lexer/streams/parameters/BaseParameter.ts","../../src/lib/lexer/streams/parameters/QuotedParameter.ts","../../src/lib/lexer/streams/parameters/WordParameter.ts","../../src/lib/lexer/streams/raw/TokenStream.ts","../../src/lib/lexer/streams/ParameterStream.ts","../../src/lib/lexer/Lexer.ts","../../src/lib/parser/ParserResult.ts","../../src/lib/parser/strategies/EmptyStrategy.ts","../../src/lib/parser/Parser.ts","../../src/lib/parser/strategies/PrefixedStrategy.ts","../../src/lib/util/util.ts"],"names":["Option","result","Result","TokenType"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Option, Result } from '@sapphire/result';\nimport type { Parameter } from './lexer/streams/ParameterStream';\nimport type { ParserResult } from './parser/ParserResult';\n\nexport class ArgumentStream {\n\tpublic readonly results: ParserResult;\n\tpublic state: ArgumentStream.State;\n\n\tpublic constructor(results: ParserResult) {\n\t\tthis.results = results;\n\t\tthis.state = { used: new Set(), position: 0 };\n\t}\n\n\t/**\n\t * Whether or not all ordered parameters were used.\n\t */\n\tpublic get finished() {\n\t\treturn this.used === this.length;\n\t}\n\n\t/**\n\t * The amount of ordered parameters.\n\t */\n\tpublic get length() {\n\t\treturn this.results.ordered.length;\n\t}\n\n\t/**\n\t * The remaining amount of ordered parameters.\n\t */\n\tpublic get remaining() {\n\t\treturn this.length - this.used;\n\t}\n\n\t/**\n\t * The amount of ordered parameters that have been used.\n\t */\n\tpublic get used() {\n\t\treturn this.state.used.size;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '1' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '2' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '3' }\n\t *\n\t * console.log(args.single());\n\t * // None\n\t * ```\n\t *\n\t * @returns The value, if any.\n\t */\n\tpublic single(): Option<string> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tthis.state.used.add(this.state.position);\n\t\treturn Option.some(this.results.ordered[this.state.position++].value);\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link singleMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number) ? Option.none : Option.some(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 1 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 2 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 3 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // None\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic singleMap<T>(predicate: (value: string) => Option<T>, useAnyways = false): Option<T> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleMap}.\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, useAnyways = false): Promise<Option<T>> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Finds and retrieves the next unused parameter and transforms it.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link singleParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 2 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 3 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Err { error: null }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's transformed value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the transformation failed. Defaults to `false`.\n\t * @returns The transformed value, if any.\n\t */\n\tpublic singleParse<T, E>(predicate: (value: string) => Result<T, E>, useAnyways = false): Result<T, E | null> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, useAnyways = false): Promise<Result<T, E | null>> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic find(predicate: (value: string) => boolean, from = this.state.position): Option<string> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link find}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link findMap}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link findParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Suppose args are from 'ba 1 cc'.\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Err {\n\t * // error: [\n\t * // 'Could not parse ba to a number',\n\t * // 'Could not parse cc to a number'\n\t * // ]\n\t * // }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findParse<T, E>(predicate: (value: string) => Result<T, E>, from = this.state.position): Result<T, E[]> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMapAsync} that returns the errors on failure.\n\t * @note This is an asynchronous variant of {@link findParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, from = this.state.position): Promise<Result<T, E[]>> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Retrieves multiple unused parameters.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many().unwrap()));\n\t * // '1 2 3'\n\t * ```\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many(2).unwrap()));\n\t * // '1 2'\n\t * ```\n\t *\n\t * @param limit The maximum amount of parameters to retrieve, defaults to `Infinity`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The unused parameters within the range.\n\t */\n\tpublic many(limit = Infinity, from = this.state.position): Option<Parameter[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: Parameter[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\t// If the current parameter was already used, skip:\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\t// Mark current parameter as used, and push it to the resulting array:\n\t\t\tthis.state.used.add(i);\n\t\t\tparameters.push(this.results.ordered[i]);\n\n\t\t\t// If the parameters reached the limit, break the loop:\n\t\t\tif (parameters.length >= limit) break;\n\t\t}\n\n\t\treturn parameters.length ? Option.some(parameters) : Option.none;\n\t}\n\n\tpublic filter(predicate: (value: string) => boolean, from = this.state.position): Option<string[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic filterMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\t/**\n\t * Checks whether any of the flags were given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--f --g':\n\t *\n\t * console.log(args.flag('f'));\n\t * // true\n\t *\n\t * console.log(args.flag('g', 'h'));\n\t * // true\n\t *\n\t * console.log(args.flag('h'));\n\t * // false\n\t * ```\n\t *\n\t * @param keys The names of the flags to check.\n\t * @returns Whether or not any of the flags were given.\n\t */\n\tpublic flag(...keys: readonly string[]): boolean {\n\t\treturn keys.some((key) => this.results.flags.has(key));\n\t}\n\n\t/**\n\t * Gets the last value of any option. When there are multiple names, the last value of the last found name is given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: '1' }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: '3' }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The last value of the option, if any.\n\t */\n\tpublic option(...keys: readonly string[]): Option<string> {\n\t\treturn this.options(...keys).map((values) => values.at(-1)!);\n\t}\n\n\t/**\n\t * Gets all values from all options.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: ['1', '1'] }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: ['2', '3'] }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The values from all the options concatenated, if any.\n\t */\n\tpublic options(...keys: readonly string[]): Option<readonly string[]> {\n\t\tconst entries: string[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst values = this.results.options.get(key);\n\t\t\tif (values) entries.push(...values);\n\t\t}\n\n\t\treturn entries.length ? Option.some(entries) : Option.none;\n\t}\n\n\tpublic save(): ArgumentStream.State {\n\t\treturn {\n\t\t\tused: new Set(this.state.used),\n\t\t\tposition: this.state.position\n\t\t};\n\t}\n\n\tpublic restore(state: ArgumentStream.State) {\n\t\tthis.state = state;\n\t}\n\n\tpublic reset() {\n\t\tthis.restore({ used: new Set(), position: 0 });\n\t}\n}\n\nexport namespace ArgumentStream {\n\texport interface State {\n\t\tused: Set<number>;\n\t\tposition: number;\n\t}\n}\n","export abstract class BaseParameter {\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(separators: readonly string[]) {\n\t\tthis.separators = separators;\n\t}\n\n\tpublic get leading(): string {\n\t\treturn this.separators.join('');\n\t}\n\n\tpublic abstract get raw(): string;\n}\n","import type { QuotedToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class QuotedParameter extends BaseParameter {\n\tpublic readonly value: string;\n\tpublic readonly open: string;\n\tpublic readonly close: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<QuotedToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t\tthis.open = part.open;\n\t\tthis.close = part.close;\n\t}\n\n\tpublic get raw() {\n\t\treturn `${this.open}${this.value}${this.close}`;\n\t}\n}\n","import type { WordToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class WordParameter extends BaseParameter {\n\tpublic readonly value: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<WordToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t}\n\n\tpublic get raw() {\n\t\treturn this.value;\n\t}\n}\n","import type { Lexer } from '../../Lexer';\n\nexport class TokenStream implements Iterable<Token> {\n\tprivate readonly input: string;\n\tprivate readonly quotes: readonly [string, string][];\n\tprivate readonly separator: string;\n\tprivate position = 0;\n\n\tpublic constructor(lexer: Lexer, input: string) {\n\t\tthis.quotes = lexer.quotes;\n\t\tthis.separator = lexer.separator;\n\t\tthis.input = input;\n\t}\n\n\tpublic get finished() {\n\t\treturn this.position >= this.input.length;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Token> {\n\t\twhile (!this.finished) {\n\t\t\tyield this.getPossibleSeparator() ?? this.getPossibleQuotedArgument() ?? this.getParameter();\n\t\t}\n\t}\n\n\tprivate getPossibleSeparator(): SeparatorToken | null {\n\t\tif (this.input.startsWith(this.separator, this.position)) {\n\t\t\tthis.position += this.separator.length;\n\t\t\treturn { type: TokenType.Separator, value: this.separator };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getPossibleQuotedArgument(): QuotedToken | null {\n\t\tfor (const [open, close] of this.quotes) {\n\t\t\tif (!this.input.startsWith(open, this.position)) continue;\n\n\t\t\tconst end = this.input.indexOf(close, this.position + open.length);\n\t\t\tif (end === -1) continue;\n\n\t\t\tconst value = this.input.slice(this.position + open.length, end);\n\t\t\tthis.position = end + close.length;\n\n\t\t\treturn { type: TokenType.Quoted, value, open, close };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getParameter(): WordToken {\n\t\tconst index = this.input.indexOf(this.separator, this.position);\n\t\tconst value = index === -1 ? this.input.slice(this.position) : this.input.slice(this.position, index);\n\t\tthis.position += value.length;\n\t\treturn { type: TokenType.Parameter, value };\n\t}\n}\n\nexport enum TokenType {\n\tParameter,\n\tQuoted,\n\tSeparator\n}\n\nexport type Token = WordToken | QuotedToken | SeparatorToken;\n\nexport interface WordToken {\n\treadonly type: TokenType.Parameter;\n\treadonly value: string;\n}\n\nexport interface QuotedToken {\n\treadonly type: TokenType.Quoted;\n\treadonly value: string;\n\treadonly open: string;\n\treadonly close: string;\n}\n\nexport interface SeparatorToken {\n\treadonly type: TokenType.Separator;\n\treadonly value: string;\n}\n","import { QuotedParameter } from './parameters/QuotedParameter';\nimport { WordParameter } from './parameters/WordParameter';\nimport { TokenType, type Token } from './raw/TokenStream';\n\nexport class ParameterStream {\n\tprivate readonly stream: Iterable<Token>;\n\tprivate separators: string[] = [];\n\n\tpublic constructor(stream: Iterable<Token>) {\n\t\tthis.stream = stream;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Parameter, string[]> {\n\t\tfor (const part of this.stream) {\n\t\t\tif (part.type === TokenType.Separator) {\n\t\t\t\tthis.separators.push(part.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield part.type === TokenType.Quoted ? new QuotedParameter(this.separators, part) : new WordParameter(this.separators, part);\n\t\t\tthis.separators = [];\n\t\t}\n\n\t\treturn this.separators;\n\t}\n}\n\nexport type Parameter = QuotedParameter | WordParameter;\n","import { ParameterStream } from './streams/ParameterStream';\nimport { TokenStream } from './streams/raw/TokenStream';\n\nexport class Lexer {\n\tpublic readonly quotes: readonly [open: string, close: string][];\n\tpublic readonly separator: string;\n\n\tpublic constructor(options: Lexer.Options = {}) {\n\t\tthis.quotes = options.quotes ?? [];\n\t\tthis.separator = options.separator ?? ' ';\n\t}\n\n\tpublic run(input: string) {\n\t\treturn new ParameterStream(this.raw(input));\n\t}\n\n\tpublic raw(input: string) {\n\t\treturn new TokenStream(this, input);\n\t}\n}\n\nexport namespace Lexer {\n\texport interface Options {\n\t\tseparator?: string;\n\t\tquotes?: readonly [open: string, close: string][];\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { Parser } from './Parser';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\n\nexport class ParserResult {\n\tpublic readonly ordered: Parameter[] = [];\n\tpublic readonly flags = new Set<string>();\n\tpublic readonly options = new Map<string, string[]>();\n\tprivate readonly strategy: IUnorderedStrategy;\n\n\tpublic constructor(parser: Parser) {\n\t\tthis.strategy = parser.strategy;\n\t}\n\n\tpublic parse(parameters: Iterable<Parameter>) {\n\t\tfor (const parameter of parameters) {\n\t\t\tthis.parsePossibleFlag(parameter) || this.parsePossibleOptions(parameter) || this.parseOrdered(parameter);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprivate parsePossibleFlag(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchFlag(parameter.value)\n\t\t\t.inspect((value) => this.flags.add(value))\n\t\t\t.isSome();\n\t}\n\n\tprivate parsePossibleOptions(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchOption(parameter.value)\n\t\t\t.inspect(([key, value]) => {\n\t\t\t\tconst existing = this.options.get(key);\n\t\t\t\tif (existing) existing.push(value);\n\t\t\t\telse this.options.set(key, [value]);\n\t\t\t})\n\t\t\t.isSome();\n\t}\n\n\tprivate parseOrdered(parameter: Parameter): boolean {\n\t\tthis.ordered.push(parameter);\n\t\treturn true;\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class EmptyStrategy implements IUnorderedStrategy {\n\tpublic matchFlag(): Option<string> {\n\t\treturn Option.none;\n\t}\n\n\tpublic matchOption(): Option<readonly [key: string, value: string]> {\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\nimport { ParserResult } from './ParserResult';\nimport { EmptyStrategy } from './strategies/EmptyStrategy';\n\nexport class Parser {\n\tpublic strategy: IUnorderedStrategy;\n\n\tpublic constructor(strategy?: IUnorderedStrategy) {\n\t\tthis.strategy = strategy ?? new EmptyStrategy();\n\t}\n\n\tpublic setUnorderedStrategy(strategy: IUnorderedStrategy) {\n\t\tthis.strategy = strategy;\n\t\treturn this;\n\t}\n\n\tpublic run(input: Iterable<Parameter>): ParserResult {\n\t\treturn new ParserResult(this).parse(input);\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class PrefixedStrategy implements IUnorderedStrategy {\n\tpublic readonly prefixes: readonly string[];\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(prefixes: readonly string[], separators: readonly string[]) {\n\t\tthis.prefixes = prefixes;\n\t\tthis.separators = separators;\n\t}\n\n\tpublic matchFlag(input: string): Option<string> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\t// If the separator is present, return None:\n\t\tif (this.separators.some((x) => input.includes(x, prefix.length))) return Option.none;\n\n\t\treturn Option.some(input.slice(prefix.length));\n\t}\n\n\tpublic matchOption(input: string): Option<readonly [key: string, value: string]> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\tfor (const separator of this.separators) {\n\t\t\tconst index = input.indexOf(separator, prefix.length + 1);\n\n\t\t\t// If the separator is missing, skip:\n\t\t\tif (index === -1) continue;\n\n\t\t\t// If the separator is present, but has no value, return None:\n\t\t\tif (index + separator.length === input.length) return Option.none;\n\n\t\t\tconst key = input.slice(prefix.length, index);\n\t\t\tconst value = input.slice(index + separator.length);\n\t\t\treturn Option.some([key, value] as const);\n\t\t}\n\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\n\n/**\n * Joins the parameters by their `leading` value, using the `value` property.\n * @seealso {@link joinRaw} for the version using `raw` instead of `value`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function join(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].value;\n\n\tlet output = parameters[0].value;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.value;\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins the parameters by their `leading` value, using the `raw` property.\n * @seealso {@link join} for the version using `value` instead of `raw`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function joinRaw(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].raw;\n\n\tlet output = parameters[0].raw;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.raw;\n\t}\n\n\treturn output;\n}\n"]}
@@ -511,4 +511,4 @@ declare function join(parameters: readonly Parameter[]): string;
511
511
  */
512
512
  declare function joinRaw(parameters: readonly Parameter[]): string;
513
513
 
514
- export { ArgumentStream, BaseParameter, EmptyStrategy, IUnorderedStrategy, Lexer, Parameter, ParameterStream, Parser, ParserResult, PrefixedStrategy, QuotedParameter, QuotedToken, SeparatorToken, Token, TokenStream, TokenType, WordParameter, WordToken, join, joinRaw };
514
+ export { ArgumentStream, BaseParameter, EmptyStrategy, type IUnorderedStrategy, Lexer, type Parameter, ParameterStream, Parser, ParserResult, PrefixedStrategy, QuotedParameter, type QuotedToken, type SeparatorToken, type Token, TokenStream, TokenType, WordParameter, type WordToken, join, joinRaw };