@dialecte/core 0.6.0 → 0.6.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/dist/helpers/standardizing.d.ts.map +1 -1
- package/dist/helpers.js +74 -71
- package/dist/index.js +3 -3
- package/dist/{project-DwtNI4J5.js → project-sK-5Xc-5.js} +315 -315
- package/dist/test/assert-valid-xml/assert-valid-xml.d.ts +3 -1
- package/dist/test/assert-valid-xml/assert-valid-xml.d.ts.map +1 -1
- package/dist/test.js +204 -191
- package/dist/utils/namespaces.d.ts +6 -1
- package/dist/utils/namespaces.d.ts.map +1 -1
- package/dist/{utils-CZ12wsuC.js → utils-CTBHUFs9.js} +7 -3
- package/dist/utils.js +2 -2
- package/package.json +1 -1
package/dist/test.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { N as e, V as t, gt as n, mt as r, pt as i, t as a, u as o } from "./project-
|
|
2
|
-
import {
|
|
3
|
-
import { standardizeRecord as
|
|
4
|
-
import { expect as
|
|
1
|
+
import { N as e, V as t, gt as n, mt as r, pt as i, t as a, u as o } from "./project-sK-5Xc-5.js";
|
|
2
|
+
import { A as s, N as c, O as l, i as u, k as d, y as f } from "./utils-CTBHUFs9.js";
|
|
3
|
+
import { standardizeRecord as p, toTrackedRecord as m, toTreeRecord as h } from "./helpers.js";
|
|
4
|
+
import { expect as g, it as _ } from "vitest";
|
|
5
5
|
//#region src/test/assert-valid-xml/assert-valid-xml.ts
|
|
6
|
-
|
|
6
|
+
var v = [
|
|
7
|
+
s,
|
|
8
|
+
c.uri,
|
|
9
|
+
l.uri
|
|
10
|
+
];
|
|
11
|
+
function y(e) {
|
|
7
12
|
let { definition: t, types: n, namespaces: r, schemaName: i = "XML" } = e, a = {
|
|
8
13
|
definition: t,
|
|
9
14
|
types: n,
|
|
@@ -12,7 +17,7 @@ function m(e) {
|
|
|
12
17
|
function s(e) {
|
|
13
18
|
return e.namespaceURI !== null && !o.includes(e.namespaceURI);
|
|
14
19
|
}
|
|
15
|
-
function
|
|
20
|
+
function c(e, n) {
|
|
16
21
|
let r = t[n];
|
|
17
22
|
if (r === void 0) return;
|
|
18
23
|
let i = e?.children.details[n]?.declarations;
|
|
@@ -21,7 +26,7 @@ function m(e) {
|
|
|
21
26
|
let a = Object.values(r.declarations ?? {}), o = e ? a : a.filter((e) => e.global);
|
|
22
27
|
return o.length > 0 ? [...new Set(o.map((e) => e.namespace.uri))] : [r.namespace.uri];
|
|
23
28
|
}
|
|
24
|
-
function
|
|
29
|
+
function l(e, t) {
|
|
25
30
|
let n = Array.from(e.attributes).map((e) => ({
|
|
26
31
|
name: e.name,
|
|
27
32
|
value: e.value,
|
|
@@ -50,83 +55,91 @@ function m(e) {
|
|
|
50
55
|
let n = e.children;
|
|
51
56
|
return n.any === !0 || n.sequence.includes(t) ? !0 : t in n.details;
|
|
52
57
|
}
|
|
53
|
-
function
|
|
58
|
+
function p(e) {
|
|
54
59
|
return new Set([...e.attributes.sequence, ...Object.keys(e.attributes.details)]);
|
|
55
60
|
}
|
|
56
|
-
function
|
|
61
|
+
function m(e, t) {
|
|
57
62
|
let n = t.indexOf(":");
|
|
58
63
|
if (n === -1) return e.hasAttribute(t);
|
|
59
64
|
let i = t.slice(0, n), a = Object.values(r).find((e) => e.prefix === i);
|
|
60
65
|
return a === void 0 ? e.hasAttribute(t) : e.hasAttributeNS(a.uri, t.slice(n + 1));
|
|
61
66
|
}
|
|
62
|
-
function
|
|
63
|
-
|
|
67
|
+
function h(e) {
|
|
68
|
+
if (e.namespaceURI === null) return e.localName;
|
|
69
|
+
let t = Object.values(r).find((t) => t.uri === e.namespaceURI);
|
|
70
|
+
return t === void 0 ? e.name : t.prefix ? `${t.prefix}:${e.localName}` : e.localName;
|
|
71
|
+
}
|
|
72
|
+
function g(e) {
|
|
73
|
+
let { element: t, elementDefinition: n, requireComplete: r } = e, i = p(n), a = Array.from(t.attributes).filter((e) => !v.includes(e.namespaceURI ?? "")).filter((e) => !i.has(h(e)) && !u({
|
|
74
|
+
wildcard: n.attributes.any,
|
|
75
|
+
namespaceUri: e.namespaceURI ?? ""
|
|
76
|
+
})).map((e) => `[attribute] <${t.localName}> has unknown attribute '${h(e)}'`);
|
|
64
77
|
if (!r) return a;
|
|
65
|
-
let o = Object.entries(n.attributes.details).filter(([e, n]) => n.required && !
|
|
78
|
+
let o = Object.entries(n.attributes.details).filter(([e, n]) => n.required && !m(t, e)).map(([e]) => `[required] <${t.localName}> is missing required attribute '${e}'`);
|
|
66
79
|
return [...a, ...o];
|
|
67
80
|
}
|
|
68
|
-
function
|
|
81
|
+
function _(e) {
|
|
69
82
|
let { element: t, parent: n, requireComplete: r } = e, i = Array.from(t.children);
|
|
70
|
-
if (s(t)) return i.flatMap((e) =>
|
|
83
|
+
if (s(t)) return i.flatMap((e) => _({
|
|
71
84
|
element: e,
|
|
72
85
|
parent: void 0,
|
|
73
86
|
requireComplete: r
|
|
74
87
|
}));
|
|
75
|
-
let o = t.localName,
|
|
76
|
-
if (p !== void 0 && !p.includes(
|
|
88
|
+
let o = t.localName, u = [], p = c(n?.definition, o), m = t.namespaceURI ?? "";
|
|
89
|
+
if (p !== void 0 && !p.includes(m)) {
|
|
77
90
|
let e = n ? ` under <${n.localName}>` : "", r = p.map((e) => e || "(no namespace)").join(" or ");
|
|
78
|
-
|
|
91
|
+
u.push(`[namespace] <${t.tagName}>${e}: is in ${t.namespaceURI ?? "(no namespace)"}, schema declares ${r}`);
|
|
79
92
|
}
|
|
80
|
-
n?.definition && !d(n.definition, o) &&
|
|
81
|
-
let
|
|
93
|
+
n?.definition && !d(n.definition, o) && u.push(`[containment] <${o}> is not a valid child of <${n.localName}>`);
|
|
94
|
+
let h = f({
|
|
82
95
|
dialecteConfig: a,
|
|
83
|
-
record:
|
|
96
|
+
record: l(t, n?.localName),
|
|
84
97
|
parentDefinition: n?.definition
|
|
85
|
-
}), v =
|
|
98
|
+
}), v = h ? g({
|
|
86
99
|
element: t,
|
|
87
|
-
elementDefinition:
|
|
100
|
+
elementDefinition: h,
|
|
88
101
|
requireComplete: r
|
|
89
|
-
}) : [], y = i.flatMap((e) =>
|
|
102
|
+
}) : [], y = i.flatMap((e) => _({
|
|
90
103
|
element: e,
|
|
91
104
|
parent: {
|
|
92
105
|
localName: o,
|
|
93
|
-
definition:
|
|
106
|
+
definition: h
|
|
94
107
|
},
|
|
95
108
|
requireComplete: r
|
|
96
109
|
}));
|
|
97
110
|
return [
|
|
98
|
-
...
|
|
111
|
+
...u,
|
|
99
112
|
...v,
|
|
100
113
|
...y
|
|
101
114
|
];
|
|
102
115
|
}
|
|
103
|
-
function
|
|
116
|
+
function y(e) {
|
|
104
117
|
let { xml: t, label: n, requireComplete: r } = e;
|
|
105
118
|
if (!t.startsWith("<?xml") && t.trimStart().startsWith("<?xml")) return `${n}: malformed XML — the XML declaration must be the very first characters of the string: remove the declaration (a snippet does not need one) or the whitespace before it`;
|
|
106
119
|
let a = new DOMParser().parseFromString(t, "application/xml"), o = a.querySelector("parsererror");
|
|
107
120
|
if (o) return `${n}: malformed XML — ${o.textContent?.trim()}`;
|
|
108
121
|
if (!a.documentElement) return;
|
|
109
|
-
let s =
|
|
122
|
+
let s = _({
|
|
110
123
|
element: a.documentElement,
|
|
111
124
|
parent: void 0,
|
|
112
125
|
requireComplete: r
|
|
113
126
|
});
|
|
114
127
|
return s.length > 0 ? `${n}: not valid ${i}:\n ${s.join("\n ")}` : void 0;
|
|
115
128
|
}
|
|
116
|
-
function
|
|
117
|
-
let r =
|
|
129
|
+
function b(e, t = "test XML", n = {}) {
|
|
130
|
+
let r = y({
|
|
118
131
|
xml: e,
|
|
119
132
|
label: t,
|
|
120
133
|
requireComplete: n.requireComplete ?? !0
|
|
121
134
|
});
|
|
122
135
|
if (r) throw Error(r);
|
|
123
136
|
}
|
|
124
|
-
function
|
|
125
|
-
let { testCases: t } = e, n = Object.entries(t).flatMap(([e, t]) => [
|
|
137
|
+
function x(e) {
|
|
138
|
+
let { testCases: t } = e, n = Object.entries(t).flatMap(([e, t]) => [y({
|
|
126
139
|
xml: t.sourceXml,
|
|
127
140
|
label: `${e} › sourceXml`,
|
|
128
141
|
requireComplete: !1
|
|
129
|
-
}), t.targetXml ?
|
|
142
|
+
}), t.targetXml ? y({
|
|
130
143
|
xml: t.targetXml,
|
|
131
144
|
label: `${e} › targetXml`,
|
|
132
145
|
requireComplete: !1
|
|
@@ -134,20 +147,20 @@ function m(e) {
|
|
|
134
147
|
if (n.length > 0) throw Error(n.join("\n"));
|
|
135
148
|
}
|
|
136
149
|
return {
|
|
137
|
-
assertValidXml:
|
|
138
|
-
assertValidXmlTestCases:
|
|
150
|
+
assertValidXml: b,
|
|
151
|
+
assertValidXmlTestCases: x
|
|
139
152
|
};
|
|
140
153
|
}
|
|
141
154
|
//#endregion
|
|
142
155
|
//#region src/test/assert-xml/xpath-parser.ts
|
|
143
|
-
function
|
|
144
|
-
let t =
|
|
156
|
+
function b(e) {
|
|
157
|
+
let t = x(e);
|
|
145
158
|
if (t.length === 0) return [e];
|
|
146
159
|
let n = [];
|
|
147
160
|
for (let r of t) n.push(e.slice(0, r));
|
|
148
161
|
return n.push(e), n;
|
|
149
162
|
}
|
|
150
|
-
function
|
|
163
|
+
function x(e) {
|
|
151
164
|
let t = [], n = 0, r = 0, i = null;
|
|
152
165
|
for (let a = 0; a < e.length; a++) {
|
|
153
166
|
let o = e[a];
|
|
@@ -188,60 +201,60 @@ function g(e) {
|
|
|
188
201
|
}
|
|
189
202
|
//#endregion
|
|
190
203
|
//#region src/test/assert-xml/assert-xml.ts
|
|
191
|
-
var
|
|
192
|
-
function
|
|
193
|
-
let { namespaces: t } = e, n =
|
|
204
|
+
var S = /* @__PURE__ */ n(t(), 1);
|
|
205
|
+
function C(e) {
|
|
206
|
+
let { namespaces: t } = e, n = T(t);
|
|
194
207
|
return {
|
|
195
208
|
assertExpectedElementQueries(e) {
|
|
196
|
-
|
|
209
|
+
w({
|
|
197
210
|
...e,
|
|
198
211
|
nsResolver: n
|
|
199
212
|
});
|
|
200
213
|
},
|
|
201
214
|
assertUnexpectedElementQueries(e) {
|
|
202
|
-
|
|
215
|
+
E({
|
|
203
216
|
...e,
|
|
204
217
|
nsResolver: n
|
|
205
218
|
});
|
|
206
219
|
}
|
|
207
220
|
};
|
|
208
221
|
}
|
|
209
|
-
function
|
|
222
|
+
function w(e) {
|
|
210
223
|
let { xmlDocument: t, queries: n, nsResolver: r } = e;
|
|
211
|
-
for (let e of n)
|
|
224
|
+
for (let e of n) D({
|
|
212
225
|
xmlDocument: t,
|
|
213
226
|
xpath: e,
|
|
214
227
|
nsResolver: r
|
|
215
228
|
});
|
|
216
229
|
}
|
|
217
|
-
function
|
|
230
|
+
function T(e) {
|
|
218
231
|
return (t) => t ? e[t]?.uri ?? null : null;
|
|
219
232
|
}
|
|
220
|
-
function
|
|
233
|
+
function E(e) {
|
|
221
234
|
let { xmlDocument: t, queries: n, nsResolver: r } = e;
|
|
222
|
-
for (let e of n)
|
|
235
|
+
for (let e of n) k({
|
|
223
236
|
xmlDocument: t,
|
|
224
237
|
xpath: e,
|
|
225
238
|
nsResolver: r
|
|
226
239
|
});
|
|
227
240
|
}
|
|
228
|
-
function
|
|
229
|
-
let { xmlDocument: t, xpath: n, nsResolver: r } = e, i =
|
|
241
|
+
function D(e) {
|
|
242
|
+
let { xmlDocument: t, xpath: n, nsResolver: r } = e, i = b(n), a = null, o = 0;
|
|
230
243
|
for (let e = 0; e < i.length; e++) {
|
|
231
244
|
let s = i[e], c = t.evaluate(s, t, r ?? null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
232
245
|
if (c) {
|
|
233
246
|
a = c, o = e + 1;
|
|
234
247
|
continue;
|
|
235
248
|
}
|
|
236
|
-
let l = e === 0 ? i[0] : n.slice(i[e - 1].length), u = o === 0 ? `[No parent matched — failed from document root]\n Document:\n${
|
|
237
|
-
|
|
249
|
+
let l = e === 0 ? i[0] : n.slice(i[e - 1].length), u = o === 0 ? `[No parent matched — failed from document root]\n Document:\n${O({ xml: new XMLSerializer().serializeToString(t) })}` : `[Last match at step ${o}/${i.length}]:\n${a ? O({ xml: a.outerHTML }) : "(none)"}`;
|
|
250
|
+
g(c, `Element not found in XML.\n Failed at step ${e + 1}/${i.length}: ${l.trim()}\n Full XPath: ${n}\n ${u}`).toBeTruthy();
|
|
238
251
|
return;
|
|
239
252
|
}
|
|
240
253
|
}
|
|
241
|
-
function
|
|
254
|
+
function O(e) {
|
|
242
255
|
let { xml: t } = e;
|
|
243
256
|
try {
|
|
244
|
-
return (0,
|
|
257
|
+
return (0, S.default)(t, {
|
|
245
258
|
indentation: " ",
|
|
246
259
|
collapseContent: !0
|
|
247
260
|
});
|
|
@@ -249,24 +262,24 @@ function C(e) {
|
|
|
249
262
|
return t;
|
|
250
263
|
}
|
|
251
264
|
}
|
|
252
|
-
function
|
|
253
|
-
let { xmlDocument: t, xpath: n, nsResolver: r } = e, i =
|
|
265
|
+
function k(e) {
|
|
266
|
+
let { xmlDocument: t, xpath: n, nsResolver: r } = e, i = b(n);
|
|
254
267
|
if (i.length > 1) {
|
|
255
268
|
let e = null;
|
|
256
269
|
for (let a = 0; a < i.length - 1; a++) {
|
|
257
|
-
let o = i[a], s = t.evaluate(o, t, r ?? null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue, c = a === 0 ? i[0] : n.slice(i[a - 1].length), l = a === 0 ? "[Document root — no parent context]" : `[Parent element found at step ${a}]:\n${e ?
|
|
258
|
-
|
|
270
|
+
let o = i[a], s = t.evaluate(o, t, r ?? null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue, c = a === 0 ? i[0] : n.slice(i[a - 1].length), l = a === 0 ? "[Document root — no parent context]" : `[Parent element found at step ${a}]:\n${e ? O({ xml: e.outerHTML }) : "(none)"}`;
|
|
271
|
+
g(s, `Absent assertion is unreliable: ancestor step does not exist.
|
|
259
272
|
The query passes but for the wrong reason — an ancestor is missing, not the target element.
|
|
260
273
|
Missing at step ${a + 1}/${i.length}: ${c.trim()}\n Full XPath: ${n}\n ${l}`).toBeTruthy(), e = s;
|
|
261
274
|
}
|
|
262
275
|
}
|
|
263
276
|
let a = t.evaluate(n, t, r ?? null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
264
|
-
|
|
277
|
+
g(a, `Element should NOT exist in XML but was found.\n XPath: ${n}\n Found:\n${a ? O({ xml: a.outerHTML }) : "(none)"}`).toBeFalsy();
|
|
265
278
|
}
|
|
266
279
|
//#endregion
|
|
267
280
|
//#region src/test/constant.ts
|
|
268
|
-
var
|
|
269
|
-
...
|
|
281
|
+
var A = {
|
|
282
|
+
...d,
|
|
270
283
|
default: {
|
|
271
284
|
uri: "http://dialecte.dev/XML/DEFAULT",
|
|
272
285
|
prefix: ""
|
|
@@ -275,7 +288,7 @@ var T = {
|
|
|
275
288
|
uri: "http://dialecte.dev/XML/DEV-EXT",
|
|
276
289
|
prefix: "ext"
|
|
277
290
|
}
|
|
278
|
-
},
|
|
291
|
+
}, j = `xmlns="${A.default.uri}"`, M = `xmlns:${A.dev.prefix}="${A.dev.uri}"`, N = `xmlns:${A.ext.prefix}="${A.ext.uri}"`, ee = /* @__PURE__ */ "A.AAAA_1.AAAA_2.AAAA_3.AAA_1.AAA_2.AAA_3.AA_1.AA_2.AA_3.B.BBBB_1.BBBB_2.BBBB_3.BBB_1.BBB_2.BBB_3.BB_1.BB_2.BB_3.C.CCCC_1.CCCC_2.CCCC_3.CCC_1.CCC_2.CCC_3.CC_1.CC_2.CC_3.D.DDD_1.DDD_2.DDD_3.DD_1.DD_2.DD_3.Root".split("."), te = {
|
|
279
292
|
A: [
|
|
280
293
|
"AA_1",
|
|
281
294
|
"AA_2",
|
|
@@ -407,7 +420,7 @@ var T = {
|
|
|
407
420
|
"C",
|
|
408
421
|
"D"
|
|
409
422
|
]
|
|
410
|
-
},
|
|
423
|
+
}, ne = {
|
|
411
424
|
A: ["Root"],
|
|
412
425
|
AAAA_1: [
|
|
413
426
|
"AAA_1",
|
|
@@ -518,7 +531,7 @@ var T = {
|
|
|
518
531
|
DD_2: ["D"],
|
|
519
532
|
DD_3: ["D"],
|
|
520
533
|
Root: []
|
|
521
|
-
},
|
|
534
|
+
}, P = {
|
|
522
535
|
A: [
|
|
523
536
|
"AAAA_1",
|
|
524
537
|
"AAAA_2",
|
|
@@ -693,7 +706,7 @@ var T = {
|
|
|
693
706
|
DD_2: ["DDD_2", "DDD_3"],
|
|
694
707
|
DD_3: [],
|
|
695
708
|
Root: /* @__PURE__ */ "A.AAAA_1.AAAA_2.AAAA_3.AAA_1.AAA_2.AAA_3.AA_1.AA_2.AA_3.B.BBBB_1.BBBB_2.BBBB_3.BBB_1.BBB_2.BBB_3.BB_1.BB_2.BB_3.C.CCCC_1.CCCC_2.CCCC_3.CCC_1.CCC_2.CCC_3.CC_1.CC_2.CC_3.D.DDD_1.DDD_2.DDD_3.DD_1.DD_2.DD_3".split(".")
|
|
696
|
-
},
|
|
709
|
+
}, F = {
|
|
697
710
|
A: ["Root"],
|
|
698
711
|
AAAA_1: [
|
|
699
712
|
"A",
|
|
@@ -879,7 +892,7 @@ var T = {
|
|
|
879
892
|
DD_2: ["D", "Root"],
|
|
880
893
|
DD_3: ["D", "Root"],
|
|
881
894
|
Root: []
|
|
882
|
-
},
|
|
895
|
+
}, I = "Root", L = [
|
|
883
896
|
"A",
|
|
884
897
|
"AA_1",
|
|
885
898
|
"B",
|
|
@@ -891,7 +904,7 @@ var T = {
|
|
|
891
904
|
"DDD_1",
|
|
892
905
|
"DD_1",
|
|
893
906
|
"Root"
|
|
894
|
-
],
|
|
907
|
+
], R = {
|
|
895
908
|
A: {
|
|
896
909
|
aA: "",
|
|
897
910
|
bA: "",
|
|
@@ -1097,132 +1110,132 @@ var T = {
|
|
|
1097
1110
|
"ext:root": "",
|
|
1098
1111
|
root: ""
|
|
1099
1112
|
}
|
|
1100
|
-
},
|
|
1101
|
-
byTag:
|
|
1113
|
+
}, z = {
|
|
1114
|
+
byTag: R,
|
|
1102
1115
|
byParent: {
|
|
1103
1116
|
A: {
|
|
1104
|
-
AA_1:
|
|
1105
|
-
AA_2:
|
|
1106
|
-
AA_3:
|
|
1117
|
+
AA_1: R.AA_1,
|
|
1118
|
+
AA_2: R.AA_2,
|
|
1119
|
+
AA_3: R.AA_3
|
|
1107
1120
|
},
|
|
1108
1121
|
AAA_1: {
|
|
1109
|
-
AAAA_1:
|
|
1110
|
-
AAAA_2:
|
|
1111
|
-
AAAA_3:
|
|
1122
|
+
AAAA_1: R.AAAA_1,
|
|
1123
|
+
AAAA_2: R.AAAA_2,
|
|
1124
|
+
AAAA_3: R.AAAA_3
|
|
1112
1125
|
},
|
|
1113
1126
|
AAA_2: {
|
|
1114
|
-
AAAA_1:
|
|
1115
|
-
AAAA_2:
|
|
1116
|
-
AAAA_3:
|
|
1127
|
+
AAAA_1: R.AAAA_1,
|
|
1128
|
+
AAAA_2: R.AAAA_2,
|
|
1129
|
+
AAAA_3: R.AAAA_3
|
|
1117
1130
|
},
|
|
1118
1131
|
AAA_3: {
|
|
1119
|
-
AAAA_1:
|
|
1120
|
-
AAAA_2:
|
|
1121
|
-
AAAA_3:
|
|
1132
|
+
AAAA_1: R.AAAA_1,
|
|
1133
|
+
AAAA_2: R.AAAA_2,
|
|
1134
|
+
AAAA_3: R.AAAA_3
|
|
1122
1135
|
},
|
|
1123
1136
|
AA_1: {
|
|
1124
|
-
AAA_1:
|
|
1125
|
-
AAA_2:
|
|
1126
|
-
AAA_3:
|
|
1137
|
+
AAA_1: R.AAA_1,
|
|
1138
|
+
AAA_2: R.AAA_2,
|
|
1139
|
+
AAA_3: R.AAA_3
|
|
1127
1140
|
},
|
|
1128
1141
|
AA_2: {
|
|
1129
|
-
AAA_1:
|
|
1130
|
-
AAA_2:
|
|
1131
|
-
AAA_3:
|
|
1142
|
+
AAA_1: R.AAA_1,
|
|
1143
|
+
AAA_2: R.AAA_2,
|
|
1144
|
+
AAA_3: R.AAA_3
|
|
1132
1145
|
},
|
|
1133
1146
|
AA_3: {
|
|
1134
|
-
AAA_1:
|
|
1135
|
-
AAA_2:
|
|
1136
|
-
AAA_3:
|
|
1147
|
+
AAA_1: R.AAA_1,
|
|
1148
|
+
AAA_2: R.AAA_2,
|
|
1149
|
+
AAA_3: R.AAA_3
|
|
1137
1150
|
},
|
|
1138
1151
|
B: {
|
|
1139
|
-
BB_1:
|
|
1140
|
-
BB_2:
|
|
1141
|
-
BB_3:
|
|
1152
|
+
BB_1: R.BB_1,
|
|
1153
|
+
BB_2: R.BB_2,
|
|
1154
|
+
BB_3: R.BB_3
|
|
1142
1155
|
},
|
|
1143
1156
|
BBB_1: {
|
|
1144
|
-
BBBB_1:
|
|
1145
|
-
BBBB_2:
|
|
1146
|
-
BBBB_3:
|
|
1157
|
+
BBBB_1: R.BBBB_1,
|
|
1158
|
+
BBBB_2: R.BBBB_2,
|
|
1159
|
+
BBBB_3: R.BBBB_3
|
|
1147
1160
|
},
|
|
1148
1161
|
BBB_2: {
|
|
1149
|
-
BBBB_1:
|
|
1150
|
-
BBBB_2:
|
|
1151
|
-
BBBB_3:
|
|
1162
|
+
BBBB_1: R.BBBB_1,
|
|
1163
|
+
BBBB_2: R.BBBB_2,
|
|
1164
|
+
BBBB_3: R.BBBB_3
|
|
1152
1165
|
},
|
|
1153
1166
|
BBB_3: {
|
|
1154
|
-
BBBB_1:
|
|
1155
|
-
BBBB_2:
|
|
1156
|
-
BBBB_3:
|
|
1167
|
+
BBBB_1: R.BBBB_1,
|
|
1168
|
+
BBBB_2: R.BBBB_2,
|
|
1169
|
+
BBBB_3: R.BBBB_3
|
|
1157
1170
|
},
|
|
1158
1171
|
BB_1: {
|
|
1159
|
-
BBB_1:
|
|
1160
|
-
BBB_2:
|
|
1161
|
-
BBB_3:
|
|
1172
|
+
BBB_1: R.BBB_1,
|
|
1173
|
+
BBB_2: R.BBB_2,
|
|
1174
|
+
BBB_3: R.BBB_3
|
|
1162
1175
|
},
|
|
1163
1176
|
BB_2: {
|
|
1164
|
-
BBB_1:
|
|
1165
|
-
BBB_2:
|
|
1166
|
-
BBB_3:
|
|
1177
|
+
BBB_1: R.BBB_1,
|
|
1178
|
+
BBB_2: R.BBB_2,
|
|
1179
|
+
BBB_3: R.BBB_3
|
|
1167
1180
|
},
|
|
1168
1181
|
BB_3: {
|
|
1169
|
-
BBB_1:
|
|
1170
|
-
BBB_2:
|
|
1171
|
-
BBB_3:
|
|
1182
|
+
BBB_1: R.BBB_1,
|
|
1183
|
+
BBB_2: R.BBB_2,
|
|
1184
|
+
BBB_3: R.BBB_3
|
|
1172
1185
|
},
|
|
1173
1186
|
C: {
|
|
1174
|
-
CC_1:
|
|
1175
|
-
CC_2:
|
|
1176
|
-
CC_3:
|
|
1187
|
+
CC_1: R.CC_1,
|
|
1188
|
+
CC_2: R.CC_2,
|
|
1189
|
+
CC_3: R.CC_3
|
|
1177
1190
|
},
|
|
1178
1191
|
CCC_1: {
|
|
1179
|
-
CCCC_1:
|
|
1180
|
-
CCCC_2:
|
|
1181
|
-
CCCC_3:
|
|
1192
|
+
CCCC_1: R.CCCC_1,
|
|
1193
|
+
CCCC_2: R.CCCC_2,
|
|
1194
|
+
CCCC_3: R.CCCC_3
|
|
1182
1195
|
},
|
|
1183
1196
|
CCC_2: {
|
|
1184
|
-
CCCC_1:
|
|
1185
|
-
CCCC_2:
|
|
1186
|
-
CCCC_3:
|
|
1197
|
+
CCCC_1: R.CCCC_1,
|
|
1198
|
+
CCCC_2: R.CCCC_2,
|
|
1199
|
+
CCCC_3: R.CCCC_3
|
|
1187
1200
|
},
|
|
1188
1201
|
CCC_3: {
|
|
1189
|
-
CCCC_1:
|
|
1190
|
-
CCCC_2:
|
|
1191
|
-
CCCC_3:
|
|
1202
|
+
CCCC_1: R.CCCC_1,
|
|
1203
|
+
CCCC_2: R.CCCC_2,
|
|
1204
|
+
CCCC_3: R.CCCC_3
|
|
1192
1205
|
},
|
|
1193
1206
|
CC_1: {
|
|
1194
|
-
CCC_1:
|
|
1195
|
-
CCC_2:
|
|
1196
|
-
CCC_3:
|
|
1207
|
+
CCC_1: R.CCC_1,
|
|
1208
|
+
CCC_2: R.CCC_2,
|
|
1209
|
+
CCC_3: R.CCC_3
|
|
1197
1210
|
},
|
|
1198
1211
|
CC_2: {
|
|
1199
|
-
CCC_1:
|
|
1200
|
-
CCC_2:
|
|
1201
|
-
CCC_3:
|
|
1212
|
+
CCC_1: R.CCC_1,
|
|
1213
|
+
CCC_2: R.CCC_2,
|
|
1214
|
+
CCC_3: R.CCC_3
|
|
1202
1215
|
},
|
|
1203
1216
|
CC_3: {
|
|
1204
|
-
CCC_1:
|
|
1205
|
-
CCC_2:
|
|
1206
|
-
CCC_3:
|
|
1217
|
+
CCC_1: R.CCC_1,
|
|
1218
|
+
CCC_2: R.CCC_2,
|
|
1219
|
+
CCC_3: R.CCC_3
|
|
1207
1220
|
},
|
|
1208
1221
|
D: {
|
|
1209
|
-
DD_1:
|
|
1210
|
-
DD_2:
|
|
1211
|
-
DD_3:
|
|
1222
|
+
DD_1: R.DD_1,
|
|
1223
|
+
DD_2: R.DD_2,
|
|
1224
|
+
DD_3: R.DD_3
|
|
1212
1225
|
},
|
|
1213
|
-
DD_1: { DDD_1:
|
|
1226
|
+
DD_1: { DDD_1: R.DDD_1 },
|
|
1214
1227
|
DD_2: {
|
|
1215
|
-
DDD_2:
|
|
1216
|
-
DDD_3:
|
|
1228
|
+
DDD_2: R.DDD_2,
|
|
1229
|
+
DDD_3: R.DDD_3
|
|
1217
1230
|
},
|
|
1218
1231
|
Root: {
|
|
1219
|
-
A:
|
|
1220
|
-
B:
|
|
1221
|
-
C:
|
|
1222
|
-
D:
|
|
1232
|
+
A: R.A,
|
|
1233
|
+
B: R.B,
|
|
1234
|
+
C: R.C,
|
|
1235
|
+
D: R.D
|
|
1223
1236
|
}
|
|
1224
1237
|
}
|
|
1225
|
-
},
|
|
1238
|
+
}, B = {
|
|
1226
1239
|
A: {
|
|
1227
1240
|
tag: "A",
|
|
1228
1241
|
namespace: {
|
|
@@ -3415,7 +3428,7 @@ var T = {
|
|
|
3415
3428
|
}]]
|
|
3416
3429
|
}]
|
|
3417
3430
|
}
|
|
3418
|
-
},
|
|
3431
|
+
}, V = {
|
|
3419
3432
|
"{http://dialecte.dev/XML/DEFAULT}tCode": {
|
|
3420
3433
|
attributes: {
|
|
3421
3434
|
sequence: [],
|
|
@@ -3794,7 +3807,7 @@ var T = {
|
|
|
3794
3807
|
details: {}
|
|
3795
3808
|
}
|
|
3796
3809
|
}
|
|
3797
|
-
},
|
|
3810
|
+
}, H = { supportedFileExtensions: [".xml"] }, U = {
|
|
3798
3811
|
recordSchema: {
|
|
3799
3812
|
primaryKey: "id",
|
|
3800
3813
|
indexes: [
|
|
@@ -3809,25 +3822,25 @@ var T = {
|
|
|
3809
3822
|
name: "xmlElements",
|
|
3810
3823
|
schema: "id, tagName, [id+tagName], parent.id, parent.tagName, *children.id, *children.tagName"
|
|
3811
3824
|
} }
|
|
3812
|
-
},
|
|
3813
|
-
rootElementName:
|
|
3814
|
-
singletonElements:
|
|
3815
|
-
elements:
|
|
3816
|
-
namespaces:
|
|
3817
|
-
attributes:
|
|
3818
|
-
children:
|
|
3819
|
-
parents:
|
|
3820
|
-
descendants:
|
|
3821
|
-
ancestors:
|
|
3822
|
-
database:
|
|
3823
|
-
io:
|
|
3824
|
-
definition:
|
|
3825
|
-
types:
|
|
3825
|
+
}, W = {
|
|
3826
|
+
rootElementName: I,
|
|
3827
|
+
singletonElements: L,
|
|
3828
|
+
elements: ee,
|
|
3829
|
+
namespaces: A,
|
|
3830
|
+
attributes: z,
|
|
3831
|
+
children: te,
|
|
3832
|
+
parents: ne,
|
|
3833
|
+
descendants: P,
|
|
3834
|
+
ancestors: F,
|
|
3835
|
+
database: U,
|
|
3836
|
+
io: H,
|
|
3837
|
+
definition: B,
|
|
3838
|
+
types: V
|
|
3826
3839
|
};
|
|
3827
3840
|
//#endregion
|
|
3828
3841
|
//#region src/test/create-test-dialecte.ts
|
|
3829
|
-
async function
|
|
3830
|
-
let { sourceXml: t, targetXml: n, dialecteConfig: r =
|
|
3842
|
+
async function G(e) {
|
|
3843
|
+
let { sourceXml: t, targetXml: n, dialecteConfig: r = W, extensions: i, hooks: o, dev: s } = e, c = `test-${crypto.randomUUID()}`, l = await new a({
|
|
3831
3844
|
configs: { default: r },
|
|
3832
3845
|
defaultConfigKey: "default",
|
|
3833
3846
|
storage: { type: "local" },
|
|
@@ -3851,7 +3864,7 @@ async function H(e) {
|
|
|
3851
3864
|
target: f
|
|
3852
3865
|
};
|
|
3853
3866
|
}
|
|
3854
|
-
async function
|
|
3867
|
+
async function K(t) {
|
|
3855
3868
|
let { databaseName: n, dialecteConfig: a, documentId: s } = t, c = new o(n, { recordSchema: a.database.recordSchema });
|
|
3856
3869
|
return await c.open(), {
|
|
3857
3870
|
dialecteConfig: a,
|
|
@@ -3871,10 +3884,10 @@ async function U(t) {
|
|
|
3871
3884
|
}
|
|
3872
3885
|
//#endregion
|
|
3873
3886
|
//#region src/test/normalize-uuids.ts
|
|
3874
|
-
var
|
|
3875
|
-
function
|
|
3887
|
+
var q = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;
|
|
3888
|
+
function J(e) {
|
|
3876
3889
|
let t = /* @__PURE__ */ new Map();
|
|
3877
|
-
return e.replace(
|
|
3890
|
+
return e.replace(q, (e) => {
|
|
3878
3891
|
let n = t.get(e);
|
|
3879
3892
|
if (n) return n;
|
|
3880
3893
|
let r = `uuid-${t.size + 1}`;
|
|
@@ -3883,18 +3896,18 @@ function G(e) {
|
|
|
3883
3896
|
}
|
|
3884
3897
|
//#endregion
|
|
3885
3898
|
//#region src/test/run-test-cases.ts
|
|
3886
|
-
var
|
|
3887
|
-
function
|
|
3899
|
+
var Y = crypto.randomUUID.bind(crypto);
|
|
3900
|
+
function X() {
|
|
3888
3901
|
let e = 0;
|
|
3889
3902
|
return function() {
|
|
3890
3903
|
return `${e++}`;
|
|
3891
3904
|
};
|
|
3892
3905
|
}
|
|
3893
|
-
function
|
|
3894
|
-
let { testCases: t, act: n, extensions: r, hooks: i, dialecteConfig: a =
|
|
3895
|
-
for (let [e, c] of Object.entries(t)) (c.only ?
|
|
3896
|
-
crypto.randomUUID =
|
|
3897
|
-
let { project: e, source: t, target: l } = await
|
|
3906
|
+
function Z(e) {
|
|
3907
|
+
let { testCases: t, act: n, extensions: r, hooks: i, dialecteConfig: a = W } = e, { assertExpectedElementQueries: o, assertUnexpectedElementQueries: s } = C({ namespaces: a.namespaces });
|
|
3908
|
+
for (let [e, c] of Object.entries(t)) (c.only ? _.only : _)(e, async () => {
|
|
3909
|
+
crypto.randomUUID = Y;
|
|
3910
|
+
let { project: e, source: t, target: l } = await G({
|
|
3898
3911
|
sourceXml: c.sourceXml,
|
|
3899
3912
|
targetXml: c.targetXml,
|
|
3900
3913
|
dialecteConfig: a,
|
|
@@ -3902,7 +3915,7 @@ function J(e) {
|
|
|
3902
3915
|
hooks: i
|
|
3903
3916
|
});
|
|
3904
3917
|
try {
|
|
3905
|
-
crypto.randomUUID =
|
|
3918
|
+
crypto.randomUUID = X();
|
|
3906
3919
|
let r = await n({
|
|
3907
3920
|
testCase: c,
|
|
3908
3921
|
project: e,
|
|
@@ -3923,15 +3936,15 @@ function J(e) {
|
|
|
3923
3936
|
queries: c.unexpectedQueries
|
|
3924
3937
|
});
|
|
3925
3938
|
} finally {
|
|
3926
|
-
crypto.randomUUID =
|
|
3939
|
+
crypto.randomUUID = Y, await e.destroy();
|
|
3927
3940
|
}
|
|
3928
3941
|
});
|
|
3929
3942
|
}
|
|
3930
|
-
function
|
|
3931
|
-
let { testCases: t, act: n, extensions: r, hooks: i, dialecteConfig: a =
|
|
3932
|
-
for (let [e, o] of Object.entries(t)) (o.only ?
|
|
3933
|
-
crypto.randomUUID =
|
|
3934
|
-
let { project: e, source: t, target: s } = await
|
|
3943
|
+
function re(e) {
|
|
3944
|
+
let { testCases: t, act: n, extensions: r, hooks: i, dialecteConfig: a = W } = e;
|
|
3945
|
+
for (let [e, o] of Object.entries(t)) (o.only ? _.only : _)(e, async () => {
|
|
3946
|
+
crypto.randomUUID = Y;
|
|
3947
|
+
let { project: e, source: t, target: s } = await G({
|
|
3935
3948
|
sourceXml: o.sourceXml,
|
|
3936
3949
|
targetXml: o.targetXml,
|
|
3937
3950
|
dialecteConfig: a,
|
|
@@ -3939,56 +3952,56 @@ function Y(e) {
|
|
|
3939
3952
|
hooks: i
|
|
3940
3953
|
});
|
|
3941
3954
|
try {
|
|
3942
|
-
crypto.randomUUID =
|
|
3955
|
+
crypto.randomUUID = X(), await n({
|
|
3943
3956
|
testCase: o,
|
|
3944
3957
|
project: e,
|
|
3945
3958
|
source: t.document,
|
|
3946
3959
|
target: s?.document
|
|
3947
3960
|
});
|
|
3948
3961
|
} finally {
|
|
3949
|
-
crypto.randomUUID =
|
|
3962
|
+
crypto.randomUUID = Y, await e.destroy();
|
|
3950
3963
|
}
|
|
3951
3964
|
});
|
|
3952
3965
|
}
|
|
3953
|
-
function
|
|
3954
|
-
for (let [n, r] of Object.entries(e)) (r.only ?
|
|
3966
|
+
function ie(e, t) {
|
|
3967
|
+
for (let [n, r] of Object.entries(e)) (r.only ? _.only : _)(n, () => t(r));
|
|
3955
3968
|
}
|
|
3956
|
-
var
|
|
3969
|
+
var ae = Q({ dialecteConfig: W });
|
|
3957
3970
|
function Q(e) {
|
|
3958
3971
|
let { dialecteConfig: t, hooks: n, extensions: r } = e;
|
|
3959
3972
|
return {
|
|
3960
|
-
withExport: (e) =>
|
|
3973
|
+
withExport: (e) => Z({
|
|
3961
3974
|
dialecteConfig: t,
|
|
3962
3975
|
extensions: r,
|
|
3963
3976
|
hooks: n,
|
|
3964
3977
|
...e
|
|
3965
3978
|
}),
|
|
3966
|
-
withoutExport: (e) =>
|
|
3979
|
+
withoutExport: (e) => re({
|
|
3967
3980
|
dialecteConfig: t,
|
|
3968
3981
|
extensions: r,
|
|
3969
3982
|
hooks: n,
|
|
3970
3983
|
...e
|
|
3971
3984
|
}),
|
|
3972
|
-
generic:
|
|
3985
|
+
generic: ie
|
|
3973
3986
|
};
|
|
3974
3987
|
}
|
|
3975
3988
|
//#endregion
|
|
3976
3989
|
//#region src/test/test-record.ts
|
|
3977
3990
|
function $(e) {
|
|
3978
3991
|
function t(t) {
|
|
3979
|
-
let { record: n, type: r = "raw" } = t, i =
|
|
3992
|
+
let { record: n, type: r = "raw" } = t, i = p({
|
|
3980
3993
|
record: n,
|
|
3981
3994
|
dialecteConfig: e
|
|
3982
3995
|
});
|
|
3983
3996
|
switch (r) {
|
|
3984
3997
|
case "raw": return i;
|
|
3985
|
-
case "tracked": return
|
|
3986
|
-
case "tree": return
|
|
3998
|
+
case "tracked": return m({ record: i });
|
|
3999
|
+
case "tree": return h({ record: i });
|
|
3987
4000
|
default: throw Error(`Unsupported record type: ${r}`);
|
|
3988
4001
|
}
|
|
3989
4002
|
}
|
|
3990
4003
|
return t;
|
|
3991
4004
|
}
|
|
3992
|
-
var
|
|
4005
|
+
var oe = $(W);
|
|
3993
4006
|
//#endregion
|
|
3994
|
-
export {
|
|
4007
|
+
export { U as DATABASE_CONFIG, A as DIALECTE_TEST_NAMESPACES, H as IO_CONFIG, W as TEST_DIALECTE_CONFIG, j as XMLNS_DEFAULT_NAMESPACE, M as XMLNS_DEV_NAMESPACE, N as XMLNS_EXT_NAMESPACE, w as assertExpectedElementQueries, E as assertUnexpectedElementQueries, X as createMockRandomUUID, K as createTestContext, G as createTestProject, oe as createTestRecord, $ as createTestRecordFactory, Q as createTestRunner, C as createXmlAssertions, y as createXmlSchemaAssertions, J as normalizeUuids, ae as runTestCases, b as splitXpathIntoSteps };
|