@dialecte/scl 0.3.14 → 0.3.16
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-By65uB-0.js → hooks-BBGXNK0x.js} +2035 -1250
- package/dist/v2019C1/config/dialecte.config.d.ts +2 -2
- package/dist/v2019C1/config/dialecte.config.d.ts.map +1 -1
- package/dist/v2019C1/constants/index.d.ts +3 -0
- package/dist/v2019C1/constants/index.d.ts.map +1 -1
- package/dist/v2019C1/constants/naming.d.ts +3 -0
- package/dist/v2019C1/constants/naming.d.ts.map +1 -0
- package/dist/v2019C1/constants/topology-tags.d.ts +22 -0
- package/dist/v2019C1/constants/topology-tags.d.ts.map +1 -0
- package/dist/v2019C1/constants/topology-tags.types.d.ts +6 -0
- package/dist/v2019C1/constants/topology-tags.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/clean-up/transaction/orphan-lnode-bindings.d.ts +7 -2
- package/dist/v2019C1/extensions/clean-up/transaction/orphan-lnode-bindings.d.ts.map +1 -1
- package/dist/v2019C1/extensions/identity/index.d.ts +2 -0
- package/dist/v2019C1/extensions/identity/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/identity/query/index.d.ts +3 -0
- package/dist/v2019C1/extensions/identity/query/index.d.ts.map +1 -0
- package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts +18 -0
- package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts.map +1 -0
- package/dist/v2019C1/extensions/identity/query/resolve-identity.types.d.ts +19 -0
- package/dist/v2019C1/extensions/identity/query/resolve-identity.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/identity/transaction/restore-cloned-uuids.d.ts +8 -10
- package/dist/v2019C1/extensions/identity/transaction/restore-cloned-uuids.d.ts.map +1 -1
- package/dist/v2019C1/extensions/identity/transaction/write-identity.d.ts +3 -0
- package/dist/v2019C1/extensions/identity/transaction/write-identity.d.ts.map +1 -1
- package/dist/v2019C1/extensions/identity/transaction/write-identity.types.d.ts +1 -1
- package/dist/v2019C1/extensions/identity/transaction/write-identity.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/index.d.ts +1 -0
- package/dist/v2019C1/extensions/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/apply/apply.d.ts +2 -2
- package/dist/v2019C1/extensions/lifecycle/apply/apply.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/apply/apply.types.d.ts +4 -0
- package/dist/v2019C1/extensions/lifecycle/apply/apply.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/contract.types.d.ts +20 -1
- package/dist/v2019C1/extensions/lifecycle/contract.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/cross-cutting/finalize-cloned-identity.d.ts +24 -0
- package/dist/v2019C1/extensions/lifecycle/cross-cutting/finalize-cloned-identity.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/cross-cutting/index.d.ts +1 -0
- package/dist/v2019C1/extensions/lifecycle/cross-cutting/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/correlate.d.ts +30 -0
- package/dist/v2019C1/extensions/lifecycle/engine/correlate.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/engine/decide.d.ts +9 -2
- package/dist/v2019C1/extensions/lifecycle/engine/decide.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/diff.d.ts +7 -1
- package/dist/v2019C1/extensions/lifecycle/engine/diff.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/diff.types.d.ts +9 -1
- package/dist/v2019C1/extensions/lifecycle/engine/diff.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/group.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/match-child.d.ts +31 -0
- package/dist/v2019C1/extensions/lifecycle/engine/match-child.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/engine/match-key.d.ts +26 -0
- package/dist/v2019C1/extensions/lifecycle/engine/match-key.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/engine/reconcile.d.ts +8 -2
- package/dist/v2019C1/extensions/lifecycle/engine/reconcile.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/engine/reference-match.d.ts +25 -0
- package/dist/v2019C1/extensions/lifecycle/engine/reference-match.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/ensure-substation-structure.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/index.d.ts +1 -0
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/post-extraction-cleanup.d.ts +3 -3
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/ssd.d.ts +22 -0
- package/dist/v2019C1/extensions/lifecycle/extract/transaction/ssd.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/index.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/instance/find-instance.d.ts +33 -9
- package/dist/v2019C1/extensions/lifecycle/instance/find-instance.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instance/index.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/instance/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.types.d.ts +6 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.types.d.ts +6 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.types.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/index.d.ts +2 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.d.ts +19 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.types.d.ts +25 -0
- package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/omit-filters.d.ts +6 -0
- package/dist/v2019C1/extensions/lifecycle/layers/omit-filters.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.d.ts +30 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.types.d.ts +14 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.d.ts +25 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.types.d.ts +22 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/index.d.ts +8 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/index.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/reconcile-topology-frame.d.ts +29 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/reconcile-topology-frame.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/root-selection.d.ts +14 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/root-selection.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.d.ts +15 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.types.d.ts +8 -0
- package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.types.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/report/presentation-scope.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/index.d.ts +1 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-asd.d.ts +1 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/report-asd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-fsd.d.ts +2 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-fsd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-function-satellites.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-function.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/report-ssd.d.ts +22 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/report-ssd.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/report-topology-frame.d.ts +23 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/report-topology-frame.d.ts.map +1 -0
- package/dist/v2019C1/extensions/lifecycle/report/query/satellite-companions.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/query/satellite-companions.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/report.d.ts +1 -1
- package/dist/v2019C1/extensions/lifecycle/report/report.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/scenario.d.ts +1 -2
- package/dist/v2019C1/extensions/lifecycle/scenario.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/transplant/transaction/primitives/merge-children-into.d.ts +6 -1
- package/dist/v2019C1/extensions/lifecycle/transplant/transaction/primitives/merge-children-into.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/asd.d.ts +3 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/asd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/cross-cutting-satellites.d.ts +8 -3
- package/dist/v2019C1/extensions/lifecycle/update/transaction/cross-cutting-satellites.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/fsd.d.ts +3 -2
- package/dist/v2019C1/extensions/lifecycle/update/transaction/fsd.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/function-satellites.d.ts +8 -2
- package/dist/v2019C1/extensions/lifecycle/update/transaction/function-satellites.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/index.d.ts +1 -0
- package/dist/v2019C1/extensions/lifecycle/update/transaction/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/satellite-reconcile.d.ts +8 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/satellite-reconcile.d.ts.map +1 -1
- package/dist/v2019C1/extensions/lifecycle/update/transaction/ssd.d.ts +36 -0
- package/dist/v2019C1/extensions/lifecycle/update/transaction/ssd.d.ts.map +1 -0
- package/dist/v2019C1/extensions/reference/transaction/index.d.ts +1 -1
- package/dist/v2019C1/extensions/reference/transaction/index.d.ts.map +1 -1
- package/dist/v2019C1/extensions/reference/transaction/write-provenance.d.ts +9 -9
- package/dist/v2019C1/extensions/reference/transaction/write-provenance.d.ts.map +1 -1
- package/dist/v2019C1/extensions/reference/transaction/write-provenance.types.d.ts +22 -7
- package/dist/v2019C1/extensions/reference/transaction/write-provenance.types.d.ts.map +1 -1
- package/dist/v2019C1/hooks/after-standardized-record/uuid-attribute.d.ts.map +1 -1
- package/dist/v2019C1/hooks/io/io-hooks.d.ts +2 -2
- package/dist/v2019C1/index.js +9 -9
- package/dist/v2019C1/test/assert-valid-scl-xml.d.ts +18 -0
- package/dist/v2019C1/test/assert-valid-scl-xml.d.ts.map +1 -0
- package/dist/v2019C1/test/hydrated-test.d.ts +9 -1
- package/dist/v2019C1/test/hydrated-test.d.ts.map +1 -1
- package/dist/v2019C1/test.js +62 -18
- package/package.json +4 -2
|
@@ -2,17 +2,17 @@ import { WriteProvenanceParams } from './write-provenance.types';
|
|
|
2
2
|
import { Config } from '../../../config';
|
|
3
3
|
import type * as Core from '@dialecte/core';
|
|
4
4
|
/**
|
|
5
|
-
* Writes
|
|
6
|
-
* `
|
|
7
|
-
* template file the instance was created from.
|
|
5
|
+
* Writes an instantiation/import provenance link: an `SclFileReference` pointing back at the source
|
|
6
|
+
* file, sourced from the source `Header` (`version` / `revision` / `fileUuid`) and store (`fileName`).
|
|
8
7
|
*
|
|
9
|
-
* The
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* The anchor is chosen by `target`:
|
|
9
|
+
* - `function` / `application` — a fresh `FunctionSclRef` / `ApplicationSclRef` on the cloned root
|
|
10
|
+
* (FSD / ASD). Always **creates** a new ref (a root may already carry composition SclRefs; each
|
|
11
|
+
* instantiation is a distinct link).
|
|
12
|
+
* - `document` — appended to the target `Header > SourceFiles` (SSD / SCD): a whole-file source, with
|
|
13
|
+
* no per-root wrapper.
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
* carry composition-provenance SclRefs, and each instantiation is a distinct link.
|
|
15
|
+
* `version` / `revision` fall back to empty strings when the (optional) Header attributes are absent.
|
|
16
16
|
*/
|
|
17
17
|
export declare function writeProvenance(tx: Core.Transaction<Config>, params: WriteProvenanceParams): Promise<void>;
|
|
18
18
|
//# sourceMappingURL=write-provenance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-provenance.d.ts","sourceRoot":"","sources":["../../../../../src/v2019C1/extensions/reference/transaction/write-provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"write-provenance.d.ts","sourceRoot":"","sources":["../../../../../src/v2019C1/extensions/reference/transaction/write-provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,KAAK,EAAE,MAAM,EAAO,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAQ3C;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACpC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
import { Scl, Config } from '../../../config';
|
|
2
2
|
import type * as Core from '@dialecte/core';
|
|
3
|
-
/**
|
|
4
|
-
export type
|
|
3
|
+
/** SCL file type recorded on an `SclFileReference` (the Header `fileType` domain). */
|
|
4
|
+
export type SclFileType = 'FSD' | 'ASD' | 'SSD' | 'ISD' | 'ICD' | 'IID' | 'SCD' | 'SED' | 'CID';
|
|
5
|
+
/**
|
|
6
|
+
* Where a provenance link is anchored.
|
|
7
|
+
* - `function` / `application` — a per-root `FunctionSclRef` / `ApplicationSclRef` on the cloned
|
|
8
|
+
* root (FSD / ASD); the `fileType` is implied by the anchor.
|
|
9
|
+
* - `document` — a `Header > SourceFiles > SclFileReference` recording the whole source file for the
|
|
10
|
+
* document (SSD / SCD / …), appended to the target `Header` (no per-root wrapper exists).
|
|
11
|
+
*/
|
|
12
|
+
export type ProvenanceTarget = {
|
|
13
|
+
anchor: 'function';
|
|
14
|
+
root: Scl.Ref<'Function'> | Scl.Ref<'SubFunction'>;
|
|
15
|
+
} | {
|
|
16
|
+
anchor: 'application';
|
|
17
|
+
root: Scl.Ref<'Application'>;
|
|
18
|
+
} | {
|
|
19
|
+
anchor: 'document';
|
|
20
|
+
fileType: SclFileType;
|
|
21
|
+
};
|
|
5
22
|
export type WriteProvenanceParams = {
|
|
6
|
-
/** Query over the
|
|
23
|
+
/** Query over the source document the provenance is sourced from (Header + file name). */
|
|
7
24
|
sourceQuery: Core.Query<Config>;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
/** Template kind; selects `FunctionSclRef` (FSD) or `ApplicationSclRef` (ASD). */
|
|
11
|
-
fileType: ProvenanceFileType;
|
|
25
|
+
/** Where + how to anchor the link. */
|
|
26
|
+
target: ProvenanceTarget;
|
|
12
27
|
};
|
|
13
28
|
//# sourceMappingURL=write-provenance.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-provenance.types.d.ts","sourceRoot":"","sources":["../../../../../src/v2019C1/extensions/reference/transaction/write-provenance.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAE3C,
|
|
1
|
+
{"version":3,"file":"write-provenance.types.d.ts","sourceRoot":"","sources":["../../../../../src/v2019C1/extensions/reference/transaction/write-provenance.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAE3C,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAE/F;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;CAAE,GAC1E;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAA;AAEhD,MAAM,MAAM,qBAAqB,GAAG;IACnC,0FAA0F;IAC1F,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,sCAAsC;IACtC,MAAM,EAAE,gBAAgB,CAAA;CACxB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uuid-attribute.d.ts","sourceRoot":"","sources":["../../../../src/v2019C1/hooks/after-standardized-record/uuid-attribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uuid-attribute.d.ts","sourceRoot":"","sources":["../../../../src/v2019C1/hooks/after-standardized-record/uuid-attribute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,SAAS,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE;IACnF,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;CACrC,GAAG,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CA6BhC"}
|
|
@@ -3,7 +3,7 @@ import { IOHooks } from '@dialecte/core';
|
|
|
3
3
|
* Creates SCL IO hooks for UUID reference resolution.
|
|
4
4
|
* The import pipeline is two-pass:
|
|
5
5
|
*
|
|
6
|
-
* **
|
|
6
|
+
* **Pass 1 — `beforeImportRecord`** (called once per record, in document order):
|
|
7
7
|
*
|
|
8
8
|
* Records arrive already standardized, so any `uuid` enforced by
|
|
9
9
|
* `afterStandardizedRecord` is already present — no need to ensure it here.
|
|
@@ -24,7 +24,7 @@ import { IOHooks } from '@dialecte/core';
|
|
|
24
24
|
* lookupKey: "S1/Bay1/VoltLevel1/Fn1" }]
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
|
-
* **
|
|
27
|
+
* **Pass 2 — `afterImport`** (called once, after all records):
|
|
28
28
|
*
|
|
29
29
|
* Each pending resolution is looked up in `pathIndex`:
|
|
30
30
|
* ```
|
package/dist/v2019C1/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { A as e, C as t, D as n, E as r,
|
|
2
|
-
import { Project as
|
|
1
|
+
import { A as e, C as t, D as n, E as r, M as i, N as a, O as o, P as s, S as c, T as l, _ as u, a as d, b as f, c as p, d as m, f as h, g, h as _, i as v, j as y, k as b, l as x, m as S, n as C, o as w, p as T, r as E, s as D, t as O, u as k, v as A, w as j, x as M, y as N } from "../hooks-BBGXNK0x.js";
|
|
2
|
+
import { Project as P } from "@dialecte/core";
|
|
3
3
|
//#region src/v2019C1/extensions/lifecycle/validate/template-uuid-check.info.ts
|
|
4
|
-
var
|
|
4
|
+
var F = {
|
|
5
5
|
"cross-type-template-uuid": {
|
|
6
6
|
title: "Placeholder templateUuid reused across element types",
|
|
7
7
|
description: "One templateUuid is carried by elements of several different types, so it cannot identify a single template element — it is an authoring placeholder, not real lineage.",
|
|
@@ -20,21 +20,21 @@ var j = {
|
|
|
20
20
|
};
|
|
21
21
|
//#endregion
|
|
22
22
|
//#region src/v2019C1/dialecte.ts
|
|
23
|
-
function
|
|
23
|
+
function I(e) {
|
|
24
24
|
let { storage: t = { type: "local" }, extensions: n } = e ?? {};
|
|
25
|
-
return new
|
|
25
|
+
return new P({
|
|
26
26
|
configs: { scl: i },
|
|
27
27
|
defaultConfigKey: "scl",
|
|
28
28
|
storage: t,
|
|
29
29
|
extensions: {
|
|
30
|
-
base:
|
|
30
|
+
base: E,
|
|
31
31
|
custom: n
|
|
32
32
|
},
|
|
33
33
|
hooks: {
|
|
34
|
-
...
|
|
35
|
-
...
|
|
34
|
+
...C(),
|
|
35
|
+
...O
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
//#endregion
|
|
40
|
-
export {
|
|
40
|
+
export { p as ALL_REF_UUID_ATTRIBUTES, x as ALL_RESOLUTIONS, d as DEFAULT_IGNORED_ATTRIBUTES, f as FRAME_OMIT_CHILD_TAGS, j as KEEP_ON_ORPHAN_REFS, k as LOCKED_LNODE_ATTRIBUTES, m as MAPPED_NAME_REFS, h as PAIRS_BY_REF, b as PATH_CONTRIBUTING_ATTRIBUTES, e as PATH_EXTRACTION_CONFIG, l as REFERENCE_TAGS, r as REFERENCE_TAG_NAMES, D as REF_CONTAINERS, T as RESOLUTION_TARGET_REFS, N as RESOLUTION_TYPE, S as RESOLVABLE_RESOLUTIONS, y as SCL_DATABASE_CONFIG, i as SCL_DIALECTE_CONFIG, a as SCL_IO_CONFIG, s as SCL_NAMESPACES, n as TARGET_ELEMENT_TYPES, t as TEMPLATE_NAME, F as TEMPLATE_UUID_WARNING_INFO, M as TOPOLOGY_EQUIPMENT_TAGS, c as TOPOLOGY_STRUCTURAL_TAGS, A as TYPE_ID_REFERENCE_PAIRS, _ as TYPE_ID_REFERRERS_BY_TARGET, g as TYPE_ID_REF_ATTRIBUTES, u as TYPE_ID_TARGET_TAGS, o as UUID_REFERENCE_PAIRS, I as createSclProject, w as isTypeIdTarget, v as presentationScope };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert a test XML string is valid SCL, structurally: every element's namespace matches its parent
|
|
3
|
+
* context, every element is an allowed child of its parent, and every attribute is a known attribute of
|
|
4
|
+
* its element. Elements/parents unknown to the schema are skipped (bespoke content under a transparent
|
|
5
|
+
* `Private`, or dev-namespace scaffolding).
|
|
6
|
+
*
|
|
7
|
+
* `requireComplete` (default `true`) additionally requires every schema-required attribute to be
|
|
8
|
+
* present. Minimal test fixtures legitimately omit these (e.g. a bare `<SCL>` without
|
|
9
|
+
* `version`/`revision`/`release`), so the harness runs with it OFF — structural correctness is
|
|
10
|
+
* enforced, document completeness is not.
|
|
11
|
+
*
|
|
12
|
+
* NOT yet enforced (planned with the validation feature): attribute VALUE facets (uuid pattern, enums,
|
|
13
|
+
* datatypes) and cross-element constraints (unique keys, keyref resolution).
|
|
14
|
+
*/
|
|
15
|
+
export declare function assertValidSclXml(xml: string, label?: string, options?: {
|
|
16
|
+
requireComplete?: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
//# sourceMappingURL=assert-valid-scl-xml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-valid-scl-xml.d.ts","sourceRoot":"","sources":["../../../src/v2019C1/test/assert-valid-scl-xml.ts"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,SAAa,EAClB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,IAAI,CAqDN"}
|
|
@@ -4,7 +4,8 @@ export declare const XMLNS_SCL_NAMESPACE: string;
|
|
|
4
4
|
export declare const XMLNS_SCL_6_100_NAMESPACE: string;
|
|
5
5
|
export declare const ALL_XMLNS_NAMESPACES: string;
|
|
6
6
|
export { CUSTOM_RECORD_ID_ATTRIBUTE, CUSTOM_RECORD_ID_ATTRIBUTE_NAME };
|
|
7
|
-
export
|
|
7
|
+
export { assertValidSclXml } from './assert-valid-scl-xml';
|
|
8
|
+
declare const rawRunSclTestCases: import('@dialecte/core/test').TestRunner<Config, {
|
|
8
9
|
cleanUp: {
|
|
9
10
|
transaction: typeof import("../extensions/clean-up/transaction");
|
|
10
11
|
};
|
|
@@ -17,6 +18,7 @@ export declare const runSclTestCases: import('@dialecte/core/test').TestRunner<C
|
|
|
17
18
|
transaction: typeof import("../extensions/history/transaction");
|
|
18
19
|
};
|
|
19
20
|
identity: {
|
|
21
|
+
query: typeof import("../extensions/identity/query");
|
|
20
22
|
transaction: typeof import("../extensions/identity/transaction");
|
|
21
23
|
};
|
|
22
24
|
lifecycle: {
|
|
@@ -45,6 +47,11 @@ export declare const runSclTestCases: import('@dialecte/core/test').TestRunner<C
|
|
|
45
47
|
query: typeof import("../extensions/presentation/query");
|
|
46
48
|
};
|
|
47
49
|
}>;
|
|
50
|
+
/**
|
|
51
|
+
* `createTestRunner`, wrapped so every registered case's XML is checked against the SCL schema's
|
|
52
|
+
* per-element namespaces before the suite runs (see {@link assertValidSclXml}).
|
|
53
|
+
*/
|
|
54
|
+
export declare const runSclTestCases: typeof rawRunSclTestCases;
|
|
48
55
|
export declare function createSclTestProject(params: {
|
|
49
56
|
sourceXml: string;
|
|
50
57
|
targetXml?: string;
|
|
@@ -64,6 +71,7 @@ export declare function createSclTestProject(params: {
|
|
|
64
71
|
transaction: typeof import("../extensions/history/transaction");
|
|
65
72
|
};
|
|
66
73
|
identity: {
|
|
74
|
+
query: typeof import("../extensions/identity/query");
|
|
67
75
|
transaction: typeof import("../extensions/identity/transaction");
|
|
68
76
|
};
|
|
69
77
|
lifecycle: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrated-test.d.ts","sourceRoot":"","sources":["../../../src/v2019C1/test/hydrated-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hydrated-test.d.ts","sourceRoot":"","sources":["../../../src/v2019C1/test/hydrated-test.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,0BAA0B,EAC1B,+BAA+B,EAE/B,MAAM,wBAAwB,CAAA;AAa/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAO9D,eAAO,MAAM,mBAAmB,QAA0D,CAAA;AAC1F,eAAO,MAAM,yBAAyB,QAA2G,CAAA;AACjJ,eAAO,MAAM,oBAAoB,QAAsG,CAAA;AACvI,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAItB,CAAA;AAaF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,kBAUpC,CAAA;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAaA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CAAuD,CAAA;AACvF,eAAO,MAAQ,4BAA4B;;;YAAE,8BAA8B;;;UAI1E,CAAA"}
|
package/dist/v2019C1/test.js
CHANGED
|
@@ -1,26 +1,70 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CUSTOM_RECORD_ID_ATTRIBUTE as
|
|
3
|
-
import { XMLNS_DEV_NAMESPACE as
|
|
1
|
+
import { F as e, M as t, n, r, t as i } from "../hooks-BBGXNK0x.js";
|
|
2
|
+
import { CUSTOM_RECORD_ID_ATTRIBUTE as a, CUSTOM_RECORD_ID_ATTRIBUTE_NAME as o, XMLNS_XSI_NAMESPACE as s } from "@dialecte/core/helpers";
|
|
3
|
+
import { XMLNS_DEV_NAMESPACE as c, createTestProject as l, createTestRecordFactory as u, createTestRunner as d, createXmlAssertions as f } from "@dialecte/core/test";
|
|
4
|
+
//#region src/v2019C1/test/assert-valid-scl-xml.ts
|
|
5
|
+
var p = e;
|
|
6
|
+
function m(e, t) {
|
|
7
|
+
return ((e ? p[e]?.children?.details?.[t]?.namespace : void 0) ?? p[t]?.namespace)?.uri;
|
|
8
|
+
}
|
|
9
|
+
function h(e, t) {
|
|
10
|
+
let n = e.children;
|
|
11
|
+
return n ? n.any === !0 || n.sequence?.includes(t) ? !0 : n.details ? t in n.details : !1 : !1;
|
|
12
|
+
}
|
|
13
|
+
function g(e) {
|
|
14
|
+
return new Set([...e.attributes?.sequence ?? [], ...Object.keys(e.attributes?.details ?? {})]);
|
|
15
|
+
}
|
|
16
|
+
function _(e, t = "test XML", n = {}) {
|
|
17
|
+
let r = n.requireComplete ?? !0, i = new DOMParser().parseFromString(e, "application/xml"), a = i.querySelector("parsererror");
|
|
18
|
+
if (a) throw Error(`${t}: malformed XML — ${a.textContent?.trim()}`);
|
|
19
|
+
let o = [], s = (e, t) => {
|
|
20
|
+
let n = e.localName, i = p[n], a = m(t, n);
|
|
21
|
+
if (a !== void 0 && e.namespaceURI !== a) {
|
|
22
|
+
let n = t ? ` under <${t}>` : "";
|
|
23
|
+
o.push(`[namespace] <${e.tagName}>${n}: is in ${e.namespaceURI ?? "(no namespace)"}, schema declares ${a}`);
|
|
24
|
+
}
|
|
25
|
+
let c = t ? p[t] : void 0;
|
|
26
|
+
if (c && !h(c, n) && o.push(`[containment] <${n}> is not a valid child of <${t}>`), i?.attributes) {
|
|
27
|
+
let t = g(i);
|
|
28
|
+
for (let r of Array.from(e.attributes)) r.namespaceURI === null && (t.has(r.localName) || o.push(`[attribute] <${n}> has unknown attribute '${r.localName}'`));
|
|
29
|
+
if (r) for (let [t, r] of Object.entries(i.attributes.details ?? {})) r?.required && !e.hasAttribute(t) && o.push(`[required] <${n}> is missing required attribute '${t}'`);
|
|
30
|
+
}
|
|
31
|
+
for (let t of Array.from(e.children)) s(t, n);
|
|
32
|
+
};
|
|
33
|
+
if (i.documentElement && s(i.documentElement, void 0), o.length > 0) throw Error(`${t}: not valid SCL:\n ${o.join("\n ")}`);
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
4
36
|
//#region src/v2019C1/test/hydrated-test.ts
|
|
5
|
-
var
|
|
6
|
-
...
|
|
7
|
-
...
|
|
8
|
-
},
|
|
9
|
-
dialecteConfig:
|
|
10
|
-
extensions:
|
|
11
|
-
hooks:
|
|
37
|
+
var v = {
|
|
38
|
+
...n(),
|
|
39
|
+
...i
|
|
40
|
+
}, y = `xmlns="${t.namespaces.default.uri}"`, b = `xmlns:${t.namespaces.v2019C1.prefix}="${t.namespaces.v2019C1.uri}"`, x = `${y} ${b} ${c} ${s}`, S = { base: r }, C = d({
|
|
41
|
+
dialecteConfig: t,
|
|
42
|
+
extensions: S,
|
|
43
|
+
hooks: v
|
|
12
44
|
});
|
|
13
|
-
|
|
14
|
-
let { sourceXml:
|
|
15
|
-
|
|
45
|
+
function w(e) {
|
|
46
|
+
for (let [t, n] of Object.entries(e)) _(n.sourceXml, `${t} › sourceXml`, { requireComplete: !1 }), n.targetXml && _(n.targetXml, `${t} › targetXml`, { requireComplete: !1 });
|
|
47
|
+
}
|
|
48
|
+
var T = {
|
|
49
|
+
...C,
|
|
50
|
+
withExport(e) {
|
|
51
|
+
w(e.testCases), C.withExport(e);
|
|
52
|
+
},
|
|
53
|
+
withoutExport(e) {
|
|
54
|
+
w(e.testCases), C.withoutExport(e);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
async function E(e) {
|
|
58
|
+
let { sourceXml: n, targetXml: r, dev: i } = e;
|
|
59
|
+
return _(n, "sourceXml", { requireComplete: !1 }), r && _(r, "targetXml", { requireComplete: !1 }), l({
|
|
16
60
|
sourceXml: n,
|
|
17
61
|
targetXml: r,
|
|
18
|
-
dialecteConfig:
|
|
19
|
-
extensions:
|
|
20
|
-
hooks:
|
|
62
|
+
dialecteConfig: t,
|
|
63
|
+
extensions: S,
|
|
64
|
+
hooks: v,
|
|
21
65
|
dev: i
|
|
22
66
|
});
|
|
23
67
|
}
|
|
24
|
-
var
|
|
68
|
+
var D = u(t), { assertExpectedElementQueries: O, assertUnexpectedElementQueries: k } = f({ namespaces: t.namespaces });
|
|
25
69
|
//#endregion
|
|
26
|
-
export {
|
|
70
|
+
export { x as ALL_XMLNS_NAMESPACES, a as CUSTOM_RECORD_ID_ATTRIBUTE, o as CUSTOM_RECORD_ID_ATTRIBUTE_NAME, b as XMLNS_SCL_6_100_NAMESPACE, y 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.
|
|
3
|
+
"version": "0.3.16",
|
|
4
4
|
"description": "Dialecte - SCL (Substation Configuration Language) sdk",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
"lint:fix": "oxlint . --fix -D correctness --ignore-path .gitignore",
|
|
45
45
|
"format:check": "oxfmt --check",
|
|
46
46
|
"format:fix": "oxfmt",
|
|
47
|
+
"format:xml": "dialecte-xmlfmt 'src/**/*.test.ts'",
|
|
48
|
+
"format:xml:check": "dialecte-xmlfmt --check 'src/**/*.test.ts'",
|
|
47
49
|
"//====== TYPE PERF ======//": "",
|
|
48
50
|
"coverage:gen": "dialecte coverage",
|
|
49
51
|
"type-bench": "npm run coverage:gen && dialecte bench",
|
|
@@ -54,7 +56,7 @@
|
|
|
54
56
|
"prepare": "husky"
|
|
55
57
|
},
|
|
56
58
|
"dependencies": {
|
|
57
|
-
"@dialecte/core": "0.4.
|
|
59
|
+
"@dialecte/core": "0.4.16"
|
|
58
60
|
},
|
|
59
61
|
"devDependencies": {
|
|
60
62
|
"@dialecte/cli": "0.0.2",
|