@itwin/core-backend 5.9.0-dev.8 → 5.9.0

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 (604) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +38 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js.map +1 -1
  7. package/lib/cjs/BlobContainerService.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  9. package/lib/cjs/BriefcaseManager.js +6 -3
  10. package/lib/cjs/BriefcaseManager.js.map +1 -1
  11. package/lib/cjs/CatalogDb.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +4 -4
  13. package/lib/cjs/Category.js.map +1 -1
  14. package/lib/cjs/ChangeSummaryManager.js +2 -2
  15. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  16. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  17. package/lib/cjs/ChangesetECAdaptor.d.ts +9 -1
  18. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +255 -249
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChangesetReader.d.ts +186 -0
  22. package/lib/cjs/ChangesetReader.d.ts.map +1 -0
  23. package/lib/cjs/ChangesetReader.js +372 -0
  24. package/lib/cjs/ChangesetReader.js.map +1 -0
  25. package/lib/cjs/ChangesetReaderTypes.d.ts +120 -0
  26. package/lib/cjs/ChangesetReaderTypes.d.ts.map +1 -0
  27. package/lib/cjs/ChangesetReaderTypes.js +23 -0
  28. package/lib/cjs/ChangesetReaderTypes.js.map +1 -0
  29. package/lib/cjs/ChannelControl.js.map +1 -1
  30. package/lib/cjs/CheckpointManager.js.map +1 -1
  31. package/lib/cjs/ClassRegistry.js +5 -5
  32. package/lib/cjs/ClassRegistry.js.map +1 -1
  33. package/lib/cjs/CloudSqlite.d.ts +1 -1
  34. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  35. package/lib/cjs/CloudSqlite.js +68 -13
  36. package/lib/cjs/CloudSqlite.js.map +1 -1
  37. package/lib/cjs/CodeService.js.map +1 -1
  38. package/lib/cjs/CodeSpecs.d.ts +3 -3
  39. package/lib/cjs/CodeSpecs.js.map +1 -1
  40. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  41. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  42. package/lib/cjs/DevTools.js.map +1 -1
  43. package/lib/cjs/DisplayStyle.d.ts +2 -2
  44. package/lib/cjs/DisplayStyle.js.map +1 -1
  45. package/lib/cjs/ECDb.js.map +1 -1
  46. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  47. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  48. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  49. package/lib/cjs/ECSqlStatement.js.map +1 -1
  50. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  51. package/lib/cjs/EditTxn.d.ts +55 -1
  52. package/lib/cjs/EditTxn.d.ts.map +1 -1
  53. package/lib/cjs/EditTxn.js +43 -1
  54. package/lib/cjs/EditTxn.js.map +1 -1
  55. package/lib/cjs/Element.d.ts +79 -10
  56. package/lib/cjs/Element.d.ts.map +1 -1
  57. package/lib/cjs/Element.js +38 -2
  58. package/lib/cjs/Element.js.map +1 -1
  59. package/lib/cjs/ElementAspect.d.ts +1 -1
  60. package/lib/cjs/ElementAspect.js.map +1 -1
  61. package/lib/cjs/ElementGraphics.js.map +1 -1
  62. package/lib/cjs/ElementTreeWalker.d.ts +5 -5
  63. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  64. package/lib/cjs/Entity.js.map +1 -1
  65. package/lib/cjs/EntityReferences.js.map +1 -1
  66. package/lib/cjs/ExportGraphics.js.map +1 -1
  67. package/lib/cjs/ExternalSource.d.ts +2 -2
  68. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  69. package/lib/cjs/ExternalSource.js.map +1 -1
  70. package/lib/cjs/FontFile.js.map +1 -1
  71. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  72. package/lib/cjs/GeographicCRSServices.d.ts +15 -0
  73. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  74. package/lib/cjs/GeographicCRSServices.js +13 -4
  75. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  76. package/lib/cjs/GeometrySummary.js +47 -47
  77. package/lib/cjs/GeometrySummary.js.map +1 -1
  78. package/lib/cjs/IModelDb.d.ts +31 -23
  79. package/lib/cjs/IModelDb.d.ts.map +1 -1
  80. package/lib/cjs/IModelDb.js +53 -34
  81. package/lib/cjs/IModelDb.js.map +1 -1
  82. package/lib/cjs/IModelDbFonts.js.map +1 -1
  83. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  84. package/lib/cjs/IModelHost.js.map +1 -1
  85. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  86. package/lib/cjs/IModelJsFs.js.map +1 -1
  87. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  88. package/lib/cjs/IpcHost.d.ts.map +1 -1
  89. package/lib/cjs/IpcHost.js +33 -13
  90. package/lib/cjs/IpcHost.js.map +1 -1
  91. package/lib/cjs/LineStyle.d.ts +6 -6
  92. package/lib/cjs/LineStyle.js.map +1 -1
  93. package/lib/cjs/LocalHub.js +1 -1
  94. package/lib/cjs/LocalHub.js.map +1 -1
  95. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  96. package/lib/cjs/LockControl.d.ts +85 -1
  97. package/lib/cjs/LockControl.d.ts.map +1 -1
  98. package/lib/cjs/LockControl.js.map +1 -1
  99. package/lib/cjs/Material.d.ts +1 -1
  100. package/lib/cjs/Material.js.map +1 -1
  101. package/lib/cjs/Model.d.ts +40 -6
  102. package/lib/cjs/Model.d.ts.map +1 -1
  103. package/lib/cjs/Model.js +24 -0
  104. package/lib/cjs/Model.js.map +1 -1
  105. package/lib/cjs/NativeAppStorage.js.map +1 -1
  106. package/lib/cjs/NativeHost.js.map +1 -1
  107. package/lib/cjs/NavigationRelationship.js.map +1 -1
  108. package/lib/cjs/PartialChangeUnifier.d.ts +77 -0
  109. package/lib/cjs/PartialChangeUnifier.d.ts.map +1 -0
  110. package/lib/cjs/PartialChangeUnifier.js +234 -0
  111. package/lib/cjs/PartialChangeUnifier.js.map +1 -0
  112. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  113. package/lib/cjs/PropertyStore.js.map +1 -1
  114. package/lib/cjs/Relationship.d.ts +10 -10
  115. package/lib/cjs/Relationship.js +6 -6
  116. package/lib/cjs/Relationship.js.map +1 -1
  117. package/lib/cjs/RpcBackend.js.map +1 -1
  118. package/lib/cjs/SQLiteDb.js.map +1 -1
  119. package/lib/cjs/Schema.js.map +1 -1
  120. package/lib/cjs/SchemaSync.js.map +1 -1
  121. package/lib/cjs/SchemaUtils.js.map +1 -1
  122. package/lib/cjs/SheetIndex.d.ts +4 -4
  123. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  124. package/lib/cjs/SheetIndex.js.map +1 -1
  125. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  126. package/lib/cjs/SqliteChangesetReader.js +1 -1
  127. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  128. package/lib/cjs/SqliteStatement.js.map +1 -1
  129. package/lib/cjs/StashManager.js.map +1 -1
  130. package/lib/cjs/Texture.d.ts +1 -1
  131. package/lib/cjs/Texture.js.map +1 -1
  132. package/lib/cjs/TileStorage.js.map +1 -1
  133. package/lib/cjs/TxnManager.d.ts +114 -4
  134. package/lib/cjs/TxnManager.d.ts.map +1 -1
  135. package/lib/cjs/TxnManager.js +196 -8
  136. package/lib/cjs/TxnManager.js.map +1 -1
  137. package/lib/cjs/ViewDefinition.d.ts +25 -13
  138. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  139. package/lib/cjs/ViewDefinition.js +77 -25
  140. package/lib/cjs/ViewDefinition.js.map +1 -1
  141. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  142. package/lib/cjs/ViewStore.d.ts.map +1 -1
  143. package/lib/cjs/ViewStore.js +63 -21
  144. package/lib/cjs/ViewStore.js.map +1 -1
  145. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  146. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  147. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  148. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  149. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  150. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  151. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  152. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  153. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  154. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  155. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  156. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  157. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  158. package/lib/cjs/core-backend.d.ts +3 -0
  159. package/lib/cjs/core-backend.d.ts.map +1 -1
  160. package/lib/cjs/core-backend.js +3 -0
  161. package/lib/cjs/core-backend.js.map +1 -1
  162. package/lib/cjs/domains/FunctionalElements.d.ts +1 -1
  163. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  164. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  165. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  166. package/lib/cjs/domains/GenericElements.d.ts +2 -2
  167. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  168. package/lib/cjs/domains/GenericElements.js.map +1 -1
  169. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  170. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  171. package/lib/cjs/internal/ChannelAdmin.d.ts +2 -2
  172. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  173. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  174. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  175. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  176. package/lib/cjs/internal/HubMock.d.ts +2 -0
  177. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  178. package/lib/cjs/internal/HubMock.js +7 -0
  179. package/lib/cjs/internal/HubMock.js.map +1 -1
  180. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  181. package/lib/cjs/internal/IntegrityCheck.d.ts +10 -10
  182. package/lib/cjs/internal/IntegrityCheck.js +22 -22
  183. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  184. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  185. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  186. package/lib/cjs/internal/NoLocks.js +6 -0
  187. package/lib/cjs/internal/NoLocks.js.map +1 -1
  188. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  189. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  190. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  191. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  192. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  193. package/lib/cjs/internal/Symbols.js.map +1 -1
  194. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  195. package/lib/cjs/internal/cross-package.js.map +1 -1
  196. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  197. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  198. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  199. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  200. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  201. package/lib/cjs/rpc/multipart.js.map +1 -1
  202. package/lib/cjs/rpc/tracing.js.map +1 -1
  203. package/lib/cjs/rpc/web/logging.js.map +1 -1
  204. package/lib/cjs/rpc/web/request.js.map +1 -1
  205. package/lib/cjs/rpc/web/response.js.map +1 -1
  206. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  207. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  208. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  209. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  210. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  211. package/lib/cjs/workspace/Settings.d.ts +6 -4
  212. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  213. package/lib/cjs/workspace/Settings.js.map +1 -1
  214. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  215. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  216. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  217. package/lib/cjs/workspace/Workspace.js.map +1 -1
  218. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  219. package/lib/esm/BackendHubAccess.d.ts +38 -0
  220. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  221. package/lib/esm/BackendHubAccess.js.map +1 -1
  222. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  223. package/lib/esm/BisCoreSchema.js.map +1 -1
  224. package/lib/esm/BlobContainerService.js.map +1 -1
  225. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  226. package/lib/esm/BriefcaseManager.js +6 -3
  227. package/lib/esm/BriefcaseManager.js.map +1 -1
  228. package/lib/esm/CatalogDb.js.map +1 -1
  229. package/lib/esm/Category.d.ts +4 -4
  230. package/lib/esm/Category.js.map +1 -1
  231. package/lib/esm/ChangeSummaryManager.js +2 -2
  232. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  233. package/lib/esm/ChangedElementsDb.js.map +1 -1
  234. package/lib/esm/ChangesetECAdaptor.d.ts +9 -1
  235. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  236. package/lib/esm/ChangesetECAdaptor.js +255 -249
  237. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  238. package/lib/esm/ChangesetReader.d.ts +186 -0
  239. package/lib/esm/ChangesetReader.d.ts.map +1 -0
  240. package/lib/esm/ChangesetReader.js +368 -0
  241. package/lib/esm/ChangesetReader.js.map +1 -0
  242. package/lib/esm/ChangesetReaderTypes.d.ts +120 -0
  243. package/lib/esm/ChangesetReaderTypes.d.ts.map +1 -0
  244. package/lib/esm/ChangesetReaderTypes.js +20 -0
  245. package/lib/esm/ChangesetReaderTypes.js.map +1 -0
  246. package/lib/esm/ChannelControl.js.map +1 -1
  247. package/lib/esm/CheckpointManager.js.map +1 -1
  248. package/lib/esm/ClassRegistry.js +5 -5
  249. package/lib/esm/ClassRegistry.js.map +1 -1
  250. package/lib/esm/CloudSqlite.d.ts +1 -1
  251. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  252. package/lib/esm/CloudSqlite.js +69 -14
  253. package/lib/esm/CloudSqlite.js.map +1 -1
  254. package/lib/esm/CodeService.js.map +1 -1
  255. package/lib/esm/CodeSpecs.d.ts +3 -3
  256. package/lib/esm/CodeSpecs.js.map +1 -1
  257. package/lib/esm/ConcurrentQuery.js.map +1 -1
  258. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  259. package/lib/esm/DevTools.js.map +1 -1
  260. package/lib/esm/DisplayStyle.d.ts +2 -2
  261. package/lib/esm/DisplayStyle.js.map +1 -1
  262. package/lib/esm/ECDb.js.map +1 -1
  263. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  264. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  265. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  266. package/lib/esm/ECSqlStatement.js.map +1 -1
  267. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  268. package/lib/esm/EditTxn.d.ts +55 -1
  269. package/lib/esm/EditTxn.d.ts.map +1 -1
  270. package/lib/esm/EditTxn.js +43 -1
  271. package/lib/esm/EditTxn.js.map +1 -1
  272. package/lib/esm/Element.d.ts +79 -10
  273. package/lib/esm/Element.d.ts.map +1 -1
  274. package/lib/esm/Element.js +38 -2
  275. package/lib/esm/Element.js.map +1 -1
  276. package/lib/esm/ElementAspect.d.ts +1 -1
  277. package/lib/esm/ElementAspect.js.map +1 -1
  278. package/lib/esm/ElementGraphics.js.map +1 -1
  279. package/lib/esm/ElementTreeWalker.d.ts +5 -5
  280. package/lib/esm/ElementTreeWalker.js.map +1 -1
  281. package/lib/esm/Entity.js.map +1 -1
  282. package/lib/esm/EntityReferences.js.map +1 -1
  283. package/lib/esm/ExportGraphics.js.map +1 -1
  284. package/lib/esm/ExternalSource.d.ts +2 -2
  285. package/lib/esm/ExternalSource.d.ts.map +1 -1
  286. package/lib/esm/ExternalSource.js.map +1 -1
  287. package/lib/esm/FontFile.js.map +1 -1
  288. package/lib/esm/GeoCoordConfig.js.map +1 -1
  289. package/lib/esm/GeographicCRSServices.d.ts +15 -0
  290. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  291. package/lib/esm/GeographicCRSServices.js +12 -4
  292. package/lib/esm/GeographicCRSServices.js.map +1 -1
  293. package/lib/esm/GeometrySummary.js +47 -47
  294. package/lib/esm/GeometrySummary.js.map +1 -1
  295. package/lib/esm/IModelDb.d.ts +31 -23
  296. package/lib/esm/IModelDb.d.ts.map +1 -1
  297. package/lib/esm/IModelDb.js +54 -35
  298. package/lib/esm/IModelDb.js.map +1 -1
  299. package/lib/esm/IModelDbFonts.js.map +1 -1
  300. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  301. package/lib/esm/IModelHost.js.map +1 -1
  302. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  303. package/lib/esm/IModelJsFs.js.map +1 -1
  304. package/lib/esm/ImageSourceConversion.js.map +1 -1
  305. package/lib/esm/IpcHost.d.ts.map +1 -1
  306. package/lib/esm/IpcHost.js +33 -13
  307. package/lib/esm/IpcHost.js.map +1 -1
  308. package/lib/esm/LineStyle.d.ts +6 -6
  309. package/lib/esm/LineStyle.js.map +1 -1
  310. package/lib/esm/LocalHub.js +1 -1
  311. package/lib/esm/LocalHub.js.map +1 -1
  312. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  313. package/lib/esm/LockControl.d.ts +85 -1
  314. package/lib/esm/LockControl.d.ts.map +1 -1
  315. package/lib/esm/LockControl.js.map +1 -1
  316. package/lib/esm/Material.d.ts +1 -1
  317. package/lib/esm/Material.js.map +1 -1
  318. package/lib/esm/Model.d.ts +40 -6
  319. package/lib/esm/Model.d.ts.map +1 -1
  320. package/lib/esm/Model.js +24 -0
  321. package/lib/esm/Model.js.map +1 -1
  322. package/lib/esm/NativeAppStorage.js.map +1 -1
  323. package/lib/esm/NativeHost.js.map +1 -1
  324. package/lib/esm/NavigationRelationship.js.map +1 -1
  325. package/lib/esm/PartialChangeUnifier.d.ts +77 -0
  326. package/lib/esm/PartialChangeUnifier.d.ts.map +1 -0
  327. package/lib/esm/PartialChangeUnifier.js +230 -0
  328. package/lib/esm/PartialChangeUnifier.js.map +1 -0
  329. package/lib/esm/PromiseMemoizer.js.map +1 -1
  330. package/lib/esm/PropertyStore.js.map +1 -1
  331. package/lib/esm/Relationship.d.ts +10 -10
  332. package/lib/esm/Relationship.js +6 -6
  333. package/lib/esm/Relationship.js.map +1 -1
  334. package/lib/esm/RpcBackend.js.map +1 -1
  335. package/lib/esm/SQLiteDb.js.map +1 -1
  336. package/lib/esm/Schema.js.map +1 -1
  337. package/lib/esm/SchemaSync.js.map +1 -1
  338. package/lib/esm/SchemaUtils.js.map +1 -1
  339. package/lib/esm/SheetIndex.d.ts +4 -4
  340. package/lib/esm/SheetIndex.d.ts.map +1 -1
  341. package/lib/esm/SheetIndex.js.map +1 -1
  342. package/lib/esm/SqliteChangesetReader.d.ts.map +1 -1
  343. package/lib/esm/SqliteChangesetReader.js +1 -1
  344. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  345. package/lib/esm/SqliteStatement.js.map +1 -1
  346. package/lib/esm/StashManager.js.map +1 -1
  347. package/lib/esm/Texture.d.ts +1 -1
  348. package/lib/esm/Texture.js.map +1 -1
  349. package/lib/esm/TileStorage.js.map +1 -1
  350. package/lib/esm/TxnManager.d.ts +114 -4
  351. package/lib/esm/TxnManager.d.ts.map +1 -1
  352. package/lib/esm/TxnManager.js +196 -8
  353. package/lib/esm/TxnManager.js.map +1 -1
  354. package/lib/esm/ViewDefinition.d.ts +25 -13
  355. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  356. package/lib/esm/ViewDefinition.js +78 -26
  357. package/lib/esm/ViewDefinition.js.map +1 -1
  358. package/lib/esm/ViewStateHydrator.js.map +1 -1
  359. package/lib/esm/ViewStore.d.ts.map +1 -1
  360. package/lib/esm/ViewStore.js +64 -22
  361. package/lib/esm/ViewStore.js.map +1 -1
  362. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  363. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  364. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  365. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  366. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  367. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  368. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  369. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  370. package/lib/esm/core-backend.d.ts +3 -0
  371. package/lib/esm/core-backend.d.ts.map +1 -1
  372. package/lib/esm/core-backend.js +3 -0
  373. package/lib/esm/core-backend.js.map +1 -1
  374. package/lib/esm/domains/FunctionalElements.d.ts +1 -1
  375. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  376. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  377. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  378. package/lib/esm/domains/GenericElements.d.ts +2 -2
  379. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  380. package/lib/esm/domains/GenericElements.js.map +1 -1
  381. package/lib/esm/domains/GenericSchema.js.map +1 -1
  382. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  383. package/lib/esm/internal/ChannelAdmin.d.ts +2 -2
  384. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  385. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  386. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  387. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  388. package/lib/esm/internal/HubMock.d.ts +2 -0
  389. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  390. package/lib/esm/internal/HubMock.js +7 -0
  391. package/lib/esm/internal/HubMock.js.map +1 -1
  392. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  393. package/lib/esm/internal/IntegrityCheck.d.ts +10 -10
  394. package/lib/esm/internal/IntegrityCheck.js +22 -22
  395. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  396. package/lib/esm/internal/NativePlatform.js.map +1 -1
  397. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  398. package/lib/esm/internal/NoLocks.js +6 -0
  399. package/lib/esm/internal/NoLocks.js.map +1 -1
  400. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  401. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  402. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  403. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  404. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  405. package/lib/esm/internal/Symbols.js.map +1 -1
  406. package/lib/esm/internal/annotations/fields.js.map +1 -1
  407. package/lib/esm/internal/cross-package.js.map +1 -1
  408. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  409. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  410. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  411. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  412. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  413. package/lib/esm/rpc/multipart.js.map +1 -1
  414. package/lib/esm/rpc/tracing.js.map +1 -1
  415. package/lib/esm/rpc/web/logging.js.map +1 -1
  416. package/lib/esm/rpc/web/request.js.map +1 -1
  417. package/lib/esm/rpc/web/response.js.map +1 -1
  418. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  419. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  420. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  421. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  422. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  423. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  424. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  425. package/lib/esm/test/AttachDb.test.js +11 -11
  426. package/lib/esm/test/AttachDb.test.js.map +1 -1
  427. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  428. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  429. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  430. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  431. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  432. package/lib/esm/test/IModelHost.test.js.map +1 -1
  433. package/lib/esm/test/IModelTestUtils.d.ts +1 -0
  434. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  435. package/lib/esm/test/IModelTestUtils.js +5 -0
  436. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  437. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  438. package/lib/esm/test/IpcHost.test.js +112 -0
  439. package/lib/esm/test/IpcHost.test.js.map +1 -1
  440. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  441. package/lib/esm/test/PrintElementTree.js.map +1 -1
  442. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  443. package/lib/esm/test/RevisionUtility.js.map +1 -1
  444. package/lib/esm/test/SchemaUtils.test.js +25 -25
  445. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  446. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  447. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  448. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  449. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  450. package/lib/esm/test/TestEditTxn.js.map +1 -1
  451. package/lib/esm/test/TestUtils.js.map +1 -1
  452. package/lib/esm/test/annotations/Fields.test.js +53 -53
  453. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  454. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  455. package/lib/esm/test/annotations/LeaderGeometry.test.js +0 -1
  456. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  457. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  458. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  459. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  460. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  461. package/lib/esm/test/categories/Category.test.js.map +1 -1
  462. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  463. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  464. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  465. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  466. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  467. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  468. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  469. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  470. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  471. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  472. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  473. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  474. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  475. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  476. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  477. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  478. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  479. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  480. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  481. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  482. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  483. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  484. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  485. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  486. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  487. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  488. package/lib/esm/test/element/DeleteDefinitionElements.test.js +819 -26
  489. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  490. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  491. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  492. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  493. package/lib/esm/test/element/ElementRoundTrip.test.js +283 -142
  494. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  495. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  496. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  497. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  498. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  499. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  500. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  501. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  502. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  503. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  504. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  505. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  506. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  507. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  508. package/lib/esm/test/hubaccess/Rebase.test.js +57 -57
  509. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  510. package/lib/esm/test/hubaccess/SemanticRebase.test.js +145 -145
  511. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  512. package/lib/esm/test/imageData.js.map +1 -1
  513. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  514. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  515. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  516. package/lib/esm/test/imodel/IModel.test.js +45 -45
  517. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  518. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  519. package/lib/esm/test/imodel/SchemaXmlImport.test.js +77 -13
  520. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  521. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  522. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  523. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  524. package/lib/esm/test/index.js.map +1 -1
  525. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  526. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  527. package/lib/esm/test/misc/GeoServices.test.js +43 -1
  528. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  529. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  530. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  531. package/lib/esm/test/rpc/response.test.js.map +1 -1
  532. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  533. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  534. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  535. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  536. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  537. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  538. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  539. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  540. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  541. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  542. package/lib/esm/test/standalone/ChangesetReader.test.js +4201 -1671
  543. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  544. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  545. package/lib/esm/test/standalone/DeleteElements.test.d.ts +2 -0
  546. package/lib/esm/test/standalone/DeleteElements.test.d.ts.map +1 -0
  547. package/lib/esm/test/standalone/DeleteElements.test.js +625 -0
  548. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -0
  549. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  550. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  551. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  552. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  553. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  554. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  555. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  556. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  557. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  558. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  559. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  560. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  561. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  562. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  563. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  564. package/lib/esm/test/standalone/IntegrityCheck.test.js +214 -5
  565. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  566. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  567. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  568. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  569. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  570. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  571. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.d.ts +2 -0
  572. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.d.ts.map +1 -0
  573. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +1862 -0
  574. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -0
  575. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  576. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  577. package/lib/esm/test/standalone/ServerBasedLocks.test.js +907 -3
  578. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  579. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  580. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  581. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  582. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  583. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  584. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  585. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  586. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  587. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  588. package/lib/esm/test/standalone/TxnManager.test.js +90 -0
  589. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  590. package/lib/esm/test/standalone/ViewDefinition.test.js +18 -7
  591. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  592. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  593. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  594. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  595. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  596. package/lib/esm/workspace/Settings.d.ts +6 -4
  597. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  598. package/lib/esm/workspace/Settings.js.map +1 -1
  599. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  600. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  601. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  602. package/lib/esm/workspace/Workspace.js.map +1 -1
  603. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  604. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"DgnDbWorker.test.js","sourceRoot":"","sources":["../../../../src/test/native/DgnDbWorker.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport { BeDuration } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { IModelNative } from \"../../internal/NativePlatform\";\r\nimport { StandaloneDb } from \"../../IModelDb\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { _nativeDb } from \"../../internal/Symbols\";\r\n\r\ndescribe(\"DgnDbWorker\", () => {\r\n let imodel: StandaloneDb;\r\n\r\n function openIModel(): void {\r\n const rootSubject = { name: \"DgnDbWorker tests\", description: \"DgnDbWorker tests\" };\r\n imodel = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DgnDbWorker\", \"DgnDbWorker.bim\"), { rootSubject });\r\n }\r\n\r\n before(() => {\r\n openIModel();\r\n });\r\n\r\n after(() => {\r\n imodel.close();\r\n });\r\n\r\n class Worker {\r\n public promise: Promise<void> | undefined;\r\n private readonly _worker: IModelJsNative.TestWorker;\r\n\r\n public constructor() {\r\n this._worker = new IModelNative.platform.TestWorker(imodel[_nativeDb]);\r\n }\r\n\r\n public queue() { this.promise = this._worker.queue(); }\r\n public cancel() { this._worker.cancel(); }\r\n public setReady() { this._worker.setReady(); }\r\n public setThrow() { this._worker.setThrow(); }\r\n\r\n public get isCanceled(): boolean { return this._worker.isCanceled(); }\r\n public get wasExecuted(): boolean { return this._worker.wasExecuted(); }\r\n public get state(): IModelJsNative.TestWorkerState { return this._worker.getState(); }\r\n\r\n public get wasQueued() { return IModelJsNative.TestWorkerState.NotQueued !== this.state; }\r\n public get isQueued() { return IModelJsNative.TestWorkerState.Queued === this.state; }\r\n public get isRunning() { return IModelJsNative.TestWorkerState.Running === this.state; }\r\n public get isError() { return IModelJsNative.TestWorkerState.Error === this.state; }\r\n public get isOk() { return IModelJsNative.TestWorkerState.Ok === this.state; }\r\n public get isSkipped() { return IModelJsNative.TestWorkerState.Skipped === this.state; }\r\n public get isAborted() { return IModelJsNative.TestWorkerState.Aborted === this.state; }\r\n }\r\n\r\n async function waitUntil(condition: () => boolean): Promise<void> {\r\n if (condition())\r\n return;\r\n\r\n await new Promise<void>((resolve: any) => setTimeout(resolve, 100));\r\n return waitUntil(condition);\r\n }\r\n\r\n it(\"executes asynchronously\", async () => {\r\n const worker = new Worker();\r\n await BeDuration.wait(1000);\r\n expect(worker.wasQueued).to.be.false;\r\n expect(worker.isCanceled).to.be.false;\r\n\r\n worker.queue();\r\n expect(worker.isQueued || worker.isRunning).to.be.true;\r\n\r\n worker.setReady();\r\n await worker.promise;\r\n\r\n expect(worker.wasExecuted).to.be.true;\r\n expect(worker.isCanceled).to.be.false;\r\n expect(worker.isOk).to.be.true;\r\n });\r\n\r\n it(\"executes a maximum of 4 simultaneously\", async () => {\r\n // Create 4 workers. They should all start executing.\r\n const first = [new Worker(), new Worker(), new Worker(), new Worker()];\r\n for (const worker of first)\r\n worker.queue();\r\n\r\n await waitUntil(() => first.every((x) => x.isRunning));\r\n\r\n // Queue up 2 more workers. They should not start executing until at least one of the first 4 resolves.\r\n const next = [new Worker(), new Worker()];\r\n for (const worker of next)\r\n worker.queue();\r\n\r\n await BeDuration.wait(1000);\r\n expect(first.every((x) => x.isRunning)).to.be.true;\r\n expect(next.every((x) => x.isQueued)).to.be.true;\r\n\r\n // Let the first worker resolve.\r\n first[0].setReady();\r\n await first[0].promise;\r\n expect(first[0].isOk).to.be.true;\r\n\r\n // Exactly one of the 2 workers remaining in the queue should start executing.\r\n await waitUntil(() => next.some((x) => x.isRunning));\r\n await BeDuration.wait(1000);\r\n expect(next.every((x) => x.isRunning)).to.be.false;\r\n\r\n // Clear the queue.\r\n const workers = first.concat(next);\r\n for (const worker of workers)\r\n worker.setReady();\r\n\r\n await Promise.all(workers.map((x) => x.promise).filter((p): p is Promise<void> => p !== undefined)); // eslint-disable-line @typescript-eslint/promise-function-async\r\n expect(workers.every((x) => x.isOk)).to.be.true;\r\n });\r\n\r\n it(\"skips execution if canceled before execution begins\", async () => {\r\n const worker = new Worker();\r\n worker.cancel();\r\n expect(worker.isCanceled).to.be.true;\r\n worker.queue();\r\n await assert.isRejected(worker.promise!, \"canceled\");\r\n expect(worker.isSkipped).to.be.true;\r\n expect(worker.wasExecuted).to.be.false;\r\n });\r\n\r\n it(\"executes if canceled after execution begins\", async () => {\r\n const worker = new Worker();\r\n worker.queue();\r\n await waitUntil(() => worker.isRunning);\r\n worker.cancel();\r\n worker.setReady();\r\n await worker.promise;\r\n expect(worker.isCanceled).to.be.true;\r\n expect(worker.isSkipped).to.be.false;\r\n expect(worker.wasExecuted).to.be.true;\r\n });\r\n\r\n it(\"throws\", async () => {\r\n const worker = new Worker();\r\n worker.setThrow();\r\n worker.queue();\r\n await assert.isRejected(worker.promise!, \"throw\");\r\n expect(worker.isCanceled).to.be.false;\r\n expect(worker.isError).to.be.true;\r\n });\r\n\r\n it(\"cancels all workers before iModel is closed\", async () => {\r\n const resolve = new Worker();\r\n resolve.setReady();\r\n const reject = new Worker();\r\n reject.setThrow();\r\n\r\n // These 6 workers will never resolve nor reject explicitly.\r\n const cancel = [new Worker(), new Worker(), new Worker(), new Worker(), new Worker(), new Worker()];\r\n\r\n // Queue up all the workers.\r\n const workers = cancel.concat([resolve, reject]);\r\n for (const worker of workers)\r\n worker.queue();\r\n\r\n // Closing the iModel cancels all extant workers.\r\n imodel.close();\r\n openIModel();\r\n\r\n await expect(Promise.all(workers.map(async (x) => x.promise))).rejectedWith(\"canceled\");\r\n\r\n expect(cancel.every((x) => x.isCanceled)).to.be.true;\r\n expect(cancel.every((x) => x.isAborted || x.isSkipped)).to.be.true;\r\n expect(resolve.isOk || resolve.isSkipped || resolve.isAborted).to.be.true;\r\n expect(reject.isError || reject.isSkipped).to.be.true;\r\n });\r\n\r\n it(\"cancels a snap request\", async () => {\r\n // Block the worker thread pool with 4 workers so that our snap cannot complete before they complete.\r\n const blockers = [new Worker(), new Worker(), new Worker(), new Worker()];\r\n blockers.forEach((w) => w.queue());\r\n\r\n const sessionId = \"0x222\";\r\n const snap = imodel.requestSnap(sessionId, {\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n id: \"0x111\",\r\n worldToView: Matrix4d.createIdentity().toJSON(),\r\n });\r\n\r\n const toBeRejected = expect(snap).to.be.rejectedWith(\"aborted\");\r\n imodel.cancelSnap(sessionId);\r\n\r\n // Clear the worker thread pool so the snap request (now canceled) can be processed.\r\n blockers.forEach((w) => w.setReady());\r\n await Promise.all(blockers.map(async (w) => w.promise).filter((p): p is Promise<void> => p !== undefined));\r\n\r\n await toBeRejected;\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"DgnDbWorker.test.js","sourceRoot":"","sources":["../../../../src/test/native/DgnDbWorker.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, expect } from \"chai\";\nimport { BeDuration } from \"@itwin/core-bentley\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { IModelNative } from \"../../internal/NativePlatform\";\nimport { StandaloneDb } from \"../../IModelDb\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\nimport { _nativeDb } from \"../../internal/Symbols\";\n\ndescribe(\"DgnDbWorker\", () => {\n let imodel: StandaloneDb;\n\n function openIModel(): void {\n const rootSubject = { name: \"DgnDbWorker tests\", description: \"DgnDbWorker tests\" };\n imodel = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DgnDbWorker\", \"DgnDbWorker.bim\"), { rootSubject });\n }\n\n before(() => {\n openIModel();\n });\n\n after(() => {\n imodel.close();\n });\n\n class Worker {\n public promise: Promise<void> | undefined;\n private readonly _worker: IModelJsNative.TestWorker;\n\n public constructor() {\n this._worker = new IModelNative.platform.TestWorker(imodel[_nativeDb]);\n }\n\n public queue() { this.promise = this._worker.queue(); }\n public cancel() { this._worker.cancel(); }\n public setReady() { this._worker.setReady(); }\n public setThrow() { this._worker.setThrow(); }\n\n public get isCanceled(): boolean { return this._worker.isCanceled(); }\n public get wasExecuted(): boolean { return this._worker.wasExecuted(); }\n public get state(): IModelJsNative.TestWorkerState { return this._worker.getState(); }\n\n public get wasQueued() { return IModelJsNative.TestWorkerState.NotQueued !== this.state; }\n public get isQueued() { return IModelJsNative.TestWorkerState.Queued === this.state; }\n public get isRunning() { return IModelJsNative.TestWorkerState.Running === this.state; }\n public get isError() { return IModelJsNative.TestWorkerState.Error === this.state; }\n public get isOk() { return IModelJsNative.TestWorkerState.Ok === this.state; }\n public get isSkipped() { return IModelJsNative.TestWorkerState.Skipped === this.state; }\n public get isAborted() { return IModelJsNative.TestWorkerState.Aborted === this.state; }\n }\n\n async function waitUntil(condition: () => boolean): Promise<void> {\n if (condition())\n return;\n\n await new Promise<void>((resolve: any) => setTimeout(resolve, 100));\n return waitUntil(condition);\n }\n\n it(\"executes asynchronously\", async () => {\n const worker = new Worker();\n await BeDuration.wait(1000);\n expect(worker.wasQueued).to.be.false;\n expect(worker.isCanceled).to.be.false;\n\n worker.queue();\n expect(worker.isQueued || worker.isRunning).to.be.true;\n\n worker.setReady();\n await worker.promise;\n\n expect(worker.wasExecuted).to.be.true;\n expect(worker.isCanceled).to.be.false;\n expect(worker.isOk).to.be.true;\n });\n\n it(\"executes a maximum of 4 simultaneously\", async () => {\n // Create 4 workers. They should all start executing.\n const first = [new Worker(), new Worker(), new Worker(), new Worker()];\n for (const worker of first)\n worker.queue();\n\n await waitUntil(() => first.every((x) => x.isRunning));\n\n // Queue up 2 more workers. They should not start executing until at least one of the first 4 resolves.\n const next = [new Worker(), new Worker()];\n for (const worker of next)\n worker.queue();\n\n await BeDuration.wait(1000);\n expect(first.every((x) => x.isRunning)).to.be.true;\n expect(next.every((x) => x.isQueued)).to.be.true;\n\n // Let the first worker resolve.\n first[0].setReady();\n await first[0].promise;\n expect(first[0].isOk).to.be.true;\n\n // Exactly one of the 2 workers remaining in the queue should start executing.\n await waitUntil(() => next.some((x) => x.isRunning));\n await BeDuration.wait(1000);\n expect(next.every((x) => x.isRunning)).to.be.false;\n\n // Clear the queue.\n const workers = first.concat(next);\n for (const worker of workers)\n worker.setReady();\n\n await Promise.all(workers.map((x) => x.promise).filter((p): p is Promise<void> => p !== undefined)); // eslint-disable-line @typescript-eslint/promise-function-async\n expect(workers.every((x) => x.isOk)).to.be.true;\n });\n\n it(\"skips execution if canceled before execution begins\", async () => {\n const worker = new Worker();\n worker.cancel();\n expect(worker.isCanceled).to.be.true;\n worker.queue();\n await assert.isRejected(worker.promise!, \"canceled\");\n expect(worker.isSkipped).to.be.true;\n expect(worker.wasExecuted).to.be.false;\n });\n\n it(\"executes if canceled after execution begins\", async () => {\n const worker = new Worker();\n worker.queue();\n await waitUntil(() => worker.isRunning);\n worker.cancel();\n worker.setReady();\n await worker.promise;\n expect(worker.isCanceled).to.be.true;\n expect(worker.isSkipped).to.be.false;\n expect(worker.wasExecuted).to.be.true;\n });\n\n it(\"throws\", async () => {\n const worker = new Worker();\n worker.setThrow();\n worker.queue();\n await assert.isRejected(worker.promise!, \"throw\");\n expect(worker.isCanceled).to.be.false;\n expect(worker.isError).to.be.true;\n });\n\n it(\"cancels all workers before iModel is closed\", async () => {\n const resolve = new Worker();\n resolve.setReady();\n const reject = new Worker();\n reject.setThrow();\n\n // These 6 workers will never resolve nor reject explicitly.\n const cancel = [new Worker(), new Worker(), new Worker(), new Worker(), new Worker(), new Worker()];\n\n // Queue up all the workers.\n const workers = cancel.concat([resolve, reject]);\n for (const worker of workers)\n worker.queue();\n\n // Closing the iModel cancels all extant workers.\n imodel.close();\n openIModel();\n\n await expect(Promise.all(workers.map(async (x) => x.promise))).rejectedWith(\"canceled\");\n\n expect(cancel.every((x) => x.isCanceled)).to.be.true;\n expect(cancel.every((x) => x.isAborted || x.isSkipped)).to.be.true;\n expect(resolve.isOk || resolve.isSkipped || resolve.isAborted).to.be.true;\n expect(reject.isError || reject.isSkipped).to.be.true;\n });\n\n it(\"cancels a snap request\", async () => {\n // Block the worker thread pool with 4 workers so that our snap cannot complete before they complete.\n const blockers = [new Worker(), new Worker(), new Worker(), new Worker()];\n blockers.forEach((w) => w.queue());\n\n const sessionId = \"0x222\";\n const snap = imodel.requestSnap(sessionId, {\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n id: \"0x111\",\n worldToView: Matrix4d.createIdentity().toJSON(),\n });\n\n const toBeRejected = expect(snap).to.be.rejectedWith(\"aborted\");\n imodel.cancelSnap(sessionId);\n\n // Clear the worker thread pool so the snap request (now canceled) can be processed.\n blockers.forEach((w) => w.setReady());\n await Promise.all(blockers.map(async (w) => w.promise).filter((p): p is Promise<void> => p !== undefined));\n\n await toBeRejected;\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"response.test.js","sourceRoot":"","sources":["../../../../src/test/rpc/response.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"chai\";\r\nimport { SinonStub, stub } from \"sinon\";\r\nimport { Readable, Writable } from \"stream\";\r\nimport { HttpServerRequest, HttpServerResponse, RpcRequestFulfillment, RpcRequestStatus, SerializedRpcRequest, WebAppRpcProtocol } from \"@itwin/core-common\";\r\nimport { sendResponse } from \"../../rpc/web/response\";\r\nimport { brotliDecompressSync, unzipSync } from \"node:zlib\";\r\n\r\n/* eslint-disable @typescript-eslint/no-deprecated */\r\n\r\nclass StubResponse extends Writable implements HttpServerResponse {\r\n public chunks: any[] = [];\r\n public get buffer(): Buffer { return Buffer.concat(this.chunks); }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public override _write(chunk: any, _encoding: BufferEncoding, callback: VoidFunction): void {\r\n this.chunks.push(chunk);\r\n callback();\r\n }\r\n\r\n public send: SinonStub<any[], HttpServerResponse> = stub().returns(this);\r\n public status: SinonStub<[number], HttpServerResponse> = stub();\r\n public set: SinonStub<[string, string], void> = stub();\r\n}\r\n\r\ndescribe(\"sendResponse\", () => {\r\n let protocol: WebAppRpcProtocol;\r\n let request: SerializedRpcRequest;\r\n let fulfillment: RpcRequestFulfillment;\r\n let req: HttpServerRequest;\r\n let res: StubResponse;\r\n\r\n beforeEach(() => {\r\n protocol = { getStatus: () => RpcRequestStatus.Resolved } as any;\r\n request = { operation: { operationName: \"fake-RPC-operation\" } } as any;\r\n fulfillment = {\r\n allowCompression: true,\r\n status: 200,\r\n result: {\r\n data: [],\r\n },\r\n } as any;\r\n req = { header: () => \"gzip, deflate, br\" } as any;\r\n res = new StubResponse();\r\n });\r\n\r\n it(\"should compress response using Brotli\", async () => {\r\n // Arrange\r\n const originalData = generateJson();\r\n const originalDataSize = Buffer.byteLength(originalData);\r\n fulfillment.result.objects = originalData;\r\n\r\n // Act\r\n await sendResponse(protocol, request, fulfillment, req, res);\r\n\r\n // Assert\r\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"br\")).to.be.true;\r\n\r\n const compressedData = res.send.getCall(0).args[0];\r\n expect(compressedData).to.not.be.undefined;\r\n expect(compressedData.length).to.be.lessThan(originalDataSize);\r\n expect(brotliDecompressSync(compressedData).toString()).to.be.equal(originalData);\r\n });\r\n\r\n it(\"should compress response using Gzip if Brotli is not supported\", async () => {\r\n // Arrange\r\n const originalData = generateJson();\r\n const originalDataSize = Buffer.byteLength(originalData);\r\n fulfillment.result.objects = originalData;\r\n req.header = () => \"gzip, deflate\";\r\n\r\n // Act\r\n await sendResponse(protocol, request, fulfillment, req, res);\r\n\r\n // Assert\r\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"gzip\")).to.be.true;\r\n\r\n const compressedData = res.send.getCall(0).args[0];\r\n expect(compressedData).to.not.be.undefined;\r\n expect(compressedData.length).to.be.lessThan(originalDataSize);\r\n expect(unzipSync(compressedData).toString()).to.be.equal(originalData);\r\n });\r\n\r\n it(\"should not compress if Brotli and Gzip is not supported\", async () => {\r\n // Arrange\r\n const originalData = generateJson();\r\n fulfillment.result.objects = originalData;\r\n req.header = () => undefined;\r\n\r\n // Act\r\n await sendResponse(protocol, request, fulfillment, req, res);\r\n\r\n // Assert\r\n expect(res.set.calledWithMatch(\"Content-Encoding\")).to.be.false;\r\n\r\n expect(res.send.getCall(0).args[0]).to.be.equal(originalData);\r\n });\r\n\r\n it(\"should compress stream\", async () => {\r\n // Arrange\r\n const originalData = generateJson();\r\n const originalDataSize = Buffer.byteLength(originalData);\r\n fulfillment.result.stream = Readable.from(originalData);\r\n\r\n // Act\r\n await sendResponse(protocol, request, fulfillment, req, res);\r\n await new Promise((resolve) => res.on(\"finish\", resolve));\r\n\r\n // Assert\r\n const compressedData = res.buffer;\r\n expect(compressedData).to.not.be.undefined;\r\n expect(compressedData.length).to.be.lessThan(originalDataSize);\r\n expect(brotliDecompressSync(compressedData).toString()).to.be.equal(originalData);\r\n });\r\n\r\n it(\"should support Accept-Encoding header value format without spaces between values\", async () => {\r\n // Arrange\r\n fulfillment.result.objects = generateJson();\r\n req.header = () => \"gzip,deflate,br,zstd\";\r\n\r\n // Act\r\n await sendResponse(protocol, request, fulfillment, req, res);\r\n\r\n // Assert\r\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"br\")).to.be.true;\r\n });\r\n});\r\n\r\nfunction generateJson(minimumSize = 2000): string {\r\n let propertyIdx = 0;\r\n const obj = {} as any;\r\n\r\n while (JSON.stringify(obj).length < minimumSize) {\r\n obj[`property-${propertyIdx}`] = `value-${propertyIdx}`;\r\n propertyIdx++;\r\n }\r\n\r\n return JSON.stringify(obj);\r\n}\r\n"]}
1
+ {"version":3,"file":"response.test.js","sourceRoot":"","sources":["../../../../src/test/rpc/response.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"chai\";\nimport { SinonStub, stub } from \"sinon\";\nimport { Readable, Writable } from \"stream\";\nimport { HttpServerRequest, HttpServerResponse, RpcRequestFulfillment, RpcRequestStatus, SerializedRpcRequest, WebAppRpcProtocol } from \"@itwin/core-common\";\nimport { sendResponse } from \"../../rpc/web/response\";\nimport { brotliDecompressSync, unzipSync } from \"node:zlib\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nclass StubResponse extends Writable implements HttpServerResponse {\n public chunks: any[] = [];\n public get buffer(): Buffer { return Buffer.concat(this.chunks); }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public override _write(chunk: any, _encoding: BufferEncoding, callback: VoidFunction): void {\n this.chunks.push(chunk);\n callback();\n }\n\n public send: SinonStub<any[], HttpServerResponse> = stub().returns(this);\n public status: SinonStub<[number], HttpServerResponse> = stub();\n public set: SinonStub<[string, string], void> = stub();\n}\n\ndescribe(\"sendResponse\", () => {\n let protocol: WebAppRpcProtocol;\n let request: SerializedRpcRequest;\n let fulfillment: RpcRequestFulfillment;\n let req: HttpServerRequest;\n let res: StubResponse;\n\n beforeEach(() => {\n protocol = { getStatus: () => RpcRequestStatus.Resolved } as any;\n request = { operation: { operationName: \"fake-RPC-operation\" } } as any;\n fulfillment = {\n allowCompression: true,\n status: 200,\n result: {\n data: [],\n },\n } as any;\n req = { header: () => \"gzip, deflate, br\" } as any;\n res = new StubResponse();\n });\n\n it(\"should compress response using Brotli\", async () => {\n // Arrange\n const originalData = generateJson();\n const originalDataSize = Buffer.byteLength(originalData);\n fulfillment.result.objects = originalData;\n\n // Act\n await sendResponse(protocol, request, fulfillment, req, res);\n\n // Assert\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"br\")).to.be.true;\n\n const compressedData = res.send.getCall(0).args[0];\n expect(compressedData).to.not.be.undefined;\n expect(compressedData.length).to.be.lessThan(originalDataSize);\n expect(brotliDecompressSync(compressedData).toString()).to.be.equal(originalData);\n });\n\n it(\"should compress response using Gzip if Brotli is not supported\", async () => {\n // Arrange\n const originalData = generateJson();\n const originalDataSize = Buffer.byteLength(originalData);\n fulfillment.result.objects = originalData;\n req.header = () => \"gzip, deflate\";\n\n // Act\n await sendResponse(protocol, request, fulfillment, req, res);\n\n // Assert\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"gzip\")).to.be.true;\n\n const compressedData = res.send.getCall(0).args[0];\n expect(compressedData).to.not.be.undefined;\n expect(compressedData.length).to.be.lessThan(originalDataSize);\n expect(unzipSync(compressedData).toString()).to.be.equal(originalData);\n });\n\n it(\"should not compress if Brotli and Gzip is not supported\", async () => {\n // Arrange\n const originalData = generateJson();\n fulfillment.result.objects = originalData;\n req.header = () => undefined;\n\n // Act\n await sendResponse(protocol, request, fulfillment, req, res);\n\n // Assert\n expect(res.set.calledWithMatch(\"Content-Encoding\")).to.be.false;\n\n expect(res.send.getCall(0).args[0]).to.be.equal(originalData);\n });\n\n it(\"should compress stream\", async () => {\n // Arrange\n const originalData = generateJson();\n const originalDataSize = Buffer.byteLength(originalData);\n fulfillment.result.stream = Readable.from(originalData);\n\n // Act\n await sendResponse(protocol, request, fulfillment, req, res);\n await new Promise((resolve) => res.on(\"finish\", resolve));\n\n // Assert\n const compressedData = res.buffer;\n expect(compressedData).to.not.be.undefined;\n expect(compressedData.length).to.be.lessThan(originalDataSize);\n expect(brotliDecompressSync(compressedData).toString()).to.be.equal(originalData);\n });\n\n it(\"should support Accept-Encoding header value format without spaces between values\", async () => {\n // Arrange\n fulfillment.result.objects = generateJson();\n req.header = () => \"gzip,deflate,br,zstd\";\n\n // Act\n await sendResponse(protocol, request, fulfillment, req, res);\n\n // Assert\n expect(res.set.calledWithExactly(\"Content-Encoding\", \"br\")).to.be.true;\n });\n});\n\nfunction generateJson(minimumSize = 2000): string {\n let propertyIdx = 0;\n const obj = {} as any;\n\n while (JSON.stringify(obj).length < minimumSize) {\n obj[`property-${propertyIdx}`] = `value-${propertyIdx}`;\n propertyIdx++;\n }\n\n return JSON.stringify(obj);\n}\n"]}
@@ -96,50 +96,50 @@ describe("Class Registry - getRootMetaData", () => {
96
96
  imodel = StandaloneDb.openFile(testFileName, OpenMode.ReadWrite);
97
97
  assert.exists(imodel);
98
98
  await imodel.importSchemaStrings([
99
- `<?xml version="1.0" encoding="UTF-8"?>
100
- <ECSchema schemaName="TestSchema1" alias="ts1" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
101
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
102
- <ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
103
-
104
- <ECEntityClass typeName="TestBase">
105
- <BaseClass>bis:PhysicalElement</BaseClass>
106
- </ECEntityClass>
107
-
108
- <ECEntityClass typeName="TestDerived">
109
- <BaseClass>TestBase</BaseClass>
110
- </ECEntityClass>
111
-
112
- <ECEntityClass typeName="ITestMixinForAspectsBase">
113
- <ECCustomAttributes>
114
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
115
- <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
116
- </IsMixin>
117
- </ECCustomAttributes>
118
- </ECEntityClass>
119
-
120
- <ECEntityClass typeName="ITestMixinForAspectsDerived">
121
- <BaseClass>ITestMixinForAspectsBase</BaseClass>
122
- <ECCustomAttributes>
123
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
124
- <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
125
- </IsMixin>
126
- </ECCustomAttributes>
127
- </ECEntityClass>
128
-
129
- <ECEntityClass typeName="ITestMixinForElements" modifier="Abstract">
130
- <ECCustomAttributes>
131
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
132
- <AppliesToEntityClass>bis:Element</AppliesToEntityClass>
133
- </IsMixin>
134
- </ECCustomAttributes>
135
- </ECEntityClass>
136
-
137
- <ECEntityClass typeName="TestMixedInAndDerived">
138
- <BaseClass>TestBase</BaseClass>
139
- <BaseClass>ITestMixinForElements</BaseClass>
140
- </ECEntityClass>
141
-
142
- </ECSchema>
99
+ `<?xml version="1.0" encoding="UTF-8"?>
100
+ <ECSchema schemaName="TestSchema1" alias="ts1" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
101
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
102
+ <ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
103
+
104
+ <ECEntityClass typeName="TestBase">
105
+ <BaseClass>bis:PhysicalElement</BaseClass>
106
+ </ECEntityClass>
107
+
108
+ <ECEntityClass typeName="TestDerived">
109
+ <BaseClass>TestBase</BaseClass>
110
+ </ECEntityClass>
111
+
112
+ <ECEntityClass typeName="ITestMixinForAspectsBase">
113
+ <ECCustomAttributes>
114
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
115
+ <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
116
+ </IsMixin>
117
+ </ECCustomAttributes>
118
+ </ECEntityClass>
119
+
120
+ <ECEntityClass typeName="ITestMixinForAspectsDerived">
121
+ <BaseClass>ITestMixinForAspectsBase</BaseClass>
122
+ <ECCustomAttributes>
123
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
124
+ <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
125
+ </IsMixin>
126
+ </ECCustomAttributes>
127
+ </ECEntityClass>
128
+
129
+ <ECEntityClass typeName="ITestMixinForElements" modifier="Abstract">
130
+ <ECCustomAttributes>
131
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
132
+ <AppliesToEntityClass>bis:Element</AppliesToEntityClass>
133
+ </IsMixin>
134
+ </ECCustomAttributes>
135
+ </ECEntityClass>
136
+
137
+ <ECEntityClass typeName="TestMixedInAndDerived">
138
+ <BaseClass>TestBase</BaseClass>
139
+ <BaseClass>ITestMixinForElements</BaseClass>
140
+ </ECEntityClass>
141
+
142
+ </ECSchema>
143
143
  `,
144
144
  ]); // will throw an exception if import fails
145
145
  });
@@ -256,35 +256,35 @@ describe("Class Registry - generated classes", () => {
256
256
  }
257
257
  it("Should provide correct schemas and full-names on generated classes", async () => {
258
258
  await imodel.importSchemaStrings([
259
- `<?xml version="1.0" encoding="UTF-8"?>
260
- <ECSchema schemaName="CustomA" alias="custA" version="1.0.0"
261
- xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
262
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
263
- <ECSchemaReference name="Functional" version="1.00" alias="func"/>
264
- <ECEntityClass typeName="NonGeneratedElement">
265
- <BaseClass>bis:DefinitionElement</BaseClass>
266
- </ECEntityClass>
267
- <ECEntityClass typeName="GeneratedElement">
268
- <BaseClass>NonGeneratedElement</BaseClass>
269
- </ECEntityClass>
270
- <ECEntityClass typeName="ElementC">
271
- <BaseClass>GeneratedElement</BaseClass>
272
- </ECEntityClass>
273
- </ECSchema>
259
+ `<?xml version="1.0" encoding="UTF-8"?>
260
+ <ECSchema schemaName="CustomA" alias="custA" version="1.0.0"
261
+ xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
262
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
263
+ <ECSchemaReference name="Functional" version="1.00" alias="func"/>
264
+ <ECEntityClass typeName="NonGeneratedElement">
265
+ <BaseClass>bis:DefinitionElement</BaseClass>
266
+ </ECEntityClass>
267
+ <ECEntityClass typeName="GeneratedElement">
268
+ <BaseClass>NonGeneratedElement</BaseClass>
269
+ </ECEntityClass>
270
+ <ECEntityClass typeName="ElementC">
271
+ <BaseClass>GeneratedElement</BaseClass>
272
+ </ECEntityClass>
273
+ </ECSchema>
274
274
  `,
275
- `<?xml version="1.0" encoding="UTF-8"?>
276
- <ECSchema schemaName="CustomB" alias="custB" version="1.0.0"
277
- xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
278
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
279
- <ECSchemaReference name="Functional" version="1.00" alias="func"/>
280
- <ECSchemaReference name="CustomA" version="01.00" alias="custA"/>
281
- <ECEntityClass typeName="DummyElement">
282
- <BaseClass>bis:DefinitionElement</BaseClass>
283
- </ECEntityClass>
284
- <ECEntityClass typeName="ErrorElement">
285
- <BaseClass>custA:ElementC</BaseClass>
286
- </ECEntityClass>
287
- </ECSchema>
275
+ `<?xml version="1.0" encoding="UTF-8"?>
276
+ <ECSchema schemaName="CustomB" alias="custB" version="1.0.0"
277
+ xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
278
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
279
+ <ECSchemaReference name="Functional" version="1.00" alias="func"/>
280
+ <ECSchemaReference name="CustomA" version="01.00" alias="custA"/>
281
+ <ECEntityClass typeName="DummyElement">
282
+ <BaseClass>bis:DefinitionElement</BaseClass>
283
+ </ECEntityClass>
284
+ <ECEntityClass typeName="ErrorElement">
285
+ <BaseClass>custA:ElementC</BaseClass>
286
+ </ECEntityClass>
287
+ </ECSchema>
288
288
  `,
289
289
  ]);
290
290
  class CustomASchema extends Schema {
@@ -738,36 +738,36 @@ describe("Global state of ClassRegistry", () => {
738
738
  });
739
739
  it("registering a class in different imodels should not affect each other", async () => {
740
740
  await imodel1.importSchemaStrings([
741
- `<?xml version="1.0" encoding="UTF-8"?>
742
- <ECSchema schemaName="TestSchema" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
743
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
744
-
745
- <ECEntityClass typeName="TestClass">
746
- <BaseClass>bis:PhysicalElement</BaseClass>
747
- <ECProperty propertyName="foo" typeName="string"/>
748
- <ECNavigationProperty propertyName="RelatedTestClass" relationshipName="MyRelationship" direction="backward"/>
749
- </ECEntityClass>
750
-
751
- <ECRelationshipClass typeName="MyRelationship" modifier="None" strength="embedding">
752
- <Source multiplicity="(0..1)" roleLabel="has" polymorphic="false">
753
- <Class class="TestClass"/>
754
- </Source>
755
- <Target multiplicity="(0..*)" roleLabel="has" polymorphic="false">
756
- <Class class="TestClass"/>
757
- </Target>
758
- </ECRelationshipClass>
759
- </ECSchema>
741
+ `<?xml version="1.0" encoding="UTF-8"?>
742
+ <ECSchema schemaName="TestSchema" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
743
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
744
+
745
+ <ECEntityClass typeName="TestClass">
746
+ <BaseClass>bis:PhysicalElement</BaseClass>
747
+ <ECProperty propertyName="foo" typeName="string"/>
748
+ <ECNavigationProperty propertyName="RelatedTestClass" relationshipName="MyRelationship" direction="backward"/>
749
+ </ECEntityClass>
750
+
751
+ <ECRelationshipClass typeName="MyRelationship" modifier="None" strength="embedding">
752
+ <Source multiplicity="(0..1)" roleLabel="has" polymorphic="false">
753
+ <Class class="TestClass"/>
754
+ </Source>
755
+ <Target multiplicity="(0..*)" roleLabel="has" polymorphic="false">
756
+ <Class class="TestClass"/>
757
+ </Target>
758
+ </ECRelationshipClass>
759
+ </ECSchema>
760
760
  `,
761
761
  ]);
762
762
  await imodel2.importSchemaStrings([
763
- `<?xml version="1.0" encoding="UTF-8"?>
764
- <ECSchema schemaName="TestSchema" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
765
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
766
- <ECEntityClass typeName="TestClass">
767
- <BaseClass>bis:PhysicalElement</BaseClass>
768
- <ECProperty propertyName="bar" typeName="string"/>
769
- </ECEntityClass>
770
- </ECSchema>
763
+ `<?xml version="1.0" encoding="UTF-8"?>
764
+ <ECSchema schemaName="TestSchema" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
765
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
766
+ <ECEntityClass typeName="TestClass">
767
+ <BaseClass>bis:PhysicalElement</BaseClass>
768
+ <ECProperty propertyName="bar" typeName="string"/>
769
+ </ECEntityClass>
770
+ </ECSchema>
771
771
  `,
772
772
  ]);
773
773
  const testClass1 = imodel1.getJsClass("TestSchema:TestClass");