@stxt-lang/core 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/all.d.ts +19 -0
- package/out/all.js +42 -0
- package/out/all.js.map +1 -0
- package/out/core/Constants.d.ts +9 -0
- package/out/core/Constants.js +14 -0
- package/out/core/Constants.js.map +1 -0
- package/out/core/Line.d.ts +9 -0
- package/out/core/Line.js +17 -0
- package/out/core/Line.js.map +1 -0
- package/out/core/LineParser.d.ts +2 -0
- package/out/core/LineParser.js +72 -0
- package/out/core/LineParser.js.map +1 -0
- package/out/core/NameNamespace.d.ts +7 -0
- package/out/core/NameNamespace.js +17 -0
- package/out/core/NameNamespace.js.map +1 -0
- package/out/core/NameNamespaceParser.d.ts +5 -0
- package/out/core/NameNamespaceParser.js +43 -0
- package/out/core/NameNamespaceParser.js.map +1 -0
- package/out/core/NamespaceValidator.d.ts +4 -0
- package/out/core/NamespaceValidator.js +17 -0
- package/out/core/NamespaceValidator.js.map +1 -0
- package/out/core/Node.d.ts +29 -0
- package/out/core/Node.js +116 -0
- package/out/core/Node.js.map +1 -0
- package/out/core/NodeCreator.d.ts +3 -0
- package/out/core/NodeCreator.js +52 -0
- package/out/core/NodeCreator.js.map +1 -0
- package/out/core/ParseResult.d.ts +12 -0
- package/out/core/ParseResult.js +26 -0
- package/out/core/ParseResult.js.map +1 -0
- package/out/core/Parser.d.ts +16 -0
- package/out/core/Parser.js +142 -0
- package/out/core/Parser.js.map +1 -0
- package/out/core/StringUtils.d.ts +8 -0
- package/out/core/StringUtils.js +46 -0
- package/out/core/StringUtils.js.map +1 -0
- package/out/exceptions/ParseException.d.ts +6 -0
- package/out/exceptions/ParseException.js +17 -0
- package/out/exceptions/ParseException.js.map +1 -0
- package/out/exceptions/RuntimeException.d.ts +6 -0
- package/out/exceptions/RuntimeException.js +20 -0
- package/out/exceptions/RuntimeException.js.map +1 -0
- package/out/exceptions/ValidationException.d.ts +4 -0
- package/out/exceptions/ValidationException.js +13 -0
- package/out/exceptions/ValidationException.js.map +1 -0
- package/out/processors/Observer.d.ts +8 -0
- package/out/processors/Observer.js +3 -0
- package/out/processors/Observer.js.map +1 -0
- package/out/processors/Validator.d.ts +5 -0
- package/out/processors/Validator.js +3 -0
- package/out/processors/Validator.js.map +1 -0
- package/out/runtime/ConditionalValidator.d.ts +9 -0
- package/out/runtime/ConditionalValidator.js +18 -0
- package/out/runtime/ConditionalValidator.js.map +1 -0
- package/out/runtime/NodeWriter.d.ts +12 -0
- package/out/runtime/NodeWriter.js +59 -0
- package/out/runtime/NodeWriter.js.map +1 -0
- package/out/runtime/UnifiedSchemaProvider.d.ts +22 -0
- package/out/runtime/UnifiedSchemaProvider.js +80 -0
- package/out/runtime/UnifiedSchemaProvider.js.map +1 -0
- package/out/schema/ChildDefinition.d.ts +21 -0
- package/out/schema/ChildDefinition.js +50 -0
- package/out/schema/ChildDefinition.js.map +1 -0
- package/out/schema/NodeDefinition.d.ts +34 -0
- package/out/schema/NodeDefinition.js +74 -0
- package/out/schema/NodeDefinition.js.map +1 -0
- package/out/schema/Schema.d.ts +30 -0
- package/out/schema/Schema.js +43 -0
- package/out/schema/Schema.js.map +1 -0
- package/out/schema/SchemaParser.d.ts +3 -0
- package/out/schema/SchemaParser.js +117 -0
- package/out/schema/SchemaParser.js.map +1 -0
- package/out/schema/SchemaProvider.d.ts +4 -0
- package/out/schema/SchemaProvider.js +3 -0
- package/out/schema/SchemaProvider.js.map +1 -0
- package/out/schema/SchemaProviderMemory.d.ts +11 -0
- package/out/schema/SchemaProviderMemory.js +44 -0
- package/out/schema/SchemaProviderMemory.js.map +1 -0
- package/out/schema/SchemaProviderMeta.d.ts +8 -0
- package/out/schema/SchemaProviderMeta.js +92 -0
- package/out/schema/SchemaProviderMeta.js.map +1 -0
- package/out/schema/SchemaValidator.d.ts +16 -0
- package/out/schema/SchemaValidator.js +115 -0
- package/out/schema/SchemaValidator.js.map +1 -0
- package/out/schema/Type.d.ts +6 -0
- package/out/schema/Type.js +3 -0
- package/out/schema/Type.js.map +1 -0
- package/out/schema/TypeRegistry.d.ts +8 -0
- package/out/schema/TypeRegistry.js +69 -0
- package/out/schema/TypeRegistry.js.map +1 -0
- package/out/schema/type/BASE64.d.ts +2 -0
- package/out/schema/type/BASE64.js +30 -0
- package/out/schema/type/BASE64.js.map +1 -0
- package/out/schema/type/BINARY.d.ts +2 -0
- package/out/schema/type/BINARY.js +18 -0
- package/out/schema/type/BINARY.js.map +1 -0
- package/out/schema/type/BLOCK.d.ts +2 -0
- package/out/schema/type/BLOCK.js +16 -0
- package/out/schema/type/BLOCK.js.map +1 -0
- package/out/schema/type/BOOLEAN.d.ts +1 -0
- package/out/schema/type/BOOLEAN.js +6 -0
- package/out/schema/type/BOOLEAN.js.map +1 -0
- package/out/schema/type/DATE.d.ts +1 -0
- package/out/schema/type/DATE.js +6 -0
- package/out/schema/type/DATE.js.map +1 -0
- package/out/schema/type/EMAIL.d.ts +1 -0
- package/out/schema/type/EMAIL.js +6 -0
- package/out/schema/type/EMAIL.js.map +1 -0
- package/out/schema/type/ENUM.d.ts +2 -0
- package/out/schema/type/ENUM.js +21 -0
- package/out/schema/type/ENUM.js.map +1 -0
- package/out/schema/type/GROUP.d.ts +2 -0
- package/out/schema/type/GROUP.js +16 -0
- package/out/schema/type/GROUP.js.map +1 -0
- package/out/schema/type/HEXADECIMAL.d.ts +2 -0
- package/out/schema/type/HEXADECIMAL.js +18 -0
- package/out/schema/type/HEXADECIMAL.js.map +1 -0
- package/out/schema/type/INLINE.d.ts +2 -0
- package/out/schema/type/INLINE.js +16 -0
- package/out/schema/type/INLINE.js.map +1 -0
- package/out/schema/type/INTEGER.d.ts +1 -0
- package/out/schema/type/INTEGER.js +6 -0
- package/out/schema/type/INTEGER.js.map +1 -0
- package/out/schema/type/MARKDOWN.d.ts +2 -0
- package/out/schema/type/MARKDOWN.js +17 -0
- package/out/schema/type/MARKDOWN.js.map +1 -0
- package/out/schema/type/NATURAL.d.ts +1 -0
- package/out/schema/type/NATURAL.js +6 -0
- package/out/schema/type/NATURAL.js.map +1 -0
- package/out/schema/type/NUMBER.d.ts +1 -0
- package/out/schema/type/NUMBER.js +6 -0
- package/out/schema/type/NUMBER.js.map +1 -0
- package/out/schema/type/TEXT.d.ts +2 -0
- package/out/schema/type/TEXT.js +15 -0
- package/out/schema/type/TEXT.js.map +1 -0
- package/out/schema/type/TIME.d.ts +1 -0
- package/out/schema/type/TIME.js +6 -0
- package/out/schema/type/TIME.js.map +1 -0
- package/out/schema/type/TIMESTAMP.d.ts +1 -0
- package/out/schema/type/TIMESTAMP.js +6 -0
- package/out/schema/type/TIMESTAMP.js.map +1 -0
- package/out/schema/type/URL.d.ts +2 -0
- package/out/schema/type/URL.js +27 -0
- package/out/schema/type/URL.js.map +1 -0
- package/out/schema/type/UUID.d.ts +1 -0
- package/out/schema/type/UUID.js +6 -0
- package/out/schema/type/UUID.js.map +1 -0
- package/out/schema/type/binaryValue.d.ts +2 -0
- package/out/schema/type/binaryValue.js +13 -0
- package/out/schema/type/binaryValue.js.map +1 -0
- package/out/schema/type/regexType.d.ts +2 -0
- package/out/schema/type/regexType.js +20 -0
- package/out/schema/type/regexType.js.map +1 -0
- package/out/template/ChildLine.d.ts +12 -0
- package/out/template/ChildLine.js +28 -0
- package/out/template/ChildLine.js.map +1 -0
- package/out/template/ChildLineParser.d.ts +7 -0
- package/out/template/ChildLineParser.js +98 -0
- package/out/template/ChildLineParser.js.map +1 -0
- package/out/template/MetaTemplateSchemaProvider.d.ts +8 -0
- package/out/template/MetaTemplateSchemaProvider.js +35 -0
- package/out/template/MetaTemplateSchemaProvider.js.map +1 -0
- package/out/template/TemplateParser.d.ts +3 -0
- package/out/template/TemplateParser.js +214 -0
- package/out/template/TemplateParser.js.map +1 -0
- package/out/template/TemplateSchemaProviderMemory.d.ts +6 -0
- package/out/template/TemplateSchemaProviderMemory.js +37 -0
- package/out/template/TemplateSchemaProviderMemory.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class ChildLine {
|
|
2
|
+
private readonly min;
|
|
3
|
+
private readonly max;
|
|
4
|
+
private readonly values;
|
|
5
|
+
private readonly type;
|
|
6
|
+
constructor(type: string | null, min: number | null, max: number | null, values: string[] | null);
|
|
7
|
+
getType(): string | null;
|
|
8
|
+
getMin(): number | null;
|
|
9
|
+
getMax(): number | null;
|
|
10
|
+
getValues(): string[] | null;
|
|
11
|
+
toString(): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildLine = void 0;
|
|
4
|
+
class ChildLine {
|
|
5
|
+
constructor(type, min, max, values) {
|
|
6
|
+
this.type = type;
|
|
7
|
+
this.min = min;
|
|
8
|
+
this.max = max;
|
|
9
|
+
this.values = values;
|
|
10
|
+
}
|
|
11
|
+
getType() {
|
|
12
|
+
return this.type;
|
|
13
|
+
}
|
|
14
|
+
getMin() {
|
|
15
|
+
return this.min;
|
|
16
|
+
}
|
|
17
|
+
getMax() {
|
|
18
|
+
return this.max;
|
|
19
|
+
}
|
|
20
|
+
getValues() {
|
|
21
|
+
return this.values;
|
|
22
|
+
}
|
|
23
|
+
toString() {
|
|
24
|
+
return `ChildLine [type=${this.type}, min=${this.min}, max=${this.max}, values=${this.values ? `[${this.values.join(", ")}]` : "null"}]`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ChildLine = ChildLine;
|
|
28
|
+
//# sourceMappingURL=ChildLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildLine.js","sourceRoot":"","sources":["../../src/template/ChildLine.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAMlB,YAAY,IAAmB,EAAE,GAAkB,EAAE,GAAkB,EAAE,MAAuB;QAC5F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ;QACJ,OAAO,mBAAmB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAC3H,GAAG,CAAC;IACZ,CAAC;CACJ;AAlCD,8BAkCC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildLineParser = void 0;
|
|
4
|
+
const ValidationException_1 = require("../exceptions/ValidationException");
|
|
5
|
+
const ChildLine_1 = require("./ChildLine");
|
|
6
|
+
class ChildLineParser {
|
|
7
|
+
constructor() { }
|
|
8
|
+
static parse(rawLine, lineNumber) {
|
|
9
|
+
if (rawLine.trim().length === 0) {
|
|
10
|
+
return new ChildLine_1.ChildLine(null, null, null, null);
|
|
11
|
+
}
|
|
12
|
+
const m = ChildLineParser.CHILD_LINE_PATTERN.exec(rawLine);
|
|
13
|
+
if (!m) {
|
|
14
|
+
throw new ValidationException_1.ValidationException(lineNumber, "INVALID_CHILD_LINE", `Line not valid: ${rawLine}`);
|
|
15
|
+
}
|
|
16
|
+
// m[1]=count, m[2]=type, m[3]=values
|
|
17
|
+
let type = m[2]?.trim() ?? "";
|
|
18
|
+
if (type.length === 0) {
|
|
19
|
+
type = null;
|
|
20
|
+
}
|
|
21
|
+
const count = (m[1] ?? "").trim();
|
|
22
|
+
let min = null;
|
|
23
|
+
let max = null;
|
|
24
|
+
if (count.length === 0 || count === "*") {
|
|
25
|
+
min = null;
|
|
26
|
+
max = null;
|
|
27
|
+
}
|
|
28
|
+
else if (count === "?") {
|
|
29
|
+
min = null;
|
|
30
|
+
max = 1;
|
|
31
|
+
}
|
|
32
|
+
else if (count === "+") {
|
|
33
|
+
min = 1;
|
|
34
|
+
max = null;
|
|
35
|
+
}
|
|
36
|
+
else if (count.endsWith("+")) {
|
|
37
|
+
min = ChildLineParser.parseCount(count.substring(0, count.length - 1), count, rawLine, lineNumber);
|
|
38
|
+
max = null;
|
|
39
|
+
}
|
|
40
|
+
else if (count.endsWith("-")) {
|
|
41
|
+
min = null;
|
|
42
|
+
max = ChildLineParser.parseCount(count.substring(0, count.length - 1), count, rawLine, lineNumber);
|
|
43
|
+
}
|
|
44
|
+
else if (count.includes(",")) {
|
|
45
|
+
const parts = count.split(",");
|
|
46
|
+
if (parts.length !== 2) {
|
|
47
|
+
throw new ValidationException_1.ValidationException(lineNumber, "INVALID_CHILD_COUNT", `Invalid count ${count} in line: ${rawLine}`);
|
|
48
|
+
}
|
|
49
|
+
const aNum = ChildLineParser.parseCount(parts[0].trim(), count, rawLine, lineNumber);
|
|
50
|
+
const bNum = ChildLineParser.parseCount(parts[1].trim(), count, rawLine, lineNumber);
|
|
51
|
+
// Cardinalidad inválida si min > max (STXT-TEMPLATE-SPEC 7.1)
|
|
52
|
+
if (aNum > bNum) {
|
|
53
|
+
throw new ValidationException_1.ValidationException(lineNumber, "MIN_GREATER_THAN_MAX", `Min ${aNum} greater than Max ${bNum} in line: ${rawLine}`);
|
|
54
|
+
}
|
|
55
|
+
min = aNum;
|
|
56
|
+
max = bNum;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
min = ChildLineParser.parseCount(count, count, rawLine, lineNumber);
|
|
60
|
+
max = min;
|
|
61
|
+
}
|
|
62
|
+
// values
|
|
63
|
+
let values = null;
|
|
64
|
+
const valuesStr = m[3];
|
|
65
|
+
if (valuesStr !== null && valuesStr !== undefined) {
|
|
66
|
+
const parts = valuesStr.split(",");
|
|
67
|
+
const list = [];
|
|
68
|
+
for (let part of parts) {
|
|
69
|
+
part = part.trim();
|
|
70
|
+
if (part.length === 0) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (list.includes(part)) {
|
|
74
|
+
throw new ValidationException_1.ValidationException(lineNumber, "VALUE_DUPLICATED", `The values ${part} is duplicated`);
|
|
75
|
+
}
|
|
76
|
+
list.push(part);
|
|
77
|
+
}
|
|
78
|
+
// Los corchetes presentes (aunque vengan vacíos, "[]") cuentan como una definición
|
|
79
|
+
// explícita de valores: se devuelve un array no-nulo (posiblemente vacío) para
|
|
80
|
+
// distinguirlo de la ausencia total de corchetes (valuesStr null/undefined, values
|
|
81
|
+
// permanece null). Así "[]" se trata como redefinición/definición real (ported
|
|
82
|
+
// from stxt-java).
|
|
83
|
+
values = list;
|
|
84
|
+
}
|
|
85
|
+
// type es string|null en nuestra clase
|
|
86
|
+
return new ChildLine_1.ChildLine(type ?? null, min, max, values);
|
|
87
|
+
}
|
|
88
|
+
// num, min y max deben ser enteros no negativos, sin texto sobrante (STXT-TEMPLATE-SPEC 7.1)
|
|
89
|
+
static parseCount(num, count, rawLine, lineNumber) {
|
|
90
|
+
if (!/^\d+$/.test(num)) {
|
|
91
|
+
throw new ValidationException_1.ValidationException(lineNumber, "INVALID_CHILD_COUNT", `Invalid count ${count} in line: ${rawLine}`);
|
|
92
|
+
}
|
|
93
|
+
return parseInt(num, 10);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.ChildLineParser = ChildLineParser;
|
|
97
|
+
ChildLineParser.CHILD_LINE_PATTERN = /^\s*(?:\(\s*([^()\s][^)]*?)\s*\)\s*)?([^()[\]]*)?(?:\[\s*([^]*?)\s*\]\s*)?\s*$/;
|
|
98
|
+
//# sourceMappingURL=ChildLineParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildLineParser.js","sourceRoot":"","sources":["../../src/template/ChildLineParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Schema } from "../schema/Schema";
|
|
2
|
+
import { SchemaProvider } from "../schema/SchemaProvider";
|
|
3
|
+
export declare class MetaTemplateSchemaProvider implements SchemaProvider {
|
|
4
|
+
private static readonly META_TEXT;
|
|
5
|
+
private readonly meta;
|
|
6
|
+
constructor();
|
|
7
|
+
getSchema(namespace: string): Schema;
|
|
8
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetaTemplateSchemaProvider = void 0;
|
|
4
|
+
const Parser_1 = require("../core/Parser");
|
|
5
|
+
const ValidationException_1 = require("../exceptions/ValidationException");
|
|
6
|
+
const RuntimeException_1 = require("../exceptions/RuntimeException");
|
|
7
|
+
const TemplateParser_1 = require("./TemplateParser");
|
|
8
|
+
class MetaTemplateSchemaProvider {
|
|
9
|
+
constructor() {
|
|
10
|
+
const parser = new Parser_1.Parser();
|
|
11
|
+
const nodes = parser.parse(MetaTemplateSchemaProvider.META_TEXT);
|
|
12
|
+
if (nodes.length !== 1) {
|
|
13
|
+
throw new ValidationException_1.ValidationException(0, "META_SCHEMA_INVALID", `Meta schema must produce exactly 1 document, got ${nodes.length}`);
|
|
14
|
+
}
|
|
15
|
+
this.meta = (0, TemplateParser_1.transformTemplateNodeToSchema)(nodes[0]);
|
|
16
|
+
}
|
|
17
|
+
getSchema(namespace) {
|
|
18
|
+
if (namespace !== "@stxt.template") {
|
|
19
|
+
throw new RuntimeException_1.RuntimeException("RESOURCE_NOT_FOUND", `Not found '${namespace}' in namespace: @stxt.template`);
|
|
20
|
+
}
|
|
21
|
+
// meta siempre existe si el constructor terminó, pero lo dejamos equivalente al Java
|
|
22
|
+
if (!this.meta) {
|
|
23
|
+
throw new ValidationException_1.ValidationException(0, "META_SCHEMA_NOT_AVAILABLE", "Meta schema not available");
|
|
24
|
+
}
|
|
25
|
+
return this.meta;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.MetaTemplateSchemaProvider = MetaTemplateSchemaProvider;
|
|
29
|
+
MetaTemplateSchemaProvider.META_TEXT = `Template (@stxt.template): @stxt.template
|
|
30
|
+
\tStructure >>
|
|
31
|
+
\t\tTemplate (@stxt.template):
|
|
32
|
+
\t\t\tDescription: (?) TEXT
|
|
33
|
+
\t\t\tStructure: (1) BLOCK
|
|
34
|
+
`;
|
|
35
|
+
//# sourceMappingURL=MetaTemplateSchemaProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetaTemplateSchemaProvider.js","sourceRoot":"","sources":["../../src/template/MetaTemplateSchemaProvider.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAMxC,2EAAwE;AACxE,qEAAkE;AAClE,qDAAiE;AAEjE,MAAa,0BAA0B;IAUtC;QACC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,yCAAmB,CAC5B,CAAC,EACD,qBAAqB,EACrB,oDAAoD,KAAK,CAAC,MAAM,EAAE,CAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAA,8CAA6B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,SAAiB;QAC1B,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACpC,MAAM,IAAI,mCAAgB,CAAC,oBAAoB,EAAE,cAAc,SAAS,gCAAgC,CAAC,CAAC;QAC3G,CAAC;QAED,qFAAqF;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,yCAAmB,CAAC,CAAC,EAAE,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;;AApCF,gEAqCC;AApCwB,oCAAS,GAAG;;;;;CAKpC,CAAC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformTemplateNodeToSchema = transformTemplateNodeToSchema;
|
|
4
|
+
const Parser_1 = require("../core/Parser");
|
|
5
|
+
const ValidationException_1 = require("../exceptions/ValidationException");
|
|
6
|
+
const ChildDefinition_1 = require("../schema/ChildDefinition");
|
|
7
|
+
const NodeDefinition_1 = require("../schema/NodeDefinition");
|
|
8
|
+
const Schema_1 = require("../schema/Schema");
|
|
9
|
+
const StringUtils_1 = require("../core/StringUtils");
|
|
10
|
+
const ChildLineParser_1 = require("./ChildLineParser");
|
|
11
|
+
const ParseException_1 = require("../exceptions/ParseException");
|
|
12
|
+
const TypeRegistry_1 = require("../schema/TypeRegistry");
|
|
13
|
+
function transformTemplateNodeToSchema(node) {
|
|
14
|
+
// Insertamos namespace
|
|
15
|
+
const result = new Schema_1.Schema(node.getValue(), node.getLine(), undefined);
|
|
16
|
+
// Buscamos nodo structure
|
|
17
|
+
const structure = node.getChild("structure");
|
|
18
|
+
if (!structure) {
|
|
19
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "TEMPLATE_STRUCTURE_REQUIRED", "Template must define 'Structure >>'");
|
|
20
|
+
}
|
|
21
|
+
const text = structure.getText();
|
|
22
|
+
const offset = structure.getLine();
|
|
23
|
+
// Creamos un parser simple
|
|
24
|
+
const parser = new Parser_1.Parser();
|
|
25
|
+
// Parseamos para los nodos
|
|
26
|
+
try {
|
|
27
|
+
const nodes = parser.parse(text);
|
|
28
|
+
// Vamos iterando todos los nodos insertando
|
|
29
|
+
for (const n of nodes) {
|
|
30
|
+
addToSchema(result, n);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
// ValidationException extiende ParseException: comprobar primero para no degradar
|
|
35
|
+
// la severidad (la extensión pinta ValidationException como Warning)
|
|
36
|
+
if (e instanceof ValidationException_1.ValidationException) {
|
|
37
|
+
throw new ValidationException_1.ValidationException(e.line + offset, e.code, e.message);
|
|
38
|
+
}
|
|
39
|
+
if (e instanceof ParseException_1.ParseException) {
|
|
40
|
+
throw new ParseException_1.ParseException(e.line + offset, e.code, e.message);
|
|
41
|
+
}
|
|
42
|
+
throw e;
|
|
43
|
+
}
|
|
44
|
+
// Buscamos descripciones
|
|
45
|
+
const description = node.getChild("description");
|
|
46
|
+
if (description) {
|
|
47
|
+
const text = description.getText();
|
|
48
|
+
try {
|
|
49
|
+
const nodes = parser.parse(text);
|
|
50
|
+
addDescriptions(result, nodes);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
if (e instanceof ValidationException_1.ValidationException) {
|
|
54
|
+
throw new ValidationException_1.ValidationException(e.line + description.getLine(), e.code, e.message);
|
|
55
|
+
}
|
|
56
|
+
if (e instanceof ParseException_1.ParseException) {
|
|
57
|
+
throw new ParseException_1.ParseException(e.line + description.getLine(), e.code, e.message);
|
|
58
|
+
}
|
|
59
|
+
throw e;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Retornamos resultado
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
function addToSchema(schema, node) {
|
|
66
|
+
// Obtenemos nombre qualificado
|
|
67
|
+
let namespace = node.getNamespace();
|
|
68
|
+
const name = node.getName();
|
|
69
|
+
// Miramos datos
|
|
70
|
+
let cl = ChildLineParser_1.ChildLineParser.parse(node.getValue(), node.getLine());
|
|
71
|
+
if (!namespace || namespace === "") {
|
|
72
|
+
namespace = schema.getNamespace();
|
|
73
|
+
}
|
|
74
|
+
if (namespace !== schema.getNamespace()) {
|
|
75
|
+
// Un nodo externo solo puede declarar cardinalidad: ni tipo, ni valores ENUM,
|
|
76
|
+
// ni hijos (STXT-TEMPLATE-SPEC 6.4, 10 y 14.15)
|
|
77
|
+
const type = cl.getType();
|
|
78
|
+
if (type && type.trim().length > 0) {
|
|
79
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "TYPE_DEFINITION_NOT_ALLOWED", "Not allowed type definition in external namespaces");
|
|
80
|
+
}
|
|
81
|
+
const values = cl.getValues();
|
|
82
|
+
if (values) {
|
|
83
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "VALUES_NOT_ALLOWED_IN_EXTERNAL_NAMESPACE", `Not allowed values in external namespaces (node ${node.getName()})`);
|
|
84
|
+
}
|
|
85
|
+
if (node.getChildren().length > 0) {
|
|
86
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "CHILDREN_NOT_ALLOWED_IN_EXTERNAL_NAMESPACE", `Not allowed children in external namespaces (node ${node.getName()})`);
|
|
87
|
+
}
|
|
88
|
+
// No hacemos nada con creación de nodos que no son de @stxt.template!!
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Miramos si es nuevo y añadimos en listado
|
|
92
|
+
let schemaNode = schema.getNodeDefinition(name);
|
|
93
|
+
if (!schemaNode) {
|
|
94
|
+
// Nuevo
|
|
95
|
+
const type = cl.getType() ?? "INLINE";
|
|
96
|
+
// En este punto el schema ya contiene tanto las definiciones previas ya cerradas
|
|
97
|
+
// como los ancestros abiertos, así que una referencia que no resuelve aquí no
|
|
98
|
+
// resuelve a nada (STXT-TEMPLATE-SPEC 6.4 y 14.11)
|
|
99
|
+
if (type.startsWith("@")) {
|
|
100
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "REFERENCE_NOT_FOUND", `Reference '${type}' does not point to a previous definition or an open ancestor`);
|
|
101
|
+
}
|
|
102
|
+
schemaNode = new NodeDefinition_1.NodeDefinition(node.getName(), type, node.getLine(), undefined);
|
|
103
|
+
schema.addNodeDefinition(schemaNode);
|
|
104
|
+
if (!TypeRegistry_1.TypeRegistry.get(type)) {
|
|
105
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "TYPE_NOT_VALID", `Type not valid: ${type}`);
|
|
106
|
+
}
|
|
107
|
+
const values = cl.getValues();
|
|
108
|
+
if (values) {
|
|
109
|
+
if (type !== "ENUM") {
|
|
110
|
+
// Mismo código que SchemaParser: un template es azúcar equivalente a un schema
|
|
111
|
+
// (STXT-TEMPLATE-SPEC 13), así que la misma condición no debe cambiar de código
|
|
112
|
+
// según la puerta de entrada
|
|
113
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "VALUES_ONLY_SUPPORTED_BY_ENUM", `Values only supported for type ENUM, not for type ${type}`);
|
|
114
|
+
}
|
|
115
|
+
for (const v of values) {
|
|
116
|
+
schemaNode.addValue(v, node.getLine());
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Un ENUM sin lista de valores es un template inválido (STXT-TEMPLATE-SPEC 9 y 13.7)
|
|
120
|
+
if (type === "ENUM" && (!values || values.length === 0)) {
|
|
121
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "VALUES_EMPTY_FOR_ENUM", "ENUM Type must include values");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const type = cl.getType();
|
|
126
|
+
if (!type || !type.startsWith("@")) {
|
|
127
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "NODE_DEFINED_MULTIPLE_TIMES", `Multiple node reference must start with @: ${node.getName()}`);
|
|
128
|
+
}
|
|
129
|
+
const reference = type.substring(1).trim();
|
|
130
|
+
// Referencia y tipo explícito en la misma línea (STXT-TEMPLATE-SPEC 14.13)
|
|
131
|
+
const explicitType = referenceType(reference, node.getNormalizedName());
|
|
132
|
+
if (explicitType) {
|
|
133
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "REFERENCE_WITH_TYPE_NOT_ALLOWED", `Reference '@${node.getName()}' can not declare a type: ${explicitType}`);
|
|
134
|
+
}
|
|
135
|
+
if (StringUtils_1.StringUtils.normalize(reference) !== node.getNormalizedName()) {
|
|
136
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "NODE_REFERENCE_NOT_VALID", `Reference must be '@${node.getName()}', not '${reference}'`);
|
|
137
|
+
}
|
|
138
|
+
// La referencia puede sobrescribir la cardinalidad, pero no redefinir valores
|
|
139
|
+
// ENUM ni hijos (STXT-TEMPLATE-SPEC 6.4)
|
|
140
|
+
const values = cl.getValues();
|
|
141
|
+
if (values) {
|
|
142
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "VALUES_NOT_ALLOWED_IN_REFERENCE", `Reference '@${node.getName()}' can not redefine ENUM values`);
|
|
143
|
+
}
|
|
144
|
+
if (node.getChildren().length > 0) {
|
|
145
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "CHILDREN_NOT_ALLOWED_IN_REFERENCE", `Reference '@${node.getName()}' can not redefine children`);
|
|
146
|
+
}
|
|
147
|
+
return; // OK Definition
|
|
148
|
+
}
|
|
149
|
+
// Una vez ya existe, si tiene hijos los intentamos crear.
|
|
150
|
+
const childrenNode = node.getChildren();
|
|
151
|
+
// Error de template 14.9: nodo con hijos y tipo efectivo que no admite hijos
|
|
152
|
+
if (childrenNode.length > 0 && !TypeRegistry_1.TypeRegistry.admitsChildren(schemaNode.getType())) {
|
|
153
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "CHILDREN_NOT_ALLOWED_FOR_TYPE", `Type ${schemaNode.getType()} does not allow children (node ${node.getName()})`);
|
|
154
|
+
}
|
|
155
|
+
// Insertamos childs
|
|
156
|
+
for (const child of childrenNode) {
|
|
157
|
+
cl = ChildLineParser_1.ChildLineParser.parse(child.getValue(), child.getLine());
|
|
158
|
+
const childName = child.getName();
|
|
159
|
+
let childNamespace = child.getNamespace();
|
|
160
|
+
if (!childNamespace || childNamespace === "") {
|
|
161
|
+
childNamespace = schema.getNamespace();
|
|
162
|
+
}
|
|
163
|
+
const schChild = new ChildDefinition_1.ChildDefinition(childName, childNamespace, cl.getMin(), cl.getMax(), child.getLine());
|
|
164
|
+
schemaNode.addChildDefinition(schChild);
|
|
165
|
+
addToSchema(schema, child);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Distingue `@Nombre Nodo TIPO` (referencia + tipo, error 14.13) de `@Otro Nombre`
|
|
170
|
+
* (referencia con nombre distinto, error 14.12). Como los nombres de nodo admiten
|
|
171
|
+
* espacios, la única lectura fiable es: si el último token es un tipo conocido y lo
|
|
172
|
+
* que queda delante es el nombre del propio nodo, la línea declara ambas cosas.
|
|
173
|
+
* Devuelve el tipo declarado, o null si la referencia no lleva tipo.
|
|
174
|
+
*/
|
|
175
|
+
function referenceType(reference, normalizedName) {
|
|
176
|
+
const cut = reference.lastIndexOf(" ");
|
|
177
|
+
if (cut < 0) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
const candidate = reference.substring(cut + 1).trim();
|
|
181
|
+
const rest = reference.substring(0, cut);
|
|
182
|
+
if (TypeRegistry_1.TypeRegistry.get(candidate) && StringUtils_1.StringUtils.normalize(rest) === normalizedName) {
|
|
183
|
+
return candidate;
|
|
184
|
+
}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
function addDescriptions(schema, nodes) {
|
|
188
|
+
nodes.forEach((node) => {
|
|
189
|
+
// Obtenemos namespace
|
|
190
|
+
let namespace = node.getNamespace();
|
|
191
|
+
if (!namespace || namespace === "") {
|
|
192
|
+
namespace = schema.getNamespace();
|
|
193
|
+
}
|
|
194
|
+
// Validamos no external description
|
|
195
|
+
if (namespace !== schema.getNamespace()) {
|
|
196
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "EXTERNAL_DESCRIPTION_NOT_ALLOWED", "Not allowed description in external namespaces");
|
|
197
|
+
}
|
|
198
|
+
// Validamos sin hijos
|
|
199
|
+
if (node.getChildren().length > 0) {
|
|
200
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "CHILDREN_DESCRIPTION_NOT_ALLOWED", "Not allowed children in description");
|
|
201
|
+
}
|
|
202
|
+
// Buscamos nodo de esquema
|
|
203
|
+
const nodeDef = schema.getNodeDefinition(node.getName());
|
|
204
|
+
if (!nodeDef) {
|
|
205
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "NODE_NOT_FOUND", `Not found node with name: ${node.getName()}`);
|
|
206
|
+
}
|
|
207
|
+
// No se permite más de una entrada por nodo (STXT-TEMPLATE-SPEC 12)
|
|
208
|
+
if (nodeDef.getDescription() !== undefined) {
|
|
209
|
+
throw new ValidationException_1.ValidationException(node.getLine(), "DESCRIPTION_ALREADY_DEFINED", `Exists a previous description for node: ${node.getName()}`);
|
|
210
|
+
}
|
|
211
|
+
nodeDef.setDescription(node.getText());
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=TemplateParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateParser.js","sourceRoot":"","sources":["../../src/template/TemplateParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SchemaProviderMemory } from "../schema/SchemaProviderMemory";
|
|
2
|
+
import { SchemaProvider } from "../schema/SchemaProvider";
|
|
3
|
+
export declare class TemplateSchemaProviderMemory extends SchemaProviderMemory {
|
|
4
|
+
constructor(parent?: SchemaProvider | null | undefined);
|
|
5
|
+
addTemplate(template: string): void;
|
|
6
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// TemplateSchemaProvider.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TemplateSchemaProviderMemory = void 0;
|
|
5
|
+
const Parser_1 = require("../core/Parser");
|
|
6
|
+
const SchemaValidator_1 = require("../schema/SchemaValidator");
|
|
7
|
+
const ValidationException_1 = require("../exceptions/ValidationException");
|
|
8
|
+
const MetaTemplateSchemaProvider_1 = require("./MetaTemplateSchemaProvider");
|
|
9
|
+
const SchemaProviderMemory_1 = require("../schema/SchemaProviderMemory");
|
|
10
|
+
const TemplateParser_1 = require("./TemplateParser");
|
|
11
|
+
class TemplateSchemaProviderMemory extends SchemaProviderMemory_1.SchemaProviderMemory {
|
|
12
|
+
constructor(parent) {
|
|
13
|
+
if (!parent) {
|
|
14
|
+
parent = new MetaTemplateSchemaProvider_1.MetaTemplateSchemaProvider();
|
|
15
|
+
}
|
|
16
|
+
super(parent);
|
|
17
|
+
}
|
|
18
|
+
addTemplate(template) {
|
|
19
|
+
const parser = new Parser_1.Parser();
|
|
20
|
+
const nodes = parser.parse(template);
|
|
21
|
+
if (nodes.length !== 1) {
|
|
22
|
+
throw new ValidationException_1.ValidationException(0, "INVALID_SCHEMA", `There are ${nodes.length}, and expected is 1`);
|
|
23
|
+
}
|
|
24
|
+
// Validamos el template contra el meta-schema de templates
|
|
25
|
+
const schemaValidator = new SchemaValidator_1.SchemaValidator(new MetaTemplateSchemaProvider_1.MetaTemplateSchemaProvider(), true);
|
|
26
|
+
schemaValidator.validate(nodes[0]);
|
|
27
|
+
// Generamos schema desde el template
|
|
28
|
+
const sch = (0, TemplateParser_1.transformTemplateNodeToSchema)(nodes[0]);
|
|
29
|
+
// Check mínimo de seguridad (en Java también se controlaba el namespace esperado)
|
|
30
|
+
if (!sch.getNamespace() || sch.getNamespace().trim().length === 0) {
|
|
31
|
+
throw new ValidationException_1.ValidationException(0, "INVALID_SCHEMA", "Schema namespace is empty");
|
|
32
|
+
}
|
|
33
|
+
this.schemas.set(sch.getNamespace(), sch);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.TemplateSchemaProviderMemory = TemplateSchemaProviderMemory;
|
|
37
|
+
//# sourceMappingURL=TemplateSchemaProviderMemory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateSchemaProviderMemory.js","sourceRoot":"","sources":["../../src/template/TemplateSchemaProviderMemory.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;AAE5B,2CAAwC;AAGxC,+DAA4D;AAC5D,2EAAwE;AAExE,6EAA0E;AAC1E,yEAAsE;AAEtE,qDAAiE;AAEjE,MAAa,4BAA6B,SAAQ,2CAAoB;IAElE,YAAY,MAA0C;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,IAAI,uDAA0B,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,QAAgB;QACxB,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,yCAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,aAAa,KAAK,CAAC,MAAM,qBAAqB,CAAC,CAAC;QACvG,CAAC;QAED,2DAA2D;QAC3D,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,IAAI,uDAA0B,EAAE,EAAE,IAAI,CAAC,CAAC;QACpF,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnC,qCAAqC;QACrC,MAAM,GAAG,GAAG,IAAA,8CAA6B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,kFAAkF;QAClF,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,yCAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;CACJ;AA/BD,oEA+BC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@stxt-lang/core",
|
|
3
|
+
"version": "0.5.1",
|
|
4
|
+
"description": "Parser and schema validator for STXT, an indentation-based structured-text format.",
|
|
5
|
+
"main": "out/all.js",
|
|
6
|
+
"types": "out/all.d.ts",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"out/all.js",
|
|
12
|
+
"out/all.js.map",
|
|
13
|
+
"out/all.d.ts",
|
|
14
|
+
"out/core",
|
|
15
|
+
"out/exceptions",
|
|
16
|
+
"out/processors",
|
|
17
|
+
"out/runtime",
|
|
18
|
+
"out/schema",
|
|
19
|
+
"out/template"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"watch": "tsc --watch",
|
|
24
|
+
"lint": "eslint src --ext .ts",
|
|
25
|
+
"prepare": "npm run build",
|
|
26
|
+
"pretest": "npm run build && npm run lint",
|
|
27
|
+
"test": "mocha \"out/test/**/*.test.js\""
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/stxt-lang/stxt-js.git"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [],
|
|
34
|
+
"author": "",
|
|
35
|
+
"license": "ISC",
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/mocha": "^10.0.10",
|
|
38
|
+
"@types/node": "22.x",
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
40
|
+
"@typescript-eslint/parser": "^5.62.0",
|
|
41
|
+
"eslint": "^8.57.1",
|
|
42
|
+
"mocha": "^11.7.5",
|
|
43
|
+
"typescript": "^5.5.4"
|
|
44
|
+
}
|
|
45
|
+
}
|