@itwin/ecschema-metadata 3.4.0-dev.50 → 3.4.0-dev.56

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/lib/cjs/Constants.d.ts +23 -23
  2. package/lib/cjs/Constants.js +33 -33
  3. package/lib/cjs/Constants.js.map +1 -1
  4. package/lib/cjs/Context.d.ts +139 -139
  5. package/lib/cjs/Context.js +204 -204
  6. package/lib/cjs/DelayedPromise.d.ts +88 -88
  7. package/lib/cjs/DelayedPromise.js +91 -91
  8. package/lib/cjs/DelayedPromise.js.map +1 -1
  9. package/lib/cjs/Deserialization/AbstractParser.d.ts +45 -45
  10. package/lib/cjs/Deserialization/AbstractParser.js +11 -11
  11. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/Helper.d.ts +251 -251
  13. package/lib/cjs/Deserialization/Helper.js +843 -843
  14. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  15. package/lib/cjs/Deserialization/JsonParser.d.ts +165 -165
  16. package/lib/cjs/Deserialization/JsonParser.js +680 -680
  17. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  18. package/lib/cjs/Deserialization/JsonProps.d.ts +282 -282
  19. package/lib/cjs/Deserialization/JsonProps.js +9 -9
  20. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  21. package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts +34 -34
  22. package/lib/cjs/Deserialization/SchemaGraphUtil.js +77 -77
  23. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  24. package/lib/cjs/Deserialization/XmlParser.d.ts +85 -85
  25. package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
  26. package/lib/cjs/Deserialization/XmlParser.js +973 -973
  27. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  28. package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts +54 -54
  29. package/lib/cjs/Deserialization/XmlSerializationUtils.js +174 -174
  30. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  31. package/lib/cjs/ECName.d.ts +30 -30
  32. package/lib/cjs/ECName.js +85 -85
  33. package/lib/cjs/ECName.js.map +1 -1
  34. package/lib/cjs/ECObjects.d.ts +162 -162
  35. package/lib/cjs/ECObjects.js +453 -453
  36. package/lib/cjs/ECObjects.js.map +1 -1
  37. package/lib/cjs/Exception.d.ts +43 -43
  38. package/lib/cjs/Exception.js +86 -86
  39. package/lib/cjs/Exception.js.map +1 -1
  40. package/lib/cjs/Interfaces.d.ts +66 -66
  41. package/lib/cjs/Interfaces.js +9 -9
  42. package/lib/cjs/Interfaces.js.map +1 -1
  43. package/lib/cjs/Metadata/Class.d.ts +243 -243
  44. package/lib/cjs/Metadata/Class.js +558 -558
  45. package/lib/cjs/Metadata/Class.js.map +1 -1
  46. package/lib/cjs/Metadata/Constant.d.ts +64 -64
  47. package/lib/cjs/Metadata/Constant.js +123 -123
  48. package/lib/cjs/Metadata/Constant.js.map +1 -1
  49. package/lib/cjs/Metadata/CustomAttribute.d.ts +23 -23
  50. package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
  51. package/lib/cjs/Metadata/CustomAttribute.js +27 -27
  52. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  53. package/lib/cjs/Metadata/CustomAttributeClass.d.ts +39 -39
  54. package/lib/cjs/Metadata/CustomAttributeClass.js +68 -68
  55. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  56. package/lib/cjs/Metadata/EntityClass.d.ts +77 -77
  57. package/lib/cjs/Metadata/EntityClass.js +230 -230
  58. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  59. package/lib/cjs/Metadata/Enumeration.d.ts +86 -86
  60. package/lib/cjs/Metadata/Enumeration.js +159 -159
  61. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  62. package/lib/cjs/Metadata/Format.d.ts +98 -98
  63. package/lib/cjs/Metadata/Format.d.ts.map +1 -1
  64. package/lib/cjs/Metadata/Format.js +242 -242
  65. package/lib/cjs/Metadata/Format.js.map +1 -1
  66. package/lib/cjs/Metadata/InvertedUnit.d.ts +49 -49
  67. package/lib/cjs/Metadata/InvertedUnit.js +97 -97
  68. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  69. package/lib/cjs/Metadata/KindOfQuantity.d.ts +65 -65
  70. package/lib/cjs/Metadata/KindOfQuantity.js +225 -225
  71. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  72. package/lib/cjs/Metadata/Mixin.d.ts +54 -54
  73. package/lib/cjs/Metadata/Mixin.js +113 -113
  74. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  75. package/lib/cjs/Metadata/OverrideFormat.d.ts +55 -55
  76. package/lib/cjs/Metadata/OverrideFormat.js +88 -88
  77. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  78. package/lib/cjs/Metadata/Phenomenon.d.ts +33 -33
  79. package/lib/cjs/Metadata/Phenomenon.js +59 -59
  80. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  81. package/lib/cjs/Metadata/Property.d.ts +197 -197
  82. package/lib/cjs/Metadata/Property.js +491 -491
  83. package/lib/cjs/Metadata/Property.js.map +1 -1
  84. package/lib/cjs/Metadata/PropertyCategory.d.ts +39 -39
  85. package/lib/cjs/Metadata/PropertyCategory.js +61 -61
  86. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  87. package/lib/cjs/Metadata/RelationshipClass.d.ts +152 -152
  88. package/lib/cjs/Metadata/RelationshipClass.js +349 -349
  89. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  90. package/lib/cjs/Metadata/Schema.d.ts +291 -291
  91. package/lib/cjs/Metadata/Schema.js +520 -520
  92. package/lib/cjs/Metadata/Schema.js.map +1 -1
  93. package/lib/cjs/Metadata/SchemaItem.d.ts +61 -61
  94. package/lib/cjs/Metadata/SchemaItem.js +136 -136
  95. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  96. package/lib/cjs/Metadata/Unit.d.ts +76 -76
  97. package/lib/cjs/Metadata/Unit.js +162 -162
  98. package/lib/cjs/Metadata/UnitSystem.d.ts +20 -20
  99. package/lib/cjs/Metadata/UnitSystem.js +29 -29
  100. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  101. package/lib/cjs/PropertyTypes.d.ts +49 -49
  102. package/lib/cjs/PropertyTypes.d.ts.map +1 -1
  103. package/lib/cjs/PropertyTypes.js +91 -75
  104. package/lib/cjs/PropertyTypes.js.map +1 -1
  105. package/lib/cjs/SchemaJsonLocater.d.ts +34 -34
  106. package/lib/cjs/SchemaJsonLocater.js +42 -42
  107. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  108. package/lib/cjs/SchemaKey.d.ts +110 -110
  109. package/lib/cjs/SchemaKey.d.ts.map +1 -1
  110. package/lib/cjs/SchemaKey.js +219 -220
  111. package/lib/cjs/SchemaKey.js.map +1 -1
  112. package/lib/cjs/SchemaLoader.d.ts +23 -23
  113. package/lib/cjs/SchemaLoader.js +47 -47
  114. package/lib/cjs/SchemaLoader.js.map +1 -1
  115. package/lib/cjs/SchemaPartVisitorDelegate.d.ts +274 -274
  116. package/lib/cjs/SchemaPartVisitorDelegate.js +212 -212
  117. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  118. package/lib/cjs/UnitConversion/Graph.d.ts +34 -34
  119. package/lib/cjs/UnitConversion/Graph.js +83 -83
  120. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  121. package/lib/cjs/UnitConversion/Parser.d.ts +8 -8
  122. package/lib/cjs/UnitConversion/Parser.d.ts.map +1 -1
  123. package/lib/cjs/UnitConversion/Parser.js +42 -41
  124. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  125. package/lib/cjs/UnitConversion/UnitConversion.d.ts +45 -45
  126. package/lib/cjs/UnitConversion/UnitConversion.js +77 -77
  127. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  128. package/lib/cjs/UnitConversion/UnitConverter.d.ts +39 -39
  129. package/lib/cjs/UnitConversion/UnitConverter.d.ts.map +1 -1
  130. package/lib/cjs/UnitConversion/UnitConverter.js +116 -116
  131. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  132. package/lib/cjs/UnitConversion/UnitTree.d.ts +43 -43
  133. package/lib/cjs/UnitConversion/UnitTree.d.ts.map +1 -1
  134. package/lib/cjs/UnitConversion/UnitTree.js +169 -169
  135. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  136. package/lib/cjs/UnitProvider/SchemaUnitProvider.d.ts +77 -77
  137. package/lib/cjs/UnitProvider/SchemaUnitProvider.js +236 -236
  138. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  139. package/lib/cjs/Validation/SchemaWalker.d.ts +23 -23
  140. package/lib/cjs/Validation/SchemaWalker.js +53 -53
  141. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  142. package/lib/cjs/ecschema-metadata.d.ts +51 -51
  143. package/lib/cjs/ecschema-metadata.js +96 -96
  144. package/lib/cjs/ecschema-metadata.js.map +1 -1
  145. package/lib/cjs/utils/SchemaGraph.d.ts +25 -25
  146. package/lib/cjs/utils/SchemaGraph.d.ts.map +1 -1
  147. package/lib/cjs/utils/SchemaGraph.js +65 -65
  148. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  149. package/package.json +7 -7
@@ -1,66 +1,66 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.SchemaGraph = void 0;
8
- /**
9
- * Utility class for detecting cyclic references in a Schema graph.
10
- * @beta
11
- */
12
- class SchemaGraph {
13
- /**
14
- * Initializes a new SchemaGraph instance.
15
- * @param schema The schema to analyze.
16
- */
17
- constructor(schema) {
18
- this._schemas = [];
19
- this.populateGraph(schema);
20
- }
21
- /**
22
- * Detected cyclic references in a schema.
23
- * @returns True if a cycle is found.
24
- */
25
- detectCycles() {
26
- const visited = {};
27
- const recStack = {};
28
- const cycles = [];
29
- for (const schema of this._schemas) {
30
- if (this.detectCycleUtil(schema, visited, recStack, cycles)) {
31
- return cycles.length > 0 ? cycles : undefined;
32
- }
33
- }
34
- return undefined;
35
- }
36
- detectCycleUtil(schema, visited, recStack, cycles) {
37
- let cycleFound = false;
38
- if (!visited[schema.name]) {
39
- visited[schema.name] = true;
40
- recStack[schema.name] = true;
41
- for (const refSchema of schema.references) {
42
- if (!visited[refSchema.name] && this.detectCycleUtil(refSchema, visited, recStack, cycles)) {
43
- cycles.push({ schema, refSchema });
44
- cycleFound = true;
45
- }
46
- else if (recStack[refSchema.name]) {
47
- cycles.push({ schema, refSchema });
48
- cycleFound = true;
49
- }
50
- }
51
- }
52
- if (!cycleFound)
53
- recStack[schema.name] = false;
54
- return cycleFound;
55
- }
56
- populateGraph(schema) {
57
- if (this._schemas.includes(schema))
58
- return;
59
- this._schemas.push(schema);
60
- for (const refSchema of schema.references) {
61
- this.populateGraph(refSchema);
62
- }
63
- }
64
- }
65
- exports.SchemaGraph = SchemaGraph;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SchemaGraph = void 0;
8
+ /**
9
+ * Utility class for detecting cyclic references in a Schema graph.
10
+ * @beta
11
+ */
12
+ class SchemaGraph {
13
+ /**
14
+ * Initializes a new SchemaGraph instance.
15
+ * @param schema The schema to analyze.
16
+ */
17
+ constructor(schema) {
18
+ this._schemas = [];
19
+ this.populateGraph(schema);
20
+ }
21
+ /**
22
+ * Detected cyclic references in a schema.
23
+ * @returns True if a cycle is found.
24
+ */
25
+ detectCycles() {
26
+ const visited = {};
27
+ const recStack = {};
28
+ const cycles = [];
29
+ for (const schema of this._schemas) {
30
+ if (this.detectCycleUtil(schema, visited, recStack, cycles)) {
31
+ return cycles.length > 0 ? cycles : undefined;
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+ detectCycleUtil(schema, visited, recStack, cycles) {
37
+ let cycleFound = false;
38
+ if (!visited[schema.name]) {
39
+ visited[schema.name] = true;
40
+ recStack[schema.name] = true;
41
+ for (const refSchema of schema.references) {
42
+ if (!visited[refSchema.name] && this.detectCycleUtil(refSchema, visited, recStack, cycles)) {
43
+ cycles.push({ schema, refSchema });
44
+ cycleFound = true;
45
+ }
46
+ else if (recStack[refSchema.name]) {
47
+ cycles.push({ schema, refSchema });
48
+ cycleFound = true;
49
+ }
50
+ }
51
+ }
52
+ if (!cycleFound)
53
+ recStack[schema.name] = false;
54
+ return cycleFound;
55
+ }
56
+ populateGraph(schema) {
57
+ if (this._schemas.includes(schema))
58
+ return;
59
+ this._schemas.push(schema);
60
+ for (const refSchema of schema.references) {
61
+ this.populateGraph(refSchema);
62
+ }
63
+ }
64
+ }
65
+ exports.SchemaGraph = SchemaGraph;
66
66
  //# sourceMappingURL=SchemaGraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaGraph.js","sourceRoot":"","sources":["../../../src/utils/SchemaGraph.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAU/F;;;GAGG;AACH,MAAa,WAAW;IAGtB;;;OAGG;IACH,YAAmB,MAAc;QANzB,aAAQ,GAAa,EAAE,CAAC;QAO9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;gBAC3D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;aAC/C;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,OAAY,EAAE,QAAa,EAAE,MAAwB;QAC3F,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAE7B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;oBAC1F,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;oBACjC,UAAU,GAAG,IAAI,CAAC;iBACnB;qBAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;oBACjC,UAAU,GAAG,IAAI,CAAC;iBACnB;aACF;SACF;QACD,IAAI,CAAC,UAAU;YACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAEhC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,OAAO;QAET,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;YACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC/B;IACH,CAAC;CACF;AA9DD,kCA8DC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Schema } from \"../Metadata/Schema\";\r\n\r\n/** @beta */\r\nexport interface ReferenceCycle {\r\n schema: Schema;\r\n refSchema: Schema;\r\n}\r\n\r\n/**\r\n * Utility class for detecting cyclic references in a Schema graph.\r\n * @beta\r\n */\r\nexport class SchemaGraph {\r\n private _schemas: Schema[] = [];\r\n\r\n /**\r\n * Initializes a new SchemaGraph instance.\r\n * @param schema The schema to analyze.\r\n */\r\n public constructor(schema: Schema) {\r\n this.populateGraph(schema);\r\n }\r\n\r\n /**\r\n * Detected cyclic references in a schema.\r\n * @returns True if a cycle is found.\r\n */\r\n public detectCycles(): ReferenceCycle[] | undefined {\r\n const visited = {};\r\n const recStack = {};\r\n const cycles: ReferenceCycle[] = [];\r\n\r\n for (const schema of this._schemas) {\r\n if (this.detectCycleUtil(schema, visited, recStack, cycles)) {\r\n return cycles.length > 0 ? cycles : undefined;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private detectCycleUtil(schema: Schema, visited: any, recStack: any, cycles: ReferenceCycle[]): boolean {\r\n let cycleFound = false;\r\n\r\n if (!visited[schema.name]) {\r\n visited[schema.name] = true;\r\n recStack[schema.name] = true;\r\n\r\n for (const refSchema of schema.references) {\r\n if (!visited[refSchema.name] && this.detectCycleUtil(refSchema, visited, recStack, cycles)) {\r\n cycles.push({schema, refSchema});\r\n cycleFound = true;\r\n } else if (recStack[refSchema.name]) {\r\n cycles.push({schema, refSchema});\r\n cycleFound = true;\r\n }\r\n }\r\n }\r\n if (!cycleFound)\r\n recStack[schema.name] = false;\r\n\r\n return cycleFound;\r\n }\r\n\r\n private populateGraph(schema: Schema) {\r\n if (this._schemas.includes(schema))\r\n return;\r\n\r\n this._schemas.push(schema);\r\n\r\n for (const refSchema of schema.references) {\r\n this.populateGraph(refSchema);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SchemaGraph.js","sourceRoot":"","sources":["../../../src/utils/SchemaGraph.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAU/F;;;GAGG;AACH,MAAa,WAAW;IAGtB;;;OAGG;IACH,YAAmB,MAAc;QANzB,aAAQ,GAAa,EAAE,CAAC;QAO9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;gBAC3D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;aAC/C;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,OAAY,EAAE,QAAa,EAAE,MAAwB;QAC3F,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAE7B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;oBAC1F,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;oBACjC,UAAU,GAAG,IAAI,CAAC;iBACnB;qBAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;oBACjC,UAAU,GAAG,IAAI,CAAC;iBACnB;aACF;SACF;QACD,IAAI,CAAC,UAAU;YACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAEhC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,OAAO;QAET,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;YACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC/B;IACH,CAAC;CACF;AA9DD,kCA8DC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Schema } from \"../Metadata/Schema\";\n\n/** @internal */\nexport interface ReferenceCycle {\n schema: Schema;\n refSchema: Schema;\n}\n\n/**\n * Utility class for detecting cyclic references in a Schema graph.\n * @beta\n */\nexport class SchemaGraph {\n private _schemas: Schema[] = [];\n\n /**\n * Initializes a new SchemaGraph instance.\n * @param schema The schema to analyze.\n */\n public constructor(schema: Schema) {\n this.populateGraph(schema);\n }\n\n /**\n * Detected cyclic references in a schema.\n * @returns True if a cycle is found.\n */\n public detectCycles(): ReferenceCycle[] | undefined {\n const visited = {};\n const recStack = {};\n const cycles: ReferenceCycle[] = [];\n\n for (const schema of this._schemas) {\n if (this.detectCycleUtil(schema, visited, recStack, cycles)) {\n return cycles.length > 0 ? cycles : undefined;\n }\n }\n\n return undefined;\n }\n\n private detectCycleUtil(schema: Schema, visited: any, recStack: any, cycles: ReferenceCycle[]): boolean {\n let cycleFound = false;\n\n if (!visited[schema.name]) {\n visited[schema.name] = true;\n recStack[schema.name] = true;\n\n for (const refSchema of schema.references) {\n if (!visited[refSchema.name] && this.detectCycleUtil(refSchema, visited, recStack, cycles)) {\n cycles.push({schema, refSchema});\n cycleFound = true;\n } else if (recStack[refSchema.name]) {\n cycles.push({schema, refSchema});\n cycleFound = true;\n }\n }\n }\n if (!cycleFound)\n recStack[schema.name] = false;\n\n return cycleFound;\n }\n\n private populateGraph(schema: Schema) {\n if (this._schemas.includes(schema))\n return;\n\n this._schemas.push(schema);\n\n for (const refSchema of schema.references) {\n this.populateGraph(refSchema);\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/ecschema-metadata",
3
- "version": "3.4.0-dev.50",
3
+ "version": "3.4.0-dev.56",
4
4
  "description": "ECObjects core concepts in typescript",
5
5
  "license": "MIT",
6
6
  "main": "lib/cjs/ecschema-metadata.js",
@@ -22,10 +22,10 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@bentley/units-schema": "^1.0.5",
25
- "@itwin/build-tools": "3.4.0-dev.50",
26
- "@itwin/core-bentley": "3.4.0-dev.50",
27
- "@itwin/core-quantity": "3.4.0-dev.50",
28
- "@itwin/eslint-plugin": "3.4.0-dev.50",
25
+ "@itwin/build-tools": "3.4.0-dev.56",
26
+ "@itwin/core-bentley": "3.4.0-dev.56",
27
+ "@itwin/core-quantity": "3.4.0-dev.56",
28
+ "@itwin/eslint-plugin": "3.4.0-dev.56",
29
29
  "@types/almost-equal": "1.1.0",
30
30
  "@types/benchmark": "^2.1.0",
31
31
  "@types/chai": "4.3.1",
@@ -46,8 +46,8 @@
46
46
  "typescript": "~4.4.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@itwin/core-bentley": "^3.4.0-dev.50",
50
- "@itwin/core-quantity": "^3.4.0-dev.50"
49
+ "@itwin/core-bentley": "^3.4.0-dev.56",
50
+ "@itwin/core-quantity": "^3.4.0-dev.56"
51
51
  },
52
52
  "dependencies": {
53
53
  "almost-equal": "^1.1.0"