jsonh-ts 1.3.0 → 2.0.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.
@@ -20,6 +20,14 @@ declare class JsonhReaderOptions {
20
20
  * Only some tokens can be incomplete in this mode, so it should not be relied upon.
21
21
  */
22
22
  incompleteInputs: boolean;
23
+ /**
24
+ * Constructs options for a JsonhReader.
25
+ */
26
+ constructor(init?: Partial<JsonhReaderOptions>);
27
+ /**
28
+ * Returns whether version is greater than or equal to minimumVersion.
29
+ */
30
+ supportsVersion(minimumVersion: JsonhVersion): boolean;
23
31
  }
24
32
  export = JsonhReaderOptions;
25
33
  //# sourceMappingURL=jsonh-reader-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-reader-options.d.ts","sourceRoot":"","sources":["../jsonh-reader-options.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AAEpD;;GAEG;AACH,cAAM,kBAAkB;IACpB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAuB;IAC5C;;;;;;;;;;;OAWG;IACH,gBAAgB,EAAE,OAAO,CAAS;CACrC;AAED,SAAS,kBAAkB,CAAC"}
1
+ {"version":3,"file":"jsonh-reader-options.d.ts","sourceRoot":"","sources":["../jsonh-reader-options.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AAEpD;;GAEG;AACH,cAAM,kBAAkB;IACpB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAuB;IAC5C;;;;;;;;;;;OAWG;IACH,gBAAgB,EAAE,OAAO,CAAS;IAElC;;OAEG;gBACS,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAI9C;;OAEG;IACH,eAAe,CAAC,cAAc,EAAE,YAAY,GAAG,OAAO;CAQzD;AAED,SAAS,kBAAkB,CAAC"}
@@ -21,6 +21,21 @@ class JsonhReaderOptions {
21
21
  * Only some tokens can be incomplete in this mode, so it should not be relied upon.
22
22
  */
23
23
  incompleteInputs = false;
24
+ /**
25
+ * Constructs options for a JsonhReader.
26
+ */
27
+ constructor(init) {
28
+ Object.assign(this, init);
29
+ }
30
+ /**
31
+ * Returns whether version is greater than or equal to minimumVersion.
32
+ */
33
+ supportsVersion(minimumVersion) {
34
+ const latestVersion = JsonhVersion.V2;
35
+ let optionsVersion = this.version === JsonhVersion.Latest ? latestVersion : this.version;
36
+ let givenVersion = minimumVersion === JsonhVersion.Latest ? latestVersion : minimumVersion;
37
+ return optionsVersion >= givenVersion;
38
+ }
24
39
  }
25
40
  module.exports = JsonhReaderOptions;
26
41
  //# sourceMappingURL=jsonh-reader-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-reader-options.js","sourceRoot":"","sources":["../jsonh-reader-options.ts"],"names":[],"mappings":";AAAA,mDAAoD;AAEpD;;GAEG;AACH,MAAM,kBAAkB;IACpB;;OAEG;IACH,OAAO,GAAiB,YAAY,CAAC,MAAM,CAAC;IAC5C;;;;;;;;;;;OAWG;IACH,gBAAgB,GAAY,KAAK,CAAC;CACrC;AAED,iBAAS,kBAAkB,CAAC"}
1
+ {"version":3,"file":"jsonh-reader-options.js","sourceRoot":"","sources":["../jsonh-reader-options.ts"],"names":[],"mappings":";AAAA,mDAAoD;AAEpD;;GAEG;AACH,MAAM,kBAAkB;IACpB;;OAEG;IACH,OAAO,GAAiB,YAAY,CAAC,MAAM,CAAC;IAC5C;;;;;;;;;;;OAWG;IACH,gBAAgB,GAAY,KAAK,CAAC;IAElC;;OAEG;IACH,YAAY,IAAkC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,cAA4B;QACxC,MAAM,aAAa,GAAiB,YAAY,CAAC,EAAE,CAAC;QAEpD,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACzF,IAAI,YAAY,GAAG,cAAc,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;QAE3F,OAAO,cAAc,IAAI,YAAY,CAAC;IAC1C,CAAC;CACJ;AAED,iBAAS,kBAAkB,CAAC"}
@@ -34,11 +34,11 @@ declare class JsonhReader {
34
34
  /**
35
35
  * Parses a single element from a text reader.
36
36
  */
37
- static parseElementfromTextReader<T = unknown>(textReader: TextReader): Result<T>;
37
+ static parseElementfromTextReader<T = unknown>(textReader: TextReader, options?: JsonhReaderOptions): Result<T>;
38
38
  /**
39
39
  * Parses a single element from a string.
40
40
  */
41
- static parseElementFromString<T = unknown>(string: string): Result<T>;
41
+ static parseElementFromString<T = unknown>(string: string, options?: JsonhReaderOptions): Result<T>;
42
42
  /**
43
43
  * Parses a single element from the reader.
44
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-reader.d.ts","sourceRoot":"","sources":["../jsonh-reader.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,GAAG,QAAQ,2BAA2B,CAAC,CAAC;AACjE,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAEhD,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAGhD,OAAO,MAAM,GAAG,QAAQ,aAAa,CAAC,CAAC;AAEvC;;GAEG;AACH,cAAM,WAAW;;IAKb;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAE3B;IAKD;;OAEG;IACH,IAAI,OAAO,IAAI,kBAAkB,CAEhC;IAKD;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAmBD;;OAEG;IACH,OAAO;IASP;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,kBAA6C,GAAG,WAAW;IAGlH;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAA6C,GAAG,WAAW;IAItG;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAGjF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAIrE;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC;IA0HtC;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAoChD;;OAEG;IACF,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CAuhChD;AAED,SAAS,WAAW,CAAC"}
1
+ {"version":3,"file":"jsonh-reader.d.ts","sourceRoot":"","sources":["../jsonh-reader.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,GAAG,QAAQ,2BAA2B,CAAC,CAAC;AAEjE,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAEhD,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAGhD,OAAO,MAAM,GAAG,QAAQ,aAAa,CAAC,CAAC;AAEvC;;GAEG;AACH,cAAM,WAAW;;IAKb;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAE3B;IAKD;;OAEG;IACH,IAAI,OAAO,IAAI,kBAAkB,CAEhC;IAKD;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IA6BD;;OAEG;IACH,OAAO;IASP;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,kBAA6C,GAAG,WAAW;IAGlH;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAA6C,GAAG,WAAW;IAItG;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,kBAA6C,GAAG,MAAM,CAAC,CAAC,CAAC;IAGzI;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAA6C,GAAG,MAAM,CAAC,CAAC,CAAC;IAI7H;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC;IA0HtC;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAoChD;;OAEG;IACF,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CA6kChD;AAED,SAAS,WAAW,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  const JsonhReaderOptions = require("./jsonh-reader-options.js");
4
+ const JsonhVersion = require("./jsonh-version.js");
4
5
  const TextReader = require("./text-reader.js");
5
6
  const StringTextReader = require("./string-text-reader.js");
6
7
  const JsonhToken = require("./jsonh-token.js");
@@ -44,7 +45,17 @@ class JsonhReader {
44
45
  /**
45
46
  * Characters that cannot be used unescaped in quoteless strings.
46
47
  */
47
- static #reservedChars = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\''];
48
+ get #reservedChars() {
49
+ return this.#options.supportsVersion(JsonhVersion.V2) ? _a.#reservedCharsV2 : _a.#reservedCharsV1;
50
+ }
51
+ /**
52
+ * Characters that cannot be used unescaped in quoteless strings in JSONH V1.
53
+ */
54
+ static #reservedCharsV1 = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\''];
55
+ /**
56
+ * Characters that cannot be used unescaped in quoteless strings in JSONH V2.
57
+ */
58
+ static #reservedCharsV2 = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\'', '@'];
48
59
  /**
49
60
  * Characters that are considered newlines.
50
61
  */
@@ -83,14 +94,14 @@ class JsonhReader {
83
94
  /**
84
95
  * Parses a single element from a text reader.
85
96
  */
86
- static parseElementfromTextReader(textReader) {
87
- return new _a(textReader).parseElement();
97
+ static parseElementfromTextReader(textReader, options = new JsonhReaderOptions()) {
98
+ return this.fromTextReader(textReader, options).parseElement();
88
99
  }
89
100
  /**
90
101
  * Parses a single element from a string.
91
102
  */
92
- static parseElementFromString(string) {
93
- return this.fromString(string).parseElement();
103
+ static parseElementFromString(string, options = new JsonhReaderOptions()) {
104
+ return this.fromString(string, options).parseElement();
94
105
  }
95
106
  /**
96
107
  * Parses a single element from the reader.
@@ -567,10 +578,20 @@ class JsonhReader {
567
578
  this.#readOne(',');
568
579
  }
569
580
  #readString() {
581
+ // Verbatim
582
+ let isVerbatim = false;
583
+ if (this.#options.supportsVersion(JsonhVersion.V2) && this.#readOne('@')) {
584
+ isVerbatim = true;
585
+ // Ensure string immediately follows verbatim symbol
586
+ let next = this.#peek();
587
+ if (next === null || next === '#' || next === '/' || _a.#whitespaceChars.includes(next)) {
588
+ return Result.fromError(new Error("Expected string to immediately follow verbatim symbol"));
589
+ }
590
+ }
570
591
  // Start quote
571
592
  let startQuote = this.#readAny('"', '\'');
572
593
  if (startQuote === null) {
573
- return this.#readQuotelessString();
594
+ return this.#readQuotelessString("", isVerbatim);
574
595
  }
575
596
  // Count multiple start quotes
576
597
  let startQuoteCounter = 1;
@@ -604,11 +625,16 @@ class JsonhReader {
604
625
  }
605
626
  // Escape sequence
606
627
  else if (next === '\\') {
607
- let escapeSequenceResult = this.#readEscapeSequence();
608
- if (escapeSequenceResult.isError) {
609
- return Result.fromError(escapeSequenceResult.error);
628
+ if (isVerbatim) {
629
+ stringBuilder += next;
630
+ }
631
+ else {
632
+ let escapeSequenceResult = this.#readEscapeSequence();
633
+ if (escapeSequenceResult.isError) {
634
+ return Result.fromError(escapeSequenceResult.error);
635
+ }
636
+ stringBuilder += escapeSequenceResult.value;
610
637
  }
611
- stringBuilder += escapeSequenceResult.value;
612
638
  }
613
639
  // Literal character
614
640
  else {
@@ -716,8 +742,8 @@ class JsonhReader {
716
742
  // End of string
717
743
  return Result.fromValue(new JsonhToken(JsonTokenType.String, stringBuilder));
718
744
  }
719
- #readQuotelessString(initialChars = "") {
720
- let isNamedLiteralPossible = true;
745
+ #readQuotelessString(initialChars = "", isVerbatim = false) {
746
+ let isNamedLiteralPossible = !isVerbatim;
721
747
  // Read quoteless string
722
748
  let stringBuilder = initialChars;
723
749
  while (true) {
@@ -729,15 +755,20 @@ class JsonhReader {
729
755
  // Escape sequence
730
756
  if (next === '\\') {
731
757
  this.#read();
732
- let escapeSequenceResult = this.#readEscapeSequence();
733
- if (escapeSequenceResult.isError) {
734
- return Result.fromError(escapeSequenceResult.error);
758
+ if (isVerbatim) {
759
+ stringBuilder += next;
760
+ }
761
+ else {
762
+ let escapeSequenceResult = this.#readEscapeSequence();
763
+ if (escapeSequenceResult.isError) {
764
+ return Result.fromError(escapeSequenceResult.error);
765
+ }
766
+ stringBuilder += escapeSequenceResult.value;
735
767
  }
736
- stringBuilder += escapeSequenceResult.value;
737
768
  isNamedLiteralPossible = false;
738
769
  }
739
770
  // End on reserved character
740
- else if (_a.#reservedChars.includes(next)) {
771
+ else if (this.#reservedChars.includes(next)) {
741
772
  break;
742
773
  }
743
774
  // End on newline
@@ -799,7 +830,7 @@ class JsonhReader {
799
830
  // Found quoteless string if found backslash or non-reserved char
800
831
  let nextChar = this.#peek();
801
832
  return {
802
- foundQuotelessString: nextChar !== null && (nextChar === '\\' || !_a.#reservedChars.includes(nextChar)),
833
+ foundQuotelessString: nextChar !== null && (nextChar === '\\' || !this.#reservedChars.includes(nextChar)),
803
834
  whitespaceChars: whitespaceBuilder
804
835
  };
805
836
  }
@@ -856,7 +887,7 @@ class JsonhReader {
856
887
  if (exponentSign !== null) {
857
888
  numberBuilder.ref += exponentSign;
858
889
  // Missing digit between base specifier and exponent (e.g. `0xe+`)
859
- if (hasBaseSpecifier && numberBuilder.ref.length == 4) {
890
+ if (hasBaseSpecifier && numberBuilder.ref.length === 4) {
860
891
  return { number: Result.fromError(new Error("Missing digit between base specifier and exponent")), partialCharsRead: numberBuilder.ref };
861
892
  }
862
893
  // Read exponent number
@@ -976,7 +1007,7 @@ class JsonhReader {
976
1007
  return this.#readNumberOrQuotelessString();
977
1008
  }
978
1009
  // String
979
- else if (next === '"' || next === '\'') {
1010
+ else if (next === '"' || next === '\'' || (this.#options.supportsVersion(JsonhVersion.V2) && next === '@')) {
980
1011
  return this.#readString();
981
1012
  }
982
1013
  // Quoteless string (or named literal)
@@ -1005,6 +1036,7 @@ class JsonhReader {
1005
1036
  }
1006
1037
  #readComment() {
1007
1038
  let blockComment = false;
1039
+ let startNestCounter = 0;
1008
1040
  // Hash-style comment
1009
1041
  if (this.#readOne('#')) {
1010
1042
  }
@@ -1016,6 +1048,16 @@ class JsonhReader {
1016
1048
  else if (this.#readOne('*')) {
1017
1049
  blockComment = true;
1018
1050
  }
1051
+ // Nestable block-style comment
1052
+ else if (this.#options.supportsVersion(JsonhVersion.V2) && this.#peek() === '=') {
1053
+ blockComment = true;
1054
+ while (this.#readOne('=')) {
1055
+ startNestCounter++;
1056
+ }
1057
+ if (!this.#readOne('*')) {
1058
+ return Result.fromError(new Error("Expected `*` after start of nesting block comment"));
1059
+ }
1060
+ }
1019
1061
  else {
1020
1062
  return Result.fromError(new Error("Unexpected `/`"));
1021
1063
  }
@@ -1034,8 +1076,27 @@ class JsonhReader {
1034
1076
  return Result.fromError(new Error("Expected end of block comment, got end of input"));
1035
1077
  }
1036
1078
  // End of block comment
1037
- if (next === '*' && this.#readOne('/')) {
1038
- return Result.fromValue(new JsonhToken(JsonTokenType.Comment, commentBuilder));
1079
+ if (next === '*') {
1080
+ // End of nestable block comment
1081
+ if (this.#options.supportsVersion(JsonhVersion.V2)) {
1082
+ // Count nests
1083
+ let endNestCounter = 0;
1084
+ while (endNestCounter < startNestCounter && this.#readOne('=')) {
1085
+ endNestCounter++;
1086
+ }
1087
+ // Partial end nestable block comment was actually part of comment
1088
+ if (endNestCounter < startNestCounter || this.#peek() !== '/') {
1089
+ commentBuilder += '*';
1090
+ for (; endNestCounter > 0; endNestCounter--) {
1091
+ commentBuilder += '=';
1092
+ }
1093
+ continue;
1094
+ }
1095
+ }
1096
+ // End of block comment
1097
+ if (this.#readOne('/')) {
1098
+ return Result.fromValue(new JsonhToken(JsonTokenType.Comment, commentBuilder));
1099
+ }
1039
1100
  }
1040
1101
  }
1041
1102
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-reader.js","sourceRoot":"","sources":["../jsonh-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonh-reader.js","sourceRoot":"","sources":["../jsonh-reader.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,11 @@ declare enum JsonhVersion {
9
9
  /**
10
10
  * Version 1 of the specification, released 2025/03/19.
11
11
  */
12
- V1 = 1
12
+ V1 = 1,
13
+ /**
14
+ * Version 2 of the specification, released 2025/11/19.
15
+ */
16
+ V2 = 2
13
17
  }
14
18
  export = JsonhVersion;
15
19
  //# sourceMappingURL=jsonh-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-version.d.ts","sourceRoot":"","sources":["../jsonh-version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,aAAK,YAAY;IACb;;OAEG;IACH,MAAM,IAAI;IACV;;OAEG;IACH,EAAE,IAAI;CACT;AAED,SAAS,YAAY,CAAC"}
1
+ {"version":3,"file":"jsonh-version.d.ts","sourceRoot":"","sources":["../jsonh-version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,aAAK,YAAY;IACb;;OAEG;IACH,MAAM,IAAI;IACV;;OAEG;IACH,EAAE,IAAI;IACN;;OAEG;IACH,EAAE,IAAI;CACT;AAED,SAAS,YAAY,CAAC"}
@@ -12,6 +12,10 @@ var JsonhVersion;
12
12
  * Version 1 of the specification, released 2025/03/19.
13
13
  */
14
14
  JsonhVersion[JsonhVersion["V1"] = 1] = "V1";
15
+ /**
16
+ * Version 2 of the specification, released 2025/11/19.
17
+ */
18
+ JsonhVersion[JsonhVersion["V2"] = 2] = "V2";
15
19
  })(JsonhVersion || (JsonhVersion = {}));
16
20
  module.exports = JsonhVersion;
17
21
  //# sourceMappingURL=jsonh-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonh-version.js","sourceRoot":"","sources":["../jsonh-version.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,IAAK,YASJ;AATD,WAAK,YAAY;IACb;;OAEG;IACH,mDAAU,CAAA;IACV;;OAEG;IACH,2CAAM,CAAA;AACV,CAAC,EATI,YAAY,KAAZ,YAAY,QAShB;AAED,iBAAS,YAAY,CAAC"}
1
+ {"version":3,"file":"jsonh-version.js","sourceRoot":"","sources":["../jsonh-version.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,IAAK,YAaJ;AAbD,WAAK,YAAY;IACb;;OAEG;IACH,mDAAU,CAAA;IACV;;OAEG;IACH,2CAAM,CAAA;IACN;;OAEG;IACH,2CAAM,CAAA;AACV,CAAC,EAbI,YAAY,KAAZ,YAAY,QAahB;AAED,iBAAS,YAAY,CAAC"}
@@ -21,6 +21,25 @@ class JsonhReaderOptions {
21
21
  * Only some tokens can be incomplete in this mode, so it should not be relied upon.
22
22
  */
23
23
  incompleteInputs: boolean = false;
24
+
25
+ /**
26
+ * Constructs options for a JsonhReader.
27
+ */
28
+ constructor(init?: Partial<JsonhReaderOptions>) {
29
+ Object.assign(this, init);
30
+ }
31
+
32
+ /**
33
+ * Returns whether version is greater than or equal to minimumVersion.
34
+ */
35
+ supportsVersion(minimumVersion: JsonhVersion): boolean {
36
+ const latestVersion: JsonhVersion = JsonhVersion.V2;
37
+
38
+ let optionsVersion = this.version === JsonhVersion.Latest ? latestVersion : this.version;
39
+ let givenVersion = minimumVersion === JsonhVersion.Latest ? latestVersion : minimumVersion;
40
+
41
+ return optionsVersion >= givenVersion;
42
+ }
24
43
  }
25
44
 
26
45
  export = JsonhReaderOptions;
package/jsonh-reader.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import JsonhReaderOptions = require("./jsonh-reader-options.js");
2
+ import JsonhVersion = require("./jsonh-version.js");
2
3
  import TextReader = require("./text-reader.js");
3
4
  import StringTextReader = require("./string-text-reader.js");
4
5
  import JsonhToken = require("./jsonh-token.js");
@@ -44,7 +45,17 @@ class JsonhReader {
44
45
  /**
45
46
  * Characters that cannot be used unescaped in quoteless strings.
46
47
  */
47
- static readonly #reservedChars: ReadonlyArray<string> = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\''];
48
+ get #reservedChars(): ReadonlyArray<string> {
49
+ return this.#options.supportsVersion(JsonhVersion.V2) ? JsonhReader.#reservedCharsV2 : JsonhReader.#reservedCharsV1;
50
+ }
51
+ /**
52
+ * Characters that cannot be used unescaped in quoteless strings in JSONH V1.
53
+ */
54
+ static readonly #reservedCharsV1: ReadonlyArray<string> = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\''];
55
+ /**
56
+ * Characters that cannot be used unescaped in quoteless strings in JSONH V2.
57
+ */
58
+ static readonly #reservedCharsV2: ReadonlyArray<string> = ['\\', ',', ':', '[', ']', '{', '}', '/', '#', '"', '\'', '@'];
48
59
  /**
49
60
  * Characters that are considered newlines.
50
61
  */
@@ -86,14 +97,14 @@ class JsonhReader {
86
97
  /**
87
98
  * Parses a single element from a text reader.
88
99
  */
89
- static parseElementfromTextReader<T = unknown>(textReader: TextReader): Result<T> {
90
- return new JsonhReader(textReader).parseElement<T>();
100
+ static parseElementfromTextReader<T = unknown>(textReader: TextReader, options: JsonhReaderOptions = new JsonhReaderOptions()): Result<T> {
101
+ return this.fromTextReader(textReader, options).parseElement<T>();
91
102
  }
92
103
  /**
93
104
  * Parses a single element from a string.
94
105
  */
95
- static parseElementFromString<T = unknown>(string: string): Result<T> {
96
- return this.fromString(string).parseElement<T>();
106
+ static parseElementFromString<T = unknown>(string: string, options: JsonhReaderOptions = new JsonhReaderOptions()): Result<T> {
107
+ return this.fromString(string, options).parseElement<T>();
97
108
  }
98
109
 
99
110
  /**
@@ -601,10 +612,22 @@ class JsonhReader {
601
612
  this.#readOne(',');
602
613
  }
603
614
  #readString(): Result<JsonhToken> {
615
+ // Verbatim
616
+ let isVerbatim: boolean = false;
617
+ if (this.#options.supportsVersion(JsonhVersion.V2) && this.#readOne('@')) {
618
+ isVerbatim = true;
619
+
620
+ // Ensure string immediately follows verbatim symbol
621
+ let next: string | null = this.#peek();
622
+ if (next === null || next === '#' || next === '/' || JsonhReader.#whitespaceChars.includes(next)) {
623
+ return Result.fromError(new Error("Expected string to immediately follow verbatim symbol"));
624
+ }
625
+ }
626
+
604
627
  // Start quote
605
628
  let startQuote: string | null = this.#readAny('"', '\'');
606
629
  if (startQuote === null) {
607
- return this.#readQuotelessString();
630
+ return this.#readQuotelessString("", isVerbatim);
608
631
  }
609
632
 
610
633
  // Count multiple start quotes
@@ -622,7 +645,7 @@ class JsonhReader {
622
645
  let endQuoteCounter: number = 0;
623
646
 
624
647
  // Read string
625
- let stringBuilder = "";
648
+ let stringBuilder: string = "";
626
649
 
627
650
  while (true) {
628
651
  let next: string | null = this.#read();
@@ -645,11 +668,16 @@ class JsonhReader {
645
668
  }
646
669
  // Escape sequence
647
670
  else if (next === '\\') {
648
- let escapeSequenceResult: Result<string> = this.#readEscapeSequence();
649
- if (escapeSequenceResult.isError) {
650
- return Result.fromError(escapeSequenceResult.error);
671
+ if (isVerbatim) {
672
+ stringBuilder += next;
673
+ }
674
+ else {
675
+ let escapeSequenceResult: Result<string> = this.#readEscapeSequence();
676
+ if (escapeSequenceResult.isError) {
677
+ return Result.fromError(escapeSequenceResult.error);
678
+ }
679
+ stringBuilder += escapeSequenceResult.value;
651
680
  }
652
- stringBuilder += escapeSequenceResult.value;
653
681
  }
654
682
  // Literal character
655
683
  else {
@@ -769,8 +797,8 @@ class JsonhReader {
769
797
  // End of string
770
798
  return Result.fromValue(new JsonhToken(JsonTokenType.String, stringBuilder));
771
799
  }
772
- #readQuotelessString(initialChars: string = ""): Result<JsonhToken> {
773
- let isNamedLiteralPossible: boolean = true;
800
+ #readQuotelessString(initialChars: string = "", isVerbatim: boolean = false): Result<JsonhToken> {
801
+ let isNamedLiteralPossible: boolean = !isVerbatim;
774
802
 
775
803
  // Read quoteless string
776
804
  let stringBuilder: string = initialChars;
@@ -785,15 +813,20 @@ class JsonhReader {
785
813
  // Escape sequence
786
814
  if (next === '\\') {
787
815
  this.#read();
788
- let escapeSequenceResult: Result<string> = this.#readEscapeSequence();
789
- if (escapeSequenceResult.isError) {
790
- return Result.fromError(escapeSequenceResult.error);
816
+ if (isVerbatim) {
817
+ stringBuilder += next;
818
+ }
819
+ else {
820
+ let escapeSequenceResult: Result<string> = this.#readEscapeSequence();
821
+ if (escapeSequenceResult.isError) {
822
+ return Result.fromError(escapeSequenceResult.error);
823
+ }
824
+ stringBuilder += escapeSequenceResult.value;
791
825
  }
792
- stringBuilder += escapeSequenceResult.value;
793
826
  isNamedLiteralPossible = false;
794
827
  }
795
828
  // End on reserved character
796
- else if (JsonhReader.#reservedChars.includes(next)) {
829
+ else if (this.#reservedChars.includes(next)) {
797
830
  break;
798
831
  }
799
832
  // End on newline
@@ -864,7 +897,7 @@ class JsonhReader {
864
897
  // Found quoteless string if found backslash or non-reserved char
865
898
  let nextChar: string | null = this.#peek();
866
899
  return {
867
- foundQuotelessString: nextChar !== null && (nextChar === '\\' || !JsonhReader.#reservedChars.includes(nextChar)),
900
+ foundQuotelessString: nextChar !== null && (nextChar === '\\' || !this.#reservedChars.includes(nextChar)),
868
901
  whitespaceChars: whitespaceBuilder
869
902
  };
870
903
  }
@@ -927,7 +960,7 @@ class JsonhReader {
927
960
  numberBuilder.ref += exponentSign;
928
961
 
929
962
  // Missing digit between base specifier and exponent (e.g. `0xe+`)
930
- if (hasBaseSpecifier && numberBuilder.ref.length == 4) {
963
+ if (hasBaseSpecifier && numberBuilder.ref.length === 4) {
931
964
  return { number: Result.fromError(new Error("Missing digit between base specifier and exponent")), partialCharsRead: numberBuilder.ref };
932
965
  }
933
966
 
@@ -1061,7 +1094,7 @@ class JsonhReader {
1061
1094
  return this.#readNumberOrQuotelessString();
1062
1095
  }
1063
1096
  // String
1064
- else if (next === '"' || next === '\'') {
1097
+ else if (next === '"' || next === '\'' || (this.#options.supportsVersion(JsonhVersion.V2) && next === '@')) {
1065
1098
  return this.#readString();
1066
1099
  }
1067
1100
  // Quoteless string (or named literal)
@@ -1092,6 +1125,7 @@ class JsonhReader {
1092
1125
  }
1093
1126
  #readComment(): Result<JsonhToken> {
1094
1127
  let blockComment: boolean = false;
1128
+ let startNestCounter: number = 0;
1095
1129
 
1096
1130
  // Hash-style comment
1097
1131
  if (this.#readOne('#')) {
@@ -1104,6 +1138,16 @@ class JsonhReader {
1104
1138
  else if (this.#readOne('*')) {
1105
1139
  blockComment = true;
1106
1140
  }
1141
+ // Nestable block-style comment
1142
+ else if (this.#options.supportsVersion(JsonhVersion.V2) && this.#peek() === '=') {
1143
+ blockComment = true;
1144
+ while (this.#readOne('=')) {
1145
+ startNestCounter++;
1146
+ }
1147
+ if (!this.#readOne('*')) {
1148
+ return Result.fromError(new Error("Expected `*` after start of nesting block comment"));
1149
+ }
1150
+ }
1107
1151
  else {
1108
1152
  return Result.fromError(new Error("Unexpected `/`"));
1109
1153
  }
@@ -1124,9 +1168,30 @@ class JsonhReader {
1124
1168
  if (next === null) {
1125
1169
  return Result.fromError(new Error("Expected end of block comment, got end of input"));
1126
1170
  }
1171
+
1127
1172
  // End of block comment
1128
- if (next === '*' && this.#readOne('/')) {
1129
- return Result.fromValue(new JsonhToken(JsonTokenType.Comment, commentBuilder));
1173
+ if (next === '*') {
1174
+ // End of nestable block comment
1175
+ if (this.#options.supportsVersion(JsonhVersion.V2)) {
1176
+ // Count nests
1177
+ let endNestCounter: number = 0;
1178
+ while (endNestCounter < startNestCounter && this.#readOne('=')) {
1179
+ endNestCounter++;
1180
+ }
1181
+ // Partial end nestable block comment was actually part of comment
1182
+ if (endNestCounter < startNestCounter || this.#peek() !== '/') {
1183
+ commentBuilder += '*';
1184
+ for (; endNestCounter > 0; endNestCounter--) {
1185
+ commentBuilder += '=';
1186
+ }
1187
+ continue;
1188
+ }
1189
+ }
1190
+
1191
+ // End of block comment
1192
+ if (this.#readOne('/')) {
1193
+ return Result.fromValue(new JsonhToken(JsonTokenType.Comment, commentBuilder));
1194
+ }
1130
1195
  }
1131
1196
  }
1132
1197
  else {
package/jsonh-version.ts CHANGED
@@ -10,6 +10,10 @@ enum JsonhVersion {
10
10
  * Version 1 of the specification, released 2025/03/19.
11
11
  */
12
12
  V1 = 1,
13
+ /**
14
+ * Version 2 of the specification, released 2025/11/19.
15
+ */
16
+ V2 = 2,
13
17
  }
14
18
 
15
19
  export = JsonhVersion;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsonh-ts",
3
- "version": "1.3.0",
3
+ "version": "2.0.0",
4
4
  "description": "JSON for Humans in TypeScript/JavaScript.",
5
5
  "type": "commonjs",
6
6
  "main": "build/index.js",