@itwin/core-backend 5.11.0-dev.4 → 5.11.0-dev.5

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 (448) hide show
  1. package/lib/cjs/BackendHubAccess.js.map +1 -1
  2. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  3. package/lib/cjs/BisCoreSchema.js.map +1 -1
  4. package/lib/cjs/BlobContainerService.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.js.map +1 -1
  6. package/lib/cjs/CatalogDb.js.map +1 -1
  7. package/lib/cjs/Category.js.map +1 -1
  8. package/lib/cjs/ChangeSummaryManager.js +2 -2
  9. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  10. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  12. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  13. package/lib/cjs/ChangesetReader.js +3 -3
  14. package/lib/cjs/ChangesetReader.js.map +1 -1
  15. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  16. package/lib/cjs/ChannelControl.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.js.map +1 -1
  18. package/lib/cjs/ClassRegistry.js +5 -5
  19. package/lib/cjs/ClassRegistry.js.map +1 -1
  20. package/lib/cjs/CloudSqlite.js.map +1 -1
  21. package/lib/cjs/CodeService.js.map +1 -1
  22. package/lib/cjs/CodeSpecs.js.map +1 -1
  23. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  24. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  25. package/lib/cjs/DevTools.js.map +1 -1
  26. package/lib/cjs/DisplayStyle.js.map +1 -1
  27. package/lib/cjs/ECDb.js.map +1 -1
  28. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  29. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  30. package/lib/cjs/ECSqlStatement.js.map +1 -1
  31. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  32. package/lib/cjs/EditTxn.js.map +1 -1
  33. package/lib/cjs/Element.d.ts +1 -1
  34. package/lib/cjs/Element.js +1 -1
  35. package/lib/cjs/Element.js.map +1 -1
  36. package/lib/cjs/ElementAspect.js.map +1 -1
  37. package/lib/cjs/ElementGraphics.js.map +1 -1
  38. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  39. package/lib/cjs/Entity.d.ts +3 -3
  40. package/lib/cjs/Entity.js +3 -3
  41. package/lib/cjs/Entity.js.map +1 -1
  42. package/lib/cjs/EntityReferences.js.map +1 -1
  43. package/lib/cjs/ExportGraphics.js.map +1 -1
  44. package/lib/cjs/ExternalSource.js.map +1 -1
  45. package/lib/cjs/FontFile.js.map +1 -1
  46. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  47. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  48. package/lib/cjs/GeometrySummary.js +47 -47
  49. package/lib/cjs/GeometrySummary.js.map +1 -1
  50. package/lib/cjs/IModelDb.js +8 -8
  51. package/lib/cjs/IModelDb.js.map +1 -1
  52. package/lib/cjs/IModelDbFonts.js.map +1 -1
  53. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  54. package/lib/cjs/IModelHost.js.map +1 -1
  55. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  56. package/lib/cjs/IModelJsFs.js.map +1 -1
  57. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  58. package/lib/cjs/IpcHost.js.map +1 -1
  59. package/lib/cjs/LineStyle.js.map +1 -1
  60. package/lib/cjs/LocalHub.js +1 -1
  61. package/lib/cjs/LocalHub.js.map +1 -1
  62. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  63. package/lib/cjs/LockControl.js.map +1 -1
  64. package/lib/cjs/Material.js.map +1 -1
  65. package/lib/cjs/Model.js.map +1 -1
  66. package/lib/cjs/NativeAppStorage.js.map +1 -1
  67. package/lib/cjs/NativeHost.js.map +1 -1
  68. package/lib/cjs/NavigationRelationship.js.map +1 -1
  69. package/lib/cjs/PartialChangeUnifier.js +7 -7
  70. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  71. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  72. package/lib/cjs/PropertyStore.js.map +1 -1
  73. package/lib/cjs/Relationship.d.ts +1 -1
  74. package/lib/cjs/Relationship.js +1 -1
  75. package/lib/cjs/Relationship.js.map +1 -1
  76. package/lib/cjs/RpcBackend.js.map +1 -1
  77. package/lib/cjs/SQLiteDb.js.map +1 -1
  78. package/lib/cjs/Schema.js.map +1 -1
  79. package/lib/cjs/SchemaSync.js.map +1 -1
  80. package/lib/cjs/SchemaUtils.js.map +1 -1
  81. package/lib/cjs/SheetIndex.js.map +1 -1
  82. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  83. package/lib/cjs/SqliteStatement.js.map +1 -1
  84. package/lib/cjs/StashManager.js.map +1 -1
  85. package/lib/cjs/Texture.js.map +1 -1
  86. package/lib/cjs/TileStorage.js.map +1 -1
  87. package/lib/cjs/TxnManager.js.map +1 -1
  88. package/lib/cjs/ViewDefinition.js.map +1 -1
  89. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  90. package/lib/cjs/ViewStore.js.map +1 -1
  91. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  92. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  93. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  94. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  95. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  96. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  97. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  98. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  99. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
  100. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
  101. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  102. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  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 +33 -33
  119. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  120. package/lib/cjs/internal/Symbols.js.map +1 -1
  121. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  122. package/lib/cjs/internal/cross-package.js.map +1 -1
  123. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  124. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  125. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  126. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  127. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  128. package/lib/cjs/rpc/multipart.js.map +1 -1
  129. package/lib/cjs/rpc/tracing.js.map +1 -1
  130. package/lib/cjs/rpc/web/logging.js.map +1 -1
  131. package/lib/cjs/rpc/web/request.js.map +1 -1
  132. package/lib/cjs/rpc/web/response.js.map +1 -1
  133. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  134. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  135. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  136. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  137. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  138. package/lib/cjs/workspace/Settings.js.map +1 -1
  139. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  140. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  141. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  142. package/lib/cjs/workspace/Workspace.js.map +1 -1
  143. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  144. package/lib/esm/BackendHubAccess.js.map +1 -1
  145. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  146. package/lib/esm/BisCoreSchema.js.map +1 -1
  147. package/lib/esm/BlobContainerService.js.map +1 -1
  148. package/lib/esm/BriefcaseManager.js.map +1 -1
  149. package/lib/esm/CatalogDb.js.map +1 -1
  150. package/lib/esm/Category.js.map +1 -1
  151. package/lib/esm/ChangeSummaryManager.js +2 -2
  152. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  153. package/lib/esm/ChangedElementsDb.js.map +1 -1
  154. package/lib/esm/ChangesetECAdaptor.js +248 -248
  155. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  156. package/lib/esm/ChangesetReader.js +3 -3
  157. package/lib/esm/ChangesetReader.js.map +1 -1
  158. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  159. package/lib/esm/ChannelControl.js.map +1 -1
  160. package/lib/esm/CheckpointManager.js.map +1 -1
  161. package/lib/esm/ClassRegistry.js +5 -5
  162. package/lib/esm/ClassRegistry.js.map +1 -1
  163. package/lib/esm/CloudSqlite.js.map +1 -1
  164. package/lib/esm/CodeService.js.map +1 -1
  165. package/lib/esm/CodeSpecs.js.map +1 -1
  166. package/lib/esm/ConcurrentQuery.js.map +1 -1
  167. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  168. package/lib/esm/DevTools.js.map +1 -1
  169. package/lib/esm/DisplayStyle.js.map +1 -1
  170. package/lib/esm/ECDb.js.map +1 -1
  171. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  172. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  173. package/lib/esm/ECSqlStatement.js.map +1 -1
  174. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  175. package/lib/esm/EditTxn.js.map +1 -1
  176. package/lib/esm/Element.d.ts +1 -1
  177. package/lib/esm/Element.js +1 -1
  178. package/lib/esm/Element.js.map +1 -1
  179. package/lib/esm/ElementAspect.js.map +1 -1
  180. package/lib/esm/ElementGraphics.js.map +1 -1
  181. package/lib/esm/ElementTreeWalker.js.map +1 -1
  182. package/lib/esm/Entity.d.ts +3 -3
  183. package/lib/esm/Entity.js +3 -3
  184. package/lib/esm/Entity.js.map +1 -1
  185. package/lib/esm/EntityReferences.js.map +1 -1
  186. package/lib/esm/ExportGraphics.js.map +1 -1
  187. package/lib/esm/ExternalSource.js.map +1 -1
  188. package/lib/esm/FontFile.js.map +1 -1
  189. package/lib/esm/GeoCoordConfig.js.map +1 -1
  190. package/lib/esm/GeographicCRSServices.js.map +1 -1
  191. package/lib/esm/GeometrySummary.js +47 -47
  192. package/lib/esm/GeometrySummary.js.map +1 -1
  193. package/lib/esm/IModelDb.js +8 -8
  194. package/lib/esm/IModelDb.js.map +1 -1
  195. package/lib/esm/IModelDbFonts.js.map +1 -1
  196. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  197. package/lib/esm/IModelHost.js.map +1 -1
  198. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  199. package/lib/esm/IModelJsFs.js.map +1 -1
  200. package/lib/esm/ImageSourceConversion.js.map +1 -1
  201. package/lib/esm/IpcHost.js.map +1 -1
  202. package/lib/esm/LineStyle.js.map +1 -1
  203. package/lib/esm/LocalHub.js +1 -1
  204. package/lib/esm/LocalHub.js.map +1 -1
  205. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  206. package/lib/esm/LockControl.js.map +1 -1
  207. package/lib/esm/Material.js.map +1 -1
  208. package/lib/esm/Model.js.map +1 -1
  209. package/lib/esm/NativeAppStorage.js.map +1 -1
  210. package/lib/esm/NativeHost.js.map +1 -1
  211. package/lib/esm/NavigationRelationship.js.map +1 -1
  212. package/lib/esm/PartialChangeUnifier.js +7 -7
  213. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  214. package/lib/esm/PromiseMemoizer.js.map +1 -1
  215. package/lib/esm/PropertyStore.js.map +1 -1
  216. package/lib/esm/Relationship.d.ts +1 -1
  217. package/lib/esm/Relationship.js +1 -1
  218. package/lib/esm/Relationship.js.map +1 -1
  219. package/lib/esm/RpcBackend.js.map +1 -1
  220. package/lib/esm/SQLiteDb.js.map +1 -1
  221. package/lib/esm/Schema.js.map +1 -1
  222. package/lib/esm/SchemaSync.js.map +1 -1
  223. package/lib/esm/SchemaUtils.js.map +1 -1
  224. package/lib/esm/SheetIndex.js.map +1 -1
  225. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  226. package/lib/esm/SqliteStatement.js.map +1 -1
  227. package/lib/esm/StashManager.js.map +1 -1
  228. package/lib/esm/Texture.js.map +1 -1
  229. package/lib/esm/TileStorage.js.map +1 -1
  230. package/lib/esm/TxnManager.js.map +1 -1
  231. package/lib/esm/ViewDefinition.js.map +1 -1
  232. package/lib/esm/ViewStateHydrator.js.map +1 -1
  233. package/lib/esm/ViewStore.js.map +1 -1
  234. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  235. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  236. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  237. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  238. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  239. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  240. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  241. package/lib/esm/core-backend.js.map +1 -1
  242. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  243. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  244. package/lib/esm/domains/GenericElements.js.map +1 -1
  245. package/lib/esm/domains/GenericSchema.js.map +1 -1
  246. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  247. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  248. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  249. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  250. package/lib/esm/internal/HubMock.js.map +1 -1
  251. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  252. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  253. package/lib/esm/internal/NativePlatform.js.map +1 -1
  254. package/lib/esm/internal/NoLocks.js.map +1 -1
  255. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  256. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  257. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  258. package/lib/esm/internal/Symbols.js.map +1 -1
  259. package/lib/esm/internal/annotations/fields.js.map +1 -1
  260. package/lib/esm/internal/cross-package.js.map +1 -1
  261. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  262. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  263. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  264. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  265. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  266. package/lib/esm/rpc/multipart.js.map +1 -1
  267. package/lib/esm/rpc/tracing.js.map +1 -1
  268. package/lib/esm/rpc/web/logging.js.map +1 -1
  269. package/lib/esm/rpc/web/request.js.map +1 -1
  270. package/lib/esm/rpc/web/response.js.map +1 -1
  271. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  272. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  273. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  274. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  275. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  276. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  277. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  278. package/lib/esm/test/AttachDb.test.js +11 -11
  279. package/lib/esm/test/AttachDb.test.js.map +1 -1
  280. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  281. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  282. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  283. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  284. package/lib/esm/test/IModelHost.test.js.map +1 -1
  285. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  286. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  287. package/lib/esm/test/IpcHost.test.js.map +1 -1
  288. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  289. package/lib/esm/test/PrintElementTree.js.map +1 -1
  290. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  291. package/lib/esm/test/RevisionUtility.js.map +1 -1
  292. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
  293. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
  294. package/lib/esm/test/SchemaUtils.test.js +25 -25
  295. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  296. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  297. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  298. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  299. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  300. package/lib/esm/test/TestEditTxn.js.map +1 -1
  301. package/lib/esm/test/TestUtils.js.map +1 -1
  302. package/lib/esm/test/annotations/Fields.test.js +53 -53
  303. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  304. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  305. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  306. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  307. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  308. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  309. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  310. package/lib/esm/test/categories/Category.test.js.map +1 -1
  311. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  312. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  313. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  314. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  315. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  316. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  317. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  318. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  319. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  320. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  321. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  322. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  323. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  324. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  325. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  326. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  327. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  328. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  329. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  330. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  331. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  332. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  333. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  334. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  335. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  336. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  337. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  338. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  339. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  340. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  341. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  342. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  343. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  344. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  345. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  346. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  347. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  348. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  349. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  350. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  351. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  352. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  353. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  354. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  355. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  356. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  357. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  358. package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
  359. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  360. package/lib/esm/test/imageData.js.map +1 -1
  361. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  362. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  363. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  364. package/lib/esm/test/imodel/IModel.test.js +44 -44
  365. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  366. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  367. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  368. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  369. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  370. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  371. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  372. package/lib/esm/test/index.js.map +1 -1
  373. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  374. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  375. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  376. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  377. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  378. package/lib/esm/test/rpc/response.test.js.map +1 -1
  379. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  380. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  381. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  382. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  383. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  384. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  385. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  386. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  387. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  388. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  389. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  390. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  391. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +15 -15
  392. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  393. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  394. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  395. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  396. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  397. package/lib/esm/test/standalone/ChangesetReader.test.js +296 -296
  398. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  399. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  400. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  401. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  402. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  403. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  404. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  405. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  406. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  407. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  408. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  409. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  410. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  411. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  412. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  413. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  414. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  415. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  416. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  417. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  418. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  419. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  420. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  421. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  422. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  423. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  424. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  425. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  426. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  427. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  428. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  429. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  430. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  431. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  432. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  433. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  434. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  435. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  436. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  437. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  438. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  439. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  440. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  441. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  442. package/lib/esm/workspace/Settings.js.map +1 -1
  443. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  444. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  445. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  446. package/lib/esm/workspace/Workspace.js.map +1 -1
  447. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  448. package/package.json +12 -12
@@ -9,14 +9,14 @@ import { ECDbTestHelper } from "./ecdb/ECDbTestHelper";
9
9
  import { DbResult } from "@itwin/core-bentley";
10
10
  describe("convertEC2Schemas", () => {
11
11
  it("verify namespace", () => {
12
- const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
13
- <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
14
- <ECSchemaReference name="RefSchema" version="01.00" prefix="rs" />
15
- <ECClass typeName="TestEntityClass" isDomainClass="true" />
12
+ const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
13
+ <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
14
+ <ECSchemaReference name="RefSchema" version="01.00" prefix="rs" />
15
+ <ECClass typeName="TestEntityClass" isDomainClass="true" />
16
16
  </ECSchema>`;
17
- const ec2RefSchema = `<?xml version="1.0" encoding="UTF-8"?>
18
- <ECSchema schemaName="RefSchema" nameSpacePrefix="rs" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
19
- <ECClass typeName="TestStructClass" isStruct="true" />
17
+ const ec2RefSchema = `<?xml version="1.0" encoding="UTF-8"?>
18
+ <ECSchema schemaName="RefSchema" nameSpacePrefix="rs" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
19
+ <ECClass typeName="TestStructClass" isStruct="true" />
20
20
  </ECSchema>`;
21
21
  const ec3Schemas = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);
22
22
  assert.equal(ec3Schemas.length, 2);
@@ -27,24 +27,24 @@ describe("convertEC2Schemas", () => {
27
27
  assert.isTrue(ec3RefSchema.includes("http://www.bentley.com/schemas/Bentley.ECXML.3.2"));
28
28
  });
29
29
  it("rename reserved words", async () => {
30
- const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
31
- <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
32
- <ECClass typeName="TestEntityClass" isDomainClass="true">
33
- <ECProperty propertyName="Id" typeName="string" />
34
- <ECProperty propertyName="ECInstanceId" typeName="string" />
35
- <ECProperty propertyName="ECClassId" typeName="string" />
36
- <ECProperty propertyName="SourceECInstanceId" typeName="string" />
37
- <ECProperty propertyName="SourceId" typeName="string" />
38
- <ECProperty propertyName="SourceECClassId" typeName="string" />
39
- <ECProperty propertyName="TargetECInstanceId" typeName="string" />
40
- <ECProperty propertyName="TargetId" typeName="string" />
41
- <ECProperty propertyName="TargetECClassId" typeName="string" />
42
- </ECClass>
43
- <ECClass typeName="TestStructClass" isStruct="true">
44
- <ECProperty propertyName="Id" typeName="string" />
45
- <ECProperty propertyName="ECInstanceId" typeName="string" />
46
- <ECProperty propertyName="ECClassId" typeName="string" />
47
- </ECClass>
30
+ const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
31
+ <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
32
+ <ECClass typeName="TestEntityClass" isDomainClass="true">
33
+ <ECProperty propertyName="Id" typeName="string" />
34
+ <ECProperty propertyName="ECInstanceId" typeName="string" />
35
+ <ECProperty propertyName="ECClassId" typeName="string" />
36
+ <ECProperty propertyName="SourceECInstanceId" typeName="string" />
37
+ <ECProperty propertyName="SourceId" typeName="string" />
38
+ <ECProperty propertyName="SourceECClassId" typeName="string" />
39
+ <ECProperty propertyName="TargetECInstanceId" typeName="string" />
40
+ <ECProperty propertyName="TargetId" typeName="string" />
41
+ <ECProperty propertyName="TargetECClassId" typeName="string" />
42
+ </ECClass>
43
+ <ECClass typeName="TestStructClass" isStruct="true">
44
+ <ECProperty propertyName="Id" typeName="string" />
45
+ <ECProperty propertyName="ECInstanceId" typeName="string" />
46
+ <ECProperty propertyName="ECClassId" typeName="string" />
47
+ </ECClass>
48
48
  </ECSchema>`;
49
49
  const ec3Schemas = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);
50
50
  assert.equal(ec3Schemas.length, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaUtils.test.js","sourceRoot":"","sources":["../../../src/test/SchemaUtils.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*--------------------------------------------------------------------------------------------*/\nimport { assert } from \"chai\";\nimport { convertEC2SchemasToEC3Schemas, ECDb, ECSqlStatement, upgradeCustomAttributesToEC3 } from \"../core-backend\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ecdb/ECDbTestHelper\";\nimport { DbResult } from \"@itwin/core-bentley\";\n\ndescribe(\"convertEC2Schemas\", () => {\n it(\"verify namespace\", () => {\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECSchemaReference name=\"RefSchema\" version=\"01.00\" prefix=\"rs\" />\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\" />\n </ECSchema>`;\n\n const ec2RefSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"RefSchema\" nameSpacePrefix=\"rs\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\" />\n </ECSchema>`;\n\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);\n assert.equal(ec3Schemas.length, 2);\n // converted EC3 schemas are in the same order as of input schemas\n const ec3SchemaXml = ec3Schemas[0];\n const ec3RefSchema = ec3Schemas[1];\n\n assert.isTrue(ec3SchemaXml.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\n assert.isTrue(ec3RefSchema.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\n });\n\n it(\"rename reserved words\", async () => {\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\">\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceECClassId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetECClassId\" typeName=\"string\" />\n </ECClass>\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\">\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\n </ECClass>\n </ECSchema>`;\n\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);\n assert.equal(ec3Schemas.length, 1);\n const schemasWithUpdatedCA: string[] = upgradeCustomAttributesToEC3(ec3Schemas);\n assert.equal(schemasWithUpdatedCA.length, 1);\n\n const outDir = KnownTestLocations.outputDir;\n const db: ECDb = ECDbTestHelper.createECDb(outDir, \"RenameReservedWords.ecdb\", schemasWithUpdatedCA[0]);\n assert.isTrue(db !== undefined);\n assert.isTrue(db.isOpen);\n\n const propNamesInEntityClass = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let stmt: ECSqlStatement = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestEntityClass' ORDER BY p.Ordinal\");\n let rowCount = 0;\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rowCount++;\n const row = stmt.getRow();\n propNamesInEntityClass.push(row.name);\n }\n stmt[Symbol.dispose]();\n assert.equal(rowCount, 9);\n\n assert.isFalse(propNamesInEntityClass.includes(\"Id\")); // The Id property is a reserved keyword and should have been renamed\n assert.isFalse(propNamesInEntityClass.includes(\"ECClassId\")); // The ECClassId property is a reserved keyword and should have been renamed\n assert.isFalse(propNamesInEntityClass.includes(\"ECInstanceId\")); // The ECInstanceId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_Id_\")); // The Id property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECInstanceId\")); // The SourceECInstanceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceId\")); // The SourceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECClassId\")); // The SourceECClassId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECInstanceId\")); // The TargetECInstanceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetId\")); // The TargetId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECClassId\")); // The TargetECClassId property is allowed on Entity classes and should not be renamed\n\n const propNamesInStructClass = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n stmt = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestStructClass' ORDER BY p.Ordinal\");\n rowCount = 0;\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rowCount++;\n const row = stmt.getRow();\n propNamesInStructClass.push(row.name);\n }\n stmt[Symbol.dispose]();\n assert.equal(rowCount, 3);\n\n assert.isTrue(propNamesInStructClass.includes(\"Id\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\n assert.isTrue(propNamesInStructClass.includes(\"ECClassId\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isTrue(propNamesInStructClass.includes(\"ECInstanceId\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_Id_\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\n });\n});\n"]}
1
+ {"version":3,"file":"SchemaUtils.test.js","sourceRoot":"","sources":["../../../src/test/SchemaUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert } from \"chai\";\r\nimport { convertEC2SchemasToEC3Schemas, ECDb, ECSqlStatement, upgradeCustomAttributesToEC3 } from \"../core-backend\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\nimport { ECDbTestHelper } from \"./ecdb/ECDbTestHelper\";\r\nimport { DbResult } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"convertEC2Schemas\", () => {\r\n it(\"verify namespace\", () => {\r\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECSchemaReference name=\"RefSchema\" version=\"01.00\" prefix=\"rs\" />\r\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\" />\r\n </ECSchema>`;\r\n\r\n const ec2RefSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"RefSchema\" nameSpacePrefix=\"rs\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\" />\r\n </ECSchema>`;\r\n\r\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);\r\n assert.equal(ec3Schemas.length, 2);\r\n // converted EC3 schemas are in the same order as of input schemas\r\n const ec3SchemaXml = ec3Schemas[0];\r\n const ec3RefSchema = ec3Schemas[1];\r\n\r\n assert.isTrue(ec3SchemaXml.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\r\n assert.isTrue(ec3RefSchema.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\r\n });\r\n\r\n it(\"rename reserved words\", async () => {\r\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\">\r\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceECClassId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetECClassId\" typeName=\"string\" />\r\n </ECClass>\r\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\">\r\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\r\n </ECClass>\r\n </ECSchema>`;\r\n\r\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);\r\n assert.equal(ec3Schemas.length, 1);\r\n const schemasWithUpdatedCA: string[] = upgradeCustomAttributesToEC3(ec3Schemas);\r\n assert.equal(schemasWithUpdatedCA.length, 1);\r\n\r\n const outDir = KnownTestLocations.outputDir;\r\n const db: ECDb = ECDbTestHelper.createECDb(outDir, \"RenameReservedWords.ecdb\", schemasWithUpdatedCA[0]);\r\n assert.isTrue(db !== undefined);\r\n assert.isTrue(db.isOpen);\r\n\r\n const propNamesInEntityClass = [];\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n let stmt: ECSqlStatement = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestEntityClass' ORDER BY p.Ordinal\");\r\n let rowCount = 0;\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n rowCount++;\r\n const row = stmt.getRow();\r\n propNamesInEntityClass.push(row.name);\r\n }\r\n stmt[Symbol.dispose]();\r\n assert.equal(rowCount, 9);\r\n\r\n assert.isFalse(propNamesInEntityClass.includes(\"Id\")); // The Id property is a reserved keyword and should have been renamed\r\n assert.isFalse(propNamesInEntityClass.includes(\"ECClassId\")); // The ECClassId property is a reserved keyword and should have been renamed\r\n assert.isFalse(propNamesInEntityClass.includes(\"ECInstanceId\")); // The ECInstanceId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_Id_\")); // The Id property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECInstanceId\")); // The SourceECInstanceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceId\")); // The SourceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECClassId\")); // The SourceECClassId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECInstanceId\")); // The TargetECInstanceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetId\")); // The TargetId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECClassId\")); // The TargetECClassId property is allowed on Entity classes and should not be renamed\r\n\r\n const propNamesInStructClass = [];\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n stmt = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestStructClass' ORDER BY p.Ordinal\");\r\n rowCount = 0;\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n rowCount++;\r\n const row = stmt.getRow();\r\n propNamesInStructClass.push(row.name);\r\n }\r\n stmt[Symbol.dispose]();\r\n assert.equal(rowCount, 3);\r\n\r\n assert.isTrue(propNamesInStructClass.includes(\"Id\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isTrue(propNamesInStructClass.includes(\"ECClassId\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isTrue(propNamesInStructClass.includes(\"ECInstanceId\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_Id_\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SequentialLogMatcher.js","sourceRoot":"","sources":["../../../src/test/SequentialLogMatcher.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*--------------------------------------------------------------------------------------------*/\nimport { LogFunction, Logger, LoggingMetaData, LogLevel } from \"@itwin/core-bentley\";\n\n/**\n * SequentialLogMatcher match log messages in order and remove them from the list. Any test using\n * should check if length come down to zero. If its not then test should fail.\n */\nexport class SequentialLogMatcher extends Logger {\n private _rules: LogMatchRule[] = [];\n private _originalLogError: LogFunction | undefined;\n private _originalLogWarning: LogFunction | undefined;\n private _originalLogInfo: LogFunction | undefined;\n private _originalLogTrace: LogFunction | undefined;\n\n private allow(level: LogLevel, category: string, message: string): boolean {\n if (this._rules.length === 0)\n return true;\n\n const rule = this._rules[0];\n if (rule.test(level, category, message)) {\n this._rules.shift();\n return this._suppressMatchLogMsgs === false;\n }\n return true;\n }\n\n public constructor(private _suppressMatchLogMsgs: boolean = true) {\n super();\n this._originalLogError = Logger._logError;\n this._originalLogWarning = Logger._logWarning;\n this._originalLogInfo = Logger._logInfo;\n this._originalLogTrace = Logger._logTrace;\n\n Logger._logError = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Error, category, message))\n this._originalLogError?.(category, message, metaData);\n };\n\n Logger._logWarning = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Warning, category, message))\n this._originalLogWarning?.(category, message, metaData);\n };\n\n Logger._logInfo = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Info, category, message))\n this._originalLogInfo?.(category, message, metaData);\n };\n\n Logger._logTrace = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Trace, category, message))\n this._originalLogTrace?.(category, message, metaData);\n };\n }\n\n public append(): LogMatchRule {\n const newMatch = new LogMatchRule();\n this._rules.push(newMatch);\n return newMatch;\n }\n public finish(): boolean {\n return this.length === 0;\n }\n public finishAndDispose(): boolean {\n const rc = this.finish();\n Logger._logError = this._originalLogError;\n Logger._logWarning = this._originalLogWarning;\n Logger._logInfo = this._originalLogInfo;\n Logger._logTrace = this._originalLogTrace;\n return rc;\n }\n public get length(): number { return this._rules.length; }\n}\n\nexport class LogMatchRule {\n private _level?: LogLevel;\n private _category?: string | RegExp;\n private _message?: string | RegExp;\n private _metaDataCheck?: (data: any) => boolean;\n public test(level: LogLevel, category: string, message: string): boolean {\n if (this._level) {\n if (this._level !== level)\n return false;\n }\n\n if (this._category) {\n if (this._category instanceof RegExp) {\n if (!this._category.test(category))\n return false;\n } else {\n if (this._category !== category)\n return false;\n }\n }\n if (this._message) {\n if (this._message instanceof RegExp) {\n if (!this._message.test(message))\n return false;\n } else {\n if (this._message !== message)\n return false;\n }\n }\n return true;\n }\n\n private level(lvl: LogLevel): LogMatchRule {\n this._level = lvl;\n return this;\n }\n public trace(): LogMatchRule {\n return this.level(LogLevel.Trace);\n }\n public error(): LogMatchRule {\n return this.level(LogLevel.Error);\n }\n public info(): LogMatchRule {\n return this.level(LogLevel.Info);\n }\n public warn(): LogMatchRule {\n return this.level(LogLevel.Warning);\n }\n public category(category: string | RegExp): LogMatchRule {\n this._category = category;\n return this;\n }\n public message(message: string | RegExp): LogMatchRule {\n this._message = message;\n return this;\n }\n public metadata(check: (data: any) => boolean): LogMatchRule {\n this._metaDataCheck = check;\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"SequentialLogMatcher.js","sourceRoot":"","sources":["../../../src/test/SequentialLogMatcher.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\nimport { LogFunction, Logger, LoggingMetaData, LogLevel } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * SequentialLogMatcher match log messages in order and remove them from the list. Any test using\r\n * should check if length come down to zero. If its not then test should fail.\r\n */\r\nexport class SequentialLogMatcher extends Logger {\r\n private _rules: LogMatchRule[] = [];\r\n private _originalLogError: LogFunction | undefined;\r\n private _originalLogWarning: LogFunction | undefined;\r\n private _originalLogInfo: LogFunction | undefined;\r\n private _originalLogTrace: LogFunction | undefined;\r\n\r\n private allow(level: LogLevel, category: string, message: string): boolean {\r\n if (this._rules.length === 0)\r\n return true;\r\n\r\n const rule = this._rules[0];\r\n if (rule.test(level, category, message)) {\r\n this._rules.shift();\r\n return this._suppressMatchLogMsgs === false;\r\n }\r\n return true;\r\n }\r\n\r\n public constructor(private _suppressMatchLogMsgs: boolean = true) {\r\n super();\r\n this._originalLogError = Logger._logError;\r\n this._originalLogWarning = Logger._logWarning;\r\n this._originalLogInfo = Logger._logInfo;\r\n this._originalLogTrace = Logger._logTrace;\r\n\r\n Logger._logError = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Error, category, message))\r\n this._originalLogError?.(category, message, metaData);\r\n };\r\n\r\n Logger._logWarning = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Warning, category, message))\r\n this._originalLogWarning?.(category, message, metaData);\r\n };\r\n\r\n Logger._logInfo = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Info, category, message))\r\n this._originalLogInfo?.(category, message, metaData);\r\n };\r\n\r\n Logger._logTrace = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Trace, category, message))\r\n this._originalLogTrace?.(category, message, metaData);\r\n };\r\n }\r\n\r\n public append(): LogMatchRule {\r\n const newMatch = new LogMatchRule();\r\n this._rules.push(newMatch);\r\n return newMatch;\r\n }\r\n public finish(): boolean {\r\n return this.length === 0;\r\n }\r\n public finishAndDispose(): boolean {\r\n const rc = this.finish();\r\n Logger._logError = this._originalLogError;\r\n Logger._logWarning = this._originalLogWarning;\r\n Logger._logInfo = this._originalLogInfo;\r\n Logger._logTrace = this._originalLogTrace;\r\n return rc;\r\n }\r\n public get length(): number { return this._rules.length; }\r\n}\r\n\r\nexport class LogMatchRule {\r\n private _level?: LogLevel;\r\n private _category?: string | RegExp;\r\n private _message?: string | RegExp;\r\n private _metaDataCheck?: (data: any) => boolean;\r\n public test(level: LogLevel, category: string, message: string): boolean {\r\n if (this._level) {\r\n if (this._level !== level)\r\n return false;\r\n }\r\n\r\n if (this._category) {\r\n if (this._category instanceof RegExp) {\r\n if (!this._category.test(category))\r\n return false;\r\n } else {\r\n if (this._category !== category)\r\n return false;\r\n }\r\n }\r\n if (this._message) {\r\n if (this._message instanceof RegExp) {\r\n if (!this._message.test(message))\r\n return false;\r\n } else {\r\n if (this._message !== message)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private level(lvl: LogLevel): LogMatchRule {\r\n this._level = lvl;\r\n return this;\r\n }\r\n public trace(): LogMatchRule {\r\n return this.level(LogLevel.Trace);\r\n }\r\n public error(): LogMatchRule {\r\n return this.level(LogLevel.Error);\r\n }\r\n public info(): LogMatchRule {\r\n return this.level(LogLevel.Info);\r\n }\r\n public warn(): LogMatchRule {\r\n return this.level(LogLevel.Warning);\r\n }\r\n public category(category: string | RegExp): LogMatchRule {\r\n this._category = category;\r\n return this;\r\n }\r\n public message(message: string | RegExp): LogMatchRule {\r\n this._message = message;\r\n return this;\r\n }\r\n public metadata(check: (data: any) => boolean): LogMatchRule {\r\n this._metaDataCheck = check;\r\n return this;\r\n }\r\n}\r\n"]}
@@ -14,149 +14,149 @@ import { TestUtils } from "./TestUtils";
14
14
  import { EditTxn, withEditTxn } from "../EditTxn";
15
15
  const schemas = {
16
16
  /** Base schema v01.00.00 with classes A, C, D */
17
- v01x00x00: `<?xml version="1.0" encoding="UTF-8"?>
18
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
19
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
20
- <ECEntityClass typeName="A">
21
- <BaseClass>bis:GraphicalElement2d</BaseClass>
22
- <ECProperty propertyName="PropA" typeName="string"/>
23
- </ECEntityClass>
24
- <ECEntityClass typeName="C">
25
- <BaseClass>A</BaseClass>
26
- <ECProperty propertyName="PropC" typeName="string"/>
27
- </ECEntityClass>
28
- <ECEntityClass typeName="D">
29
- <BaseClass>A</BaseClass>
30
- <ECProperty propertyName="PropD" typeName="string"/>
31
- </ECEntityClass>
17
+ v01x00x00: `<?xml version="1.0" encoding="UTF-8"?>
18
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
19
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
20
+ <ECEntityClass typeName="A">
21
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
22
+ <ECProperty propertyName="PropA" typeName="string"/>
23
+ </ECEntityClass>
24
+ <ECEntityClass typeName="C">
25
+ <BaseClass>A</BaseClass>
26
+ <ECProperty propertyName="PropC" typeName="string"/>
27
+ </ECEntityClass>
28
+ <ECEntityClass typeName="D">
29
+ <BaseClass>A</BaseClass>
30
+ <ECProperty propertyName="PropD" typeName="string"/>
31
+ </ECEntityClass>
32
32
  </ECSchema>`,
33
33
  /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */
34
- v01x00x01AddPropC2: `<?xml version="1.0" encoding="UTF-8"?>
35
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
36
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
37
- <ECEntityClass typeName="A">
38
- <BaseClass>bis:GraphicalElement2d</BaseClass>
39
- <ECProperty propertyName="PropA" typeName="string"/>
40
- </ECEntityClass>
41
- <ECEntityClass typeName="C">
42
- <BaseClass>A</BaseClass>
43
- <ECProperty propertyName="PropC" typeName="string"/>
44
- <ECProperty propertyName="PropC2" typeName="string"/>
45
- </ECEntityClass>
46
- <ECEntityClass typeName="D">
47
- <BaseClass>A</BaseClass>
48
- <ECProperty propertyName="PropD" typeName="string"/>
49
- </ECEntityClass>
34
+ v01x00x01AddPropC2: `<?xml version="1.0" encoding="UTF-8"?>
35
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
36
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
37
+ <ECEntityClass typeName="A">
38
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
39
+ <ECProperty propertyName="PropA" typeName="string"/>
40
+ </ECEntityClass>
41
+ <ECEntityClass typeName="C">
42
+ <BaseClass>A</BaseClass>
43
+ <ECProperty propertyName="PropC" typeName="string"/>
44
+ <ECProperty propertyName="PropC2" typeName="string"/>
45
+ </ECEntityClass>
46
+ <ECEntityClass typeName="D">
47
+ <BaseClass>A</BaseClass>
48
+ <ECProperty propertyName="PropD" typeName="string"/>
49
+ </ECEntityClass>
50
50
  </ECSchema>`,
51
51
  /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */
52
- v01x00x02AddPropD2: `<?xml version="1.0" encoding="UTF-8"?>
53
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
54
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
55
- <ECEntityClass typeName="A">
56
- <BaseClass>bis:GraphicalElement2d</BaseClass>
57
- <ECProperty propertyName="PropA" typeName="string"/>
58
- </ECEntityClass>
59
- <ECEntityClass typeName="C">
60
- <BaseClass>A</BaseClass>
61
- <ECProperty propertyName="PropC" typeName="string"/>
62
- <ECProperty propertyName="PropC2" typeName="string"/>
63
- </ECEntityClass>
64
- <ECEntityClass typeName="D">
65
- <BaseClass>A</BaseClass>
66
- <ECProperty propertyName="PropD" typeName="string"/>
67
- <ECProperty propertyName="PropD2" typeName="string"/>
68
- </ECEntityClass>
52
+ v01x00x02AddPropD2: `<?xml version="1.0" encoding="UTF-8"?>
53
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
54
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
55
+ <ECEntityClass typeName="A">
56
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
57
+ <ECProperty propertyName="PropA" typeName="string"/>
58
+ </ECEntityClass>
59
+ <ECEntityClass typeName="C">
60
+ <BaseClass>A</BaseClass>
61
+ <ECProperty propertyName="PropC" typeName="string"/>
62
+ <ECProperty propertyName="PropC2" typeName="string"/>
63
+ </ECEntityClass>
64
+ <ECEntityClass typeName="D">
65
+ <BaseClass>A</BaseClass>
66
+ <ECProperty propertyName="PropD" typeName="string"/>
67
+ <ECProperty propertyName="PropD2" typeName="string"/>
68
+ </ECEntityClass>
69
69
  </ECSchema>`,
70
70
  /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */
71
- v01x00x02MovePropCToA: `<?xml version="1.0" encoding="UTF-8"?>
72
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
73
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
74
- <ECEntityClass typeName="A">
75
- <BaseClass>bis:GraphicalElement2d</BaseClass>
76
- <ECProperty propertyName="PropA" typeName="string"/>
77
- <ECProperty propertyName="PropC" typeName="string"/>
78
- </ECEntityClass>
79
- <ECEntityClass typeName="C">
80
- <BaseClass>A</BaseClass>
81
- <ECProperty propertyName="PropC2" typeName="string"/>
82
- </ECEntityClass>
83
- <ECEntityClass typeName="D">
84
- <BaseClass>A</BaseClass>
85
- <ECProperty propertyName="PropD" typeName="string"/>
86
- </ECEntityClass>
71
+ v01x00x02MovePropCToA: `<?xml version="1.0" encoding="UTF-8"?>
72
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
73
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
74
+ <ECEntityClass typeName="A">
75
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
76
+ <ECProperty propertyName="PropA" typeName="string"/>
77
+ <ECProperty propertyName="PropC" typeName="string"/>
78
+ </ECEntityClass>
79
+ <ECEntityClass typeName="C">
80
+ <BaseClass>A</BaseClass>
81
+ <ECProperty propertyName="PropC2" typeName="string"/>
82
+ </ECEntityClass>
83
+ <ECEntityClass typeName="D">
84
+ <BaseClass>A</BaseClass>
85
+ <ECProperty propertyName="PropD" typeName="string"/>
86
+ </ECEntityClass>
87
87
  </ECSchema>`,
88
88
  /** 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 */
89
- v01x00x03MovePropCAndD: `<?xml version="1.0" encoding="UTF-8"?>
90
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.03" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
91
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
92
- <ECEntityClass typeName="A">
93
- <BaseClass>bis:GraphicalElement2d</BaseClass>
94
- <ECProperty propertyName="PropA" typeName="string"/>
95
- <ECProperty propertyName="PropC" typeName="string"/>
96
- <ECProperty propertyName="PropD" typeName="string"/>
97
- </ECEntityClass>
98
- <ECEntityClass typeName="C">
99
- <BaseClass>A</BaseClass>
100
- <ECProperty propertyName="PropC2" typeName="string"/>
101
- </ECEntityClass>
102
- <ECEntityClass typeName="D">
103
- <BaseClass>A</BaseClass>
104
- <ECProperty propertyName="PropD2" typeName="string"/>
105
- </ECEntityClass>
89
+ v01x00x03MovePropCAndD: `<?xml version="1.0" encoding="UTF-8"?>
90
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.03" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
91
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
92
+ <ECEntityClass typeName="A">
93
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
94
+ <ECProperty propertyName="PropA" typeName="string"/>
95
+ <ECProperty propertyName="PropC" typeName="string"/>
96
+ <ECProperty propertyName="PropD" typeName="string"/>
97
+ </ECEntityClass>
98
+ <ECEntityClass typeName="C">
99
+ <BaseClass>A</BaseClass>
100
+ <ECProperty propertyName="PropC2" typeName="string"/>
101
+ </ECEntityClass>
102
+ <ECEntityClass typeName="D">
103
+ <BaseClass>A</BaseClass>
104
+ <ECProperty propertyName="PropD2" typeName="string"/>
105
+ </ECEntityClass>
106
106
  </ECSchema>`,
107
107
  /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */
108
- v01x00x01AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
109
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
110
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
111
- <ECEntityClass typeName="A">
112
- <BaseClass>bis:GraphicalElement2d</BaseClass>
113
- <ECProperty propertyName="PropA" typeName="string"/>
114
- </ECEntityClass>
115
- <ECEntityClass typeName="C">
116
- <BaseClass>A</BaseClass>
117
- <ECProperty propertyName="PropC" typeName="string"/>
118
- <ECProperty propertyName="PropC3" typeName="string"/>
119
- </ECEntityClass>
120
- <ECEntityClass typeName="D">
121
- <BaseClass>A</BaseClass>
122
- <ECProperty propertyName="PropD" typeName="string"/>
123
- </ECEntityClass>
108
+ v01x00x01AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
109
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
110
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
111
+ <ECEntityClass typeName="A">
112
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
113
+ <ECProperty propertyName="PropA" typeName="string"/>
114
+ </ECEntityClass>
115
+ <ECEntityClass typeName="C">
116
+ <BaseClass>A</BaseClass>
117
+ <ECProperty propertyName="PropC" typeName="string"/>
118
+ <ECProperty propertyName="PropC3" typeName="string"/>
119
+ </ECEntityClass>
120
+ <ECEntityClass typeName="D">
121
+ <BaseClass>A</BaseClass>
122
+ <ECProperty propertyName="PropD" typeName="string"/>
123
+ </ECEntityClass>
124
124
  </ECSchema>`,
125
125
  /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */
126
- v01x00x02AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
127
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
128
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
129
- <ECEntityClass typeName="A">
130
- <BaseClass>bis:GraphicalElement2d</BaseClass>
131
- <ECProperty propertyName="PropA" typeName="string"/>
132
- </ECEntityClass>
133
- <ECEntityClass typeName="C">
134
- <BaseClass>A</BaseClass>
135
- <ECProperty propertyName="PropC" typeName="string"/>
136
- <ECProperty propertyName="PropC3" typeName="string"/>
137
- </ECEntityClass>
138
- <ECEntityClass typeName="D">
139
- <BaseClass>A</BaseClass>
140
- <ECProperty propertyName="PropD" typeName="string"/>
141
- </ECEntityClass>
126
+ v01x00x02AddPropC3Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
127
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
128
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
129
+ <ECEntityClass typeName="A">
130
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
131
+ <ECProperty propertyName="PropA" typeName="string"/>
132
+ </ECEntityClass>
133
+ <ECEntityClass typeName="C">
134
+ <BaseClass>A</BaseClass>
135
+ <ECProperty propertyName="PropC" typeName="string"/>
136
+ <ECProperty propertyName="PropC3" typeName="string"/>
137
+ </ECEntityClass>
138
+ <ECEntityClass typeName="D">
139
+ <BaseClass>A</BaseClass>
140
+ <ECProperty propertyName="PropD" typeName="string"/>
141
+ </ECEntityClass>
142
142
  </ECSchema>`,
143
143
  /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */
144
- v01x00x02AddPropC2Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
145
- <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
146
- <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
147
- <ECEntityClass typeName="A">
148
- <BaseClass>bis:GraphicalElement2d</BaseClass>
149
- <ECProperty propertyName="PropA" typeName="string"/>
150
- </ECEntityClass>
151
- <ECEntityClass typeName="C">
152
- <BaseClass>A</BaseClass>
153
- <ECProperty propertyName="PropC" typeName="string"/>
154
- <ECProperty propertyName="PropC2" typeName="int"/>
155
- </ECEntityClass>
156
- <ECEntityClass typeName="D">
157
- <BaseClass>A</BaseClass>
158
- <ECProperty propertyName="PropD" typeName="string"/>
159
- </ECEntityClass>
144
+ v01x00x02AddPropC2Incompatible: `<?xml version="1.0" encoding="UTF-8"?>
145
+ <ECSchema schemaName="TestDomain" alias="td" version="01.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
146
+ <ECSchemaReference name="BisCore" version="01.00.23" alias="bis"/>
147
+ <ECEntityClass typeName="A">
148
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
149
+ <ECProperty propertyName="PropA" typeName="string"/>
150
+ </ECEntityClass>
151
+ <ECEntityClass typeName="C">
152
+ <BaseClass>A</BaseClass>
153
+ <ECProperty propertyName="PropC" typeName="string"/>
154
+ <ECProperty propertyName="PropC2" typeName="int"/>
155
+ </ECEntityClass>
156
+ <ECEntityClass typeName="D">
157
+ <BaseClass>A</BaseClass>
158
+ <ECProperty propertyName="PropD" typeName="string"/>
159
+ </ECEntityClass>
160
160
  </ECSchema>`,
161
161
  };
162
162
  describe("SquashSchemaAndDataChanges", () => {
@@ -1 +1 @@
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\";\nimport { EditTxn, withEditTxn } from \"../EditTxn\";\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 return withEditTxn(db, (txn) => {\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, modelCode);\n const newDrawingCategoryId = DrawingCategory.insert(\n txn,\n IModel.dictionaryId,\n \"DrawingCategory\",\n new SubCategoryAppearance()\n );\n return [newDrawingModelId, newDrawingCategoryId] as const;\n });\n };\n\n const insertElement = (\n txn: EditTxn,\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 = txn.iModel.elements.createElement(elementProps);\n return txn.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 [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 allow schema import while an EditTxn is active\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n const txn = new EditTxn(imodel, \"schema and data changes unsaved state\");\n txn.start();\n try {\n txn.saveChanges(\"prepare for schema import\");\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]);\n chai.assert(imodel.containsClass(\"TestDomain:C\"));\n } finally {\n if (txn.isActive)\n txn.end(\"abandon\");\n }\n });\n\n it(\"should squash schema and data changes if useSemanticRebase flag is on\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n const txn = new EditTxn(imodel, \"squash schema and data changes\");\n txn.start();\n insertElement(txn, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n txn.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 if (txn.isActive)\n txn.end(\"abandon\");\n });\n});\n"]}
1
+ {"version":3,"file":"SquashSchemaAndDataChanges.test.js","sourceRoot":"","sources":["../../../src/test/SquashSchemaAndDataChanges.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { 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\nimport { EditTxn, withEditTxn } from \"../EditTxn\";\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 return withEditTxn(db, (txn) => {\r\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, modelCode);\r\n const newDrawingCategoryId = DrawingCategory.insert(\r\n txn,\r\n IModel.dictionaryId,\r\n \"DrawingCategory\",\r\n new SubCategoryAppearance()\r\n );\r\n return [newDrawingModelId, newDrawingCategoryId] as const;\r\n });\r\n };\r\n\r\n const insertElement = (\r\n txn: EditTxn,\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 = txn.iModel.elements.createElement(elementProps);\r\n return txn.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 [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 allow schema import while an EditTxn is active\", async () => {\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n const txn = new EditTxn(imodel, \"schema and data changes unsaved state\");\r\n txn.start();\r\n try {\r\n txn.saveChanges(\"prepare for schema import\");\r\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]);\r\n chai.assert(imodel.containsClass(\"TestDomain:C\"));\r\n } finally {\r\n if (txn.isActive)\r\n txn.end(\"abandon\");\r\n }\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 const txn = new EditTxn(imodel, \"squash schema and data changes\");\r\n txn.start();\r\n insertElement(txn, \"TestDomain:C\", {\r\n propA: \"local_value_a\",\r\n propC: \"local_value_c\",\r\n });\r\n txn.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 if (txn.isActive)\r\n txn.end(\"abandon\");\r\n });\r\n});\r\n"]}