@openscd/scl-lib 2.0.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.
Files changed (238) hide show
  1. package/LICENCE +201 -0
  2. package/README.md +20 -0
  3. package/dist/foundation/codecomponents/nsds.d.ts +5 -0
  4. package/dist/foundation/codecomponents/nsds.js +22435 -0
  5. package/dist/foundation/codecomponents/nsds.js.map +1 -0
  6. package/dist/foundation/nsd.json +137748 -0
  7. package/dist/foundation/uniqueElementName.d.ts +2 -0
  8. package/dist/foundation/uniqueElementName.js +18 -0
  9. package/dist/foundation/uniqueElementName.js.map +1 -0
  10. package/dist/foundation/utils.d.ts +20 -0
  11. package/dist/foundation/utils.js +14 -0
  12. package/dist/foundation/utils.js.map +1 -0
  13. package/dist/generator/appIdGenerator.d.ts +21 -0
  14. package/dist/generator/appIdGenerator.js +53 -0
  15. package/dist/generator/appIdGenerator.js.map +1 -0
  16. package/dist/generator/lnInstGenerator.d.ts +16 -0
  17. package/dist/generator/lnInstGenerator.js +41 -0
  18. package/dist/generator/lnInstGenerator.js.map +1 -0
  19. package/dist/generator/macAddressGenerator.d.ts +14 -0
  20. package/dist/generator/macAddressGenerator.js +39 -0
  21. package/dist/generator/macAddressGenerator.js.map +1 -0
  22. package/dist/index.d.ts +61 -0
  23. package/dist/index.js +55 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/tAddress/changeGseOrSmvAddress.d.ts +14 -0
  26. package/dist/tAddress/changeGseOrSmvAddress.js +43 -0
  27. package/dist/tAddress/changeGseOrSmvAddress.js.map +1 -0
  28. package/dist/tBaseElement/find.d.ts +6 -0
  29. package/dist/tBaseElement/find.js +529 -0
  30. package/dist/tBaseElement/find.js.map +1 -0
  31. package/dist/tBaseElement/getChildren.d.ts +5 -0
  32. package/dist/tBaseElement/getChildren.js +12 -0
  33. package/dist/tBaseElement/getChildren.js.map +1 -0
  34. package/dist/tBaseElement/getReference.d.ts +9 -0
  35. package/dist/tBaseElement/getReference.js +31 -0
  36. package/dist/tBaseElement/getReference.js.map +1 -0
  37. package/dist/tBaseElement/identity.d.ts +2 -0
  38. package/dist/tBaseElement/identity.js +566 -0
  39. package/dist/tBaseElement/identity.js.map +1 -0
  40. package/dist/tBaseElement/isPublic.d.ts +2 -0
  41. package/dist/tBaseElement/isPublic.js +5 -0
  42. package/dist/tBaseElement/isPublic.js.map +1 -0
  43. package/dist/tBaseElement/parentTags.d.ts +3 -0
  44. package/dist/tBaseElement/parentTags.js +8 -0
  45. package/dist/tBaseElement/parentTags.js.map +1 -0
  46. package/dist/tBaseElement/tags.d.ts +8 -0
  47. package/dist/tBaseElement/tags.js +807 -0
  48. package/dist/tBaseElement/tags.js.map +1 -0
  49. package/dist/tBay/updateBay.d.ts +5 -0
  50. package/dist/tBay/updateBay.js +81 -0
  51. package/dist/tBay/updateBay.js.map +1 -0
  52. package/dist/tControl/controlBlockGseOrSmv.d.ts +7 -0
  53. package/dist/tControl/controlBlockGseOrSmv.js +26 -0
  54. package/dist/tControl/controlBlockGseOrSmv.js.map +1 -0
  55. package/dist/tControl/controlBlockObjRef.d.ts +2 -0
  56. package/dist/tControl/controlBlockObjRef.js +14 -0
  57. package/dist/tControl/controlBlockObjRef.js.map +1 -0
  58. package/dist/tControl/controlBlocks.d.ts +2 -0
  59. package/dist/tControl/controlBlocks.js +9 -0
  60. package/dist/tControl/controlBlocks.js.map +1 -0
  61. package/dist/tControl/findControlSubscription.d.ts +2 -0
  62. package/dist/tControl/findControlSubscription.js +8 -0
  63. package/dist/tControl/findControlSubscription.js.map +1 -0
  64. package/dist/tControl/pathId.d.ts +1 -0
  65. package/dist/tControl/pathId.js +9 -0
  66. package/dist/tControl/pathId.js.map +1 -0
  67. package/dist/tControl/removeControlBlock.d.ts +14 -0
  68. package/dist/tControl/removeControlBlock.js +35 -0
  69. package/dist/tControl/removeControlBlock.js.map +1 -0
  70. package/dist/tControl/updateConfRev.d.ts +2 -0
  71. package/dist/tControl/updateConfRev.js +8 -0
  72. package/dist/tControl/updateConfRev.js.map +1 -0
  73. package/dist/tControl/updateDatSet.d.ts +6 -0
  74. package/dist/tControl/updateDatSet.js +22 -0
  75. package/dist/tControl/updateDatSet.js.map +1 -0
  76. package/dist/tControlWithIEDName/connctedAp.d.ts +2 -0
  77. package/dist/tControlWithIEDName/connctedAp.js +7 -0
  78. package/dist/tControlWithIEDName/connctedAp.js.map +1 -0
  79. package/dist/tDataSet/canAddDataSet.d.ts +4 -0
  80. package/dist/tDataSet/canAddDataSet.js +44 -0
  81. package/dist/tDataSet/canAddDataSet.js.map +1 -0
  82. package/dist/tDataSet/createDataSet.d.ts +9 -0
  83. package/dist/tDataSet/createDataSet.js +33 -0
  84. package/dist/tDataSet/createDataSet.js.map +1 -0
  85. package/dist/tDataSet/removeDataSet.d.ts +10 -0
  86. package/dist/tDataSet/removeDataSet.js +27 -0
  87. package/dist/tDataSet/removeDataSet.js.map +1 -0
  88. package/dist/tDataSet/updateDataSet.d.ts +7 -0
  89. package/dist/tDataSet/updateDataSet.js +28 -0
  90. package/dist/tDataSet/updateDataSet.js.map +1 -0
  91. package/dist/tDataTypeTemplates/foundation.d.ts +2 -0
  92. package/dist/tDataTypeTemplates/foundation.js +118 -0
  93. package/dist/tDataTypeTemplates/foundation.js.map +1 -0
  94. package/dist/tDataTypeTemplates/importLNodeType.d.ts +13 -0
  95. package/dist/tDataTypeTemplates/importLNodeType.js +88 -0
  96. package/dist/tDataTypeTemplates/importLNodeType.js.map +1 -0
  97. package/dist/tDataTypeTemplates/insertSelectedLNodeType.d.ts +20 -0
  98. package/dist/tDataTypeTemplates/insertSelectedLNodeType.js +187 -0
  99. package/dist/tDataTypeTemplates/insertSelectedLNodeType.js.map +1 -0
  100. package/dist/tDataTypeTemplates/lNodeTypeToSelection.d.ts +8 -0
  101. package/dist/tDataTypeTemplates/lNodeTypeToSelection.js +67 -0
  102. package/dist/tDataTypeTemplates/lNodeTypeToSelection.js.map +1 -0
  103. package/dist/tDataTypeTemplates/nsdToJson.d.ts +101 -0
  104. package/dist/tDataTypeTemplates/nsdToJson.js +433 -0
  105. package/dist/tDataTypeTemplates/nsdToJson.js.map +1 -0
  106. package/dist/tDataTypeTemplates/removeDataType.d.ts +12 -0
  107. package/dist/tDataTypeTemplates/removeDataType.js +62 -0
  108. package/dist/tDataTypeTemplates/removeDataType.js.map +1 -0
  109. package/dist/tDataTypeTemplates/updateLNodeType.d.ts +2 -0
  110. package/dist/tDataTypeTemplates/updateLNodeType.js +22 -0
  111. package/dist/tDataTypeTemplates/updateLNodeType.js.map +1 -0
  112. package/dist/tExtRef/doesFcdaMeetExtRefRestrictions.d.ts +16 -0
  113. package/dist/tExtRef/doesFcdaMeetExtRefRestrictions.js +52 -0
  114. package/dist/tExtRef/doesFcdaMeetExtRefRestrictions.js.map +1 -0
  115. package/dist/tExtRef/extRefTypeRestrictions.d.ts +17 -0
  116. package/dist/tExtRef/extRefTypeRestrictions.js +32 -0
  117. package/dist/tExtRef/extRefTypeRestrictions.js.map +1 -0
  118. package/dist/tExtRef/isSubscribed.d.ts +7 -0
  119. package/dist/tExtRef/isSubscribed.js +23 -0
  120. package/dist/tExtRef/isSubscribed.js.map +1 -0
  121. package/dist/tExtRef/matchDataAttributes.d.ts +2 -0
  122. package/dist/tExtRef/matchDataAttributes.js +13 -0
  123. package/dist/tExtRef/matchDataAttributes.js.map +1 -0
  124. package/dist/tExtRef/matchSrcAttributes.d.ts +2 -0
  125. package/dist/tExtRef/matchSrcAttributes.js +28 -0
  126. package/dist/tExtRef/matchSrcAttributes.js.map +1 -0
  127. package/dist/tExtRef/sourceControlBlock.d.ts +8 -0
  128. package/dist/tExtRef/sourceControlBlock.js +52 -0
  129. package/dist/tExtRef/sourceControlBlock.js.map +1 -0
  130. package/dist/tExtRef/subscribe.d.ts +47 -0
  131. package/dist/tExtRef/subscribe.js +187 -0
  132. package/dist/tExtRef/subscribe.js.map +1 -0
  133. package/dist/tExtRef/unsubscribe.d.ts +27 -0
  134. package/dist/tExtRef/unsubscribe.js +55 -0
  135. package/dist/tExtRef/unsubscribe.js.map +1 -0
  136. package/dist/tFCDA/canAddFCDA.d.ts +10 -0
  137. package/dist/tFCDA/canAddFCDA.js +42 -0
  138. package/dist/tFCDA/canAddFCDA.js.map +1 -0
  139. package/dist/tFCDA/fcdaBaseTypes.d.ts +11 -0
  140. package/dist/tFCDA/fcdaBaseTypes.js +56 -0
  141. package/dist/tFCDA/fcdaBaseTypes.js.map +1 -0
  142. package/dist/tFCDA/removeFCDA.d.ts +8 -0
  143. package/dist/tFCDA/removeFCDA.js +33 -0
  144. package/dist/tFCDA/removeFCDA.js.map +1 -0
  145. package/dist/tGSE/changeGSEContent.d.ts +17 -0
  146. package/dist/tGSE/changeGSEContent.js +53 -0
  147. package/dist/tGSE/changeGSEContent.js.map +1 -0
  148. package/dist/tGSE/createGSE.d.ts +20 -0
  149. package/dist/tGSE/createGSE.js +44 -0
  150. package/dist/tGSE/createGSE.js.map +1 -0
  151. package/dist/tGSEControl/canAddGSEControl.d.ts +4 -0
  152. package/dist/tGSEControl/canAddGSEControl.js +27 -0
  153. package/dist/tGSEControl/canAddGSEControl.js.map +1 -0
  154. package/dist/tGSEControl/createGSEControl.d.ts +49 -0
  155. package/dist/tGSEControl/createGSEControl.js +65 -0
  156. package/dist/tGSEControl/createGSEControl.js.map +1 -0
  157. package/dist/tGSEControl/updateGSEControl.d.ts +15 -0
  158. package/dist/tGSEControl/updateGSEControl.js +61 -0
  159. package/dist/tGSEControl/updateGSEControl.js.map +1 -0
  160. package/dist/tIED/insertIED.d.ts +13 -0
  161. package/dist/tIED/insertIED.js +245 -0
  162. package/dist/tIED/insertIED.js.map +1 -0
  163. package/dist/tIED/removeIED.d.ts +14 -0
  164. package/dist/tIED/removeIED.js +70 -0
  165. package/dist/tIED/removeIED.js.map +1 -0
  166. package/dist/tIED/updateIED.d.ts +17 -0
  167. package/dist/tIED/updateIED.js +185 -0
  168. package/dist/tIED/updateIED.js.map +1 -0
  169. package/dist/tInputs/removeInputs.d.ts +7 -0
  170. package/dist/tInputs/removeInputs.js +25 -0
  171. package/dist/tInputs/removeInputs.js.map +1 -0
  172. package/dist/tLN/removeSubscriptionSupervision.d.ts +7 -0
  173. package/dist/tLN/removeSubscriptionSupervision.js +94 -0
  174. package/dist/tLN/removeSubscriptionSupervision.js.map +1 -0
  175. package/dist/tLN/supervision/canInstantiateSubscriptionSupervision.d.ts +13 -0
  176. package/dist/tLN/supervision/canInstantiateSubscriptionSupervision.js +116 -0
  177. package/dist/tLN/supervision/canInstantiateSubscriptionSupervision.js.map +1 -0
  178. package/dist/tLN/supervision/createSupervisionEdit.d.ts +20 -0
  179. package/dist/tLN/supervision/createSupervisionEdit.js +129 -0
  180. package/dist/tLN/supervision/createSupervisionEdit.js.map +1 -0
  181. package/dist/tLN/supervision/findControlBlockOnSrcAttributes.d.ts +10 -0
  182. package/dist/tLN/supervision/findControlBlockOnSrcAttributes.js +13 -0
  183. package/dist/tLN/supervision/findControlBlockOnSrcAttributes.js.map +1 -0
  184. package/dist/tLN/supervision/foundation.d.ts +37 -0
  185. package/dist/tLN/supervision/foundation.js +43 -0
  186. package/dist/tLN/supervision/foundation.js.map +1 -0
  187. package/dist/tLN/supervision/insertSubscriptionSupervisions.d.ts +11 -0
  188. package/dist/tLN/supervision/insertSubscriptionSupervisions.js +98 -0
  189. package/dist/tLN/supervision/insertSubscriptionSupervisions.js.map +1 -0
  190. package/dist/tLN/supervision/instantiateSubscriptionSupervision.d.ts +10 -0
  191. package/dist/tLN/supervision/instantiateSubscriptionSupervision.js +36 -0
  192. package/dist/tLN/supervision/instantiateSubscriptionSupervision.js.map +1 -0
  193. package/dist/tLN/supervision/removeSupervision.d.ts +7 -0
  194. package/dist/tLN/supervision/removeSupervision.js +39 -0
  195. package/dist/tLN/supervision/removeSupervision.js.map +1 -0
  196. package/dist/tReportControl/canAddReportControl.d.ts +11 -0
  197. package/dist/tReportControl/canAddReportControl.js +24 -0
  198. package/dist/tReportControl/canAddReportControl.js.map +1 -0
  199. package/dist/tReportControl/createReportControl.d.ts +68 -0
  200. package/dist/tReportControl/createReportControl.js +78 -0
  201. package/dist/tReportControl/createReportControl.js.map +1 -0
  202. package/dist/tReportControl/numberReportControlInstances.d.ts +5 -0
  203. package/dist/tReportControl/numberReportControlInstances.js +19 -0
  204. package/dist/tReportControl/numberReportControlInstances.js.map +1 -0
  205. package/dist/tReportControl/updateReportControl.d.ts +5 -0
  206. package/dist/tReportControl/updateReportControl.js +24 -0
  207. package/dist/tReportControl/updateReportControl.js.map +1 -0
  208. package/dist/tSMV/changeSMVContent.d.ts +3 -0
  209. package/dist/tSMV/changeSMVContent.js +5 -0
  210. package/dist/tSMV/changeSMVContent.js.map +1 -0
  211. package/dist/tSMV/createSMV.d.ts +16 -0
  212. package/dist/tSMV/createSMV.js +32 -0
  213. package/dist/tSMV/createSMV.js.map +1 -0
  214. package/dist/tSampledValueControl/canAddSampledValueControl.d.ts +4 -0
  215. package/dist/tSampledValueControl/canAddSampledValueControl.js +27 -0
  216. package/dist/tSampledValueControl/canAddSampledValueControl.js.map +1 -0
  217. package/dist/tSampledValueControl/createSampledValueControl.d.ts +66 -0
  218. package/dist/tSampledValueControl/createSampledValueControl.js +74 -0
  219. package/dist/tSampledValueControl/createSampledValueControl.js.map +1 -0
  220. package/dist/tSampledValueControl/updateSampledValueControl.d.ts +14 -0
  221. package/dist/tSampledValueControl/updateSampledValueControl.js +60 -0
  222. package/dist/tSampledValueControl/updateSampledValueControl.js.map +1 -0
  223. package/dist/tServices/tConfReportControl/maxReportControl.d.ts +9 -0
  224. package/dist/tServices/tConfReportControl/maxReportControl.js +14 -0
  225. package/dist/tServices/tConfReportControl/maxReportControl.js.map +1 -0
  226. package/dist/tSubstation/removeProcessElement.d.ts +9 -0
  227. package/dist/tSubstation/removeProcessElement.js +50 -0
  228. package/dist/tSubstation/removeProcessElement.js.map +1 -0
  229. package/dist/tSubstation/updateLnType.d.ts +8 -0
  230. package/dist/tSubstation/updateLnType.js +96 -0
  231. package/dist/tSubstation/updateLnType.js.map +1 -0
  232. package/dist/tSubstation/updateSubstation.d.ts +5 -0
  233. package/dist/tSubstation/updateSubstation.js +75 -0
  234. package/dist/tSubstation/updateSubstation.js.map +1 -0
  235. package/dist/tVoltageLevel/updateVoltageLevel.d.ts +5 -0
  236. package/dist/tVoltageLevel/updateVoltageLevel.js +83 -0
  237. package/dist/tVoltageLevel/updateVoltageLevel.js.map +1 -0
  238. package/package.json +43 -0
@@ -0,0 +1,433 @@
1
+ import { nsd72, nsd73, nsd74, nsd7420, nsd81, } from "../foundation/codecomponents/nsds.js";
2
+ export const supportedCdc = [
3
+ "ACD",
4
+ "ACT",
5
+ "APC",
6
+ "ASG",
7
+ "BAC",
8
+ "BCR",
9
+ "BSC",
10
+ "CMV",
11
+ "DEL",
12
+ "DPC",
13
+ "DPL",
14
+ "HDEL",
15
+ "HMV",
16
+ "HST",
17
+ "HWYE",
18
+ "INC",
19
+ "INS",
20
+ "ISC",
21
+ "LPL",
22
+ "MV",
23
+ "ORG",
24
+ "ORS",
25
+ "SAV",
26
+ "SEC",
27
+ "SEQ",
28
+ "SPC",
29
+ "SPG",
30
+ "SPS",
31
+ "TCS",
32
+ "TSG",
33
+ "VSG",
34
+ "VSS",
35
+ "WYE",
36
+ ];
37
+ const cdcTag = new Set(supportedCdc);
38
+ export function isSupportedCdc(cdc) {
39
+ return cdcTag.has(cdc);
40
+ }
41
+ const defaultDoc72 = new DOMParser().parseFromString(nsd72, "application/xml");
42
+ const defaultDoc73 = new DOMParser().parseFromString(nsd73, "application/xml");
43
+ const defaultDoc74 = new DOMParser().parseFromString(nsd74, "application/xml");
44
+ const defaultDoc7420 = new DOMParser().parseFromString(nsd7420, "application/xml");
45
+ const defaultDoc81 = new DOMParser().parseFromString(nsd81, "application/xml");
46
+ /** A utility function that returns a JSON containing the structure of a logical node class
47
+ * as described in the IEC 61850-7-4 and IEC 61850-7-420 as JSON
48
+ * @param lnClassOrCdc the logical node class to be constructed
49
+ * @param nsds user defined NSD files defaulting to
50
+ * 8-1: 2003A2
51
+ * 7-4: 2007B3
52
+ * 7-420: 2019A4
53
+ * 7-3: 2007B3
54
+ * 7-2: 2007B3
55
+ * @returns A JSON object represeting NSD information of a logical node
56
+ */
57
+ export function nsdToJson(lnClassOrCdc, nsds) {
58
+ const doc74 = nsds && nsds["74"] ? nsds["74"] : defaultDoc74;
59
+ const doc7420 = nsds && nsds["7420"] ? nsds["7420"] : defaultDoc7420;
60
+ function getServiceConstructedAttributes(serviceDataAttribute) {
61
+ const doc81 = nsds && nsds["81"] ? nsds["81"] : defaultDoc81;
62
+ const type = serviceDataAttribute.getAttribute("type");
63
+ return Array.from(doc81
64
+ .querySelector(`ServiceConstructedAttributes > ServiceConstructedAttribute[name="${type}"]`)
65
+ ?.querySelectorAll("SubDataAttribute") ?? []);
66
+ }
67
+ function getServiceDataAttributesType(type) {
68
+ const doc81 = nsds && nsds["81"] ? nsds["81"] : defaultDoc81;
69
+ return Array.from(doc81
70
+ .querySelector(`ServiceCDCs > ServiceCDC[cdc="${type}"]`)
71
+ ?.querySelectorAll("ServiceDataAttribute") ?? []);
72
+ }
73
+ function getServiceDataAttributes(dataObject) {
74
+ const type = dataObject.getAttribute("type");
75
+ return getServiceDataAttributesType(type);
76
+ }
77
+ function getSubDataAttributesType(type) {
78
+ const doc73 = nsds && nsds["73"] ? nsds["73"] : defaultDoc73;
79
+ const doc72 = nsds && nsds["72"] ? nsds["72"] : defaultDoc72;
80
+ return Array.from(doc73
81
+ .querySelector(`ConstructedAttribute[name="${type}"]`)
82
+ ?.querySelectorAll(":scope > SubDataAttribute") ?? []).concat(Array.from(doc72
83
+ .querySelector(`ConstructedAttribute[name="${type}"]`)
84
+ ?.querySelectorAll(":scope > SubDataAttribute") ?? []));
85
+ }
86
+ function getSubDataAttributes(dataAttribute) {
87
+ const type = dataAttribute.getAttribute("type");
88
+ return getSubDataAttributesType(type);
89
+ }
90
+ function getDataAttributesType(type) {
91
+ const doc73 = nsds && nsds["73"] ? nsds["73"] : defaultDoc73;
92
+ if (["CSG", "CURVE", "ENG", "ING", "ASG", "SPG", "TSG", "VSG"].includes(`${type}`))
93
+ return Array.from(doc73
94
+ .querySelector(`CDC[name="${type}"][variant="SE"]`)
95
+ ?.querySelectorAll("DataAttribute") ?? []);
96
+ return Array.from(doc73
97
+ .querySelector(`CDC[name="${type}"]`)
98
+ ?.querySelectorAll("DataAttribute") ?? []);
99
+ }
100
+ function getDataAttributes(dataObject) {
101
+ const type = dataObject.getAttribute("type");
102
+ return getDataAttributesType(type);
103
+ }
104
+ function getSubDataObjectsType(type) {
105
+ const doc73 = nsds && nsds["73"] ? nsds["73"] : defaultDoc73;
106
+ return Array.from(doc73
107
+ .querySelector(`CDC[name="${type}"]`)
108
+ ?.querySelectorAll("SubDataObject") ?? []);
109
+ }
110
+ function getSubDataObjects(dataObject) {
111
+ const type = dataObject.getAttribute("type");
112
+ return getSubDataObjectsType(type);
113
+ }
114
+ function getDataObjects(lnClass) {
115
+ const baseClass = lnClass.ownerDocument.querySelector(`AbstractLNClass[name="${lnClass.getAttribute("base")}"]`);
116
+ const dataObject = [];
117
+ if (baseClass)
118
+ dataObject.push(...getDataObjects(baseClass));
119
+ const childDataObject = Array.from(lnClass.querySelectorAll(":scope > DataObject"));
120
+ dataObject.push(...childDataObject);
121
+ return dataObject;
122
+ }
123
+ function nsdEnumeration(underlyingType) {
124
+ let enumElement = null;
125
+ for (const doc of [defaultDoc72, defaultDoc73, doc74]) {
126
+ enumElement = doc.querySelector(`:root > Enumerations > Enumeration[name="${underlyingType}"]`);
127
+ if (enumElement)
128
+ break;
129
+ }
130
+ if (!enumElement)
131
+ return {};
132
+ const enumeration = {};
133
+ enumElement.querySelectorAll(":scope > Literal").forEach((literal) => {
134
+ const name = literal.getAttribute("name");
135
+ const literalVal = literal.getAttribute("literalVal");
136
+ const descID = literal.getAttribute("descID");
137
+ const deprecated = literal.getAttribute("deprecated");
138
+ const data = {
139
+ tagName: literal.tagName,
140
+ name,
141
+ literalVal,
142
+ };
143
+ if (descID)
144
+ data["descID"] = descID;
145
+ if (deprecated)
146
+ data["deprecated"] = deprecated;
147
+ enumeration[name] = data;
148
+ });
149
+ return enumeration;
150
+ }
151
+ function nsdServiceConstructedAttribute(serviceConstructedAttribute) {
152
+ const tagName = serviceConstructedAttribute.tagName;
153
+ const [name, presCond, descID, type, typeKind] = [
154
+ "name",
155
+ "presCond",
156
+ "descID",
157
+ "type",
158
+ "typeKind",
159
+ ].map((attr) => serviceConstructedAttribute.getAttribute(attr));
160
+ const data = {
161
+ tagName,
162
+ name,
163
+ presCond,
164
+ descID,
165
+ typeKind,
166
+ };
167
+ if (type)
168
+ data["type"] = type;
169
+ const mandatory = presCond === "M" ? true : undefined;
170
+ if (mandatory)
171
+ data["mandatory"] = mandatory;
172
+ let children = undefined;
173
+ if (typeKind === "CONSTRUCTED") {
174
+ children = {};
175
+ getSubDataAttributes(serviceConstructedAttribute).forEach((subDataAttribute) => {
176
+ const name = subDataAttribute.getAttribute("name");
177
+ children[name] = nsdSubDataAttribute(subDataAttribute);
178
+ });
179
+ }
180
+ if (children)
181
+ data["children"] = children;
182
+ return data;
183
+ }
184
+ function nsdServiceDataAttribute(serviceDataAttribute) {
185
+ const tagName = serviceDataAttribute.tagName;
186
+ const [name, fc, type, presCond, typeKind, underlyingType, underlyingTypeKind,] = [
187
+ "name",
188
+ "fc",
189
+ "type",
190
+ "presCond",
191
+ "typeKind",
192
+ "underlyingType",
193
+ "underlyingTypeKind",
194
+ ].map((attr) => serviceDataAttribute.getAttribute(attr));
195
+ const data = {
196
+ tagName,
197
+ name,
198
+ fc,
199
+ presCond,
200
+ typeKind,
201
+ };
202
+ const descID = serviceDataAttribute.getAttribute("descID");
203
+ if (descID)
204
+ data["descID"] = descID;
205
+ if (type)
206
+ data["type"] = type;
207
+ if (underlyingType)
208
+ data["underlyingType"] = underlyingType;
209
+ if (underlyingTypeKind)
210
+ data["underlyingTypeKind"] = underlyingTypeKind;
211
+ const children = {};
212
+ getServiceConstructedAttributes(serviceDataAttribute).forEach((subDataAttribute) => {
213
+ const name = subDataAttribute.getAttribute("name");
214
+ children[name] = nsdServiceConstructedAttribute(subDataAttribute);
215
+ });
216
+ if (Object.keys(children).length)
217
+ data["children"] = children;
218
+ return data;
219
+ }
220
+ function nsdSubDataAttribute(subDataAttribute) {
221
+ const [name, descID, presCond, type, presCondArgs, typeKind, minValue, maxValue, defaultValue,] = [
222
+ "name",
223
+ "descID",
224
+ "presCond",
225
+ "type",
226
+ "presCondArgs",
227
+ "typeKind",
228
+ "minValue",
229
+ "maxValue",
230
+ "defaultValue",
231
+ ].map((attr) => subDataAttribute.getAttribute(attr));
232
+ const tagName = subDataAttribute.tagName;
233
+ const data = { tagName, name, descID, presCond, type };
234
+ if (typeKind)
235
+ data["typeKind"] = typeKind;
236
+ if (minValue)
237
+ data["minValue"] = minValue;
238
+ if (maxValue)
239
+ data["maxValue"] = maxValue;
240
+ if (presCondArgs)
241
+ data["presCondArgs"] = presCondArgs;
242
+ if (defaultValue)
243
+ data["defaultValue"] = defaultValue;
244
+ const mandatory = presCond === "M" ? true : undefined;
245
+ if (mandatory)
246
+ data["mandatory"] = mandatory;
247
+ let children = undefined;
248
+ if (typeKind === "ENUMERATED") {
249
+ if (type)
250
+ children = nsdEnumeration(type);
251
+ }
252
+ else if (typeKind === "CONSTRUCTED") {
253
+ children = {};
254
+ getSubDataAttributes(subDataAttribute).forEach((subDataAttribute) => {
255
+ const name = subDataAttribute.getAttribute("name");
256
+ children[name] = nsdSubDataAttribute(subDataAttribute);
257
+ });
258
+ }
259
+ if (children)
260
+ data["children"] = children;
261
+ return data;
262
+ }
263
+ function nsdDataAttribute(dataAttribute, underlyingType, underlyingTypeKind) {
264
+ const [name, descID, presCond, fc] = [
265
+ "name",
266
+ "descID",
267
+ "presCond",
268
+ "fc",
269
+ ].map((attr) => dataAttribute.getAttribute(attr));
270
+ const tagName = dataAttribute.tagName;
271
+ const data = { tagName, name, presCond, fc };
272
+ if (descID)
273
+ data["descID"] = descID;
274
+ const [dchg, qchg, dupd] = ["dchg", "qchg", "dupd"].map((attr) => dataAttribute.getAttribute(attr) ?? undefined);
275
+ if (dchg)
276
+ data["dchg"] = dchg;
277
+ if (qchg)
278
+ data["qchg"] = qchg;
279
+ if (dupd)
280
+ data["dupd"] = dupd;
281
+ const [isArray, sizeAttribute] = ["isArray", "sizeAttribute"].map((attr) => dataAttribute.getAttribute(attr) ?? undefined);
282
+ if (isArray)
283
+ data["isArray"] = isArray;
284
+ if (sizeAttribute)
285
+ data["sizeAttribute"] = sizeAttribute;
286
+ let type = dataAttribute.getAttribute("type") ?? undefined;
287
+ let typeKind = dataAttribute.getAttribute("typeKind") ?? undefined;
288
+ const defaultValue = dataAttribute.getAttribute("defaultValue") ?? undefined;
289
+ if (defaultValue)
290
+ data["defaultValue"] = defaultValue;
291
+ const mandatory = presCond === "M" ? true : undefined;
292
+ if (mandatory)
293
+ data["mandatory"] = mandatory;
294
+ const presCondArgs = dataAttribute.getAttribute("presCondArgs") ?? undefined;
295
+ if (presCondArgs)
296
+ data["presCondArgs"] = presCondArgs;
297
+ if (typeKind === "undefined" && underlyingTypeKind)
298
+ typeKind = underlyingTypeKind;
299
+ if (!type && underlyingType)
300
+ type = underlyingType;
301
+ let children = undefined;
302
+ if (typeKind === "ENUMERATED") {
303
+ if (type)
304
+ children = nsdEnumeration(type);
305
+ }
306
+ else if (typeKind === "CONSTRUCTED") {
307
+ children = {};
308
+ const childSubDa = getSubDataAttributesType(type);
309
+ childSubDa.forEach((subDataAttribute) => {
310
+ const name = subDataAttribute.getAttribute("name");
311
+ children[name] = nsdSubDataAttribute(subDataAttribute);
312
+ });
313
+ }
314
+ if (type)
315
+ data["type"] = type;
316
+ if (typeKind)
317
+ data["typeKind"] = typeKind;
318
+ if (children && type !== "EnumDA")
319
+ data["children"] = children;
320
+ return data;
321
+ }
322
+ function dataObjectName(dataObject) {
323
+ const multiInstances = ['Omulti', 'Mmulti'];
324
+ const instance = multiInstances.includes(dataObject.getAttribute("presCond")) ? '1' : '';
325
+ const name = dataObject.getAttribute("name");
326
+ return `${name}${instance}`;
327
+ }
328
+ function nsdDataObject(dataObject) {
329
+ const [type, descID, presCond, dsPresCond, transient] = [
330
+ "type",
331
+ "descID",
332
+ "presCond",
333
+ "dsPresCond",
334
+ "transient",
335
+ ].map((attr) => dataObject.getAttribute(attr));
336
+ const name = dataObjectName(dataObject); // adopt when presCond is Omulti
337
+ const tagName = dataObject.tagName;
338
+ const presCondArgsID = dataObject.getAttribute("presCondArgsID") ?? undefined;
339
+ const deprecated = dataObject.getAttribute("deprecated") ?? undefined;
340
+ const dsPresCondArgsID = dataObject.getAttribute("dsPresCondArgsID") ?? undefined;
341
+ const presCondArgs = dataObject.getAttribute("presCondArgs") ?? undefined;
342
+ const dsPresCondArgs = dataObject.getAttribute("dsPresCondArgs") ?? undefined;
343
+ const [underlyingType, underlyingTypeKind] = [
344
+ "underlyingType",
345
+ "underlyingTypeKind",
346
+ ].map((attr) => dataObject.getAttribute(attr) ?? undefined);
347
+ const [isArray, sizeAttribute] = ["isArray", "sizeAttribute"].map((attr) => dataObject.getAttribute(attr) ?? undefined);
348
+ const mandatory = presCond === "M" ? true : undefined;
349
+ const children = {};
350
+ getSubDataObjects(dataObject).forEach((dataObject) => {
351
+ const name = dataObject.getAttribute("name");
352
+ children[name] = nsdDataObject(dataObject);
353
+ });
354
+ const typeKindParameterized = dataObject.getAttribute("typeKindParameterized");
355
+ getDataAttributes(dataObject).forEach((dataAttribute) => {
356
+ const name = dataAttribute.getAttribute("name");
357
+ children[name] = nsdDataAttribute(dataAttribute, underlyingType, underlyingTypeKind);
358
+ });
359
+ getServiceDataAttributes(dataObject).forEach((serviceDataAttribute) => {
360
+ const name = serviceDataAttribute.getAttribute("name");
361
+ children[name] = nsdServiceDataAttribute(serviceDataAttribute);
362
+ });
363
+ const data = {
364
+ tagName,
365
+ name,
366
+ descID,
367
+ presCond,
368
+ type,
369
+ children,
370
+ };
371
+ if (underlyingType)
372
+ data["underlyingType"] = underlyingType;
373
+ if (underlyingTypeKind)
374
+ data["underlyingTypeKind"] = underlyingTypeKind;
375
+ if (transient)
376
+ data["transient"] = transient;
377
+ if (presCondArgsID)
378
+ data["presCondArgsID"] = presCondArgsID;
379
+ if (dsPresCondArgsID)
380
+ data["dsPresCondArgsID"] = dsPresCondArgsID;
381
+ if (mandatory)
382
+ data["mandatory"] = mandatory;
383
+ if (presCondArgs)
384
+ data["presCondArgs"] = presCondArgs;
385
+ if (dsPresCondArgs)
386
+ data["dsPresCondArgs"] = dsPresCondArgs;
387
+ if (dsPresCond)
388
+ data["dsPresCond"] = dsPresCond;
389
+ if (deprecated)
390
+ data["deprecated"] = deprecated;
391
+ if (isArray)
392
+ data["isArray"] = isArray;
393
+ if (sizeAttribute)
394
+ data["sizeAttribute"] = sizeAttribute;
395
+ if (typeKindParameterized)
396
+ data["typeKindParameterized"] = typeKindParameterized;
397
+ return data;
398
+ }
399
+ function CdcChildren(type) {
400
+ const children = {};
401
+ getSubDataObjectsType(type).forEach((dataObject) => {
402
+ const name = dataObject.getAttribute("name");
403
+ children[name] = nsdDataObject(dataObject);
404
+ });
405
+ getDataAttributesType(type).forEach((dataAttribute) => {
406
+ const name = dataAttribute.getAttribute("name");
407
+ children[name] = nsdDataAttribute(dataAttribute, undefined, undefined);
408
+ });
409
+ getServiceDataAttributesType(type).forEach((serviceDataAttribute) => {
410
+ const name = serviceDataAttribute.getAttribute("name");
411
+ children[name] = nsdServiceDataAttribute(serviceDataAttribute);
412
+ });
413
+ return children;
414
+ }
415
+ if (lnClassOrCdc === undefined)
416
+ return;
417
+ else if (isSupportedCdc(lnClassOrCdc))
418
+ return CdcChildren(lnClassOrCdc);
419
+ else {
420
+ const nsdLnClass74 = doc74.querySelector(`LNClass[name="${lnClassOrCdc}"]`);
421
+ const nsdLnClass7420 = doc7420.querySelector(`LNClass[name="${lnClassOrCdc}"]`);
422
+ const nsdLnClass = nsdLnClass74 || nsdLnClass7420;
423
+ if (!nsdLnClass)
424
+ return undefined;
425
+ const lnClassJson = {};
426
+ getDataObjects(nsdLnClass).forEach((dataObject) => {
427
+ const name = dataObjectName(dataObject);
428
+ lnClassJson[name] = nsdDataObject(dataObject);
429
+ });
430
+ return lnClassJson;
431
+ }
432
+ }
433
+ //# sourceMappingURL=nsdToJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nsdToJson.js","sourceRoot":"","sources":["../../tDataTypeTemplates/nsdToJson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Remove } from "@openscd/oscd-api";
2
+ export type RemoveDataTypeOptions = {
3
+ /** Whether a linked data type will be removed */
4
+ force: boolean;
5
+ };
6
+ /**
7
+ * Utility function to remove data types LNodeType, DOType, DAType or EnumType.
8
+ * The function makes sure to not leave new unlinked data types .
9
+ * @param remove - Remove edit the data type
10
+ * @returns Remove array containing all to be removed data types
11
+ */
12
+ export declare function removeDataType(dtRemove: Remove, options?: RemoveDataTypeOptions): Remove[];
@@ -0,0 +1,62 @@
1
+ function orphanRemoves(dtt, orphans) {
2
+ return orphans
3
+ .map((orphan) => {
4
+ const id = orphan.getAttribute("id");
5
+ const btRemovedDataType = dtt.querySelector(`:scope > *[id="${id}"]`);
6
+ return { node: btRemovedDataType };
7
+ })
8
+ .filter((remove) => remove);
9
+ }
10
+ function removeOrphans(orphans) {
11
+ orphans.forEach((orphan) => orphan.remove());
12
+ }
13
+ function isLNodeTypeReferenced(lNodeType) {
14
+ const dtt = lNodeType.closest("DataTypeTemplates");
15
+ const id = lNodeType.getAttribute("id");
16
+ const linkedAnyLn = dtt?.ownerDocument.querySelector(`:root > IED *[lnType="${id}"]`);
17
+ return !!linkedAnyLn;
18
+ }
19
+ function isDataTypeReferenced(dataType) {
20
+ const dtt = dataType.closest("DataTypeTemplates");
21
+ const id = dataType.getAttribute("id");
22
+ const linkedData = dtt?.querySelector(`:scope *[type="${id}"]`);
23
+ return !!linkedData;
24
+ }
25
+ function getOrphans(ddt, saveOrphans = []) {
26
+ return Array.from(ddt.querySelectorAll(":scope > *"))
27
+ .filter((dataType) => !isDataTypeReferenced(dataType))
28
+ .filter((orphan) => !saveOrphans.includes(orphan));
29
+ }
30
+ function clonedDataType(dtt, dataType) {
31
+ return dtt.querySelector(`:scope > *[id="${dataType.getAttribute('id')}"]`);
32
+ }
33
+ function isDataTypeLinked(dataType) {
34
+ if (dataType.tagName === 'LNodeType')
35
+ return isLNodeTypeReferenced(dataType);
36
+ return isDataTypeReferenced(dataType);
37
+ }
38
+ /**
39
+ * Utility function to remove data types LNodeType, DOType, DAType or EnumType.
40
+ * The function makes sure to not leave new unlinked data types .
41
+ * @param remove - Remove edit the data type
42
+ * @returns Remove array containing all to be removed data types
43
+ */
44
+ export function removeDataType(dtRemove, options = { force: false }) {
45
+ const dataType = dtRemove.node;
46
+ const dtt = dataType.closest("DataTypeTemplates");
47
+ const dttClone = dataType.closest("DataTypeTemplates")?.cloneNode(true);
48
+ if (!dttClone)
49
+ return [];
50
+ if (isDataTypeLinked(dataType) && !options.force)
51
+ return [];
52
+ const saveOrphans = getOrphans(dttClone);
53
+ const removes = [];
54
+ let orphans = [clonedDataType(dttClone, dataType)];
55
+ while (orphans.length > 0) {
56
+ removes.push(...orphanRemoves(dtt, orphans));
57
+ removeOrphans(orphans);
58
+ orphans = getOrphans(dttClone, saveOrphans);
59
+ }
60
+ return removes;
61
+ }
62
+ //# sourceMappingURL=removeDataType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeDataType.js","sourceRoot":"","sources":["../../tDataTypeTemplates/removeDataType.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { EditV2 } from "@openscd/oscd-api";
2
+ export declare function updateLNodeType(lNodeType: Element, targetDoc: XMLDocument): EditV2[];
@@ -0,0 +1,22 @@
1
+ import { importLNodeType } from "./importLNodeType.js";
2
+ import { updateLnType } from "../tSubstation/updateLnType.js";
3
+ function findExistingLNodeType(lNodeType, targetDoc) {
4
+ const targetScl = targetDoc.querySelector("SCL");
5
+ if (!targetScl)
6
+ return null;
7
+ return targetScl.querySelector(`:root > DataTypeTemplates > LNodeType[id="${lNodeType.getAttribute("id")}"]`);
8
+ }
9
+ export function updateLNodeType(lNodeType, targetDoc) {
10
+ // Find existing LNodeType in targetDoc
11
+ const existingLNodeType = findExistingLNodeType(lNodeType, targetDoc);
12
+ if (!existingLNodeType)
13
+ return [];
14
+ // Import the new one including its children
15
+ const inserts = importLNodeType(lNodeType, targetDoc);
16
+ // Remove the existing LNodeType
17
+ const removeEdit = { node: existingLNodeType };
18
+ // Update the substation section
19
+ const removes = updateLnType(lNodeType, targetDoc);
20
+ return [...inserts, removeEdit, ...removes];
21
+ }
22
+ //# sourceMappingURL=updateLNodeType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateLNodeType.js","sourceRoot":"","sources":["../../tDataTypeTemplates/updateLNodeType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,SAAS,qBAAqB,CAAC,SAAkB,EAAE,SAAsB;IACrE,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,SAAS,CAAC,aAAa,CAC1B,6CAA6C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAChF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,SAAsB;IAEtE,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtE,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAC;IAElC,4CAA4C;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEtD,gCAAgC;IAChC,MAAM,UAAU,GAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAEvD,gCAAgC;IAChC,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type DoesFcdaMeetExtRefRestrictionsOptions = {
2
+ /** The control block type to check against `pServT` */
3
+ controlBlockType?: "GOOSE" | "Report" | "SMV" | "Poll";
4
+ /** Whether to check only service type (pServT) and basic type (not pDO and pLN). Default false */
5
+ checkOnlyBType?: boolean;
6
+ };
7
+ /**
8
+ * This function checks if restrictions of an `ExtRef` element given by
9
+ * `pDO` and optionally by `pDA`, `pLN` and `pServT` are met by the FCDA/FCD
10
+ * @param extRef - The `ExtRef` element to be checked against
11
+ * @param data - The `FCDA` element to be checked
12
+ * @param controlBlockType - The control block type to check back with `pServT`
13
+ * @returns Whether the FCDA basic types meet the restrictions of the
14
+ * ExtRef element
15
+ */
16
+ export declare function doesFcdaMeetExtRefRestrictions(extRef: Element, fcda: Element, options?: DoesFcdaMeetExtRefRestrictionsOptions): boolean;
@@ -0,0 +1,52 @@
1
+ import { fcdaBaseTypes } from "../tFCDA/fcdaBaseTypes.js";
2
+ import { extRefTypeRestrictions } from "./extRefTypeRestrictions.js";
3
+ function isBasicTypeEqual(bTypeFcda, bTypeExtRef) {
4
+ // Basic types not the same
5
+ return (bTypeFcda === bTypeExtRef ||
6
+ // Enum to INT32 mappings specifically allowed, Ed 1 to Ed 2 compatibility
7
+ (bTypeFcda === "INT32" && bTypeExtRef === "Enum") ||
8
+ (bTypeFcda === "Enum" && bTypeExtRef === "INT32"));
9
+ }
10
+ /**
11
+ * This function checks if restrictions of an `ExtRef` element given by
12
+ * `pDO` and optionally by `pDA`, `pLN` and `pServT` are met by the FCDA/FCD
13
+ * @param extRef - The `ExtRef` element to be checked against
14
+ * @param data - The `FCDA` element to be checked
15
+ * @param controlBlockType - The control block type to check back with `pServT`
16
+ * @returns Whether the FCDA basic types meet the restrictions of the
17
+ * ExtRef element
18
+ */
19
+ export function doesFcdaMeetExtRefRestrictions(extRef, fcda, options = { checkOnlyBType: false }) {
20
+ // Vendor does not provide data for the check so any FCDA meets restriction
21
+ if (!extRef.hasAttribute("pDO"))
22
+ return true;
23
+ const fcdaTypes = fcdaBaseTypes(fcda);
24
+ const extRefSpec = extRefTypeRestrictions(extRef);
25
+ // Check cannot be performed assume restriction check to fail
26
+ if (!extRefSpec || !fcdaTypes)
27
+ return false;
28
+ // If service type specified it must match
29
+ if (extRef.getAttribute("pServT") &&
30
+ options.controlBlockType &&
31
+ options.controlBlockType !== extRef.getAttribute("pServT"))
32
+ return false;
33
+ // Some vendors allow subscribing of e.g. ACT to SPS, both bType BOOLEAN
34
+ if (options.checkOnlyBType)
35
+ return isBasicTypeEqual(fcdaTypes.bType, extRefSpec.bType);
36
+ if (extRef.getAttribute("pLN") &&
37
+ extRef.getAttribute("pLN") !== fcda.getAttribute("lnClass"))
38
+ return false;
39
+ // Ed 1 to Ed 2 compatibility. The following are compatible:
40
+ // ENS <> INS, ENC <> INC
41
+ if (fcdaTypes.cdc !== extRefSpec.cdc &&
42
+ !(fcdaTypes.cdc === "ENS" && extRefSpec.cdc === "INS") &&
43
+ !(fcdaTypes.cdc === "INS" && extRefSpec.cdc === "ENS") &&
44
+ !(fcdaTypes.cdc === "ENC" && extRefSpec.cdc === "INC") &&
45
+ !(fcdaTypes.cdc === "INC" && extRefSpec.cdc === "ENC"))
46
+ return false;
47
+ if (extRef.getAttribute("pDA") &&
48
+ !isBasicTypeEqual(fcdaTypes.bType, extRefSpec.bType))
49
+ return false;
50
+ return true;
51
+ }
52
+ //# sourceMappingURL=doesFcdaMeetExtRefRestrictions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doesFcdaMeetExtRefRestrictions.js","sourceRoot":"","sources":["../../tExtRef/doesFcdaMeetExtRefRestrictions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,SAAS,gBAAgB,CACvB,SAA6B,EAC7B,WAA+B;IAE/B,2BAA2B;IAC3B,OAAO,CACL,SAAS,KAAK,WAAW;QACzB,0EAA0E;QAC1E,CAAC,SAAS,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM,CAAC;QACjD,CAAC,SAAS,KAAK,MAAM,IAAI,WAAW,KAAK,OAAO,CAAC,CAClD,CAAC;AACJ,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAAe,EACf,IAAa,EACb,UAAiD,EAAE,cAAc,EAAE,KAAK,EAAE;IAE1E,2EAA2E;IAC3E,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAElD,6DAA6D;IAC7D,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE5C,0CAA0C;IAC1C,IACE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC7B,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,gBAAgB,KAAK,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QAE1D,OAAO,KAAK,CAAC;IAEf,wEAAwE;IACxE,IAAI,OAAO,CAAC,cAAc;QACxB,OAAO,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAE7D,IACE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAE3D,OAAO,KAAK,CAAC;IAEf,4DAA4D;IAC5D,yBAAyB;IACzB,IACE,SAAS,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG;QAChC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC;QAEtD,OAAO,KAAK,CAAC;IAEf,IACE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;QAEpD,OAAO,KAAK,CAAC;IAEf,OAAO,IAAI,CAAC;AACd,CAAC"}