@itwin/core-backend 5.1.0-dev.9 → 5.2.0-dev.1

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 (441) hide show
  1. package/CHANGELOG.md +112 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BisCoreSchema.d.ts.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js +4 -2
  7. package/lib/cjs/BisCoreSchema.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  9. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseManager.js +16 -0
  11. package/lib/cjs/BriefcaseManager.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +4 -4
  13. package/lib/cjs/Category.js +4 -4
  14. package/lib/cjs/Category.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.d.ts +67 -8
  16. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  17. package/lib/cjs/ChangesetECAdaptor.js +248 -33
  18. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  19. package/lib/cjs/ClassRegistry.d.ts +9 -1
  20. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  21. package/lib/cjs/ClassRegistry.js +9 -1
  22. package/lib/cjs/ClassRegistry.js.map +1 -1
  23. package/lib/cjs/CloudSqlite.js +1 -1
  24. package/lib/cjs/CloudSqlite.js.map +1 -1
  25. package/lib/cjs/CodeSpecs.d.ts +1 -1
  26. package/lib/cjs/CodeSpecs.js +1 -1
  27. package/lib/cjs/CodeSpecs.js.map +1 -1
  28. package/lib/cjs/DisplayStyle.d.ts +4 -4
  29. package/lib/cjs/DisplayStyle.js +3 -3
  30. package/lib/cjs/DisplayStyle.js.map +1 -1
  31. package/lib/cjs/ECDb.d.ts +4 -4
  32. package/lib/cjs/ECDb.d.ts.map +1 -1
  33. package/lib/cjs/ECDb.js +4 -4
  34. package/lib/cjs/ECDb.js.map +1 -1
  35. package/lib/cjs/ECSqlStatement.d.ts +15 -6
  36. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  37. package/lib/cjs/ECSqlStatement.js +19 -4
  38. package/lib/cjs/ECSqlStatement.js.map +1 -1
  39. package/lib/cjs/Element.d.ts +54 -51
  40. package/lib/cjs/Element.d.ts.map +1 -1
  41. package/lib/cjs/Element.js +67 -52
  42. package/lib/cjs/Element.js.map +1 -1
  43. package/lib/cjs/ElementAspect.d.ts +8 -8
  44. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  45. package/lib/cjs/ElementAspect.js +8 -8
  46. package/lib/cjs/ElementAspect.js.map +1 -1
  47. package/lib/cjs/Entity.d.ts +10 -7
  48. package/lib/cjs/Entity.d.ts.map +1 -1
  49. package/lib/cjs/Entity.js +35 -13
  50. package/lib/cjs/Entity.js.map +1 -1
  51. package/lib/cjs/ExportGraphics.d.ts +54 -8
  52. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  53. package/lib/cjs/ExportGraphics.js +158 -59
  54. package/lib/cjs/ExportGraphics.js.map +1 -1
  55. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  56. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  57. package/lib/cjs/GeographicCRSServices.js +1 -1
  58. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  59. package/lib/cjs/IModelDb.d.ts +37 -26
  60. package/lib/cjs/IModelDb.d.ts.map +1 -1
  61. package/lib/cjs/IModelDb.js +124 -47
  62. package/lib/cjs/IModelDb.js.map +1 -1
  63. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  64. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  65. package/lib/cjs/IModelElementCloneContext.js +1 -1
  66. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  67. package/lib/cjs/IModelHost.d.ts +2 -3
  68. package/lib/cjs/IModelHost.d.ts.map +1 -1
  69. package/lib/cjs/IModelHost.js +2 -3
  70. package/lib/cjs/IModelHost.js.map +1 -1
  71. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts +36 -0
  72. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts.map +1 -0
  73. package/lib/cjs/IModelIncrementalSchemaLocater.js +69 -0
  74. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -0
  75. package/lib/cjs/LocalHub.d.ts.map +1 -1
  76. package/lib/cjs/LocalHub.js +6 -4
  77. package/lib/cjs/LocalHub.js.map +1 -1
  78. package/lib/cjs/Material.d.ts +4 -3
  79. package/lib/cjs/Material.d.ts.map +1 -1
  80. package/lib/cjs/Material.js +5 -5
  81. package/lib/cjs/Material.js.map +1 -1
  82. package/lib/cjs/Model.d.ts +22 -22
  83. package/lib/cjs/Model.js +22 -22
  84. package/lib/cjs/Model.js.map +1 -1
  85. package/lib/cjs/Relationship.d.ts +3 -0
  86. package/lib/cjs/Relationship.d.ts.map +1 -1
  87. package/lib/cjs/Relationship.js +15 -0
  88. package/lib/cjs/Relationship.js.map +1 -1
  89. package/lib/cjs/SQLiteDb.d.ts +1 -1
  90. package/lib/cjs/SQLiteDb.js +1 -1
  91. package/lib/cjs/SQLiteDb.js.map +1 -1
  92. package/lib/cjs/Schema.d.ts +25 -0
  93. package/lib/cjs/Schema.d.ts.map +1 -1
  94. package/lib/cjs/Schema.js +25 -0
  95. package/lib/cjs/Schema.js.map +1 -1
  96. package/lib/cjs/SqliteStatement.d.ts +1 -1
  97. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  98. package/lib/cjs/SqliteStatement.js +1 -1
  99. package/lib/cjs/SqliteStatement.js.map +1 -1
  100. package/lib/cjs/Texture.d.ts +1 -1
  101. package/lib/cjs/Texture.js +1 -1
  102. package/lib/cjs/Texture.js.map +1 -1
  103. package/lib/cjs/TxnManager.d.ts +4 -4
  104. package/lib/cjs/TxnManager.js +1 -1
  105. package/lib/cjs/TxnManager.js.map +1 -1
  106. package/lib/cjs/ViewDefinition.d.ts +40 -14
  107. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  108. package/lib/cjs/ViewDefinition.js +42 -14
  109. package/lib/cjs/ViewDefinition.js.map +1 -1
  110. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +61 -0
  111. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -0
  112. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +110 -0
  113. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -0
  114. package/lib/cjs/annotations/FrameGeometry.d.ts +51 -0
  115. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -0
  116. package/lib/cjs/annotations/FrameGeometry.js +249 -0
  117. package/lib/cjs/annotations/FrameGeometry.js.map +1 -0
  118. package/lib/cjs/annotations/LeaderGeometry.d.ts +53 -0
  119. package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -0
  120. package/lib/cjs/annotations/LeaderGeometry.js +184 -0
  121. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -0
  122. package/lib/cjs/annotations/TextAnnotationElement.d.ts +204 -0
  123. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -0
  124. package/lib/cjs/annotations/TextAnnotationElement.js +411 -0
  125. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -0
  126. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +33 -0
  127. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  128. package/lib/cjs/annotations/TextAnnotationGeometry.js +137 -0
  129. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -0
  130. package/lib/cjs/annotations/TextBlockGeometry.d.ts +16 -0
  131. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -0
  132. package/lib/cjs/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +28 -70
  133. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -0
  134. package/lib/cjs/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +69 -22
  135. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -0
  136. package/lib/cjs/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +174 -49
  137. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -0
  138. package/lib/cjs/core-backend.d.ts +7 -3
  139. package/lib/cjs/core-backend.d.ts.map +1 -1
  140. package/lib/cjs/core-backend.js +27 -6
  141. package/lib/cjs/core-backend.js.map +1 -1
  142. package/lib/cjs/internal/ElementLRUCache.d.ts +23 -0
  143. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -1
  144. package/lib/cjs/internal/ElementLRUCache.js +167 -3
  145. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  146. package/lib/cjs/internal/Symbols.d.ts +1 -0
  147. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  148. package/lib/cjs/internal/Symbols.js +2 -1
  149. package/lib/cjs/internal/Symbols.js.map +1 -1
  150. package/lib/cjs/internal/annotations/fields.d.ts +22 -0
  151. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -0
  152. package/lib/cjs/internal/annotations/fields.js +237 -0
  153. package/lib/cjs/internal/annotations/fields.js.map +1 -0
  154. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  155. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -1
  156. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  157. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  158. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  159. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  160. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  161. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  162. package/lib/cjs/workspace/Workspace.d.ts +0 -1
  163. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  164. package/lib/cjs/workspace/Workspace.js.map +1 -1
  165. package/lib/esm/BackendHubAccess.d.ts +1 -1
  166. package/lib/esm/BackendHubAccess.js +1 -1
  167. package/lib/esm/BackendHubAccess.js.map +1 -1
  168. package/lib/esm/BisCoreSchema.d.ts.map +1 -1
  169. package/lib/esm/BisCoreSchema.js +4 -2
  170. package/lib/esm/BisCoreSchema.js.map +1 -1
  171. package/lib/esm/BriefcaseManager.d.ts +10 -2
  172. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  173. package/lib/esm/BriefcaseManager.js +17 -1
  174. package/lib/esm/BriefcaseManager.js.map +1 -1
  175. package/lib/esm/Category.d.ts +4 -4
  176. package/lib/esm/Category.js +4 -4
  177. package/lib/esm/Category.js.map +1 -1
  178. package/lib/esm/ChangesetECAdaptor.d.ts +67 -8
  179. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  180. package/lib/esm/ChangesetECAdaptor.js +248 -33
  181. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  182. package/lib/esm/ClassRegistry.d.ts +9 -1
  183. package/lib/esm/ClassRegistry.d.ts.map +1 -1
  184. package/lib/esm/ClassRegistry.js +9 -1
  185. package/lib/esm/ClassRegistry.js.map +1 -1
  186. package/lib/esm/CloudSqlite.js +1 -1
  187. package/lib/esm/CloudSqlite.js.map +1 -1
  188. package/lib/esm/CodeSpecs.d.ts +1 -1
  189. package/lib/esm/CodeSpecs.js +1 -1
  190. package/lib/esm/CodeSpecs.js.map +1 -1
  191. package/lib/esm/DisplayStyle.d.ts +4 -4
  192. package/lib/esm/DisplayStyle.js +3 -3
  193. package/lib/esm/DisplayStyle.js.map +1 -1
  194. package/lib/esm/ECDb.d.ts +4 -4
  195. package/lib/esm/ECDb.d.ts.map +1 -1
  196. package/lib/esm/ECDb.js +4 -4
  197. package/lib/esm/ECDb.js.map +1 -1
  198. package/lib/esm/ECSqlStatement.d.ts +15 -6
  199. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  200. package/lib/esm/ECSqlStatement.js +19 -4
  201. package/lib/esm/ECSqlStatement.js.map +1 -1
  202. package/lib/esm/Element.d.ts +54 -51
  203. package/lib/esm/Element.d.ts.map +1 -1
  204. package/lib/esm/Element.js +67 -52
  205. package/lib/esm/Element.js.map +1 -1
  206. package/lib/esm/ElementAspect.d.ts +8 -8
  207. package/lib/esm/ElementAspect.d.ts.map +1 -1
  208. package/lib/esm/ElementAspect.js +8 -8
  209. package/lib/esm/ElementAspect.js.map +1 -1
  210. package/lib/esm/Entity.d.ts +10 -7
  211. package/lib/esm/Entity.d.ts.map +1 -1
  212. package/lib/esm/Entity.js +36 -14
  213. package/lib/esm/Entity.js.map +1 -1
  214. package/lib/esm/ExportGraphics.d.ts +54 -8
  215. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  216. package/lib/esm/ExportGraphics.js +156 -58
  217. package/lib/esm/ExportGraphics.js.map +1 -1
  218. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  219. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  220. package/lib/esm/GeographicCRSServices.js +1 -1
  221. package/lib/esm/GeographicCRSServices.js.map +1 -1
  222. package/lib/esm/IModelDb.d.ts +37 -26
  223. package/lib/esm/IModelDb.d.ts.map +1 -1
  224. package/lib/esm/IModelDb.js +128 -51
  225. package/lib/esm/IModelDb.js.map +1 -1
  226. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  227. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  228. package/lib/esm/IModelElementCloneContext.js +1 -1
  229. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  230. package/lib/esm/IModelHost.d.ts +2 -3
  231. package/lib/esm/IModelHost.d.ts.map +1 -1
  232. package/lib/esm/IModelHost.js +2 -3
  233. package/lib/esm/IModelHost.js.map +1 -1
  234. package/lib/esm/IModelIncrementalSchemaLocater.d.ts +36 -0
  235. package/lib/esm/IModelIncrementalSchemaLocater.d.ts.map +1 -0
  236. package/lib/esm/IModelIncrementalSchemaLocater.js +65 -0
  237. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -0
  238. package/lib/esm/LocalHub.d.ts.map +1 -1
  239. package/lib/esm/LocalHub.js +6 -4
  240. package/lib/esm/LocalHub.js.map +1 -1
  241. package/lib/esm/Material.d.ts +4 -3
  242. package/lib/esm/Material.d.ts.map +1 -1
  243. package/lib/esm/Material.js +5 -5
  244. package/lib/esm/Material.js.map +1 -1
  245. package/lib/esm/Model.d.ts +22 -22
  246. package/lib/esm/Model.js +22 -22
  247. package/lib/esm/Model.js.map +1 -1
  248. package/lib/esm/Relationship.d.ts +3 -0
  249. package/lib/esm/Relationship.d.ts.map +1 -1
  250. package/lib/esm/Relationship.js +15 -0
  251. package/lib/esm/Relationship.js.map +1 -1
  252. package/lib/esm/SQLiteDb.d.ts +1 -1
  253. package/lib/esm/SQLiteDb.js +1 -1
  254. package/lib/esm/SQLiteDb.js.map +1 -1
  255. package/lib/esm/Schema.d.ts +25 -0
  256. package/lib/esm/Schema.d.ts.map +1 -1
  257. package/lib/esm/Schema.js +25 -0
  258. package/lib/esm/Schema.js.map +1 -1
  259. package/lib/esm/SqliteStatement.d.ts +1 -1
  260. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  261. package/lib/esm/SqliteStatement.js +1 -1
  262. package/lib/esm/SqliteStatement.js.map +1 -1
  263. package/lib/esm/Texture.d.ts +1 -1
  264. package/lib/esm/Texture.js +1 -1
  265. package/lib/esm/Texture.js.map +1 -1
  266. package/lib/esm/TxnManager.d.ts +4 -4
  267. package/lib/esm/TxnManager.js +1 -1
  268. package/lib/esm/TxnManager.js.map +1 -1
  269. package/lib/esm/ViewDefinition.d.ts +40 -14
  270. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  271. package/lib/esm/ViewDefinition.js +42 -14
  272. package/lib/esm/ViewDefinition.js.map +1 -1
  273. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +61 -0
  274. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -0
  275. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +105 -0
  276. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -0
  277. package/lib/esm/annotations/FrameGeometry.d.ts +51 -0
  278. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -0
  279. package/lib/esm/annotations/FrameGeometry.js +244 -0
  280. package/lib/esm/annotations/FrameGeometry.js.map +1 -0
  281. package/lib/esm/annotations/LeaderGeometry.d.ts +53 -0
  282. package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -0
  283. package/lib/esm/annotations/LeaderGeometry.js +179 -0
  284. package/lib/esm/annotations/LeaderGeometry.js.map +1 -0
  285. package/lib/esm/annotations/TextAnnotationElement.d.ts +204 -0
  286. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -0
  287. package/lib/esm/annotations/TextAnnotationElement.js +405 -0
  288. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -0
  289. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +33 -0
  290. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  291. package/lib/esm/annotations/TextAnnotationGeometry.js +134 -0
  292. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -0
  293. package/lib/esm/annotations/TextBlockGeometry.d.ts +16 -0
  294. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -0
  295. package/lib/esm/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +28 -70
  296. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -0
  297. package/lib/esm/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +69 -22
  298. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -0
  299. package/lib/esm/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +172 -48
  300. package/lib/esm/annotations/TextBlockLayout.js.map +1 -0
  301. package/lib/esm/core-backend.d.ts +7 -3
  302. package/lib/esm/core-backend.d.ts.map +1 -1
  303. package/lib/esm/core-backend.js +27 -3
  304. package/lib/esm/core-backend.js.map +1 -1
  305. package/lib/esm/internal/ElementLRUCache.d.ts +23 -0
  306. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -1
  307. package/lib/esm/internal/ElementLRUCache.js +165 -2
  308. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  309. package/lib/esm/internal/Symbols.d.ts +1 -0
  310. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  311. package/lib/esm/internal/Symbols.js +1 -0
  312. package/lib/esm/internal/Symbols.js.map +1 -1
  313. package/lib/esm/internal/annotations/fields.d.ts +22 -0
  314. package/lib/esm/internal/annotations/fields.d.ts.map +1 -0
  315. package/lib/esm/internal/annotations/fields.js +231 -0
  316. package/lib/esm/internal/annotations/fields.js.map +1 -0
  317. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  318. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +1 -1
  319. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  320. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  321. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  322. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  323. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  324. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  325. package/lib/esm/test/AnnotationTestUtils.d.ts +15 -0
  326. package/lib/esm/test/AnnotationTestUtils.d.ts.map +1 -0
  327. package/lib/esm/test/AnnotationTestUtils.js +41 -0
  328. package/lib/esm/test/AnnotationTestUtils.js.map +1 -0
  329. package/lib/esm/test/ElementLRUCache.test.js +224 -1
  330. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  331. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  332. package/lib/esm/test/IModelTestUtils.js +1 -0
  333. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  334. package/lib/esm/test/TestUtils.d.ts +1 -1
  335. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  336. package/lib/esm/test/TestUtils.js +1 -1
  337. package/lib/esm/test/TestUtils.js.map +1 -1
  338. package/lib/esm/test/annotations/Fields.test.d.ts +2 -0
  339. package/lib/esm/test/annotations/Fields.test.d.ts.map +1 -0
  340. package/lib/esm/test/annotations/Fields.test.js +576 -0
  341. package/lib/esm/test/annotations/Fields.test.js.map +1 -0
  342. package/lib/esm/test/annotations/FrameGeometry.test.d.ts +2 -0
  343. package/lib/esm/test/annotations/FrameGeometry.test.d.ts.map +1 -0
  344. package/lib/esm/test/annotations/FrameGeometry.test.js +86 -0
  345. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -0
  346. package/lib/esm/test/annotations/LeaderGeometry.test.d.ts +2 -0
  347. package/lib/esm/test/annotations/LeaderGeometry.test.d.ts.map +1 -0
  348. package/lib/esm/test/annotations/LeaderGeometry.test.js +256 -0
  349. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -0
  350. package/lib/esm/test/annotations/TextAnnotation.test.js +269 -1047
  351. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  352. package/lib/esm/test/annotations/TextBlock.test.d.ts +2 -0
  353. package/lib/esm/test/annotations/TextBlock.test.d.ts.map +1 -0
  354. package/lib/esm/test/annotations/TextBlock.test.js +1199 -0
  355. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -0
  356. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.d.ts +60 -0
  357. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.d.ts.map +1 -0
  358. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js +69 -0
  359. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -0
  360. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts +1442 -0
  361. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -0
  362. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +817 -0
  363. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -0
  364. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts +2 -0
  365. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts.map +1 -0
  366. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +164 -0
  367. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -0
  368. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +22 -32
  369. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  370. package/lib/esm/test/ecdb/ECDb.test.js +29 -8
  371. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  372. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -55
  373. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  374. package/lib/esm/test/ecdb/ECSqlStatement.test.js +192 -0
  375. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  376. package/lib/esm/test/hubaccess/ApplyChangeset.test.d.ts +2 -0
  377. package/lib/esm/test/hubaccess/ApplyChangeset.test.d.ts.map +1 -0
  378. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +86 -0
  379. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -0
  380. package/lib/esm/test/imodel/IModel.test.js +313 -5
  381. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  382. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.d.ts +2 -0
  383. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.d.ts.map +1 -0
  384. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js +343 -0
  385. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -0
  386. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.d.ts +2 -0
  387. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.d.ts.map +1 -0
  388. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +207 -0
  389. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -0
  390. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts +11 -0
  391. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts.map +1 -0
  392. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js +36 -0
  393. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -0
  394. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +17 -0
  395. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +1 -0
  396. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +116 -0
  397. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -0
  398. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts +9 -0
  399. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +1 -0
  400. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +20 -0
  401. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -0
  402. package/lib/esm/test/misc/GeoServices.test.js +36 -10
  403. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  404. package/lib/esm/test/schema/ClassRegistry.test.js +104 -2
  405. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  406. package/lib/esm/test/standalone/ChangesetReader.test.js +547 -136
  407. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  408. package/lib/esm/test/standalone/ExportGraphics.test.js +53 -1
  409. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  410. package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
  411. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  412. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  413. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  414. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  415. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  416. package/lib/esm/test/standalone/RenderMaterialElement.test.js +24 -1
  417. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  418. package/lib/esm/test/standalone/SnapshotDb.test.js +19 -1
  419. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  420. package/lib/esm/workspace/Workspace.d.ts +0 -1
  421. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  422. package/lib/esm/workspace/Workspace.js.map +1 -1
  423. package/package.json +21 -15
  424. package/lib/cjs/TextAnnotationElement.d.ts +0 -54
  425. package/lib/cjs/TextAnnotationElement.d.ts.map +0 -1
  426. package/lib/cjs/TextAnnotationElement.js +0 -94
  427. package/lib/cjs/TextAnnotationElement.js.map +0 -1
  428. package/lib/cjs/TextAnnotationGeometry.d.ts +0 -32
  429. package/lib/cjs/TextAnnotationGeometry.d.ts.map +0 -1
  430. package/lib/cjs/TextAnnotationGeometry.js.map +0 -1
  431. package/lib/cjs/TextAnnotationLayout.d.ts.map +0 -1
  432. package/lib/cjs/TextAnnotationLayout.js.map +0 -1
  433. package/lib/esm/TextAnnotationElement.d.ts +0 -54
  434. package/lib/esm/TextAnnotationElement.d.ts.map +0 -1
  435. package/lib/esm/TextAnnotationElement.js +0 -89
  436. package/lib/esm/TextAnnotationElement.js.map +0 -1
  437. package/lib/esm/TextAnnotationGeometry.d.ts +0 -32
  438. package/lib/esm/TextAnnotationGeometry.d.ts.map +0 -1
  439. package/lib/esm/TextAnnotationGeometry.js.map +0 -1
  440. package/lib/esm/TextAnnotationLayout.d.ts.map +0 -1
  441. package/lib/esm/TextAnnotationLayout.js.map +0 -1
@@ -0,0 +1,207 @@
1
+ import { SchemaContext, SchemaItem, SchemaItemKey, SchemaItemType, SchemaJsonLocater, SchemaKey, SchemaMatchType } from "@itwin/ecschema-metadata";
2
+ import { expect } from "chai";
3
+ import * as chai from "chai";
4
+ import * as chaiAsPromised from "chai-as-promised";
5
+ import { IModelIncrementalSchemaLocater } from "../../IModelIncrementalSchemaLocater";
6
+ import oldConfiguration from "../assets/IncrementalSchemaLocater/configs/old.config";
7
+ import simpleConfiguration from "../assets/IncrementalSchemaLocater/configs/simple.config";
8
+ import { IncrementalTestHelper } from "./utils/IncrementalTestHelper";
9
+ chai.use(chaiAsPromised);
10
+ function parseSchemaItemKey(itemKey) {
11
+ const [schemaName, itemName] = SchemaItem.parseFullName(itemKey);
12
+ const schemaKey = SchemaKey.parseString(`${schemaName}.0.0.0`);
13
+ return new SchemaItemKey(itemName, schemaKey);
14
+ }
15
+ describe("Incremental Schema Loading", function () {
16
+ describe("Simple iModel Incremental Loading Tests", () => {
17
+ let testSchemaKey;
18
+ let testSchemaConfiguration;
19
+ before("Setup", async function () {
20
+ await IncrementalTestHelper.setup();
21
+ testSchemaConfiguration = simpleConfiguration.schemas[0];
22
+ testSchemaKey = new SchemaKey(testSchemaConfiguration.name, 1, 0, 0);
23
+ await IncrementalTestHelper.importSchema(testSchemaKey);
24
+ });
25
+ after(async () => {
26
+ await IncrementalTestHelper.close();
27
+ });
28
+ const iModelSchemaJsonLocater = new SchemaJsonLocater((schemaName) => {
29
+ return IncrementalTestHelper.iModel.getSchemaProps(schemaName);
30
+ });
31
+ it("Get SchemaInfo (json props - iModel)", async () => {
32
+ const schemaContext = new SchemaContext();
33
+ schemaContext.addLocater(iModelSchemaJsonLocater);
34
+ const schemaInfo = await schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact);
35
+ expect(schemaInfo).to.be.not.undefined;
36
+ expect(schemaInfo).to.have.nested.property("schemaKey.name", testSchemaKey.name);
37
+ expect(schemaInfo).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
38
+ expect(schemaInfo).to.have.property("references").to.satisfy((refs) => {
39
+ for (const ref of refs) {
40
+ expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);
41
+ }
42
+ return true;
43
+ });
44
+ });
45
+ it("Get SchemaInfo (incremental - backend)", async () => {
46
+ const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });
47
+ const schemaContext = new SchemaContext();
48
+ schemaContext.addLocater(locater);
49
+ const schemaInfo = await schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact);
50
+ expect(schemaInfo).to.be.not.undefined;
51
+ expect(schemaInfo).to.have.nested.property("schemaKey.name", testSchemaKey.name);
52
+ expect(schemaInfo).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
53
+ expect(schemaInfo).to.have.property("references").to.satisfy((refs) => {
54
+ for (const ref of refs) {
55
+ expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);
56
+ }
57
+ return true;
58
+ });
59
+ });
60
+ it("Get Schema with item stubs (incremental - backend)", async () => {
61
+ const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });
62
+ const schemaContext = new SchemaContext();
63
+ schemaContext.addLocater(locater);
64
+ const schema = await schemaContext.getSchema(testSchemaKey);
65
+ expect(schema).to.be.not.undefined;
66
+ expect(schema).to.have.property("name", testSchemaKey.name);
67
+ expect(schema).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
68
+ for (const item of schema.getItems()) {
69
+ expect(item).to.have.property("name");
70
+ expect(item).to.have.property("schemaItemType").to.satisfy((type) => SchemaItemType[type] !== undefined);
71
+ }
72
+ expect(schema).to.be.not.undefined;
73
+ expect(schema).to.have.property("name", testSchemaKey.name);
74
+ const items = [...schema.getItems()];
75
+ expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);
76
+ for (const checkStub of testSchemaConfiguration.checkStubs) {
77
+ const item = await schema.lookupItem(checkStub.item);
78
+ expect(item).to.be.not.undefined;
79
+ const props = item.schemaItemType === SchemaItemType.KindOfQuantity
80
+ ? SchemaItem.prototype.toJSON.call(item)
81
+ : item.toJSON();
82
+ for (const [propertyName, propertyValue] of Object.entries(checkStub.properties)) {
83
+ expect(props).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);
84
+ }
85
+ }
86
+ });
87
+ it("Get Schema with class hierarchy (json props - iModel)", async () => {
88
+ const schemaContext = new SchemaContext();
89
+ schemaContext.addLocater(iModelSchemaJsonLocater);
90
+ const schema = await schemaContext.getSchema(testSchemaKey);
91
+ expect(schema).to.be.not.undefined;
92
+ expect(schema).to.have.property("name", testSchemaKey.name);
93
+ const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);
94
+ const derivedClass = await schemaContext.getSchemaItem(derivedClassKey);
95
+ expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;
96
+ const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);
97
+ const baseClass = await schemaContext.getSchemaItem(baseClassKey);
98
+ expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;
99
+ const isDerivedFrom = await derivedClass.is(baseClass);
100
+ expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;
101
+ });
102
+ it("Get Schema with class hierarchy (incremental - backend)", async () => {
103
+ const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });
104
+ const schemaContext = new SchemaContext();
105
+ schemaContext.addLocater(locater);
106
+ const schema = await schemaContext.getSchema(testSchemaKey);
107
+ expect(schema).to.be.not.undefined;
108
+ expect(schema).to.have.property("name", testSchemaKey.name);
109
+ const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);
110
+ const derivedClass = await schemaContext.getSchemaItem(derivedClassKey);
111
+ expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;
112
+ const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);
113
+ const baseClass = await schemaContext.getSchemaItem(baseClassKey);
114
+ expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;
115
+ const isDerivedFrom = await derivedClass.is(baseClass);
116
+ expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;
117
+ });
118
+ it("Get Schema full schema stack (json props - iModel)", async () => {
119
+ const schemaContext = new SchemaContext();
120
+ schemaContext.addLocater(iModelSchemaJsonLocater);
121
+ const schema = await schemaContext.getSchema(testSchemaKey);
122
+ expect(schema).to.be.not.undefined;
123
+ expect(schema).to.have.property("name", testSchemaKey.name);
124
+ expect(schema).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
125
+ for (const item of schema.getItems()) {
126
+ expect(item).to.have.property("name");
127
+ expect(item).to.have.property("schemaItemType").to.satisfy((type) => SchemaItemType[type] !== undefined);
128
+ }
129
+ });
130
+ it("Get Schema full schema stack (incremental - backend)", async () => {
131
+ const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel);
132
+ const schemaContext = new SchemaContext();
133
+ schemaContext.addLocater(locater);
134
+ const schema = await schemaContext.getSchema(testSchemaKey);
135
+ expect(schema).to.be.not.undefined;
136
+ expect(schema).to.have.property("name", testSchemaKey.name);
137
+ expect(schema).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
138
+ for (const item of schema.getItems()) {
139
+ expect(item).to.have.property("name");
140
+ expect(item).to.have.property("schemaItemType").to.satisfy((type) => SchemaItemType[type] !== undefined);
141
+ }
142
+ expect(schema).to.be.not.undefined;
143
+ expect(schema).to.have.property("name", testSchemaKey.name);
144
+ // Old meta profile fallback queries will not have a controller initialized.
145
+ if (schema.loadingController)
146
+ await schema.loadingController.wait();
147
+ const items = [...schema.getItems()];
148
+ expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);
149
+ for (const checkItem of testSchemaConfiguration.checkFullLoad) {
150
+ const item = await schema.lookupItem(checkItem.item);
151
+ expect(item).to.be.not.undefined;
152
+ const itemProps = item.toJSON();
153
+ for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {
154
+ expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);
155
+ }
156
+ }
157
+ });
158
+ });
159
+ describe("Old Schema profile in iModel Tests", () => {
160
+ let testSchemaKey;
161
+ let testSchemaConfiguration;
162
+ const resolveSchemaKey = async (schemaName) => {
163
+ const schemaFullName = (await IncrementalTestHelper.getSchemaNames()).find((name) => name.startsWith(schemaName));
164
+ if (schemaFullName === undefined) {
165
+ throw new Error(`Test schema '${schemaName}' not found`);
166
+ }
167
+ return SchemaKey.parseString(schemaFullName);
168
+ };
169
+ before("Setup", async function () {
170
+ await IncrementalTestHelper.setup(oldConfiguration.bimFile);
171
+ testSchemaConfiguration = oldConfiguration.schemas[0];
172
+ testSchemaKey = await resolveSchemaKey(testSchemaConfiguration.name);
173
+ });
174
+ after(async () => {
175
+ await IncrementalTestHelper.close();
176
+ });
177
+ it("Incremental Loading still succeeds.", async () => {
178
+ const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel);
179
+ const schemaContext = new SchemaContext();
180
+ schemaContext.addLocater(locater);
181
+ const schema = await schemaContext.getSchema(testSchemaKey);
182
+ expect(schema).to.be.not.undefined;
183
+ expect(schema).to.have.property("name", testSchemaKey.name);
184
+ expect(schema).to.have.property("references").to.have.a.lengthOf(testSchemaConfiguration.references.length);
185
+ for (const item of schema.getItems()) {
186
+ expect(item).to.have.property("name");
187
+ expect(item).to.have.property("schemaItemType").to.satisfy((type) => SchemaItemType[type] !== undefined);
188
+ }
189
+ expect(schema).to.be.not.undefined;
190
+ expect(schema).to.have.property("name", testSchemaKey.name);
191
+ // Old meta profile fallback queries will not have a controller initialized.
192
+ if (schema.loadingController)
193
+ await schema.loadingController.wait();
194
+ const items = [...schema.getItems()];
195
+ expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);
196
+ for (const checkItem of testSchemaConfiguration.checkFullLoad) {
197
+ const item = await schema.lookupItem(checkItem.item);
198
+ expect(item).to.be.not.undefined;
199
+ const itemProps = item.toJSON();
200
+ for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {
201
+ expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);
202
+ }
203
+ }
204
+ });
205
+ });
206
+ });
207
+ //# sourceMappingURL=IncrementalLoading.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncrementalLoading.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/IncrementalLoading.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,aAAa,EAAc,UAAU,EAAE,aAAa,EAC5E,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAA8B,MACtF,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAEtF,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AACrF,OAAO,mBAAmB,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC;IAC/D,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE;IACrC,QAAQ,CAAE,yCAAyC,EAAE,GAAG,EAAE;QACxD,IAAI,aAAwB,CAAC;QAC7B,IAAI,uBAA4B,CAAC;QAEjC,MAAM,CAAC,OAAO,EAAE,KAAK;YACnB,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACpC,uBAAuB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzD,aAAa,GAAG,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,qBAAqB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAE1D,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,MAAM,uBAAuB,GAAG,IAAI,iBAAiB,CAAC,CAAC,UAAU,EAAE,EAAE;YACnE,OAAO,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAgB,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;YAElD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,CAAe,CAAC;YACzG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAEjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,EAAE;gBACrF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,qCAAqC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvI,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAElH,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,CAAe,CAAC;YACzG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAEjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,EAAE;gBACrF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,qCAAqC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvI,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAClH,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;YAClJ,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,UAAU,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAK,CAAC,cAAc,KAAK,cAAc,CAAC,cAAc;oBAClE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxC,CAAC,CAAC,IAAK,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,eAAe,CAAY,CAAC;YACnF,MAAM,CAAC,YAAY,EAAE,GAAG,eAAe,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YAEtF,MAAM,YAAY,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,YAAY,CAAY,CAAC;YAC7E,MAAM,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YAEhF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,CAAC,aAAa,EAAE,GAAG,YAAY,CAAC,IAAI,wBAAwB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAClH,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,eAAe,CAAY,CAAC;YACnF,MAAM,CAAC,YAAY,EAAE,GAAG,eAAe,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YAEtF,MAAM,YAAY,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,YAAY,CAAY,CAAC;YAC7E,MAAM,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YAEhF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,CAAC,aAAa,EAAE,GAAG,YAAY,CAAC,IAAI,wBAAwB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;YAClJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;YAClJ,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,4EAA4E;YAC5E,IAAI,MAAM,CAAC,iBAAiB;gBAC1B,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAExC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,aAAa,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAEjC,MAAM,SAAS,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,IAAI,aAAwB,CAAC;QAC7B,IAAI,uBAA4B,CAAC;QAEjC,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAsB,EAAE;YACxE,MAAM,cAAc,GAAG,CAAC,MAAM,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAClH,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,aAAa,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC,CAAA;QAED,MAAM,CAAC,OAAO,EAAE,KAAK;YACnB,MAAM,qBAAqB,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5D,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtD,aAAa,GAAG,MAAM,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;YAClJ,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAE5D,4EAA4E;YAC5E,IAAI,MAAM,CAAC,iBAAiB;gBAC1B,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAExC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,aAAa,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAEjC,MAAM,SAAS,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { ECClass, Schema, SchemaContext, SchemaInfo, SchemaItem, SchemaItemKey,\n SchemaItemType, SchemaJsonLocater, SchemaKey, SchemaMatchType, SchemaProps, WithSchemaKey }\n from \"@itwin/ecschema-metadata\";\nimport { expect } from \"chai\";\nimport * as chai from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\n\nimport oldConfiguration from \"../assets/IncrementalSchemaLocater/configs/old.config\";\nimport simpleConfiguration from \"../assets/IncrementalSchemaLocater/configs/simple.config\";\nimport { IncrementalTestHelper } from \"./utils/IncrementalTestHelper\";\n\nchai.use(chaiAsPromised);\n\nfunction parseSchemaItemKey(itemKey: string): SchemaItemKey {\n const [schemaName, itemName] = SchemaItem.parseFullName(itemKey);\n const schemaKey = SchemaKey.parseString(`${schemaName}.0.0.0`);\n return new SchemaItemKey(itemName, schemaKey);\n}\n\ndescribe(\"Incremental Schema Loading\", function () {\n describe (\"Simple iModel Incremental Loading Tests\", () => {\n let testSchemaKey: SchemaKey;\n let testSchemaConfiguration: any;\n\n before(\"Setup\", async function () {\n await IncrementalTestHelper.setup();\n testSchemaConfiguration = simpleConfiguration.schemas[0];\n testSchemaKey = new SchemaKey(testSchemaConfiguration.name, 1, 0, 0);\n await IncrementalTestHelper.importSchema(testSchemaKey);\n\n });\n\n after(async () => {\n await IncrementalTestHelper.close();\n });\n\n const iModelSchemaJsonLocater = new SchemaJsonLocater((schemaName) => {\n return IncrementalTestHelper.iModel.getSchemaProps(schemaName) as SchemaProps;\n });\n\n it(\"Get SchemaInfo (json props - iModel)\", async () => {\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(iModelSchemaJsonLocater);\n\n const schemaInfo = await schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact) as SchemaInfo;\n expect(schemaInfo).to.be.not.undefined;\n expect(schemaInfo).to.have.nested.property(\"schemaKey.name\", testSchemaKey.name);\n\n expect(schemaInfo).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n expect(schemaInfo).to.have.property(\"references\").to.satisfy((refs: WithSchemaKey[]) => {\n for (const ref of refs) {\n expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);\n }\n return true;\n });\n });\n\n it(\"Get SchemaInfo (incremental - backend)\", async () => {\n const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });\n\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(locater);\n\n const schemaInfo = await schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact) as SchemaInfo;\n expect(schemaInfo).to.be.not.undefined;\n expect(schemaInfo).to.have.nested.property(\"schemaKey.name\", testSchemaKey.name);\n\n expect(schemaInfo).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n expect(schemaInfo).to.have.property(\"references\").to.satisfy((refs: WithSchemaKey[]) => {\n for (const ref of refs) {\n expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);\n }\n return true;\n });\n });\n\n it(\"Get Schema with item stubs (incremental - backend)\", async () => {\n const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(locater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkStub of testSchemaConfiguration.checkStubs) {\n const item = await schema.lookupItem(checkStub.item);\n expect(item).to.be.not.undefined;\n const props = item!.schemaItemType === SchemaItemType.KindOfQuantity\n ? SchemaItem.prototype.toJSON.call(item)\n : item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkStub.properties)) {\n expect(props).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n\n it(\"Get Schema with class hierarchy (json props - iModel)\", async () => {\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(iModelSchemaJsonLocater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);\n const derivedClass = await schemaContext.getSchemaItem(derivedClassKey) as ECClass;\n expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;\n\n const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);\n const baseClass = await schemaContext.getSchemaItem(baseClassKey) as ECClass;\n expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;\n\n const isDerivedFrom = await derivedClass.is(baseClass);\n expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;\n });\n\n it(\"Get Schema with class hierarchy (incremental - backend)\", async () => {\n const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel, { loadPartialSchemaOnly: true });\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(locater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);\n const derivedClass = await schemaContext.getSchemaItem(derivedClassKey) as ECClass;\n expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;\n\n const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);\n const baseClass = await schemaContext.getSchemaItem(baseClassKey) as ECClass;\n expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;\n\n const isDerivedFrom = await derivedClass.is(baseClass);\n expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;\n });\n\n it(\"Get Schema full schema stack (json props - iModel)\", async () => {\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(iModelSchemaJsonLocater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n });\n\n it(\"Get Schema full schema stack (incremental - backend)\", async () => {\n const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel);\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(locater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n // Old meta profile fallback queries will not have a controller initialized.\n if (schema.loadingController)\n await schema.loadingController.wait();\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\n const item = await schema.lookupItem(checkItem.item);\n expect(item).to.be.not.undefined;\n\n const itemProps = item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n });\n\n describe(\"Old Schema profile in iModel Tests\", () => {\n let testSchemaKey: SchemaKey;\n let testSchemaConfiguration: any;\n\n const resolveSchemaKey = async (schemaName: string): Promise<SchemaKey> => {\n const schemaFullName = (await IncrementalTestHelper.getSchemaNames()).find((name) => name.startsWith(schemaName));\n if (schemaFullName === undefined) {\n throw new Error(`Test schema '${schemaName}' not found`);\n }\n return SchemaKey.parseString(schemaFullName);\n }\n\n before(\"Setup\", async function () {\n await IncrementalTestHelper.setup(oldConfiguration.bimFile);\n testSchemaConfiguration = oldConfiguration.schemas[0];\n testSchemaKey = await resolveSchemaKey(testSchemaConfiguration.name);\n });\n\n after(async () => {\n await IncrementalTestHelper.close();\n });\n\n it(\"Incremental Loading still succeeds.\", async () => {\n const locater = new IModelIncrementalSchemaLocater(IncrementalTestHelper.iModel);\n const schemaContext = new SchemaContext();\n schemaContext.addLocater(locater);\n\n const schema = await schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n // Old meta profile fallback queries will not have a controller initialized.\n if (schema.loadingController)\n await schema.loadingController.wait();\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\n const item = await schema.lookupItem(checkItem.item);\n expect(item).to.be.not.undefined;\n\n const itemProps = item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n });\n});\n"]}
@@ -0,0 +1,11 @@
1
+ import { ISchemaLocater, Schema, SchemaContext, SchemaKey, SchemaMatchType } from "@itwin/ecschema-metadata";
2
+ import { SchemaInfo } from "@itwin/ecschema-metadata/lib/cjs/Interfaces";
3
+ import { IModelDb } from "../../../IModelDb";
4
+ export declare class IModelSchemaLocater implements ISchemaLocater {
5
+ private _iModel;
6
+ constructor(iModel: IModelDb);
7
+ getSchema<T extends Schema>(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<T | undefined>;
8
+ getSchemaInfo(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined>;
9
+ getSchemaSync(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Schema | undefined;
10
+ }
11
+ //# sourceMappingURL=IModelSchemaLocater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelSchemaLocater.d.ts","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/IModelSchemaLocater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,OAAO,CAAW;gBAEP,MAAM,EAAE,QAAQ;IAItB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAO7H,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAW/H,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS;CAWpH"}
@@ -0,0 +1,36 @@
1
+ import { Schema } from "@itwin/ecschema-metadata";
2
+ export class IModelSchemaLocater {
3
+ _iModel;
4
+ constructor(iModel) {
5
+ this._iModel = iModel;
6
+ }
7
+ async getSchema(schemaKey, matchType, context) {
8
+ await this.getSchemaInfo(schemaKey, matchType, context);
9
+ const schema = await context.getCachedSchema(schemaKey, matchType);
10
+ return schema;
11
+ }
12
+ async getSchemaInfo(schemaKey, _matchType, context) {
13
+ try {
14
+ const schemaJson = this._iModel.getSchemaProps(schemaKey.name);
15
+ return await Schema.startLoadingFromJson(schemaJson, context);
16
+ }
17
+ catch (e) {
18
+ if (e.errorNumber === 65574)
19
+ return undefined;
20
+ throw e;
21
+ }
22
+ }
23
+ getSchemaSync(schemaKey, _matchType, context) {
24
+ try {
25
+ const schemaJson = this._iModel.getSchemaProps(schemaKey.name);
26
+ const schema = Schema.fromJsonSync(schemaJson, context);
27
+ return schema;
28
+ }
29
+ catch (e) {
30
+ if (e.errorNumber === 65574)
31
+ return undefined;
32
+ throw e;
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=IModelSchemaLocater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelSchemaLocater.js","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/IModelSchemaLocater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAA6C,MAAM,0BAA0B,CAAC;AAI7G,MAAM,OAAO,mBAAmB;IACtB,OAAO,CAAW;IAE1B,YAAmB,MAAgB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAmB,SAAoB,EAAE,SAA0B,EAAE,OAAsB;QAC/G,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnE,OAAO,MAAW,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,SAAoB,EAAE,UAA2B,EAAE,OAAsB;QAClG,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO,MAAM,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QAAC,OAAM,CAAM,EAAC,CAAC;YACd,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK;gBACzB,OAAO,SAAS,CAAC;YACnB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,SAAoB,EAAE,UAA2B,EAAE,OAAsB;QAC5F,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAM,CAAM,EAAC,CAAC;YACd,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK;gBACzB,OAAO,SAAS,CAAC;YACnB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;CACF","sourcesContent":["import { ISchemaLocater, Schema, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaInfo } from \"@itwin/ecschema-metadata/lib/cjs/Interfaces\";\nimport { IModelDb } from \"../../../IModelDb\";\n\nexport class IModelSchemaLocater implements ISchemaLocater {\n private _iModel: IModelDb;\n\n public constructor(iModel: IModelDb) {\n this._iModel = iModel;\n }\n\n public async getSchema<T extends Schema>(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<T | undefined> {\n await this.getSchemaInfo(schemaKey, matchType, context);\n\n const schema = await context.getCachedSchema(schemaKey, matchType);\n return schema as T;\n }\n\n public async getSchemaInfo(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined> {\n try {\n const schemaJson = this._iModel.getSchemaProps(schemaKey.name);\n return await Schema.startLoadingFromJson(schemaJson, context);\n } catch(e: any){\n if (e.errorNumber === 65574)\n return undefined;\n throw e;\n }\n }\n\n public getSchemaSync(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Schema | undefined {\n try {\n const schemaJson = this._iModel.getSchemaProps(schemaKey.name);\n const schema = Schema.fromJsonSync(schemaJson, context);\n return schema;\n } catch(e: any){\n if (e.errorNumber === 65574)\n return undefined;\n throw e;\n }\n }\n}"]}
@@ -0,0 +1,17 @@
1
+ import { Schema, SchemaContext, SchemaKey } from "@itwin/ecschema-metadata";
2
+ import { IModelDb } from "../../../IModelDb";
3
+ export declare class IncrementalTestHelper {
4
+ private static _iModel;
5
+ static context: SchemaContext;
6
+ static testBimFile: string;
7
+ static get iModel(): IModelDb;
8
+ static get isLoaded(): boolean;
9
+ static setup(bimName?: string): Promise<void>;
10
+ static getSchemaNames(): Promise<string[]>;
11
+ private static initializeTestIModel;
12
+ static importSchema(schemaKey: SchemaKey): Promise<void>;
13
+ static close(): Promise<void>;
14
+ static getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]>;
15
+ static getSchemaString(schema: Schema): Promise<string>;
16
+ }
17
+ //# sourceMappingURL=IncrementalTestHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncrementalTestHelper.d.ts","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/IncrementalTestHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAmB,SAAS,EAAmB,MAAM,0BAA0B,CAAC;AAI9G,OAAO,EAAe,QAAQ,EAAgB,MAAM,mBAAmB,CAAC;AAKxE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAuB;IAC7C,OAAc,OAAO,EAAE,aAAa,CAAC;IACrC,OAAc,WAAW,EAAE,MAAM,CAAC;IAClC,WAAkB,MAAM,IAAI,QAAQ,CAInC;IAED,WAAkB,QAAQ,IAAI,OAAO,CAEpC;WAEmB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WA0BtC,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAevD,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAuBf,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;WAwBjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAOtB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;WAMhE,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUrE"}
@@ -0,0 +1,116 @@
1
+ import { OpenMode } from "@itwin/core-bentley";
2
+ import { ProfileOptions } from "@itwin/core-common";
3
+ import { SchemaXmlFileLocater } from "@itwin/ecschema-locaters";
4
+ import { SchemaContext, SchemaGraphUtil, SchemaMatchType } from "@itwin/ecschema-metadata";
5
+ import { DOMParser, XMLSerializer } from "@xmldom/xmldom";
6
+ import * as path from "path";
7
+ import { IModelSchemaLocater } from "./IModelSchemaLocater";
8
+ import { BriefcaseDb, IModelDb, StandaloneDb } from "../../../IModelDb";
9
+ import { IModelHost } from "../../../IModelHost";
10
+ import { IModelJsFs } from "../../../IModelJsFs";
11
+ import { KnownTestLocations } from "../../KnownTestLocations";
12
+ export class IncrementalTestHelper {
13
+ static _iModel;
14
+ static context;
15
+ static testBimFile;
16
+ static get iModel() {
17
+ if (this._iModel === undefined)
18
+ throw new Error("iModel not loaded");
19
+ return this._iModel;
20
+ }
21
+ static get isLoaded() {
22
+ return this._iModel !== undefined;
23
+ }
24
+ static async setup(bimName) {
25
+ if (!IModelHost.isValid)
26
+ await IModelHost.startup();
27
+ if (this._iModel !== undefined)
28
+ throw new Error("iModel already loaded");
29
+ if (bimName) {
30
+ const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimName);
31
+ this._iModel = await BriefcaseDb.open({
32
+ fileName: pathToBriefCase,
33
+ readonly: true,
34
+ key: "test-iModel",
35
+ });
36
+ }
37
+ else {
38
+ this.testBimFile = this.initializeTestIModel();
39
+ this._iModel = StandaloneDb.openFile(this.testBimFile, OpenMode.ReadWrite);
40
+ }
41
+ this.context = new SchemaContext();
42
+ this.context.addLocater(new IModelSchemaLocater(this._iModel));
43
+ const xmlLocater = new SchemaXmlFileLocater();
44
+ xmlLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, "IncrementalSchemaLocater"));
45
+ this.context.addLocater(xmlLocater);
46
+ }
47
+ static async getSchemaNames() {
48
+ const result = new Array();
49
+ const sqlQuery = "SELECT Name, VersionMajor, VersionWrite, VersionMinor FROM meta.ECSchemaDef ORDER BY Name";
50
+ const reader = this.iModel.createQueryReader(sqlQuery);
51
+ while (await reader.step()) {
52
+ const name = reader.current[0];
53
+ const versionMajor = reader.current[1];
54
+ const versionWrite = reader.current[2];
55
+ const versionMinor = reader.current[3];
56
+ result.push(`${name}.${versionMajor}.${versionWrite}.${versionMinor}`);
57
+ }
58
+ return result;
59
+ }
60
+ static initializeTestIModel() {
61
+ const testBim = path.join(KnownTestLocations.assetsDir, "IncrementalSchemaLocater", "test-bim.bim");
62
+ if (IModelJsFs.existsSync(testBim)) {
63
+ ~IModelJsFs.removeSync(testBim);
64
+ }
65
+ const localBim = StandaloneDb.createEmpty(testBim, {
66
+ allowEdit: "true",
67
+ rootSubject: {
68
+ name: "IncrementalSchemaTestingDb"
69
+ },
70
+ });
71
+ localBim.close();
72
+ const nativeDb = IModelDb.openDgnDb({ path: testBim }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });
73
+ nativeDb.saveChanges();
74
+ nativeDb.closeFile();
75
+ return testBim;
76
+ }
77
+ static async importSchema(schemaKey) {
78
+ if (!this.isLoaded) {
79
+ throw new Error("iModel has not been loaded");
80
+ }
81
+ if (!this._iModel)
82
+ throw new Error("iModel is undefined");
83
+ if (undefined !== this._iModel.querySchemaVersion(schemaKey.name))
84
+ return;
85
+ const testSchema = await this.context.getSchema(schemaKey, SchemaMatchType.Exact);
86
+ if (undefined === testSchema)
87
+ throw new Error(`The schema '${schemaKey.name}' could not be found.`);
88
+ const schemaXml = await this.getOrderedSchemaStrings(testSchema);
89
+ await this._iModel.importSchemaStrings(schemaXml);
90
+ this._iModel.saveChanges();
91
+ if (this._iModel.isBriefcaseDb() && !this._iModel.isReadonly) {
92
+ await this.iModel.pushChanges({ description: "import test schema" });
93
+ }
94
+ }
95
+ static async close() {
96
+ if (this._iModel !== undefined) {
97
+ this._iModel.close();
98
+ this._iModel = undefined;
99
+ }
100
+ }
101
+ static async getOrderedSchemaStrings(insertSchema) {
102
+ const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);
103
+ const schemaStrings = await Promise.all(schemas.map(async (schema) => IncrementalTestHelper.getSchemaString(schema)));
104
+ return schemaStrings;
105
+ }
106
+ static async getSchemaString(schema) {
107
+ // Serialize schema to the document object
108
+ let doc = new DOMParser().parseFromString(`<?xml version="1.0" encoding="UTF-8"?>`, "application/xml");
109
+ doc = await schema.toXml(doc);
110
+ const serializer = new XMLSerializer();
111
+ const xml = serializer.serializeToString(doc);
112
+ return xml;
113
+ }
114
+ }
115
+ ;
116
+ //# sourceMappingURL=IncrementalTestHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncrementalTestHelper.js","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/IncrementalTestHelper.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { ProfileOptions } from \"@itwin/core-common\";\nimport { SchemaXmlFileLocater } from \"@itwin/ecschema-locaters\";\nimport { Schema, SchemaContext, SchemaGraphUtil, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\nimport * as path from \"path\";\nimport { IModelSchemaLocater } from \"./IModelSchemaLocater\";\nimport { BriefcaseDb, IModelDb, StandaloneDb } from \"../../../IModelDb\";\nimport { IModelHost } from \"../../../IModelHost\";\nimport { IModelJsFs } from \"../../../IModelJsFs\";\nimport { KnownTestLocations } from \"../../KnownTestLocations\";\n\nexport class IncrementalTestHelper {\n private static _iModel: IModelDb | undefined;\n public static context: SchemaContext;\n public static testBimFile: string;\n public static get iModel(): IModelDb {\n if (this._iModel === undefined)\n throw new Error(\"iModel not loaded\");\n return this._iModel;\n }\n\n public static get isLoaded(): boolean {\n return this._iModel !== undefined;\n }\n\n public static async setup(bimName?: string): Promise<void> {\n if (!IModelHost.isValid)\n await IModelHost.startup();\n\n if (this._iModel !== undefined)\n throw new Error(\"iModel already loaded\");\n\n if (bimName) {\n const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimName);\n this._iModel = await BriefcaseDb.open({\n fileName: pathToBriefCase,\n readonly: true,\n key: \"test-iModel\",\n });\n } else {\n this.testBimFile = this.initializeTestIModel();\n this._iModel = StandaloneDb.openFile(this.testBimFile, OpenMode.ReadWrite);\n }\n\n this.context = new SchemaContext();\n this.context.addLocater(new IModelSchemaLocater(this._iModel));\n const xmlLocater = new SchemaXmlFileLocater();\n xmlLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\"));\n this.context.addLocater(xmlLocater);\n }\n\n public static async getSchemaNames(): Promise<string[]> {\n const result = new Array<string>();\n const sqlQuery = \"SELECT Name, VersionMajor, VersionWrite, VersionMinor FROM meta.ECSchemaDef ORDER BY Name\";\n const reader = this.iModel.createQueryReader(sqlQuery);\n while (await reader.step()) {\n const name = reader.current[0];\n const versionMajor = reader.current[1];\n const versionWrite = reader.current[2];\n const versionMinor = reader.current[3];\n\n result.push(`${name}.${versionMajor}.${versionWrite}.${versionMinor}`);\n }\n return result;\n }\n\n private static initializeTestIModel() {\n const testBim = path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\", \"test-bim.bim\");\n\n if (IModelJsFs.existsSync(testBim)) {~\n IModelJsFs.removeSync(testBim);\n }\n\n const localBim = StandaloneDb.createEmpty(testBim, {\n allowEdit: \"true\",\n rootSubject: {\n name: \"IncrementalSchemaTestingDb\"\n },\n });\n\n localBim.close();\n\n const nativeDb = IModelDb.openDgnDb({ path: testBim }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });\n nativeDb.saveChanges();\n nativeDb.closeFile();\n\n return testBim;\n }\n\n public static async importSchema(schemaKey: SchemaKey): Promise<void> {\n if (!this.isLoaded) {\n throw new Error(\"iModel has not been loaded\")\n }\n\n if (!this._iModel)\n throw new Error(\"iModel is undefined\");\n\n if (undefined !== this._iModel.querySchemaVersion(schemaKey.name))\n return;\n\n const testSchema = await this.context.getSchema(schemaKey, SchemaMatchType.Exact);\n if (undefined === testSchema)\n throw new Error(`The schema '${schemaKey.name}' could not be found.`);\n const schemaXml = await this.getOrderedSchemaStrings(testSchema);\n\n await this._iModel.importSchemaStrings(schemaXml);\n this._iModel.saveChanges();\n\n if (this._iModel.isBriefcaseDb() && !this._iModel.isReadonly) {\n await (this.iModel as BriefcaseDb).pushChanges({ description: \"import test schema\" });\n }\n }\n\n public static async close(): Promise<void> {\n if (this._iModel !== undefined) {\n this._iModel.close();\n this._iModel = undefined;\n }\n }\n\n public static async getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]> {\n const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);\n const schemaStrings = await Promise.all(schemas.map(async (schema) => IncrementalTestHelper.getSchemaString(schema)));\n return schemaStrings;\n }\n\n public static async getSchemaString(schema: Schema): Promise<string> {\n // Serialize schema to the document object\n let doc = new DOMParser().parseFromString(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>`, \"application/xml\");\n doc = await schema.toXml(doc);\n\n const serializer = new XMLSerializer();\n const xml = serializer.serializeToString(doc);\n\n return xml;\n }\n};"]}
@@ -0,0 +1,9 @@
1
+ import { ECSqlQueryOptions, ECSqlSchemaLocater, ECSqlSchemaLocaterOptions, SchemaKey, SchemaProps } from "@itwin/ecschema-metadata";
2
+ import { IModelDb } from "../../../IModelDb";
3
+ export declare class TestSqlSchemaLocater extends ECSqlSchemaLocater {
4
+ private _iModel;
5
+ constructor(iModel: IModelDb, queryOptions?: ECSqlSchemaLocaterOptions);
6
+ protected executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>>;
7
+ protected getSchemaProps(_schemaKey: SchemaKey): Promise<SchemaProps | undefined>;
8
+ }
9
+ //# sourceMappingURL=TestSqlSchemaLocater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestSqlSchemaLocater.d.ts","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEpI,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,OAAO,CAAC,OAAO,CAAW;gBAEP,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,yBAAyB;cAK7D,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;cAQ5F,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAGxF"}
@@ -0,0 +1,20 @@
1
+ import { ECSqlSchemaLocater } from "@itwin/ecschema-metadata";
2
+ import { QueryBinder, QueryRowFormat } from "@itwin/core-common";
3
+ export class TestSqlSchemaLocater extends ECSqlSchemaLocater {
4
+ _iModel;
5
+ constructor(iModel, queryOptions) {
6
+ super(queryOptions);
7
+ this._iModel = iModel;
8
+ }
9
+ async executeQuery(query, options) {
10
+ const queryParameters = options && options.parameters ? QueryBinder.from(options.parameters) : undefined;
11
+ return this._iModel.createQueryReader(query, queryParameters, {
12
+ rowFormat: QueryRowFormat.UseECSqlPropertyNames
13
+ })
14
+ .toArray();
15
+ }
16
+ async getSchemaProps(_schemaKey) {
17
+ throw new Error("Method not implemented.");
18
+ }
19
+ }
20
+ //# sourceMappingURL=TestSqlSchemaLocater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestSqlSchemaLocater.js","sourceRoot":"","sources":["../../../../../src/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,kBAAkB,EAAqD,MAAM,0BAA0B,CAAC;AACpI,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGjE,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAClD,OAAO,CAAW;IAE1B,YAAmB,MAAgB,EAAE,YAAwC;QAC3E,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,YAAY,CAAO,KAAa,EAAE,OAA2B;QAC3E,MAAM,eAAe,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzG,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE;YAC5D,SAAS,EAAE,cAAc,CAAC,qBAAqB;SAChD,CAAC;aACC,OAAO,EAAE,CAAC;IACf,CAAC;IACS,KAAK,CAAC,cAAc,CAAC,UAAqB;QAClD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { ECSqlQueryOptions, ECSqlSchemaLocater, ECSqlSchemaLocaterOptions, SchemaKey, SchemaProps } from \"@itwin/ecschema-metadata\";\nimport { QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\nimport { IModelDb } from \"../../../IModelDb\";\n\nexport class TestSqlSchemaLocater extends ECSqlSchemaLocater {\n private _iModel: IModelDb;\n\n public constructor(iModel: IModelDb, queryOptions?: ECSqlSchemaLocaterOptions) {\n super(queryOptions);\n this._iModel = iModel;\n }\n\n protected async executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>> {\n const queryParameters = options && options.parameters ? QueryBinder.from(options.parameters) : undefined;\n\n return this._iModel.createQueryReader(query, queryParameters, {\n rowFormat: QueryRowFormat.UseECSqlPropertyNames\n })\n .toArray();\n }\n protected async getSchemaProps(_schemaKey: SchemaKey): Promise<SchemaProps | undefined> {\n throw new Error(\"Method not implemented.\");\n }\n}"]}
@@ -3,8 +3,9 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { assert } from "chai";
6
+ import { Helmert2DWithZOffset, } from "@itwin/core-common";
6
7
  import { IModelNative } from "../../internal/NativePlatform";
7
- import { Geometry, Range2d } from "@itwin/core-geometry";
8
+ import { Geometry, Point3d, Range2d } from "@itwin/core-geometry";
8
9
  import { GeoCoordConfig } from "../../GeoCoordConfig";
9
10
  import { getAvailableCoordinateReferenceSystems } from "../../GeographicCRSServices";
10
11
  // spell-checker: disable
@@ -751,9 +752,10 @@ describe("GeoServices", () => {
751
752
  describe("Verify list of CRS", async () => {
752
753
  const validationRange = 50;
753
754
  const validationRangeSmall = 10;
754
- const validateCRSList = async (expectedCount, allowedRange, extent) => {
755
- const listOfCRS = await getAvailableCoordinateReferenceSystems({ extent });
756
- // Check fields of returned CRS's
755
+ const validateCRSList = async (options) => {
756
+ const { expectedCount, allowedRange, extent, includeWorld } = options;
757
+ const listOfCRS = await getAvailableCoordinateReferenceSystems({ extent, includeWorld });
758
+ // Check fields of returned coordinate reference systems
757
759
  const extentRange = Range2d.fromJSON(extent);
758
760
  for (const crs of listOfCRS) {
759
761
  // Validate extent
@@ -777,22 +779,28 @@ describe("GeoServices", () => {
777
779
  assert.equal(crsExtentRange.high.y, expectedExtent.high.y);
778
780
  };
779
781
  it("should get all CRS", async () => {
780
- await validateCRSList(11975, validationRange);
782
+ await validateCRSList({ expectedCount: 12_332, allowedRange: validationRange, includeWorld: true });
783
+ });
784
+ it("should get all CRS, excluding world crs", async () => {
785
+ await validateCRSList({ expectedCount: 11_975, allowedRange: validationRange });
781
786
  });
782
787
  it("should return CRS that are in the specified range (1)", async () => {
783
788
  const extent = { low: { x: 60.1, y: 61.2 }, high: { x: 62.3, y: 63.4 } };
784
- await validateCRSList(82, validationRangeSmall, extent);
789
+ await validateCRSList({ expectedCount: 82, allowedRange: validationRangeSmall, extent });
790
+ await validateCRSList({ expectedCount: 439, allowedRange: validationRangeSmall, extent, includeWorld: true });
785
791
  });
786
792
  it("should return CRS that are in the specified range (2)", async () => {
787
793
  const extent = { low: { x: 0, y: 2 }, high: { x: 1, y: 3 } };
788
- await validateCRSList(67, validationRangeSmall, extent);
794
+ await validateCRSList({ expectedCount: 67, allowedRange: validationRangeSmall, extent });
795
+ await validateCRSList({ expectedCount: 424, allowedRange: validationRangeSmall, extent, includeWorld: true });
789
796
  });
790
797
  it("should return CRS that are in the specified range (3)", async () => {
791
798
  const extent = { low: { x: 0.3, y: 2.4 }, high: { x: 1.6, y: 3.77 } };
792
- await validateCRSList(62, validationRangeSmall, extent);
799
+ await validateCRSList({ expectedCount: 62, allowedRange: validationRangeSmall, extent });
800
+ await validateCRSList({ expectedCount: 419, allowedRange: validationRangeSmall, extent, includeWorld: true });
793
801
  });
794
802
  it("should retrieve the whole list of CRS and validate the properties for a few selected CRS.", async () => {
795
- const listOfCRS = await getAvailableCoordinateReferenceSystems({});
803
+ const listOfCRS = await getAvailableCoordinateReferenceSystems({ includeWorld: true });
796
804
  let nbFound = 0;
797
805
  for (const crs of listOfCRS) {
798
806
  switch (crs.name) {
@@ -820,9 +828,16 @@ describe("GeoServices", () => {
820
828
  assert.equal(crs.deprecated, false);
821
829
  validateExtent(Range2d.fromJSON({ low: { x: -71, y: 43.5 }, high: { x: -66, y: 48 } }), crs.crsExtent);
822
830
  break;
831
+ // world CRS
832
+ case "EPSG:4326":
833
+ nbFound++;
834
+ assert.equal(crs.description, "WGS 84");
835
+ assert.equal(crs.deprecated, false);
836
+ validateExtent(Range2d.fromJSON({ low: { x: -180, y: -90 }, high: { x: 180, y: 90 } }), crs.crsExtent);
837
+ break;
823
838
  }
824
839
  }
825
- assert.equal(nbFound, 4);
840
+ assert.equal(nbFound, 5);
826
841
  });
827
842
  });
828
843
  it("should not be able to interpret an invalid GeographicCRS", async () => {
@@ -846,5 +861,16 @@ describe("GeoServices", () => {
846
861
  // Unknown identifier
847
862
  await interpretInvalidTest("JSON", '{ horizontalCRS: { id: "UNKNOWN" }, verticalCRS: { id: "NAVD29" } }');
848
863
  });
864
+ it("should return expected Transform from Helmert2DWithZOffset object", async () => {
865
+ const helmertTransform = new Helmert2DWithZOffset({ translationX: 1, translationY: 1, translationZ: 1, rotDeg: 90, scale: 2 });
866
+ const convertedTransform = helmertTransform.convertHelmertToTransform();
867
+ const originExpected = Point3d.fromJSON({ x: 1, y: 1, z: 1 });
868
+ assert(convertedTransform.origin.isAlmostEqual(originExpected));
869
+ const expectedCoffs = [0, -2, 0, 2, 0, 0, 0, 0, 1];
870
+ const actualCoffs = Array.from(convertedTransform.matrix.coffs);
871
+ for (let i = 0; i < expectedCoffs.length; ++i) {
872
+ assert(Math.abs(actualCoffs[i] - expectedCoffs[i]) < 1e-12, `Matrix coefficient at index ${i} differs: expected ${expectedCoffs[i]}, got ${actualCoffs[i]}`);
873
+ }
874
+ });
849
875
  });
850
876
  //# sourceMappingURL=GeoServices.test.js.map