@itwin/core-backend 5.9.0-dev.1 → 5.9.0-dev.10

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 (551) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +38 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.js +3 -3
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/Category.d.ts +37 -7
  8. package/lib/cjs/Category.d.ts.map +1 -1
  9. package/lib/cjs/Category.js +33 -42
  10. package/lib/cjs/Category.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +5 -2
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.d.ts +29 -0
  15. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  16. package/lib/cjs/ChannelControl.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.js +1 -1
  18. package/lib/cjs/CheckpointManager.js.map +1 -1
  19. package/lib/cjs/CloudSqlite.d.ts +1 -1
  20. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  21. package/lib/cjs/CloudSqlite.js +68 -13
  22. package/lib/cjs/CloudSqlite.js.map +1 -1
  23. package/lib/cjs/CodeSpecs.d.ts +32 -3
  24. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  25. package/lib/cjs/CodeSpecs.js +48 -20
  26. package/lib/cjs/CodeSpecs.js.map +1 -1
  27. package/lib/cjs/DisplayStyle.d.ts +18 -3
  28. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  29. package/lib/cjs/DisplayStyle.js +10 -21
  30. package/lib/cjs/DisplayStyle.js.map +1 -1
  31. package/lib/cjs/EditTxn.d.ts +262 -0
  32. package/lib/cjs/EditTxn.d.ts.map +1 -0
  33. package/lib/cjs/EditTxn.js +548 -0
  34. package/lib/cjs/EditTxn.js.map +1 -0
  35. package/lib/cjs/Element.d.ts +74 -5
  36. package/lib/cjs/Element.d.ts.map +1 -1
  37. package/lib/cjs/Element.js +63 -75
  38. package/lib/cjs/Element.js.map +1 -1
  39. package/lib/cjs/ElementAspect.d.ts +10 -0
  40. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  41. package/lib/cjs/ElementAspect.js +21 -12
  42. package/lib/cjs/ElementAspect.js.map +1 -1
  43. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  44. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  45. package/lib/cjs/ElementTreeWalker.js +53 -40
  46. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  47. package/lib/cjs/ExternalSource.d.ts +11 -2
  48. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  49. package/lib/cjs/ExternalSource.js +10 -8
  50. package/lib/cjs/ExternalSource.js.map +1 -1
  51. package/lib/cjs/IModelDb.d.ts +66 -22
  52. package/lib/cjs/IModelDb.d.ts.map +1 -1
  53. package/lib/cjs/IModelDb.js +175 -289
  54. package/lib/cjs/IModelDb.js.map +1 -1
  55. package/lib/cjs/IModelHost.d.ts +58 -1
  56. package/lib/cjs/IModelHost.d.ts.map +1 -1
  57. package/lib/cjs/IModelHost.js +89 -0
  58. package/lib/cjs/IModelHost.js.map +1 -1
  59. package/lib/cjs/IpcHost.d.ts.map +1 -1
  60. package/lib/cjs/IpcHost.js +35 -15
  61. package/lib/cjs/IpcHost.js.map +1 -1
  62. package/lib/cjs/LineStyle.d.ts +47 -7
  63. package/lib/cjs/LineStyle.d.ts.map +1 -1
  64. package/lib/cjs/LineStyle.js +38 -33
  65. package/lib/cjs/LineStyle.js.map +1 -1
  66. package/lib/cjs/LockControl.d.ts +85 -1
  67. package/lib/cjs/LockControl.d.ts.map +1 -1
  68. package/lib/cjs/LockControl.js.map +1 -1
  69. package/lib/cjs/Material.d.ts +8 -1
  70. package/lib/cjs/Material.d.ts.map +1 -1
  71. package/lib/cjs/Material.js +6 -12
  72. package/lib/cjs/Material.js.map +1 -1
  73. package/lib/cjs/Model.d.ts +59 -20
  74. package/lib/cjs/Model.d.ts.map +1 -1
  75. package/lib/cjs/Model.js +38 -80
  76. package/lib/cjs/Model.js.map +1 -1
  77. package/lib/cjs/Relationship.d.ts +72 -7
  78. package/lib/cjs/Relationship.d.ts.map +1 -1
  79. package/lib/cjs/Relationship.js +39 -21
  80. package/lib/cjs/Relationship.js.map +1 -1
  81. package/lib/cjs/SchemaSync.js +4 -4
  82. package/lib/cjs/SchemaSync.js.map +1 -1
  83. package/lib/cjs/SheetIndex.d.ts +9 -0
  84. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  85. package/lib/cjs/SheetIndex.js +38 -35
  86. package/lib/cjs/SheetIndex.js.map +1 -1
  87. package/lib/cjs/StashManager.js +1 -1
  88. package/lib/cjs/StashManager.js.map +1 -1
  89. package/lib/cjs/Texture.d.ts +6 -0
  90. package/lib/cjs/Texture.d.ts.map +1 -1
  91. package/lib/cjs/Texture.js +6 -14
  92. package/lib/cjs/Texture.js.map +1 -1
  93. package/lib/cjs/TxnManager.d.ts +105 -9
  94. package/lib/cjs/TxnManager.d.ts.map +1 -1
  95. package/lib/cjs/TxnManager.js +194 -15
  96. package/lib/cjs/TxnManager.js.map +1 -1
  97. package/lib/cjs/ViewDefinition.d.ts +21 -1
  98. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  99. package/lib/cjs/ViewDefinition.js +27 -66
  100. package/lib/cjs/ViewDefinition.js.map +1 -1
  101. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  102. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  103. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  104. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  105. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  106. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  107. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  108. package/lib/cjs/core-backend.d.ts +1 -0
  109. package/lib/cjs/core-backend.d.ts.map +1 -1
  110. package/lib/cjs/core-backend.js +1 -0
  111. package/lib/cjs/core-backend.js.map +1 -1
  112. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  113. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  114. package/lib/cjs/domains/FunctionalElements.js +8 -13
  115. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  116. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  117. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  118. package/lib/cjs/domains/GenericElements.js +13 -24
  119. package/lib/cjs/domains/GenericElements.js.map +1 -1
  120. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  121. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  122. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  123. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  124. package/lib/cjs/internal/HubMock.d.ts +2 -0
  125. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  126. package/lib/cjs/internal/HubMock.js +7 -0
  127. package/lib/cjs/internal/HubMock.js.map +1 -1
  128. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  129. package/lib/cjs/internal/NoLocks.js +6 -0
  130. package/lib/cjs/internal/NoLocks.js.map +1 -1
  131. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  132. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  133. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  134. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  135. package/lib/cjs/internal/Symbols.d.ts +4 -0
  136. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  137. package/lib/cjs/internal/Symbols.js +5 -1
  138. package/lib/cjs/internal/Symbols.js.map +1 -1
  139. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  140. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  141. package/lib/cjs/internal/annotations/fields.js +7 -6
  142. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  143. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  144. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  145. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +49 -242
  146. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  147. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  148. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  149. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +0 -1
  150. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  151. package/lib/cjs/internal/workspace/WorkspaceImpl.js +70 -41
  152. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  153. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  154. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  155. package/lib/cjs/workspace/Settings.d.ts +11 -5
  156. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  157. package/lib/cjs/workspace/Settings.js.map +1 -1
  158. package/lib/cjs/workspace/SettingsDb.d.ts +20 -99
  159. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -1
  160. package/lib/cjs/workspace/SettingsDb.js +23 -7
  161. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  162. package/lib/cjs/workspace/SettingsEditor.d.ts +40 -226
  163. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
  164. package/lib/cjs/workspace/SettingsEditor.js +86 -25
  165. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  166. package/lib/cjs/workspace/Workspace.d.ts +7 -11
  167. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  168. package/lib/cjs/workspace/Workspace.js.map +1 -1
  169. package/lib/cjs/workspace/WorkspaceEditor.d.ts +14 -0
  170. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  171. package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
  172. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  173. package/lib/esm/BackendHubAccess.d.ts +38 -0
  174. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  175. package/lib/esm/BackendHubAccess.js.map +1 -1
  176. package/lib/esm/BriefcaseManager.js +3 -3
  177. package/lib/esm/BriefcaseManager.js.map +1 -1
  178. package/lib/esm/Category.d.ts +37 -7
  179. package/lib/esm/Category.d.ts.map +1 -1
  180. package/lib/esm/Category.js +33 -42
  181. package/lib/esm/Category.js.map +1 -1
  182. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  183. package/lib/esm/ChangesetECAdaptor.js +5 -2
  184. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  185. package/lib/esm/ChannelControl.d.ts +29 -0
  186. package/lib/esm/ChannelControl.d.ts.map +1 -1
  187. package/lib/esm/ChannelControl.js.map +1 -1
  188. package/lib/esm/CheckpointManager.js +1 -1
  189. package/lib/esm/CheckpointManager.js.map +1 -1
  190. package/lib/esm/CloudSqlite.d.ts +1 -1
  191. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  192. package/lib/esm/CloudSqlite.js +69 -14
  193. package/lib/esm/CloudSqlite.js.map +1 -1
  194. package/lib/esm/CodeSpecs.d.ts +32 -3
  195. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  196. package/lib/esm/CodeSpecs.js +49 -21
  197. package/lib/esm/CodeSpecs.js.map +1 -1
  198. package/lib/esm/DisplayStyle.d.ts +18 -3
  199. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  200. package/lib/esm/DisplayStyle.js +10 -21
  201. package/lib/esm/DisplayStyle.js.map +1 -1
  202. package/lib/esm/EditTxn.d.ts +262 -0
  203. package/lib/esm/EditTxn.d.ts.map +1 -0
  204. package/lib/esm/EditTxn.js +543 -0
  205. package/lib/esm/EditTxn.js.map +1 -0
  206. package/lib/esm/Element.d.ts +74 -5
  207. package/lib/esm/Element.d.ts.map +1 -1
  208. package/lib/esm/Element.js +64 -76
  209. package/lib/esm/Element.js.map +1 -1
  210. package/lib/esm/ElementAspect.d.ts +10 -0
  211. package/lib/esm/ElementAspect.d.ts.map +1 -1
  212. package/lib/esm/ElementAspect.js +22 -13
  213. package/lib/esm/ElementAspect.js.map +1 -1
  214. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  215. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  216. package/lib/esm/ElementTreeWalker.js +53 -40
  217. package/lib/esm/ElementTreeWalker.js.map +1 -1
  218. package/lib/esm/ExternalSource.d.ts +11 -2
  219. package/lib/esm/ExternalSource.d.ts.map +1 -1
  220. package/lib/esm/ExternalSource.js +10 -8
  221. package/lib/esm/ExternalSource.js.map +1 -1
  222. package/lib/esm/IModelDb.d.ts +66 -22
  223. package/lib/esm/IModelDb.d.ts.map +1 -1
  224. package/lib/esm/IModelDb.js +177 -291
  225. package/lib/esm/IModelDb.js.map +1 -1
  226. package/lib/esm/IModelHost.d.ts +58 -1
  227. package/lib/esm/IModelHost.d.ts.map +1 -1
  228. package/lib/esm/IModelHost.js +91 -2
  229. package/lib/esm/IModelHost.js.map +1 -1
  230. package/lib/esm/IpcHost.d.ts.map +1 -1
  231. package/lib/esm/IpcHost.js +36 -16
  232. package/lib/esm/IpcHost.js.map +1 -1
  233. package/lib/esm/LineStyle.d.ts +47 -7
  234. package/lib/esm/LineStyle.d.ts.map +1 -1
  235. package/lib/esm/LineStyle.js +38 -33
  236. package/lib/esm/LineStyle.js.map +1 -1
  237. package/lib/esm/LockControl.d.ts +85 -1
  238. package/lib/esm/LockControl.d.ts.map +1 -1
  239. package/lib/esm/LockControl.js.map +1 -1
  240. package/lib/esm/Material.d.ts +8 -1
  241. package/lib/esm/Material.d.ts.map +1 -1
  242. package/lib/esm/Material.js +6 -12
  243. package/lib/esm/Material.js.map +1 -1
  244. package/lib/esm/Model.d.ts +59 -20
  245. package/lib/esm/Model.d.ts.map +1 -1
  246. package/lib/esm/Model.js +39 -81
  247. package/lib/esm/Model.js.map +1 -1
  248. package/lib/esm/Relationship.d.ts +72 -7
  249. package/lib/esm/Relationship.d.ts.map +1 -1
  250. package/lib/esm/Relationship.js +40 -22
  251. package/lib/esm/Relationship.js.map +1 -1
  252. package/lib/esm/SchemaSync.js +5 -5
  253. package/lib/esm/SchemaSync.js.map +1 -1
  254. package/lib/esm/SheetIndex.d.ts +9 -0
  255. package/lib/esm/SheetIndex.d.ts.map +1 -1
  256. package/lib/esm/SheetIndex.js +38 -35
  257. package/lib/esm/SheetIndex.js.map +1 -1
  258. package/lib/esm/StashManager.js +1 -1
  259. package/lib/esm/StashManager.js.map +1 -1
  260. package/lib/esm/Texture.d.ts +6 -0
  261. package/lib/esm/Texture.d.ts.map +1 -1
  262. package/lib/esm/Texture.js +6 -14
  263. package/lib/esm/Texture.js.map +1 -1
  264. package/lib/esm/TxnManager.d.ts +105 -9
  265. package/lib/esm/TxnManager.d.ts.map +1 -1
  266. package/lib/esm/TxnManager.js +194 -15
  267. package/lib/esm/TxnManager.js.map +1 -1
  268. package/lib/esm/ViewDefinition.d.ts +21 -1
  269. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  270. package/lib/esm/ViewDefinition.js +27 -66
  271. package/lib/esm/ViewDefinition.js.map +1 -1
  272. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  273. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  274. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  275. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  276. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  277. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  278. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  279. package/lib/esm/core-backend.d.ts +1 -0
  280. package/lib/esm/core-backend.d.ts.map +1 -1
  281. package/lib/esm/core-backend.js +1 -0
  282. package/lib/esm/core-backend.js.map +1 -1
  283. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  284. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  285. package/lib/esm/domains/FunctionalElements.js +8 -13
  286. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  287. package/lib/esm/domains/GenericElements.d.ts +11 -4
  288. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  289. package/lib/esm/domains/GenericElements.js +13 -24
  290. package/lib/esm/domains/GenericElements.js.map +1 -1
  291. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  292. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  293. package/lib/esm/internal/ChannelAdmin.js +6 -4
  294. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  295. package/lib/esm/internal/HubMock.d.ts +2 -0
  296. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  297. package/lib/esm/internal/HubMock.js +7 -0
  298. package/lib/esm/internal/HubMock.js.map +1 -1
  299. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  300. package/lib/esm/internal/NoLocks.js +6 -0
  301. package/lib/esm/internal/NoLocks.js.map +1 -1
  302. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  303. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  304. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  305. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  306. package/lib/esm/internal/Symbols.d.ts +4 -0
  307. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  308. package/lib/esm/internal/Symbols.js +4 -0
  309. package/lib/esm/internal/Symbols.js.map +1 -1
  310. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  311. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  312. package/lib/esm/internal/annotations/fields.js +7 -6
  313. package/lib/esm/internal/annotations/fields.js.map +1 -1
  314. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  315. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  316. package/lib/esm/internal/workspace/SettingsEditorImpl.js +52 -246
  317. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  318. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  319. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  320. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +0 -1
  321. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  322. package/lib/esm/internal/workspace/WorkspaceImpl.js +71 -41
  323. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  324. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  325. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  326. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  327. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  328. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  329. package/lib/esm/test/ElementDrivesElement.test.js +111 -96
  330. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  331. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  332. package/lib/esm/test/IModelHost.test.js +56 -2
  333. package/lib/esm/test/IModelHost.test.js.map +1 -1
  334. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  335. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  336. package/lib/esm/test/IModelTestUtils.js +466 -449
  337. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  338. package/lib/esm/test/IpcHost.test.js +112 -0
  339. package/lib/esm/test/IpcHost.test.js.map +1 -1
  340. package/lib/esm/test/PropertyDb.test.js +2 -2
  341. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  342. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
  343. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  344. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  345. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  346. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  347. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  348. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  349. package/lib/esm/test/TestEditTxn.js +34 -0
  350. package/lib/esm/test/TestEditTxn.js.map +1 -0
  351. package/lib/esm/test/TestUtils.d.ts +1 -0
  352. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  353. package/lib/esm/test/TestUtils.js +8 -1
  354. package/lib/esm/test/TestUtils.js.map +1 -1
  355. package/lib/esm/test/annotations/Fields.test.js +82 -90
  356. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  357. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  358. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  359. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  360. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  361. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  362. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  363. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  364. package/lib/esm/test/categories/Category.test.js +63 -3
  365. package/lib/esm/test/categories/Category.test.js.map +1 -1
  366. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  367. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  368. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  369. package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
  370. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
  372. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
  374. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  375. package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
  376. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  377. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  378. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  379. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  380. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  381. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  382. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  383. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  384. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  385. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  386. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  387. package/lib/esm/test/element/ElementAspect.test.js +68 -60
  388. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  389. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  390. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  391. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  392. package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
  393. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  394. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  395. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  396. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  397. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  398. package/lib/esm/test/element/NullStructArray.test.js +10 -9
  399. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  400. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  401. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  402. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  403. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  404. package/lib/esm/test/element/UrlLink.test.js +2 -2
  405. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  406. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  407. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  408. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
  409. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  410. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  411. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  412. package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
  413. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  414. package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
  415. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  416. package/lib/esm/test/imodel/Code.test.js +31 -31
  417. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  418. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  419. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  420. package/lib/esm/test/imodel/IModel.test.js +419 -344
  421. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  422. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  423. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  424. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  425. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  426. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  427. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  428. package/lib/esm/test/index.d.ts +1 -0
  429. package/lib/esm/test/index.d.ts.map +1 -1
  430. package/lib/esm/test/index.js +1 -0
  431. package/lib/esm/test/index.js.map +1 -1
  432. package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
  433. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  434. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  435. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  436. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  437. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  438. package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
  439. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  440. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
  441. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  442. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  443. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  444. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  445. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  446. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  447. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  448. package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
  449. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  450. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  451. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  452. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  453. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  454. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  455. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  456. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  457. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  458. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  459. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  460. package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
  461. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  462. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  463. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  464. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  465. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  466. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  467. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  468. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  469. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  470. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  471. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  472. package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
  473. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  474. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts +2 -0
  475. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts.map +1 -0
  476. package/lib/esm/test/standalone/ITwinWorkspace.test.js +236 -0
  477. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -0
  478. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  479. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  480. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  481. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  482. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  483. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  484. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  485. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  486. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  487. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  488. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  489. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  490. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  491. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  492. package/lib/esm/test/standalone/ServerBasedLocks.test.js +928 -22
  493. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  494. package/lib/esm/test/standalone/Settings.test.js +26 -4
  495. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  496. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  497. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  498. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  499. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  500. package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
  501. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  502. package/lib/esm/test/standalone/Texture.test.js +5 -4
  503. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  504. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  505. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  506. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  507. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  508. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  509. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  510. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  511. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  512. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  513. package/lib/esm/test/standalone/Workspace.test.js +72 -22
  514. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  515. package/lib/esm/test/workspace/SettingsDb.test.js +28 -456
  516. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  517. package/lib/esm/workspace/Settings.d.ts +11 -5
  518. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  519. package/lib/esm/workspace/Settings.js.map +1 -1
  520. package/lib/esm/workspace/SettingsDb.d.ts +20 -99
  521. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -1
  522. package/lib/esm/workspace/SettingsDb.js +20 -6
  523. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  524. package/lib/esm/workspace/SettingsEditor.d.ts +40 -226
  525. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
  526. package/lib/esm/workspace/SettingsEditor.js +85 -24
  527. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  528. package/lib/esm/workspace/Workspace.d.ts +7 -11
  529. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  530. package/lib/esm/workspace/Workspace.js.map +1 -1
  531. package/lib/esm/workspace/WorkspaceEditor.d.ts +14 -0
  532. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  533. package/lib/esm/workspace/WorkspaceEditor.js +1 -1
  534. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  535. package/package.json +14 -14
  536. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +0 -38
  537. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  538. package/lib/cjs/internal/workspace/SettingsDbImpl.js +0 -108
  539. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +0 -1
  540. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  541. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  542. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +0 -40
  543. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +0 -1
  544. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +0 -38
  545. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  546. package/lib/esm/internal/workspace/SettingsDbImpl.js +0 -104
  547. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +0 -1
  548. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  549. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  550. package/lib/esm/internal/workspace/SettingsSqliteDb.js +0 -36
  551. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +0 -1
@@ -7,6 +7,7 @@ import { Id64 } from "@itwin/core-bentley";
7
7
  import { Placement3d } from "@itwin/core-common";
8
8
  import { GeometricElement3d } from "../../core-backend";
9
9
  import { IModelTestUtils } from "../index";
10
+ import { withEditTxn } from "../../EditTxn";
10
11
  describe("computeProjectExtents", () => {
11
12
  let imodel;
12
13
  before(() => {
@@ -42,9 +43,8 @@ describe("computeProjectExtents", () => {
42
43
  placement.origin.z *= mult;
43
44
  elemProps.placement = placement;
44
45
  elemProps.geom[2].sphere.radius = 0.000001;
45
- const newId = imodel.elements.insertElement(elemProps);
46
+ const newId = withEditTxn(imodel, (txn) => txn.insertElement(elemProps));
46
47
  expect(Id64.isValid(newId)).to.be.true;
47
- imodel.saveChanges();
48
48
  const newElem = imodel.elements.getElement(newId);
49
49
  expect(newElem).instanceof(GeometricElement3d);
50
50
  expect(newElem.placement.origin.x).to.equal(originalOrigin.x * mult);
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectExtents.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ProjectExtents.test.ts"],"names":[],"mappings":"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","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 { expect } from \"chai\";\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { GeometricElement3dProps, Placement3d } from \"@itwin/core-common\";\nimport { GeometricElement3d, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../index\";\n\ndescribe(\"computeProjectExtents\", () => {\n let imodel: SnapshotDb;\n\n before(() => {\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\"), IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(() => {\n imodel.close();\n });\n\n it(\"should return requested information\", () => {\n const projectExtents = imodel.projectExtents;\n const args = [undefined, false, true];\n for (const reportExtentsWithOutliers of args) {\n for (const reportOutliers of args) {\n const result = imodel.computeProjectExtents({ reportExtentsWithOutliers, reportOutliers });\n expect(result.extents.isAlmostEqual(projectExtents)).to.be.true;\n\n expect(undefined !== result.extentsWithOutliers).to.equal(true === reportExtentsWithOutliers);\n if (undefined !== result.extentsWithOutliers)\n expect(result.extentsWithOutliers.isAlmostEqual(projectExtents)).to.be.true;\n\n expect(undefined !== result.outliers).to.equal(true === reportOutliers);\n if (undefined !== result.outliers)\n expect(result.outliers.length).to.equal(0);\n }\n }\n });\n\n it(\"should report outliers\", () => {\n const elemProps = imodel.elements.getElementProps<GeometricElement3dProps>({ id: \"0x39\", wantGeometry: true });\n elemProps.id = Id64.invalid;\n const placement = Placement3d.fromJSON(elemProps.placement);\n const originalOrigin = placement.origin.clone();\n const mult = 1000000;\n placement.origin.x *= mult;\n placement.origin.y *= mult;\n placement.origin.z *= mult;\n elemProps.placement = placement;\n elemProps.geom![2].sphere!.radius = 0.000001;\n const newId = imodel.elements.insertElement(elemProps);\n expect(Id64.isValid(newId)).to.be.true;\n imodel.saveChanges();\n\n const newElem = imodel.elements.getElement<GeometricElement3d>(newId);\n expect(newElem).instanceof(GeometricElement3d);\n expect(newElem.placement.origin.x).to.equal(originalOrigin.x * mult);\n expect(newElem.placement.origin.y).to.equal(originalOrigin.y * mult);\n expect(newElem.placement.origin.z).to.equal(originalOrigin.z * mult);\n\n const outlierRange = placement.calculateRange();\n const originalExtents = imodel.projectExtents;\n const extentsWithOutlier = originalExtents.clone();\n extentsWithOutlier.extendRange(outlierRange);\n\n const result = imodel.computeProjectExtents({ reportExtentsWithOutliers: true, reportOutliers: true });\n expect(result.outliers!.length).to.equal(1);\n expect(result.outliers![0]).to.equal(newId);\n expect(result.extents.isAlmostEqual(originalExtents)).to.be.true;\n expect(result.extentsWithOutliers!.isAlmostEqual(originalExtents)).to.be.false;\n expect(result.extentsWithOutliers!.low.isAlmostEqual(extentsWithOutlier.low)).to.be.true;\n expect(result.extentsWithOutliers!.high.isAlmostEqual(extentsWithOutlier.high, 20)).to.be.true;\n });\n});\n"]}
1
+ {"version":3,"file":"ProjectExtents.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ProjectExtents.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAA2B,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAc,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,MAAkB,CAAC;IAEvB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM,yBAAyB,IAAI,IAAI,EAAE,CAAC;YAC7C,KAAK,MAAM,cAAc,IAAI,IAAI,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC3F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;gBAEhE,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC;gBAC9F,IAAI,SAAS,KAAK,MAAM,CAAC,mBAAmB;oBAC1C,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;gBAE9E,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;gBACxE,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ;oBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/G,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC;QACrB,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3B,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3B,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,MAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAqB,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAErE,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QAC9C,MAAM,kBAAkB,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;QACnD,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,MAAM,CAAC,QAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,mBAAoB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,mBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,mBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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 { expect } from \"chai\";\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { GeometricElement3dProps, Placement3d } from \"@itwin/core-common\";\nimport { GeometricElement3d, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../index\";\nimport { withEditTxn } from \"../../EditTxn\";\n\ndescribe(\"computeProjectExtents\", () => {\n let imodel: SnapshotDb;\n\n before(() => {\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\"), IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(() => {\n imodel.close();\n });\n\n it(\"should return requested information\", () => {\n const projectExtents = imodel.projectExtents;\n const args = [undefined, false, true];\n for (const reportExtentsWithOutliers of args) {\n for (const reportOutliers of args) {\n const result = imodel.computeProjectExtents({ reportExtentsWithOutliers, reportOutliers });\n expect(result.extents.isAlmostEqual(projectExtents)).to.be.true;\n\n expect(undefined !== result.extentsWithOutliers).to.equal(true === reportExtentsWithOutliers);\n if (undefined !== result.extentsWithOutliers)\n expect(result.extentsWithOutliers.isAlmostEqual(projectExtents)).to.be.true;\n\n expect(undefined !== result.outliers).to.equal(true === reportOutliers);\n if (undefined !== result.outliers)\n expect(result.outliers.length).to.equal(0);\n }\n }\n });\n\n it(\"should report outliers\", () => {\n const elemProps = imodel.elements.getElementProps<GeometricElement3dProps>({ id: \"0x39\", wantGeometry: true });\n elemProps.id = Id64.invalid;\n const placement = Placement3d.fromJSON(elemProps.placement);\n const originalOrigin = placement.origin.clone();\n const mult = 1000000;\n placement.origin.x *= mult;\n placement.origin.y *= mult;\n placement.origin.z *= mult;\n elemProps.placement = placement;\n elemProps.geom![2].sphere!.radius = 0.000001;\n const newId = withEditTxn(imodel, (txn) => txn.insertElement(elemProps));\n expect(Id64.isValid(newId)).to.be.true;\n\n const newElem = imodel.elements.getElement<GeometricElement3d>(newId);\n expect(newElem).instanceof(GeometricElement3d);\n expect(newElem.placement.origin.x).to.equal(originalOrigin.x * mult);\n expect(newElem.placement.origin.y).to.equal(originalOrigin.y * mult);\n expect(newElem.placement.origin.z).to.equal(originalOrigin.z * mult);\n\n const outlierRange = placement.calculateRange();\n const originalExtents = imodel.projectExtents;\n const extentsWithOutlier = originalExtents.clone();\n extentsWithOutlier.extendRange(outlierRange);\n\n const result = imodel.computeProjectExtents({ reportExtentsWithOutliers: true, reportOutliers: true });\n expect(result.outliers!.length).to.equal(1);\n expect(result.outliers![0]).to.equal(newId);\n expect(result.extents.isAlmostEqual(originalExtents)).to.be.true;\n expect(result.extentsWithOutliers!.isAlmostEqual(originalExtents)).to.be.false;\n expect(result.extentsWithOutliers!.low.isAlmostEqual(extentsWithOutlier.low)).to.be.true;\n expect(result.extentsWithOutliers!.high.isAlmostEqual(extentsWithOutlier.high, 20)).to.be.true;\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlQueries.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/ECSqlQueries.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAA4E,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACvJ,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,KAAK,mBAAmB,MAAM,yBAAyB,CAAC;AAE/D,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEzB,SAAS,QAAQ,CAA+B,IAAY,EAAE,OAAY;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,GAAG,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAA6B,IAAY,EAAE,OAAY;IAC1E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,OAAO,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,iBAAiB;QACnK,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,oBAAoB,CAAC;AACtH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACnD,OAAO,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAe,iBAAkB,SAAQ,8BAA8B;CAgBtE;AAED,QAAQ,CAAC,mBAAmB,EAAE;IAE5B,SAAS,YAAY,CAAC,IAAY,EAAE,eAAqC,EAAE,MAAc;QACvF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,YAAa,CAAC,MAAM,EAAE,CAAC;QAE5C,0FAA0F;QAC1F,wFAAwF;QACxF,2FAA2F;QAC3F,uFAAuF;QACvF,2FAA2F;QAC3F,kGAAkG;QAElG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACrD,OAAQ,UAAkB,CAAC,IAAI,CAAC;QAEhC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,IAAI,YAAY,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACjE,OAAQ,UAAkB,CAAC,QAAQ,CAAC;YACtC,CAAC;iBAAM,IAAK,YAA2B,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC7D,OAAQ,UAAkB,CAAC,QAAQ,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,+EAA+E;YAC/E,sEAAsE;YACtE,MAAM,oBAAoB,GAAG,YAA6C,CAAC;YAC3E,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5F,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAQ,UAAU,CAAC,MAAc,CAAC,kBAAkB,CAAC;YACvD,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5F,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAQ,UAAU,CAAC,MAAc,CAAC,kBAAkB,CAAC;YACvD,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,cAAc,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,SAAS,KAAM,UAAkB,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,WAAW,EAAE,CAAC;gBACrG,MAAM,CAAE,UAAkB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,OAAQ,UAAkB,CAAC,WAAW,CAAC;YACzC,CAAC;YACD,IAAK,UAAkB,CAAC,SAAS,IAAI,SAAS,KAAM,UAAkB,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1J,MAAM,CAAE,UAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjE,OAAQ,UAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;YACnD,CAAC;YACD,IAAK,UAAkB,CAAC,SAAS,IAAI,SAAS,KAAM,UAAkB,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,KAAM,YAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAChJ,MAAM,CAAE,UAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,OAAQ,UAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;YAC9C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,gBAAgB,IAAI,SAAS,KAAM,YAAoB,CAAC,gBAAgB,EAAE,CAAC;gBAC/G,MAAM,CAAE,UAAkB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,OAAQ,UAAkB,CAAC,gBAAgB,CAAC;YAC9C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,WAAW,EAAE,CAAC;gBACrG,MAAM,CAAE,UAAkB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAQ,UAAkB,CAAC,WAAW,CAAC;YACzC,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,cAAc,IAAI,SAAS,KAAM,YAAoB,CAAC,cAAc,EAAE,CAAC;gBAC3G,MAAM,CAAE,UAAkB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACpE,OAAQ,UAAkB,CAAC,cAAc,CAAC;YAC5C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,iBAAiB,IAAI,SAAS,KAAM,YAAoB,CAAC,iBAAiB,EAAE,CAAC;gBACjH,MAAM,CAAE,UAAkB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5D,OAAQ,UAAkB,CAAC,iBAAiB,CAAC;YAC/C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,YAAY,IAAI,SAAS,KAAM,YAAoB,CAAC,YAAY,EAAE,CAAC;gBACvG,MAAM,CAAE,UAAkB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvD,OAAQ,UAAkB,CAAC,YAAY,CAAC;YAC1C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,MAAM,IAAI,SAAS,KAAM,YAAoB,CAAC,MAAM,EAAE,CAAC;gBAC3F,MAAM,CAAE,UAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,OAAQ,UAAkB,CAAC,MAAM,CAAC;YACpC,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,YAAY,EAAE,CAAC;gBAClD,UAAkB,CAAC,YAAY,GAAI,UAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;oBACxF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,OAAyC,CAAC;IACnD,CAAC;IAED,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClG,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YAE9C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAkB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClF,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;;;;;;;;;;;KACvE,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK;;;YACnD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAChE,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACnE,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEnE,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAE,UAAU,GAAG,cAAc,EAAE,YAAY,GAAG,iBAAiB,EAAE,EAAE;gBAC/G,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,UAAW,CAAC,CAAC;gBAC1E,MAAM,gBAAgB,GAAG,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;gBACrE,+DAA+D;gBAC/D,iDAAiD;gBACjD,IAAK,gBAAwB,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBACvD,MAAM,CAAE,cAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;oBAC1D,8BAA8B;oBAC7B,cAAsB,CAAC,SAAS,GAAG,UAAU,CAAC;gBACjD,CAAC;gBAED,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC;YAEF,gDAAgD;YAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,iBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,yDAAyD;YACzD,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;;;;;;;;;;;KACxE,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC9D,YAAY,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,YAAY,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjE,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC9F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC9D,YAAY,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,YAAY,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjE,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK;;;YAChD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACtD,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACvD,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK;;;YACvD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACpG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC7D,YAAY,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACzD,YAAY,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACjE,YAAY,CAAC,mCAAmC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC9E,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK;;;YAC/D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7G,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACvE,YAAY,CAAC,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACzE,YAAY,CAAC,iCAAiC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC5E,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK;;;YACzD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACtG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjD,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK;;;YAC3D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACxG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC5D,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;;;YACtD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACzD,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK;;;YAC/C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAChD,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjD,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC/C,YAAY,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACtD,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK;;;YACvD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACnG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACzE,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK;;;YACrD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACjG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACpD,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK;;;YACnD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC/C,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACnD,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK;;;YACrD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAChG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjD,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACxD,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK;;;YAC3C,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK;;;YAClD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;;;YACtD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,6BAA6B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AnyPropertyProps, AnySchemaItemProps, ClassProps, RelationshipClassProps, Schema, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { expect, use } from \"chai\";\nimport { TestContext } from \"./TestContext\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport * as deepEqualInAnyOrder from \"deep-equal-in-any-order\";\n\nuse(deepEqualInAnyOrder);\n\nfunction findItem<T extends AnySchemaItemProps>(name: string, rowData: T[]) {\n const item = rowData.find((i: AnySchemaItemProps) => i.name === name);\n if (!item)\n throw new Error(`Could not find schema item '${name}'`);\n return item;\n}\n\nfunction findProperty<T extends AnyPropertyProps>(name: string, rowData: T[]) {\n return rowData.find((i: AnyPropertyProps) => i.name === name);\n}\n\nfunction isECClass(item: AnySchemaItemProps): item is ClassProps {\n return item.schemaItemType === SchemaItemType.EntityClass || item.schemaItemType === SchemaItemType.Mixin || item.schemaItemType === SchemaItemType.RelationshipClass ||\n item.schemaItemType === SchemaItemType.StructClass || item.schemaItemType === SchemaItemType.CustomAttributeClass;\n}\n\nfunction isRelationshipClass(item: AnySchemaItemProps): item is RelationshipClassProps {\n return \"source\" in item && \"target\" in item;\n}\n\n/**\n * A test locater that exposes the protected methods of IModelIncrementalSchemaLocater for granular testing.\n */\nabstract class TestSchemaLocater extends IModelIncrementalSchemaLocater {\n public abstract override getSchemaJson: IModelIncrementalSchemaLocater[\"getSchemaJson\"];\n public abstract override getConstants: IModelIncrementalSchemaLocater[\"getConstants\"];\n public abstract override getCustomAttributeClasses: IModelIncrementalSchemaLocater[\"getCustomAttributeClasses\"];\n public abstract override getEntities: IModelIncrementalSchemaLocater[\"getEntities\"];\n public abstract override getEnumerations: IModelIncrementalSchemaLocater[\"getEnumerations\"];\n public abstract override getFormats: IModelIncrementalSchemaLocater[\"getFormats\"];\n public abstract override getInvertedUnits: IModelIncrementalSchemaLocater[\"getInvertedUnits\"];\n public abstract override getKindOfQuantities: IModelIncrementalSchemaLocater[\"getKindOfQuantities\"];\n public abstract override getMixins: IModelIncrementalSchemaLocater[\"getMixins\"];\n public abstract override getPhenomenon: IModelIncrementalSchemaLocater[\"getPhenomenon\"];\n public abstract override getPropertyCategories: IModelIncrementalSchemaLocater[\"getPropertyCategories\"];\n public abstract override getRelationships: IModelIncrementalSchemaLocater[\"getRelationships\"];\n public abstract override getStructs: IModelIncrementalSchemaLocater[\"getStructs\"];\n public abstract override getUnits: IModelIncrementalSchemaLocater[\"getUnits\"];\n public abstract override getUnitSystems: IModelIncrementalSchemaLocater[\"getUnitSystems\"];\n}\n\ndescribe(\"ECSql query tests\", function () {\n\n function validateItem(name: string, itemPropObjects: AnySchemaItemProps[], schema: Schema) {\n const actualJson = findItem(name, itemPropObjects);\n const expectedItem = schema.getItemSync(name);\n const expectedJson = expectedItem!.toJSON();\n\n // The following code exists because some data coming from the database will not match the\n // data from the context due to default values. This is OK as long as the conditions are\n // correct. For instance, schemaItem name will not exist in serialized JSON, but does exist\n // coming from the DB. RelationshipConstraint's AbstractConstraint is set when only one\n // constraint class exists coming from the database, but a serialized Relationship will not\n // contain the abstract constraint. The one constraint is 'assumed' to be the abstract constraint.\n\n expect(actualJson.name).to.equal(expectedItem?.name);\n delete (actualJson as any).name;\n\n if (isECClass(actualJson)) {\n if (expectedJson.schemaItemType === \"Mixin\") {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'Abstract']);\n delete (actualJson as any).modifier;\n } else if ((expectedJson as ClassProps).modifier === undefined) {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'None']);\n delete (actualJson as any).modifier;\n }\n }\n if (isRelationshipClass(actualJson)) {\n // abstract can be set via database, but not via context for 1 constraint class\n // so verify constraint and conditions are correct and delete property\n const expectedRelationship = expectedJson as any as RelationshipClassProps;\n if (actualJson.source.abstractConstraint !== expectedRelationship.source.abstractConstraint) {\n expect(actualJson.source.abstractConstraint).to.equal(expectedRelationship.source.constraintClasses[0]);\n expect(actualJson.source.constraintClasses.length).to.equal(1);\n delete (actualJson.source as any).abstractConstraint;\n }\n if (actualJson.target.abstractConstraint !== expectedRelationship.target.abstractConstraint) {\n expect(actualJson.target.abstractConstraint).to.equal(expectedRelationship.target.constraintClasses[0]);\n expect(actualJson.target.constraintClasses.length).to.equal(1);\n delete (actualJson.target as any).abstractConstraint;\n }\n }\n\n if (actualJson.schemaItemType === SchemaItemType.Format) {\n if (undefined !== (actualJson as any).includeZero && undefined === (expectedJson as any).includeZero) {\n expect((actualJson as any).includeZero).to.equal(true);\n delete (actualJson as any).includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.includeZero && undefined === (expectedJson as any).composite.includeZero) {\n expect((actualJson as any).composite.includeZero).to.equal(true);\n delete (actualJson as any).composite.includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.spacer && undefined === (expectedJson as any).composite.spacer) {\n expect((actualJson as any).composite.spacer).to.equal(\" \");\n delete (actualJson as any).composite.spacer;\n }\n if (undefined !== (actualJson as any).decimalSeparator && undefined === (expectedJson as any).decimalSeparator) {\n expect((actualJson as any).decimalSeparator).to.equal(\".\");\n delete (actualJson as any).decimalSeparator;\n }\n if (undefined !== (actualJson as any).roundFactor && undefined === (expectedJson as any).roundFactor) {\n expect((actualJson as any).roundFactor).to.equal(0);\n delete (actualJson as any).roundFactor;\n }\n if (undefined !== (actualJson as any).showSignOption && undefined === (expectedJson as any).showSignOption) {\n expect((actualJson as any).showSignOption).to.equal(\"OnlyNegative\");\n delete (actualJson as any).showSignOption;\n }\n if (undefined !== (actualJson as any).thousandSeparator && undefined === (expectedJson as any).thousandSeparator) {\n expect((actualJson as any).thousandSeparator).to.equal(\",\");\n delete (actualJson as any).thousandSeparator;\n }\n if (undefined !== (actualJson as any).uomSeparator && undefined === (expectedJson as any).uomSeparator) {\n expect((actualJson as any).uomSeparator).to.equal(\" \");\n delete (actualJson as any).uomSeparator;\n }\n if (undefined !== (actualJson as any).spacer && undefined === (expectedJson as any).spacer) {\n expect((actualJson as any).spacer).to.equal(\" \");\n delete (actualJson as any).spacer;\n }\n if (undefined !== (actualJson as any).formatTraits) {\n (actualJson as any).formatTraits = (actualJson as any).formatTraits.map((trait: string) => {\n return trait.charAt(0).toUpperCase() + trait.slice(1);\n });\n }\n }\n\n expect(actualJson).to.deep.equalInAnyOrder(expectedJson);\n }\n\n async function createTestContext() {\n const testEnv = await TestContext.create();\n return testEnv as TestContext<TestSchemaLocater>;\n }\n\n it(\"Schema query, props parsed successfully\", async function () {\n const testSchemaKey = new SchemaKey(\"SchemaTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const expectedSchema = await env.importAssetSchema(testSchemaKey);\n const actualSchemaProps = await env.schemaLocater.getSchemaJson(testSchemaKey, env.schemaContext);\n expect(actualSchemaProps).to.not.be.undefined;\n\n const actualSchema = await Schema.fromJson(actualSchemaProps!, env.schemaContext);\n expect(actualSchema.toJSON()).to.deep.equal(expectedSchema?.toJSON());\n });\n\n it(\"Property query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n const entityOneProps = findItem(\"EntityOne\", classPropsObjects);\n const entityTwoProps = findItem(\"EntityTwo\", classPropsObjects);\n const expectedEntityOne = await schema.getEntityClass(\"EntityOne\");\n const expectedEntityTwo = await schema.getEntityClass(\"EntityTwo\");\n\n const validateProperty = (propertyName: string, actualItem = entityOneProps, expectedItem = expectedEntityOne) => {\n const actualProperty = findProperty(propertyName, actualItem.properties!);\n const expectedProperty = expectedItem?.getPropertySync(propertyName);\n // if maxOccurs is the maximum int value in the context Schema,\n // the property from the DB will not have a value\n if ((expectedProperty as any).maxOccurs === 2147483647) {\n expect((actualProperty as any).maxOccurs).to.be.undefined;\n // set so comparison will pass\n (actualProperty as any).maxOccurs = 2147483647;\n }\n\n expect(actualProperty).to.deep.equal(expectedProperty?.toJSON());\n };\n\n // All but one testable property is in EntityOne\n for (const property of await expectedEntityOne!.getProperties(true)) {\n validateProperty(property.name);\n }\n // Backward direction Navigation property is in EntityTwo\n validateProperty(\"EntityTwoParent\", entityTwoProps, expectedEntityTwo);\n });\n\n it(\"Entity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EntityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"EntityModifierNone\", classPropsObjects, schema);\n validateItem(\"EntityModifierAbstract\", classPropsObjects, schema);\n validateItem(\"EntityModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Struct query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"StructTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"StructModifierNone\", classPropsObjects, schema);\n validateItem(\"StructModifierAbstract\", classPropsObjects, schema);\n validateItem(\"StructModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Mixin query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"MixinTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getMixins(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IBaseMixin\", classPropsObjects, schema);\n validateItem(\"ITestMixin\", classPropsObjects, schema);\n });\n\n it(\"Relationship query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"RelationshipTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getRelationships(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"OwnerOwnsVehicles\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsCars\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsAmericanCars\", classPropsObjects, schema);\n validateItem(\"PhysicalModelBreaksDownCarElement\", classPropsObjects, schema);\n });\n\n it(\"CustomAttributeClass query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeClassTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getCustomAttributeClasses(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"CustomAttributeModifierNone\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierSealed\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierAbstract\", classPropsObjects, schema);\n });\n\n it(\"KindOfQuantity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"KindOfQuantityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getKindOfQuantities(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"ACCELERATION\", itemPropsObjects, schema);\n validateItem(\"ANGLE\", itemPropsObjects, schema);\n });\n\n it(\"PropertyCategory query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyCategoryTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPropertyCategories(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"PropertyCategory1\", itemPropsObjects, schema);\n validateItem(\"PropertyCategory2\", itemPropsObjects, schema);\n });\n\n it(\"Enumeration query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EnumerationTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getEnumerations(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IntEnumeration\", itemPropsObjects, schema);\n validateItem(\"StringEnumeration\", itemPropsObjects, schema);\n });\n\n it(\"Unit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"UnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"LITRE\", itemPropsObjects, schema);\n validateItem(\"GALLON\", itemPropsObjects, schema);\n validateItem(\"ACRE\", itemPropsObjects, schema);\n validateItem(\"FAHRENHEIT\", itemPropsObjects, schema);\n });\n\n it(\"InvertedUnit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getInvertedUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"FT_HORIZONTAL_PER_FT_VERTICAL\", itemPropsObjects, schema);\n });\n\n it(\"UnitSystem query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnitSystems(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"USCUSTOM\", itemPropsObjects, schema);\n });\n\n it(\"Constant query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getConstants(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"KILO\", itemPropsObjects, schema);\n validateItem(\"HALF_PI\", itemPropsObjects, schema);\n });\n\n it(\"Phenomenon query, props parsed successfully\", async function () {\n // There's a Phenomenon in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPhenomenon(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"NUMBER\", itemPropsObjects, schema);\n validateItem(\"LENGTH_RATIO\", itemPropsObjects, schema);\n });\n\n it(\"Format Schema parses successfully\", async function () {\n // Using installed Formats schema\n const testKey = new SchemaKey(\"Formats\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"Comprehensive Format parses successfully\", async function () {\n const testKey = new SchemaKey(\"FormatTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"CustomAttribute instances parse successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeInstanceTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n});"]}
1
+ {"version":3,"file":"ECSqlQueries.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/ECSqlQueries.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAA4E,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACvJ,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,KAAK,mBAAmB,MAAM,yBAAyB,CAAC;AAE/D,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEzB,SAAS,QAAQ,CAA+B,IAAY,EAAE,OAAY;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,GAAG,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAA6B,IAAY,EAAE,OAAY;IAC1E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,OAAO,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,iBAAiB;QACnK,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,oBAAoB,CAAC;AACtH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACnD,OAAO,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAe,iBAAkB,SAAQ,8BAA8B;CAgBtE;AAED,QAAQ,CAAC,mBAAmB,EAAE;IAE5B,SAAS,YAAY,CAAC,IAAY,EAAE,eAAqC,EAAE,MAAc;QACvF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,YAAa,CAAC,MAAM,EAAE,CAAC;QAE5C,0FAA0F;QAC1F,wFAAwF;QACxF,2FAA2F;QAC3F,uFAAuF;QACvF,2FAA2F;QAC3F,kGAAkG;QAElG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACrD,OAAQ,UAAkB,CAAC,IAAI,CAAC;QAEhC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,IAAI,YAAY,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACjE,OAAQ,UAAkB,CAAC,QAAQ,CAAC;YACtC,CAAC;iBAAM,IAAK,YAA2B,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC7D,OAAQ,UAAkB,CAAC,QAAQ,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,+EAA+E;YAC/E,sEAAsE;YACtE,MAAM,oBAAoB,GAAG,YAA6C,CAAC;YAC3E,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5F,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAQ,UAAU,CAAC,MAAc,CAAC,kBAAkB,CAAC;YACvD,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,KAAK,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5F,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAQ,UAAU,CAAC,MAAc,CAAC,kBAAkB,CAAC;YACvD,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,cAAc,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,SAAS,KAAM,UAAkB,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,WAAW,EAAE,CAAC;gBACrG,MAAM,CAAE,UAAkB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,OAAQ,UAAkB,CAAC,WAAW,CAAC;YACzC,CAAC;YACD,IAAK,UAAkB,CAAC,SAAS,IAAI,SAAS,KAAM,UAAkB,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1J,MAAM,CAAE,UAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjE,OAAQ,UAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;YACnD,CAAC;YACD,IAAK,UAAkB,CAAC,SAAS,IAAI,SAAS,KAAM,UAAkB,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,KAAM,YAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAChJ,MAAM,CAAE,UAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,OAAQ,UAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;YAC9C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,gBAAgB,IAAI,SAAS,KAAM,YAAoB,CAAC,gBAAgB,EAAE,CAAC;gBAC/G,MAAM,CAAE,UAAkB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,OAAQ,UAAkB,CAAC,gBAAgB,CAAC;YAC9C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,WAAW,IAAI,SAAS,KAAM,YAAoB,CAAC,WAAW,EAAE,CAAC;gBACrG,MAAM,CAAE,UAAkB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAQ,UAAkB,CAAC,WAAW,CAAC;YACzC,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,cAAc,IAAI,SAAS,KAAM,YAAoB,CAAC,cAAc,EAAE,CAAC;gBAC3G,MAAM,CAAE,UAAkB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACpE,OAAQ,UAAkB,CAAC,cAAc,CAAC;YAC5C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,iBAAiB,IAAI,SAAS,KAAM,YAAoB,CAAC,iBAAiB,EAAE,CAAC;gBACjH,MAAM,CAAE,UAAkB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5D,OAAQ,UAAkB,CAAC,iBAAiB,CAAC;YAC/C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,YAAY,IAAI,SAAS,KAAM,YAAoB,CAAC,YAAY,EAAE,CAAC;gBACvG,MAAM,CAAE,UAAkB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvD,OAAQ,UAAkB,CAAC,YAAY,CAAC;YAC1C,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,MAAM,IAAI,SAAS,KAAM,YAAoB,CAAC,MAAM,EAAE,CAAC;gBAC3F,MAAM,CAAE,UAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,OAAQ,UAAkB,CAAC,MAAM,CAAC;YACpC,CAAC;YACD,IAAI,SAAS,KAAM,UAAkB,CAAC,YAAY,EAAE,CAAC;gBAClD,UAAkB,CAAC,YAAY,GAAI,UAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;oBACxF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,OAAyC,CAAC;IACnD,CAAC;IAED,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClG,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YAE9C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAkB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClF,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;;;;;;;;;;;KACvE,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK;;;YACnD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAChE,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACnE,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEnE,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAE,UAAU,GAAG,cAAc,EAAE,YAAY,GAAG,iBAAiB,EAAE,EAAE;gBAC/G,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,UAAW,CAAC,CAAC;gBAC1E,MAAM,gBAAgB,GAAG,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;gBACrE,+DAA+D;gBAC/D,iDAAiD;gBACjD,IAAK,gBAAwB,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBACvD,MAAM,CAAE,cAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;oBAC1D,8BAA8B;oBAC7B,cAAsB,CAAC,SAAS,GAAG,UAAU,CAAC;gBACjD,CAAC;gBAED,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC;YAEF,gDAAgD;YAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,iBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,yDAAyD;YACzD,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;;;;;;;;;;;KACxE,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC9D,YAAY,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,YAAY,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjE,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;;;YACjD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC9F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC9D,YAAY,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,YAAY,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjE,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK;;;YAChD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACtD,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACvD,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK;;;YACvD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACpG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC7D,YAAY,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACzD,YAAY,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACjE,YAAY,CAAC,mCAAmC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC9E,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK;;;YAC/D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7G,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtD,YAAY,CAAC,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACvE,YAAY,CAAC,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACzE,YAAY,CAAC,iCAAiC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC5E,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK;;;YACzD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACtG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACjD,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK;;;YAC3D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAY,GAAG,kCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACxG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC5D,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;;;YACtD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACzD,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK;;;YAC/C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAChD,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjD,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC/C,YAAY,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACtD,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK;;;YACvD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACnG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACzE,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK;;;YACrD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACjG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACpD,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK;;;YACnD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC/C,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACnD,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK;;;YACrD,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAChG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjD,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;KACxD,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK;;;YAC3C,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK;;;YAClD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;;;YACtD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,6BAA6B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,MAAY,GAAG,mCAAG,MAAM,iBAAiB,EAAE,OAAA,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7F,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,IAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;;;;;;;;;;;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AnyPropertyProps, AnySchemaItemProps, ClassProps, RelationshipClassProps, Schema, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { expect, use } from \"chai\";\nimport { TestContext } from \"./TestContext\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport * as deepEqualInAnyOrder from \"deep-equal-in-any-order\";\n\nuse(deepEqualInAnyOrder);\n\nfunction findItem<T extends AnySchemaItemProps>(name: string, rowData: T[]) {\n const item = rowData.find((i: AnySchemaItemProps) => i.name === name);\n if (!item)\n throw new Error(`Could not find schema item '${name}'`);\n return item;\n}\n\nfunction findProperty<T extends AnyPropertyProps>(name: string, rowData: T[]) {\n return rowData.find((i: AnyPropertyProps) => i.name === name);\n}\n\nfunction isECClass(item: AnySchemaItemProps): item is ClassProps {\n return item.schemaItemType === SchemaItemType.EntityClass || item.schemaItemType === SchemaItemType.Mixin || item.schemaItemType === SchemaItemType.RelationshipClass ||\n item.schemaItemType === SchemaItemType.StructClass || item.schemaItemType === SchemaItemType.CustomAttributeClass;\n}\n\nfunction isRelationshipClass(item: AnySchemaItemProps): item is RelationshipClassProps {\n return \"source\" in item && \"target\" in item;\n}\n\n/**\n * A test locater that exposes the protected methods of IModelIncrementalSchemaLocater for granular testing.\n */\nabstract class TestSchemaLocater extends IModelIncrementalSchemaLocater {\n public abstract override getSchemaJson: IModelIncrementalSchemaLocater[\"getSchemaJson\"];\n public abstract override getConstants: IModelIncrementalSchemaLocater[\"getConstants\"];\n public abstract override getCustomAttributeClasses: IModelIncrementalSchemaLocater[\"getCustomAttributeClasses\"];\n public abstract override getEntities: IModelIncrementalSchemaLocater[\"getEntities\"];\n public abstract override getEnumerations: IModelIncrementalSchemaLocater[\"getEnumerations\"];\n public abstract override getFormats: IModelIncrementalSchemaLocater[\"getFormats\"];\n public abstract override getInvertedUnits: IModelIncrementalSchemaLocater[\"getInvertedUnits\"];\n public abstract override getKindOfQuantities: IModelIncrementalSchemaLocater[\"getKindOfQuantities\"];\n public abstract override getMixins: IModelIncrementalSchemaLocater[\"getMixins\"];\n public abstract override getPhenomenon: IModelIncrementalSchemaLocater[\"getPhenomenon\"];\n public abstract override getPropertyCategories: IModelIncrementalSchemaLocater[\"getPropertyCategories\"];\n public abstract override getRelationships: IModelIncrementalSchemaLocater[\"getRelationships\"];\n public abstract override getStructs: IModelIncrementalSchemaLocater[\"getStructs\"];\n public abstract override getUnits: IModelIncrementalSchemaLocater[\"getUnits\"];\n public abstract override getUnitSystems: IModelIncrementalSchemaLocater[\"getUnitSystems\"];\n}\n\ndescribe(\"ECSql query tests\", function () {\n\n function validateItem(name: string, itemPropObjects: AnySchemaItemProps[], schema: Schema) {\n const actualJson = findItem(name, itemPropObjects);\n const expectedItem = schema.getItemSync(name);\n const expectedJson = expectedItem!.toJSON();\n\n // The following code exists because some data coming from the database will not match the\n // data from the context due to default values. This is OK as long as the conditions are\n // correct. For instance, schemaItem name will not exist in serialized JSON, but does exist\n // coming from the DB. RelationshipConstraint's AbstractConstraint is set when only one\n // constraint class exists coming from the database, but a serialized Relationship will not\n // contain the abstract constraint. The one constraint is 'assumed' to be the abstract constraint.\n\n expect(actualJson.name).to.equal(expectedItem?.name);\n delete (actualJson as any).name;\n\n if (isECClass(actualJson)) {\n if (expectedJson.schemaItemType === \"Mixin\") {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'Abstract']);\n delete (actualJson as any).modifier;\n } else if ((expectedJson as ClassProps).modifier === undefined) {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'None']);\n delete (actualJson as any).modifier;\n }\n }\n if (isRelationshipClass(actualJson)) {\n // abstract can be set via database, but not via context for 1 constraint class\n // so verify constraint and conditions are correct and delete property\n const expectedRelationship = expectedJson as any as RelationshipClassProps;\n if (actualJson.source.abstractConstraint !== expectedRelationship.source.abstractConstraint) {\n expect(actualJson.source.abstractConstraint).to.equal(expectedRelationship.source.constraintClasses[0]);\n expect(actualJson.source.constraintClasses.length).to.equal(1);\n delete (actualJson.source as any).abstractConstraint;\n }\n if (actualJson.target.abstractConstraint !== expectedRelationship.target.abstractConstraint) {\n expect(actualJson.target.abstractConstraint).to.equal(expectedRelationship.target.constraintClasses[0]);\n expect(actualJson.target.constraintClasses.length).to.equal(1);\n delete (actualJson.target as any).abstractConstraint;\n }\n }\n\n if (actualJson.schemaItemType === SchemaItemType.Format) {\n if (undefined !== (actualJson as any).includeZero && undefined === (expectedJson as any).includeZero) {\n expect((actualJson as any).includeZero).to.equal(true);\n delete (actualJson as any).includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.includeZero && undefined === (expectedJson as any).composite.includeZero) {\n expect((actualJson as any).composite.includeZero).to.equal(true);\n delete (actualJson as any).composite.includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.spacer && undefined === (expectedJson as any).composite.spacer) {\n expect((actualJson as any).composite.spacer).to.equal(\" \");\n delete (actualJson as any).composite.spacer;\n }\n if (undefined !== (actualJson as any).decimalSeparator && undefined === (expectedJson as any).decimalSeparator) {\n expect((actualJson as any).decimalSeparator).to.equal(\".\");\n delete (actualJson as any).decimalSeparator;\n }\n if (undefined !== (actualJson as any).roundFactor && undefined === (expectedJson as any).roundFactor) {\n expect((actualJson as any).roundFactor).to.equal(0);\n delete (actualJson as any).roundFactor;\n }\n if (undefined !== (actualJson as any).showSignOption && undefined === (expectedJson as any).showSignOption) {\n expect((actualJson as any).showSignOption).to.equal(\"OnlyNegative\");\n delete (actualJson as any).showSignOption;\n }\n if (undefined !== (actualJson as any).thousandSeparator && undefined === (expectedJson as any).thousandSeparator) {\n expect((actualJson as any).thousandSeparator).to.equal(\",\");\n delete (actualJson as any).thousandSeparator;\n }\n if (undefined !== (actualJson as any).uomSeparator && undefined === (expectedJson as any).uomSeparator) {\n expect((actualJson as any).uomSeparator).to.equal(\" \");\n delete (actualJson as any).uomSeparator;\n }\n if (undefined !== (actualJson as any).spacer && undefined === (expectedJson as any).spacer) {\n expect((actualJson as any).spacer).to.equal(\" \");\n delete (actualJson as any).spacer;\n }\n if (undefined !== (actualJson as any).formatTraits) {\n (actualJson as any).formatTraits = (actualJson as any).formatTraits.map((trait: string) => {\n return trait.charAt(0).toUpperCase() + trait.slice(1);\n });\n }\n }\n\n expect(actualJson).to.deep.equalInAnyOrder(expectedJson);\n }\n\n async function createTestContext() {\n const testEnv = await TestContext.create();\n return testEnv as TestContext<TestSchemaLocater>;\n }\n\n it(\"Schema query, props parsed successfully\", async function () {\n const testSchemaKey = new SchemaKey(\"SchemaTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const expectedSchema = await env.importAssetSchema(testSchemaKey);\n const actualSchemaProps = await env.schemaLocater.getSchemaJson(testSchemaKey, env.schemaContext);\n expect(actualSchemaProps).to.not.be.undefined;\n\n const actualSchema = await Schema.fromJson(actualSchemaProps!, env.schemaContext);\n expect(actualSchema.toJSON()).to.deep.equal(expectedSchema?.toJSON());\n });\n\n it(\"Property query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n const entityOneProps = findItem(\"EntityOne\", classPropsObjects);\n const entityTwoProps = findItem(\"EntityTwo\", classPropsObjects);\n const expectedEntityOne = await schema.getEntityClass(\"EntityOne\");\n const expectedEntityTwo = await schema.getEntityClass(\"EntityTwo\");\n\n const validateProperty = (propertyName: string, actualItem = entityOneProps, expectedItem = expectedEntityOne) => {\n const actualProperty = findProperty(propertyName, actualItem.properties!);\n const expectedProperty = expectedItem?.getPropertySync(propertyName);\n // if maxOccurs is the maximum int value in the context Schema,\n // the property from the DB will not have a value\n if ((expectedProperty as any).maxOccurs === 2147483647) {\n expect((actualProperty as any).maxOccurs).to.be.undefined;\n // set so comparison will pass\n (actualProperty as any).maxOccurs = 2147483647;\n }\n\n expect(actualProperty).to.deep.equal(expectedProperty?.toJSON());\n };\n\n // All but one testable property is in EntityOne\n for (const property of await expectedEntityOne!.getProperties(true)) {\n validateProperty(property.name);\n }\n // Backward direction Navigation property is in EntityTwo\n validateProperty(\"EntityTwoParent\", entityTwoProps, expectedEntityTwo);\n });\n\n it(\"Entity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EntityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"EntityModifierNone\", classPropsObjects, schema);\n validateItem(\"EntityModifierAbstract\", classPropsObjects, schema);\n validateItem(\"EntityModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Struct query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"StructTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"StructModifierNone\", classPropsObjects, schema);\n validateItem(\"StructModifierAbstract\", classPropsObjects, schema);\n validateItem(\"StructModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Mixin query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"MixinTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getMixins(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IBaseMixin\", classPropsObjects, schema);\n validateItem(\"ITestMixin\", classPropsObjects, schema);\n });\n\n it(\"Relationship query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"RelationshipTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getRelationships(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"OwnerOwnsVehicles\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsCars\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsAmericanCars\", classPropsObjects, schema);\n validateItem(\"PhysicalModelBreaksDownCarElement\", classPropsObjects, schema);\n });\n\n it(\"CustomAttributeClass query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeClassTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getCustomAttributeClasses(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"CustomAttributeModifierNone\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierSealed\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierAbstract\", classPropsObjects, schema);\n });\n\n it(\"KindOfQuantity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"KindOfQuantityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getKindOfQuantities(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"ACCELERATION\", itemPropsObjects, schema);\n validateItem(\"ANGLE\", itemPropsObjects, schema);\n });\n\n it(\"PropertyCategory query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyCategoryTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPropertyCategories(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"PropertyCategory1\", itemPropsObjects, schema);\n validateItem(\"PropertyCategory2\", itemPropsObjects, schema);\n });\n\n it(\"Enumeration query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EnumerationTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getEnumerations(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IntEnumeration\", itemPropsObjects, schema);\n validateItem(\"StringEnumeration\", itemPropsObjects, schema);\n });\n\n it(\"Unit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"UnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"LITRE\", itemPropsObjects, schema);\n validateItem(\"GALLON\", itemPropsObjects, schema);\n validateItem(\"ACRE\", itemPropsObjects, schema);\n validateItem(\"FAHRENHEIT\", itemPropsObjects, schema);\n });\n\n it(\"InvertedUnit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getInvertedUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"FT_HORIZONTAL_PER_FT_VERTICAL\", itemPropsObjects, schema);\n });\n\n it(\"UnitSystem query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnitSystems(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"USCUSTOM\", itemPropsObjects, schema);\n });\n\n it(\"Constant query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getConstants(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"KILO\", itemPropsObjects, schema);\n validateItem(\"HALF_PI\", itemPropsObjects, schema);\n });\n\n it(\"Phenomenon query, props parsed successfully\", async function () {\n // There's a Phenomenon in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPhenomenon(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"NUMBER\", itemPropsObjects, schema);\n validateItem(\"LENGTH_RATIO\", itemPropsObjects, schema);\n });\n\n it(\"Format Schema parses successfully\", async function () {\n // Using installed Formats schema\n const testKey = new SchemaKey(\"Formats\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"Comprehensive Format parses successfully\", async function () {\n const testKey = new SchemaKey(\"FormatTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"CustomAttribute instances parse successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeInstanceTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestContext.d.ts","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAsC,SAAS,EAAmB,MAAM,0BAA0B,CAAC;AACjI,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAe,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAUrE,UAAU,OAAO;IACf,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CACxE;AAED,KAAK,iBAAiB,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,wBAAwB,EAAE,UAAU,CAAA;CAAE,GAAG,KAAK,GAAG,8BAA8B,CAAC;AAEtI,qBAAa,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAE,YAAW,eAAe;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,OAAO;IAoBP,IAAW,MAAM,IAAI,QAAQ,CAE5B;IAED,IAAW,aAAa,IAAI,QAAQ,CAEnC;IAED,IAAW,aAAa,IAAI,aAAa,CAExC;WAEmB,MAAM,CAAC,QAAQ,SAAS,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;mBAqBtG,cAAc;mBASd,YAAY;IAwBpB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAenC,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BxD,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpD"}
1
+ {"version":3,"file":"TestContext.d.ts","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAsC,SAAS,EAAmB,MAAM,0BAA0B,CAAC;AACjI,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAe,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAWrE,UAAU,OAAO;IACf,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CACxE;AAED,KAAK,iBAAiB,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAAE,wBAAwB,EAAE,UAAU,CAAA;CAAE,GAAG,KAAK,GAAG,8BAA8B,CAAC;AAEtI,qBAAa,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAE,YAAW,eAAe;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,OAAO;IAoBP,IAAW,MAAM,IAAI,QAAQ,CAE5B;IAED,IAAW,aAAa,IAAI,QAAQ,CAEnC;IAED,IAAW,aAAa,IAAI,aAAa,CAExC;WAEmB,MAAM,CAAC,QAAQ,SAAS,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;mBAqBtG,cAAc;mBASd,YAAY;IAwBpB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAenC,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BxD,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpD"}
@@ -9,6 +9,7 @@ import { ProfileOptions } from "@itwin/core-common";
9
9
  import { SchemaXmlFileLocater } from "@itwin/ecschema-locaters";
10
10
  import { DOMParser, XMLSerializer } from "@xmldom/xmldom";
11
11
  import * as path from "path";
12
+ import { TestUtils } from "../TestUtils";
12
13
  export class TestContext {
13
14
  _iModel;
14
15
  _schemaLocater;
@@ -41,7 +42,7 @@ export class TestContext {
41
42
  }
42
43
  static async create(options) {
43
44
  if (!IModelHost.isValid) {
44
- await IModelHost.startup();
45
+ await TestUtils.startBackend();
45
46
  }
46
47
  const iModel = options?.bimFile ?
47
48
  await this.loadIModelFile(options.bimFile) :
@@ -104,7 +105,6 @@ export class TestContext {
104
105
  throw new Error(`The schema '${schemaKey.name}' could not be found in the assets folder.`);
105
106
  const schemaXml = await getOrderedSchemaStrings(testSchema);
106
107
  await this._iModel.importSchemaStrings(schemaXml);
107
- this._iModel.saveChanges();
108
108
  if (this.iModel.isBriefcaseDb() && !this.iModel.isReadonly) {
109
109
  await this.iModel.pushChanges({ description: "import test schema" });
110
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema, SchemaContext, SchemaGraphUtil, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport { BriefcaseDb, IModelDb, StandaloneDb } from \"../../IModelDb\";\nimport { IModelHost } from \"../../IModelHost\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { IModelJsFs } from \"../../IModelJsFs\";\nimport { ProfileOptions } from \"@itwin/core-common\";\nimport { SchemaXmlFileLocater } from \"@itwin/ecschema-locaters\";\nimport { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\nimport * as path from \"path\";\n\ninterface Options {\n readonly bimFile?: string;\n readonly incrementalSchemaLoading?: \"enabled\" | \"disabled\" | undefined;\n}\n\ntype SchemaLocaterType<TOptions> = TOptions extends { incrementalSchemaLoading: \"disabled\" } ? never : IModelIncrementalSchemaLocater;\n\nexport class TestContext<TLocater = never> implements AsyncDisposable {\n private readonly _iModel: IModelDb;\n private readonly _schemaLocater: TLocater;\n private readonly _assetContext: SchemaContext;\n\n private constructor(iModel: IModelDb) {\n this._iModel = iModel;\n this._schemaLocater = this._iModel.schemaContext.locaters.find((locater) => {\n return locater instanceof IModelIncrementalSchemaLocater;\n }) as TLocater;\n\n // Ideally we should not need a seperate context here to locate and locate the bisschemas from the\n // parent imodel context, but due to a bug in the incremental schema logic, we have to do this for now.\n // TODO: remove this when issue #1763 is fixed.\n this._assetContext = new SchemaContext();\n this._assetContext.addLocater(new SchemaJsonLocater((schemaName) => {\n return iModel.getSchemaProps(schemaName);\n }))\n const xmlAssetSchemaLocater = new SchemaXmlFileLocater();\n xmlAssetSchemaLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\"));\n this._assetContext.addLocater(xmlAssetSchemaLocater);\n\n iModel.schemaContext.addLocater(this._assetContext);\n }\n\n public get iModel(): IModelDb {\n return this._iModel;\n }\n\n public get schemaLocater(): TLocater {\n return this._schemaLocater;\n }\n\n public get schemaContext(): SchemaContext {\n return this._iModel.schemaContext;\n }\n\n public static async create<TOptions extends Options>(options?: TOptions): Promise<TestContext<SchemaLocaterType<TOptions>>> {\n if (!IModelHost.isValid) {\n await IModelHost.startup()\n }\n\n const iModel = options?.bimFile ?\n await this.loadIModelFile(options.bimFile) :\n await this.createIModel();\n\n const configuration = IModelHost.configuration;\n if (configuration) {\n const previousSetting = configuration.incrementalSchemaLoading;\n configuration.incrementalSchemaLoading = options ? options.incrementalSchemaLoading : \"enabled\";\n iModel.onBeforeClose.addOnce(() => {\n configuration.incrementalSchemaLoading = previousSetting;\n });\n }\n\n return new TestContext(iModel);\n }\n\n private static async loadIModelFile(bimFile: string): Promise<IModelDb> {\n const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimFile);\n return BriefcaseDb.open({\n fileName: pathToBriefCase,\n readonly: true,\n key: \"test-iModel\",\n });\n }\n\n private static async createIModel(): Promise<IModelDb> {\n const testBimPath = path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\", \"test-bim.bim\");\n\n if (IModelJsFs.existsSync(testBimPath)) {\n ~\n IModelJsFs.removeSync(testBimPath);\n }\n\n const localBim = StandaloneDb.createEmpty(testBimPath, {\n enableTransactions: true,\n rootSubject: {\n name: \"IncrementalSchemaTestingDb\"\n },\n });\n\n localBim.close();\n\n const nativeDb = IModelDb.openDgnDb({ path: testBimPath }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });\n nativeDb.saveChanges();\n nativeDb.closeFile();\n\n return StandaloneDb.openFile(testBimPath, OpenMode.ReadWrite);\n }\n\n public 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 public async importAssetSchema(schemaKey: SchemaKey): Promise<Schema> {\n // If schema is already in the iModel, return it.\n if (undefined !== this.iModel.querySchemaVersion(schemaKey.name))\n return await this.schemaContext.getSchema(schemaKey) as Schema;\n\n // Locate the schema from the assets using the schema contexts asset locaters.\n const testSchema = await this._assetContext.getSchema(schemaKey, SchemaMatchType.Exact);\n if (undefined === testSchema)\n throw new Error(`The schema '${schemaKey.name}' could not be found in the assets folder.`);\n\n const schemaXml = await getOrderedSchemaStrings(testSchema);\n await this._iModel.importSchemaStrings(schemaXml);\n this._iModel.saveChanges();\n\n if (this.iModel.isBriefcaseDb() && !this.iModel.isReadonly) {\n await this.iModel.pushChanges({ description: \"import test schema\" });\n }\n\n const schema = await this.schemaContext.getSchema(schemaKey);\n if (undefined === schema)\n throw new Error(`The schema '${schemaKey.name}' could not be found after import.`);\n\n if (schema.loadingController && !schema.loadingController.isComplete) {\n await schema.loadingController.wait();\n }\n\n return schema;\n }\n\n public async [Symbol.asyncDispose](): Promise<void> {\n return this._iModel.close();\n }\n}\n\nasync function getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]> {\n const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);\n const schemaStrings = await Promise.all(schemas.map(async (schema) => getSchemaString(schema)));\n return schemaStrings;\n}\n\nasync function getSchemaString(schema: Schema): Promise<string> {\n // Serialize schema to the document object\n const xmlDocument = new DOMParser().parseFromString(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>`, \"application/xml\");\n await schema.toXml(xmlDocument);\n\n const serializer = new XMLSerializer();\n const xml = serializer.serializeToString(xmlDocument);\n\n return xml;\n}\n"]}
1
+ {"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema, SchemaContext, SchemaGraphUtil, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport { BriefcaseDb, IModelDb, StandaloneDb } from \"../../IModelDb\";\nimport { IModelHost } from \"../../IModelHost\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { IModelJsFs } from \"../../IModelJsFs\";\nimport { ProfileOptions } from \"@itwin/core-common\";\nimport { SchemaXmlFileLocater } from \"@itwin/ecschema-locaters\";\nimport { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\nimport * as path from \"path\";\nimport { TestUtils } from \"../TestUtils\";\n\ninterface Options {\n readonly bimFile?: string;\n readonly incrementalSchemaLoading?: \"enabled\" | \"disabled\" | undefined;\n}\n\ntype SchemaLocaterType<TOptions> = TOptions extends { incrementalSchemaLoading: \"disabled\" } ? never : IModelIncrementalSchemaLocater;\n\nexport class TestContext<TLocater = never> implements AsyncDisposable {\n private readonly _iModel: IModelDb;\n private readonly _schemaLocater: TLocater;\n private readonly _assetContext: SchemaContext;\n\n private constructor(iModel: IModelDb) {\n this._iModel = iModel;\n this._schemaLocater = this._iModel.schemaContext.locaters.find((locater) => {\n return locater instanceof IModelIncrementalSchemaLocater;\n }) as TLocater;\n\n // Ideally we should not need a seperate context here to locate and locate the bisschemas from the\n // parent imodel context, but due to a bug in the incremental schema logic, we have to do this for now.\n // TODO: remove this when issue #1763 is fixed.\n this._assetContext = new SchemaContext();\n this._assetContext.addLocater(new SchemaJsonLocater((schemaName) => {\n return iModel.getSchemaProps(schemaName);\n }))\n const xmlAssetSchemaLocater = new SchemaXmlFileLocater();\n xmlAssetSchemaLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\"));\n this._assetContext.addLocater(xmlAssetSchemaLocater);\n\n iModel.schemaContext.addLocater(this._assetContext);\n }\n\n public get iModel(): IModelDb {\n return this._iModel;\n }\n\n public get schemaLocater(): TLocater {\n return this._schemaLocater;\n }\n\n public get schemaContext(): SchemaContext {\n return this._iModel.schemaContext;\n }\n\n public static async create<TOptions extends Options>(options?: TOptions): Promise<TestContext<SchemaLocaterType<TOptions>>> {\n if (!IModelHost.isValid) {\n await TestUtils.startBackend();\n }\n\n const iModel = options?.bimFile ?\n await this.loadIModelFile(options.bimFile) :\n await this.createIModel();\n\n const configuration = IModelHost.configuration;\n if (configuration) {\n const previousSetting = configuration.incrementalSchemaLoading;\n configuration.incrementalSchemaLoading = options ? options.incrementalSchemaLoading : \"enabled\";\n iModel.onBeforeClose.addOnce(() => {\n configuration.incrementalSchemaLoading = previousSetting;\n });\n }\n\n return new TestContext(iModel);\n }\n\n private static async loadIModelFile(bimFile: string): Promise<IModelDb> {\n const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimFile);\n return BriefcaseDb.open({\n fileName: pathToBriefCase,\n readonly: true,\n key: \"test-iModel\",\n });\n }\n\n private static async createIModel(): Promise<IModelDb> {\n const testBimPath = path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\", \"test-bim.bim\");\n\n if (IModelJsFs.existsSync(testBimPath)) {\n ~\n IModelJsFs.removeSync(testBimPath);\n }\n\n const localBim = StandaloneDb.createEmpty(testBimPath, {\n enableTransactions: true,\n rootSubject: {\n name: \"IncrementalSchemaTestingDb\"\n },\n });\n\n localBim.close();\n\n const nativeDb = IModelDb.openDgnDb({ path: testBimPath }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });\n nativeDb.saveChanges();\n nativeDb.closeFile();\n\n return StandaloneDb.openFile(testBimPath, OpenMode.ReadWrite);\n }\n\n public 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 public async importAssetSchema(schemaKey: SchemaKey): Promise<Schema> {\n // If schema is already in the iModel, return it.\n if (undefined !== this.iModel.querySchemaVersion(schemaKey.name))\n return await this.schemaContext.getSchema(schemaKey) as Schema;\n\n // Locate the schema from the assets using the schema contexts asset locaters.\n const testSchema = await this._assetContext.getSchema(schemaKey, SchemaMatchType.Exact);\n if (undefined === testSchema)\n throw new Error(`The schema '${schemaKey.name}' could not be found in the assets folder.`);\n\n const schemaXml = await getOrderedSchemaStrings(testSchema);\n await this._iModel.importSchemaStrings(schemaXml);\n\n if (this.iModel.isBriefcaseDb() && !this.iModel.isReadonly) {\n await this.iModel.pushChanges({ description: \"import test schema\" });\n }\n\n const schema = await this.schemaContext.getSchema(schemaKey);\n if (undefined === schema)\n throw new Error(`The schema '${schemaKey.name}' could not be found after import.`);\n\n if (schema.loadingController && !schema.loadingController.isComplete) {\n await schema.loadingController.wait();\n }\n\n return schema;\n }\n\n public async [Symbol.asyncDispose](): Promise<void> {\n return this._iModel.close();\n }\n}\n\nasync function getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]> {\n const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);\n const schemaStrings = await Promise.all(schemas.map(async (schema) => getSchemaString(schema)));\n return schemaStrings;\n}\n\nasync function getSchemaString(schema: Schema): Promise<string> {\n // Serialize schema to the document object\n const xmlDocument = new DOMParser().parseFromString(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>`, \"application/xml\");\n await schema.toXml(xmlDocument);\n\n const serializer = new XMLSerializer();\n const xml = serializer.serializeToString(xmlDocument);\n\n return xml;\n}\n\n"]}
@@ -3,5 +3,6 @@ export * from "./IModelTestUtils";
3
3
  export * from "./KnownTestLocations";
4
4
  export * from "./RevisionUtility";
5
5
  export * from "./TestChangeSetUtility";
6
+ export * from "./TestEditTxn";
6
7
  export * from "./imageData";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -7,5 +7,6 @@ export * from "./IModelTestUtils";
7
7
  export * from "./KnownTestLocations";
8
8
  export * from "./RevisionUtility";
9
9
  export * from "./TestChangeSetUtility";
10
+ export * from "./TestEditTxn";
10
11
  export * from "./imageData";
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC","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*--------------------------------------------------------------------------------------------*/\nexport * from \"./AdvancedEqual\";\nexport * from \"./IModelTestUtils\";\nexport * from \"./KnownTestLocations\";\nexport * from \"./RevisionUtility\";\nexport * from \"./TestChangeSetUtility\";\nexport * from \"./imageData\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC","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*--------------------------------------------------------------------------------------------*/\nexport * from \"./AdvancedEqual\";\nexport * from \"./IModelTestUtils\";\nexport * from \"./KnownTestLocations\";\nexport * from \"./RevisionUtility\";\nexport * from \"./TestChangeSetUtility\";\nexport * from \"./TestEditTxn\";\nexport * from \"./imageData\";\n"]}
@@ -5,6 +5,7 @@
5
5
  import { assert, expect } from "chai";
6
6
  import * as sinon from "sinon";
7
7
  import * as path from "path";
8
+ import { withEditTxn } from "../../EditTxn";
8
9
  import { BisCodeSpec, Code, ConcreteEntityTypes, ECJsNames, RelatedElement, SchemaState, } from "@itwin/core-common";
9
10
  import { DefinitionElement, DefinitionModel, ElementRefersToElements, Entity, EntityReferences, IModelDb, IModelJsFs, RepositoryLink, Schema, SpatialViewDefinition, StandaloneDb, UrlLink, ViewDefinition3d, } from "../../core-backend";
10
11
  import { IModelTestUtils } from "../IModelTestUtils";
@@ -360,12 +361,12 @@ describe("Class Registry - generated classes", () => {
360
361
  super(props, imodel);
361
362
  }
362
363
  }
363
- const testEntityId = imodel.elements.insertElement({
364
+ const testEntityId = withEditTxn(imodel, (txn) => txn.insertElement({
364
365
  classFullName: "TestGeneratedClasses:TestEntity",
365
366
  prop: "sample-value",
366
367
  model: IModelDb.dictionaryId,
367
368
  code: Code.createEmpty(),
368
- });
369
+ }));
369
370
  const elemWithNavProp = new GeneratedTestElementWithNavProp({
370
371
  classFullName: "TestGeneratedClasses:TestElementWithNavProp",
371
372
  navProp: {
@@ -395,12 +396,12 @@ describe("Class Registry - generated classes", () => {
395
396
  super(props, imodel);
396
397
  }
397
398
  }
398
- const testEntityId = imodel.elements.insertElement({
399
+ const testEntityId = withEditTxn(imodel, (txn) => txn.insertElement({
399
400
  classFullName: "TestGeneratedClasses:TestEntity",
400
401
  prop: "sample-value",
401
402
  model: IModelDb.dictionaryId,
402
403
  code: Code.createEmpty(),
403
- });
404
+ }));
404
405
  const elemWithNavProp = new GeneratedTestElementWithNavProp({
405
406
  classFullName: "TestGeneratedClasses:TestElementWithNavProp",
406
407
  navProp: new RelatedElement({
@@ -426,19 +427,19 @@ describe("Class Registry - generated classes", () => {
426
427
  elemWithNavProp.parent && EntityReferences.fromEntityType(elemWithNavProp.parent?.id, ConcreteEntityTypes.Element),
427
428
  EntityReferences.fromEntityType(testEntityId, ConcreteEntityTypes.Element),
428
429
  ].filter((x) => x !== undefined));
429
- const modelTestEntityIds = new Array(2).fill(undefined).map((_, index) => imodel.elements.insertElement({
430
+ const modelTestEntityIds = new Array(2).fill(undefined).map((_, index) => withEditTxn(imodel, (txn) => txn.insertElement({
430
431
  classFullName: "TestGeneratedClasses:TestEntity",
431
432
  prop: `model-value-${index}`,
432
433
  model: IModelDb.dictionaryId,
433
434
  code: Code.createEmpty(),
434
- }));
435
+ })));
435
436
  // eslint-disable-next-line @typescript-eslint/naming-convention
436
437
  const GeneratedTestAspectWithNavProp = imodel.getJsClass("TestGeneratedClasses:TestAspectWithNavProp");
437
- const aspectWithNavPropId = imodel.elements.insertAspect({
438
+ const aspectWithNavPropId = withEditTxn(imodel, (txn) => txn.insertAspect({
438
439
  classFullName: GeneratedTestAspectWithNavProp.classFullName,
439
440
  navProp: { id: modelTestEntityIds[0], relClassName: "TestGeneratedClasses:NonElemRel" },
440
441
  element: { id: modelTestEntityIds[1] },
441
- });
442
+ }));
442
443
  class GeneratedTestModelWithNavProp extends imodel.getJsClass("TestGeneratedClasses:TestModelWithNavProp") {
443
444
  constructor(props) {
444
445
  super(props, imodel);
@@ -453,7 +454,7 @@ describe("Class Registry - generated classes", () => {
453
454
  // removed due to a bug
454
455
  // relNavProp: { id: relWithNavPropId, relClassName: "TestGeneratedClasses:ModelToRelNavRel" },
455
456
  });
456
- const modelWithNavPropId = modelWithNavProp.insert();
457
+ const modelWithNavPropId = withEditTxn(imodel, (txn) => modelWithNavProp.insert(txn));
457
458
  expect([...modelWithNavProp.getReferenceIds()]).to.have.members([
458
459
  EntityReferences.fromEntityType(modelTestEntityIds[1], ConcreteEntityTypes.Element),
459
460
  EntityReferences.fromEntityType(IModelDb.dictionaryId, ConcreteEntityTypes.Model),
@@ -462,12 +463,12 @@ describe("Class Registry - generated classes", () => {
462
463
  // ignoring this one, because there seems to be a bug when specifying a relationship instance as a nav prop
463
464
  // EntityReferences.fromEntityType(relWithNavPropId, ConcreteEntityTypes.Relationship),
464
465
  ].filter((x) => x !== undefined));
465
- const relTestEntityIds = new Array(3).fill(undefined).map((_, index) => imodel.elements.insertElement({
466
+ const relTestEntityIds = new Array(3).fill(undefined).map((_, index) => withEditTxn(imodel, (txn) => txn.insertElement({
466
467
  classFullName: "TestGeneratedClasses:TestEntity",
467
468
  prop: `rel-value-${index}`,
468
469
  model: IModelDb.dictionaryId,
469
470
  code: Code.createEmpty(),
470
- }));
471
+ })));
471
472
  // eslint-disable-next-line @typescript-eslint/naming-convention
472
473
  const GeneratedLinkTableRelWithNavProp = imodel.getJsClass("TestGeneratedClasses:LinkTableRelWithNavProp");
473
474
  const relWithNavProp = new GeneratedLinkTableRelWithNavProp({
@@ -487,7 +488,7 @@ describe("Class Registry - generated classes", () => {
487
488
  relClassName: "TestGeneratedClasses:LinkTableRelToAspectNavRel",
488
489
  },
489
490
  }, imodel);
490
- const _relWithNavPropId = relWithNavProp.insert();
491
+ const _relWithNavPropId = withEditTxn(imodel, (txn) => relWithNavProp.insert(txn));
491
492
  expect([...relWithNavProp.getReferenceIds()]).to.have.members([
492
493
  ...relTestEntityIds.map((id) => EntityReferences.fromEntityType(id, ConcreteEntityTypes.Element)),
493
494
  EntityReferences.fromEntityType(modelWithNavPropId, ConcreteEntityTypes.Model),
@@ -517,18 +518,18 @@ describe("Class Registry - generated classes", () => {
517
518
  super(props, imodel);
518
519
  }
519
520
  }
520
- const testEntity1Id = imodel.elements.insertElement({
521
+ const testEntity1Id = withEditTxn(imodel, (txn) => txn.insertElement({
521
522
  classFullName: "TestGeneratedClasses:TestEntity",
522
523
  prop: "sample-value-1",
523
524
  model: IModelDb.dictionaryId,
524
525
  code: Code.createEmpty(),
525
- });
526
- const testEntity2Id = imodel.elements.insertElement({
526
+ }));
527
+ const testEntity2Id = withEditTxn(imodel, (txn) => txn.insertElement({
527
528
  classFullName: "TestGeneratedClasses:TestEntity",
528
529
  prop: "sample-value-2",
529
530
  model: IModelDb.dictionaryId,
530
531
  code: Code.createEmpty(),
531
- });
532
+ }));
532
533
  const elemWithNavProp = new ActualTestElementWithNavProp({
533
534
  classFullName: TestElementWithNavProp.classFullName,
534
535
  navProp: {
@@ -615,19 +616,19 @@ describe("Class Registry - generated classes", () => {
615
616
  assert.isTrue(ActualDerived4.prototype.hasOwnProperty("collectReferenceIds")); // manually implements so it should have the method
616
617
  assert.isFalse(ActualDerived5.prototype.hasOwnProperty("collectReferenceIds")); // ancestor is non-generated so it shouldn't get the automatic impl
617
618
  assert.isFalse(ActualDerived6.prototype.hasOwnProperty("collectReferenceIds")); // ancestor is non-generated so it shouldn't get the automatic impl
618
- const testEntity1Id = imodel.elements.insertElement({
619
+ const testEntity1Id = withEditTxn(imodel, (txn) => txn.insertElement({
619
620
  classFullName: "TestGeneratedClasses:Derived6",
620
621
  prop: "sample-value-1",
621
622
  model: IModelDb.dictionaryId,
622
623
  code: Code.createEmpty(),
623
- });
624
- const testEntity2Id = imodel.elements.insertElement({
624
+ }));
625
+ const testEntity2Id = withEditTxn(imodel, (txn) => txn.insertElement({
625
626
  classFullName: "TestGeneratedClasses:TestEntity",
626
627
  prop: "sample-value-2",
627
628
  model: IModelDb.dictionaryId,
628
629
  code: Code.createEmpty(),
629
- });
630
- const derived6Id = imodel.elements.insertElement({
630
+ }));
631
+ const derived6Id = withEditTxn(imodel, (txn) => txn.insertElement({
631
632
  classFullName: Derived6.classFullName,
632
633
  model: IModelDb.dictionaryId,
633
634
  code: Code.createEmpty(),
@@ -639,7 +640,7 @@ describe("Class Registry - generated classes", () => {
639
640
  id: testEntity2Id,
640
641
  relClassName: "TestGeneratedClasses:DerivedElemRel",
641
642
  },
642
- });
643
+ }));
643
644
  const derived6 = imodel.elements.getElement(derived6Id);
644
645
  /** it is not possible to make a spy of an already existing spy, so lazy try making one
645
646
  * this is necessary since due to prototypes, some "methods" we listen to are actually the same