smol-toml 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/date.js +1 -5
- package/dist/error.js +1 -5
- package/dist/extract.js +20 -24
- package/dist/index.cjs +887 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.js +6 -11
- package/dist/parse.js +15 -19
- package/dist/primitive.js +18 -23
- package/dist/stringify.js +1 -5
- package/dist/struct.js +30 -36
- package/dist/util.js +8 -16
- package/package.json +25 -15
package/dist/date.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*!
|
|
3
2
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
4
3
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -26,10 +25,8 @@
|
|
|
26
25
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
27
26
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
27
|
*/
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.TomlDate = void 0;
|
|
31
28
|
let DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i;
|
|
32
|
-
class TomlDate extends Date {
|
|
29
|
+
export class TomlDate extends Date {
|
|
33
30
|
#hasDate = false;
|
|
34
31
|
#hasTime = false;
|
|
35
32
|
#offset = null;
|
|
@@ -126,4 +123,3 @@ class TomlDate extends Date {
|
|
|
126
123
|
return date;
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
|
-
exports.TomlDate = TomlDate;
|
package/dist/error.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*!
|
|
3
2
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
4
3
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -26,8 +25,6 @@
|
|
|
26
25
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
27
26
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
27
|
*/
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.TomlError = void 0;
|
|
31
28
|
function getLineColFromPtr(string, ptr) {
|
|
32
29
|
let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
|
|
33
30
|
return [lines.length, lines.pop().length + 1];
|
|
@@ -51,7 +48,7 @@ function makeCodeBlock(string, line, column) {
|
|
|
51
48
|
}
|
|
52
49
|
return codeblock;
|
|
53
50
|
}
|
|
54
|
-
class TomlError extends Error {
|
|
51
|
+
export class TomlError extends Error {
|
|
55
52
|
line;
|
|
56
53
|
column;
|
|
57
54
|
codeblock;
|
|
@@ -64,4 +61,3 @@ class TomlError extends Error {
|
|
|
64
61
|
this.codeblock = codeblock;
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
|
-
exports.TomlError = TomlError;
|
package/dist/extract.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*!
|
|
3
2
|
* Copyright (c) Squirrel Chat et al., All rights reserved.
|
|
4
3
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -26,26 +25,24 @@
|
|
|
26
25
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
27
26
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
27
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const util_js_1 = require("./util.js");
|
|
34
|
-
const error_js_1 = require("./error.js");
|
|
28
|
+
import { parseString, parseValue } from './primitive.js';
|
|
29
|
+
import { parseArray, parseInlineTable } from './struct.js';
|
|
30
|
+
import { indexOfNewline, skipVoid, skipUntil, skipComment, getStringEnd } from './util.js';
|
|
31
|
+
import { TomlError } from './error.js';
|
|
35
32
|
function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
|
|
36
33
|
let value = str.slice(startPtr, endPtr);
|
|
37
34
|
let commentIdx = value.indexOf('#');
|
|
38
35
|
if (commentIdx > -1) {
|
|
39
36
|
// The call to skipComment allows to "validate" the comment
|
|
40
37
|
// (absence of control characters)
|
|
41
|
-
|
|
38
|
+
skipComment(str, commentIdx);
|
|
42
39
|
value = value.slice(0, commentIdx);
|
|
43
40
|
}
|
|
44
41
|
let trimmed = value.trimEnd();
|
|
45
42
|
if (!allowNewLines) {
|
|
46
43
|
let newlineIdx = value.indexOf('\n', trimmed.length);
|
|
47
44
|
if (newlineIdx > -1) {
|
|
48
|
-
throw new
|
|
45
|
+
throw new TomlError('newlines are not allowed in inline tables', {
|
|
49
46
|
toml: str,
|
|
50
47
|
ptr: startPtr + newlineIdx
|
|
51
48
|
});
|
|
@@ -53,17 +50,17 @@ function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
|
|
|
53
50
|
}
|
|
54
51
|
return [trimmed, commentIdx];
|
|
55
52
|
}
|
|
56
|
-
function extractValue(str, ptr, end) {
|
|
53
|
+
export function extractValue(str, ptr, end) {
|
|
57
54
|
let c = str[ptr];
|
|
58
55
|
if (c === '[' || c === '{') {
|
|
59
56
|
let [value, endPtr] = c === '['
|
|
60
|
-
?
|
|
61
|
-
:
|
|
62
|
-
let newPtr =
|
|
57
|
+
? parseArray(str, ptr)
|
|
58
|
+
: parseInlineTable(str, ptr);
|
|
59
|
+
let newPtr = skipUntil(str, endPtr, ',', end);
|
|
63
60
|
if (end === '}') {
|
|
64
|
-
let nextNewLine =
|
|
61
|
+
let nextNewLine = indexOfNewline(str, endPtr, newPtr);
|
|
65
62
|
if (nextNewLine > -1) {
|
|
66
|
-
throw new
|
|
63
|
+
throw new TomlError('newlines are not allowed in inline tables', {
|
|
67
64
|
toml: str,
|
|
68
65
|
ptr: nextNewLine
|
|
69
66
|
});
|
|
@@ -73,12 +70,12 @@ function extractValue(str, ptr, end) {
|
|
|
73
70
|
}
|
|
74
71
|
let endPtr;
|
|
75
72
|
if (c === '"' || c === "'") {
|
|
76
|
-
endPtr =
|
|
77
|
-
let parsed =
|
|
73
|
+
endPtr = getStringEnd(str, ptr);
|
|
74
|
+
let parsed = parseString(str, ptr, endPtr);
|
|
78
75
|
if (end) {
|
|
79
|
-
endPtr =
|
|
76
|
+
endPtr = skipVoid(str, endPtr, end !== ']');
|
|
80
77
|
if (str[endPtr] && str[endPtr] !== ',' && str[endPtr] !== end && str[endPtr] !== '\n' && str[endPtr] !== '\r') {
|
|
81
|
-
throw new
|
|
78
|
+
throw new TomlError('unexpected character encountered', {
|
|
82
79
|
toml: str,
|
|
83
80
|
ptr: endPtr,
|
|
84
81
|
});
|
|
@@ -87,21 +84,20 @@ function extractValue(str, ptr, end) {
|
|
|
87
84
|
}
|
|
88
85
|
return [parsed, endPtr];
|
|
89
86
|
}
|
|
90
|
-
endPtr =
|
|
87
|
+
endPtr = skipUntil(str, ptr, ',', end);
|
|
91
88
|
let slice = sliceAndTrimEndOf(str, ptr, endPtr - (+(str[endPtr - 1] === ',')), end === ']');
|
|
92
89
|
if (!slice[0]) {
|
|
93
|
-
throw new
|
|
90
|
+
throw new TomlError('incomplete key-value declaration: no value specified', {
|
|
94
91
|
toml: str,
|
|
95
92
|
ptr: ptr
|
|
96
93
|
});
|
|
97
94
|
}
|
|
98
95
|
if (end && slice[1] > -1) {
|
|
99
|
-
endPtr =
|
|
96
|
+
endPtr = skipVoid(str, ptr + slice[1]);
|
|
100
97
|
endPtr += +(str[endPtr] === ',');
|
|
101
98
|
}
|
|
102
99
|
return [
|
|
103
|
-
|
|
100
|
+
parseValue(slice[0], str, ptr),
|
|
104
101
|
endPtr,
|
|
105
102
|
];
|
|
106
103
|
}
|
|
107
|
-
exports.extractValue = extractValue;
|