@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.
Files changed (149) hide show
  1. package/dist/{hooks-By65uB-0.js → hooks-BBGXNK0x.js} +2035 -1250
  2. package/dist/v2019C1/config/dialecte.config.d.ts +2 -2
  3. package/dist/v2019C1/config/dialecte.config.d.ts.map +1 -1
  4. package/dist/v2019C1/constants/index.d.ts +3 -0
  5. package/dist/v2019C1/constants/index.d.ts.map +1 -1
  6. package/dist/v2019C1/constants/naming.d.ts +3 -0
  7. package/dist/v2019C1/constants/naming.d.ts.map +1 -0
  8. package/dist/v2019C1/constants/topology-tags.d.ts +22 -0
  9. package/dist/v2019C1/constants/topology-tags.d.ts.map +1 -0
  10. package/dist/v2019C1/constants/topology-tags.types.d.ts +6 -0
  11. package/dist/v2019C1/constants/topology-tags.types.d.ts.map +1 -0
  12. package/dist/v2019C1/extensions/clean-up/transaction/orphan-lnode-bindings.d.ts +7 -2
  13. package/dist/v2019C1/extensions/clean-up/transaction/orphan-lnode-bindings.d.ts.map +1 -1
  14. package/dist/v2019C1/extensions/identity/index.d.ts +2 -0
  15. package/dist/v2019C1/extensions/identity/index.d.ts.map +1 -1
  16. package/dist/v2019C1/extensions/identity/query/index.d.ts +3 -0
  17. package/dist/v2019C1/extensions/identity/query/index.d.ts.map +1 -0
  18. package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts +18 -0
  19. package/dist/v2019C1/extensions/identity/query/resolve-identity.d.ts.map +1 -0
  20. package/dist/v2019C1/extensions/identity/query/resolve-identity.types.d.ts +19 -0
  21. package/dist/v2019C1/extensions/identity/query/resolve-identity.types.d.ts.map +1 -0
  22. package/dist/v2019C1/extensions/identity/transaction/restore-cloned-uuids.d.ts +8 -10
  23. package/dist/v2019C1/extensions/identity/transaction/restore-cloned-uuids.d.ts.map +1 -1
  24. package/dist/v2019C1/extensions/identity/transaction/write-identity.d.ts +3 -0
  25. package/dist/v2019C1/extensions/identity/transaction/write-identity.d.ts.map +1 -1
  26. package/dist/v2019C1/extensions/identity/transaction/write-identity.types.d.ts +1 -1
  27. package/dist/v2019C1/extensions/identity/transaction/write-identity.types.d.ts.map +1 -1
  28. package/dist/v2019C1/extensions/index.d.ts +1 -0
  29. package/dist/v2019C1/extensions/index.d.ts.map +1 -1
  30. package/dist/v2019C1/extensions/lifecycle/apply/apply.d.ts +2 -2
  31. package/dist/v2019C1/extensions/lifecycle/apply/apply.d.ts.map +1 -1
  32. package/dist/v2019C1/extensions/lifecycle/apply/apply.types.d.ts +4 -0
  33. package/dist/v2019C1/extensions/lifecycle/apply/apply.types.d.ts.map +1 -1
  34. package/dist/v2019C1/extensions/lifecycle/contract.types.d.ts +20 -1
  35. package/dist/v2019C1/extensions/lifecycle/contract.types.d.ts.map +1 -1
  36. package/dist/v2019C1/extensions/lifecycle/cross-cutting/finalize-cloned-identity.d.ts +24 -0
  37. package/dist/v2019C1/extensions/lifecycle/cross-cutting/finalize-cloned-identity.d.ts.map +1 -0
  38. package/dist/v2019C1/extensions/lifecycle/cross-cutting/index.d.ts +1 -0
  39. package/dist/v2019C1/extensions/lifecycle/cross-cutting/index.d.ts.map +1 -1
  40. package/dist/v2019C1/extensions/lifecycle/engine/correlate.d.ts +30 -0
  41. package/dist/v2019C1/extensions/lifecycle/engine/correlate.d.ts.map +1 -0
  42. package/dist/v2019C1/extensions/lifecycle/engine/decide.d.ts +9 -2
  43. package/dist/v2019C1/extensions/lifecycle/engine/decide.d.ts.map +1 -1
  44. package/dist/v2019C1/extensions/lifecycle/engine/diff.d.ts +7 -1
  45. package/dist/v2019C1/extensions/lifecycle/engine/diff.d.ts.map +1 -1
  46. package/dist/v2019C1/extensions/lifecycle/engine/diff.types.d.ts +9 -1
  47. package/dist/v2019C1/extensions/lifecycle/engine/diff.types.d.ts.map +1 -1
  48. package/dist/v2019C1/extensions/lifecycle/engine/group.d.ts +1 -1
  49. package/dist/v2019C1/extensions/lifecycle/engine/match-child.d.ts +31 -0
  50. package/dist/v2019C1/extensions/lifecycle/engine/match-child.d.ts.map +1 -0
  51. package/dist/v2019C1/extensions/lifecycle/engine/match-key.d.ts +26 -0
  52. package/dist/v2019C1/extensions/lifecycle/engine/match-key.d.ts.map +1 -0
  53. package/dist/v2019C1/extensions/lifecycle/engine/reconcile.d.ts +8 -2
  54. package/dist/v2019C1/extensions/lifecycle/engine/reconcile.d.ts.map +1 -1
  55. package/dist/v2019C1/extensions/lifecycle/engine/reference-match.d.ts +25 -0
  56. package/dist/v2019C1/extensions/lifecycle/engine/reference-match.d.ts.map +1 -0
  57. package/dist/v2019C1/extensions/lifecycle/extract/transaction/ensure-substation-structure.d.ts.map +1 -1
  58. package/dist/v2019C1/extensions/lifecycle/extract/transaction/index.d.ts +1 -0
  59. package/dist/v2019C1/extensions/lifecycle/extract/transaction/index.d.ts.map +1 -1
  60. package/dist/v2019C1/extensions/lifecycle/extract/transaction/post-extraction-cleanup.d.ts +3 -3
  61. package/dist/v2019C1/extensions/lifecycle/extract/transaction/ssd.d.ts +22 -0
  62. package/dist/v2019C1/extensions/lifecycle/extract/transaction/ssd.d.ts.map +1 -0
  63. package/dist/v2019C1/extensions/lifecycle/index.d.ts +1 -1
  64. package/dist/v2019C1/extensions/lifecycle/instance/find-instance.d.ts +33 -9
  65. package/dist/v2019C1/extensions/lifecycle/instance/find-instance.d.ts.map +1 -1
  66. package/dist/v2019C1/extensions/lifecycle/instance/index.d.ts +1 -1
  67. package/dist/v2019C1/extensions/lifecycle/instance/index.d.ts.map +1 -1
  68. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.d.ts.map +1 -1
  69. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.types.d.ts +6 -0
  70. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/asd.types.d.ts.map +1 -1
  71. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.d.ts.map +1 -1
  72. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.types.d.ts +6 -0
  73. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/fsd.types.d.ts.map +1 -1
  74. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/index.d.ts +2 -0
  75. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/index.d.ts.map +1 -1
  76. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.d.ts +19 -0
  77. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.d.ts.map +1 -0
  78. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.types.d.ts +25 -0
  79. package/dist/v2019C1/extensions/lifecycle/instantiate/transaction/ssd.types.d.ts.map +1 -0
  80. package/dist/v2019C1/extensions/lifecycle/layers/omit-filters.d.ts +6 -0
  81. package/dist/v2019C1/extensions/lifecycle/layers/omit-filters.d.ts.map +1 -1
  82. package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.d.ts +30 -0
  83. package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.d.ts.map +1 -0
  84. package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.types.d.ts +14 -0
  85. package/dist/v2019C1/extensions/lifecycle/layers/topology/clone-topology-content.types.d.ts.map +1 -0
  86. package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.d.ts +25 -0
  87. package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.d.ts.map +1 -0
  88. package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.types.d.ts +22 -0
  89. package/dist/v2019C1/extensions/lifecycle/layers/topology/ensure-topology-frame.types.d.ts.map +1 -0
  90. package/dist/v2019C1/extensions/lifecycle/layers/topology/index.d.ts +8 -0
  91. package/dist/v2019C1/extensions/lifecycle/layers/topology/index.d.ts.map +1 -0
  92. package/dist/v2019C1/extensions/lifecycle/layers/topology/reconcile-topology-frame.d.ts +29 -0
  93. package/dist/v2019C1/extensions/lifecycle/layers/topology/reconcile-topology-frame.d.ts.map +1 -0
  94. package/dist/v2019C1/extensions/lifecycle/layers/topology/root-selection.d.ts +14 -0
  95. package/dist/v2019C1/extensions/lifecycle/layers/topology/root-selection.d.ts.map +1 -0
  96. package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.d.ts +15 -0
  97. package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.d.ts.map +1 -0
  98. package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.types.d.ts +8 -0
  99. package/dist/v2019C1/extensions/lifecycle/layers/topology/scope-content.types.d.ts.map +1 -0
  100. package/dist/v2019C1/extensions/lifecycle/report/presentation-scope.d.ts.map +1 -1
  101. package/dist/v2019C1/extensions/lifecycle/report/query/index.d.ts +1 -0
  102. package/dist/v2019C1/extensions/lifecycle/report/query/index.d.ts.map +1 -1
  103. package/dist/v2019C1/extensions/lifecycle/report/query/report-asd.d.ts +1 -0
  104. package/dist/v2019C1/extensions/lifecycle/report/query/report-asd.d.ts.map +1 -1
  105. package/dist/v2019C1/extensions/lifecycle/report/query/report-fsd.d.ts +2 -1
  106. package/dist/v2019C1/extensions/lifecycle/report/query/report-fsd.d.ts.map +1 -1
  107. package/dist/v2019C1/extensions/lifecycle/report/query/report-function-satellites.d.ts +1 -1
  108. package/dist/v2019C1/extensions/lifecycle/report/query/report-function.d.ts +1 -1
  109. package/dist/v2019C1/extensions/lifecycle/report/query/report-ssd.d.ts +22 -0
  110. package/dist/v2019C1/extensions/lifecycle/report/query/report-ssd.d.ts.map +1 -0
  111. package/dist/v2019C1/extensions/lifecycle/report/query/report-topology-frame.d.ts +23 -0
  112. package/dist/v2019C1/extensions/lifecycle/report/query/report-topology-frame.d.ts.map +1 -0
  113. package/dist/v2019C1/extensions/lifecycle/report/query/satellite-companions.d.ts +1 -1
  114. package/dist/v2019C1/extensions/lifecycle/report/query/satellite-companions.d.ts.map +1 -1
  115. package/dist/v2019C1/extensions/lifecycle/report/report.d.ts +1 -1
  116. package/dist/v2019C1/extensions/lifecycle/report/report.d.ts.map +1 -1
  117. package/dist/v2019C1/extensions/lifecycle/scenario.d.ts +1 -2
  118. package/dist/v2019C1/extensions/lifecycle/scenario.d.ts.map +1 -1
  119. package/dist/v2019C1/extensions/lifecycle/transplant/transaction/primitives/merge-children-into.d.ts +6 -1
  120. package/dist/v2019C1/extensions/lifecycle/transplant/transaction/primitives/merge-children-into.d.ts.map +1 -1
  121. package/dist/v2019C1/extensions/lifecycle/update/transaction/asd.d.ts +3 -1
  122. package/dist/v2019C1/extensions/lifecycle/update/transaction/asd.d.ts.map +1 -1
  123. package/dist/v2019C1/extensions/lifecycle/update/transaction/cross-cutting-satellites.d.ts +8 -3
  124. package/dist/v2019C1/extensions/lifecycle/update/transaction/cross-cutting-satellites.d.ts.map +1 -1
  125. package/dist/v2019C1/extensions/lifecycle/update/transaction/fsd.d.ts +3 -2
  126. package/dist/v2019C1/extensions/lifecycle/update/transaction/fsd.d.ts.map +1 -1
  127. package/dist/v2019C1/extensions/lifecycle/update/transaction/function-satellites.d.ts +8 -2
  128. package/dist/v2019C1/extensions/lifecycle/update/transaction/function-satellites.d.ts.map +1 -1
  129. package/dist/v2019C1/extensions/lifecycle/update/transaction/index.d.ts +1 -0
  130. package/dist/v2019C1/extensions/lifecycle/update/transaction/index.d.ts.map +1 -1
  131. package/dist/v2019C1/extensions/lifecycle/update/transaction/satellite-reconcile.d.ts +8 -1
  132. package/dist/v2019C1/extensions/lifecycle/update/transaction/satellite-reconcile.d.ts.map +1 -1
  133. package/dist/v2019C1/extensions/lifecycle/update/transaction/ssd.d.ts +36 -0
  134. package/dist/v2019C1/extensions/lifecycle/update/transaction/ssd.d.ts.map +1 -0
  135. package/dist/v2019C1/extensions/reference/transaction/index.d.ts +1 -1
  136. package/dist/v2019C1/extensions/reference/transaction/index.d.ts.map +1 -1
  137. package/dist/v2019C1/extensions/reference/transaction/write-provenance.d.ts +9 -9
  138. package/dist/v2019C1/extensions/reference/transaction/write-provenance.d.ts.map +1 -1
  139. package/dist/v2019C1/extensions/reference/transaction/write-provenance.types.d.ts +22 -7
  140. package/dist/v2019C1/extensions/reference/transaction/write-provenance.types.d.ts.map +1 -1
  141. package/dist/v2019C1/hooks/after-standardized-record/uuid-attribute.d.ts.map +1 -1
  142. package/dist/v2019C1/hooks/io/io-hooks.d.ts +2 -2
  143. package/dist/v2019C1/index.js +9 -9
  144. package/dist/v2019C1/test/assert-valid-scl-xml.d.ts +18 -0
  145. package/dist/v2019C1/test/assert-valid-scl-xml.d.ts.map +1 -0
  146. package/dist/v2019C1/test/hydrated-test.d.ts +9 -1
  147. package/dist/v2019C1/test/hydrated-test.d.ts.map +1 -1
  148. package/dist/v2019C1/test.js +62 -18
  149. 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 the instantiation provenance link on the cloned root: a fresh
6
- * `FunctionSclRef` / `ApplicationSclRef` > `SclFileReference` pointing back at the
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 kernel self-sources every field from the source document — `fileType` from
10
- * the caller, `version` / `revision` / `fileUuid` from the template `Header`,
11
- * `fileName` from the source store — so no SET dependency. `version` / `revision`
12
- * fall back to empty strings when the (optional) Header attributes are absent.
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
- * Always **creates** a new ref (never reuses an existing one): a root may already
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,EAAsB,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,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,CAmBf"}
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
- /** Which template kind produced the instance (selects the SclRef element + fileType). */
4
- export type ProvenanceFileType = 'FSD' | 'ASD';
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 template document the instance was created from. */
23
+ /** Query over the source document the provenance is sourced from (Header + file name). */
7
24
  sourceQuery: Core.Query<Config>;
8
- /** Cloned root element in the target: `Function` for FSD, `Application` for ASD. */
9
- targetRoot: Scl.Ref<Scl.ElementsOf>;
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,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,MAAM,MAAM,qBAAqB,GAAG;IACnC,sEAAsE;IACtE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,oFAAoF;IACpF,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACnC,kFAAkF;IAClF,QAAQ,EAAE,kBAAkB,CAAA;CAC5B,CAAA"}
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":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC;;;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"}
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
- * **Phase 1 — `beforeImportRecord`** (called once per record, in document order):
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
- * **Phase 2 — `afterImport`** (called once, after all records):
27
+ * **Pass 2 — `afterImport`** (called once, after all records):
28
28
  *
29
29
  * Each pending resolution is looked up in `pathIndex`:
30
30
  * ```
@@ -1,7 +1,7 @@
1
- import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "../hooks-By65uB-0.js";
2
- import { Project as A } from "@dialecte/core";
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 j = {
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 M(e) {
23
+ function I(e) {
24
24
  let { storage: t = { type: "local" }, extensions: n } = e ?? {};
25
- return new A({
25
+ return new P({
26
26
  configs: { scl: i },
27
27
  defaultConfigKey: "scl",
28
28
  storage: t,
29
29
  extensions: {
30
- base: S,
30
+ base: E,
31
31
  custom: n
32
32
  },
33
33
  hooks: {
34
- ...y(),
35
- ...w
34
+ ...C(),
35
+ ...O
36
36
  }
37
37
  });
38
38
  }
39
39
  //#endregion
40
- export { u as ALL_REF_UUID_ATTRIBUTES, _ as ALL_RESOLUTIONS, c as DEFAULT_IGNORED_ATTRIBUTES, l as KEEP_ON_ORPHAN_REFS, T as LOCKED_LNODE_ATTRIBUTES, d as MAPPED_NAME_REFS, f as PAIRS_BY_REF, o as PATH_CONTRIBUTING_ATTRIBUTES, r as PATH_EXTRACTION_CONFIG, O as REFERENCE_TAGS, a as REFERENCE_TAG_NAMES, C as REF_CONTAINERS, x as RESOLUTION_TARGET_REFS, k as RESOLUTION_TYPE, v as RESOLVABLE_RESOLUTIONS, n as SCL_DATABASE_CONFIG, i as SCL_DIALECTE_CONFIG, g as SCL_IO_CONFIG, e as SCL_NAMESPACES, t as TARGET_ELEMENT_TYPES, j as TEMPLATE_UUID_WARNING_INFO, E as TYPE_ID_REFERENCE_PAIRS, m as TYPE_ID_REFERRERS_BY_TARGET, p as TYPE_ID_REF_ATTRIBUTES, s as TYPE_ID_TARGET_TAGS, D as UUID_REFERENCE_PAIRS, M as createSclProject, b as isTypeIdTarget, h as presentationScope };
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 declare const runSclTestCases: import('@dialecte/core/test').TestRunner<Config, {
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":"AAAA,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;AAItE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI1B,CAAA;AAEF,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CAAuD,CAAA;AACvF,eAAO,MAAQ,4BAA4B;;;YAAE,8BAA8B;;;UAI1E,CAAA"}
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"}
@@ -1,26 +1,70 @@
1
- import { O as e, n as t, r as n, t as r } from "../hooks-By65uB-0.js";
2
- import { CUSTOM_RECORD_ID_ATTRIBUTE as i, CUSTOM_RECORD_ID_ATTRIBUTE_NAME as a, XMLNS_XSI_NAMESPACE as o } from "@dialecte/core/helpers";
3
- import { XMLNS_DEV_NAMESPACE as s, createTestProject as c, createTestRecordFactory as l, createTestRunner as u, createXmlAssertions as d } from "@dialecte/core/test";
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 f = {
6
- ...t(),
7
- ...r
8
- }, p = `xmlns="${e.namespaces.default.uri}"`, m = `xmlns:${e.namespaces.v2019C1.prefix}="${e.namespaces.v2019C1.uri}"`, h = `${p} ${m} ${s} ${o}`, g = { base: n }, _ = u({
9
- dialecteConfig: e,
10
- extensions: g,
11
- hooks: f
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
- async function v(t) {
14
- let { sourceXml: n, targetXml: r, dev: i } = t;
15
- return c({
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: e,
19
- extensions: g,
20
- hooks: f,
62
+ dialecteConfig: t,
63
+ extensions: S,
64
+ hooks: v,
21
65
  dev: i
22
66
  });
23
67
  }
24
- var y = l(e), { assertExpectedElementQueries: b, assertUnexpectedElementQueries: x } = d({ namespaces: e.namespaces });
68
+ var D = u(t), { assertExpectedElementQueries: O, assertUnexpectedElementQueries: k } = f({ namespaces: t.namespaces });
25
69
  //#endregion
26
- export { h as ALL_XMLNS_NAMESPACES, i as CUSTOM_RECORD_ID_ATTRIBUTE, a as CUSTOM_RECORD_ID_ATTRIBUTE_NAME, m as XMLNS_SCL_6_100_NAMESPACE, p as XMLNS_SCL_NAMESPACE, b as assertExpectedElementQueries, x as assertUnexpectedElementQueries, v as createSclTestProject, y as createSclTestRecord, _ as runSclTestCases };
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.14",
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.12"
59
+ "@dialecte/core": "0.4.16"
58
60
  },
59
61
  "devDependencies": {
60
62
  "@dialecte/cli": "0.0.2",