@dialecte/scl 0.3.17 → 0.4.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/{hooks-BBGXNK0x.js → hooks-2XoiU2Tq.js} +16408 -4983
- package/dist/v2019C1/config/dialecte.config.d.ts +11911 -2332
- package/dist/v2019C1/config/dialecte.config.d.ts.map +1 -1
- package/dist/v2019C1/config/hydrated.types.d.ts +3 -2
- package/dist/v2019C1/config/hydrated.types.d.ts.map +1 -1
- package/dist/v2019C1/definition/constants.generated.d.ts +1126 -211
- package/dist/v2019C1/definition/constants.generated.d.ts.map +1 -1
- package/dist/v2019C1/definition/definition.generated.d.ts +10804 -2134
- package/dist/v2019C1/definition/definition.generated.d.ts.map +1 -1
- package/dist/v2019C1/definition/types.generated.d.ts +920 -1
- package/dist/v2019C1/definition/types.generated.d.ts.map +1 -1
- package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts +4 -3
- package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/constraints/index.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/constraints/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instance/find-instance.d.ts.map +1 -1
- package/dist/v2019C1/extensions/presentation/query/extract-element-title.d.ts +1 -1
- package/dist/v2019C1/extensions/presentation/query/extract-element-title.d.ts.map +1 -1
- package/dist/v2019C1/index.js +1 -1
- package/dist/v2019C1/test/assert-valid-scl-xml.d.ts +2 -23
- package/dist/v2019C1/test/assert-valid-scl-xml.d.ts.map +1 -1
- package/dist/v2019C1/test.js +20 -102
- package/package.json +4 -4
- package/dist/v2019C1/test/assert-valid-scl-xml.types.d.ts +0 -45
- package/dist/v2019C1/test/assert-valid-scl-xml.types.d.ts.map +0 -1
package/dist/v2019C1/test.js
CHANGED
|
@@ -1,120 +1,38 @@
|
|
|
1
|
-
import { F as e, M as t, P as n, n as r, r as i, t as a } from "../hooks-
|
|
1
|
+
import { F as e, M as t, P as n, n as r, r as i, t as a } from "../hooks-2XoiU2Tq.js";
|
|
2
2
|
import { CUSTOM_RECORD_ID_ATTRIBUTE as o, CUSTOM_RECORD_ID_ATTRIBUTE_NAME as s, XMLNS_XSI_NAMESPACE as c } from "@dialecte/core/helpers";
|
|
3
|
-
import { XMLNS_DEV_NAMESPACE as l, createTestProject as u, createTestRecordFactory as d, createTestRunner as f, createXmlAssertions as p } from "@dialecte/core/test";
|
|
3
|
+
import { XMLNS_DEV_NAMESPACE as l, createTestProject as u, createTestRecordFactory as d, createTestRunner as f, createXmlAssertions as p, createXmlSchemaAssertions as m } from "@dialecte/core/test";
|
|
4
4
|
//#region src/v2019C1/test/assert-valid-scl-xml.ts
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return ((e ? m[e]?.children?.details?.[t]?.namespace : void 0) ?? m[t]?.namespace)?.uri;
|
|
11
|
-
}
|
|
12
|
-
function v(e, t) {
|
|
13
|
-
let n = e.children;
|
|
14
|
-
return n ? n.any === !0 || n.sequence?.includes(t) ? !0 : n.details ? t in n.details : !1 : !1;
|
|
15
|
-
}
|
|
16
|
-
function y(e) {
|
|
17
|
-
return new Set([...e.attributes?.sequence ?? [], ...Object.keys(e.attributes?.details ?? {})]);
|
|
18
|
-
}
|
|
19
|
-
function b(e) {
|
|
20
|
-
let { element: t, definition: n, requireComplete: r } = e;
|
|
21
|
-
if (!n.attributes) return [];
|
|
22
|
-
let i = y(n), a = Array.from(t.attributes).filter((e) => e.namespaceURI === null && !i.has(e.localName)).map((e) => `[attribute] <${t.localName}> has unknown attribute '${e.localName}'`);
|
|
23
|
-
if (!r) return a;
|
|
24
|
-
let o = Object.entries(n.attributes.details ?? {}).filter(([e, n]) => n?.required && !t.hasAttribute(e)).map(([e]) => `[required] <${t.localName}> is missing required attribute '${e}'`);
|
|
25
|
-
return [...a, ...o];
|
|
26
|
-
}
|
|
27
|
-
function x(e) {
|
|
28
|
-
let { element: t, parentLocalName: n, requireComplete: r } = e, i = Array.from(t.children);
|
|
29
|
-
if (g(t)) return i.flatMap((e) => x({
|
|
30
|
-
element: e,
|
|
31
|
-
parentLocalName: void 0,
|
|
32
|
-
requireComplete: r
|
|
33
|
-
}));
|
|
34
|
-
let a = t.localName, o = [], s = _(n, a);
|
|
35
|
-
if (s !== void 0 && t.namespaceURI !== s) {
|
|
36
|
-
let e = n ? ` under <${n}>` : "";
|
|
37
|
-
o.push(`[namespace] <${t.tagName}>${e}: is in ${t.namespaceURI ?? "(no namespace)"}, schema declares ${s}`);
|
|
38
|
-
}
|
|
39
|
-
let c = n ? m[n] : void 0;
|
|
40
|
-
c && !v(c, a) && o.push(`[containment] <${a}> is not a valid child of <${n}>`);
|
|
41
|
-
let l = m[a], u = l ? b({
|
|
42
|
-
element: t,
|
|
43
|
-
definition: l,
|
|
44
|
-
requireComplete: r
|
|
45
|
-
}) : [], d = i.flatMap((e) => x({
|
|
46
|
-
element: e,
|
|
47
|
-
parentLocalName: a,
|
|
48
|
-
requireComplete: r
|
|
49
|
-
}));
|
|
50
|
-
return [
|
|
51
|
-
...o,
|
|
52
|
-
...u,
|
|
53
|
-
...d
|
|
54
|
-
];
|
|
55
|
-
}
|
|
56
|
-
function S(e) {
|
|
57
|
-
let { xml: t, label: n, requireComplete: r } = e;
|
|
58
|
-
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`;
|
|
59
|
-
let i = new DOMParser().parseFromString(t, "application/xml"), a = i.querySelector("parsererror");
|
|
60
|
-
if (a) return `${n}: malformed XML — ${a.textContent?.trim()}`;
|
|
61
|
-
if (!i.documentElement) return;
|
|
62
|
-
let o = x({
|
|
63
|
-
element: i.documentElement,
|
|
64
|
-
parentLocalName: void 0,
|
|
65
|
-
requireComplete: r
|
|
66
|
-
});
|
|
67
|
-
return o.length > 0 ? `${n}: not valid SCL:\n ${o.join("\n ")}` : void 0;
|
|
68
|
-
}
|
|
69
|
-
function C(e, t = "test XML", n = {}) {
|
|
70
|
-
let r = S({
|
|
71
|
-
xml: e,
|
|
72
|
-
label: t,
|
|
73
|
-
requireComplete: n.requireComplete ?? !0
|
|
74
|
-
});
|
|
75
|
-
if (r) throw Error(r);
|
|
76
|
-
}
|
|
77
|
-
function w(e) {
|
|
78
|
-
let { testCases: t } = e, n = Object.entries(t).flatMap(([e, t]) => [S({
|
|
79
|
-
xml: t.sourceXml,
|
|
80
|
-
label: `${e} › sourceXml`,
|
|
81
|
-
requireComplete: !1
|
|
82
|
-
}), t.targetXml ? S({
|
|
83
|
-
xml: t.targetXml,
|
|
84
|
-
label: `${e} › targetXml`,
|
|
85
|
-
requireComplete: !1
|
|
86
|
-
}) : void 0].filter((e) => e !== void 0));
|
|
87
|
-
if (n.length > 0) throw Error(n.join("\n"));
|
|
88
|
-
}
|
|
89
|
-
//#endregion
|
|
90
|
-
//#region src/v2019C1/test/hydrated-test.ts
|
|
91
|
-
var T = {
|
|
5
|
+
var { assertValidXml: h, assertValidXmlTestCases: g } = m({
|
|
6
|
+
definition: e,
|
|
7
|
+
namespaces: n,
|
|
8
|
+
schemaName: "SCL"
|
|
9
|
+
}), _ = h, v = g, y = {
|
|
92
10
|
...r(),
|
|
93
11
|
...a
|
|
94
|
-
},
|
|
12
|
+
}, b = `xmlns="${t.namespaces.default.uri}"`, x = `xmlns:${t.namespaces.v2019C1.prefix}="${t.namespaces.v2019C1.uri}"`, S = `${b} ${x} ${l} ${c}`, C = { base: i }, w = f({
|
|
95
13
|
dialecteConfig: t,
|
|
96
|
-
extensions:
|
|
97
|
-
hooks:
|
|
98
|
-
}),
|
|
99
|
-
...
|
|
14
|
+
extensions: C,
|
|
15
|
+
hooks: y
|
|
16
|
+
}), T = {
|
|
17
|
+
...w,
|
|
100
18
|
withExport(e) {
|
|
101
|
-
|
|
19
|
+
v({ testCases: e.testCases }), w.withExport(e);
|
|
102
20
|
},
|
|
103
21
|
withoutExport(e) {
|
|
104
|
-
|
|
22
|
+
v({ testCases: e.testCases }), w.withoutExport(e);
|
|
105
23
|
}
|
|
106
24
|
};
|
|
107
|
-
async function
|
|
25
|
+
async function E(e) {
|
|
108
26
|
let { sourceXml: n, targetXml: r, dev: i } = e;
|
|
109
|
-
return
|
|
27
|
+
return _(n, "sourceXml", { requireComplete: !1 }), r && _(r, "targetXml", { requireComplete: !1 }), u({
|
|
110
28
|
sourceXml: n,
|
|
111
29
|
targetXml: r,
|
|
112
30
|
dialecteConfig: t,
|
|
113
|
-
extensions:
|
|
114
|
-
hooks:
|
|
31
|
+
extensions: C,
|
|
32
|
+
hooks: y,
|
|
115
33
|
dev: i
|
|
116
34
|
});
|
|
117
35
|
}
|
|
118
|
-
var
|
|
36
|
+
var D = d(t), { assertExpectedElementQueries: O, assertUnexpectedElementQueries: k } = p({ namespaces: t.namespaces });
|
|
119
37
|
//#endregion
|
|
120
|
-
export {
|
|
38
|
+
export { S as ALL_XMLNS_NAMESPACES, o as CUSTOM_RECORD_ID_ATTRIBUTE, s as CUSTOM_RECORD_ID_ATTRIBUTE_NAME, x as XMLNS_SCL_6_100_NAMESPACE, b as XMLNS_SCL_NAMESPACE, O as assertExpectedElementQueries, k as assertUnexpectedElementQueries, _ as assertValidSclXml, E as createSclTestProject, D as createSclTestRecord, T as runSclTestCases };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dialecte/scl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Dialecte - SCL (Substation Configuration Language) sdk",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test": "vitest",
|
|
39
39
|
"//====== CHECK ======//": "",
|
|
40
40
|
"check": "run-p type-check type-check:test lint:check format:check",
|
|
41
|
-
"type-check": "tsc --noEmit",
|
|
41
|
+
"type-check": "tsc -p tsconfig.build.json --noEmit",
|
|
42
42
|
"type-check:test": "tsc -p tsconfig.vitest.json --noEmit",
|
|
43
43
|
"lint:check": "oxlint",
|
|
44
44
|
"lint:fix": "oxlint . --fix -D correctness --ignore-path .gitignore",
|
|
@@ -56,10 +56,10 @@
|
|
|
56
56
|
"prepare": "husky"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@dialecte/core": "0.
|
|
59
|
+
"@dialecte/core": "0.5.1"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@dialecte/cli": "0.0.
|
|
62
|
+
"@dialecte/cli": "0.0.3",
|
|
63
63
|
"@tsconfig/node24": "^24.0.4",
|
|
64
64
|
"@types/node": "^24.12.4",
|
|
65
65
|
"@typescript/native": "npm:typescript@^7.0.2",
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export type SchemaNamespace = {
|
|
2
|
-
uri: string;
|
|
3
|
-
};
|
|
4
|
-
/** The slice of a generated element definition the fixture validator reads. */
|
|
5
|
-
export type SchemaElementDefinition = {
|
|
6
|
-
namespace?: SchemaNamespace;
|
|
7
|
-
attributes?: {
|
|
8
|
-
sequence?: readonly string[];
|
|
9
|
-
details?: Record<string, {
|
|
10
|
-
required?: boolean;
|
|
11
|
-
} | undefined>;
|
|
12
|
-
};
|
|
13
|
-
children?: {
|
|
14
|
-
sequence?: readonly string[];
|
|
15
|
-
any?: boolean;
|
|
16
|
-
details?: Record<string, {
|
|
17
|
-
namespace?: SchemaNamespace;
|
|
18
|
-
} | undefined>;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
export type AssertValidSclXmlOptions = {
|
|
22
|
-
requireComplete?: boolean;
|
|
23
|
-
};
|
|
24
|
-
export type DescribeInvalidSclXmlParams = {
|
|
25
|
-
xml: string;
|
|
26
|
-
label: string;
|
|
27
|
-
requireComplete: boolean;
|
|
28
|
-
};
|
|
29
|
-
export type CollectElementViolationsParams = {
|
|
30
|
-
element: Element;
|
|
31
|
-
parentLocalName: string | undefined;
|
|
32
|
-
requireComplete: boolean;
|
|
33
|
-
};
|
|
34
|
-
export type CollectAttributeViolationsParams = {
|
|
35
|
-
element: Element;
|
|
36
|
-
definition: SchemaElementDefinition;
|
|
37
|
-
requireComplete: boolean;
|
|
38
|
-
};
|
|
39
|
-
export type AssertValidSclTestCasesParams = {
|
|
40
|
-
testCases: Record<string, {
|
|
41
|
-
sourceXml: string;
|
|
42
|
-
targetXml?: string;
|
|
43
|
-
}>;
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=assert-valid-scl-xml.types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assert-valid-scl-xml.types.d.ts","sourceRoot":"","sources":["../../../src/v2019C1/test/assert-valid-scl-xml.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7C,+EAA+E;AAC/E,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,UAAU,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,SAAS,CAAC,CAAA;KAC5D,CAAA;IACD,QAAQ,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,GAAG,CAAC,EAAE,OAAO,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,SAAS,CAAC,EAAE,eAAe,CAAA;SAAE,GAAG,SAAS,CAAC,CAAA;KACrE,CAAA;CACD,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEpE,MAAM,MAAM,2BAA2B,GAAG;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,eAAe,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,uBAAuB,CAAA;IACnC,eAAe,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpE,CAAA"}
|