@itwin/ecschema-metadata 4.0.0-dev.52 → 4.0.0-dev.54

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 (148) 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.d.ts.map +1 -1
  8. package/lib/cjs/DelayedPromise.js +91 -91
  9. package/lib/cjs/DelayedPromise.js.map +1 -1
  10. package/lib/cjs/Deserialization/AbstractParser.d.ts +45 -45
  11. package/lib/cjs/Deserialization/AbstractParser.d.ts.map +1 -1
  12. package/lib/cjs/Deserialization/AbstractParser.js +11 -11
  13. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  14. package/lib/cjs/Deserialization/Helper.d.ts +251 -251
  15. package/lib/cjs/Deserialization/Helper.js +843 -843
  16. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  17. package/lib/cjs/Deserialization/JsonParser.d.ts +165 -165
  18. package/lib/cjs/Deserialization/JsonParser.js +680 -680
  19. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  20. package/lib/cjs/Deserialization/JsonProps.d.ts +282 -282
  21. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  22. package/lib/cjs/Deserialization/JsonProps.js +9 -9
  23. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  24. package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts +34 -34
  25. package/lib/cjs/Deserialization/SchemaGraphUtil.js +77 -77
  26. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  27. package/lib/cjs/Deserialization/XmlParser.d.ts +85 -85
  28. package/lib/cjs/Deserialization/XmlParser.js +973 -973
  29. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  30. package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts +54 -54
  31. package/lib/cjs/Deserialization/XmlSerializationUtils.js +174 -174
  32. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  33. package/lib/cjs/ECName.d.ts +30 -30
  34. package/lib/cjs/ECName.js +85 -85
  35. package/lib/cjs/ECName.js.map +1 -1
  36. package/lib/cjs/ECObjects.d.ts +162 -162
  37. package/lib/cjs/ECObjects.js +453 -453
  38. package/lib/cjs/ECObjects.js.map +1 -1
  39. package/lib/cjs/Exception.d.ts +43 -43
  40. package/lib/cjs/Exception.js +84 -84
  41. package/lib/cjs/Exception.js.map +1 -1
  42. package/lib/cjs/Interfaces.d.ts +66 -66
  43. package/lib/cjs/Interfaces.d.ts.map +1 -1
  44. package/lib/cjs/Interfaces.js +9 -9
  45. package/lib/cjs/Interfaces.js.map +1 -1
  46. package/lib/cjs/Metadata/Class.d.ts +243 -243
  47. package/lib/cjs/Metadata/Class.js +558 -558
  48. package/lib/cjs/Metadata/Class.js.map +1 -1
  49. package/lib/cjs/Metadata/Constant.d.ts +64 -64
  50. package/lib/cjs/Metadata/Constant.js +123 -123
  51. package/lib/cjs/Metadata/Constant.js.map +1 -1
  52. package/lib/cjs/Metadata/CustomAttribute.d.ts +23 -23
  53. package/lib/cjs/Metadata/CustomAttribute.js +27 -27
  54. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  55. package/lib/cjs/Metadata/CustomAttributeClass.d.ts +39 -39
  56. package/lib/cjs/Metadata/CustomAttributeClass.js +68 -68
  57. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  58. package/lib/cjs/Metadata/EntityClass.d.ts +77 -77
  59. package/lib/cjs/Metadata/EntityClass.js +230 -230
  60. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  61. package/lib/cjs/Metadata/Enumeration.d.ts +86 -86
  62. package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
  63. package/lib/cjs/Metadata/Enumeration.js +159 -159
  64. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  65. package/lib/cjs/Metadata/Format.d.ts +98 -98
  66. package/lib/cjs/Metadata/Format.js +242 -242
  67. package/lib/cjs/Metadata/Format.js.map +1 -1
  68. package/lib/cjs/Metadata/InvertedUnit.d.ts +49 -49
  69. package/lib/cjs/Metadata/InvertedUnit.js +97 -97
  70. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  71. package/lib/cjs/Metadata/KindOfQuantity.d.ts +65 -65
  72. package/lib/cjs/Metadata/KindOfQuantity.js +225 -225
  73. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  74. package/lib/cjs/Metadata/Mixin.d.ts +54 -54
  75. package/lib/cjs/Metadata/Mixin.js +113 -113
  76. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  77. package/lib/cjs/Metadata/OverrideFormat.d.ts +55 -55
  78. package/lib/cjs/Metadata/OverrideFormat.js +88 -88
  79. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  80. package/lib/cjs/Metadata/Phenomenon.d.ts +33 -33
  81. package/lib/cjs/Metadata/Phenomenon.js +59 -59
  82. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  83. package/lib/cjs/Metadata/Property.d.ts +197 -197
  84. package/lib/cjs/Metadata/Property.d.ts.map +1 -1
  85. package/lib/cjs/Metadata/Property.js +491 -491
  86. package/lib/cjs/Metadata/Property.js.map +1 -1
  87. package/lib/cjs/Metadata/PropertyCategory.d.ts +39 -39
  88. package/lib/cjs/Metadata/PropertyCategory.js +61 -61
  89. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  90. package/lib/cjs/Metadata/RelationshipClass.d.ts +152 -152
  91. package/lib/cjs/Metadata/RelationshipClass.js +349 -349
  92. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  93. package/lib/cjs/Metadata/Schema.d.ts +291 -291
  94. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  95. package/lib/cjs/Metadata/Schema.js +520 -520
  96. package/lib/cjs/Metadata/Schema.js.map +1 -1
  97. package/lib/cjs/Metadata/SchemaItem.d.ts +61 -61
  98. package/lib/cjs/Metadata/SchemaItem.js +136 -136
  99. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  100. package/lib/cjs/Metadata/Unit.d.ts +76 -76
  101. package/lib/cjs/Metadata/Unit.js +162 -162
  102. package/lib/cjs/Metadata/UnitSystem.d.ts +20 -20
  103. package/lib/cjs/Metadata/UnitSystem.js +29 -29
  104. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  105. package/lib/cjs/PropertyTypes.d.ts +49 -49
  106. package/lib/cjs/PropertyTypes.js +91 -91
  107. package/lib/cjs/PropertyTypes.js.map +1 -1
  108. package/lib/cjs/SchemaJsonLocater.d.ts +34 -34
  109. package/lib/cjs/SchemaJsonLocater.d.ts.map +1 -1
  110. package/lib/cjs/SchemaJsonLocater.js +42 -42
  111. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  112. package/lib/cjs/SchemaKey.d.ts +110 -110
  113. package/lib/cjs/SchemaKey.js +219 -219
  114. package/lib/cjs/SchemaKey.js.map +1 -1
  115. package/lib/cjs/SchemaLoader.d.ts +23 -23
  116. package/lib/cjs/SchemaLoader.js +47 -47
  117. package/lib/cjs/SchemaLoader.js.map +1 -1
  118. package/lib/cjs/SchemaPartVisitorDelegate.d.ts +274 -274
  119. package/lib/cjs/SchemaPartVisitorDelegate.js +212 -212
  120. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  121. package/lib/cjs/UnitConversion/Graph.d.ts +34 -34
  122. package/lib/cjs/UnitConversion/Graph.js +83 -83
  123. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  124. package/lib/cjs/UnitConversion/Parser.d.ts +8 -8
  125. package/lib/cjs/UnitConversion/Parser.js +42 -42
  126. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  127. package/lib/cjs/UnitConversion/UnitConversion.d.ts +45 -45
  128. package/lib/cjs/UnitConversion/UnitConversion.js +77 -77
  129. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  130. package/lib/cjs/UnitConversion/UnitConverter.d.ts +39 -39
  131. package/lib/cjs/UnitConversion/UnitConverter.js +116 -116
  132. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  133. package/lib/cjs/UnitConversion/UnitTree.d.ts +43 -43
  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 +234 -234
  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 +100 -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.js +65 -65
  147. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  148. package/package.json +8 -8
@@ -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/** @internal */\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": "4.0.0-dev.52",
3
+ "version": "4.0.0-dev.54",
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": "4.0.0-dev.52",
26
- "@itwin/core-bentley": "4.0.0-dev.52",
27
- "@itwin/core-quantity": "4.0.0-dev.52",
28
- "@itwin/eslint-plugin": "nightly",
25
+ "@itwin/build-tools": "4.0.0-dev.54",
26
+ "@itwin/core-bentley": "4.0.0-dev.54",
27
+ "@itwin/core-quantity": "4.0.0-dev.54",
28
+ "@itwin/eslint-plugin": "^4.0.0-dev.32",
29
29
  "@types/almost-equal": "1.1.0",
30
30
  "@types/benchmark": "^2.1.0",
31
31
  "@types/chai": "4.3.1",
@@ -43,11 +43,11 @@
43
43
  "nyc": "^15.1.0",
44
44
  "rimraf": "^3.0.2",
45
45
  "sinon": "^9.0.2",
46
- "typescript": "~4.4.0"
46
+ "typescript": "~5.0.2"
47
47
  },
48
48
  "peerDependencies": {
49
- "@itwin/core-bentley": "^4.0.0-dev.52",
50
- "@itwin/core-quantity": "^4.0.0-dev.52"
49
+ "@itwin/core-bentley": "^4.0.0-dev.54",
50
+ "@itwin/core-quantity": "^4.0.0-dev.54"
51
51
  },
52
52
  "dependencies": {
53
53
  "almost-equal": "^1.1.0"