jsonh-ts 1.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.
Files changed (56) hide show
  1. package/build/index.d.ts +22 -0
  2. package/build/index.d.ts.map +1 -0
  3. package/build/index.js +22 -0
  4. package/build/index.js.map +1 -0
  5. package/build/json-token-type.d.ts +77 -0
  6. package/build/json-token-type.d.ts.map +1 -0
  7. package/build/json-token-type.js +79 -0
  8. package/build/json-token-type.js.map +1 -0
  9. package/build/jsonh-number-parser.d.ts +21 -0
  10. package/build/jsonh-number-parser.d.ts.map +1 -0
  11. package/build/jsonh-number-parser.js +174 -0
  12. package/build/jsonh-number-parser.js.map +1 -0
  13. package/build/jsonh-reader-options.d.ts +25 -0
  14. package/build/jsonh-reader-options.d.ts.map +1 -0
  15. package/build/jsonh-reader-options.js +26 -0
  16. package/build/jsonh-reader-options.js.map +1 -0
  17. package/build/jsonh-reader.d.ts +68 -0
  18. package/build/jsonh-reader.d.ts.map +1 -0
  19. package/build/jsonh-reader.js +1218 -0
  20. package/build/jsonh-reader.js.map +1 -0
  21. package/build/jsonh-token.d.ts +21 -0
  22. package/build/jsonh-token.d.ts.map +1 -0
  23. package/build/jsonh-token.js +36 -0
  24. package/build/jsonh-token.js.map +1 -0
  25. package/build/jsonh-version.d.ts +15 -0
  26. package/build/jsonh-version.d.ts.map +1 -0
  27. package/build/jsonh-version.js +17 -0
  28. package/build/jsonh-version.js.map +1 -0
  29. package/build/result-helpers.d.ts +6 -0
  30. package/build/result-helpers.d.ts.map +1 -0
  31. package/build/result-helpers.js +11 -0
  32. package/build/result-helpers.js.map +1 -0
  33. package/build/result.d.ts +48 -0
  34. package/build/result.d.ts.map +1 -0
  35. package/build/result.js +95 -0
  36. package/build/result.js.map +1 -0
  37. package/build/string-text-reader.d.ts +11 -0
  38. package/build/string-text-reader.d.ts.map +1 -0
  39. package/build/string-text-reader.js +33 -0
  40. package/build/string-text-reader.js.map +1 -0
  41. package/build/text-reader.d.ts +20 -0
  42. package/build/text-reader.d.ts.map +1 -0
  43. package/build/text-reader.js +19 -0
  44. package/build/text-reader.js.map +1 -0
  45. package/index.ts +21 -0
  46. package/json-token-type.ts +77 -0
  47. package/jsonh-number-parser.ts +191 -0
  48. package/jsonh-reader-options.ts +26 -0
  49. package/jsonh-reader.ts +1317 -0
  50. package/jsonh-token.ts +37 -0
  51. package/jsonh-version.ts +15 -0
  52. package/package.json +30 -0
  53. package/result.ts +97 -0
  54. package/string-text-reader.ts +35 -0
  55. package/text-reader.ts +30 -0
  56. package/tsconfig.json +38 -0
@@ -0,0 +1,22 @@
1
+ import JsonhReader = require("./jsonh-reader.js");
2
+ import JsonhReaderOptions = require("./jsonh-reader-options.js");
3
+ import JsonhVersion = require("./jsonh-version.js");
4
+ import JsonhToken = require("./jsonh-token.js");
5
+ import JsonTokenType = require("./json-token-type.js");
6
+ import JsonhNumberParser = require("./jsonh-number-parser.js");
7
+ import TextReader = require("./text-reader.js");
8
+ import StringTextReader = require("./string-text-reader.js");
9
+ import Result = require("./result.js");
10
+ declare const _default: {
11
+ JsonhReader: typeof JsonhReader;
12
+ JsonhReaderOptions: typeof JsonhReaderOptions;
13
+ JsonhVersion: typeof JsonhVersion;
14
+ JsonhToken: typeof JsonhToken;
15
+ JsonTokenType: typeof JsonTokenType;
16
+ JsonhNumberParser: typeof JsonhNumberParser;
17
+ TextReader: typeof TextReader;
18
+ StringTextReader: typeof StringTextReader;
19
+ Result: typeof Result;
20
+ };
21
+ export = _default;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,GAAG,QAAQ,mBAAmB,CAAC,CAAC;AAClD,OAAO,kBAAkB,GAAG,QAAQ,2BAA2B,CAAC,CAAC;AACjE,OAAO,YAAY,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AACpD,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAChD,OAAO,aAAa,GAAG,QAAQ,sBAAsB,CAAC,CAAC;AACvD,OAAO,iBAAiB,GAAG,QAAQ,0BAA0B,CAAC,CAAC;AAC/D,OAAO,UAAU,GAAG,QAAQ,kBAAkB,CAAC,CAAC;AAChD,OAAO,gBAAgB,GAAG,QAAQ,yBAAyB,CAAC,CAAC;AAC7D,OAAO,MAAM,GAAG,QAAQ,aAAa,CAAC,CAAC;;;;;;;;;;;;AAEvC,kBAUE"}
package/build/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ const JsonhReader = require("./jsonh-reader.js");
3
+ const JsonhReaderOptions = require("./jsonh-reader-options.js");
4
+ const JsonhVersion = require("./jsonh-version.js");
5
+ const JsonhToken = require("./jsonh-token.js");
6
+ const JsonTokenType = require("./json-token-type.js");
7
+ const JsonhNumberParser = require("./jsonh-number-parser.js");
8
+ const TextReader = require("./text-reader.js");
9
+ const StringTextReader = require("./string-text-reader.js");
10
+ const Result = require("./result.js");
11
+ module.exports = {
12
+ JsonhReader,
13
+ JsonhReaderOptions,
14
+ JsonhVersion,
15
+ JsonhToken,
16
+ JsonTokenType,
17
+ JsonhNumberParser,
18
+ TextReader,
19
+ StringTextReader,
20
+ Result,
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,iDAAkD;AAClD,gEAAiE;AACjE,mDAAoD;AACpD,+CAAgD;AAChD,sDAAuD;AACvD,8DAA+D;AAC/D,+CAAgD;AAChD,4DAA6D;AAC7D,sCAAuC;AAEvC,iBAAS;IACL,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,gBAAgB;IAChB,MAAM;CACT,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The types of tokens that make up a JSON document.
3
+ */
4
+ declare enum JsonTokenType {
5
+ /**
6
+ * Indicates that there is no value (not to be confused with {@link Null}).
7
+ */
8
+ None = 0,
9
+ /**
10
+ * The start of an object.
11
+ *
12
+ * Example: `{`
13
+ */
14
+ StartObject = 1,
15
+ /**
16
+ * The end of an object.
17
+ *
18
+ * Example: `}`
19
+ */
20
+ EndObject = 2,
21
+ /**
22
+ * The start of an array.
23
+ *
24
+ * Example: `[`
25
+ */
26
+ StartArray = 3,
27
+ /**
28
+ * The end of an array.
29
+ *
30
+ * Example: `]`
31
+ */
32
+ EndArray = 4,
33
+ /**
34
+ * A property name in an object.
35
+ *
36
+ * Example: `"key":`
37
+ */
38
+ PropertyName = 5,
39
+ /**
40
+ * A comment.
41
+ *
42
+ * Example: `// comment`
43
+ */
44
+ Comment = 6,
45
+ /**
46
+ * A string.
47
+ *
48
+ * Example: `"value"`
49
+ */
50
+ String = 7,
51
+ /**
52
+ * A number.
53
+ *
54
+ * Example: `10`
55
+ */
56
+ Number = 8,
57
+ /**
58
+ * A true boolean.
59
+ *
60
+ * Example: `true`
61
+ */
62
+ True = 9,
63
+ /**
64
+ * A false boolean.
65
+ *
66
+ * Example: `false`
67
+ */
68
+ False = 10,
69
+ /**
70
+ * A null value.
71
+ *
72
+ * Example: `null`
73
+ */
74
+ Null = 11
75
+ }
76
+ export = JsonTokenType;
77
+ //# sourceMappingURL=json-token-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-token-type.d.ts","sourceRoot":"","sources":["../json-token-type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,aAAK,aAAa;IACd;;OAEG;IACH,IAAI,IAAI;IACR;;;;OAIG;IACH,WAAW,IAAI;IACf;;;;OAIG;IACH,SAAS,IAAI;IACb;;;;OAIG;IACH,UAAU,IAAI;IACd;;;;OAIG;IACH,QAAQ,IAAI;IACZ;;;;OAIG;IACH,YAAY,IAAI;IAChB;;;;OAIG;IACH,OAAO,IAAI;IACX;;;;OAIG;IACH,MAAM,IAAI;IACV;;;;OAIG;IACH,MAAM,IAAI;IACV;;;;OAIG;IACH,IAAI,IAAI;IACR;;;;OAIG;IACH,KAAK,KAAK;IACV;;;;OAIG;IACH,IAAI,KAAK;CACZ;AAED,SAAS,aAAa,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * The types of tokens that make up a JSON document.
4
+ */
5
+ var JsonTokenType;
6
+ (function (JsonTokenType) {
7
+ /**
8
+ * Indicates that there is no value (not to be confused with {@link Null}).
9
+ */
10
+ JsonTokenType[JsonTokenType["None"] = 0] = "None";
11
+ /**
12
+ * The start of an object.
13
+ *
14
+ * Example: `{`
15
+ */
16
+ JsonTokenType[JsonTokenType["StartObject"] = 1] = "StartObject";
17
+ /**
18
+ * The end of an object.
19
+ *
20
+ * Example: `}`
21
+ */
22
+ JsonTokenType[JsonTokenType["EndObject"] = 2] = "EndObject";
23
+ /**
24
+ * The start of an array.
25
+ *
26
+ * Example: `[`
27
+ */
28
+ JsonTokenType[JsonTokenType["StartArray"] = 3] = "StartArray";
29
+ /**
30
+ * The end of an array.
31
+ *
32
+ * Example: `]`
33
+ */
34
+ JsonTokenType[JsonTokenType["EndArray"] = 4] = "EndArray";
35
+ /**
36
+ * A property name in an object.
37
+ *
38
+ * Example: `"key":`
39
+ */
40
+ JsonTokenType[JsonTokenType["PropertyName"] = 5] = "PropertyName";
41
+ /**
42
+ * A comment.
43
+ *
44
+ * Example: `// comment`
45
+ */
46
+ JsonTokenType[JsonTokenType["Comment"] = 6] = "Comment";
47
+ /**
48
+ * A string.
49
+ *
50
+ * Example: `"value"`
51
+ */
52
+ JsonTokenType[JsonTokenType["String"] = 7] = "String";
53
+ /**
54
+ * A number.
55
+ *
56
+ * Example: `10`
57
+ */
58
+ JsonTokenType[JsonTokenType["Number"] = 8] = "Number";
59
+ /**
60
+ * A true boolean.
61
+ *
62
+ * Example: `true`
63
+ */
64
+ JsonTokenType[JsonTokenType["True"] = 9] = "True";
65
+ /**
66
+ * A false boolean.
67
+ *
68
+ * Example: `false`
69
+ */
70
+ JsonTokenType[JsonTokenType["False"] = 10] = "False";
71
+ /**
72
+ * A null value.
73
+ *
74
+ * Example: `null`
75
+ */
76
+ JsonTokenType[JsonTokenType["Null"] = 11] = "Null";
77
+ })(JsonTokenType || (JsonTokenType = {}));
78
+ module.exports = JsonTokenType;
79
+ //# sourceMappingURL=json-token-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-token-type.js","sourceRoot":"","sources":["../json-token-type.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,IAAK,aAuEJ;AAvED,WAAK,aAAa;IACd;;OAEG;IACH,iDAAQ,CAAA;IACR;;;;OAIG;IACH,+DAAe,CAAA;IACf;;;;OAIG;IACH,2DAAa,CAAA;IACb;;;;OAIG;IACH,6DAAc,CAAA;IACd;;;;OAIG;IACH,yDAAY,CAAA;IACZ;;;;OAIG;IACH,iEAAgB,CAAA;IAChB;;;;OAIG;IACH,uDAAW,CAAA;IACX;;;;OAIG;IACH,qDAAU,CAAA;IACV;;;;OAIG;IACH,qDAAU,CAAA;IACV;;;;OAIG;IACH,iDAAQ,CAAA;IACR;;;;OAIG;IACH,oDAAU,CAAA;IACV;;;;OAIG;IACH,kDAAS,CAAA;AACb,CAAC,EAvEI,aAAa,KAAb,aAAa,QAuEjB;AAED,iBAAS,aAAa,CAAC"}
@@ -0,0 +1,21 @@
1
+ import Result = require("./result.js");
2
+ /**
3
+ * Methods for parsing JSONH numbers.
4
+ *
5
+ * Unlike `JsonhReader.readElement()`, minimal validation is done here. Ensure the input is valid.
6
+ */
7
+ declare class JsonhNumberParser {
8
+ #private;
9
+ /**
10
+ * Converts a JSONH number to a base-10 real.
11
+ * For example:
12
+ *
13
+ * ```
14
+ * Input: +5.2e3.0
15
+ * Output: 5200
16
+ * ```
17
+ */
18
+ static parse(jsonhNumber: string): Result<number>;
19
+ }
20
+ export = JsonhNumberParser;
21
+ //# sourceMappingURL=jsonh-number-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonh-number-parser.d.ts","sourceRoot":"","sources":["../jsonh-number-parser.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,GAAG,QAAQ,aAAa,CAAC,CAAC;AAEvC;;;;GAIG;AACH,cAAM,iBAAiB;;IACnB;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CA2KpD;AAED,SAAS,iBAAiB,CAAC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ const Result = require("./result.js");
3
+ /**
4
+ * Methods for parsing JSONH numbers.
5
+ *
6
+ * Unlike `JsonhReader.readElement()`, minimal validation is done here. Ensure the input is valid.
7
+ */
8
+ class JsonhNumberParser {
9
+ /**
10
+ * Converts a JSONH number to a base-10 real.
11
+ * For example:
12
+ *
13
+ * ```
14
+ * Input: +5.2e3.0
15
+ * Output: 5200
16
+ * ```
17
+ */
18
+ static parse(jsonhNumber) {
19
+ // Remove underscores
20
+ jsonhNumber = jsonhNumber.replaceAll("_", "");
21
+ let digits = jsonhNumber;
22
+ // Get sign
23
+ let sign = 1;
24
+ if (digits.startsWith('-')) {
25
+ sign = -1;
26
+ digits = digits.slice(1);
27
+ }
28
+ else if (digits.startsWith('+')) {
29
+ sign = 1;
30
+ digits = digits.slice(1);
31
+ }
32
+ // Decimal
33
+ let baseDigits = "0123456789";
34
+ // Hexadecimal
35
+ if (digits.startsWith("0x") || digits.startsWith("0X")) {
36
+ baseDigits = "0123456789abcdef";
37
+ digits = digits.slice(2);
38
+ }
39
+ // Binary
40
+ else if (digits.startsWith("0b") || digits.startsWith("0B")) {
41
+ baseDigits = "01";
42
+ digits = digits.slice(2);
43
+ }
44
+ // Octal
45
+ else if (digits.startsWith("0o") || digits.startsWith("0O")) {
46
+ baseDigits = "01234567";
47
+ digits = digits.slice(2);
48
+ }
49
+ // Parse number with base digits
50
+ let number = this.#parseFractionalNumberWithExponent(digits, baseDigits);
51
+ if (number.isError) {
52
+ return number;
53
+ }
54
+ // Apply sign
55
+ if (sign !== 1) {
56
+ number.value *= sign;
57
+ }
58
+ return number;
59
+ }
60
+ /**
61
+ * Converts a fractional number with an exponent (e.g. `12.3e4.5`) from the given base (e.g. `01234567`) to a base-10 real.
62
+ */
63
+ static #parseFractionalNumberWithExponent(digits, baseDigits) {
64
+ // Find exponent
65
+ let exponentIndex = -1;
66
+ // Hexadecimal exponent
67
+ if (baseDigits.includes('e')) {
68
+ for (let index = 0; index < digits.length; index++) {
69
+ if (digits.at(index) !== 'e' && digits.at(index) !== 'E') {
70
+ continue;
71
+ }
72
+ if (index + 1 >= digits.length || (digits.at(index + 1) !== '+' && digits.at(index + 1) !== '-')) {
73
+ continue;
74
+ }
75
+ exponentIndex = index;
76
+ break;
77
+ }
78
+ }
79
+ // Exponent
80
+ else {
81
+ exponentIndex = this.#indexOfAny(digits, ['e', 'E']);
82
+ }
83
+ // If no exponent then parse real
84
+ if (exponentIndex < 0) {
85
+ return this.#parseFractionalNumber(digits, baseDigits);
86
+ }
87
+ // Get mantissa and exponent
88
+ let mantissaPart = digits.slice(0, exponentIndex);
89
+ let exponentPart = digits.slice(exponentIndex + 1);
90
+ // Parse mantissa and exponent
91
+ let mantissa = this.#parseFractionalNumber(mantissaPart, baseDigits);
92
+ if (mantissa.isError) {
93
+ return mantissa;
94
+ }
95
+ let exponent = this.#parseFractionalNumber(exponentPart, baseDigits);
96
+ if (exponent.isError) {
97
+ return exponent;
98
+ }
99
+ // Multiply mantissa by 10 ^ exponent
100
+ return Result.fromValue(mantissa.value * (10 ** exponent.value));
101
+ }
102
+ /**
103
+ * Converts a fractional number (e.g. `123.45`) from the given base (e.g. `01234567`) to a base-10 real.
104
+ */
105
+ static #parseFractionalNumber(digits, baseDigits) {
106
+ // Find dot
107
+ let dotIndex = digits.indexOf('.');
108
+ // If no dot then normalize integer
109
+ if (dotIndex < 0) {
110
+ return this.#parseWholeNumber(digits, baseDigits);
111
+ }
112
+ // Get parts of number
113
+ let wholePart = digits.slice(0, dotIndex);
114
+ let fractionalPart = digits.slice(dotIndex + 1);
115
+ // Parse parts of number
116
+ let whole = this.#parseWholeNumber(wholePart, baseDigits);
117
+ if (whole.isError) {
118
+ return whole;
119
+ }
120
+ let fraction = this.#parseWholeNumber(fractionalPart, baseDigits);
121
+ if (fraction.isError) {
122
+ return fraction;
123
+ }
124
+ // Combine whole and fraction
125
+ return Result.fromValue(Number.parseFloat(whole.value + '.' + fraction.value));
126
+ }
127
+ /**
128
+ * Converts a whole number (e.g. `12345`) from the given base (e.g. `01234567`) to a base-10 integer.
129
+ */
130
+ static #parseWholeNumber(digits, baseDigits) {
131
+ // Get sign
132
+ let sign = 1;
133
+ if (digits.startsWith('-')) {
134
+ sign = -1;
135
+ digits = digits.slice(1);
136
+ }
137
+ else if (digits.startsWith('+')) {
138
+ sign = 1;
139
+ digits = digits.slice(1);
140
+ }
141
+ // Add each column of digits
142
+ let integer = 0;
143
+ for (let index = 0; index < digits.length; index++) {
144
+ // Get current digit
145
+ let digitChar = digits.at(index);
146
+ let digitInt = baseDigits.indexOf(digitChar.toLowerCase());
147
+ // Ensure digit is valid
148
+ if (digitInt < 0) {
149
+ return Result.fromError(new Error(`Invalid digit: '${digitChar}'`));
150
+ }
151
+ // Get magnitude of current digit column
152
+ let columnNumber = digits.length - 1 - index;
153
+ let columnMagnitude = baseDigits.length ** columnNumber;
154
+ // Add value of column
155
+ integer += digitInt * columnMagnitude;
156
+ }
157
+ // Apply sign
158
+ if (sign !== 1) {
159
+ integer *= sign;
160
+ }
161
+ return Result.fromValue(integer);
162
+ }
163
+ static #indexOfAny(input, chars) {
164
+ for (let i = 0; i < input.length; i++) {
165
+ let char = input.at(i);
166
+ if (chars.includes(char)) {
167
+ return i;
168
+ }
169
+ }
170
+ return -1;
171
+ }
172
+ }
173
+ module.exports = JsonhNumberParser;
174
+ //# sourceMappingURL=jsonh-number-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonh-number-parser.js","sourceRoot":"","sources":["../jsonh-number-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import JsonhVersion = require("./jsonh-version.js");
2
+ /**
3
+ * Options for a JsonhReader.
4
+ */
5
+ declare class JsonhReaderOptions {
6
+ /**
7
+ * Specifies the major version of the JSONH specification to use.
8
+ */
9
+ version: JsonhVersion;
10
+ /**
11
+ * Enables/disables parsing unclosed inputs.
12
+ *
13
+ * ```
14
+ * {
15
+ "key": "val
16
+ * ```
17
+ *
18
+ * This is potentially useful for large language models that stream responses.
19
+ *
20
+ * Only some tokens can be incomplete in this mode, so it should not be relied upon.
21
+ */
22
+ incompleteInputs: boolean;
23
+ }
24
+ export = JsonhReaderOptions;
25
+ //# sourceMappingURL=jsonh-reader-options.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ const JsonhVersion = require("./jsonh-version.js");
3
+ /**
4
+ * Options for a JsonhReader.
5
+ */
6
+ class JsonhReaderOptions {
7
+ /**
8
+ * Specifies the major version of the JSONH specification to use.
9
+ */
10
+ version = JsonhVersion.Latest;
11
+ /**
12
+ * Enables/disables parsing unclosed inputs.
13
+ *
14
+ * ```
15
+ * {
16
+ "key": "val
17
+ * ```
18
+ *
19
+ * This is potentially useful for large language models that stream responses.
20
+ *
21
+ * Only some tokens can be incomplete in this mode, so it should not be relied upon.
22
+ */
23
+ incompleteInputs = false;
24
+ }
25
+ module.exports = JsonhReaderOptions;
26
+ //# sourceMappingURL=jsonh-reader-options.js.map
@@ -0,0 +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"}
@@ -0,0 +1,68 @@
1
+ import JsonhReaderOptions = require("./jsonh-reader-options.js");
2
+ import TextReader = require("./text-reader.js");
3
+ import JsonhToken = require("./jsonh-token.js");
4
+ import Result = require("./result.js");
5
+ /**
6
+ * A reader that reads JSONH tokens from a string.
7
+ */
8
+ declare class JsonhReader {
9
+ #private;
10
+ /**
11
+ * The text reader to read characters from.
12
+ */
13
+ get textReader(): TextReader;
14
+ /**
15
+ * The options to use when reading JSONH.
16
+ */
17
+ get options(): JsonhReaderOptions;
18
+ /**
19
+ * The number of characters read from {@link string}.
20
+ */
21
+ get charCounter(): number;
22
+ /**
23
+ * Constructs a reader that reads JSONH from a text reader.
24
+ */
25
+ private constructor();
26
+ /**
27
+ * Constructs a reader that reads JSONH from a text reader.
28
+ */
29
+ static fromTextReader(textReader: TextReader, options?: JsonhReaderOptions): JsonhReader;
30
+ /**
31
+ * Constructs a reader that reads JSONH from a string.
32
+ */
33
+ static fromString(string: string, options?: JsonhReaderOptions): JsonhReader;
34
+ /**
35
+ * Parses a single element from a text reader.
36
+ */
37
+ static parseElementfromTextReader<T = unknown>(textReader: TextReader): Result<T>;
38
+ /**
39
+ * Parses a single element from a string.
40
+ */
41
+ static parseElementFromString<T = unknown>(string: string): Result<T>;
42
+ /**
43
+ * Parses a single element from the reader.
44
+ */
45
+ parseElement<T = unknown>(): Result<T>;
46
+ /**
47
+ * Tries to find the given property name in the reader.
48
+ * For example, to find `c`:
49
+ * ```
50
+ * // Original position
51
+ * {
52
+ * "a": "1",
53
+ * "b": {
54
+ * "c": "2"
55
+ * },
56
+ * "c": // Final position
57
+ * "3"
58
+ * }
59
+ * ```
60
+ */
61
+ findPropertyValue(propertyName: string): boolean;
62
+ /**
63
+ * Reads a single element from the reader.
64
+ */
65
+ readElement(): Generator<Result<JsonhToken>>;
66
+ }
67
+ export = JsonhReader;
68
+ //# sourceMappingURL=jsonh-reader.d.ts.map
@@ -0,0 +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;CA6gChD;AAED,SAAS,WAAW,CAAC"}