@itwin/core-backend 5.1.0-dev.5 → 5.1.0-dev.52

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 (312) hide show
  1. package/CHANGELOG.md +122 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BisCoreSchema.js +1 -1
  6. package/lib/cjs/BisCoreSchema.js.map +1 -1
  7. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  8. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  9. package/lib/cjs/BriefcaseManager.js +16 -0
  10. package/lib/cjs/BriefcaseManager.js.map +1 -1
  11. package/lib/cjs/Category.d.ts +4 -4
  12. package/lib/cjs/Category.js +4 -4
  13. package/lib/cjs/Category.js.map +1 -1
  14. package/lib/cjs/ChangesetECAdaptor.d.ts +67 -8
  15. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  16. package/lib/cjs/ChangesetECAdaptor.js +248 -33
  17. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  18. package/lib/cjs/ClassRegistry.d.ts +1 -1
  19. package/lib/cjs/ClassRegistry.js +1 -1
  20. package/lib/cjs/ClassRegistry.js.map +1 -1
  21. package/lib/cjs/CloudSqlite.js +1 -1
  22. package/lib/cjs/CloudSqlite.js.map +1 -1
  23. package/lib/cjs/CodeSpecs.d.ts +1 -1
  24. package/lib/cjs/CodeSpecs.js +1 -1
  25. package/lib/cjs/CodeSpecs.js.map +1 -1
  26. package/lib/cjs/DisplayStyle.d.ts +4 -4
  27. package/lib/cjs/DisplayStyle.js +3 -3
  28. package/lib/cjs/DisplayStyle.js.map +1 -1
  29. package/lib/cjs/ECDb.d.ts +4 -4
  30. package/lib/cjs/ECDb.d.ts.map +1 -1
  31. package/lib/cjs/ECDb.js +4 -4
  32. package/lib/cjs/ECDb.js.map +1 -1
  33. package/lib/cjs/ECSqlStatement.d.ts +15 -6
  34. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  35. package/lib/cjs/ECSqlStatement.js +18 -4
  36. package/lib/cjs/ECSqlStatement.js.map +1 -1
  37. package/lib/cjs/Element.d.ts +51 -51
  38. package/lib/cjs/Element.js +52 -52
  39. package/lib/cjs/Element.js.map +1 -1
  40. package/lib/cjs/ElementAspect.d.ts +8 -8
  41. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  42. package/lib/cjs/ElementAspect.js +8 -8
  43. package/lib/cjs/ElementAspect.js.map +1 -1
  44. package/lib/cjs/Entity.d.ts +3 -3
  45. package/lib/cjs/Entity.js +2 -2
  46. package/lib/cjs/Entity.js.map +1 -1
  47. package/lib/cjs/ExportGraphics.d.ts +54 -8
  48. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  49. package/lib/cjs/ExportGraphics.js +158 -59
  50. package/lib/cjs/ExportGraphics.js.map +1 -1
  51. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  52. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  53. package/lib/cjs/GeographicCRSServices.js +1 -1
  54. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  55. package/lib/cjs/IModelDb.d.ts +29 -23
  56. package/lib/cjs/IModelDb.d.ts.map +1 -1
  57. package/lib/cjs/IModelDb.js +106 -43
  58. package/lib/cjs/IModelDb.js.map +1 -1
  59. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  60. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  61. package/lib/cjs/IModelElementCloneContext.js +1 -1
  62. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  63. package/lib/cjs/IModelHost.d.ts +2 -3
  64. package/lib/cjs/IModelHost.d.ts.map +1 -1
  65. package/lib/cjs/IModelHost.js +2 -3
  66. package/lib/cjs/IModelHost.js.map +1 -1
  67. package/lib/cjs/Material.d.ts +1 -1
  68. package/lib/cjs/Material.js +1 -1
  69. package/lib/cjs/Material.js.map +1 -1
  70. package/lib/cjs/Model.d.ts +22 -22
  71. package/lib/cjs/Model.js +22 -22
  72. package/lib/cjs/Model.js.map +1 -1
  73. package/lib/cjs/SQLiteDb.d.ts +1 -1
  74. package/lib/cjs/SQLiteDb.js +1 -1
  75. package/lib/cjs/SQLiteDb.js.map +1 -1
  76. package/lib/cjs/SqliteStatement.d.ts +1 -1
  77. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  78. package/lib/cjs/SqliteStatement.js +1 -1
  79. package/lib/cjs/SqliteStatement.js.map +1 -1
  80. package/lib/cjs/Texture.d.ts +1 -1
  81. package/lib/cjs/Texture.js +1 -1
  82. package/lib/cjs/Texture.js.map +1 -1
  83. package/lib/cjs/TxnManager.d.ts +4 -4
  84. package/lib/cjs/TxnManager.js +1 -1
  85. package/lib/cjs/TxnManager.js.map +1 -1
  86. package/lib/cjs/ViewDefinition.d.ts +40 -14
  87. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  88. package/lib/cjs/ViewDefinition.js +42 -14
  89. package/lib/cjs/ViewDefinition.js.map +1 -1
  90. package/lib/cjs/annotations/FrameGeometry.d.ts +52 -0
  91. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -0
  92. package/lib/cjs/annotations/FrameGeometry.js +250 -0
  93. package/lib/cjs/annotations/FrameGeometry.js.map +1 -0
  94. package/lib/cjs/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  95. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -0
  96. package/lib/cjs/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +20 -26
  97. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -0
  98. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +31 -0
  99. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  100. package/lib/cjs/annotations/TextAnnotationGeometry.js +132 -0
  101. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -0
  102. package/lib/cjs/annotations/TextBlockGeometry.d.ts +16 -0
  103. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -0
  104. package/lib/cjs/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +13 -69
  105. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -0
  106. package/lib/cjs/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +22 -8
  107. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -0
  108. package/lib/cjs/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +51 -9
  109. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -0
  110. package/lib/cjs/core-backend.d.ts +5 -3
  111. package/lib/cjs/core-backend.d.ts.map +1 -1
  112. package/lib/cjs/core-backend.js +25 -6
  113. package/lib/cjs/core-backend.js.map +1 -1
  114. package/lib/cjs/internal/ElementLRUCache.d.ts +23 -0
  115. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -1
  116. package/lib/cjs/internal/ElementLRUCache.js +167 -3
  117. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  118. package/lib/cjs/internal/Symbols.d.ts +1 -0
  119. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  120. package/lib/cjs/internal/Symbols.js +2 -1
  121. package/lib/cjs/internal/Symbols.js.map +1 -1
  122. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  123. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -1
  124. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  125. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  126. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  127. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  128. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  129. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  130. package/lib/esm/BackendHubAccess.d.ts +1 -1
  131. package/lib/esm/BackendHubAccess.js +1 -1
  132. package/lib/esm/BackendHubAccess.js.map +1 -1
  133. package/lib/esm/BisCoreSchema.js +1 -1
  134. package/lib/esm/BisCoreSchema.js.map +1 -1
  135. package/lib/esm/BriefcaseManager.d.ts +10 -2
  136. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  137. package/lib/esm/BriefcaseManager.js +17 -1
  138. package/lib/esm/BriefcaseManager.js.map +1 -1
  139. package/lib/esm/Category.d.ts +4 -4
  140. package/lib/esm/Category.js +4 -4
  141. package/lib/esm/Category.js.map +1 -1
  142. package/lib/esm/ChangesetECAdaptor.d.ts +67 -8
  143. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  144. package/lib/esm/ChangesetECAdaptor.js +248 -33
  145. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  146. package/lib/esm/ClassRegistry.d.ts +1 -1
  147. package/lib/esm/ClassRegistry.js +1 -1
  148. package/lib/esm/ClassRegistry.js.map +1 -1
  149. package/lib/esm/CloudSqlite.js +1 -1
  150. package/lib/esm/CloudSqlite.js.map +1 -1
  151. package/lib/esm/CodeSpecs.d.ts +1 -1
  152. package/lib/esm/CodeSpecs.js +1 -1
  153. package/lib/esm/CodeSpecs.js.map +1 -1
  154. package/lib/esm/DisplayStyle.d.ts +4 -4
  155. package/lib/esm/DisplayStyle.js +3 -3
  156. package/lib/esm/DisplayStyle.js.map +1 -1
  157. package/lib/esm/ECDb.d.ts +4 -4
  158. package/lib/esm/ECDb.d.ts.map +1 -1
  159. package/lib/esm/ECDb.js +4 -4
  160. package/lib/esm/ECDb.js.map +1 -1
  161. package/lib/esm/ECSqlStatement.d.ts +15 -6
  162. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  163. package/lib/esm/ECSqlStatement.js +18 -4
  164. package/lib/esm/ECSqlStatement.js.map +1 -1
  165. package/lib/esm/Element.d.ts +51 -51
  166. package/lib/esm/Element.js +52 -52
  167. package/lib/esm/Element.js.map +1 -1
  168. package/lib/esm/ElementAspect.d.ts +8 -8
  169. package/lib/esm/ElementAspect.d.ts.map +1 -1
  170. package/lib/esm/ElementAspect.js +8 -8
  171. package/lib/esm/ElementAspect.js.map +1 -1
  172. package/lib/esm/Entity.d.ts +3 -3
  173. package/lib/esm/Entity.js +2 -2
  174. package/lib/esm/Entity.js.map +1 -1
  175. package/lib/esm/ExportGraphics.d.ts +54 -8
  176. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  177. package/lib/esm/ExportGraphics.js +156 -58
  178. package/lib/esm/ExportGraphics.js.map +1 -1
  179. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  180. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  181. package/lib/esm/GeographicCRSServices.js +1 -1
  182. package/lib/esm/GeographicCRSServices.js.map +1 -1
  183. package/lib/esm/IModelDb.d.ts +29 -23
  184. package/lib/esm/IModelDb.d.ts.map +1 -1
  185. package/lib/esm/IModelDb.js +109 -46
  186. package/lib/esm/IModelDb.js.map +1 -1
  187. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  188. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  189. package/lib/esm/IModelElementCloneContext.js +1 -1
  190. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  191. package/lib/esm/IModelHost.d.ts +2 -3
  192. package/lib/esm/IModelHost.d.ts.map +1 -1
  193. package/lib/esm/IModelHost.js +2 -3
  194. package/lib/esm/IModelHost.js.map +1 -1
  195. package/lib/esm/Material.d.ts +1 -1
  196. package/lib/esm/Material.js +1 -1
  197. package/lib/esm/Material.js.map +1 -1
  198. package/lib/esm/Model.d.ts +22 -22
  199. package/lib/esm/Model.js +22 -22
  200. package/lib/esm/Model.js.map +1 -1
  201. package/lib/esm/SQLiteDb.d.ts +1 -1
  202. package/lib/esm/SQLiteDb.js +1 -1
  203. package/lib/esm/SQLiteDb.js.map +1 -1
  204. package/lib/esm/SqliteStatement.d.ts +1 -1
  205. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  206. package/lib/esm/SqliteStatement.js +1 -1
  207. package/lib/esm/SqliteStatement.js.map +1 -1
  208. package/lib/esm/Texture.d.ts +1 -1
  209. package/lib/esm/Texture.js +1 -1
  210. package/lib/esm/Texture.js.map +1 -1
  211. package/lib/esm/TxnManager.d.ts +4 -4
  212. package/lib/esm/TxnManager.js +1 -1
  213. package/lib/esm/TxnManager.js.map +1 -1
  214. package/lib/esm/ViewDefinition.d.ts +40 -14
  215. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  216. package/lib/esm/ViewDefinition.js +42 -14
  217. package/lib/esm/ViewDefinition.js.map +1 -1
  218. package/lib/esm/annotations/FrameGeometry.d.ts +52 -0
  219. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -0
  220. package/lib/esm/annotations/FrameGeometry.js +245 -0
  221. package/lib/esm/annotations/FrameGeometry.js.map +1 -0
  222. package/lib/esm/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  223. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -0
  224. package/lib/esm/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +22 -28
  225. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -0
  226. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +31 -0
  227. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  228. package/lib/esm/annotations/TextAnnotationGeometry.js +129 -0
  229. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -0
  230. package/lib/esm/annotations/TextBlockGeometry.d.ts +16 -0
  231. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -0
  232. package/lib/esm/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +13 -69
  233. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -0
  234. package/lib/esm/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +22 -8
  235. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -0
  236. package/lib/esm/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +51 -9
  237. package/lib/esm/annotations/TextBlockLayout.js.map +1 -0
  238. package/lib/esm/core-backend.d.ts +5 -3
  239. package/lib/esm/core-backend.d.ts.map +1 -1
  240. package/lib/esm/core-backend.js +25 -3
  241. package/lib/esm/core-backend.js.map +1 -1
  242. package/lib/esm/internal/ElementLRUCache.d.ts +23 -0
  243. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -1
  244. package/lib/esm/internal/ElementLRUCache.js +165 -2
  245. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  246. package/lib/esm/internal/Symbols.d.ts +1 -0
  247. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  248. package/lib/esm/internal/Symbols.js +1 -0
  249. package/lib/esm/internal/Symbols.js.map +1 -1
  250. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  251. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +1 -1
  252. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  253. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  254. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  255. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  256. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  257. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  258. package/lib/esm/test/ElementLRUCache.test.js +224 -1
  259. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  260. package/lib/esm/test/TestUtils.d.ts +1 -1
  261. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  262. package/lib/esm/test/TestUtils.js +1 -1
  263. package/lib/esm/test/TestUtils.js.map +1 -1
  264. package/lib/esm/test/annotations/TextAnnotation.test.js +190 -1025
  265. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  266. package/lib/esm/test/annotations/TextBlock.test.d.ts +2 -0
  267. package/lib/esm/test/annotations/TextBlock.test.d.ts.map +1 -0
  268. package/lib/esm/test/annotations/TextBlock.test.js +1105 -0
  269. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -0
  270. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts +2 -0
  271. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts.map +1 -0
  272. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +164 -0
  273. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -0
  274. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +22 -32
  275. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  276. package/lib/esm/test/ecdb/ECDb.test.js +29 -8
  277. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  278. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -55
  279. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  280. package/lib/esm/test/ecdb/ECSqlStatement.test.js +192 -0
  281. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  282. package/lib/esm/test/imodel/IModel.test.js +255 -5
  283. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  284. package/lib/esm/test/misc/GeoServices.test.js +23 -9
  285. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  286. package/lib/esm/test/standalone/ChangesetReader.test.js +451 -136
  287. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  288. package/lib/esm/test/standalone/ExportGraphics.test.js +53 -1
  289. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  290. package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
  291. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  292. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  293. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  294. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  295. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  296. package/lib/esm/test/standalone/SnapshotDb.test.js +19 -1
  297. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  298. package/package.json +12 -12
  299. package/lib/cjs/TextAnnotationElement.d.ts.map +0 -1
  300. package/lib/cjs/TextAnnotationElement.js.map +0 -1
  301. package/lib/cjs/TextAnnotationGeometry.d.ts +0 -32
  302. package/lib/cjs/TextAnnotationGeometry.d.ts.map +0 -1
  303. package/lib/cjs/TextAnnotationGeometry.js.map +0 -1
  304. package/lib/cjs/TextAnnotationLayout.d.ts.map +0 -1
  305. package/lib/cjs/TextAnnotationLayout.js.map +0 -1
  306. package/lib/esm/TextAnnotationElement.d.ts.map +0 -1
  307. package/lib/esm/TextAnnotationElement.js.map +0 -1
  308. package/lib/esm/TextAnnotationGeometry.d.ts +0 -32
  309. package/lib/esm/TextAnnotationGeometry.d.ts.map +0 -1
  310. package/lib/esm/TextAnnotationGeometry.js.map +0 -1
  311. package/lib/esm/TextAnnotationLayout.d.ts.map +0 -1
  312. package/lib/esm/TextAnnotationLayout.js.map +0 -1
@@ -62,7 +62,7 @@ import { DbResult, Guid, Id64, IModelStatus, Logger, OpenMode, ProcessDetector }
62
62
  import { BisCodeSpec, BriefcaseIdValue, Code, CodeScopeSpec, CodeSpec, ColorByName, ColorDef, DisplayStyleSettings, EcefLocation, FontMap, FontType, GeoCoordStatus, GeographicCRS, GeometryParams, GeometryStreamBuilder, ImageSourceFormat, IModel, IModelError, RelatedElement, RenderMode, SchemaState, SubCategoryAppearance, TextureMapping, TextureMapUnits, ViewFlags, } from "@itwin/core-common";
63
63
  import { Geometry, LineString3d, Loop, Matrix4d, Point3d, PolyfaceBuilder, Range3d, StrokeOptions, Transform, YawPitchRollAngles, } from "@itwin/core-geometry";
64
64
  import { V2CheckpointManager } from "../../CheckpointManager";
65
- import { _nativeDb, BisCoreSchema, Category, ClassRegistry, DefinitionContainer, DefinitionGroup, DefinitionGroupGroupsDefinitions, DefinitionModel, DefinitionPartition, DictionaryModel, DisplayStyle3d, DocumentPartition, DrawingGraphic, Element, ElementDrivesElement, ElementGroupsMembers, ElementOwnsChildElements, GeometricElement2d, GeometricElement3d, GeometricModel, GroupInformationPartition, IModelDb, IModelHost, IModelJsFs, InformationPartitionElement, InformationRecordElement, LinkPartition, Model, PhysicalElement, PhysicalModel, PhysicalObject, PhysicalPartition, RenderMaterialElement, SnapshotDb, SpatialCategory, SqliteValueType, StandaloneDb, SubCategory, Subject, Texture, } from "../../core-backend";
65
+ import { _nativeDb, BisCoreSchema, Category, ClassRegistry, DefinitionContainer, DefinitionGroup, DefinitionGroupGroupsDefinitions, DefinitionModel, DefinitionPartition, DictionaryModel, DisplayStyle3d, DocumentPartition, DrawingGraphic, Element, ElementDrivesElement, ElementGroupsMembers, ElementOwnsChildElements, GenericGraphicalType2d, GeometricElement2d, GeometricElement3d, GeometricModel, GroupInformationPartition, IModelDb, IModelHost, IModelJsFs, InformationPartitionElement, InformationRecordElement, LinkPartition, Model, PhysicalElement, PhysicalModel, PhysicalObject, PhysicalPartition, RenderMaterialElement, SnapshotDb, SpatialCategory, SqliteValueType, StandaloneDb, SubCategory, Subject, Texture, } from "../../core-backend";
66
66
  import { BriefcaseDb } from "../../IModelDb";
67
67
  import { HubMock } from "../../internal/HubMock";
68
68
  import { KnownTestLocations } from "../KnownTestLocations";
@@ -1301,12 +1301,15 @@ describe("iModel", () => {
1301
1301
  // Delete the model
1302
1302
  testImodel.models.deleteModel(newModelId);
1303
1303
  // Test insertModel error handling
1304
- assert.throws(() => {
1304
+ try {
1305
1305
  testImodel.models.insertModel({
1306
1306
  classFullName: DefinitionModel.classFullName,
1307
1307
  modeledElement: { id: "0x10000000bad" },
1308
1308
  });
1309
- }, IModelError);
1309
+ }
1310
+ catch (error) {
1311
+ assert.isTrue(error instanceof IModelError || error.iTwinErrorId !== undefined);
1312
+ }
1310
1313
  });
1311
1314
  it("should create model with custom relationship to modeled element", async () => {
1312
1315
  const testImodel = imodel1;
@@ -1605,6 +1608,33 @@ describe("iModel", () => {
1605
1608
  assert.isTrue(iModel2.ecefLocation !== undefined);
1606
1609
  iModel2.close();
1607
1610
  });
1611
+ describe("async coordinate conversions", () => {
1612
+ it("should output same number of points as input", async () => {
1613
+ const iModelCoords = [];
1614
+ const geoCoords = [];
1615
+ for (let numPts = 0; numPts < 3; numPts++) {
1616
+ const geoResponse = await imodel5.getGeoCoordinatesFromIModelCoordinates({ target: "WGS84", iModelCoords });
1617
+ expect(geoResponse.geoCoords.length).to.equal(numPts);
1618
+ const iModelResponse = await imodel5.getIModelCoordinatesFromGeoCoordinates({ source: "WGS84", geoCoords });
1619
+ expect(iModelResponse.iModelCoords.length).to.equal(numPts);
1620
+ iModelCoords.push(new Point3d());
1621
+ geoCoords.push(new Point3d());
1622
+ }
1623
+ });
1624
+ it("should always have fromCache = 0", async () => {
1625
+ const iModelCoords = [];
1626
+ const geoCoords = [];
1627
+ for (let numPts = 0; numPts < 3; numPts++) {
1628
+ const geoResponse = await imodel5.getGeoCoordinatesFromIModelCoordinates({ target: "WGS84", iModelCoords });
1629
+ expect(geoResponse.fromCache).to.equal(0);
1630
+ const iModelResponse = await imodel5.getIModelCoordinatesFromGeoCoordinates({ source: "WGS84", geoCoords });
1631
+ expect(iModelResponse.iModelCoords.length).to.equal(numPts);
1632
+ expect(iModelResponse.fromCache).to.equal(0);
1633
+ iModelCoords.push(new Point3d());
1634
+ geoCoords.push(new Point3d());
1635
+ }
1636
+ });
1637
+ });
1608
1638
  if (!ProcessDetector.isIOSAppBackend) {
1609
1639
  it("should be able to reproject with iModel coordinates to or from any other GeographicCRS", async () => {
1610
1640
  const convertTest = async (fileName, fileGCS, datum, inputCoord, outputCoord) => {
@@ -2086,10 +2116,41 @@ describe("iModel", () => {
2086
2116
  db.abandonChanges();
2087
2117
  db.close();
2088
2118
  });
2119
+ it("Cache cleared on abandonChanges", () => {
2120
+ const standaloneFile = IModelTestUtils.prepareOutputFile("IModel", "StandaloneReadWrite.bim");
2121
+ const db = StandaloneDb.createEmpty(standaloneFile, { rootSubject: { name: "Standalone" } });
2122
+ db.saveChanges();
2123
+ const code = Code.createEmpty();
2124
+ code.value = "foo";
2125
+ const props = {
2126
+ classFullName: GenericGraphicalType2d.classFullName,
2127
+ model: IModel.dictionaryId,
2128
+ code,
2129
+ };
2130
+ const id = db.elements.insertElement(props);
2131
+ const element1 = db.elements.getElementProps(id);
2132
+ db.abandonChanges();
2133
+ code.value = "bar";
2134
+ const props2 = {
2135
+ classFullName: GenericGraphicalType2d.classFullName,
2136
+ model: IModel.dictionaryId,
2137
+ code,
2138
+ };
2139
+ const id2 = db.elements.insertElement(props2);
2140
+ expect(id2).to.equal(id);
2141
+ const element2 = db.elements.getElementProps(id2);
2142
+ expect(element2).to.not.equal(element1);
2143
+ db.abandonChanges();
2144
+ db.close();
2145
+ });
2089
2146
  it("Standalone iModel properties", () => {
2090
2147
  const standaloneRootSubjectName = "Standalone";
2091
2148
  const standaloneFile1 = IModelTestUtils.prepareOutputFile("IModel", "Standalone1.bim");
2092
- let standaloneDb1 = StandaloneDb.createEmpty(standaloneFile1, { rootSubject: { name: standaloneRootSubjectName } });
2149
+ const ecefLocation = new EcefLocation({ origin: [1, 2, 3], orientation: { yaw: 0, pitch: 0, roll: 0 } });
2150
+ const geographicCoordinateSystem = {
2151
+ horizontalCRS: { id: "10TM115-27" },
2152
+ };
2153
+ let standaloneDb1 = StandaloneDb.createEmpty(standaloneFile1, { rootSubject: { name: standaloneRootSubjectName }, ecefLocation, geographicCoordinateSystem });
2093
2154
  assert.isTrue(standaloneDb1.isStandaloneDb());
2094
2155
  assert.isTrue(standaloneDb1.isStandalone);
2095
2156
  assert.isFalse(standaloneDb1.isReadonly, "Expect standalone iModels to be read-write during create");
@@ -2102,6 +2163,8 @@ describe("iModel", () => {
2102
2163
  assert.equal(standaloneDb1.iTwinId, Guid.empty);
2103
2164
  assert.strictEqual("", standaloneDb1.changeset.id);
2104
2165
  assert.strictEqual(0, standaloneDb1.changeset.index);
2166
+ assert.deepEqual(standaloneDb1.ecefLocation?.origin, ecefLocation.origin, "standalone ecefLocation should be set");
2167
+ assert.strictEqual(standaloneDb1.geographicCoordinateSystem?.horizontalCRS?.id, "10TM115-27", "standalone coordinate system should be set");
2105
2168
  assert.equal(standaloneDb1.openMode, OpenMode.ReadWrite);
2106
2169
  standaloneDb1.close();
2107
2170
  assert.isFalse(standaloneDb1.isOpen);
@@ -2119,7 +2182,11 @@ describe("iModel", () => {
2119
2182
  const snapshotFile2 = IModelTestUtils.prepareOutputFile("IModel", "Snapshot2.bim");
2120
2183
  const snapshotFile3 = IModelTestUtils.prepareOutputFile("IModel", "Snapshot3.bim");
2121
2184
  const imodel = await generateTestSnapshot("test_for_snapshot.bim", "test.bim");
2122
- let snapshotDb1 = SnapshotDb.createEmpty(snapshotFile1, { rootSubject: { name: snapshotRootSubjectName }, createClassViews: true });
2185
+ const ecefLocation = new EcefLocation({ origin: [1, 2, 3], orientation: { yaw: 0, pitch: 0, roll: 0 } });
2186
+ const geographicCoordinateSystem = {
2187
+ horizontalCRS: { id: "10TM115-27" },
2188
+ };
2189
+ let snapshotDb1 = SnapshotDb.createEmpty(snapshotFile1, { rootSubject: { name: snapshotRootSubjectName }, createClassViews: true, ecefLocation, geographicCoordinateSystem });
2123
2190
  let snapshotDb2 = SnapshotDb.createFrom(snapshotDb1, snapshotFile2);
2124
2191
  let snapshotDb3 = SnapshotDb.createFrom(imodel, snapshotFile3, { createClassViews: true });
2125
2192
  assert.isTrue(snapshotDb1.isSnapshotDb());
@@ -2156,6 +2223,8 @@ describe("iModel", () => {
2156
2223
  assert.isTrue(snapshotDb1.isOpen);
2157
2224
  assert.isTrue(snapshotDb2.isOpen);
2158
2225
  assert.isTrue(snapshotDb3.isOpen);
2226
+ assert.deepEqual(snapshotDb1.ecefLocation?.origin, ecefLocation.origin, "snapshot ecefLocation should be set");
2227
+ assert.strictEqual(snapshotDb1.geographicCoordinateSystem?.horizontalCRS?.id, "10TM115-27", "snapshot coordinate system should be set");
2159
2228
  snapshotDb1.close();
2160
2229
  snapshotDb2.close();
2161
2230
  snapshotDb3.close();
@@ -2587,6 +2656,32 @@ describe("iModel", () => {
2587
2656
  expect(categ3.code.value).to.equal(code3.trimmedCodeVal);
2588
2657
  imodel.close();
2589
2658
  });
2659
+ it("should throw iTwinErrors on element CRUD opertion fails", async () => {
2660
+ const code = Code.createEmpty();
2661
+ code.value = "foo";
2662
+ const props = {
2663
+ classFullName: GenericGraphicalType2d.classFullName,
2664
+ model: IModel.dictionaryId,
2665
+ code,
2666
+ };
2667
+ imodel1.elements.insertElement(props);
2668
+ expect(() => imodel1.elements.insertElement(props)).throws("Error inserting element [duplicate code]").to.have.property("iTwinErrorId");
2669
+ const updateProps = {
2670
+ id: Id64.fromString("0x111111"),
2671
+ classFullName: GenericGraphicalType2d.classFullName,
2672
+ model: IModel.dictionaryId,
2673
+ code,
2674
+ };
2675
+ expect(() => imodel1.elements.updateElement(updateProps)).throws(`Error updating element [missing id], id: ${updateProps.id}`).to.have.property("iTwinErrorId");
2676
+ expect(() => imodel1.elements.deleteElement(updateProps.id)).throws(`Error deleting element [missing id], id: ${updateProps.id}`).to.have.property("iTwinErrorId");
2677
+ expect(() => imodel1.models.insertModel({ classFullName: DefinitionModel.classFullName, modeledElement: { id: "0x10000000bad" } })).throws("Error inserting model [error=10004], class=BisCore:DefinitionModel").to.have.property("iTwinErrorId");
2678
+ expect(() => imodel1.models.updateModel({
2679
+ id: Id64.fromString("0x111111"),
2680
+ modeledElement: { id: Id64.fromString("0x111111") },
2681
+ classFullName: ""
2682
+ })).throws(`Error updating model [missing id], id: ${Id64.fromString("0x111111")}`).to.have.property("iTwinErrorId");
2683
+ expect(() => imodel1.models.deleteModel(Id64.fromString("0x111111"))).throws(`Error deleting model [missing id], id: ${Id64.fromString("0x111111")}`).to.have.property("iTwinErrorId");
2684
+ });
2590
2685
  it("throws NotFound when attempting to access element props after closing the iModel", () => {
2591
2686
  const imodelPath = IModelTestUtils.prepareOutputFile("IModel", "accessAfterClose.bim");
2592
2687
  const imodel = SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: "accessAfterClose" } });
@@ -2622,5 +2717,160 @@ describe("iModel", () => {
2622
2717
  expect(() => imodel.relationships.insertInstance(props)).to.throw(`Failed to insert relationship [${imodelPath}]: rc=2067, constraint failed (BE_SQLITE_CONSTRAINT_UNIQUE)`);
2623
2718
  imodel.close();
2624
2719
  });
2720
+ function createElemProps(_imodel, modId, catId, className) {
2721
+ // Create props
2722
+ const elementProps = {
2723
+ classFullName: className,
2724
+ model: modId,
2725
+ category: catId,
2726
+ code: Code.createEmpty(),
2727
+ };
2728
+ return elementProps;
2729
+ }
2730
+ function insertElement(imodel, mId, cId, cName, propName) {
2731
+ const elementProps = createElemProps(imodel, mId, cId, cName);
2732
+ const geomElement = imodel.elements.createElement(elementProps);
2733
+ geomElement.name = propName; // Add a custom property to the element
2734
+ const id = imodel.elements.insertElement(geomElement.toJSON());
2735
+ assert.isTrue(Id64.isValidId64(id), "insert failed");
2736
+ return id;
2737
+ }
2738
+ function validateADrivesBRowCount(imodel, expectedRows) {
2739
+ const reader = IModelTestUtils.executeQuery(imodel, `select * from trs.ADrivesB`);
2740
+ assert.strictEqual(reader.length, expectedRows, `Expected ${expectedRows} rows in trs.ADrivesB table`);
2741
+ }
2742
+ function validateNavProp(imodel, expectedNavPropValue) {
2743
+ const reader = IModelTestUtils.executeQuery(imodel, `select NavPropChildB from trs.ChildA`);
2744
+ assert.strictEqual(reader.length, 1);
2745
+ assert.deepEqual(reader[0].navPropChildB, expectedNavPropValue, `Expected NavPropChildB to be "${expectedNavPropValue}"`);
2746
+ }
2747
+ it("Validate invalid relationship classes being inserted/updated", async () => {
2748
+ const imodelPath = IModelTestUtils.prepareOutputFile("IModel", "invalidRelationshipClass.bim");
2749
+ if (IModelJsFs.existsSync(imodelPath))
2750
+ IModelJsFs.unlinkSync(imodelPath);
2751
+ const testImodel = SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: "invalidRelationshipClass" } });
2752
+ await testImodel.importSchemaStrings([
2753
+ `<?xml version="1.0" encoding="UTF-8"?>
2754
+ <ECSchema schemaName="TestRelationSchema" alias="trs" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
2755
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
2756
+ <ECEntityClass typeName="TestElement">
2757
+ <BaseClass>bis:PhysicalElement</BaseClass>
2758
+ <ECProperty propertyName="Name" typeName="string" />
2759
+ </ECEntityClass>
2760
+
2761
+ <ECEntityClass typeName="ChildA" >
2762
+ <BaseClass>TestElement</BaseClass>
2763
+ <ECNavigationProperty propertyName="NavPropChildB" relationshipName="ADrivesB" direction="Forward" readOnly="True">
2764
+ </ECNavigationProperty>
2765
+ </ECEntityClass>
2766
+
2767
+ <ECEntityClass typeName="ChildB" >
2768
+ <BaseClass>TestElement</BaseClass>
2769
+ </ECEntityClass>
2770
+
2771
+ <ECRelationshipClass typeName="ADrivesB" strengthDirection="Backward" strength="referencing" modifier="Sealed">
2772
+ <Source multiplicity="(0..*)" polymorphic="true" roleLabel="drives">
2773
+ <Class class="ChildA"/>
2774
+ </Source>
2775
+ <Target multiplicity="(0..1)" polymorphic="true" roleLabel="is driven by">
2776
+ <Class class="ChildB"/>
2777
+ </Target>
2778
+ </ECRelationshipClass>
2779
+
2780
+ <ECEntityClass typeName="ChildC">
2781
+ <BaseClass>TestElement</BaseClass>
2782
+ </ECEntityClass>
2783
+
2784
+ <ECEntityClass typeName="ChildD">
2785
+ <BaseClass>TestElement</BaseClass>
2786
+ </ECEntityClass>
2787
+
2788
+ <ECRelationshipClass typeName="CIsRelatedToD" strength="referencing" modifier="Sealed">
2789
+ <BaseClass>bis:ElementRefersToElements</BaseClass>
2790
+ <Source multiplicity="(0..*)" roleLabel="IsRelatedTo" polymorphic="true">
2791
+ <Class class="ChildC"/>
2792
+ </Source>
2793
+ <Target multiplicity="(0..*)" roleLabel="IsRelatedTo (Reversed)" polymorphic="true">
2794
+ <Class class="ChildD"/>
2795
+ </Target>
2796
+ </ECRelationshipClass>
2797
+ </ECSchema>`
2798
+ ]);
2799
+ // Enable ECSQL write validation and verify it's set
2800
+ const pragmaRows = IModelTestUtils.executeQuery(testImodel, `PRAGMA validate_ecsql_writes=true`);
2801
+ assert.exists(pragmaRows);
2802
+ assert.strictEqual(pragmaRows[0].validate_ecsql_writes, true);
2803
+ // Ensure ADrivesB table is empty before test
2804
+ validateADrivesBRowCount(testImodel, 0);
2805
+ // Create a physical model and spatial category if needed
2806
+ const [, newModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(testImodel, Code.createEmpty(), true);
2807
+ let spatialCategoryId = SpatialCategory.queryCategoryIdByName(testImodel, IModel.dictionaryId, "MySpatialCategory");
2808
+ if (!spatialCategoryId) {
2809
+ spatialCategoryId = SpatialCategory.insert(testImodel, IModel.dictionaryId, "MySpatialCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
2810
+ }
2811
+ // Insert a ChildB element to be referenced by ChildA
2812
+ const idB = insertElement(testImodel, newModelId, spatialCategoryId, "TestRelationSchema:ChildB", "ChildBElement");
2813
+ assert.isTrue(Id64.isValidId64(idB), "Insert ChildBElement failed");
2814
+ testImodel.saveChanges();
2815
+ // Prepare base props for ChildA
2816
+ const elementProps = createElemProps(testImodel, newModelId, spatialCategoryId, "TestRelationSchema:ChildA");
2817
+ // Test various relationship class names for navigation property
2818
+ const testCases = [
2819
+ { name: "trs:ADrivesB", shouldSucceed: true, expectedRows: 1 },
2820
+ { name: "trs.FakeClass", shouldSucceed: true, expectedRows: 0 },
2821
+ { name: "trs:ChildA", shouldSucceed: false, expectedRows: 0 },
2822
+ { name: "trs:ChildB", shouldSucceed: false, expectedRows: 0 },
2823
+ { name: "trs:CIsRelatedToD", shouldSucceed: false, expectedRows: 0 },
2824
+ ];
2825
+ for (const { name, shouldSucceed, expectedRows } of testCases) {
2826
+ const elemRef = new RelatedElement({ id: idB, relClassName: name });
2827
+ elementProps.navPropChildB = elemRef;
2828
+ elementProps.name = "ChildAElement";
2829
+ const geomElement = testImodel.elements.createElement(elementProps);
2830
+ let idA;
2831
+ try {
2832
+ idA = testImodel.elements.insertElement(geomElement.toJSON());
2833
+ if (shouldSucceed)
2834
+ assert.isTrue(Id64.isValidId64(idA), `Insert should have succeeded for ${name}.`);
2835
+ else
2836
+ assert.fail(`Insert should have failed for ${name}.`);
2837
+ }
2838
+ catch (err) {
2839
+ if (shouldSucceed)
2840
+ assert.fail(`Insert should have succeeded for ${name}. Error: ${err.message}`);
2841
+ // If should not succeed, error is expected
2842
+ }
2843
+ // Validate row count in ADrivesB table
2844
+ validateADrivesBRowCount(testImodel, expectedRows);
2845
+ // If insert succeeded, test update and delete scenarios
2846
+ if (expectedRows === 1 && idA !== undefined) {
2847
+ validateNavProp(testImodel, { id: idB, relClassName: "TestRelationSchema.ADrivesB" });
2848
+ const editElem = testImodel.elements.getElement(idA);
2849
+ editElem.navPropChildB = new RelatedElement({ id: idB, relClassName: "trs.FakeClass" });
2850
+ editElem.name = "ChildAElementUpdated";
2851
+ testImodel.elements.updateElement(editElem);
2852
+ validateADrivesBRowCount(testImodel, 1);
2853
+ validateNavProp(testImodel, { id: idB, relClassName: "TestRelationSchema.ADrivesB" });
2854
+ const editedElem = testImodel.elements.getElement(idA);
2855
+ assert.equal(editedElem.name, "ChildAElementUpdated", `Expected name to be "ChildAElementUpdated" after update, but got "${editedElem.name}"`);
2856
+ assert.strictEqual(editedElem.navPropChildB.relClassName, "TestRelationSchema.ADrivesB", `Expected navPropChildB to be "TestRelationSchema.ADrivesB" after update, but got "${editedElem.navPropChildB}"`);
2857
+ // Set the nav prop value to null
2858
+ editElem.name = "ChildAElementNulled";
2859
+ editElem.navPropChildB = null;
2860
+ testImodel.elements.updateElement(editElem);
2861
+ validateADrivesBRowCount(testImodel, 0);
2862
+ const nulledElem = testImodel.elements.getElement(idA);
2863
+ assert.equal(nulledElem.name, "ChildAElementNulled", `Expected name to be "ChildAElementNulled" after nulling, but got "${nulledElem.name}"`);
2864
+ assert.isUndefined(nulledElem.navPropChildB, `Expected navPropChildB to be undefined after nulling, but got "${nulledElem.navPropChildB}"`);
2865
+ if (shouldSucceed) {
2866
+ // Delete the element
2867
+ testImodel.elements.deleteElement(idA);
2868
+ assert.isUndefined(testImodel.elements.tryGetElement(idA), `Expected element with id ${idA} to be deleted, but it still exists.`);
2869
+ }
2870
+ }
2871
+ testImodel.abandonChanges();
2872
+ }
2873
+ testImodel.close();
2874
+ });
2625
2875
  });
2626
2876
  //# sourceMappingURL=IModel.test.js.map