@itwin/core-backend 5.8.0-dev.9 → 5.8.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 (499) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.js.map +1 -1
  15. package/lib/cjs/CheckpointManager.js.map +1 -1
  16. package/lib/cjs/ClassRegistry.js +5 -5
  17. package/lib/cjs/ClassRegistry.js.map +1 -1
  18. package/lib/cjs/CloudSqlite.js.map +1 -1
  19. package/lib/cjs/CodeService.js.map +1 -1
  20. package/lib/cjs/CodeSpecs.js.map +1 -1
  21. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  22. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  23. package/lib/cjs/DevTools.js.map +1 -1
  24. package/lib/cjs/DisplayStyle.js.map +1 -1
  25. package/lib/cjs/ECDb.js.map +1 -1
  26. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  27. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  28. package/lib/cjs/ECSqlStatement.js.map +1 -1
  29. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  30. package/lib/cjs/Element.js.map +1 -1
  31. package/lib/cjs/ElementAspect.js.map +1 -1
  32. package/lib/cjs/ElementGraphics.js.map +1 -1
  33. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  34. package/lib/cjs/Entity.js.map +1 -1
  35. package/lib/cjs/EntityReferences.js.map +1 -1
  36. package/lib/cjs/ExportGraphics.js.map +1 -1
  37. package/lib/cjs/ExternalSource.js.map +1 -1
  38. package/lib/cjs/FontFile.js.map +1 -1
  39. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  40. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  41. package/lib/cjs/GeometrySummary.js +47 -47
  42. package/lib/cjs/GeometrySummary.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts.map +1 -1
  44. package/lib/cjs/IModelDb.js +8 -11
  45. package/lib/cjs/IModelDb.js.map +1 -1
  46. package/lib/cjs/IModelDbFonts.js.map +1 -1
  47. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  48. package/lib/cjs/IModelHost.js.map +1 -1
  49. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  50. package/lib/cjs/IModelJsFs.js.map +1 -1
  51. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  52. package/lib/cjs/IpcHost.d.ts.map +1 -1
  53. package/lib/cjs/IpcHost.js +28 -4
  54. package/lib/cjs/IpcHost.js.map +1 -1
  55. package/lib/cjs/LineStyle.d.ts +6 -0
  56. package/lib/cjs/LineStyle.d.ts.map +1 -1
  57. package/lib/cjs/LineStyle.js +41 -32
  58. package/lib/cjs/LineStyle.js.map +1 -1
  59. package/lib/cjs/LocalHub.d.ts +17 -10
  60. package/lib/cjs/LocalHub.d.ts.map +1 -1
  61. package/lib/cjs/LocalHub.js +127 -29
  62. package/lib/cjs/LocalHub.js.map +1 -1
  63. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  64. package/lib/cjs/LockControl.js.map +1 -1
  65. package/lib/cjs/Material.js.map +1 -1
  66. package/lib/cjs/Model.js.map +1 -1
  67. package/lib/cjs/NativeAppStorage.js.map +1 -1
  68. package/lib/cjs/NativeHost.js.map +1 -1
  69. package/lib/cjs/NavigationRelationship.js.map +1 -1
  70. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  71. package/lib/cjs/PropertyStore.js.map +1 -1
  72. package/lib/cjs/Relationship.js.map +1 -1
  73. package/lib/cjs/RpcBackend.js.map +1 -1
  74. package/lib/cjs/SQLiteDb.js.map +1 -1
  75. package/lib/cjs/Schema.js.map +1 -1
  76. package/lib/cjs/SchemaSync.js.map +1 -1
  77. package/lib/cjs/SchemaUtils.js.map +1 -1
  78. package/lib/cjs/SheetIndex.js.map +1 -1
  79. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  80. package/lib/cjs/SqliteStatement.js.map +1 -1
  81. package/lib/cjs/StashManager.js.map +1 -1
  82. package/lib/cjs/Texture.js.map +1 -1
  83. package/lib/cjs/TileStorage.js.map +1 -1
  84. package/lib/cjs/TxnManager.js.map +1 -1
  85. package/lib/cjs/ViewDefinition.js.map +1 -1
  86. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  87. package/lib/cjs/ViewStore.js.map +1 -1
  88. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  89. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  90. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  91. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  92. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  93. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  94. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  95. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  96. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  97. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  98. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  99. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  100. package/lib/cjs/core-backend.d.ts +2 -0
  101. package/lib/cjs/core-backend.d.ts.map +1 -1
  102. package/lib/cjs/core-backend.js +2 -0
  103. package/lib/cjs/core-backend.js.map +1 -1
  104. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  105. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  106. package/lib/cjs/domains/GenericElements.js.map +1 -1
  107. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  108. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  109. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  110. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  111. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  112. package/lib/cjs/internal/HubMock.js.map +1 -1
  113. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  114. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  115. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  116. package/lib/cjs/internal/NoLocks.js.map +1 -1
  117. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  118. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  119. package/lib/cjs/internal/Symbols.js.map +1 -1
  120. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  121. package/lib/cjs/internal/cross-package.js.map +1 -1
  122. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +38 -0
  123. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +1 -0
  124. package/lib/cjs/internal/workspace/SettingsDbImpl.js +108 -0
  125. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +1 -0
  126. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +7 -0
  127. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -0
  128. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +266 -0
  129. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -0
  130. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +1 -0
  131. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  132. package/lib/cjs/internal/workspace/SettingsImpl.js +8 -4
  133. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  134. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  135. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +14 -0
  136. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +1 -0
  137. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +40 -0
  138. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +1 -0
  139. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +1 -0
  140. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  141. package/lib/cjs/internal/workspace/WorkspaceImpl.js +57 -14
  142. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  143. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  144. package/lib/cjs/rpc/multipart.js.map +1 -1
  145. package/lib/cjs/rpc/tracing.js.map +1 -1
  146. package/lib/cjs/rpc/web/logging.js.map +1 -1
  147. package/lib/cjs/rpc/web/request.js.map +1 -1
  148. package/lib/cjs/rpc/web/response.js.map +1 -1
  149. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  150. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  151. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  152. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  153. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  154. package/lib/cjs/workspace/Settings.d.ts +8 -0
  155. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  156. package/lib/cjs/workspace/Settings.js.map +1 -1
  157. package/lib/cjs/workspace/SettingsDb.d.ts +109 -0
  158. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -0
  159. package/lib/cjs/workspace/SettingsDb.js +19 -0
  160. package/lib/cjs/workspace/SettingsDb.js.map +1 -0
  161. package/lib/cjs/workspace/SettingsEditor.d.ts +250 -0
  162. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -0
  163. package/lib/cjs/workspace/SettingsEditor.js +53 -0
  164. package/lib/cjs/workspace/SettingsEditor.js.map +1 -0
  165. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  166. package/lib/cjs/workspace/Workspace.d.ts +42 -19
  167. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  168. package/lib/cjs/workspace/Workspace.js.map +1 -1
  169. package/lib/cjs/workspace/WorkspaceEditor.d.ts +32 -1
  170. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  171. package/lib/cjs/workspace/WorkspaceEditor.js +19 -0
  172. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  173. package/lib/esm/BackendHubAccess.js.map +1 -1
  174. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  175. package/lib/esm/BisCoreSchema.js.map +1 -1
  176. package/lib/esm/BlobContainerService.js.map +1 -1
  177. package/lib/esm/BriefcaseManager.js.map +1 -1
  178. package/lib/esm/CatalogDb.js.map +1 -1
  179. package/lib/esm/Category.js.map +1 -1
  180. package/lib/esm/ChangeSummaryManager.js +2 -2
  181. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  182. package/lib/esm/ChangedElementsDb.js.map +1 -1
  183. package/lib/esm/ChangesetECAdaptor.js +248 -248
  184. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  185. package/lib/esm/ChannelControl.js.map +1 -1
  186. package/lib/esm/CheckpointManager.js.map +1 -1
  187. package/lib/esm/ClassRegistry.js +5 -5
  188. package/lib/esm/ClassRegistry.js.map +1 -1
  189. package/lib/esm/CloudSqlite.js.map +1 -1
  190. package/lib/esm/CodeService.js.map +1 -1
  191. package/lib/esm/CodeSpecs.js.map +1 -1
  192. package/lib/esm/ConcurrentQuery.js.map +1 -1
  193. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  194. package/lib/esm/DevTools.js.map +1 -1
  195. package/lib/esm/DisplayStyle.js.map +1 -1
  196. package/lib/esm/ECDb.js.map +1 -1
  197. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  198. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  199. package/lib/esm/ECSqlStatement.js.map +1 -1
  200. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  201. package/lib/esm/Element.js.map +1 -1
  202. package/lib/esm/ElementAspect.js.map +1 -1
  203. package/lib/esm/ElementGraphics.js.map +1 -1
  204. package/lib/esm/ElementTreeWalker.js.map +1 -1
  205. package/lib/esm/Entity.js.map +1 -1
  206. package/lib/esm/EntityReferences.js.map +1 -1
  207. package/lib/esm/ExportGraphics.js.map +1 -1
  208. package/lib/esm/ExternalSource.js.map +1 -1
  209. package/lib/esm/FontFile.js.map +1 -1
  210. package/lib/esm/GeoCoordConfig.js.map +1 -1
  211. package/lib/esm/GeographicCRSServices.js.map +1 -1
  212. package/lib/esm/GeometrySummary.js +47 -47
  213. package/lib/esm/GeometrySummary.js.map +1 -1
  214. package/lib/esm/IModelDb.d.ts.map +1 -1
  215. package/lib/esm/IModelDb.js +8 -11
  216. package/lib/esm/IModelDb.js.map +1 -1
  217. package/lib/esm/IModelDbFonts.js.map +1 -1
  218. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  219. package/lib/esm/IModelHost.js.map +1 -1
  220. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  221. package/lib/esm/IModelJsFs.js.map +1 -1
  222. package/lib/esm/ImageSourceConversion.js.map +1 -1
  223. package/lib/esm/IpcHost.d.ts.map +1 -1
  224. package/lib/esm/IpcHost.js +28 -4
  225. package/lib/esm/IpcHost.js.map +1 -1
  226. package/lib/esm/LineStyle.d.ts +6 -0
  227. package/lib/esm/LineStyle.d.ts.map +1 -1
  228. package/lib/esm/LineStyle.js +41 -32
  229. package/lib/esm/LineStyle.js.map +1 -1
  230. package/lib/esm/LocalHub.d.ts +17 -10
  231. package/lib/esm/LocalHub.d.ts.map +1 -1
  232. package/lib/esm/LocalHub.js +128 -30
  233. package/lib/esm/LocalHub.js.map +1 -1
  234. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  235. package/lib/esm/LockControl.js.map +1 -1
  236. package/lib/esm/Material.js.map +1 -1
  237. package/lib/esm/Model.js.map +1 -1
  238. package/lib/esm/NativeAppStorage.js.map +1 -1
  239. package/lib/esm/NativeHost.js.map +1 -1
  240. package/lib/esm/NavigationRelationship.js.map +1 -1
  241. package/lib/esm/PromiseMemoizer.js.map +1 -1
  242. package/lib/esm/PropertyStore.js.map +1 -1
  243. package/lib/esm/Relationship.js.map +1 -1
  244. package/lib/esm/RpcBackend.js.map +1 -1
  245. package/lib/esm/SQLiteDb.js.map +1 -1
  246. package/lib/esm/Schema.js.map +1 -1
  247. package/lib/esm/SchemaSync.js.map +1 -1
  248. package/lib/esm/SchemaUtils.js.map +1 -1
  249. package/lib/esm/SheetIndex.js.map +1 -1
  250. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  251. package/lib/esm/SqliteStatement.js.map +1 -1
  252. package/lib/esm/StashManager.js.map +1 -1
  253. package/lib/esm/Texture.js.map +1 -1
  254. package/lib/esm/TileStorage.js.map +1 -1
  255. package/lib/esm/TxnManager.js.map +1 -1
  256. package/lib/esm/ViewDefinition.js.map +1 -1
  257. package/lib/esm/ViewStateHydrator.js.map +1 -1
  258. package/lib/esm/ViewStore.js.map +1 -1
  259. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  260. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  261. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  262. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  263. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  264. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  265. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  266. package/lib/esm/core-backend.d.ts +2 -0
  267. package/lib/esm/core-backend.d.ts.map +1 -1
  268. package/lib/esm/core-backend.js +2 -0
  269. package/lib/esm/core-backend.js.map +1 -1
  270. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  271. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  272. package/lib/esm/domains/GenericElements.js.map +1 -1
  273. package/lib/esm/domains/GenericSchema.js.map +1 -1
  274. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  275. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  276. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  277. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  278. package/lib/esm/internal/HubMock.js.map +1 -1
  279. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  280. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  281. package/lib/esm/internal/NativePlatform.js.map +1 -1
  282. package/lib/esm/internal/NoLocks.js.map +1 -1
  283. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  284. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  285. package/lib/esm/internal/Symbols.js.map +1 -1
  286. package/lib/esm/internal/annotations/fields.js.map +1 -1
  287. package/lib/esm/internal/cross-package.js.map +1 -1
  288. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +38 -0
  289. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +1 -0
  290. package/lib/esm/internal/workspace/SettingsDbImpl.js +104 -0
  291. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +1 -0
  292. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +7 -0
  293. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -0
  294. package/lib/esm/internal/workspace/SettingsEditorImpl.js +263 -0
  295. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -0
  296. package/lib/esm/internal/workspace/SettingsImpl.d.ts +1 -0
  297. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  298. package/lib/esm/internal/workspace/SettingsImpl.js +5 -2
  299. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  300. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  301. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +14 -0
  302. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +1 -0
  303. package/lib/esm/internal/workspace/SettingsSqliteDb.js +36 -0
  304. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +1 -0
  305. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +1 -0
  306. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  307. package/lib/esm/internal/workspace/WorkspaceImpl.js +57 -15
  308. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  309. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  310. package/lib/esm/rpc/multipart.js.map +1 -1
  311. package/lib/esm/rpc/tracing.js.map +1 -1
  312. package/lib/esm/rpc/web/logging.js.map +1 -1
  313. package/lib/esm/rpc/web/request.js.map +1 -1
  314. package/lib/esm/rpc/web/response.js.map +1 -1
  315. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  316. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  317. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  318. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  319. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  320. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  321. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  322. package/lib/esm/test/AttachDb.test.js +11 -11
  323. package/lib/esm/test/AttachDb.test.js.map +1 -1
  324. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  325. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  326. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  327. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  328. package/lib/esm/test/IModelHost.test.js.map +1 -1
  329. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  330. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  331. package/lib/esm/test/IpcHost.test.js +64 -13
  332. package/lib/esm/test/IpcHost.test.js.map +1 -1
  333. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  334. package/lib/esm/test/PrintElementTree.js.map +1 -1
  335. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  336. package/lib/esm/test/RevisionUtility.js.map +1 -1
  337. package/lib/esm/test/SchemaUtils.test.js +25 -25
  338. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  339. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  340. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  341. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  342. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  343. package/lib/esm/test/TestUtils.js.map +1 -1
  344. package/lib/esm/test/annotations/Fields.test.js +53 -53
  345. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  346. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  347. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  348. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  349. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  350. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  351. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  352. package/lib/esm/test/categories/Category.test.js.map +1 -1
  353. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  354. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  355. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  356. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  357. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  358. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  359. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  360. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  361. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  362. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  363. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  364. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  365. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  366. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  367. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  368. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  369. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  370. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/QueryReaders.test.js +62 -27
  372. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  374. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  375. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +4 -1
  376. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  377. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  378. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  379. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  380. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +8 -0
  381. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  382. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  383. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  384. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  385. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  386. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  387. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  388. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  389. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  390. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  391. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  392. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  393. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  394. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  395. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  396. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  397. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  398. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  399. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  400. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  401. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  402. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  403. package/lib/esm/test/hubaccess/SemanticRebase.test.js +145 -145
  404. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  405. package/lib/esm/test/imageData.js.map +1 -1
  406. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  407. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  408. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  409. package/lib/esm/test/imodel/IModel.test.js +44 -44
  410. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  411. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  412. package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
  413. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  414. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  415. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  416. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  417. package/lib/esm/test/index.js.map +1 -1
  418. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  419. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  420. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  421. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  422. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  423. package/lib/esm/test/rpc/response.test.js.map +1 -1
  424. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  425. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  426. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  427. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  428. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  429. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  430. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  431. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  432. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  433. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  434. package/lib/esm/test/standalone/ChangesetReader.test.js +135 -135
  435. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  436. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  437. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  438. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  439. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  440. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  441. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  442. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  443. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  444. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  445. package/lib/esm/test/standalone/HubMock.test.js +177 -7
  446. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  447. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  448. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  449. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  450. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  451. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  452. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  453. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  454. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  455. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  456. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  457. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  458. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  459. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  460. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  461. package/lib/esm/test/standalone/Settings.test.js +18 -0
  462. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  463. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  464. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  465. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  466. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  467. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  468. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  469. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  470. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  471. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  472. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  473. package/lib/esm/test/standalone/Workspace.test.js +160 -0
  474. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  475. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  476. package/lib/esm/test/workspace/SettingsDb.test.d.ts +2 -0
  477. package/lib/esm/test/workspace/SettingsDb.test.d.ts.map +1 -0
  478. package/lib/esm/test/workspace/SettingsDb.test.js +465 -0
  479. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -0
  480. package/lib/esm/workspace/Settings.d.ts +8 -0
  481. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  482. package/lib/esm/workspace/Settings.js.map +1 -1
  483. package/lib/esm/workspace/SettingsDb.d.ts +109 -0
  484. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -0
  485. package/lib/esm/workspace/SettingsDb.js +16 -0
  486. package/lib/esm/workspace/SettingsDb.js.map +1 -0
  487. package/lib/esm/workspace/SettingsEditor.d.ts +250 -0
  488. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -0
  489. package/lib/esm/workspace/SettingsEditor.js +50 -0
  490. package/lib/esm/workspace/SettingsEditor.js.map +1 -0
  491. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  492. package/lib/esm/workspace/Workspace.d.ts +42 -19
  493. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  494. package/lib/esm/workspace/Workspace.js.map +1 -1
  495. package/lib/esm/workspace/WorkspaceEditor.d.ts +32 -1
  496. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  497. package/lib/esm/workspace/WorkspaceEditor.js +19 -0
  498. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  499. package/package.json +14 -14
@@ -13,149 +13,149 @@ import * as chai from "chai";
13
13
  import { TestUtils } from "./TestUtils";
14
14
  const schemas = {
15
15
  /** Base schema v01.00.00 with classes A, C, D */
16
- v01x00x00: `<?xml version="1.0" encoding="UTF-8"?>
17
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
18
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
19
- <ECEntityClass typeName="A">
20
- <BaseClass>bis:GraphicalElement2d</BaseClass>
21
- <ECProperty propertyName="PropA" typeName="string"/>
22
- </ECEntityClass>
23
- <ECEntityClass typeName="C">
24
- <BaseClass>A</BaseClass>
25
- <ECProperty propertyName="PropC" typeName="string"/>
26
- </ECEntityClass>
27
- <ECEntityClass typeName="D">
28
- <BaseClass>A</BaseClass>
29
- <ECProperty propertyName="PropD" typeName="string"/>
30
- </ECEntityClass>
16
+ v01x00x00: `<?xml version="1.0" encoding="UTF-8"?>
17
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
18
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
19
+ <ECEntityClass typeName="A">
20
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
21
+ <ECProperty propertyName="PropA" typeName="string"/>
22
+ </ECEntityClass>
23
+ <ECEntityClass typeName="C">
24
+ <BaseClass>A</BaseClass>
25
+ <ECProperty propertyName="PropC" typeName="string"/>
26
+ </ECEntityClass>
27
+ <ECEntityClass typeName="D">
28
+ <BaseClass>A</BaseClass>
29
+ <ECProperty propertyName="PropD" typeName="string"/>
30
+ </ECEntityClass>
31
31
  </ECSchema>`,
32
32
  /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */
33
- v01x00x01AddPropC2: `<?xml version="1.0" encoding="UTF-8"?>
34
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
35
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
36
- <ECEntityClass typeName="A">
37
- <BaseClass>bis:GraphicalElement2d</BaseClass>
38
- <ECProperty propertyName="PropA" typeName="string"/>
39
- </ECEntityClass>
40
- <ECEntityClass typeName="C">
41
- <BaseClass>A</BaseClass>
42
- <ECProperty propertyName="PropC" typeName="string"/>
43
- <ECProperty propertyName="PropC2" typeName="string"/>
44
- </ECEntityClass>
45
- <ECEntityClass typeName="D">
46
- <BaseClass>A</BaseClass>
47
- <ECProperty propertyName="PropD" typeName="string"/>
48
- </ECEntityClass>
33
+ v01x00x01AddPropC2: `<?xml version="1.0" encoding="UTF-8"?>
34
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
35
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
36
+ <ECEntityClass typeName="A">
37
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
38
+ <ECProperty propertyName="PropA" typeName="string"/>
39
+ </ECEntityClass>
40
+ <ECEntityClass typeName="C">
41
+ <BaseClass>A</BaseClass>
42
+ <ECProperty propertyName="PropC" typeName="string"/>
43
+ <ECProperty propertyName="PropC2" typeName="string"/>
44
+ </ECEntityClass>
45
+ <ECEntityClass typeName="D">
46
+ <BaseClass>A</BaseClass>
47
+ <ECProperty propertyName="PropD" typeName="string"/>
48
+ </ECEntityClass>
49
49
  </ECSchema>`,
50
50
  /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */
51
- v01x00x02AddPropD2: `<?xml version="1.0" encoding="UTF-8"?>
52
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
53
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
54
- <ECEntityClass typeName="A">
55
- <BaseClass>bis:GraphicalElement2d</BaseClass>
56
- <ECProperty propertyName="PropA" typeName="string"/>
57
- </ECEntityClass>
58
- <ECEntityClass typeName="C">
59
- <BaseClass>A</BaseClass>
60
- <ECProperty propertyName="PropC" typeName="string"/>
61
- <ECProperty propertyName="PropC2" typeName="string"/>
62
- </ECEntityClass>
63
- <ECEntityClass typeName="D">
64
- <BaseClass>A</BaseClass>
65
- <ECProperty propertyName="PropD" typeName="string"/>
66
- <ECProperty propertyName="PropD2" typeName="string"/>
67
- </ECEntityClass>
51
+ v01x00x02AddPropD2: `<?xml version="1.0" encoding="UTF-8"?>
52
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
53
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
54
+ <ECEntityClass typeName="A">
55
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
56
+ <ECProperty propertyName="PropA" typeName="string"/>
57
+ </ECEntityClass>
58
+ <ECEntityClass typeName="C">
59
+ <BaseClass>A</BaseClass>
60
+ <ECProperty propertyName="PropC" typeName="string"/>
61
+ <ECProperty propertyName="PropC2" typeName="string"/>
62
+ </ECEntityClass>
63
+ <ECEntityClass typeName="D">
64
+ <BaseClass>A</BaseClass>
65
+ <ECProperty propertyName="PropD" typeName="string"/>
66
+ <ECProperty propertyName="PropD2" typeName="string"/>
67
+ </ECEntityClass>
68
68
  </ECSchema>`,
69
69
  /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */
70
- v01x00x02MovePropCToA: `<?xml version="1.0" encoding="UTF-8"?>
71
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
72
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
73
- <ECEntityClass typeName="A">
74
- <BaseClass>bis:GraphicalElement2d</BaseClass>
75
- <ECProperty propertyName="PropA" typeName="string"/>
76
- <ECProperty propertyName="PropC" typeName="string"/>
77
- </ECEntityClass>
78
- <ECEntityClass typeName="C">
79
- <BaseClass>A</BaseClass>
80
- <ECProperty propertyName="PropC2" typeName="string"/>
81
- </ECEntityClass>
82
- <ECEntityClass typeName="D">
83
- <BaseClass>A</BaseClass>
84
- <ECProperty propertyName="PropD" typeName="string"/>
85
- </ECEntityClass>
70
+ v01x00x02MovePropCToA: `<?xml version="1.0" encoding="UTF-8"?>
71
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
72
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
73
+ <ECEntityClass typeName="A">
74
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
75
+ <ECProperty propertyName="PropA" typeName="string"/>
76
+ <ECProperty propertyName="PropC" typeName="string"/>
77
+ </ECEntityClass>
78
+ <ECEntityClass typeName="C">
79
+ <BaseClass>A</BaseClass>
80
+ <ECProperty propertyName="PropC2" typeName="string"/>
81
+ </ECEntityClass>
82
+ <ECEntityClass typeName="D">
83
+ <BaseClass>A</BaseClass>
84
+ <ECProperty propertyName="PropD" typeName="string"/>
85
+ </ECEntityClass>
86
86
  </ECSchema>`,
87
87
  /** v01.00.03 - Builds on top of v01.00.02 and in addition moves PropD to base, so we can have incoming and local transforming changes */
88
- v01x00x03MovePropCAndD: `<?xml version="1.0" encoding="UTF-8"?>
89
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.03" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
90
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
91
- <ECEntityClass typeName="A">
92
- <BaseClass>bis:GraphicalElement2d</BaseClass>
93
- <ECProperty propertyName="PropA" typeName="string"/>
94
- <ECProperty propertyName="PropC" typeName="string"/>
95
- <ECProperty propertyName="PropD" typeName="string"/>
96
- </ECEntityClass>
97
- <ECEntityClass typeName="C">
98
- <BaseClass>A</BaseClass>
99
- <ECProperty propertyName="PropC2" typeName="string"/>
100
- </ECEntityClass>
101
- <ECEntityClass typeName="D">
102
- <BaseClass>A</BaseClass>
103
- <ECProperty propertyName="PropD2" typeName="string"/>
104
- </ECEntityClass>
88
+ v01x00x03MovePropCAndD: `<?xml version="1.0" encoding="UTF-8"?>
89
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.03" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
90
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
91
+ <ECEntityClass typeName="A">
92
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
93
+ <ECProperty propertyName="PropA" typeName="string"/>
94
+ <ECProperty propertyName="PropC" typeName="string"/>
95
+ <ECProperty propertyName="PropD" typeName="string"/>
96
+ </ECEntityClass>
97
+ <ECEntityClass typeName="C">
98
+ <BaseClass>A</BaseClass>
99
+ <ECProperty propertyName="PropC2" typeName="string"/>
100
+ </ECEntityClass>
101
+ <ECEntityClass typeName="D">
102
+ <BaseClass>A</BaseClass>
103
+ <ECProperty propertyName="PropD2" typeName="string"/>
104
+ </ECEntityClass>
105
105
  </ECSchema>`,
106
106
  /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */
107
- v01x00x01AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
108
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
109
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
110
- <ECEntityClass typeName="A">
111
- <BaseClass>bis:GraphicalElement2d</BaseClass>
112
- <ECProperty propertyName="PropA" typeName="string"/>
113
- </ECEntityClass>
114
- <ECEntityClass typeName="C">
115
- <BaseClass>A</BaseClass>
116
- <ECProperty propertyName="PropC" typeName="string"/>
117
- <ECProperty propertyName="PropC3" typeName="string"/>
118
- </ECEntityClass>
119
- <ECEntityClass typeName="D">
120
- <BaseClass>A</BaseClass>
121
- <ECProperty propertyName="PropD" typeName="string"/>
122
- </ECEntityClass>
107
+ v01x00x01AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
108
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
109
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
110
+ <ECEntityClass typeName="A">
111
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
112
+ <ECProperty propertyName="PropA" typeName="string"/>
113
+ </ECEntityClass>
114
+ <ECEntityClass typeName="C">
115
+ <BaseClass>A</BaseClass>
116
+ <ECProperty propertyName="PropC" typeName="string"/>
117
+ <ECProperty propertyName="PropC3" typeName="string"/>
118
+ </ECEntityClass>
119
+ <ECEntityClass typeName="D">
120
+ <BaseClass>A</BaseClass>
121
+ <ECProperty propertyName="PropD" typeName="string"/>
122
+ </ECEntityClass>
123
123
  </ECSchema>`,
124
124
  /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */
125
- v01x00x02AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
126
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
127
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
128
- <ECEntityClass typeName="A">
129
- <BaseClass>bis:GraphicalElement2d</BaseClass>
130
- <ECProperty propertyName="PropA" typeName="string"/>
131
- </ECEntityClass>
132
- <ECEntityClass typeName="C">
133
- <BaseClass>A</BaseClass>
134
- <ECProperty propertyName="PropC" typeName="string"/>
135
- <ECProperty propertyName="PropC3" typeName="string"/>
136
- </ECEntityClass>
137
- <ECEntityClass typeName="D">
138
- <BaseClass>A</BaseClass>
139
- <ECProperty propertyName="PropD" typeName="string"/>
140
- </ECEntityClass>
125
+ v01x00x02AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
126
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
127
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
128
+ <ECEntityClass typeName="A">
129
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
130
+ <ECProperty propertyName="PropA" typeName="string"/>
131
+ </ECEntityClass>
132
+ <ECEntityClass typeName="C">
133
+ <BaseClass>A</BaseClass>
134
+ <ECProperty propertyName="PropC" typeName="string"/>
135
+ <ECProperty propertyName="PropC3" typeName="string"/>
136
+ </ECEntityClass>
137
+ <ECEntityClass typeName="D">
138
+ <BaseClass>A</BaseClass>
139
+ <ECProperty propertyName="PropD" typeName="string"/>
140
+ </ECEntityClass>
141
141
  </ECSchema>`,
142
142
  /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */
143
- v01x00x02AddPropC2Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
144
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
145
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
146
- <ECEntityClass typeName="A">
147
- <BaseClass>bis:GraphicalElement2d</BaseClass>
148
- <ECProperty propertyName="PropA" typeName="string"/>
149
- </ECEntityClass>
150
- <ECEntityClass typeName="C">
151
- <BaseClass>A</BaseClass>
152
- <ECProperty propertyName="PropC" typeName="string"/>
153
- <ECProperty propertyName="PropC2" typeName="int"/>
154
- </ECEntityClass>
155
- <ECEntityClass typeName="D">
156
- <BaseClass>A</BaseClass>
157
- <ECProperty propertyName="PropD" typeName="string"/>
158
- </ECEntityClass>
143
+ v01x00x02AddPropC2Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
144
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
145
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
146
+ <ECEntityClass typeName="A">
147
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
148
+ <ECProperty propertyName="PropA" typeName="string"/>
149
+ </ECEntityClass>
150
+ <ECEntityClass typeName="C">
151
+ <BaseClass>A</BaseClass>
152
+ <ECProperty propertyName="PropC" typeName="string"/>
153
+ <ECProperty propertyName="PropC2" typeName="int"/>
154
+ </ECEntityClass>
155
+ <ECEntityClass typeName="D">
156
+ <BaseClass>A</BaseClass>
157
+ <ECProperty propertyName="PropD" typeName="string"/>
158
+ </ECEntityClass>
159
159
  </ECSchema>`,
160
160
  };
161
161
  describe("SquashSchemaAndDataChanges", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"SquashSchemaAndDataChanges.test.js","sourceRoot":"","sources":["../../../src/test/SquashSchemaAndDataChanges.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,IAAI,EAAc,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAyB,MAAM,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,GAAG;IACd,iDAAiD;IACjD,SAAS,EAAE;;;;;;;;;;;;;;;gBAeG;IAEd,mEAAmE;IACnE,kBAAkB,EAAE;;;;;;;;;;;;;;;;gBAgBN;IAEd,mEAAmE;IACnE,kBAAkB,EAAE;;;;;;;;;;;;;;;;;gBAiBN;IAEd,6FAA6F;IAC7F,qBAAqB,EAAE;;;;;;;;;;;;;;;;gBAgBT;IAEd,yIAAyI;IACzI,sBAAsB,EAAE;;;;;;;;;;;;;;;;;gBAiBV;IAEd,iGAAiG;IACjG,8BAA8B,EAAE;;;;;;;;;;;;;;;;gBAgBlB;IAEd,mGAAmG;IACnG,8BAA8B,EAAE;;;;;;;;;;;;;;;;gBAgBlB;IAEd,sFAAsF;IACtF,8BAA8B,EAAE;;;;;;;;;;;;;;;;gBAgBlB;CACf,CAAC;AAEF,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,MAAmB,CAAC;IACxB,IAAI,QAAgB,CAAC;IACrB,IAAI,cAAsB,CAAC;IAC3B,IAAI,iBAAyB,CAAC;IAE9B,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAAe,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,eAAe,CAAC,uCAAuC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrG,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CACjD,EAAE,EACF,MAAM,CAAC,YAAY,EACnB,iBAAiB,EACjB,IAAI,qBAAqB,EAAE,CAC5B,CAAC;QACF,EAAE,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CACpB,SAAsB,EACtB,SAAiB,EACjB,UAA+B,EACnB,EAAE;QACd,MAAM,YAAY,GAA0B;YAC1C,aAAa,EAAE,SAAS;YACxB,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,iBAAiB;YAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,GAAG,UAAU;SACd,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAA;IAED,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;QAClC,MAAM,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAElG,MAAM,GAAG,MAAM,WAAW,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAElH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAEpE,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClF,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;QAClC,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,kFAAkF;IACpH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5D,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE;YACpC,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,8EAA8E,CAAC,CAAC;QAClL,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5D,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE;YACpC,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAE9F,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;QAChD,qEAAqE;QAErE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;QAEtD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;QAErD,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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 { Guid, Id64String } from \"@itwin/core-bentley\";\r\nimport { BriefcaseDb } from \"../IModelDb\";\r\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\r\nimport { ChannelControl } from \"../ChannelControl\";\r\nimport { Code, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { DrawingCategory } from \"../Category\";\r\nimport { HubMock } from \"../internal/HubMock\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\nimport * as chai from \"chai\";\r\nimport { TestUtils } from \"./TestUtils\";\r\n\r\nconst schemas = {\r\n /** Base schema v01.00.00 with classes A, C, D */\r\n v01x00x00: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */\r\n v01x00x01AddPropC2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */\r\n v01x00x02AddPropD2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */\r\n v01x00x02MovePropCToA: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.03 - Builds on top of v01.00.02 and in addition moves PropD to base, so we can have incoming and local transforming changes */\r\n v01x00x03MovePropCAndD: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.03\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */\r\n v01x00x01AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */\r\n v01x00x02AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n\r\n /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */\r\n v01x00x02AddPropC2Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"A\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"C\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"PropC2\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"D\">\r\n <BaseClass>A</BaseClass>\r\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`,\r\n};\r\n\r\ndescribe(\"SquashSchemaAndDataChanges\", () => {\r\n let imodel: BriefcaseDb;\r\n let iModelId: string;\r\n let drawingModelId: string;\r\n let drawingCategoryId: string;\r\n\r\n const createModelAndCategory = async (db: BriefcaseDb) => {\r\n const modelCode = IModelTestUtils.getUniqueModelCode(db, \"DrawingModel\");\r\n await db.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(db, modelCode);\r\n const newDrawingCategoryId = DrawingCategory.insert(\r\n db,\r\n IModel.dictionaryId,\r\n \"DrawingCategory\",\r\n new SubCategoryAppearance()\r\n );\r\n db.saveChanges();\r\n return [newDrawingModelId, newDrawingCategoryId];\r\n };\r\n\r\n const insertElement = (\r\n briefcase: BriefcaseDb,\r\n className: string,\r\n properties: Record<string, any>\r\n ): Id64String => {\r\n const elementProps: GeometricElementProps = {\r\n classFullName: className,\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n ...properties,\r\n };\r\n const element = briefcase.elements.createElement(elementProps);\r\n return briefcase.elements.insertElement(element.toJSON());\r\n }\r\n\r\n before(async () => {\r\n HubMock.startup(\"MergeSchemaAndDataChanges\", KnownTestLocations.outputDir);\r\n await TestUtils.shutdownBackend();\r\n await TestUtils.startBackend({ useSemanticRebase: true });\r\n });\r\n\r\n beforeEach(async () => {\r\n iModelId = await HubWrappers.createIModel(\"user1\", HubMock.iTwinId, `Test-${Guid.createValue()}`);\r\n\r\n imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\r\n\r\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n imodel.saveChanges();\r\n [drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);\r\n await imodel.importSchemaStrings([schemas.v01x00x00, schemas.v01x00x01AddPropC2]);\r\n await imodel.pushChanges({ description: \"create model and category and imported schemas\" });\r\n });\r\n\r\n afterEach(async () => {\r\n imodel.close();\r\n await HubMock.deleteIModel({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\r\n });\r\n\r\n after(async () => {\r\n HubMock.shutdown();\r\n await TestUtils.shutdownBackend();\r\n await TestUtils.startBackend(); // restart normal backend so subsequent test suites aren't left without IModelHost\r\n });\r\n\r\n it(\"should throw error if tried to import schema while unsaved changes are present\", async () => {\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n insertElement(imodel, \"TestDomain:C\", {\r\n propA: \"local_value_a\",\r\n propC: \"local_value_c\",\r\n });\r\n\r\n await chai.expect(imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA])).to.be.rejectedWith(\"Cannot import schemas with unsaved changes when useSemanticRebase flag is on\");\r\n await imodel.discardChanges();\r\n });\r\n\r\n it(\"should squash schema and data changes if useSemanticRebase flag is on\", async () => {\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n insertElement(imodel, \"TestDomain:C\", {\r\n propA: \"local_value_a\",\r\n propC: \"local_value_c\",\r\n });\r\n imodel.saveChanges(\"local data change\");\r\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]); // transforming data change\r\n\r\n const lastTxnProps = imodel.txns.getLastSavedTxnProps();\r\n chai.assert(lastTxnProps !== undefined);\r\n chai.assert(lastTxnProps?.type === \"Schema\");\r\n chai.assert(lastTxnProps?.prevId !== undefined);\r\n // both schema and data(migration) changes are merged into single txn\r\n\r\n const secondLastTxnProps = imodel.txns.getTxnProps(lastTxnProps.prevId);\r\n chai.assert(secondLastTxnProps !== undefined);\r\n chai.assert(secondLastTxnProps?.type === \"Ddl\");\r\n chai.assert(secondLastTxnProps?.prevId !== undefined);\r\n\r\n const thirdLastTxnProps = imodel.txns.getTxnProps(secondLastTxnProps.prevId);\r\n chai.assert(thirdLastTxnProps !== undefined);\r\n chai.assert(thirdLastTxnProps?.type === \"Data\");\r\n chai.assert(thirdLastTxnProps?.prevId === undefined);\r\n\r\n await imodel.discardChanges();\r\n });\r\n});"]}
1
+ {"version":3,"file":"SquashSchemaAndDataChanges.test.js","sourceRoot":"","sources":["../../../src/test/SquashSchemaAndDataChanges.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 { Guid, Id64String } from \"@itwin/core-bentley\";\nimport { BriefcaseDb } from \"../IModelDb\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\nimport { ChannelControl } from \"../ChannelControl\";\nimport { Code, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { DrawingCategory } from \"../Category\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport * as chai from \"chai\";\nimport { TestUtils } from \"./TestUtils\";\n\nconst schemas = {\n /** Base schema v01.00.00 with classes A, C, D */\n v01x00x00: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */\n v01x00x01AddPropC2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */\n v01x00x02AddPropD2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */\n v01x00x02MovePropCToA: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.03 - Builds on top of v01.00.02 and in addition moves PropD to base, so we can have incoming and local transforming changes */\n v01x00x03MovePropCAndD: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.03\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */\n v01x00x01AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */\n v01x00x02AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */\n v01x00x02AddPropC2Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"int\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n};\n\ndescribe(\"SquashSchemaAndDataChanges\", () => {\n let imodel: BriefcaseDb;\n let iModelId: string;\n let drawingModelId: string;\n let drawingCategoryId: string;\n\n const createModelAndCategory = async (db: BriefcaseDb) => {\n const modelCode = IModelTestUtils.getUniqueModelCode(db, \"DrawingModel\");\n await db.locks.acquireLocks({ shared: IModel.dictionaryId });\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(db, modelCode);\n const newDrawingCategoryId = DrawingCategory.insert(\n db,\n IModel.dictionaryId,\n \"DrawingCategory\",\n new SubCategoryAppearance()\n );\n db.saveChanges();\n return [newDrawingModelId, newDrawingCategoryId];\n };\n\n const insertElement = (\n briefcase: BriefcaseDb,\n className: string,\n properties: Record<string, any>\n ): Id64String => {\n const elementProps: GeometricElementProps = {\n classFullName: className,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n ...properties,\n };\n const element = briefcase.elements.createElement(elementProps);\n return briefcase.elements.insertElement(element.toJSON());\n }\n\n before(async () => {\n HubMock.startup(\"MergeSchemaAndDataChanges\", KnownTestLocations.outputDir);\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend({ useSemanticRebase: true });\n });\n\n beforeEach(async () => {\n iModelId = await HubWrappers.createIModel(\"user1\", HubMock.iTwinId, `Test-${Guid.createValue()}`);\n\n imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n imodel.saveChanges();\n [drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);\n await imodel.importSchemaStrings([schemas.v01x00x00, schemas.v01x00x01AddPropC2]);\n await imodel.pushChanges({ description: \"create model and category and imported schemas\" });\n });\n\n afterEach(async () => {\n imodel.close();\n await HubMock.deleteIModel({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n });\n\n after(async () => {\n HubMock.shutdown();\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend(); // restart normal backend so subsequent test suites aren't left without IModelHost\n });\n\n it(\"should throw error if tried to import schema while unsaved changes are present\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n insertElement(imodel, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n\n await chai.expect(imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA])).to.be.rejectedWith(\"Cannot import schemas with unsaved changes when useSemanticRebase flag is on\");\n await imodel.discardChanges();\n });\n\n it(\"should squash schema and data changes if useSemanticRebase flag is on\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n insertElement(imodel, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n imodel.saveChanges(\"local data change\");\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]); // transforming data change\n\n const lastTxnProps = imodel.txns.getLastSavedTxnProps();\n chai.assert(lastTxnProps !== undefined);\n chai.assert(lastTxnProps?.type === \"Schema\");\n chai.assert(lastTxnProps?.prevId !== undefined);\n // both schema and data(migration) changes are merged into single txn\n\n const secondLastTxnProps = imodel.txns.getTxnProps(lastTxnProps.prevId);\n chai.assert(secondLastTxnProps !== undefined);\n chai.assert(secondLastTxnProps?.type === \"Ddl\");\n chai.assert(secondLastTxnProps?.prevId !== undefined);\n\n const thirdLastTxnProps = imodel.txns.getTxnProps(secondLastTxnProps.prevId);\n chai.assert(thirdLastTxnProps !== undefined);\n chai.assert(thirdLastTxnProps?.type === \"Data\");\n chai.assert(thirdLastTxnProps?.prevId === undefined);\n\n await imodel.discardChanges();\n });\n});"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.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 { AccessToken, GuidString } from \"@itwin/core-bentley\";\r\nimport { ColorDef, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { BriefcaseDb, ChannelControl, SpatialCategory } from \"../core-backend\";\r\nimport { HubMock } from \"../internal/HubMock\";\r\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\r\n\r\n/** Test utility to push an iModel and ChangeSets */\r\nexport class TestChangeSetUtility {\r\n private readonly _iModelName: string;\r\n\r\n public iTwinId!: GuidString;\r\n public iModelId!: GuidString;\r\n private _iModel!: BriefcaseDb;\r\n private _accessToken: AccessToken;\r\n\r\n private _modelId!: string;\r\n private _categoryId!: string;\r\n\r\n constructor(accessToken: AccessToken, iModelName: string) {\r\n this._accessToken = accessToken;\r\n this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)\r\n }\r\n\r\n private async addTestModel(): Promise<void> {\r\n [, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(this._iModel, IModelTestUtils.getUniqueModelCode(this._iModel, \"TestPhysicalModel\"), true);\r\n this._iModel.saveChanges(\"Added test model\");\r\n }\r\n\r\n private async addTestCategory(): Promise<void> {\r\n this._categoryId = SpatialCategory.insert(this._iModel, IModel.dictionaryId, \"TestSpatialCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n this._iModel.saveChanges(\"Added test category\");\r\n }\r\n\r\n private async addTestElements(): Promise<void> {\r\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\r\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\r\n this._iModel.saveChanges(\"Added test elements\");\r\n }\r\n\r\n /** Create a new iModel, populate it, push the changes and returns the opened db.\r\n * Uses the iTwinId from HubMock.\r\n */\r\n public async createTestIModel(): Promise<BriefcaseDb> {\r\n this.iTwinId = HubMock.iTwinId;\r\n\r\n // Re-create iModel on iModelHub\r\n this.iModelId = await HubWrappers.recreateIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelName: this._iModelName, noLocks: true });\r\n\r\n this._iModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\r\n this._iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n // Populate sample data\r\n await this.addTestModel();\r\n await this.addTestCategory();\r\n await this.addTestElements();\r\n\r\n // Push changes to the hub\r\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Setup test model\" });\r\n return this._iModel;\r\n }\r\n\r\n public async pushTestChangeSet() {\r\n if (!this._iModel)\r\n throw new Error(\"Must first call createTestIModel\");\r\n await this.addTestElements();\r\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Added test elements\" });\r\n }\r\n\r\n public async deleteTestIModel(): Promise<void> {\r\n if (!this._iModel)\r\n throw new Error(\"Must first call createTestIModel\");\r\n await HubWrappers.closeAndDeleteBriefcaseDb(this._accessToken, this._iModel);\r\n await HubMock.deleteIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.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 { AccessToken, GuidString } from \"@itwin/core-bentley\";\nimport { ColorDef, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { BriefcaseDb, ChannelControl, SpatialCategory } from \"../core-backend\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\n\n/** Test utility to push an iModel and ChangeSets */\nexport class TestChangeSetUtility {\n private readonly _iModelName: string;\n\n public iTwinId!: GuidString;\n public iModelId!: GuidString;\n private _iModel!: BriefcaseDb;\n private _accessToken: AccessToken;\n\n private _modelId!: string;\n private _categoryId!: string;\n\n constructor(accessToken: AccessToken, iModelName: string) {\n this._accessToken = accessToken;\n this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)\n }\n\n private async addTestModel(): Promise<void> {\n [, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(this._iModel, IModelTestUtils.getUniqueModelCode(this._iModel, \"TestPhysicalModel\"), true);\n this._iModel.saveChanges(\"Added test model\");\n }\n\n private async addTestCategory(): Promise<void> {\n this._categoryId = SpatialCategory.insert(this._iModel, IModel.dictionaryId, \"TestSpatialCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n this._iModel.saveChanges(\"Added test category\");\n }\n\n private async addTestElements(): Promise<void> {\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\n this._iModel.saveChanges(\"Added test elements\");\n }\n\n /** Create a new iModel, populate it, push the changes and returns the opened db.\n * Uses the iTwinId from HubMock.\n */\n public async createTestIModel(): Promise<BriefcaseDb> {\n this.iTwinId = HubMock.iTwinId;\n\n // Re-create iModel on iModelHub\n this.iModelId = await HubWrappers.recreateIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelName: this._iModelName, noLocks: true });\n\n this._iModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n this._iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n // Populate sample data\n await this.addTestModel();\n await this.addTestCategory();\n await this.addTestElements();\n\n // Push changes to the hub\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Setup test model\" });\n return this._iModel;\n }\n\n public async pushTestChangeSet() {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await this.addTestElements();\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Added test elements\" });\n }\n\n public async deleteTestIModel(): Promise<void> {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await HubWrappers.closeAndDeleteBriefcaseDb(this._accessToken, this._iModel);\n await HubMock.deleteIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.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 * as path from \"path\";\r\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\r\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\r\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\r\nimport { IModelNative } from \"../internal/NativePlatform\";\r\n\r\n/** Class for simple test timing */\r\nexport class Timer {\r\n private _label: string;\r\n private _start: Date;\r\n constructor(label: string) {\r\n this._label = `\\t${label}`;\r\n this._start = new Date();\r\n }\r\n\r\n public end() {\r\n const stop = new Date();\r\n const elapsed = stop.getTime() - this._start.getTime();\r\n // eslint-disable-next-line no-console\r\n console.log(`${this._label}: ${elapsed}ms`);\r\n }\r\n}\r\n\r\n/**\r\n * Disables native code assertions from firing. This can be used by tests that intentionally\r\n * test failing operations. If those failing operations raise assertions in native code, the test\r\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\r\n * this class.\r\n */\r\nexport class DisableNativeAssertions implements Disposable {\r\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\r\n\r\n constructor() {\r\n this._native = new IModelNative.platform.DisableNativeAssertions();\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this._native)\r\n return;\r\n\r\n this._native.dispose();\r\n this._native = undefined;\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose(): void {\r\n this[Symbol.dispose]();\r\n }\r\n}\r\n\r\nexport class TestUtils {\r\n public static getCacheDir(fallback: string | undefined = undefined) {\r\n if (ProcessDetector.isMobileAppBackend) {\r\n return undefined; // Let the native side handle the cache.\r\n }\r\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\r\n }\r\n\r\n /** Handles the startup of IModelHost.\r\n * The provided config is used and will override any of the default values used in this method.\r\n *\r\n * The default includes:\r\n * - cacheDir = path.join(__dirname, \".cache\")\r\n * - allowSharedChannel = false;\r\n */\r\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\r\n const cfg = config ?? {};\r\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\r\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\r\n await IModelHost.startup(cfg);\r\n }\r\n\r\n public static async shutdownBackend(): Promise<void> {\r\n return IModelHost.shutdown();\r\n }\r\n\r\n public static setupLogging() {\r\n Logger.initializeToConsole();\r\n Logger.setLevelDefault(LogLevel.Error);\r\n }\r\n\r\n private static initDebugLogLevels(reset?: boolean) {\r\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\r\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\r\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\r\n }\r\n\r\n // Setup typical programmatic log level overrides here\r\n // Convenience method used to debug specific tests/fixtures\r\n public static setupDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(false);\r\n }\r\n\r\n public static resetDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(true);\r\n }\r\n}\r\n\r\n// The very first \"before\" run to initially setup the logging and initial backend.\r\nbefore(async () => {\r\n TestUtils.setupLogging();\r\n await TestUtils.startBackend();\r\n});\r\n\r\nafter(async () => {\r\n await TestUtils.shutdownBackend();\r\n});\r\n\r\n"]}
1
+ {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.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 * as path from \"path\";\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\nimport { IModelNative } from \"../internal/NativePlatform\";\n\n/** Class for simple test timing */\nexport class Timer {\n private _label: string;\n private _start: Date;\n constructor(label: string) {\n this._label = `\\t${label}`;\n this._start = new Date();\n }\n\n public end() {\n const stop = new Date();\n const elapsed = stop.getTime() - this._start.getTime();\n // eslint-disable-next-line no-console\n console.log(`${this._label}: ${elapsed}ms`);\n }\n}\n\n/**\n * Disables native code assertions from firing. This can be used by tests that intentionally\n * test failing operations. If those failing operations raise assertions in native code, the test\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\n * this class.\n */\nexport class DisableNativeAssertions implements Disposable {\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\n\n constructor() {\n this._native = new IModelNative.platform.DisableNativeAssertions();\n }\n\n public [Symbol.dispose](): void {\n if (!this._native)\n return;\n\n this._native.dispose();\n this._native = undefined;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\nexport class TestUtils {\n public static getCacheDir(fallback: string | undefined = undefined) {\n if (ProcessDetector.isMobileAppBackend) {\n return undefined; // Let the native side handle the cache.\n }\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\n }\n\n /** Handles the startup of IModelHost.\n * The provided config is used and will override any of the default values used in this method.\n *\n * The default includes:\n * - cacheDir = path.join(__dirname, \".cache\")\n * - allowSharedChannel = false;\n */\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\n const cfg = config ?? {};\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\n await IModelHost.startup(cfg);\n }\n\n public static async shutdownBackend(): Promise<void> {\n return IModelHost.shutdown();\n }\n\n public static setupLogging() {\n Logger.initializeToConsole();\n Logger.setLevelDefault(LogLevel.Error);\n }\n\n private static initDebugLogLevels(reset?: boolean) {\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\n }\n\n // Setup typical programmatic log level overrides here\n // Convenience method used to debug specific tests/fixtures\n public static setupDebugLogLevels() {\n TestUtils.initDebugLogLevels(false);\n }\n\n public static resetDebugLogLevels() {\n TestUtils.initDebugLogLevels(true);\n }\n}\n\n// The very first \"before\" run to initially setup the logging and initial backend.\nbefore(async () => {\n TestUtils.setupLogging();\n await TestUtils.startBackend();\n});\n\nafter(async () => {\n await TestUtils.shutdownBackend();\n});\n\n"]}
@@ -152,59 +152,59 @@ describe("updateField", () => {
152
152
  expect(fieldRun.cachedContent).to.equal(FieldRun.invalidContentIndicator);
153
153
  });
154
154
  });
155
- const fieldsSchemaXml = `
156
- <?xml version="1.0" encoding="UTF-8"?>
157
- <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
159
- <ECSchemaReference name='ECDbMap' version='02.00.04' alias='ecdbmap' />
160
-
161
- <ECEnumeration typeName="IntEnum" backingTypeName="int">
162
- <ECEnumerator name="one" displayLabel="One" value="1" />
163
- <ECEnumerator name="two" displayLabel="Two" value="2"/>
164
- </ECEnumeration>
165
-
166
- <ECStructClass typeName="InnerStruct" modifier="None">
167
- <ECProperty propertyName="bool" typeName="boolean"/>
168
- <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
169
- </ECStructClass>
170
-
171
- <ECStructClass typeName="OuterStruct" modifier="None">
172
- <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
173
- <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
174
- </ECStructClass>
175
-
176
- <ECEntityClass typeName="TestElement" modifier="None">
177
- <BaseClass>bis:PhysicalElement</BaseClass>
178
- <ECProperty propertyName="intProp" typeName="int"/>
179
- <ECProperty propertyName="point" typeName="point3d"/>
180
- <ECProperty propertyName="maybeNull" typeName="int"/>
181
- <ECProperty propertyName="datetime" typeName="dateTime"/>
182
- <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
183
- <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
184
- <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
185
- <ECProperty propertyName="intEnum" typeName="IntEnum"/>
186
- </ECEntityClass>
187
-
188
- <ECEntityClass typeName="TestAspect" modifier="None">
189
- <BaseClass>bis:ElementUniqueAspect</BaseClass>
190
- <ECProperty propertyName="aspectProp" typeName="int"/>
191
- </ECEntityClass>
192
-
193
- <ECEntityClass typeName="TestElementStringProp" modifier="Abstract">
194
- <ECCustomAttributes>
195
- <QueryView xmlns="ECDbMap.02.00.04">
196
- <Query>
197
- SELECT
198
- jo.ECInstanceId,
199
- ec_classid('Fields', 'TestElementStringProp') [ECClassId],
200
- json_extract(jo.jsonProperties, '$.stringProp') [StringProp]
201
- FROM Fields.TestElement jo
202
- </Query>
203
- </QueryView>
204
- </ECCustomAttributes>
205
- <ECProperty propertyName="StringProp" typeName="string" />
206
- </ECEntityClass>
207
- </ECSchema>
155
+ const fieldsSchemaXml = `
156
+ <?xml version="1.0" encoding="UTF-8"?>
157
+ <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
159
+ <ECSchemaReference name='ECDbMap' version='02.00.04' alias='ecdbmap' />
160
+
161
+ <ECEnumeration typeName="IntEnum" backingTypeName="int">
162
+ <ECEnumerator name="one" displayLabel="One" value="1" />
163
+ <ECEnumerator name="two" displayLabel="Two" value="2"/>
164
+ </ECEnumeration>
165
+
166
+ <ECStructClass typeName="InnerStruct" modifier="None">
167
+ <ECProperty propertyName="bool" typeName="boolean"/>
168
+ <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
169
+ </ECStructClass>
170
+
171
+ <ECStructClass typeName="OuterStruct" modifier="None">
172
+ <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
173
+ <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
174
+ </ECStructClass>
175
+
176
+ <ECEntityClass typeName="TestElement" modifier="None">
177
+ <BaseClass>bis:PhysicalElement</BaseClass>
178
+ <ECProperty propertyName="intProp" typeName="int"/>
179
+ <ECProperty propertyName="point" typeName="point3d"/>
180
+ <ECProperty propertyName="maybeNull" typeName="int"/>
181
+ <ECProperty propertyName="datetime" typeName="dateTime"/>
182
+ <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
183
+ <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
184
+ <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
185
+ <ECProperty propertyName="intEnum" typeName="IntEnum"/>
186
+ </ECEntityClass>
187
+
188
+ <ECEntityClass typeName="TestAspect" modifier="None">
189
+ <BaseClass>bis:ElementUniqueAspect</BaseClass>
190
+ <ECProperty propertyName="aspectProp" typeName="int"/>
191
+ </ECEntityClass>
192
+
193
+ <ECEntityClass typeName="TestElementStringProp" modifier="Abstract">
194
+ <ECCustomAttributes>
195
+ <QueryView xmlns="ECDbMap.02.00.04">
196
+ <Query>
197
+ SELECT
198
+ jo.ECInstanceId,
199
+ ec_classid('Fields', 'TestElementStringProp') [ECClassId],
200
+ json_extract(jo.jsonProperties, '$.stringProp') [StringProp]
201
+ FROM Fields.TestElement jo
202
+ </Query>
203
+ </QueryView>
204
+ </ECCustomAttributes>
205
+ <ECProperty propertyName="StringProp" typeName="string" />
206
+ </ECEntityClass>
207
+ </ECSchema>
208
208
  `;
209
209
  class TestElement extends PhysicalElement {
210
210
  static get className() { return "TestElement"; }