@itwin/core-backend 5.0.0-dev.11 → 5.0.0-dev.111

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 (1102) hide show
  1. package/CHANGELOG.md +90 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +15 -35
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +2 -0
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  7. package/lib/cjs/BisCoreSchema.d.ts.map +1 -1
  8. package/lib/cjs/BisCoreSchema.js +2 -0
  9. package/lib/cjs/BisCoreSchema.js.map +1 -1
  10. package/lib/cjs/BlobContainerService.d.ts +4 -4
  11. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  12. package/lib/cjs/BlobContainerService.js.map +1 -1
  13. package/lib/cjs/BriefcaseManager.d.ts +10 -0
  14. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  15. package/lib/cjs/BriefcaseManager.js +63 -20
  16. package/lib/cjs/BriefcaseManager.js.map +1 -1
  17. package/lib/cjs/CatalogDb.d.ts +103 -0
  18. package/lib/cjs/CatalogDb.d.ts.map +1 -0
  19. package/lib/cjs/CatalogDb.js +271 -0
  20. package/lib/cjs/CatalogDb.js.map +1 -0
  21. package/lib/cjs/Category.d.ts +37 -0
  22. package/lib/cjs/Category.d.ts.map +1 -1
  23. package/lib/cjs/Category.js +79 -1
  24. package/lib/cjs/Category.js.map +1 -1
  25. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  26. package/lib/cjs/ChangeSummaryManager.js +104 -29
  27. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  28. package/lib/cjs/ChangedElementsDb.d.ts +3 -3
  29. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
  30. package/lib/cjs/ChangedElementsDb.js +8 -7
  31. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  32. package/lib/cjs/ChangesetECAdaptor.d.ts +3 -3
  33. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  34. package/lib/cjs/ChangesetECAdaptor.js +274 -261
  35. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  36. package/lib/cjs/ChannelControl.js.map +1 -1
  37. package/lib/cjs/CheckpointManager.d.ts +12 -17
  38. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  39. package/lib/cjs/CheckpointManager.js +40 -92
  40. package/lib/cjs/CheckpointManager.js.map +1 -1
  41. package/lib/cjs/ClassRegistry.d.ts +46 -2
  42. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  43. package/lib/cjs/ClassRegistry.js +98 -42
  44. package/lib/cjs/ClassRegistry.js.map +1 -1
  45. package/lib/cjs/CloudSqlite.d.ts +104 -20
  46. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  47. package/lib/cjs/CloudSqlite.js +172 -54
  48. package/lib/cjs/CloudSqlite.js.map +1 -1
  49. package/lib/cjs/CodeService.d.ts +2 -0
  50. package/lib/cjs/CodeService.d.ts.map +1 -1
  51. package/lib/cjs/CodeService.js +4 -0
  52. package/lib/cjs/CodeService.js.map +1 -1
  53. package/lib/cjs/CodeSpecs.js +3 -2
  54. package/lib/cjs/CodeSpecs.js.map +1 -1
  55. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  56. package/lib/cjs/CustomViewState3dCreator.js +7 -6
  57. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  58. package/lib/cjs/DevTools.js +16 -16
  59. package/lib/cjs/DevTools.js.map +1 -1
  60. package/lib/cjs/DisplayStyle.d.ts +5 -0
  61. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  62. package/lib/cjs/DisplayStyle.js +29 -0
  63. package/lib/cjs/DisplayStyle.js.map +1 -1
  64. package/lib/cjs/ECDb.d.ts +53 -60
  65. package/lib/cjs/ECDb.d.ts.map +1 -1
  66. package/lib/cjs/ECDb.js +115 -73
  67. package/lib/cjs/ECDb.js.map +1 -1
  68. package/lib/cjs/ECSchemaXmlContext.d.ts +1 -1
  69. package/lib/cjs/ECSchemaXmlContext.js +2 -1
  70. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  71. package/lib/cjs/ECSqlStatement.d.ts +185 -4
  72. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  73. package/lib/cjs/ECSqlStatement.js +237 -9
  74. package/lib/cjs/ECSqlStatement.js.map +1 -1
  75. package/lib/cjs/Element.d.ts +194 -35
  76. package/lib/cjs/Element.d.ts.map +1 -1
  77. package/lib/cjs/Element.js +683 -57
  78. package/lib/cjs/Element.js.map +1 -1
  79. package/lib/cjs/ElementAspect.d.ts +0 -5
  80. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  81. package/lib/cjs/ElementAspect.js +25 -16
  82. package/lib/cjs/ElementAspect.js.map +1 -1
  83. package/lib/cjs/ElementGraphics.js.map +1 -1
  84. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  85. package/lib/cjs/ElementTreeWalker.js +17 -12
  86. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  87. package/lib/cjs/Entity.d.ts +91 -11
  88. package/lib/cjs/Entity.d.ts.map +1 -1
  89. package/lib/cjs/Entity.js +137 -16
  90. package/lib/cjs/Entity.js.map +1 -1
  91. package/lib/cjs/EntityReferences.js.map +1 -1
  92. package/lib/cjs/ExportGraphics.js +4 -0
  93. package/lib/cjs/ExportGraphics.js.map +1 -1
  94. package/lib/cjs/ExternalSource.js +22 -0
  95. package/lib/cjs/ExternalSource.js.map +1 -1
  96. package/lib/cjs/FontFile.d.ts +68 -0
  97. package/lib/cjs/FontFile.d.ts.map +1 -0
  98. package/lib/cjs/FontFile.js +36 -0
  99. package/lib/cjs/FontFile.js.map +1 -0
  100. package/lib/cjs/GeoCoordConfig.js +8 -8
  101. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  102. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  103. package/lib/cjs/GeometrySummary.js +53 -50
  104. package/lib/cjs/GeometrySummary.js.map +1 -1
  105. package/lib/cjs/IModelDb.d.ts +231 -108
  106. package/lib/cjs/IModelDb.d.ts.map +1 -1
  107. package/lib/cjs/IModelDb.js +516 -249
  108. package/lib/cjs/IModelDb.js.map +1 -1
  109. package/lib/cjs/IModelDbFonts.d.ts +54 -0
  110. package/lib/cjs/IModelDbFonts.d.ts.map +1 -0
  111. package/lib/cjs/{IModelCloneContext.js → IModelDbFonts.js} +2 -7
  112. package/lib/cjs/IModelDbFonts.js.map +1 -0
  113. package/lib/cjs/IModelElementCloneContext.d.ts +2 -0
  114. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  115. package/lib/cjs/IModelElementCloneContext.js +12 -1
  116. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  117. package/lib/cjs/IModelHost.d.ts +28 -15
  118. package/lib/cjs/IModelHost.d.ts.map +1 -1
  119. package/lib/cjs/IModelHost.js +82 -43
  120. package/lib/cjs/IModelHost.js.map +1 -1
  121. package/lib/cjs/IModelJsFs.d.ts.map +1 -1
  122. package/lib/cjs/IModelJsFs.js +17 -1
  123. package/lib/cjs/IModelJsFs.js.map +1 -1
  124. package/lib/cjs/ImageSourceConversion.d.ts +49 -0
  125. package/lib/cjs/ImageSourceConversion.d.ts.map +1 -0
  126. package/lib/cjs/ImageSourceConversion.js +37 -0
  127. package/lib/cjs/ImageSourceConversion.js.map +1 -0
  128. package/lib/cjs/IpcHost.d.ts.map +1 -1
  129. package/lib/cjs/IpcHost.js +19 -33
  130. package/lib/cjs/IpcHost.js.map +1 -1
  131. package/lib/cjs/LineStyle.js.map +1 -1
  132. package/lib/cjs/LocalHub.js +9 -3
  133. package/lib/cjs/LocalHub.js.map +1 -1
  134. package/lib/cjs/LocalhostIpcHost.js +5 -6
  135. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  136. package/lib/cjs/LockControl.js.map +1 -1
  137. package/lib/cjs/Material.d.ts +19 -0
  138. package/lib/cjs/Material.d.ts.map +1 -1
  139. package/lib/cjs/Material.js +69 -0
  140. package/lib/cjs/Material.js.map +1 -1
  141. package/lib/cjs/Model.d.ts +43 -7
  142. package/lib/cjs/Model.d.ts.map +1 -1
  143. package/lib/cjs/Model.js +120 -7
  144. package/lib/cjs/Model.js.map +1 -1
  145. package/lib/cjs/NativeAppStorage.js +5 -3
  146. package/lib/cjs/NativeAppStorage.js.map +1 -1
  147. package/lib/cjs/NativeHost.d.ts.map +1 -1
  148. package/lib/cjs/NativeHost.js +10 -4
  149. package/lib/cjs/NativeHost.js.map +1 -1
  150. package/lib/cjs/NavigationRelationship.js +25 -25
  151. package/lib/cjs/NavigationRelationship.js.map +1 -1
  152. package/lib/cjs/PromiseMemoizer.d.ts +2 -3
  153. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  154. package/lib/cjs/PromiseMemoizer.js +12 -5
  155. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  156. package/lib/cjs/PropertyStore.js +1 -4
  157. package/lib/cjs/PropertyStore.js.map +1 -1
  158. package/lib/cjs/Relationship.d.ts.map +1 -1
  159. package/lib/cjs/Relationship.js +15 -1
  160. package/lib/cjs/Relationship.js.map +1 -1
  161. package/lib/cjs/RpcBackend.js.map +1 -1
  162. package/lib/cjs/SQLiteDb.d.ts +6 -4
  163. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  164. package/lib/cjs/SQLiteDb.js +79 -19
  165. package/lib/cjs/SQLiteDb.js.map +1 -1
  166. package/lib/cjs/Schema.d.ts +25 -1
  167. package/lib/cjs/Schema.d.ts.map +1 -1
  168. package/lib/cjs/Schema.js +44 -8
  169. package/lib/cjs/Schema.js.map +1 -1
  170. package/lib/cjs/SchemaSync.js +1 -4
  171. package/lib/cjs/SchemaSync.js.map +1 -1
  172. package/lib/cjs/SchemaUtils.js.map +1 -1
  173. package/lib/cjs/SheetIndex.js +6 -0
  174. package/lib/cjs/SheetIndex.js.map +1 -1
  175. package/lib/cjs/SqliteChangesetReader.d.ts +11 -3
  176. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  177. package/lib/cjs/SqliteChangesetReader.js +21 -5
  178. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  179. package/lib/cjs/SqliteStatement.d.ts +4 -2
  180. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  181. package/lib/cjs/SqliteStatement.js +13 -1
  182. package/lib/cjs/SqliteStatement.js.map +1 -1
  183. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  184. package/lib/cjs/TextAnnotationGeometry.d.ts.map +1 -1
  185. package/lib/cjs/TextAnnotationGeometry.js +38 -11
  186. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  187. package/lib/cjs/TextAnnotationLayout.d.ts +10 -3
  188. package/lib/cjs/TextAnnotationLayout.d.ts.map +1 -1
  189. package/lib/cjs/TextAnnotationLayout.js +56 -18
  190. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  191. package/lib/cjs/Texture.js +3 -0
  192. package/lib/cjs/Texture.js.map +1 -1
  193. package/lib/cjs/TileStorage.js +6 -1
  194. package/lib/cjs/TileStorage.js.map +1 -1
  195. package/lib/cjs/TxnManager.d.ts +55 -4
  196. package/lib/cjs/TxnManager.d.ts.map +1 -1
  197. package/lib/cjs/TxnManager.js +235 -58
  198. package/lib/cjs/TxnManager.js.map +1 -1
  199. package/lib/cjs/ViewDefinition.d.ts +106 -6
  200. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  201. package/lib/cjs/ViewDefinition.js +289 -26
  202. package/lib/cjs/ViewDefinition.js.map +1 -1
  203. package/lib/cjs/ViewStateHydrator.d.ts +0 -1
  204. package/lib/cjs/ViewStateHydrator.d.ts.map +1 -1
  205. package/lib/cjs/ViewStateHydrator.js +4 -14
  206. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  207. package/lib/cjs/ViewStore.d.ts.map +1 -1
  208. package/lib/cjs/ViewStore.js +32 -29
  209. package/lib/cjs/ViewStore.js.map +1 -1
  210. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  211. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  212. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  213. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  214. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  215. package/lib/cjs/core-backend.d.ts +8 -2
  216. package/lib/cjs/core-backend.d.ts.map +1 -1
  217. package/lib/cjs/core-backend.js +8 -2
  218. package/lib/cjs/core-backend.js.map +1 -1
  219. package/lib/cjs/domains/FunctionalElements.js +1 -1
  220. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  221. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  222. package/lib/cjs/domains/GenericElements.js.map +1 -1
  223. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  224. package/lib/cjs/internal/ChangesetConflictArgs.d.ts +40 -2
  225. package/lib/cjs/internal/ChangesetConflictArgs.d.ts.map +1 -1
  226. package/lib/cjs/internal/ChangesetConflictArgs.js +101 -0
  227. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  228. package/lib/cjs/internal/ChannelAdmin.d.ts +1 -1
  229. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  230. package/lib/cjs/internal/ChannelAdmin.js +16 -13
  231. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  232. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  233. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  234. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  235. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  236. package/lib/cjs/internal/FontFileImpl.d.ts +34 -0
  237. package/lib/cjs/internal/FontFileImpl.d.ts.map +1 -0
  238. package/lib/cjs/internal/FontFileImpl.js +143 -0
  239. package/lib/cjs/internal/FontFileImpl.js.map +1 -0
  240. package/lib/cjs/{HubMock.d.ts → internal/HubMock.d.ts} +6 -7
  241. package/lib/cjs/internal/HubMock.d.ts.map +1 -0
  242. package/lib/cjs/{HubMock.js → internal/HubMock.js} +40 -15
  243. package/lib/cjs/internal/HubMock.js.map +1 -0
  244. package/lib/cjs/internal/IModelDbFontsImpl.d.ts +7 -0
  245. package/lib/cjs/internal/IModelDbFontsImpl.d.ts.map +1 -0
  246. package/lib/cjs/internal/IModelDbFontsImpl.js +186 -0
  247. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -0
  248. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  249. package/lib/cjs/internal/NoLocks.js +2 -5
  250. package/lib/cjs/internal/NoLocks.js.map +1 -1
  251. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  252. package/lib/cjs/internal/ServerBasedLocks.js +6 -6
  253. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  254. package/lib/cjs/internal/Symbols.d.ts +9 -0
  255. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  256. package/lib/cjs/internal/Symbols.js +10 -1
  257. package/lib/cjs/internal/Symbols.js.map +1 -1
  258. package/lib/cjs/internal/cross-package.js.map +1 -1
  259. package/lib/cjs/internal/workspace/SettingsImpl.js +6 -9
  260. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  261. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +8 -12
  262. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  263. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +2 -16
  264. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  265. package/lib/cjs/internal/workspace/WorkspaceImpl.js +57 -121
  266. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  267. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +1 -4
  268. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  269. package/lib/cjs/rpc/multipart.d.ts.map +1 -1
  270. package/lib/cjs/rpc/multipart.js +2 -1
  271. package/lib/cjs/rpc/multipart.js.map +1 -1
  272. package/lib/cjs/rpc/tracing.js +2 -2
  273. package/lib/cjs/rpc/tracing.js.map +1 -1
  274. package/lib/cjs/rpc/web/logging.js.map +1 -1
  275. package/lib/cjs/rpc/web/request.d.ts.map +1 -1
  276. package/lib/cjs/rpc/web/request.js +2 -1
  277. package/lib/cjs/rpc/web/request.js.map +1 -1
  278. package/lib/cjs/rpc/web/response.js.map +1 -1
  279. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  280. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  281. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +8 -4
  282. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  283. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +5 -3
  284. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  285. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  286. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +15 -25
  287. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  288. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  289. package/lib/cjs/workspace/Settings.js.map +1 -1
  290. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  291. package/lib/cjs/workspace/Workspace.d.ts +6 -13
  292. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  293. package/lib/cjs/workspace/Workspace.js.map +1 -1
  294. package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -7
  295. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  296. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  297. package/lib/esm/BackendHubAccess.d.ts +209 -0
  298. package/lib/esm/BackendHubAccess.d.ts.map +1 -0
  299. package/lib/esm/BackendHubAccess.js +41 -0
  300. package/lib/esm/BackendHubAccess.js.map +1 -0
  301. package/lib/esm/BackendLoggerCategory.d.ts +88 -0
  302. package/lib/esm/BackendLoggerCategory.d.ts.map +1 -0
  303. package/lib/esm/BackendLoggerCategory.js +93 -0
  304. package/lib/esm/BackendLoggerCategory.js.map +1 -0
  305. package/lib/esm/BisCoreSchema.d.ts +22 -0
  306. package/lib/esm/BisCoreSchema.d.ts.map +1 -0
  307. package/lib/esm/BisCoreSchema.js +61 -0
  308. package/lib/esm/BisCoreSchema.js.map +1 -0
  309. package/lib/esm/BlobContainerService.d.ts +159 -0
  310. package/lib/esm/BlobContainerService.d.ts.map +1 -0
  311. package/lib/esm/BlobContainerService.js +15 -0
  312. package/lib/esm/BlobContainerService.js.map +1 -0
  313. package/lib/esm/BriefcaseManager.d.ts +213 -0
  314. package/lib/esm/BriefcaseManager.d.ts.map +1 -0
  315. package/lib/esm/BriefcaseManager.js +520 -0
  316. package/lib/esm/BriefcaseManager.js.map +1 -0
  317. package/lib/esm/CatalogDb.d.ts +103 -0
  318. package/lib/esm/CatalogDb.d.ts.map +1 -0
  319. package/lib/esm/CatalogDb.js +267 -0
  320. package/lib/esm/CatalogDb.js.map +1 -0
  321. package/lib/esm/Category.d.ts +173 -0
  322. package/lib/esm/Category.d.ts.map +1 -0
  323. package/lib/esm/Category.js +297 -0
  324. package/lib/esm/Category.js.map +1 -0
  325. package/lib/esm/ChangeSummaryManager.d.ts +161 -0
  326. package/lib/esm/ChangeSummaryManager.d.ts.map +1 -0
  327. package/lib/esm/ChangeSummaryManager.js +421 -0
  328. package/lib/esm/ChangeSummaryManager.js.map +1 -0
  329. package/lib/esm/ChangedElementsDb.d.ts +101 -0
  330. package/lib/esm/ChangedElementsDb.d.ts.map +1 -0
  331. package/lib/esm/ChangedElementsDb.js +165 -0
  332. package/lib/esm/ChangedElementsDb.js.map +1 -0
  333. package/lib/esm/ChangesetECAdaptor.d.ts +203 -0
  334. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -0
  335. package/lib/esm/ChangesetECAdaptor.js +815 -0
  336. package/lib/esm/ChangesetECAdaptor.js.map +1 -0
  337. package/lib/esm/ChannelControl.d.ts +68 -0
  338. package/lib/esm/ChannelControl.d.ts.map +1 -0
  339. package/lib/esm/ChannelControl.js +15 -0
  340. package/lib/esm/ChannelControl.js.map +1 -0
  341. package/lib/esm/CheckpointManager.d.ts +118 -0
  342. package/lib/esm/CheckpointManager.d.ts.map +1 -0
  343. package/lib/esm/CheckpointManager.js +321 -0
  344. package/lib/esm/CheckpointManager.js.map +1 -0
  345. package/lib/esm/ClassRegistry.d.ts +134 -0
  346. package/lib/esm/ClassRegistry.d.ts.map +1 -0
  347. package/lib/esm/ClassRegistry.js +324 -0
  348. package/lib/esm/ClassRegistry.js.map +1 -0
  349. package/lib/esm/CloudSqlite.d.ts +766 -0
  350. package/lib/esm/CloudSqlite.d.ts.map +1 -0
  351. package/lib/esm/CloudSqlite.js +622 -0
  352. package/lib/esm/CloudSqlite.js.map +1 -0
  353. package/lib/esm/CodeService.d.ts +402 -0
  354. package/lib/esm/CodeService.d.ts.map +1 -0
  355. package/lib/esm/CodeService.js +65 -0
  356. package/lib/esm/CodeService.js.map +1 -0
  357. package/lib/esm/CodeSpecs.d.ts +59 -0
  358. package/lib/esm/CodeSpecs.d.ts.map +1 -0
  359. package/lib/esm/CodeSpecs.js +152 -0
  360. package/lib/esm/CodeSpecs.js.map +1 -0
  361. package/lib/esm/ConcurrentQuery.d.ts +14 -0
  362. package/lib/esm/ConcurrentQuery.d.ts.map +1 -0
  363. package/lib/esm/ConcurrentQuery.js +33 -0
  364. package/lib/esm/ConcurrentQuery.js.map +1 -0
  365. package/lib/esm/CustomViewState3dCreator.d.ts +22 -0
  366. package/lib/esm/CustomViewState3dCreator.d.ts.map +1 -0
  367. package/lib/esm/CustomViewState3dCreator.js +78 -0
  368. package/lib/esm/CustomViewState3dCreator.js.map +1 -0
  369. package/lib/esm/DevTools.d.ts +73 -0
  370. package/lib/esm/DevTools.d.ts.map +1 -0
  371. package/lib/esm/DevTools.js +153 -0
  372. package/lib/esm/DevTools.js.map +1 -0
  373. package/lib/esm/DisplayStyle.d.ts +104 -0
  374. package/lib/esm/DisplayStyle.d.ts.map +1 -0
  375. package/lib/esm/DisplayStyle.js +291 -0
  376. package/lib/esm/DisplayStyle.js.map +1 -0
  377. package/lib/esm/ECDb.d.ts +206 -0
  378. package/lib/esm/ECDb.d.ts.map +1 -0
  379. package/lib/esm/ECDb.js +410 -0
  380. package/lib/esm/ECDb.js.map +1 -0
  381. package/lib/esm/ECSchemaXmlContext.d.ts +46 -0
  382. package/lib/esm/ECSchemaXmlContext.d.ts.map +1 -0
  383. package/lib/esm/ECSchemaXmlContext.js +66 -0
  384. package/lib/esm/ECSchemaXmlContext.js.map +1 -0
  385. package/lib/esm/ECSqlStatement.d.ts +671 -0
  386. package/lib/esm/ECSqlStatement.d.ts.map +1 -0
  387. package/lib/esm/ECSqlStatement.js +1028 -0
  388. package/lib/esm/ECSqlStatement.js.map +1 -0
  389. package/lib/esm/Element.d.ts +1155 -0
  390. package/lib/esm/Element.d.ts.map +1 -0
  391. package/lib/esm/Element.js +1876 -0
  392. package/lib/esm/Element.js.map +1 -0
  393. package/lib/esm/ElementAspect.d.ts +164 -0
  394. package/lib/esm/ElementAspect.d.ts.map +1 -0
  395. package/lib/esm/ElementAspect.js +205 -0
  396. package/lib/esm/ElementAspect.js.map +1 -0
  397. package/lib/esm/ElementGraphics.d.ts +7 -0
  398. package/lib/esm/ElementGraphics.d.ts.map +1 -0
  399. package/lib/esm/ElementGraphics.js +36 -0
  400. package/lib/esm/ElementGraphics.js.map +1 -0
  401. package/lib/esm/ElementTreeWalker.d.ts +182 -0
  402. package/lib/esm/ElementTreeWalker.d.ts.map +1 -0
  403. package/lib/esm/ElementTreeWalker.js +425 -0
  404. package/lib/esm/ElementTreeWalker.js.map +1 -0
  405. package/lib/esm/Entity.d.ts +186 -0
  406. package/lib/esm/Entity.d.ts.map +1 -0
  407. package/lib/esm/Entity.js +244 -0
  408. package/lib/esm/Entity.js.map +1 -0
  409. package/lib/esm/EntityReferences.d.ts +50 -0
  410. package/lib/esm/EntityReferences.d.ts.map +1 -0
  411. package/lib/esm/EntityReferences.js +92 -0
  412. package/lib/esm/EntityReferences.js.map +1 -0
  413. package/lib/esm/ExportGraphics.d.ts +318 -0
  414. package/lib/esm/ExportGraphics.d.ts.map +1 -0
  415. package/lib/esm/ExportGraphics.js +209 -0
  416. package/lib/esm/ExportGraphics.js.map +1 -0
  417. package/lib/esm/ExternalSource.d.ts +89 -0
  418. package/lib/esm/ExternalSource.d.ts.map +1 -0
  419. package/lib/esm/ExternalSource.js +139 -0
  420. package/lib/esm/ExternalSource.js.map +1 -0
  421. package/lib/esm/FontFile.d.ts +68 -0
  422. package/lib/esm/FontFile.d.ts.map +1 -0
  423. package/lib/esm/FontFile.js +33 -0
  424. package/lib/esm/FontFile.js.map +1 -0
  425. package/lib/esm/GeoCoordConfig.d.ts +30 -0
  426. package/lib/esm/GeoCoordConfig.d.ts.map +1 -0
  427. package/lib/esm/GeoCoordConfig.js +78 -0
  428. package/lib/esm/GeoCoordConfig.js.map +1 -0
  429. package/lib/esm/GeographicCRSServices.d.ts +40 -0
  430. package/lib/esm/GeographicCRSServices.d.ts.map +1 -0
  431. package/lib/esm/GeographicCRSServices.js +17 -0
  432. package/lib/esm/GeographicCRSServices.js.map +1 -0
  433. package/lib/esm/GeometrySummary.d.ts +5 -0
  434. package/lib/esm/GeometrySummary.d.ts.map +1 -0
  435. package/lib/esm/GeometrySummary.js +381 -0
  436. package/lib/esm/GeometrySummary.js.map +1 -0
  437. package/lib/esm/IModelDb.d.ts +1390 -0
  438. package/lib/esm/IModelDb.d.ts.map +1 -0
  439. package/lib/esm/IModelDb.js +3327 -0
  440. package/lib/esm/IModelDb.js.map +1 -0
  441. package/lib/esm/IModelDbFonts.d.ts +54 -0
  442. package/lib/esm/IModelDbFonts.d.ts.map +1 -0
  443. package/lib/esm/IModelDbFonts.js +9 -0
  444. package/lib/esm/IModelDbFonts.js.map +1 -0
  445. package/lib/esm/IModelElementCloneContext.d.ts +92 -0
  446. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -0
  447. package/lib/esm/IModelElementCloneContext.js +168 -0
  448. package/lib/esm/IModelElementCloneContext.js.map +1 -0
  449. package/lib/esm/IModelHost.d.ts +400 -0
  450. package/lib/esm/IModelHost.d.ts.map +1 -0
  451. package/lib/esm/IModelHost.js +508 -0
  452. package/lib/esm/IModelHost.js.map +1 -0
  453. package/lib/esm/IModelJsFs.d.ts +62 -0
  454. package/lib/esm/IModelJsFs.d.ts.map +1 -0
  455. package/lib/esm/IModelJsFs.js +151 -0
  456. package/lib/esm/IModelJsFs.js.map +1 -0
  457. package/lib/esm/ImageSourceConversion.d.ts +49 -0
  458. package/lib/esm/ImageSourceConversion.d.ts.map +1 -0
  459. package/lib/esm/ImageSourceConversion.js +33 -0
  460. package/lib/esm/ImageSourceConversion.js.map +1 -0
  461. package/lib/esm/IpcHost.d.ts +111 -0
  462. package/lib/esm/IpcHost.d.ts.map +1 -0
  463. package/lib/esm/IpcHost.js +292 -0
  464. package/lib/esm/IpcHost.js.map +1 -0
  465. package/lib/esm/LineStyle.d.ts +312 -0
  466. package/lib/esm/LineStyle.d.ts.map +1 -0
  467. package/lib/esm/LineStyle.js +293 -0
  468. package/lib/esm/LineStyle.js.map +1 -0
  469. package/lib/esm/LocalHub.d.ts +163 -0
  470. package/lib/esm/LocalHub.d.ts.map +1 -0
  471. package/lib/esm/LocalHub.js +583 -0
  472. package/lib/esm/LocalHub.js.map +1 -0
  473. package/lib/esm/LocalhostIpcHost.d.ts +22 -0
  474. package/lib/esm/LocalhostIpcHost.d.ts.map +1 -0
  475. package/lib/esm/LocalhostIpcHost.js +74 -0
  476. package/lib/esm/LocalhostIpcHost.js.map +1 -0
  477. package/lib/esm/LockControl.d.ts +73 -0
  478. package/lib/esm/LockControl.d.ts.map +1 -0
  479. package/lib/esm/LockControl.js +9 -0
  480. package/lib/esm/LockControl.js.map +1 -0
  481. package/lib/esm/Material.d.ts +150 -0
  482. package/lib/esm/Material.d.ts.map +1 -0
  483. package/lib/esm/Material.js +264 -0
  484. package/lib/esm/Material.js.map +1 -0
  485. package/lib/esm/Model.d.ts +411 -0
  486. package/lib/esm/Model.d.ts.map +1 -0
  487. package/lib/esm/Model.js +572 -0
  488. package/lib/esm/Model.js.map +1 -0
  489. package/lib/esm/NativeAppStorage.d.ts +52 -0
  490. package/lib/esm/NativeAppStorage.d.ts.map +1 -0
  491. package/lib/esm/NativeAppStorage.js +205 -0
  492. package/lib/esm/NativeAppStorage.js.map +1 -0
  493. package/lib/esm/NativeHost.d.ts +53 -0
  494. package/lib/esm/NativeHost.d.ts.map +1 -0
  495. package/lib/esm/NativeHost.js +161 -0
  496. package/lib/esm/NativeHost.js.map +1 -0
  497. package/lib/esm/NavigationRelationship.d.ts +185 -0
  498. package/lib/esm/NavigationRelationship.d.ts.map +1 -0
  499. package/lib/esm/NavigationRelationship.js +238 -0
  500. package/lib/esm/NavigationRelationship.js.map +1 -0
  501. package/lib/esm/PromiseMemoizer.d.ts +48 -0
  502. package/lib/esm/PromiseMemoizer.d.ts.map +1 -0
  503. package/lib/esm/PromiseMemoizer.js +101 -0
  504. package/lib/esm/PromiseMemoizer.js.map +1 -0
  505. package/lib/esm/PropertyStore.d.ts +134 -0
  506. package/lib/esm/PropertyStore.d.ts.map +1 -0
  507. package/lib/esm/PropertyStore.js +177 -0
  508. package/lib/esm/PropertyStore.js.map +1 -0
  509. package/lib/esm/Relationship.d.ts +399 -0
  510. package/lib/esm/Relationship.d.ts.map +1 -0
  511. package/lib/esm/Relationship.js +476 -0
  512. package/lib/esm/Relationship.js.map +1 -0
  513. package/lib/esm/RpcBackend.d.ts +6 -0
  514. package/lib/esm/RpcBackend.d.ts.map +1 -0
  515. package/lib/esm/RpcBackend.js +28 -0
  516. package/lib/esm/RpcBackend.js.map +1 -0
  517. package/lib/esm/SQLiteDb.d.ts +324 -0
  518. package/lib/esm/SQLiteDb.d.ts.map +1 -0
  519. package/lib/esm/SQLiteDb.js +380 -0
  520. package/lib/esm/SQLiteDb.js.map +1 -0
  521. package/lib/esm/Schema.d.ts +79 -0
  522. package/lib/esm/Schema.d.ts.map +1 -0
  523. package/lib/esm/Schema.js +113 -0
  524. package/lib/esm/Schema.js.map +1 -0
  525. package/lib/esm/SchemaSync.d.ts +47 -0
  526. package/lib/esm/SchemaSync.d.ts.map +1 -0
  527. package/lib/esm/SchemaSync.js +148 -0
  528. package/lib/esm/SchemaSync.js.map +1 -0
  529. package/lib/esm/SchemaUtils.d.ts +19 -0
  530. package/lib/esm/SchemaUtils.d.ts.map +1 -0
  531. package/lib/esm/SchemaUtils.js +37 -0
  532. package/lib/esm/SchemaUtils.js.map +1 -0
  533. package/lib/esm/SheetIndex.d.ts +148 -0
  534. package/lib/esm/SheetIndex.d.ts.map +1 -0
  535. package/lib/esm/SheetIndex.js +228 -0
  536. package/lib/esm/SheetIndex.js.map +1 -0
  537. package/lib/esm/SqliteChangesetReader.d.ts +278 -0
  538. package/lib/esm/SqliteChangesetReader.d.ts.map +1 -0
  539. package/lib/esm/SqliteChangesetReader.js +337 -0
  540. package/lib/esm/SqliteChangesetReader.js.map +1 -0
  541. package/lib/esm/SqliteStatement.d.ts +375 -0
  542. package/lib/esm/SqliteStatement.d.ts.map +1 -0
  543. package/lib/esm/SqliteStatement.js +615 -0
  544. package/lib/esm/SqliteStatement.js.map +1 -0
  545. package/lib/esm/TextAnnotationElement.d.ts +54 -0
  546. package/lib/esm/TextAnnotationElement.d.ts.map +1 -0
  547. package/lib/esm/TextAnnotationElement.js +89 -0
  548. package/lib/esm/TextAnnotationElement.js.map +1 -0
  549. package/lib/esm/TextAnnotationGeometry.d.ts +32 -0
  550. package/lib/esm/TextAnnotationGeometry.d.ts.map +1 -0
  551. package/lib/esm/TextAnnotationGeometry.js +181 -0
  552. package/lib/esm/TextAnnotationGeometry.js.map +1 -0
  553. package/lib/esm/TextAnnotationLayout.d.ts +177 -0
  554. package/lib/esm/TextAnnotationLayout.d.ts.map +1 -0
  555. package/lib/esm/TextAnnotationLayout.js +513 -0
  556. package/lib/esm/TextAnnotationLayout.js.map +1 -0
  557. package/lib/esm/Texture.d.ts +58 -0
  558. package/lib/esm/Texture.d.ts.map +1 -0
  559. package/lib/esm/Texture.js +81 -0
  560. package/lib/esm/Texture.js.map +1 -0
  561. package/lib/esm/TileStorage.d.ts +59 -0
  562. package/lib/esm/TileStorage.d.ts.map +1 -0
  563. package/lib/esm/TileStorage.js +158 -0
  564. package/lib/esm/TileStorage.js.map +1 -0
  565. package/lib/esm/TxnManager.d.ts +296 -0
  566. package/lib/esm/TxnManager.d.ts.map +1 -0
  567. package/lib/esm/TxnManager.js +620 -0
  568. package/lib/esm/TxnManager.js.map +1 -0
  569. package/lib/esm/ViewDefinition.d.ts +492 -0
  570. package/lib/esm/ViewDefinition.d.ts.map +1 -0
  571. package/lib/esm/ViewDefinition.js +846 -0
  572. package/lib/esm/ViewDefinition.js.map +1 -0
  573. package/lib/esm/ViewStateHydrator.d.ts +14 -0
  574. package/lib/esm/ViewStateHydrator.d.ts.map +1 -0
  575. package/lib/esm/ViewStateHydrator.js +89 -0
  576. package/lib/esm/ViewStateHydrator.js.map +1 -0
  577. package/lib/esm/ViewStore.d.ts +502 -0
  578. package/lib/esm/ViewStore.d.ts.map +1 -0
  579. package/lib/esm/ViewStore.js +1260 -0
  580. package/lib/esm/ViewStore.js.map +1 -0
  581. package/lib/esm/core-backend.d.ts +183 -0
  582. package/lib/esm/core-backend.d.ts.map +1 -0
  583. package/lib/esm/core-backend.js +187 -0
  584. package/lib/esm/core-backend.js.map +1 -0
  585. package/lib/esm/domains/FunctionalElements.d.ts +86 -0
  586. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -0
  587. package/lib/esm/domains/FunctionalElements.js +117 -0
  588. package/lib/esm/domains/FunctionalElements.js.map +1 -0
  589. package/lib/esm/domains/FunctionalSchema.d.ts +14 -0
  590. package/lib/esm/domains/FunctionalSchema.d.ts.map +1 -0
  591. package/lib/esm/domains/FunctionalSchema.js +37 -0
  592. package/lib/esm/domains/FunctionalSchema.js.map +1 -0
  593. package/lib/esm/domains/GenericElements.d.ts +160 -0
  594. package/lib/esm/domains/GenericElements.d.ts.map +1 -0
  595. package/lib/esm/domains/GenericElements.js +225 -0
  596. package/lib/esm/domains/GenericElements.js.map +1 -0
  597. package/lib/esm/domains/GenericSchema.d.ts +11 -0
  598. package/lib/esm/domains/GenericSchema.d.ts.map +1 -0
  599. package/lib/esm/domains/GenericSchema.js +25 -0
  600. package/lib/esm/domains/GenericSchema.js.map +1 -0
  601. package/lib/esm/internal/ChangesetConflictArgs.d.ts +62 -0
  602. package/lib/esm/internal/ChangesetConflictArgs.d.ts.map +1 -0
  603. package/lib/esm/internal/ChangesetConflictArgs.js +104 -0
  604. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -0
  605. package/lib/esm/internal/ChannelAdmin.d.ts +34 -0
  606. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -0
  607. package/lib/esm/internal/ChannelAdmin.js +116 -0
  608. package/lib/esm/internal/ChannelAdmin.js.map +1 -0
  609. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  610. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  611. package/lib/esm/internal/ElementLRUCache.js +116 -0
  612. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  613. package/lib/esm/internal/FontFileImpl.d.ts +34 -0
  614. package/lib/esm/internal/FontFileImpl.d.ts.map +1 -0
  615. package/lib/esm/internal/FontFileImpl.js +135 -0
  616. package/lib/esm/internal/FontFileImpl.js.map +1 -0
  617. package/lib/esm/internal/HubMock.d.ts +94 -0
  618. package/lib/esm/internal/HubMock.d.ts.map +1 -0
  619. package/lib/esm/internal/HubMock.js +242 -0
  620. package/lib/esm/internal/HubMock.js.map +1 -0
  621. package/lib/esm/internal/IModelDbFontsImpl.d.ts +7 -0
  622. package/lib/esm/internal/IModelDbFontsImpl.d.ts.map +1 -0
  623. package/lib/esm/internal/IModelDbFontsImpl.js +183 -0
  624. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -0
  625. package/lib/esm/internal/NativePlatform.d.ts +15 -0
  626. package/lib/esm/internal/NativePlatform.d.ts.map +1 -0
  627. package/lib/esm/internal/NativePlatform.js +43 -0
  628. package/lib/esm/internal/NativePlatform.js.map +1 -0
  629. package/lib/esm/internal/NoLocks.d.ts +6 -0
  630. package/lib/esm/internal/NoLocks.d.ts.map +1 -0
  631. package/lib/esm/internal/NoLocks.js +24 -0
  632. package/lib/esm/internal/NoLocks.js.map +1 -0
  633. package/lib/esm/internal/ServerBasedLocks.d.ts +52 -0
  634. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -0
  635. package/lib/esm/internal/ServerBasedLocks.js +175 -0
  636. package/lib/esm/internal/ServerBasedLocks.js.map +1 -0
  637. package/lib/esm/internal/Symbols.d.ts +20 -0
  638. package/lib/esm/internal/Symbols.d.ts.map +1 -0
  639. package/lib/esm/internal/Symbols.js +27 -0
  640. package/lib/esm/internal/Symbols.js.map +1 -0
  641. package/lib/esm/internal/cross-package.d.ts +4 -0
  642. package/lib/esm/internal/cross-package.d.ts.map +1 -0
  643. package/lib/esm/internal/cross-package.js +8 -0
  644. package/lib/esm/internal/cross-package.js.map +1 -0
  645. package/lib/esm/internal/workspace/SettingsImpl.d.ts +43 -0
  646. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -0
  647. package/lib/esm/internal/workspace/SettingsImpl.js +154 -0
  648. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -0
  649. package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
  650. package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
  651. package/lib/esm/internal/workspace/SettingsSchemasImpl.js +268 -0
  652. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -0
  653. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +27 -0
  654. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
  655. package/lib/esm/internal/workspace/WorkspaceImpl.js +627 -0
  656. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -0
  657. package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
  658. package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
  659. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js +35 -0
  660. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
  661. package/lib/esm/rpc/multipart.d.ts +12 -0
  662. package/lib/esm/rpc/multipart.d.ts.map +1 -0
  663. package/lib/esm/rpc/multipart.js +67 -0
  664. package/lib/esm/rpc/multipart.js.map +1 -0
  665. package/lib/esm/rpc/tracing.d.ts +29 -0
  666. package/lib/esm/rpc/tracing.d.ts.map +1 -0
  667. package/lib/esm/rpc/tracing.js +71 -0
  668. package/lib/esm/rpc/tracing.js.map +1 -0
  669. package/lib/esm/rpc/web/logging.d.ts +10 -0
  670. package/lib/esm/rpc/web/logging.d.ts.map +1 -0
  671. package/lib/esm/rpc/web/logging.js +41 -0
  672. package/lib/esm/rpc/web/logging.js.map +1 -0
  673. package/lib/esm/rpc/web/request.d.ts +7 -0
  674. package/lib/esm/rpc/web/request.d.ts.map +1 -0
  675. package/lib/esm/rpc/web/request.js +71 -0
  676. package/lib/esm/rpc/web/request.js.map +1 -0
  677. package/lib/esm/rpc/web/response.d.ts +7 -0
  678. package/lib/esm/rpc/web/response.d.ts.map +1 -0
  679. package/lib/esm/rpc/web/response.js +136 -0
  680. package/lib/esm/rpc/web/response.js.map +1 -0
  681. package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts +16 -0
  682. package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts.map +1 -0
  683. package/lib/esm/rpc-impl/DevToolsRpcImpl.js +29 -0
  684. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -0
  685. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +51 -0
  686. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -0
  687. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +314 -0
  688. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -0
  689. package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts +21 -0
  690. package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -0
  691. package/lib/esm/rpc-impl/IModelTileRpcImpl.js +193 -0
  692. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -0
  693. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +45 -0
  694. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -0
  695. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +155 -0
  696. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -0
  697. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +18 -0
  698. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts.map +1 -0
  699. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +41 -0
  700. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -0
  701. package/lib/esm/test/AdvancedEqual.d.ts +38 -0
  702. package/lib/esm/test/AdvancedEqual.d.ts.map +1 -0
  703. package/lib/esm/test/AdvancedEqual.js +67 -0
  704. package/lib/esm/test/AdvancedEqual.js.map +1 -0
  705. package/lib/esm/test/AttachDb.test.d.ts +2 -0
  706. package/lib/esm/test/AttachDb.test.d.ts.map +1 -0
  707. package/lib/esm/test/AttachDb.test.js +157 -0
  708. package/lib/esm/test/AttachDb.test.js.map +1 -0
  709. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  710. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  711. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  712. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  713. package/lib/esm/test/GeometryTestUtil.d.ts +7 -0
  714. package/lib/esm/test/GeometryTestUtil.d.ts.map +1 -0
  715. package/lib/esm/test/GeometryTestUtil.js +25 -0
  716. package/lib/esm/test/GeometryTestUtil.js.map +1 -0
  717. package/lib/esm/test/IModelHost.test.d.ts +2 -0
  718. package/lib/esm/test/IModelHost.test.d.ts.map +1 -0
  719. package/lib/esm/test/IModelHost.test.js +187 -0
  720. package/lib/esm/test/IModelHost.test.js.map +1 -0
  721. package/lib/esm/test/IModelTestUtils.d.ts +177 -0
  722. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -0
  723. package/lib/esm/test/IModelTestUtils.js +1146 -0
  724. package/lib/esm/test/IModelTestUtils.js.map +1 -0
  725. package/lib/esm/test/ImageSourceConversion.test.d.ts +2 -0
  726. package/lib/esm/test/ImageSourceConversion.test.d.ts.map +1 -0
  727. package/lib/esm/test/ImageSourceConversion.test.js +171 -0
  728. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -0
  729. package/lib/esm/test/IpcHost.test.d.ts +2 -0
  730. package/lib/esm/test/IpcHost.test.d.ts.map +1 -0
  731. package/lib/esm/test/IpcHost.test.js +55 -0
  732. package/lib/esm/test/IpcHost.test.js.map +1 -0
  733. package/lib/esm/test/KnownTestLocations.d.ts +7 -0
  734. package/lib/esm/test/KnownTestLocations.d.ts.map +1 -0
  735. package/lib/esm/test/KnownTestLocations.js +27 -0
  736. package/lib/esm/test/KnownTestLocations.js.map +1 -0
  737. package/lib/esm/test/PrintElementTree.d.ts +7 -0
  738. package/lib/esm/test/PrintElementTree.d.ts.map +1 -0
  739. package/lib/esm/test/PrintElementTree.js +36 -0
  740. package/lib/esm/test/PrintElementTree.js.map +1 -0
  741. package/lib/esm/test/PropertyDb.test.d.ts +2 -0
  742. package/lib/esm/test/PropertyDb.test.d.ts.map +1 -0
  743. package/lib/esm/test/PropertyDb.test.js +71 -0
  744. package/lib/esm/test/PropertyDb.test.js.map +1 -0
  745. package/lib/esm/test/RevisionUtility.d.ts +33 -0
  746. package/lib/esm/test/RevisionUtility.d.ts.map +1 -0
  747. package/lib/esm/test/RevisionUtility.js +52 -0
  748. package/lib/esm/test/RevisionUtility.js.map +1 -0
  749. package/lib/esm/test/SchemaUtils.test.d.ts +2 -0
  750. package/lib/esm/test/SchemaUtils.test.d.ts.map +1 -0
  751. package/lib/esm/test/SchemaUtils.test.js +99 -0
  752. package/lib/esm/test/SchemaUtils.test.js.map +1 -0
  753. package/lib/esm/test/SequentialLogMatcher.d.ts +35 -0
  754. package/lib/esm/test/SequentialLogMatcher.d.ts.map +1 -0
  755. package/lib/esm/test/SequentialLogMatcher.js +130 -0
  756. package/lib/esm/test/SequentialLogMatcher.js.map +1 -0
  757. package/lib/esm/test/TestChangeSetUtility.d.ts +23 -0
  758. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -0
  759. package/lib/esm/test/TestChangeSetUtility.js +65 -0
  760. package/lib/esm/test/TestChangeSetUtility.js.map +1 -0
  761. package/lib/esm/test/TestUtils.d.ts +38 -0
  762. package/lib/esm/test/TestUtils.d.ts.map +1 -0
  763. package/lib/esm/test/TestUtils.js +99 -0
  764. package/lib/esm/test/TestUtils.js.map +1 -0
  765. package/lib/esm/test/annotations/TextAnnotation.test.d.ts +2 -0
  766. package/lib/esm/test/annotations/TextAnnotation.test.d.ts.map +1 -0
  767. package/lib/esm/test/annotations/TextAnnotation.test.js +1135 -0
  768. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -0
  769. package/lib/esm/test/categories/Category.test.d.ts +2 -0
  770. package/lib/esm/test/categories/Category.test.d.ts.map +1 -0
  771. package/lib/esm/test/categories/Category.test.js +51 -0
  772. package/lib/esm/test/categories/Category.test.js.map +1 -0
  773. package/lib/esm/test/codespec/CodeSpec.test.d.ts +2 -0
  774. package/lib/esm/test/codespec/CodeSpec.test.d.ts.map +1 -0
  775. package/lib/esm/test/codespec/CodeSpec.test.js +51 -0
  776. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -0
  777. package/lib/esm/test/ecdb/CTE.test.d.ts +2 -0
  778. package/lib/esm/test/ecdb/CTE.test.d.ts.map +1 -0
  779. package/lib/esm/test/ecdb/CTE.test.js +177 -0
  780. package/lib/esm/test/ecdb/CTE.test.js.map +1 -0
  781. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts +2 -0
  782. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts.map +1 -0
  783. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +167 -0
  784. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -0
  785. package/lib/esm/test/ecdb/ECDb.test.d.ts +2 -0
  786. package/lib/esm/test/ecdb/ECDb.test.d.ts.map +1 -0
  787. package/lib/esm/test/ecdb/ECDb.test.js +653 -0
  788. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -0
  789. package/lib/esm/test/ecdb/ECDbTestHelper.d.ts +5 -0
  790. package/lib/esm/test/ecdb/ECDbTestHelper.d.ts.map +1 -0
  791. package/lib/esm/test/ecdb/ECDbTestHelper.js +28 -0
  792. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -0
  793. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts +2 -0
  794. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts.map +1 -0
  795. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +63 -0
  796. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -0
  797. package/lib/esm/test/ecdb/ECSqlAst.test.d.ts +5 -0
  798. package/lib/esm/test/ecdb/ECSqlAst.test.d.ts.map +1 -0
  799. package/lib/esm/test/ecdb/ECSqlAst.test.js +972 -0
  800. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -0
  801. package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts +2 -0
  802. package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts.map +1 -0
  803. package/lib/esm/test/ecdb/ECSqlQuery.test.js +753 -0
  804. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -0
  805. package/lib/esm/test/ecdb/ECSqlReader.test.d.ts +2 -0
  806. package/lib/esm/test/ecdb/ECSqlReader.test.d.ts.map +1 -0
  807. package/lib/esm/test/ecdb/ECSqlReader.test.js +669 -0
  808. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -0
  809. package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts +2 -0
  810. package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts.map +1 -0
  811. package/lib/esm/test/ecdb/ECSqlStatement.test.js +3329 -0
  812. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -0
  813. package/lib/esm/test/ecdb/SqliteStatement.test.d.ts +2 -0
  814. package/lib/esm/test/ecdb/SqliteStatement.test.d.ts.map +1 -0
  815. package/lib/esm/test/ecdb/SqliteStatement.test.js +510 -0
  816. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -0
  817. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts +4 -0
  818. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -0
  819. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +127 -0
  820. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -0
  821. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts +2 -0
  822. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts.map +1 -0
  823. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +197 -0
  824. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -0
  825. package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts +66 -0
  826. package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts.map +1 -0
  827. package/lib/esm/test/ecsql/src/ECSqlTestParser.js +420 -0
  828. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -0
  829. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts +2 -0
  830. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts.map +1 -0
  831. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +369 -0
  832. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -0
  833. package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts +2 -0
  834. package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts.map +1 -0
  835. package/lib/esm/test/element/DeleteDefinitionElements.test.js +208 -0
  836. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -0
  837. package/lib/esm/test/element/ElementAspect.test.d.ts +2 -0
  838. package/lib/esm/test/element/ElementAspect.test.d.ts.map +1 -0
  839. package/lib/esm/test/element/ElementAspect.test.js +363 -0
  840. package/lib/esm/test/element/ElementAspect.test.js.map +1 -0
  841. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts +2 -0
  842. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -0
  843. package/lib/esm/test/element/ElementDependencyGraph.test.js +383 -0
  844. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -0
  845. package/lib/esm/test/element/ElementRoundTrip.test.d.ts +2 -0
  846. package/lib/esm/test/element/ElementRoundTrip.test.d.ts.map +1 -0
  847. package/lib/esm/test/element/ElementRoundTrip.test.js +926 -0
  848. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -0
  849. package/lib/esm/test/element/ExcludedElements.test.d.ts +2 -0
  850. package/lib/esm/test/element/ExcludedElements.test.d.ts.map +1 -0
  851. package/lib/esm/test/element/ExcludedElements.test.js +57 -0
  852. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -0
  853. package/lib/esm/test/element/ExternalSource.test.d.ts +2 -0
  854. package/lib/esm/test/element/ExternalSource.test.d.ts.map +1 -0
  855. package/lib/esm/test/element/ExternalSource.test.js +107 -0
  856. package/lib/esm/test/element/ExternalSource.test.js.map +1 -0
  857. package/lib/esm/test/element/NullStructArray.test.d.ts +2 -0
  858. package/lib/esm/test/element/NullStructArray.test.d.ts.map +1 -0
  859. package/lib/esm/test/element/NullStructArray.test.js +77 -0
  860. package/lib/esm/test/element/NullStructArray.test.js.map +1 -0
  861. package/lib/esm/test/element/UrlLink.test.d.ts +2 -0
  862. package/lib/esm/test/element/UrlLink.test.d.ts.map +1 -0
  863. package/lib/esm/test/element/UrlLink.test.js +36 -0
  864. package/lib/esm/test/element/UrlLink.test.js.map +1 -0
  865. package/lib/esm/test/font/FontFile.test.d.ts +2 -0
  866. package/lib/esm/test/font/FontFile.test.d.ts.map +1 -0
  867. package/lib/esm/test/font/FontFile.test.js +139 -0
  868. package/lib/esm/test/font/FontFile.test.js.map +1 -0
  869. package/lib/esm/test/font/IModelDbFonts.test.d.ts +2 -0
  870. package/lib/esm/test/font/IModelDbFonts.test.d.ts.map +1 -0
  871. package/lib/esm/test/font/IModelDbFonts.test.js +266 -0
  872. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -0
  873. package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts +2 -0
  874. package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts.map +1 -0
  875. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +176 -0
  876. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -0
  877. package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts +2 -0
  878. package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts.map +1 -0
  879. package/lib/esm/test/hubaccess/CheckpointManager.test.js +52 -0
  880. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -0
  881. package/lib/esm/test/imageData.d.ts +9 -0
  882. package/lib/esm/test/imageData.d.ts.map +1 -0
  883. package/lib/esm/test/imageData.js +16 -0
  884. package/lib/esm/test/imageData.js.map +1 -0
  885. package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts +2 -0
  886. package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts.map +1 -0
  887. package/lib/esm/test/imodel/ElementTreeWalker.test.js +383 -0
  888. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -0
  889. package/lib/esm/test/imodel/GetTextureImage.test.d.ts +2 -0
  890. package/lib/esm/test/imodel/GetTextureImage.test.d.ts.map +1 -0
  891. package/lib/esm/test/imodel/GetTextureImage.test.js +29 -0
  892. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -0
  893. package/lib/esm/test/imodel/IModel.test.d.ts +2 -0
  894. package/lib/esm/test/imodel/IModel.test.d.ts.map +1 -0
  895. package/lib/esm/test/imodel/IModel.test.js +2626 -0
  896. package/lib/esm/test/imodel/IModel.test.js.map +1 -0
  897. package/lib/esm/test/imodel/ProjectExtents.test.d.ts +2 -0
  898. package/lib/esm/test/imodel/ProjectExtents.test.d.ts.map +1 -0
  899. package/lib/esm/test/imodel/ProjectExtents.test.js +66 -0
  900. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -0
  901. package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts +2 -0
  902. package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts.map +1 -0
  903. package/lib/esm/test/imodel/SchemaXmlImport.test.js +74 -0
  904. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -0
  905. package/lib/esm/test/index.d.ts +7 -0
  906. package/lib/esm/test/index.d.ts.map +1 -0
  907. package/lib/esm/test/index.js +11 -0
  908. package/lib/esm/test/index.js.map +1 -0
  909. package/lib/esm/test/misc/DevTools.test.d.ts +2 -0
  910. package/lib/esm/test/misc/DevTools.test.d.ts.map +1 -0
  911. package/lib/esm/test/misc/DevTools.test.js +72 -0
  912. package/lib/esm/test/misc/DevTools.test.js.map +1 -0
  913. package/lib/esm/test/misc/EntitySubClasses.test.d.ts +2 -0
  914. package/lib/esm/test/misc/EntitySubClasses.test.d.ts.map +1 -0
  915. package/lib/esm/test/misc/EntitySubClasses.test.js +106 -0
  916. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -0
  917. package/lib/esm/test/misc/GeoServices.test.d.ts +2 -0
  918. package/lib/esm/test/misc/GeoServices.test.d.ts.map +1 -0
  919. package/lib/esm/test/misc/GeoServices.test.js +850 -0
  920. package/lib/esm/test/misc/GeoServices.test.js.map +1 -0
  921. package/lib/esm/test/misc/PromiseMemoizer.test.d.ts +2 -0
  922. package/lib/esm/test/misc/PromiseMemoizer.test.d.ts.map +1 -0
  923. package/lib/esm/test/misc/PromiseMemoizer.test.js +111 -0
  924. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -0
  925. package/lib/esm/test/native/DgnDbWorker.test.d.ts +2 -0
  926. package/lib/esm/test/native/DgnDbWorker.test.d.ts.map +1 -0
  927. package/lib/esm/test/native/DgnDbWorker.test.js +159 -0
  928. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -0
  929. package/lib/esm/test/rpc/response.test.d.ts +2 -0
  930. package/lib/esm/test/rpc/response.test.d.ts.map +1 -0
  931. package/lib/esm/test/rpc/response.test.js +112 -0
  932. package/lib/esm/test/rpc/response.test.js.map +1 -0
  933. package/lib/esm/test/schema/ClassRegistry.test.d.ts +2 -0
  934. package/lib/esm/test/schema/ClassRegistry.test.d.ts.map +1 -0
  935. package/lib/esm/test/schema/ClassRegistry.test.js +679 -0
  936. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -0
  937. package/lib/esm/test/schema/FunctionalDomain.test.d.ts +2 -0
  938. package/lib/esm/test/schema/FunctionalDomain.test.d.ts.map +1 -0
  939. package/lib/esm/test/schema/FunctionalDomain.test.js +490 -0
  940. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -0
  941. package/lib/esm/test/schema/GenericDomain.test.d.ts +2 -0
  942. package/lib/esm/test/schema/GenericDomain.test.d.ts.map +1 -0
  943. package/lib/esm/test/schema/GenericDomain.test.js +133 -0
  944. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -0
  945. package/lib/esm/test/schema/IModelSchemaContext.test.d.ts +2 -0
  946. package/lib/esm/test/schema/IModelSchemaContext.test.d.ts.map +1 -0
  947. package/lib/esm/test/schema/IModelSchemaContext.test.js +95 -0
  948. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -0
  949. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +4 -0
  950. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -0
  951. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -0
  952. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -0
  953. package/lib/esm/test/standalone/ChangeMerge.test.d.ts +2 -0
  954. package/lib/esm/test/standalone/ChangeMerge.test.d.ts.map +1 -0
  955. package/lib/esm/test/standalone/ChangeMerge.test.js +409 -0
  956. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -0
  957. package/lib/esm/test/standalone/ChangesetReader.test.d.ts +2 -0
  958. package/lib/esm/test/standalone/ChangesetReader.test.d.ts.map +1 -0
  959. package/lib/esm/test/standalone/ChangesetReader.test.js +891 -0
  960. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -0
  961. package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts +2 -0
  962. package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts.map +1 -0
  963. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js +49 -0
  964. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -0
  965. package/lib/esm/test/standalone/DisplayStyle.test.d.ts +2 -0
  966. package/lib/esm/test/standalone/DisplayStyle.test.d.ts.map +1 -0
  967. package/lib/esm/test/standalone/DisplayStyle.test.js +136 -0
  968. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -0
  969. package/lib/esm/test/standalone/Drawing.test.d.ts +2 -0
  970. package/lib/esm/test/standalone/Drawing.test.d.ts.map +1 -0
  971. package/lib/esm/test/standalone/Drawing.test.js +120 -0
  972. package/lib/esm/test/standalone/Drawing.test.js.map +1 -0
  973. package/lib/esm/test/standalone/ElementGraphics.test.d.ts +2 -0
  974. package/lib/esm/test/standalone/ElementGraphics.test.d.ts.map +1 -0
  975. package/lib/esm/test/standalone/ElementGraphics.test.js +127 -0
  976. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -0
  977. package/lib/esm/test/standalone/ElementMesh.test.d.ts +2 -0
  978. package/lib/esm/test/standalone/ElementMesh.test.d.ts.map +1 -0
  979. package/lib/esm/test/standalone/ElementMesh.test.js +142 -0
  980. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -0
  981. package/lib/esm/test/standalone/ExportGraphics.test.d.ts +2 -0
  982. package/lib/esm/test/standalone/ExportGraphics.test.d.ts.map +1 -0
  983. package/lib/esm/test/standalone/ExportGraphics.test.js +1005 -0
  984. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -0
  985. package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts +2 -0
  986. package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts.map +1 -0
  987. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +139 -0
  988. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -0
  989. package/lib/esm/test/standalone/GeometryStream.test.d.ts +2 -0
  990. package/lib/esm/test/standalone/GeometryStream.test.d.ts.map +1 -0
  991. package/lib/esm/test/standalone/GeometryStream.test.js +2869 -0
  992. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -0
  993. package/lib/esm/test/standalone/HubMock.test.d.ts +2 -0
  994. package/lib/esm/test/standalone/HubMock.test.d.ts.map +1 -0
  995. package/lib/esm/test/standalone/HubMock.test.js +343 -0
  996. package/lib/esm/test/standalone/HubMock.test.js.map +1 -0
  997. package/lib/esm/test/standalone/IModelWrite.test.d.ts +7 -0
  998. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -0
  999. package/lib/esm/test/standalone/IModelWrite.test.js +907 -0
  1000. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -0
  1001. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts +2 -0
  1002. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts.map +1 -0
  1003. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +417 -0
  1004. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -0
  1005. package/lib/esm/test/standalone/MergeConflict.test.d.ts +7 -0
  1006. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -0
  1007. package/lib/esm/test/standalone/MergeConflict.test.js +345 -0
  1008. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -0
  1009. package/lib/esm/test/standalone/NativeAppStorage.test.d.ts +2 -0
  1010. package/lib/esm/test/standalone/NativeAppStorage.test.d.ts.map +1 -0
  1011. package/lib/esm/test/standalone/NativeAppStorage.test.js +121 -0
  1012. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -0
  1013. package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts +2 -0
  1014. package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts.map +1 -0
  1015. package/lib/esm/test/standalone/RenderMaterialElement.test.js +399 -0
  1016. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -0
  1017. package/lib/esm/test/standalone/RenderTimeline.test.d.ts +2 -0
  1018. package/lib/esm/test/standalone/RenderTimeline.test.d.ts.map +1 -0
  1019. package/lib/esm/test/standalone/RenderTimeline.test.js +71 -0
  1020. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -0
  1021. package/lib/esm/test/standalone/SQLiteDb.test.d.ts +2 -0
  1022. package/lib/esm/test/standalone/SQLiteDb.test.d.ts.map +1 -0
  1023. package/lib/esm/test/standalone/SQLiteDb.test.js +63 -0
  1024. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -0
  1025. package/lib/esm/test/standalone/SchemaUtils.test.d.ts +2 -0
  1026. package/lib/esm/test/standalone/SchemaUtils.test.d.ts.map +1 -0
  1027. package/lib/esm/test/standalone/SchemaUtils.test.js +25 -0
  1028. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -0
  1029. package/lib/esm/test/standalone/SectionDrawing.test.d.ts +2 -0
  1030. package/lib/esm/test/standalone/SectionDrawing.test.d.ts.map +1 -0
  1031. package/lib/esm/test/standalone/SectionDrawing.test.js +83 -0
  1032. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -0
  1033. package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts +2 -0
  1034. package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts.map +1 -0
  1035. package/lib/esm/test/standalone/ServerBasedLocks.test.js +279 -0
  1036. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -0
  1037. package/lib/esm/test/standalone/Setting.test.d.ts +2 -0
  1038. package/lib/esm/test/standalone/Setting.test.d.ts.map +1 -0
  1039. package/lib/esm/test/standalone/Setting.test.js +76 -0
  1040. package/lib/esm/test/standalone/Setting.test.js.map +1 -0
  1041. package/lib/esm/test/standalone/Settings.test.d.ts +2 -0
  1042. package/lib/esm/test/standalone/Settings.test.d.ts.map +1 -0
  1043. package/lib/esm/test/standalone/Settings.test.js +349 -0
  1044. package/lib/esm/test/standalone/Settings.test.js.map +1 -0
  1045. package/lib/esm/test/standalone/SettingsSchemas.test.d.ts +2 -0
  1046. package/lib/esm/test/standalone/SettingsSchemas.test.d.ts.map +1 -0
  1047. package/lib/esm/test/standalone/SettingsSchemas.test.js +31 -0
  1048. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -0
  1049. package/lib/esm/test/standalone/SnapshotDb.test.d.ts +2 -0
  1050. package/lib/esm/test/standalone/SnapshotDb.test.d.ts.map +1 -0
  1051. package/lib/esm/test/standalone/SnapshotDb.test.js +156 -0
  1052. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -0
  1053. package/lib/esm/test/standalone/Texture.test.d.ts +2 -0
  1054. package/lib/esm/test/standalone/Texture.test.d.ts.map +1 -0
  1055. package/lib/esm/test/standalone/Texture.test.js +90 -0
  1056. package/lib/esm/test/standalone/Texture.test.js.map +1 -0
  1057. package/lib/esm/test/standalone/TileCache.test.d.ts +9 -0
  1058. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -0
  1059. package/lib/esm/test/standalone/TileCache.test.js +127 -0
  1060. package/lib/esm/test/standalone/TileCache.test.js.map +1 -0
  1061. package/lib/esm/test/standalone/TileTree.test.d.ts +2 -0
  1062. package/lib/esm/test/standalone/TileTree.test.d.ts.map +1 -0
  1063. package/lib/esm/test/standalone/TileTree.test.js +241 -0
  1064. package/lib/esm/test/standalone/TileTree.test.js.map +1 -0
  1065. package/lib/esm/test/standalone/TxnManager.test.d.ts +2 -0
  1066. package/lib/esm/test/standalone/TxnManager.test.d.ts.map +1 -0
  1067. package/lib/esm/test/standalone/TxnManager.test.js +878 -0
  1068. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -0
  1069. package/lib/esm/test/standalone/ViewDefinition.test.d.ts +2 -0
  1070. package/lib/esm/test/standalone/ViewDefinition.test.d.ts.map +1 -0
  1071. package/lib/esm/test/standalone/ViewDefinition.test.js +279 -0
  1072. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -0
  1073. package/lib/esm/test/standalone/ViewStoreDb.test.d.ts +2 -0
  1074. package/lib/esm/test/standalone/ViewStoreDb.test.d.ts.map +1 -0
  1075. package/lib/esm/test/standalone/ViewStoreDb.test.js +288 -0
  1076. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -0
  1077. package/lib/esm/test/standalone/Workspace.test.d.ts +2 -0
  1078. package/lib/esm/test/standalone/Workspace.test.d.ts.map +1 -0
  1079. package/lib/esm/test/standalone/Workspace.test.js +162 -0
  1080. package/lib/esm/test/standalone/Workspace.test.js.map +1 -0
  1081. package/lib/esm/workspace/Settings.d.ts +216 -0
  1082. package/lib/esm/workspace/Settings.d.ts.map +1 -0
  1083. package/lib/esm/workspace/Settings.js +83 -0
  1084. package/lib/esm/workspace/Settings.js.map +1 -0
  1085. package/lib/esm/workspace/SettingsSchemas.d.ts +135 -0
  1086. package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -0
  1087. package/lib/esm/workspace/SettingsSchemas.js +9 -0
  1088. package/lib/esm/workspace/SettingsSchemas.js.map +1 -0
  1089. package/lib/esm/workspace/Workspace.d.ts +500 -0
  1090. package/lib/esm/workspace/Workspace.d.ts.map +1 -0
  1091. package/lib/esm/workspace/Workspace.js +97 -0
  1092. package/lib/esm/workspace/Workspace.js.map +1 -0
  1093. package/lib/esm/workspace/WorkspaceEditor.d.ts +240 -0
  1094. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -0
  1095. package/lib/esm/workspace/WorkspaceEditor.js +31 -0
  1096. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -0
  1097. package/package.json +37 -29
  1098. package/lib/cjs/HubMock.d.ts.map +0 -1
  1099. package/lib/cjs/HubMock.js.map +0 -1
  1100. package/lib/cjs/IModelCloneContext.d.ts +0 -9
  1101. package/lib/cjs/IModelCloneContext.d.ts.map +0 -1
  1102. package/lib/cjs/IModelCloneContext.js.map +0 -1
@@ -0,0 +1,907 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { DbResult, Id64 } from "@itwin/core-bentley";
6
+ import { Code, ColorDef, IModel, IModelVersion, LockState, QueryRowFormat, SchemaState, SubCategoryAppearance, } from "@itwin/core-common";
7
+ import { Arc3d, IModelJson, Point2d, Point3d } from "@itwin/core-geometry";
8
+ import * as chai from "chai";
9
+ import { assert, expect } from "chai";
10
+ import * as chaiAsPromised from "chai-as-promised";
11
+ import * as fs from "fs";
12
+ import * as semver from "semver";
13
+ import * as sinon from "sinon";
14
+ import { HubWrappers, KnownTestLocations } from "../";
15
+ import { DrawingCategory } from "../../Category";
16
+ import { HubMock } from "../../internal/HubMock";
17
+ import { _nativeDb, BriefcaseDb, BriefcaseManager, ChannelControl, CodeService, DefinitionModel, DocumentListModel, Drawing, DrawingGraphic, SpatialCategory, Subject, } from "../../core-backend";
18
+ import { IModelTestUtils, TestUserType } from "../IModelTestUtils";
19
+ chai.use(chaiAsPromised);
20
+ export async function createNewModelAndCategory(rwIModel, parent) {
21
+ // Create a new physical model.
22
+ const [, modelId] = await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel"), true, parent);
23
+ // Find or create a SpatialCategory.
24
+ const dictionary = rwIModel.models.getModel(IModel.dictionaryId);
25
+ const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, "ThisTestSpatialCategory");
26
+ const category = SpatialCategory.create(rwIModel, IModel.dictionaryId, newCategoryCode.value);
27
+ const spatialCategoryId = rwIModel.elements.insertElement(category.toJSON());
28
+ category.setDefaultAppearance(new SubCategoryAppearance({ color: 0xff0000 }));
29
+ // const spatialCategoryId: Id64String = SpatialCategory.insert(rwIModel, IModel.dictionaryId, newCategoryCode.value!, new SubCategoryAppearance({ color: 0xff0000 }));
30
+ return { modelId, spatialCategoryId };
31
+ }
32
+ describe("IModelWriteTest", () => {
33
+ let managerAccessToken;
34
+ let superAccessToken;
35
+ let iTwinId;
36
+ before(() => {
37
+ HubMock.startup("IModelWriteTest", KnownTestLocations.outputDir);
38
+ iTwinId = HubMock.iTwinId;
39
+ });
40
+ after(() => HubMock.shutdown());
41
+ it("Check busyTimeout option", async () => {
42
+ const iModelProps = {
43
+ iModelName: "ReadWriteTest",
44
+ iTwinId,
45
+ };
46
+ const iModelId = await HubMock.createNewIModel(iModelProps);
47
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: "test token", iTwinId, iModelId });
48
+ const tryOpen = async (args) => {
49
+ const start = performance.now();
50
+ let didThrow = false;
51
+ try {
52
+ await BriefcaseDb.open(args);
53
+ }
54
+ catch (e) {
55
+ assert.strictEqual(e.errorNumber, DbResult.BE_SQLITE_BUSY, "Expect error 'Db is busy'");
56
+ didThrow = true;
57
+ }
58
+ assert.isTrue(didThrow);
59
+ return performance.now() - start;
60
+ };
61
+ const seconds = (s) => s * 1000;
62
+ const db = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
63
+ db.saveChanges();
64
+ // lock db so another connection cannot write to it.
65
+ db.saveFileProperty({ name: "test", namespace: "test" }, "");
66
+ assert.isAtMost(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(0) }), seconds(1), "open should fail with busy error instantly");
67
+ assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(1) }), seconds(1), "open should fail with atleast 1 sec delay due to retry");
68
+ assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(2) }), seconds(2), "open should fail with atleast 2 sec delay due to retry");
69
+ assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(3) }), seconds(3), "open should fail with atleast 3 sec delay due to retry");
70
+ db.abandonChanges();
71
+ db.close();
72
+ });
73
+ it("WatchForChanges", async () => {
74
+ const iModelProps = {
75
+ iModelName: "ReadWriteTest",
76
+ iTwinId,
77
+ };
78
+ const iModelId = await HubMock.createNewIModel(iModelProps);
79
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: "test token", iTwinId, iModelId });
80
+ let nClosed = 0;
81
+ const fsWatcher = {
82
+ callback: () => { },
83
+ close: () => ++nClosed,
84
+ };
85
+ const watchStub = (_filename, _opts, fn) => {
86
+ fsWatcher.callback = fn;
87
+ return fsWatcher;
88
+ };
89
+ const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
90
+ const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
91
+ bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
92
+ const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
93
+ const code1 = IModelTestUtils.getUniqueModelCode(bc, "newPhysicalModel1");
94
+ await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc, code1, true);
95
+ bc.saveChanges();
96
+ // immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected
97
+ // in the readonly briefcase until the file watcher fires.
98
+ expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());
99
+ // trigger watcher via stub
100
+ fsWatcher.callback();
101
+ // now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection
102
+ expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());
103
+ roBC.close();
104
+ expect(nClosed).equal(1);
105
+ bc.close();
106
+ // NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
107
+ // call sinon.restore() here. This is because sinon.restore() will restore the stubs for
108
+ // CloudSqlite that HubMock.startup() put in place.
109
+ watchStubResult.restore();
110
+ });
111
+ function expectEqualChangesets(a, b) {
112
+ expect(a.id).to.equal(b.id);
113
+ expect(a.index).to.equal(b.index);
114
+ }
115
+ it("WatchForChanges - push", async () => {
116
+ const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
117
+ const iModelProps = {
118
+ iModelName: "ReadWriteTest",
119
+ iTwinId,
120
+ };
121
+ const iModelId = await HubMock.createNewIModel(iModelProps);
122
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, iTwinId, iModelId });
123
+ let nClosed = 0;
124
+ const fsWatcher = {
125
+ callback: () => { },
126
+ close: () => ++nClosed,
127
+ };
128
+ const watchStub = (_filename, _opts, fn) => {
129
+ fsWatcher.callback = fn;
130
+ return fsWatcher;
131
+ };
132
+ const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
133
+ const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
134
+ bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
135
+ const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
136
+ const code1 = IModelTestUtils.getUniqueModelCode(bc, "newPhysicalModel1");
137
+ await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc, code1, true);
138
+ bc.saveChanges();
139
+ // immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected
140
+ // in the readonly briefcase until the file watcher fires.
141
+ expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());
142
+ // trigger watcher via stub
143
+ fsWatcher.callback();
144
+ // now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection
145
+ expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());
146
+ // Push the changes to the hub
147
+ const prePushChangeset = bc.changeset;
148
+ let eventRaised = false;
149
+ roBC.onChangesetChanged.addOnce((prevCS) => {
150
+ expectEqualChangesets(prevCS, prePushChangeset);
151
+ eventRaised = true;
152
+ });
153
+ await bc.pushChanges({ accessToken: adminAccessToken, description: "test" });
154
+ const postPushChangeset = bc.changeset;
155
+ assert(!!postPushChangeset);
156
+ expect(prePushChangeset !== postPushChangeset, "changes should be pushed");
157
+ // trigger watcher via stub
158
+ fsWatcher.callback();
159
+ expectEqualChangesets(roBC.changeset, postPushChangeset);
160
+ expect(roBC[_nativeDb].getCurrentTxnId(), "txn should be updated").equal(bc[_nativeDb].getCurrentTxnId());
161
+ expect(eventRaised).to.be.true;
162
+ roBC.close();
163
+ expect(nClosed).equal(1);
164
+ bc.close();
165
+ // NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
166
+ // call sinon.restore() here. This is because sinon.restore() will restore the stubs for
167
+ // CloudSqlite that HubMock.startup() put in place.
168
+ watchStubResult.restore();
169
+ });
170
+ it("WatchForChanges - pull", async () => {
171
+ const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
172
+ const pathname = IModelTestUtils.resolveAssetFile("CompatibilityTestSeed.bim");
173
+ const hubName = "CompatibilityTest";
174
+ const iModelId = await HubWrappers.pushIModel(managerAccessToken, iTwinId, pathname, hubName, true);
175
+ // Download two copies of the briefcase - manager and super
176
+ const args = { iTwinId, iModelId };
177
+ const initialDb = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });
178
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });
179
+ // Push some changes - prep for pull workflow.
180
+ const bc1 = await BriefcaseDb.open({ fileName: initialDb.fileName });
181
+ bc1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
182
+ const code2 = IModelTestUtils.getUniqueModelCode(bc1, "newPhysicalModel2");
183
+ await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc1, code2, true);
184
+ const prePushChangeset = bc1.changeset;
185
+ bc1.saveChanges();
186
+ await bc1.pushChanges({ accessToken: adminAccessToken, description: "test" });
187
+ const postPushChangeset = bc1.changeset;
188
+ assert(!!prePushChangeset);
189
+ expect(prePushChangeset !== postPushChangeset, "changes should be pushed");
190
+ bc1.close();
191
+ // Writer that pulls + watcher.
192
+ let nClosed = 0;
193
+ const fsWatcher = {
194
+ callback: () => { },
195
+ close: () => ++nClosed,
196
+ };
197
+ const watchStub = (_filename, _opts, fn) => {
198
+ fsWatcher.callback = fn;
199
+ return fsWatcher;
200
+ };
201
+ const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
202
+ const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
203
+ bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
204
+ const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
205
+ const prePullChangeset = bc.changeset;
206
+ let eventRaised = false;
207
+ roBC.onChangesetChanged.addOnce((prevCS) => {
208
+ expectEqualChangesets(prevCS, prePushChangeset);
209
+ eventRaised = true;
210
+ });
211
+ await bc.pullChanges();
212
+ const postPullChangeset = bc.changeset;
213
+ assert(!!postPullChangeset);
214
+ expect(prePullChangeset !== postPullChangeset, "changes should be pulled");
215
+ // trigger watcher via stub
216
+ fsWatcher.callback();
217
+ expectEqualChangesets(roBC.changeset, postPullChangeset);
218
+ expect(roBC[_nativeDb].getCurrentTxnId(), "txn should be updated").equal(bc[_nativeDb].getCurrentTxnId());
219
+ expect(eventRaised).to.be.true;
220
+ roBC.close();
221
+ expect(nClosed).equal(1);
222
+ bc.close();
223
+ // NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
224
+ // call sinon.restore() here. This is because sinon.restore() will restore the stubs for
225
+ // CloudSqlite that HubMock.startup() put in place.
226
+ watchStubResult.restore();
227
+ });
228
+ it("should handle undo/redo", async () => {
229
+ const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
230
+ // Delete any existing iModels with the same name as the read-write test iModel
231
+ const iModelName = "CodesUndoRedoPushTest";
232
+ // Create a new empty iModel on the Hub & obtain a briefcase
233
+ const rwIModelId = await HubMock.createNewIModel({ accessToken: adminAccessToken, iTwinId, iModelName, description: "TestSubject" });
234
+ assert.isNotEmpty(rwIModelId);
235
+ const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: adminAccessToken, iTwinId, iModelId: rwIModelId });
236
+ rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
237
+ // create and insert a new model with code1
238
+ const code1 = IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel1");
239
+ await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, code1, true);
240
+ assert.isTrue(rwIModel.elements.getElement(code1) !== undefined); // throws if element is not found
241
+ // create a local txn with that change
242
+ rwIModel.saveChanges("inserted newPhysicalModel");
243
+ // Reverse that local txn
244
+ rwIModel.txns.reverseSingleTxn();
245
+ try {
246
+ // The model that I just created with code1 should no longer be there.
247
+ const theNewModel = rwIModel.elements.getElement(code1); // throws if element is not found
248
+ assert.isTrue(theNewModel === undefined); // really should not be here.
249
+ assert.fail(); // should not be here.
250
+ }
251
+ catch {
252
+ // this is what I expect
253
+ }
254
+ // Create and insert a model with code2
255
+ const code2 = IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel2");
256
+ await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, code2, true);
257
+ rwIModel.saveChanges("inserted generic objects");
258
+ // The iModel should have a model with code1 and not code2
259
+ assert.isTrue(rwIModel.elements.getElement(code2) !== undefined); // throws if element is not found
260
+ // Push the changes to the hub
261
+ const prePushChangeset = rwIModel.changeset;
262
+ await rwIModel.pushChanges({ accessToken: adminAccessToken, description: "test" });
263
+ const postPushChangeset = rwIModel.changeset;
264
+ assert(!!postPushChangeset);
265
+ expect(prePushChangeset !== postPushChangeset);
266
+ rwIModel.close();
267
+ });
268
+ it("should be able to upgrade a briefcase with an older schema", async () => {
269
+ /**
270
+ * Test validates that -
271
+ * - User "manager" upgrades the BisCore schema in the briefcase from version 1.0.0 to 1.0.10+
272
+ * - User "super" can get the upgrade "manager" made
273
+ */
274
+ /* Setup test - Push an iModel with an old BisCore schema up to the Hub */
275
+ const pathname = IModelTestUtils.resolveAssetFile("CompatibilityTestSeed.bim");
276
+ const hubName = "CompatibilityTest";
277
+ const iModelId = await HubWrappers.pushIModel(managerAccessToken, iTwinId, pathname, hubName, true);
278
+ // Download two copies of the briefcase - manager and super
279
+ const args = { iTwinId, iModelId };
280
+ const managerBriefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: managerAccessToken, ...args });
281
+ const superBriefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: superAccessToken, ...args });
282
+ /* User "manager" upgrades the briefcase */
283
+ // Validate the original state of the BisCore schema in the briefcase
284
+ let iModel = await BriefcaseDb.open({ fileName: managerBriefcaseProps.fileName });
285
+ const beforeVersion = iModel.querySchemaVersion("BisCore");
286
+ assert.isTrue(semver.satisfies(beforeVersion, "= 1.0.0"));
287
+ assert.isFalse(iModel[_nativeDb].hasPendingTxns());
288
+ iModel.close();
289
+ // Validate that the BisCore schema is recognized as a recommended upgrade
290
+ let schemaState = BriefcaseDb.validateSchemas(managerBriefcaseProps.fileName, true);
291
+ assert.strictEqual(schemaState, SchemaState.UpgradeRecommended);
292
+ // Upgrade the schemas
293
+ await BriefcaseDb.upgradeSchemas(managerBriefcaseProps);
294
+ // Validate state after upgrade
295
+ iModel = await BriefcaseDb.open({ fileName: managerBriefcaseProps.fileName });
296
+ const afterVersion = iModel.querySchemaVersion("BisCore");
297
+ assert.isTrue(semver.satisfies(afterVersion, ">= 1.0.10"));
298
+ assert.isFalse(iModel[_nativeDb].hasPendingTxns());
299
+ assert.isFalse(iModel.holdsSchemaLock);
300
+ assert.isFalse(iModel[_nativeDb].hasUnsavedChanges());
301
+ iModel.close();
302
+ /* User "super" can get the upgrade "manager" made */
303
+ // Validate that the BisCore schema is recognized as a recommended upgrade
304
+ schemaState = BriefcaseDb.validateSchemas(superBriefcaseProps.fileName, true);
305
+ assert.strictEqual(schemaState, SchemaState.UpgradeRecommended);
306
+ // Open briefcase and pull change sets to upgrade
307
+ const superIModel = await BriefcaseDb.open({ fileName: superBriefcaseProps.fileName });
308
+ superBriefcaseProps.changeset = await superIModel.pullChanges({ accessToken: superAccessToken });
309
+ const superVersion = superIModel.querySchemaVersion("BisCore");
310
+ assert.isTrue(semver.satisfies(superVersion, ">= 1.0.10"));
311
+ assert.isFalse(superIModel[_nativeDb].hasUnsavedChanges()); // Validate no changes were made
312
+ assert.isFalse(superIModel[_nativeDb].hasPendingTxns()); // Validate no changes were made
313
+ superIModel.close();
314
+ // Validate that there are no upgrades required
315
+ schemaState = BriefcaseDb.validateSchemas(superBriefcaseProps.fileName, true);
316
+ assert.strictEqual(schemaState, SchemaState.UpToDate);
317
+ // Upgrade the schemas - ensure this is a no-op
318
+ await BriefcaseDb.upgradeSchemas(superBriefcaseProps);
319
+ await HubMock.deleteIModel({ accessToken: managerAccessToken, iTwinId, iModelId });
320
+ });
321
+ it("changeset size and ec schema version change", async () => {
322
+ const adminToken = "super manager token";
323
+ const iModelName = "changeset_size";
324
+ const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
325
+ assert.isNotEmpty(rwIModelId);
326
+ const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
327
+ assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
328
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
329
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
330
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
331
+ <ECEntityClass typeName="Test2dElement">
332
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
333
+ <ECProperty propertyName="s" typeName="string"/>
334
+ </ECEntityClass>
335
+ </ECSchema>`;
336
+ await rwIModel.importSchemaStrings([schema]);
337
+ rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
338
+ rwIModel.saveChanges("user 1: schema changeset");
339
+ if (true || "push changes") {
340
+ // Push the changes to the hub
341
+ const prePushChangeSetId = rwIModel.changeset.id;
342
+ await rwIModel.pushChanges({ description: "push schema changeset", accessToken: adminToken });
343
+ const postPushChangeSetId = rwIModel.changeset.id;
344
+ assert(!!postPushChangeSetId);
345
+ expect(prePushChangeSetId !== postPushChangeSetId);
346
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });
347
+ assert.equal(changesets.length, 1);
348
+ }
349
+ await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
350
+ const codeProps = Code.createEmpty();
351
+ codeProps.value = "DrawingModel";
352
+ let totalEl = 0;
353
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
354
+ let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
355
+ if (undefined === drawingCategoryId)
356
+ drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
357
+ const insertElements = (imodel, className = "Test2dElement", noOfElements = 10, userProp) => {
358
+ for (let m = 0; m < noOfElements; ++m) {
359
+ const geomArray = [
360
+ Arc3d.createXY(Point3d.create(0, 0), 5),
361
+ Arc3d.createXY(Point3d.create(5, 5), 2),
362
+ Arc3d.createXY(Point3d.create(-5, -5), 20),
363
+ ];
364
+ const geometryStream = [];
365
+ for (const geom of geomArray) {
366
+ const arcData = IModelJson.Writer.toIModelJson(geom);
367
+ geometryStream.push(arcData);
368
+ }
369
+ const prop = userProp(++totalEl);
370
+ // Create props
371
+ const geomElement = {
372
+ classFullName: `TestDomain:${className}`,
373
+ model: drawingModelId,
374
+ category: drawingCategoryId,
375
+ code: Code.createEmpty(),
376
+ geom: geometryStream,
377
+ ...prop,
378
+ };
379
+ const id = imodel.elements.insertElement(geomElement);
380
+ assert.isTrue(Id64.isValidId64(id), "insert worked");
381
+ }
382
+ };
383
+ const str = new Array(1024).join("x");
384
+ insertElements(rwIModel, "Test2dElement", 1024, () => {
385
+ return { s: str };
386
+ });
387
+ assert.equal(1357648, rwIModel[_nativeDb].getChangesetSize());
388
+ rwIModel.saveChanges("user 1: data");
389
+ assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
390
+ await rwIModel.pushChanges({ description: "schema changeset", accessToken: adminToken });
391
+ rwIModel.close();
392
+ });
393
+ it("should set a fake verifyCode for codeService that throws error for operations that affect code, if failed to open codeService ", async () => {
394
+ const iModelProps = {
395
+ iModelName: "codeServiceTest",
396
+ iTwinId,
397
+ };
398
+ const iModelId = await HubMock.createNewIModel(iModelProps);
399
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: "codeServiceTest", iTwinId, iModelId });
400
+ const originalCreateForIModel = CodeService.createForIModel;
401
+ // can be any errors except 'NoCodeIndex'
402
+ CodeService.createForIModel = async () => {
403
+ throw new CodeService.Error("MissingCode", 0x10000 + 1, " ");
404
+ };
405
+ const briefcaseDb = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
406
+ briefcaseDb.channels.addAllowedChannel(ChannelControl.sharedChannelName);
407
+ let firstNonRootElement = { id: undefined, codeValue: "test" };
408
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
409
+ briefcaseDb.withPreparedStatement("SELECT * from Bis.Element LIMIT 1 OFFSET 1", (stmt) => {
410
+ if (stmt.step() === DbResult.BE_SQLITE_ROW) {
411
+ firstNonRootElement = stmt.getRow();
412
+ }
413
+ });
414
+ // make change to the briefcaseDb that does not affect code, e.g., save file property
415
+ // expect no error from verifyCode
416
+ expect(() => briefcaseDb.saveFileProperty({ name: "codeServiceProp", namespace: "codeService", id: 1, subId: 1 }, "codeService test")).to.not.throw();
417
+ // make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code
418
+ // expect error from verifyCode
419
+ let newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };
420
+ await briefcaseDb.locks.acquireLocks({ exclusive: firstNonRootElement.id });
421
+ expect(() => briefcaseDb.elements.updateElement(newProps)).to.throw(CodeService.Error);
422
+ // make change to the briefcaseDb that will invoke verifyCode with a null(empty) code, e.g., update an element with a null(empty) code
423
+ // expect no error from verifyCode
424
+ newProps = { id: firstNonRootElement.id, code: Code.createEmpty(), classFullName: undefined, model: undefined };
425
+ expect(() => briefcaseDb.elements.updateElement(newProps)).to.not.throw();
426
+ briefcaseDb.close();
427
+ // throw "NoCodeIndex", this error should get ignored because it means the iModel isn't enforcing codes. updating an element with an empty code and a non empty code should work without issue.
428
+ CodeService.createForIModel = async () => {
429
+ throw new CodeService.Error("NoCodeIndex", 0x10000 + 1, " ");
430
+ };
431
+ const briefcaseDb2 = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
432
+ briefcaseDb2.channels.addAllowedChannel(ChannelControl.sharedChannelName);
433
+ await briefcaseDb2.locks.acquireLocks({ exclusive: firstNonRootElement.id });
434
+ // expect no error from verifyCode for empty code
435
+ expect(() => briefcaseDb2.elements.updateElement(newProps)).to.not.throw();
436
+ newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };
437
+ // make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code
438
+ // expect no error from verifyCode
439
+ expect(() => briefcaseDb2.elements.updateElement(newProps)).to.not.throw();
440
+ // clean up
441
+ CodeService.createForIModel = originalCreateForIModel;
442
+ briefcaseDb2.close();
443
+ });
444
+ it("clear cache on schema changes", async () => {
445
+ const adminToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
446
+ const userToken = await HubWrappers.getAccessToken(TestUserType.Super);
447
+ // Delete any existing iModels with the same name as the OptimisticConcurrencyTest iModel
448
+ const iModelName = "SchemaChanges";
449
+ // Create a new empty iModel on the Hub & obtain a briefcase
450
+ const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject" });
451
+ assert.isNotEmpty(rwIModelId);
452
+ const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
453
+ const rwIModel2 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: userToken });
454
+ // enable change tracking
455
+ assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
456
+ assert.equal(rwIModel2[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
457
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
458
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
459
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
460
+ <ECEntityClass typeName="Test2dElement">
461
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
462
+ <ECProperty propertyName="s" typeName="string"/>
463
+ </ECEntityClass>
464
+ </ECSchema>`;
465
+ await rwIModel.importSchemaStrings([schema]);
466
+ rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
467
+ rwIModel2.channels.addAllowedChannel(ChannelControl.sharedChannelName);
468
+ rwIModel.saveChanges("user 1: schema changeset");
469
+ if (true || "push changes") {
470
+ // Push the changes to the hub
471
+ const prePushChangeSetId = rwIModel.changeset.id;
472
+ await rwIModel.pushChanges({ description: "schema changeset", accessToken: adminToken });
473
+ const postPushChangeSetId = rwIModel.changeset.id;
474
+ assert(!!postPushChangeSetId);
475
+ expect(prePushChangeSetId !== postPushChangeSetId);
476
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });
477
+ assert.equal(changesets.length, 1);
478
+ }
479
+ const codeProps = Code.createEmpty();
480
+ codeProps.value = "DrawingModel";
481
+ let totalEl = 0;
482
+ await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
483
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
484
+ let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
485
+ if (undefined === drawingCategoryId)
486
+ drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
487
+ const insertElements = (imodel, className = "Test2dElement", noOfElements = 10, userProp) => {
488
+ for (let m = 0; m < noOfElements; ++m) {
489
+ const geomArray = [
490
+ Arc3d.createXY(Point3d.create(0, 0), 5),
491
+ Arc3d.createXY(Point3d.create(5, 5), 2),
492
+ Arc3d.createXY(Point3d.create(-5, -5), 20),
493
+ ];
494
+ const geometryStream = [];
495
+ for (const geom of geomArray) {
496
+ const arcData = IModelJson.Writer.toIModelJson(geom);
497
+ geometryStream.push(arcData);
498
+ }
499
+ const prop = userProp(++totalEl);
500
+ // Create props
501
+ const geomElement = {
502
+ classFullName: `TestDomain:${className}`,
503
+ model: drawingModelId,
504
+ category: drawingCategoryId,
505
+ code: Code.createEmpty(),
506
+ geom: geometryStream,
507
+ ...prop,
508
+ };
509
+ const id = imodel.elements.insertElement(geomElement);
510
+ assert.isTrue(Id64.isValidId64(id), "insert worked");
511
+ }
512
+ };
513
+ insertElements(rwIModel, "Test2dElement", 10, (n) => {
514
+ return { s: `s-${n}` };
515
+ });
516
+ assert.equal(3889, rwIModel[_nativeDb].getChangesetSize());
517
+ rwIModel.saveChanges("user 1: data changeset");
518
+ if (true || "push changes") {
519
+ // Push the changes to the hub
520
+ const prePushChangeSetId = rwIModel.changeset.id;
521
+ await rwIModel.pushChanges({ description: "10 instances of test2dElement", accessToken: adminToken });
522
+ const postPushChangeSetId = rwIModel.changeset.id;
523
+ assert(!!postPushChangeSetId);
524
+ expect(prePushChangeSetId !== postPushChangeSetId);
525
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });
526
+ assert.equal(changesets.length, 2);
527
+ }
528
+ let rows = [];
529
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
530
+ rwIModel.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement", (stmt) => {
531
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
532
+ rows.push(stmt.getRow());
533
+ }
534
+ });
535
+ assert.equal(rows.length, 10);
536
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);
537
+ rows = [];
538
+ for await (const queryRow of rwIModel.createQueryReader("SELECT * FROM TestDomain.Test2dElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
539
+ rows.push(queryRow.toRow());
540
+ }
541
+ assert.equal(rows.length, 10);
542
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);
543
+ if (true || "user pull/merge") {
544
+ // pull and merge changes
545
+ await rwIModel2.pullChanges({ accessToken: userToken });
546
+ rows = [];
547
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
548
+ rwIModel2.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement", (stmt) => {
549
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
550
+ rows.push(stmt.getRow());
551
+ }
552
+ });
553
+ assert.equal(rows.length, 10);
554
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);
555
+ rows = [];
556
+ for await (const queryRow of rwIModel2.createQueryReader("SELECT * FROM TestDomain.Test2dElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
557
+ rows.push(queryRow.toRow());
558
+ }
559
+ assert.equal(rows.length, 10);
560
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);
561
+ // create some element and push those changes
562
+ await rwIModel2.locks.acquireLocks({ shared: drawingModelId });
563
+ insertElements(rwIModel2, "Test2dElement", 10, (n) => {
564
+ return { s: `s-${n}` };
565
+ });
566
+ assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
567
+ rwIModel2.saveChanges("user 2: data changeset");
568
+ if (true || "push changes") {
569
+ // Push the changes to the hub
570
+ const prePushChangeSetId = rwIModel2.changeset.id;
571
+ await rwIModel2.pushChanges({ accessToken: userToken, description: "10 instances of test2dElement" });
572
+ const postPushChangeSetId = rwIModel2.changeset.id;
573
+ assert(!!postPushChangeSetId);
574
+ expect(prePushChangeSetId !== postPushChangeSetId);
575
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: userToken });
576
+ assert.equal(changesets.length, 3);
577
+ }
578
+ }
579
+ await rwIModel.pullChanges({ accessToken: adminToken });
580
+ // second schema import ==============================================================
581
+ const schemaV2 = `<?xml version="1.0" encoding="UTF-8"?>
582
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
583
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
584
+ <ECEntityClass typeName="Test2dElement">
585
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
586
+ <ECProperty propertyName="s" typeName="string"/>
587
+ <ECProperty propertyName="v" typeName="string"/>
588
+ </ECEntityClass>
589
+ <ECEntityClass typeName="Test2dElement2nd">
590
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
591
+ <ECProperty propertyName="t" typeName="string"/>
592
+ <ECProperty propertyName="r" typeName="string"/>
593
+ </ECEntityClass>
594
+ </ECSchema>`;
595
+ await rwIModel.importSchemaStrings([schemaV2]);
596
+ assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
597
+ rwIModel.saveChanges("user 1: schema changeset2");
598
+ if (true || "push changes") {
599
+ // Push the changes to the hub
600
+ const prePushChangeSetId = rwIModel.changeset.id;
601
+ await rwIModel.pushChanges({ accessToken: adminToken, description: "schema changeset" });
602
+ const postPushChangeSetId = rwIModel.changeset.id;
603
+ assert(!!postPushChangeSetId);
604
+ expect(prePushChangeSetId !== postPushChangeSetId);
605
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });
606
+ assert.equal(changesets.length, 4);
607
+ }
608
+ // create some element and push those changes
609
+ await rwIModel.locks.acquireLocks({ shared: drawingModelId });
610
+ insertElements(rwIModel, "Test2dElement", 10, (n) => {
611
+ return {
612
+ s: `s-${n}`, v: `v-${n}`,
613
+ };
614
+ });
615
+ // create some element and push those changes
616
+ insertElements(rwIModel, "Test2dElement2nd", 10, (n) => {
617
+ return {
618
+ t: `t-${n}`, r: `r-${n}`,
619
+ };
620
+ });
621
+ assert.equal(6266, rwIModel[_nativeDb].getChangesetSize());
622
+ rwIModel.saveChanges("user 1: data changeset");
623
+ if (true || "push changes") {
624
+ // Push the changes to the hub
625
+ const prePushChangeSetId = rwIModel.changeset.id;
626
+ await rwIModel.pushChanges({ accessToken: adminToken, description: "10 instances of test2dElement" });
627
+ const postPushChangeSetId = rwIModel.changeset.id;
628
+ assert(!!postPushChangeSetId);
629
+ expect(prePushChangeSetId !== postPushChangeSetId);
630
+ const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });
631
+ assert.equal(changesets.length, 5);
632
+ }
633
+ rows = [];
634
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
635
+ rwIModel.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement", (stmt) => {
636
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
637
+ rows.push(stmt.getRow());
638
+ }
639
+ });
640
+ assert.equal(rows.length, 30);
641
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);
642
+ assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);
643
+ rows = [];
644
+ for await (const queryRow of rwIModel.createQueryReader("SELECT * FROM TestDomain.Test2dElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
645
+ rows.push(queryRow.toRow());
646
+ }
647
+ assert.equal(rows.length, 30);
648
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);
649
+ assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);
650
+ rows = [];
651
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
652
+ rwIModel.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement2nd", (stmt) => {
653
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
654
+ rows.push(stmt.getRow());
655
+ }
656
+ });
657
+ assert.equal(rows.length, 10);
658
+ assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);
659
+ assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);
660
+ rows = [];
661
+ for await (const queryRow of rwIModel.createQueryReader("SELECT * FROM TestDomain.Test2dElement2nd", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
662
+ rows.push(queryRow.toRow());
663
+ }
664
+ assert.equal(rows.length, 10);
665
+ assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);
666
+ assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);
667
+ if (true || "user pull/merge") {
668
+ // pull and merge changes
669
+ await rwIModel2.pullChanges({ accessToken: userToken });
670
+ rows = [];
671
+ // Following fail without the fix in briefcase manager where we clear statement cache on schema changeset apply
672
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
673
+ rwIModel2.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement", (stmt) => {
674
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
675
+ rows.push(stmt.getRow());
676
+ }
677
+ });
678
+ assert.equal(rows.length, 30);
679
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);
680
+ assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);
681
+ rows = [];
682
+ // Following fail without native side fix where we clear concurrent query cache on schema changeset apply
683
+ for await (const queryRow of rwIModel2.createQueryReader("SELECT * FROM TestDomain.Test2dElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
684
+ rows.push(queryRow.toRow());
685
+ }
686
+ assert.equal(rows.length, 30);
687
+ assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);
688
+ assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);
689
+ for (const row of rows) {
690
+ const el = rwIModel2.elements.getElementProps(row.id);
691
+ assert.isDefined(el);
692
+ if (row.s) {
693
+ assert.equal(row.s, el.s);
694
+ }
695
+ else {
696
+ assert.isUndefined(el.s);
697
+ }
698
+ if (row.v) {
699
+ assert.equal(row.v, el.v);
700
+ }
701
+ else {
702
+ assert.isUndefined(el.v);
703
+ }
704
+ }
705
+ rows = [];
706
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
707
+ rwIModel2.withPreparedStatement("SELECT * FROM TestDomain.Test2dElement2nd", (stmt) => {
708
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
709
+ rows.push(stmt.getRow());
710
+ }
711
+ });
712
+ assert.equal(rows.length, 10);
713
+ assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);
714
+ assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);
715
+ for (const row of rows) {
716
+ const el = rwIModel2.elements.getElementProps(row.id);
717
+ assert.isDefined(el);
718
+ if (row.s) {
719
+ assert.equal(row.s, el.s);
720
+ }
721
+ else {
722
+ assert.isUndefined(el.s);
723
+ }
724
+ if (row.v) {
725
+ assert.equal(row.v, el.v);
726
+ }
727
+ else {
728
+ assert.isUndefined(el.v);
729
+ }
730
+ }
731
+ rows = [];
732
+ for await (const queryRow of rwIModel2.createQueryReader("SELECT * FROM TestDomain.Test2dElement2nd", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
733
+ rows.push(queryRow.toRow());
734
+ }
735
+ assert.equal(rows.length, 10);
736
+ assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);
737
+ assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);
738
+ for (const row of rows) {
739
+ const el = rwIModel2.elements.getElementProps(row.id);
740
+ assert.isDefined(el);
741
+ if (row.t) {
742
+ assert.equal(row.t, el.t);
743
+ }
744
+ else {
745
+ assert.isUndefined(el.t);
746
+ }
747
+ if (row.r) {
748
+ assert.equal(row.r, el.r);
749
+ }
750
+ else {
751
+ assert.isUndefined(el.r);
752
+ }
753
+ }
754
+ }
755
+ rwIModel.close();
756
+ rwIModel2.close();
757
+ });
758
+ it("pulling a changeset with extents changes should update the extents of the opened imodel", async () => {
759
+ const accessToken = await HubWrappers.getAccessToken(TestUserType.Regular);
760
+ const version0 = IModelTestUtils.resolveAssetFile("mirukuru.ibim");
761
+ const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: "projectExtentsTest", version0 });
762
+ const iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId });
763
+ const changesetIdBeforeExtentsChange = iModel.changeset.id;
764
+ const extents = iModel.projectExtents;
765
+ const newExtents = extents.clone();
766
+ newExtents.low.x += 100;
767
+ newExtents.low.y += 100;
768
+ newExtents.high.x += 100;
769
+ newExtents.high.y += 100;
770
+ iModel.updateProjectExtents(newExtents);
771
+ iModel.saveChanges("update project extents");
772
+ await iModel.pushChanges({ description: "update project extents" });
773
+ await HubWrappers.closeAndDeleteBriefcaseDb(accessToken, iModel);
774
+ const iModelBeforeExtentsChange = await HubWrappers.downloadAndOpenBriefcase({ accessToken, iTwinId, iModelId, asOf: IModelVersion.asOfChangeSet(changesetIdBeforeExtentsChange).toJSON() });
775
+ const extentsBeforePull = iModelBeforeExtentsChange.projectExtents;
776
+ // Read the extents fileProperty.
777
+ const extentsStrBeforePull = iModelBeforeExtentsChange.queryFilePropertyString({ name: "Extents", namespace: "dgn_Db" });
778
+ const ecefLocationBeforeExtentsChange = iModelBeforeExtentsChange.ecefLocation;
779
+ await iModelBeforeExtentsChange.pullChanges(); // Pulls the extents change.
780
+ const extentsAfterPull = iModelBeforeExtentsChange.projectExtents;
781
+ const extentsStrAfterPull = iModelBeforeExtentsChange.queryFilePropertyString({ name: "Extents", namespace: "dgn_Db" });
782
+ const ecefLocationAfterExtentsChange = iModelBeforeExtentsChange.ecefLocation;
783
+ expect(ecefLocationBeforeExtentsChange).to.not.be.undefined;
784
+ expect(ecefLocationAfterExtentsChange).to.not.be.undefined;
785
+ expect(ecefLocationBeforeExtentsChange?.isAlmostEqual(ecefLocationAfterExtentsChange)).to.be.false;
786
+ expect(extentsStrAfterPull).to.not.equal(extentsStrBeforePull);
787
+ expect(extentsAfterPull.isAlmostEqual(extentsBeforePull)).to.be.false;
788
+ await HubWrappers.closeAndDeleteBriefcaseDb(accessToken, iModelBeforeExtentsChange);
789
+ });
790
+ it("parent lock should suffice when inserting into deeply nested sub-model", async () => {
791
+ const version0 = IModelTestUtils.resolveAssetFile("test.bim");
792
+ const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: "subModelCoveredByParentLockTest", version0 });
793
+ let iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId });
794
+ iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
795
+ /*
796
+ Job Subject
797
+ +- DefinitionPartition -- [DefinitionModel]
798
+ */
799
+ await iModel.locks.acquireLocks({ shared: IModel.repositoryModelId });
800
+ const jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, "JobSubject").insert();
801
+ const definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, "Definition");
802
+ iModel.saveChanges();
803
+ const locks = iModel.locks;
804
+ expect(locks.isServerBased).true;
805
+ await iModel.pushChanges({ description: "create model" });
806
+ expect(iModel.locks).equal(locks); // pushing should not change your locks
807
+ /*
808
+ Job Subject <--- Lock this
809
+ +- DefinitionPartition -- [DefinitionModel]
810
+ SpatialCategory <=== insert this
811
+ DrawingCategory "
812
+ */
813
+ assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));
814
+ assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));
815
+ assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
816
+ await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
817
+ iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
818
+ iModel.locks.checkSharedLock(jobSubjectId, "", "");
819
+ iModel.locks.checkSharedLock(definitionModelId, "", "");
820
+ iModel.locks.checkExclusiveLock(definitionModelId, "", "");
821
+ const spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, "SpatialCategory", new SubCategoryAppearance()); // throws if we get locking error
822
+ const drawingCategoryId = DrawingCategory.insert(iModel, definitionModelId, "DrawingCategory", new SubCategoryAppearance());
823
+ assert.isTrue(iModel.elements.getElement(spatialCategoryId).model === definitionModelId);
824
+ assert.isTrue(iModel.elements.getElement(drawingCategoryId).model === definitionModelId);
825
+ iModel.saveChanges();
826
+ await iModel.pushChanges({ description: "insert category" });
827
+ /*
828
+ Create some more nesting.
829
+
830
+ Job Subject <--- Lock this
831
+ +- DefinitionPartition -- [DefinitionModel]
832
+ | SpatialCategory
833
+ +- Child Subject <== Insert
834
+ +- DocumentList -- [DocumentListModel] "
835
+ Drawing -- [DrawingModel] "
836
+ */
837
+ assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));
838
+ assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));
839
+ assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
840
+ await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
841
+ iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
842
+ iModel.locks.checkSharedLock(IModel.repositoryModelId, "", "");
843
+ const childSubjectId = Subject.insert(iModel, jobSubjectId, "Child Subject");
844
+ const documentListModelId = DocumentListModel.insert(iModel, childSubjectId, "Document"); // creates DocumentList and DocumentListModel
845
+ assert.isTrue(Id64.isValidId64(documentListModelId));
846
+ const drawingModelId = Drawing.insert(iModel, documentListModelId, "Drawing"); // creates Drawing and DrawingModel
847
+ assert.isTrue(iModel.elements.getElement(childSubjectId).parent?.id === jobSubjectId);
848
+ assert.isTrue(iModel.elements.getElement(childSubjectId).model === IModel.repositoryModelId);
849
+ assert.isTrue(iModel.elements.getElement(documentListModelId).parent?.id === childSubjectId);
850
+ assert.isTrue(iModel.elements.getElement(documentListModelId).model === IModel.repositoryModelId);
851
+ assert.isTrue(iModel.elements.getElement(drawingModelId).model === documentListModelId);
852
+ iModel.saveChanges();
853
+ await iModel.pushChanges({ description: "insert doc list with nested drawing model" });
854
+ /*
855
+ Verify that even a deeply nested insertion is covered by the exclusive lock on the top-level parent.
856
+
857
+ Job Subject <--- Lock this
858
+ +- DefinitionPartition -- DefinitionModel
859
+ | SpatialCategory
860
+ +- Child Subject
861
+ +- DocumentList -- [DocumentListModel]
862
+ Drawing -- [DrawingModel]
863
+ DrawingGraphic <== Insert this
864
+ */
865
+ assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));
866
+ assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));
867
+ assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
868
+ assert.isFalse(iModel.locks.holdsSharedLock(documentListModelId));
869
+ assert.isFalse(iModel.locks.holdsSharedLock(drawingModelId));
870
+ await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
871
+ iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
872
+ iModel.locks.checkSharedLock(IModel.repositoryModelId, "", "");
873
+ iModel.locks.checkSharedLock(documentListModelId, "", "");
874
+ iModel.locks.checkSharedLock(drawingModelId, "", "");
875
+ const drawingGraphicProps1 = {
876
+ classFullName: DrawingGraphic.classFullName,
877
+ model: drawingModelId,
878
+ category: drawingCategoryId,
879
+ code: Code.createEmpty(),
880
+ userLabel: "DrawingGraphic1",
881
+ geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),
882
+ placement: { origin: Point2d.create(2, 2), angle: 0 },
883
+ };
884
+ const drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);
885
+ assert.isTrue(iModel.elements.getElement(drawingGraphicId1).model === drawingModelId);
886
+ iModel.saveChanges();
887
+ expect(iModel.locks.holdsExclusiveLock(drawingModelId)).true;
888
+ const fileName = iModel[_nativeDb].getFilePath();
889
+ iModel.close(); // close rw
890
+ iModel = await BriefcaseDb.open({ fileName, readonly: true }); // reopen readonly
891
+ expect(iModel.locks.isServerBased).false; // readonly sessions should not have server based locks
892
+ // verify we can push changes from a readonly briefcase
893
+ await iModel.pushChanges({ description: "insert graphic into nested sub-model" });
894
+ // try it again to verify we can get the ServerBasedLocks again
895
+ await iModel.pushChanges({ description: "should do nothing" });
896
+ iModel.close();
897
+ // reopen readwrite to verify we released all locks from readonly briefcase
898
+ iModel = await BriefcaseDb.open({ fileName });
899
+ expect(iModel.locks.isServerBased).true;
900
+ const serverLocks = iModel.locks;
901
+ expect(serverLocks.holdsExclusiveLock(drawingModelId)).false;
902
+ expect(serverLocks.getLockCount(LockState.Shared)).equal(0);
903
+ expect(serverLocks.getLockCount(LockState.Exclusive)).equal(0);
904
+ iModel.close();
905
+ });
906
+ });
907
+ //# sourceMappingURL=IModelWrite.test.js.map