@itwin/core-backend 5.10.0-dev.9 → 5.11.0-dev.2

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 (580) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.d.ts +8 -1
  7. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CatalogDb.js.map +1 -1
  10. package/lib/cjs/Category.d.ts +4 -4
  11. package/lib/cjs/Category.js.map +1 -1
  12. package/lib/cjs/ChangeSummaryManager.js +2 -2
  13. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  14. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.d.ts +6 -6
  16. package/lib/cjs/ChangesetECAdaptor.js +252 -252
  17. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  18. package/lib/cjs/ChangesetReader.d.ts +84 -1
  19. package/lib/cjs/ChangesetReader.d.ts.map +1 -1
  20. package/lib/cjs/ChangesetReader.js +108 -12
  21. package/lib/cjs/ChangesetReader.js.map +1 -1
  22. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  23. package/lib/cjs/ChannelControl.js.map +1 -1
  24. package/lib/cjs/CheckpointManager.js.map +1 -1
  25. package/lib/cjs/ClassRegistry.d.ts +3 -3
  26. package/lib/cjs/ClassRegistry.js +8 -8
  27. package/lib/cjs/ClassRegistry.js.map +1 -1
  28. package/lib/cjs/CloudSqlite.js.map +1 -1
  29. package/lib/cjs/CodeService.js.map +1 -1
  30. package/lib/cjs/CodeSpecs.d.ts +3 -3
  31. package/lib/cjs/CodeSpecs.js.map +1 -1
  32. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  33. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  34. package/lib/cjs/DevTools.js.map +1 -1
  35. package/lib/cjs/DisplayStyle.d.ts +2 -2
  36. package/lib/cjs/DisplayStyle.js.map +1 -1
  37. package/lib/cjs/ECDb.js.map +1 -1
  38. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  39. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  40. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  41. package/lib/cjs/ECSqlStatement.js +4 -0
  42. package/lib/cjs/ECSqlStatement.js.map +1 -1
  43. package/lib/cjs/ECSqlSyncReader.d.ts.map +1 -1
  44. package/lib/cjs/ECSqlSyncReader.js +1 -0
  45. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  46. package/lib/cjs/EditTxn.js.map +1 -1
  47. package/lib/cjs/Element.d.ts +16 -13
  48. package/lib/cjs/Element.d.ts.map +1 -1
  49. package/lib/cjs/Element.js +8 -5
  50. package/lib/cjs/Element.js.map +1 -1
  51. package/lib/cjs/ElementAspect.d.ts +1 -1
  52. package/lib/cjs/ElementAspect.js.map +1 -1
  53. package/lib/cjs/ElementGraphics.js.map +1 -1
  54. package/lib/cjs/ElementTreeWalker.d.ts +5 -5
  55. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  56. package/lib/cjs/Entity.d.ts +13 -5
  57. package/lib/cjs/Entity.d.ts.map +1 -1
  58. package/lib/cjs/Entity.js +13 -5
  59. package/lib/cjs/Entity.js.map +1 -1
  60. package/lib/cjs/EntityReferences.js.map +1 -1
  61. package/lib/cjs/ExportGraphics.js.map +1 -1
  62. package/lib/cjs/ExternalSource.d.ts +2 -2
  63. package/lib/cjs/ExternalSource.js.map +1 -1
  64. package/lib/cjs/FontFile.js.map +1 -1
  65. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  66. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  67. package/lib/cjs/GeometrySummary.js +47 -47
  68. package/lib/cjs/GeometrySummary.js.map +1 -1
  69. package/lib/cjs/IModelDb.d.ts +112 -40
  70. package/lib/cjs/IModelDb.d.ts.map +1 -1
  71. package/lib/cjs/IModelDb.js +223 -50
  72. package/lib/cjs/IModelDb.js.map +1 -1
  73. package/lib/cjs/IModelDbFonts.js.map +1 -1
  74. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  75. package/lib/cjs/IModelHost.js.map +1 -1
  76. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  77. package/lib/cjs/IModelJsFs.js.map +1 -1
  78. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  79. package/lib/cjs/IpcHost.js.map +1 -1
  80. package/lib/cjs/LineStyle.d.ts +6 -6
  81. package/lib/cjs/LineStyle.js.map +1 -1
  82. package/lib/cjs/LocalHub.d.ts +6 -0
  83. package/lib/cjs/LocalHub.d.ts.map +1 -1
  84. package/lib/cjs/LocalHub.js +24 -1
  85. package/lib/cjs/LocalHub.js.map +1 -1
  86. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  87. package/lib/cjs/LockControl.js.map +1 -1
  88. package/lib/cjs/Material.d.ts +1 -1
  89. package/lib/cjs/Material.js.map +1 -1
  90. package/lib/cjs/Model.d.ts +6 -6
  91. package/lib/cjs/Model.js.map +1 -1
  92. package/lib/cjs/NativeAppStorage.js.map +1 -1
  93. package/lib/cjs/NativeHost.js.map +1 -1
  94. package/lib/cjs/NavigationRelationship.js.map +1 -1
  95. package/lib/cjs/PartialChangeUnifier.js +7 -7
  96. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  97. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  98. package/lib/cjs/PropertyStore.js.map +1 -1
  99. package/lib/cjs/Relationship.d.ts +13 -11
  100. package/lib/cjs/Relationship.d.ts.map +1 -1
  101. package/lib/cjs/Relationship.js +9 -7
  102. package/lib/cjs/Relationship.js.map +1 -1
  103. package/lib/cjs/RpcBackend.js.map +1 -1
  104. package/lib/cjs/SQLiteDb.js.map +1 -1
  105. package/lib/cjs/Schema.js.map +1 -1
  106. package/lib/cjs/SchemaSync.js.map +1 -1
  107. package/lib/cjs/SchemaUtils.js.map +1 -1
  108. package/lib/cjs/SheetIndex.d.ts +4 -4
  109. package/lib/cjs/SheetIndex.js.map +1 -1
  110. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  111. package/lib/cjs/SqliteStatement.js.map +1 -1
  112. package/lib/cjs/StashManager.js.map +1 -1
  113. package/lib/cjs/Texture.d.ts +1 -1
  114. package/lib/cjs/Texture.js.map +1 -1
  115. package/lib/cjs/TileStorage.js.map +1 -1
  116. package/lib/cjs/TxnManager.d.ts.map +1 -1
  117. package/lib/cjs/TxnManager.js +7 -0
  118. package/lib/cjs/TxnManager.js.map +1 -1
  119. package/lib/cjs/ViewDefinition.d.ts +6 -6
  120. package/lib/cjs/ViewDefinition.js.map +1 -1
  121. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  122. package/lib/cjs/ViewStore.js.map +1 -1
  123. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  124. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  125. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -1
  126. package/lib/cjs/annotations/FrameGeometry.js +2 -3
  127. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  128. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  129. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  130. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  131. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  132. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  133. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  134. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -32
  135. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -27
  136. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  137. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  138. package/lib/cjs/core-backend.js.map +1 -1
  139. package/lib/cjs/domains/FunctionalElements.d.ts +1 -1
  140. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  141. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  142. package/lib/cjs/domains/GenericElements.d.ts +2 -2
  143. package/lib/cjs/domains/GenericElements.js.map +1 -1
  144. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  145. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  146. package/lib/cjs/internal/ChannelAdmin.d.ts +2 -2
  147. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  148. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -1
  149. package/lib/cjs/internal/ElementLRUCache.js +23 -4
  150. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  151. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  152. package/lib/cjs/internal/HubMock.d.ts +24 -1
  153. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  154. package/lib/cjs/internal/HubMock.js +60 -39
  155. package/lib/cjs/internal/HubMock.js.map +1 -1
  156. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  157. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  158. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  159. package/lib/cjs/internal/NoLocks.js.map +1 -1
  160. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  161. package/lib/cjs/internal/ServerBasedLocks.d.ts +19 -1
  162. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  163. package/lib/cjs/internal/ServerBasedLocks.js +88 -34
  164. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  165. package/lib/cjs/internal/Symbols.js.map +1 -1
  166. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  167. package/lib/cjs/internal/cross-package.d.ts +1 -1
  168. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  169. package/lib/cjs/internal/cross-package.js +1 -2
  170. package/lib/cjs/internal/cross-package.js.map +1 -1
  171. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  172. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  173. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  174. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +55 -9
  175. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  176. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  177. package/lib/cjs/internal/workspace/WorkspaceImpl.js +7 -11
  178. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  179. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  180. package/lib/cjs/rpc/multipart.js.map +1 -1
  181. package/lib/cjs/rpc/tracing.js.map +1 -1
  182. package/lib/cjs/rpc/web/logging.js.map +1 -1
  183. package/lib/cjs/rpc/web/request.js.map +1 -1
  184. package/lib/cjs/rpc/web/response.js.map +1 -1
  185. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  186. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  187. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  188. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  189. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  190. package/lib/cjs/workspace/Settings.js.map +1 -1
  191. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  192. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  193. package/lib/cjs/workspace/SettingsSchemas.d.ts +20 -3
  194. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  195. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  196. package/lib/cjs/workspace/Workspace.d.ts +13 -1
  197. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  198. package/lib/cjs/workspace/Workspace.js.map +1 -1
  199. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  200. package/lib/esm/BackendHubAccess.js.map +1 -1
  201. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  202. package/lib/esm/BisCoreSchema.js.map +1 -1
  203. package/lib/esm/BlobContainerService.js.map +1 -1
  204. package/lib/esm/BriefcaseManager.d.ts +8 -1
  205. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  206. package/lib/esm/BriefcaseManager.js.map +1 -1
  207. package/lib/esm/CatalogDb.js.map +1 -1
  208. package/lib/esm/Category.d.ts +4 -4
  209. package/lib/esm/Category.js.map +1 -1
  210. package/lib/esm/ChangeSummaryManager.js +2 -2
  211. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  212. package/lib/esm/ChangedElementsDb.js.map +1 -1
  213. package/lib/esm/ChangesetECAdaptor.d.ts +6 -6
  214. package/lib/esm/ChangesetECAdaptor.js +252 -252
  215. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  216. package/lib/esm/ChangesetReader.d.ts +84 -1
  217. package/lib/esm/ChangesetReader.d.ts.map +1 -1
  218. package/lib/esm/ChangesetReader.js +108 -12
  219. package/lib/esm/ChangesetReader.js.map +1 -1
  220. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  221. package/lib/esm/ChannelControl.js.map +1 -1
  222. package/lib/esm/CheckpointManager.js.map +1 -1
  223. package/lib/esm/ClassRegistry.d.ts +3 -3
  224. package/lib/esm/ClassRegistry.js +8 -8
  225. package/lib/esm/ClassRegistry.js.map +1 -1
  226. package/lib/esm/CloudSqlite.js.map +1 -1
  227. package/lib/esm/CodeService.js.map +1 -1
  228. package/lib/esm/CodeSpecs.d.ts +3 -3
  229. package/lib/esm/CodeSpecs.js.map +1 -1
  230. package/lib/esm/ConcurrentQuery.js.map +1 -1
  231. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  232. package/lib/esm/DevTools.js.map +1 -1
  233. package/lib/esm/DisplayStyle.d.ts +2 -2
  234. package/lib/esm/DisplayStyle.js.map +1 -1
  235. package/lib/esm/ECDb.js.map +1 -1
  236. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  237. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  238. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  239. package/lib/esm/ECSqlStatement.js +4 -0
  240. package/lib/esm/ECSqlStatement.js.map +1 -1
  241. package/lib/esm/ECSqlSyncReader.d.ts.map +1 -1
  242. package/lib/esm/ECSqlSyncReader.js +1 -0
  243. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  244. package/lib/esm/EditTxn.js.map +1 -1
  245. package/lib/esm/Element.d.ts +16 -13
  246. package/lib/esm/Element.d.ts.map +1 -1
  247. package/lib/esm/Element.js +8 -5
  248. package/lib/esm/Element.js.map +1 -1
  249. package/lib/esm/ElementAspect.d.ts +1 -1
  250. package/lib/esm/ElementAspect.js.map +1 -1
  251. package/lib/esm/ElementGraphics.js.map +1 -1
  252. package/lib/esm/ElementTreeWalker.d.ts +5 -5
  253. package/lib/esm/ElementTreeWalker.js.map +1 -1
  254. package/lib/esm/Entity.d.ts +13 -5
  255. package/lib/esm/Entity.d.ts.map +1 -1
  256. package/lib/esm/Entity.js +13 -5
  257. package/lib/esm/Entity.js.map +1 -1
  258. package/lib/esm/EntityReferences.js.map +1 -1
  259. package/lib/esm/ExportGraphics.js.map +1 -1
  260. package/lib/esm/ExternalSource.d.ts +2 -2
  261. package/lib/esm/ExternalSource.js.map +1 -1
  262. package/lib/esm/FontFile.js.map +1 -1
  263. package/lib/esm/GeoCoordConfig.js.map +1 -1
  264. package/lib/esm/GeographicCRSServices.js.map +1 -1
  265. package/lib/esm/GeometrySummary.js +47 -47
  266. package/lib/esm/GeometrySummary.js.map +1 -1
  267. package/lib/esm/IModelDb.d.ts +112 -40
  268. package/lib/esm/IModelDb.d.ts.map +1 -1
  269. package/lib/esm/IModelDb.js +224 -51
  270. package/lib/esm/IModelDb.js.map +1 -1
  271. package/lib/esm/IModelDbFonts.js.map +1 -1
  272. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  273. package/lib/esm/IModelHost.js.map +1 -1
  274. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  275. package/lib/esm/IModelJsFs.js.map +1 -1
  276. package/lib/esm/ImageSourceConversion.js.map +1 -1
  277. package/lib/esm/IpcHost.js.map +1 -1
  278. package/lib/esm/LineStyle.d.ts +6 -6
  279. package/lib/esm/LineStyle.js.map +1 -1
  280. package/lib/esm/LocalHub.d.ts +6 -0
  281. package/lib/esm/LocalHub.d.ts.map +1 -1
  282. package/lib/esm/LocalHub.js +24 -1
  283. package/lib/esm/LocalHub.js.map +1 -1
  284. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  285. package/lib/esm/LockControl.js.map +1 -1
  286. package/lib/esm/Material.d.ts +1 -1
  287. package/lib/esm/Material.js.map +1 -1
  288. package/lib/esm/Model.d.ts +6 -6
  289. package/lib/esm/Model.js.map +1 -1
  290. package/lib/esm/NativeAppStorage.js.map +1 -1
  291. package/lib/esm/NativeHost.js.map +1 -1
  292. package/lib/esm/NavigationRelationship.js.map +1 -1
  293. package/lib/esm/PartialChangeUnifier.js +7 -7
  294. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  295. package/lib/esm/PromiseMemoizer.js.map +1 -1
  296. package/lib/esm/PropertyStore.js.map +1 -1
  297. package/lib/esm/Relationship.d.ts +13 -11
  298. package/lib/esm/Relationship.d.ts.map +1 -1
  299. package/lib/esm/Relationship.js +9 -7
  300. package/lib/esm/Relationship.js.map +1 -1
  301. package/lib/esm/RpcBackend.js.map +1 -1
  302. package/lib/esm/SQLiteDb.js.map +1 -1
  303. package/lib/esm/Schema.js.map +1 -1
  304. package/lib/esm/SchemaSync.js.map +1 -1
  305. package/lib/esm/SchemaUtils.js.map +1 -1
  306. package/lib/esm/SheetIndex.d.ts +4 -4
  307. package/lib/esm/SheetIndex.js.map +1 -1
  308. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  309. package/lib/esm/SqliteStatement.js.map +1 -1
  310. package/lib/esm/StashManager.js.map +1 -1
  311. package/lib/esm/Texture.d.ts +1 -1
  312. package/lib/esm/Texture.js.map +1 -1
  313. package/lib/esm/TileStorage.js.map +1 -1
  314. package/lib/esm/TxnManager.d.ts.map +1 -1
  315. package/lib/esm/TxnManager.js +7 -0
  316. package/lib/esm/TxnManager.js.map +1 -1
  317. package/lib/esm/ViewDefinition.d.ts +6 -6
  318. package/lib/esm/ViewDefinition.js.map +1 -1
  319. package/lib/esm/ViewStateHydrator.js.map +1 -1
  320. package/lib/esm/ViewStore.js.map +1 -1
  321. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  322. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  323. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -1
  324. package/lib/esm/annotations/FrameGeometry.js +2 -3
  325. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  326. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  327. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  328. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  329. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  330. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  331. package/lib/esm/core-backend.js.map +1 -1
  332. package/lib/esm/domains/FunctionalElements.d.ts +1 -1
  333. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  334. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  335. package/lib/esm/domains/GenericElements.d.ts +2 -2
  336. package/lib/esm/domains/GenericElements.js.map +1 -1
  337. package/lib/esm/domains/GenericSchema.js.map +1 -1
  338. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  339. package/lib/esm/internal/ChannelAdmin.d.ts +2 -2
  340. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  341. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -1
  342. package/lib/esm/internal/ElementLRUCache.js +23 -4
  343. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  344. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  345. package/lib/esm/internal/HubMock.d.ts +24 -1
  346. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  347. package/lib/esm/internal/HubMock.js +61 -40
  348. package/lib/esm/internal/HubMock.js.map +1 -1
  349. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  350. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  351. package/lib/esm/internal/NativePlatform.js.map +1 -1
  352. package/lib/esm/internal/NoLocks.js.map +1 -1
  353. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  354. package/lib/esm/internal/ServerBasedLocks.d.ts +19 -1
  355. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  356. package/lib/esm/internal/ServerBasedLocks.js +88 -34
  357. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  358. package/lib/esm/internal/Symbols.js.map +1 -1
  359. package/lib/esm/internal/annotations/fields.js.map +1 -1
  360. package/lib/esm/internal/cross-package.d.ts +1 -1
  361. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  362. package/lib/esm/internal/cross-package.js +1 -1
  363. package/lib/esm/internal/cross-package.js.map +1 -1
  364. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  365. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  366. package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  367. package/lib/esm/internal/workspace/SettingsSchemasImpl.js +55 -9
  368. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  369. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  370. package/lib/esm/internal/workspace/WorkspaceImpl.js +7 -11
  371. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  372. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  373. package/lib/esm/rpc/multipart.js.map +1 -1
  374. package/lib/esm/rpc/tracing.js.map +1 -1
  375. package/lib/esm/rpc/web/logging.js.map +1 -1
  376. package/lib/esm/rpc/web/request.js.map +1 -1
  377. package/lib/esm/rpc/web/response.js.map +1 -1
  378. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  379. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  380. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  381. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  382. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  383. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  384. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  385. package/lib/esm/test/AttachDb.test.js +11 -11
  386. package/lib/esm/test/AttachDb.test.js.map +1 -1
  387. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  388. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  389. package/lib/esm/test/ElementLRUCache.test.js +60 -0
  390. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  391. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  392. package/lib/esm/test/IModelHost.test.js.map +1 -1
  393. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  394. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  395. package/lib/esm/test/IpcHost.test.js.map +1 -1
  396. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  397. package/lib/esm/test/PrintElementTree.js.map +1 -1
  398. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  399. package/lib/esm/test/RevisionUtility.js.map +1 -1
  400. package/lib/esm/test/SchemaChangesetCanBeReversed.test.d.ts +2 -0
  401. package/lib/esm/test/SchemaChangesetCanBeReversed.test.d.ts.map +1 -0
  402. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +239 -0
  403. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -0
  404. package/lib/esm/test/SchemaUtils.test.js +25 -25
  405. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  406. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  407. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  408. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  409. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  410. package/lib/esm/test/TestEditTxn.js.map +1 -1
  411. package/lib/esm/test/TestUtils.js.map +1 -1
  412. package/lib/esm/test/annotations/Fields.test.js +53 -53
  413. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  414. package/lib/esm/test/annotations/FrameGeometry.test.js +2 -1
  415. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  416. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  417. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  418. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  419. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  420. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  421. package/lib/esm/test/categories/Category.test.js.map +1 -1
  422. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  423. package/lib/esm/test/ecdb/CTE.test.js +89 -88
  424. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  425. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  426. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  427. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  428. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  429. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  430. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  431. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  432. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  433. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  434. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  435. package/lib/esm/test/ecdb/ECSqlQuery.test.js +14 -6
  436. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  437. package/lib/esm/test/ecdb/ECSqlStatement.test.js +342 -332
  438. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  439. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +1 -0
  440. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  441. package/lib/esm/test/ecdb/QueryReaders.test.js +44 -31
  442. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  443. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  444. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  445. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  446. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  447. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  448. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +1 -0
  449. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  450. package/lib/esm/test/element/DeleteDefinitionElements.test.js +6 -2
  451. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  452. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  453. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  454. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  455. package/lib/esm/test/element/ElementRoundTrip.test.js +144 -139
  456. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  457. package/lib/esm/test/element/ExcludedElements.test.js +1 -0
  458. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  459. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  460. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  461. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  462. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  463. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  464. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  465. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  466. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  467. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +42 -32
  468. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  469. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  470. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  471. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  472. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  473. package/lib/esm/test/hubaccess/SemanticRebase.test.js +346 -345
  474. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  475. package/lib/esm/test/imageData.js.map +1 -1
  476. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  477. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  478. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  479. package/lib/esm/test/imodel/IModel.test.js +75 -44
  480. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  481. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  482. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  483. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  484. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  485. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  486. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  487. package/lib/esm/test/index.js.map +1 -1
  488. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  489. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  490. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  491. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  492. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  493. package/lib/esm/test/rpc/response.test.js.map +1 -1
  494. package/lib/esm/test/schema/ClassRegistry.test.js +102 -99
  495. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  496. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  497. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  498. package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -9
  499. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  500. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  501. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  502. package/lib/esm/test/schema/SchemaViewHidden.test.d.ts +2 -0
  503. package/lib/esm/test/schema/SchemaViewHidden.test.d.ts.map +1 -0
  504. package/lib/esm/test/schema/SchemaViewHidden.test.js +275 -0
  505. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -0
  506. package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts +2 -0
  507. package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts.map +1 -0
  508. package/lib/esm/test/schema/SchemaViewKoQ.test.js +184 -0
  509. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -0
  510. package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts +2 -0
  511. package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts.map +1 -0
  512. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +141 -0
  513. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -0
  514. package/lib/esm/test/schema/SchemaViewValidation.test.d.ts +2 -0
  515. package/lib/esm/test/schema/SchemaViewValidation.test.d.ts.map +1 -0
  516. package/lib/esm/test/schema/SchemaViewValidation.test.js +475 -0
  517. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -0
  518. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  519. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  520. package/lib/esm/test/standalone/ChangesetReader.test.js +1191 -583
  521. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  522. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  523. package/lib/esm/test/standalone/DeleteElements.test.js +45 -0
  524. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  525. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  526. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  527. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  528. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  529. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  530. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  531. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  532. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  533. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  534. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  535. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  536. package/lib/esm/test/standalone/IModelWrite.test.js +33 -27
  537. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  538. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  539. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  540. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  541. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  542. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  543. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  544. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  545. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  546. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  547. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  548. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  549. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  550. package/lib/esm/test/standalone/ServerBasedLocks.test.js +62 -0
  551. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  552. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  553. package/lib/esm/test/standalone/Settings.test.js +2 -0
  554. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  555. package/lib/esm/test/standalone/SettingsSchemas.test.js +397 -0
  556. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  557. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  558. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  559. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  560. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  561. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  562. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  563. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  564. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  565. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  566. package/lib/esm/test/standalone/Workspace.test.js +23 -0
  567. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  568. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  569. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  570. package/lib/esm/workspace/Settings.js.map +1 -1
  571. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  572. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  573. package/lib/esm/workspace/SettingsSchemas.d.ts +20 -3
  574. package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -1
  575. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  576. package/lib/esm/workspace/Workspace.d.ts +13 -1
  577. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  578. package/lib/esm/workspace/Workspace.js.map +1 -1
  579. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  580. package/package.json +14 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaChangesetCanBeReversed.test.js","sourceRoot":"","sources":["../../../src/test/SchemaChangesetCanBeReversed.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 { DbResult, Guid } from \"@itwin/core-bentley\";\r\nimport { Code, GeometricElementProps, IModel, IModelVersion, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { assert } from \"chai\";\r\nimport { DrawingCategory } from \"../Category\";\r\nimport { BriefcaseDb, IModelDb } from \"../IModelDb\";\r\nimport { HubMock } from \"../internal/HubMock\";\r\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\nimport { TestUtils } from \"./TestUtils\";\r\nimport { EditTxn, withEditTxn } from \"../EditTxn\";\r\nimport { ChannelControl } from \"../ChannelControl\";\r\n\r\n/**\r\n * Schemas used to build a timeline with interleaved schema and data changes.\r\n *\r\n * v01.00.00 – base schema: classes A (base), C (extends A), D (extends A)\r\n * v01.00.01 – adds PropC2 to class C (additive EC schema change)\r\n * v01.00.02 – adds PropD2 to class D (additive EC schema change, on top of v01.00.01)\r\n */\r\nconst schemas = {\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 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 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\r\n/**\r\n * Query whether a property exists on the given class via EC metadata (not DDL).\r\n * Because schema-changeset reversal only rolls back EC-level mapping (not the backing SQLite columns),\r\n * this is the correct layer to verify after a reversal.\r\n */\r\nfunction hasECProperty(db: IModelDb, schemaName: string, className: string, propertyName: string): boolean {\r\n let found = false;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n db.withPreparedStatement(\r\n `SELECT p.Name FROM ECDbMeta.ECPropertyDef p\r\n JOIN ECDbMeta.ECClassDef c ON p.Class.Id = c.ECInstanceId\r\n JOIN ECDbMeta.ECSchemaDef s ON c.Schema.Id = s.ECInstanceId\r\n WHERE s.Name=:schema AND c.Name=:class AND p.Name=:prop`,\r\n (stmt) => {\r\n stmt.bindString(\"schema\", schemaName);\r\n stmt.bindString(\"class\", className);\r\n stmt.bindString(\"prop\", propertyName);\r\n found = stmt.step() === DbResult.BE_SQLITE_ROW;\r\n }\r\n );\r\n return found;\r\n}\r\n\r\ndescribe(\"SchemaChangesetCanBeReversed\", () => {\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 [, newModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, modelCode);\r\n const newCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, \"DrawingCategory\", new SubCategoryAppearance());\r\n return [newModelId, newCategoryId] as const;\r\n });\r\n };\r\n\r\n const insertElement = (txn: EditTxn, className: string, properties: Record<string, unknown>): void => {\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 txn.insertElement(element.toJSON());\r\n };\r\n\r\n before(async () => {\r\n HubMock.startup(\"SchemaChangesetCanBeReversed\", KnownTestLocations.outputDir);\r\n await TestUtils.shutdownBackend();\r\n await TestUtils.startBackend();\r\n });\r\n\r\n beforeEach(async () => {\r\n iModelId = await HubWrappers.createIModel(\"user1\", HubMock.iTwinId, `Test-${Guid.createValue()}`);\r\n imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\r\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n [drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);\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();\r\n });\r\n\r\n /**\r\n * Builds a timeline with interleaved schema and data changesets:\r\n *\r\n * CS1 – setup (model, category) + import schema v01.00.00\r\n * CS2 – insert two elements of class C (data)\r\n * CS3 – import schema v01.00.01 adding PropC2 to C (schema)\r\n * CS4 – insert two elements of class C with PropC2 (data)\r\n * CS5 – import schema v01.00.02 adding PropD2 to D (schema)\r\n * CS6 – insert two elements of class D with PropD2 (data)\r\n *\r\n * After all six changesets are pushed a single V1 checkpoint is built at the tip\r\n * (CS6) via [[HubMock.createTipCheckpoint]]. The test then calls\r\n * [[HubWrappers.downloadAndOpenCheckpoint]] at three older versions (CS5, CS3, CS1).\r\n *\r\n * For each request [[V2CheckpointManager]] (mock path) copies the tip checkpoint — the\r\n * *nearest* available checkpoint — to the local target file. [[CheckpointManager.updateToRequestedVersion]]\r\n * detects that the downloaded file is at a newer changeset than requested and calls\r\n * [[BriefcaseManager.pullAndApplyChangesets]] with `toIndex < currentIndex`, which reverses\r\n * the needed changesets in order. The opened snapshot is therefore at the exact requested\r\n * version and its EC schema metadata reflects the pre-reversal state.\r\n */\r\n it(\"should open checkpoint at older schema version by reversing from the tip checkpoint\", async () => {\r\n // ── CS1: model/category setup + base schema ──────────────────────────────\r\n await imodel.importSchemaStrings([schemas.v01x00x00]);\r\n await imodel.pushChanges({ description: \"CS1: setup and import base schema v01.00.00\" });\r\n const cs1Id = imodel.changeset.id;\r\n\r\n // ── CS2: insert C elements (data only) ───────────────────────────────────\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n withEditTxn(imodel, (txn) => {\r\n insertElement(txn, \"TestDomain:C\", { propC: \"c_val_1\" });\r\n insertElement(txn, \"TestDomain:C\", { propC: \"c_val_2\" });\r\n });\r\n await imodel.pushChanges({ description: \"CS2: insert C elements\" });\r\n\r\n // ── CS3: schema v01.00.01 – adds PropC2 to C ─────────────────────────────\r\n await imodel.importSchemaStrings([schemas.v01x00x01AddPropC2]);\r\n await imodel.pushChanges({ description: \"CS3: import schema v01.00.01 (adds PropC2)\" });\r\n const cs3Id = imodel.changeset.id;\r\n\r\n // ── CS4: insert more C elements using PropC2 (data only) ─────────────────\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n withEditTxn(imodel, (txn) => {\r\n insertElement(txn, \"TestDomain:C\", { propC: \"c_val_3\", propC2: \"c2_val_3\" });\r\n insertElement(txn, \"TestDomain:C\", { propC: \"c_val_4\", propC2: \"c2_val_4\" });\r\n });\r\n await imodel.pushChanges({ description: \"CS4: insert C elements with PropC2\" });\r\n\r\n // ── CS5: schema v01.00.02 – adds PropD2 to D ─────────────────────────────\r\n await imodel.importSchemaStrings([schemas.v01x00x02AddPropD2]);\r\n await imodel.pushChanges({ description: \"CS5: import schema v01.00.02 (adds PropD2)\" });\r\n const cs5Id = imodel.changeset.id;\r\n\r\n // ── CS6: insert D elements using PropD2 (data only) ──────────────────────\r\n await imodel.locks.acquireLocks({ shared: drawingModelId });\r\n withEditTxn(imodel, (txn) => {\r\n insertElement(txn, \"TestDomain:D\", { propD: \"d_val_5\", propD2: \"d2_val_5\" });\r\n insertElement(txn, \"TestDomain:D\", { propD: \"d_val_6\", propD2: \"d2_val_6\" });\r\n });\r\n await imodel.pushChanges({ description: \"CS6: insert D elements with PropD2\" });\r\n\r\n // ── Build a single V1 checkpoint at the tip (CS6) ────────────────────────\r\n // All three verify steps below will download this tip checkpoint and reverse\r\n // it to the requested version via BriefcaseManager.pullAndApplyChangesets.\r\n await HubMock.createTipCheckpoint(iModelId);\r\n\r\n // ── Open at CS5 (schema v01.00.02): reverses CS6 (data) ──────────────────\r\n {\r\n const snap = await HubWrappers.downloadAndOpenCheckpoint({\r\n accessToken: \"user1\",\r\n iTwinId: HubMock.iTwinId,\r\n iModelId,\r\n asOf: IModelVersion.asOfChangeSet(cs5Id).toJSON(),\r\n });\r\n assert.equal(snap.querySchemaVersion(\"TestDomain\"), \"1.0.2\", \"schema is v01.00.02 at CS5\");\r\n assert.isTrue(hasECProperty(snap, \"TestDomain\", \"C\", \"PropC2\"), \"PropC2 present at CS5\");\r\n assert.isTrue(hasECProperty(snap, \"TestDomain\", \"D\", \"PropD2\"), \"PropD2 present at CS5\");\r\n snap.close();\r\n }\r\n\r\n // ── Open at CS3 (schema v01.00.01): reverses CS4 (data) + CS5 (schema) + CS6 (data) ──\r\n {\r\n const snap = await HubWrappers.downloadAndOpenCheckpoint({\r\n accessToken: \"user1\",\r\n iTwinId: HubMock.iTwinId,\r\n iModelId,\r\n asOf: IModelVersion.asOfChangeSet(cs3Id).toJSON(),\r\n });\r\n assert.equal(snap.querySchemaVersion(\"TestDomain\"), \"1.0.1\", \"schema is v01.00.01 at CS3\");\r\n assert.isTrue(hasECProperty(snap, \"TestDomain\", \"C\", \"PropC2\"), \"PropC2 present at CS3\");\r\n assert.isFalse(hasECProperty(snap, \"TestDomain\", \"D\", \"PropD2\"), \"PropD2 absent at CS3 (CS5 schema reverted)\");\r\n snap.close();\r\n }\r\n\r\n // ── Open at CS1 (schema v01.00.00): reverses CS2 through CS6 ─────────────\r\n {\r\n const snap = await HubWrappers.downloadAndOpenCheckpoint({\r\n accessToken: \"user1\",\r\n iTwinId: HubMock.iTwinId,\r\n iModelId,\r\n asOf: IModelVersion.asOfChangeSet(cs1Id).toJSON(),\r\n });\r\n assert.equal(snap.querySchemaVersion(\"TestDomain\"), \"1.0.0\", \"schema is v01.00.00 at CS1\");\r\n assert.isFalse(hasECProperty(snap, \"TestDomain\", \"C\", \"PropC2\"), \"PropC2 absent at CS1 (CS3 schema reverted)\");\r\n assert.isFalse(hasECProperty(snap, \"TestDomain\", \"D\", \"PropD2\"), \"PropD2 absent at CS1\");\r\n snap.close();\r\n }\r\n });\r\n});\r\n"]}
@@ -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", () => {