@itwin/core-backend 5.5.0-dev.1 → 5.5.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 (381) 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/ChannelControl.js.map +1 -1
  14. package/lib/cjs/CheckpointManager.js.map +1 -1
  15. package/lib/cjs/ClassRegistry.js +5 -5
  16. package/lib/cjs/ClassRegistry.js.map +1 -1
  17. package/lib/cjs/CloudSqlite.js.map +1 -1
  18. package/lib/cjs/CodeService.js.map +1 -1
  19. package/lib/cjs/CodeSpecs.js.map +1 -1
  20. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  21. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  22. package/lib/cjs/DevTools.js.map +1 -1
  23. package/lib/cjs/DisplayStyle.js.map +1 -1
  24. package/lib/cjs/ECDb.js.map +1 -1
  25. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  26. package/lib/cjs/ECSqlStatement.js.map +1 -1
  27. package/lib/cjs/Element.js.map +1 -1
  28. package/lib/cjs/ElementAspect.js.map +1 -1
  29. package/lib/cjs/ElementGraphics.js.map +1 -1
  30. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  31. package/lib/cjs/Entity.js.map +1 -1
  32. package/lib/cjs/EntityReferences.js.map +1 -1
  33. package/lib/cjs/ExportGraphics.js.map +1 -1
  34. package/lib/cjs/ExternalSource.js.map +1 -1
  35. package/lib/cjs/FontFile.js.map +1 -1
  36. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  37. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  38. package/lib/cjs/GeometrySummary.js +47 -47
  39. package/lib/cjs/GeometrySummary.js.map +1 -1
  40. package/lib/cjs/IModelDb.js +8 -8
  41. package/lib/cjs/IModelDb.js.map +1 -1
  42. package/lib/cjs/IModelDbFonts.js.map +1 -1
  43. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  44. package/lib/cjs/IModelHost.js.map +1 -1
  45. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  46. package/lib/cjs/IModelJsFs.js.map +1 -1
  47. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  48. package/lib/cjs/IpcHost.js.map +1 -1
  49. package/lib/cjs/LineStyle.js.map +1 -1
  50. package/lib/cjs/LocalHub.js +1 -1
  51. package/lib/cjs/LocalHub.js.map +1 -1
  52. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  53. package/lib/cjs/LockControl.js.map +1 -1
  54. package/lib/cjs/Material.js.map +1 -1
  55. package/lib/cjs/Model.js.map +1 -1
  56. package/lib/cjs/NativeAppStorage.js.map +1 -1
  57. package/lib/cjs/NativeHost.js.map +1 -1
  58. package/lib/cjs/NavigationRelationship.js.map +1 -1
  59. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  60. package/lib/cjs/PropertyStore.js.map +1 -1
  61. package/lib/cjs/Relationship.js.map +1 -1
  62. package/lib/cjs/RpcBackend.js.map +1 -1
  63. package/lib/cjs/SQLiteDb.js.map +1 -1
  64. package/lib/cjs/Schema.js.map +1 -1
  65. package/lib/cjs/SchemaSync.js.map +1 -1
  66. package/lib/cjs/SchemaUtils.js.map +1 -1
  67. package/lib/cjs/SheetIndex.js.map +1 -1
  68. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  69. package/lib/cjs/SqliteStatement.js.map +1 -1
  70. package/lib/cjs/StashManager.js.map +1 -1
  71. package/lib/cjs/Texture.js.map +1 -1
  72. package/lib/cjs/TileStorage.js.map +1 -1
  73. package/lib/cjs/TxnManager.js.map +1 -1
  74. package/lib/cjs/ViewDefinition.js.map +1 -1
  75. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  76. package/lib/cjs/ViewStore.js.map +1 -1
  77. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  78. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  79. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  80. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  81. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  82. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  83. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  84. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  85. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  86. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  87. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  88. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  89. package/lib/cjs/core-backend.js.map +1 -1
  90. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  91. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  92. package/lib/cjs/domains/GenericElements.js.map +1 -1
  93. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  94. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  95. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  96. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  97. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  98. package/lib/cjs/internal/HubMock.js.map +1 -1
  99. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  100. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  101. package/lib/cjs/internal/NoLocks.js.map +1 -1
  102. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  103. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  104. package/lib/cjs/internal/Symbols.js.map +1 -1
  105. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  106. package/lib/cjs/internal/cross-package.js.map +1 -1
  107. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  108. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  109. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  110. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  111. package/lib/cjs/rpc/multipart.js.map +1 -1
  112. package/lib/cjs/rpc/tracing.js.map +1 -1
  113. package/lib/cjs/rpc/web/logging.js.map +1 -1
  114. package/lib/cjs/rpc/web/request.js.map +1 -1
  115. package/lib/cjs/rpc/web/response.js.map +1 -1
  116. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  117. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  118. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  119. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  120. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  121. package/lib/cjs/workspace/Settings.js.map +1 -1
  122. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  123. package/lib/cjs/workspace/Workspace.js.map +1 -1
  124. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  125. package/lib/esm/BackendHubAccess.js.map +1 -1
  126. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  127. package/lib/esm/BisCoreSchema.js.map +1 -1
  128. package/lib/esm/BlobContainerService.js.map +1 -1
  129. package/lib/esm/BriefcaseManager.js.map +1 -1
  130. package/lib/esm/CatalogDb.js.map +1 -1
  131. package/lib/esm/Category.js.map +1 -1
  132. package/lib/esm/ChangeSummaryManager.js +2 -2
  133. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  134. package/lib/esm/ChangedElementsDb.js.map +1 -1
  135. package/lib/esm/ChangesetECAdaptor.js +248 -248
  136. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  137. package/lib/esm/ChannelControl.js.map +1 -1
  138. package/lib/esm/CheckpointManager.js.map +1 -1
  139. package/lib/esm/ClassRegistry.js +5 -5
  140. package/lib/esm/ClassRegistry.js.map +1 -1
  141. package/lib/esm/CloudSqlite.js.map +1 -1
  142. package/lib/esm/CodeService.js.map +1 -1
  143. package/lib/esm/CodeSpecs.js.map +1 -1
  144. package/lib/esm/ConcurrentQuery.js.map +1 -1
  145. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  146. package/lib/esm/DevTools.js.map +1 -1
  147. package/lib/esm/DisplayStyle.js.map +1 -1
  148. package/lib/esm/ECDb.js.map +1 -1
  149. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  150. package/lib/esm/ECSqlStatement.js.map +1 -1
  151. package/lib/esm/Element.js.map +1 -1
  152. package/lib/esm/ElementAspect.js.map +1 -1
  153. package/lib/esm/ElementGraphics.js.map +1 -1
  154. package/lib/esm/ElementTreeWalker.js.map +1 -1
  155. package/lib/esm/Entity.js.map +1 -1
  156. package/lib/esm/EntityReferences.js.map +1 -1
  157. package/lib/esm/ExportGraphics.js.map +1 -1
  158. package/lib/esm/ExternalSource.js.map +1 -1
  159. package/lib/esm/FontFile.js.map +1 -1
  160. package/lib/esm/GeoCoordConfig.js.map +1 -1
  161. package/lib/esm/GeographicCRSServices.js.map +1 -1
  162. package/lib/esm/GeometrySummary.js +47 -47
  163. package/lib/esm/GeometrySummary.js.map +1 -1
  164. package/lib/esm/IModelDb.js +8 -8
  165. package/lib/esm/IModelDb.js.map +1 -1
  166. package/lib/esm/IModelDbFonts.js.map +1 -1
  167. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  168. package/lib/esm/IModelHost.js.map +1 -1
  169. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  170. package/lib/esm/IModelJsFs.js.map +1 -1
  171. package/lib/esm/ImageSourceConversion.js.map +1 -1
  172. package/lib/esm/IpcHost.js.map +1 -1
  173. package/lib/esm/LineStyle.js.map +1 -1
  174. package/lib/esm/LocalHub.js +1 -1
  175. package/lib/esm/LocalHub.js.map +1 -1
  176. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  177. package/lib/esm/LockControl.js.map +1 -1
  178. package/lib/esm/Material.js.map +1 -1
  179. package/lib/esm/Model.js.map +1 -1
  180. package/lib/esm/NativeAppStorage.js.map +1 -1
  181. package/lib/esm/NativeHost.js.map +1 -1
  182. package/lib/esm/NavigationRelationship.js.map +1 -1
  183. package/lib/esm/PromiseMemoizer.js.map +1 -1
  184. package/lib/esm/PropertyStore.js.map +1 -1
  185. package/lib/esm/Relationship.js.map +1 -1
  186. package/lib/esm/RpcBackend.js.map +1 -1
  187. package/lib/esm/SQLiteDb.js.map +1 -1
  188. package/lib/esm/Schema.js.map +1 -1
  189. package/lib/esm/SchemaSync.js.map +1 -1
  190. package/lib/esm/SchemaUtils.js.map +1 -1
  191. package/lib/esm/SheetIndex.js.map +1 -1
  192. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  193. package/lib/esm/SqliteStatement.js.map +1 -1
  194. package/lib/esm/StashManager.js.map +1 -1
  195. package/lib/esm/Texture.js.map +1 -1
  196. package/lib/esm/TileStorage.js.map +1 -1
  197. package/lib/esm/TxnManager.js.map +1 -1
  198. package/lib/esm/ViewDefinition.js.map +1 -1
  199. package/lib/esm/ViewStateHydrator.js.map +1 -1
  200. package/lib/esm/ViewStore.js.map +1 -1
  201. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  202. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  203. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  204. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  205. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  206. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  207. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  208. package/lib/esm/core-backend.js.map +1 -1
  209. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  210. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  211. package/lib/esm/domains/GenericElements.js.map +1 -1
  212. package/lib/esm/domains/GenericSchema.js.map +1 -1
  213. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  214. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  215. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  216. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  217. package/lib/esm/internal/HubMock.js.map +1 -1
  218. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  219. package/lib/esm/internal/NativePlatform.js.map +1 -1
  220. package/lib/esm/internal/NoLocks.js.map +1 -1
  221. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  222. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  223. package/lib/esm/internal/Symbols.js.map +1 -1
  224. package/lib/esm/internal/annotations/fields.js.map +1 -1
  225. package/lib/esm/internal/cross-package.js.map +1 -1
  226. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  227. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  228. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  229. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  230. package/lib/esm/rpc/multipart.js.map +1 -1
  231. package/lib/esm/rpc/tracing.js.map +1 -1
  232. package/lib/esm/rpc/web/logging.js.map +1 -1
  233. package/lib/esm/rpc/web/request.js.map +1 -1
  234. package/lib/esm/rpc/web/response.js.map +1 -1
  235. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  236. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  237. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  238. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  239. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  240. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  241. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  242. package/lib/esm/test/AttachDb.test.js +11 -11
  243. package/lib/esm/test/AttachDb.test.js.map +1 -1
  244. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  245. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  246. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  247. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  248. package/lib/esm/test/IModelHost.test.js.map +1 -1
  249. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  250. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  251. package/lib/esm/test/IpcHost.test.js.map +1 -1
  252. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  253. package/lib/esm/test/PrintElementTree.js.map +1 -1
  254. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  255. package/lib/esm/test/RevisionUtility.js.map +1 -1
  256. package/lib/esm/test/SchemaUtils.test.js +25 -25
  257. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  258. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  259. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  260. package/lib/esm/test/TestUtils.js.map +1 -1
  261. package/lib/esm/test/annotations/Fields.test.js +53 -53
  262. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  263. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  264. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  265. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  266. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  267. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  268. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  269. package/lib/esm/test/categories/Category.test.js.map +1 -1
  270. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  271. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  272. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  273. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
  274. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  275. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  276. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  277. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  278. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  279. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  280. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  281. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  282. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  283. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  284. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  285. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  286. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  287. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  288. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  289. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  290. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  291. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  292. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  293. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  294. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  295. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  296. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  297. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  298. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  299. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  300. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  301. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  302. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  303. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  304. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  305. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  306. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  307. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  308. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  309. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  310. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  311. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  312. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  313. package/lib/esm/test/hubaccess/Rebase.test.js +40 -40
  314. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  315. package/lib/esm/test/imageData.js.map +1 -1
  316. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  317. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  318. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  319. package/lib/esm/test/imodel/IModel.test.js +44 -44
  320. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  321. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  322. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  323. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  324. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  325. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
  326. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
  327. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  328. package/lib/esm/test/index.js.map +1 -1
  329. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  330. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  331. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  332. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  333. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  334. package/lib/esm/test/rpc/response.test.js.map +1 -1
  335. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  336. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  337. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  338. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  339. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  340. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  341. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  342. package/lib/esm/test/standalone/ChangesetReader.test.js +124 -124
  343. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  344. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  345. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  346. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  347. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  348. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  349. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  350. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  351. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  352. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  353. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  354. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  355. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  356. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  357. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  358. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  359. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  360. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  361. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  362. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  363. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  364. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  365. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  366. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  367. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  368. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  369. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  370. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  371. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  372. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  373. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  374. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  375. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  376. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  377. package/lib/esm/workspace/Settings.js.map +1 -1
  378. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  379. package/lib/esm/workspace/Workspace.js.map +1 -1
  380. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  381. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSourceConversion.test.js","sourceRoot":"","sources":["../../../src/test/ImageSourceConversion.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 { expect } from \"chai\";\r\nimport { imageBufferFromImageSource, imageSourceFromImageBuffer } from \"../ImageSourceConversion\";\r\nimport { samplePngTexture } from \"./imageData\";\r\nimport { BinaryImageSource, ImageBuffer, ImageBufferFormat, ImageSourceFormat } from \"@itwin/core-common\";\r\n\r\n// samplePngTexture encodes this image:\r\n// White Red Red\r\n// Red Blue Red\r\n// Red Red Green\r\nconst red = 0x000000ff;\r\nconst green = 0x0000ff00;\r\nconst blue = 0x00ff0000;\r\nconst white = 0x00ffffff;\r\nconst top = [white, red, red];\r\nconst middle = [red, blue, red];\r\nconst bottom = [red, red, green];\r\n\r\nconst samplePng: BinaryImageSource = {\r\n data: new Uint8Array(samplePngTexture.data),\r\n format: ImageSourceFormat.Png,\r\n};\r\n\r\nfunction getPixel(img: ImageBuffer, x: number, y: number): number {\r\n const pixelSize = img.numBytesPerPixel;\r\n const start = y * pixelSize * img.width + x * pixelSize;\r\n let pixel = 0;\r\n for (let offset = 0; offset < pixelSize; offset++) {\r\n let val = img.data[start + offset];\r\n val = (val << (offset * 8)) >>> 0;\r\n pixel = (pixel | val) >>> 0;\r\n }\r\n\r\n return pixel;\r\n}\r\n\r\nfunction expectImagePixels(img: ImageBuffer, expected: number[]): void {\r\n expect(img.width * img.height).to.equal(expected.length);\r\n const actual = [];\r\n for (let y = 0; y < img.height; y++) {\r\n for (let x = 0; x < img.width; x++) {\r\n actual.push(getPixel(img, x, y));\r\n }\r\n }\r\n\r\n expect(actual).to.deep.equal(expected);\r\n}\r\n\r\n// Make an ImageBuffer as\r\n// White Red Red\r\n// Red Blue Red\r\n// Red Red Green\r\n// If an alpha channel is requested, alpha will be 0x7f\r\nfunction makeImage(wantAlpha: boolean): ImageBuffer {\r\n const format = wantAlpha ? ImageBufferFormat.Rgba : ImageBufferFormat.Rgb;\r\n const pixelSize = wantAlpha ? 4 : 3;\r\n const data = new Uint8Array(pixelSize * 9);\r\n const lut = [white, red, red, red, blue, red, red, red, green];\r\n for (let i = 0; i < 9; i++) {\r\n const value = lut[i];\r\n const s = i * pixelSize;\r\n data[s + 0] = value & 0xff;\r\n data[s + 1] = (value >> 8) & 0xff;\r\n data[s + 2] = (value >> 16) & 0xff;\r\n if (wantAlpha) {\r\n data[s + 3] = 0x7f;\r\n }\r\n }\r\n\r\n const img = ImageBuffer.create(data, format, 3);\r\n return img;\r\n}\r\n\r\nfunction expectEqualImageBuffers(a: ImageBuffer, b: ImageBuffer, pixelTolerance = 0): void {\r\n expect(a.format).to.equal(b.format);\r\n expect(a.width).to.equal(b.width);\r\n expect(a.height).to.equal(b.height);\r\n expect(a.data.length).to.equal(b.data.length);\r\n for (let i = 0; i < a.data.length; i++) {\r\n const x = a.data[i];\r\n const y = b.data[i];\r\n expect(Math.abs(x - y)).most(pixelTolerance);\r\n }\r\n}\r\n\r\nfunction computeMaxCompressionError(compressed: ImageBuffer, original: ImageBuffer): number {\r\n expect(compressed.data.length).to.equal(original.data.length);\r\n let max = 0;\r\n for (let i = 0; i < compressed.data.length; i++) {\r\n max = Math.max(max, Math.abs(compressed.data[i] - original.data[i]));\r\n }\r\n\r\n return max;\r\n}\r\n\r\ndescribe(\"ImageSource conversion\", () => {\r\n describe(\"imageBufferFromImageSource\", () => {\r\n it(\"decodes PNG\", () => {\r\n const buf = imageBufferFromImageSource({ source: samplePng })!;\r\n expect(buf).not.to.be.undefined;\r\n expect(buf.width).to.equal(3);\r\n expect(buf.height).to.equal(3);\r\n expect(buf.format).to.equal(ImageBufferFormat.Rgb);\r\n expectImagePixels(buf, [...top, ...middle, ...bottom]);\r\n });\r\n\r\n it(\"preserves alpha channel if RGBA requested\", () => {\r\n const image = makeImage(true);\r\n const source = imageSourceFromImageBuffer({ image })!;\r\n const result = imageBufferFromImageSource({ source, targetFormat: ImageBufferFormat.Rgba })!;\r\n expect(result.format).to.equal(ImageBufferFormat.Rgba);\r\n expectImagePixels(result, [...top, ...middle, ...bottom].map((x) => (x | 0x7f000000) >>> 0));\r\n });\r\n\r\n it(\"strips alpha channel if RGB requested\", () => {\r\n const image = makeImage(true);\r\n const source = imageSourceFromImageBuffer({ image })!;\r\n const result = imageBufferFromImageSource({ source, targetFormat: ImageBufferFormat.Rgb })!;\r\n expect(result.format).to.equal(ImageBufferFormat.Rgb);\r\n expectImagePixels(result, [...top, ...middle, ...bottom]);\r\n });\r\n\r\n it(\"sets alpha to 255 if RGBA requested for ImageSource lacking transparency\", () => {\r\n const img = imageBufferFromImageSource({ source: samplePng, targetFormat: ImageBufferFormat.Rgba })!;\r\n expect(img.format).to.equal(ImageBufferFormat.Rgba);\r\n expectImagePixels(img, [...top, ...middle, ...bottom].map((x) => ((x | 0xff000000) >>> 0)));\r\n });\r\n \r\n it(\"defaults to RGBA IFF alpha channel is present\", () => {\r\n const transparent = imageSourceFromImageBuffer({ image: makeImage(true), targetFormat: ImageSourceFormat.Png })!;\r\n expect(imageBufferFromImageSource({ source: transparent })!.format).to.equal(ImageBufferFormat.Rgba);\r\n const opaque = imageSourceFromImageBuffer({ image: makeImage(false), targetFormat: ImageSourceFormat.Png })!;\r\n expect(imageBufferFromImageSource({ source: opaque })!.format).to.equal(ImageBufferFormat.Rgb);\r\n });\r\n });\r\n\r\n describe(\"imageSourceFromImageBuffer\", () => {\r\n it(\"encodes to specified format\", () => {\r\n const image = makeImage(false);\r\n const png = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png })!;\r\n expect(png.format).to.equal(ImageSourceFormat.Png);\r\n const jpeg = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg })!;\r\n expect(jpeg.format).to.equal(ImageSourceFormat.Jpeg);\r\n\r\n // PNG is lossless\r\n expectEqualImageBuffers(imageBufferFromImageSource({ source: png })!, image);\r\n\r\n // JPEG is lossy\r\n expectEqualImageBuffers(imageBufferFromImageSource({ source: jpeg })!, image, 2);\r\n });\r\n\r\n it(\"defaults to PNG IFF alpha channel is present\", () => {\r\n const transparent = makeImage(true);\r\n expect(imageSourceFromImageBuffer({ image: transparent })!.format).to.equal(ImageSourceFormat.Png);\r\n\r\n const opaque = makeImage(false);\r\n expect(imageSourceFromImageBuffer({ image: opaque })!.format).to.equal(ImageSourceFormat.Jpeg);\r\n });\r\n\r\n it(\"flips vertically IFF specified\", () => {\r\n const image = makeImage(false);\r\n let source = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png })!;\r\n let output = imageBufferFromImageSource({ source })!;\r\n expectImagePixels(output, [...top, ...middle, ...bottom ]);\r\n\r\n source = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png, flipVertically: true })!;\r\n output = imageBufferFromImageSource({ source })!;\r\n expectImagePixels(output, [...bottom, ...middle, ...top ]);\r\n });\r\n\r\n it(\"trades quality for size when encoding JPEG\", () => {\r\n const image = makeImage(false);\r\n const low = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 50 })!;\r\n const medium = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 75 })!;\r\n const high = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 100 })!;\r\n expect(low.data.length).lessThan(medium.data.length);\r\n expect(medium.data.length).lessThan(high.data.length);\r\n\r\n const highImg = imageBufferFromImageSource({ source: high })!;\r\n const lowImg = imageBufferFromImageSource({ source: low })!;\r\n const mediumImg = imageBufferFromImageSource({ source: medium })!;\r\n\r\n expect(computeMaxCompressionError(highImg, image)).to.equal(2);\r\n const mediumError = computeMaxCompressionError(mediumImg, image);\r\n expect(mediumError).greaterThan(2);\r\n expect(computeMaxCompressionError(lowImg, image)).greaterThan(mediumError);\r\n });\r\n\r\n it(\"throws if image is in alpha format\", () => {\r\n const image = ImageBuffer.create(new Uint8Array([1, 2, 3, 4, 5]), ImageBufferFormat.Alpha, 5);\r\n expect(() => imageSourceFromImageBuffer({ image })).to.throw(\"imageSourceFromImageBuffer cannot be used with alpha-only images\");\r\n });\r\n });\r\n});\r\n\r\n"]}
1
+ {"version":3,"file":"ImageSourceConversion.test.js","sourceRoot":"","sources":["../../../src/test/ImageSourceConversion.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 { expect } from \"chai\";\nimport { imageBufferFromImageSource, imageSourceFromImageBuffer } from \"../ImageSourceConversion\";\nimport { samplePngTexture } from \"./imageData\";\nimport { BinaryImageSource, ImageBuffer, ImageBufferFormat, ImageSourceFormat } from \"@itwin/core-common\";\n\n// samplePngTexture encodes this image:\n// White Red Red\n// Red Blue Red\n// Red Red Green\nconst red = 0x000000ff;\nconst green = 0x0000ff00;\nconst blue = 0x00ff0000;\nconst white = 0x00ffffff;\nconst top = [white, red, red];\nconst middle = [red, blue, red];\nconst bottom = [red, red, green];\n\nconst samplePng: BinaryImageSource = {\n data: new Uint8Array(samplePngTexture.data),\n format: ImageSourceFormat.Png,\n};\n\nfunction getPixel(img: ImageBuffer, x: number, y: number): number {\n const pixelSize = img.numBytesPerPixel;\n const start = y * pixelSize * img.width + x * pixelSize;\n let pixel = 0;\n for (let offset = 0; offset < pixelSize; offset++) {\n let val = img.data[start + offset];\n val = (val << (offset * 8)) >>> 0;\n pixel = (pixel | val) >>> 0;\n }\n\n return pixel;\n}\n\nfunction expectImagePixels(img: ImageBuffer, expected: number[]): void {\n expect(img.width * img.height).to.equal(expected.length);\n const actual = [];\n for (let y = 0; y < img.height; y++) {\n for (let x = 0; x < img.width; x++) {\n actual.push(getPixel(img, x, y));\n }\n }\n\n expect(actual).to.deep.equal(expected);\n}\n\n// Make an ImageBuffer as\n// White Red Red\n// Red Blue Red\n// Red Red Green\n// If an alpha channel is requested, alpha will be 0x7f\nfunction makeImage(wantAlpha: boolean): ImageBuffer {\n const format = wantAlpha ? ImageBufferFormat.Rgba : ImageBufferFormat.Rgb;\n const pixelSize = wantAlpha ? 4 : 3;\n const data = new Uint8Array(pixelSize * 9);\n const lut = [white, red, red, red, blue, red, red, red, green];\n for (let i = 0; i < 9; i++) {\n const value = lut[i];\n const s = i * pixelSize;\n data[s + 0] = value & 0xff;\n data[s + 1] = (value >> 8) & 0xff;\n data[s + 2] = (value >> 16) & 0xff;\n if (wantAlpha) {\n data[s + 3] = 0x7f;\n }\n }\n\n const img = ImageBuffer.create(data, format, 3);\n return img;\n}\n\nfunction expectEqualImageBuffers(a: ImageBuffer, b: ImageBuffer, pixelTolerance = 0): void {\n expect(a.format).to.equal(b.format);\n expect(a.width).to.equal(b.width);\n expect(a.height).to.equal(b.height);\n expect(a.data.length).to.equal(b.data.length);\n for (let i = 0; i < a.data.length; i++) {\n const x = a.data[i];\n const y = b.data[i];\n expect(Math.abs(x - y)).most(pixelTolerance);\n }\n}\n\nfunction computeMaxCompressionError(compressed: ImageBuffer, original: ImageBuffer): number {\n expect(compressed.data.length).to.equal(original.data.length);\n let max = 0;\n for (let i = 0; i < compressed.data.length; i++) {\n max = Math.max(max, Math.abs(compressed.data[i] - original.data[i]));\n }\n\n return max;\n}\n\ndescribe(\"ImageSource conversion\", () => {\n describe(\"imageBufferFromImageSource\", () => {\n it(\"decodes PNG\", () => {\n const buf = imageBufferFromImageSource({ source: samplePng })!;\n expect(buf).not.to.be.undefined;\n expect(buf.width).to.equal(3);\n expect(buf.height).to.equal(3);\n expect(buf.format).to.equal(ImageBufferFormat.Rgb);\n expectImagePixels(buf, [...top, ...middle, ...bottom]);\n });\n\n it(\"preserves alpha channel if RGBA requested\", () => {\n const image = makeImage(true);\n const source = imageSourceFromImageBuffer({ image })!;\n const result = imageBufferFromImageSource({ source, targetFormat: ImageBufferFormat.Rgba })!;\n expect(result.format).to.equal(ImageBufferFormat.Rgba);\n expectImagePixels(result, [...top, ...middle, ...bottom].map((x) => (x | 0x7f000000) >>> 0));\n });\n\n it(\"strips alpha channel if RGB requested\", () => {\n const image = makeImage(true);\n const source = imageSourceFromImageBuffer({ image })!;\n const result = imageBufferFromImageSource({ source, targetFormat: ImageBufferFormat.Rgb })!;\n expect(result.format).to.equal(ImageBufferFormat.Rgb);\n expectImagePixels(result, [...top, ...middle, ...bottom]);\n });\n\n it(\"sets alpha to 255 if RGBA requested for ImageSource lacking transparency\", () => {\n const img = imageBufferFromImageSource({ source: samplePng, targetFormat: ImageBufferFormat.Rgba })!;\n expect(img.format).to.equal(ImageBufferFormat.Rgba);\n expectImagePixels(img, [...top, ...middle, ...bottom].map((x) => ((x | 0xff000000) >>> 0)));\n });\n \n it(\"defaults to RGBA IFF alpha channel is present\", () => {\n const transparent = imageSourceFromImageBuffer({ image: makeImage(true), targetFormat: ImageSourceFormat.Png })!;\n expect(imageBufferFromImageSource({ source: transparent })!.format).to.equal(ImageBufferFormat.Rgba);\n const opaque = imageSourceFromImageBuffer({ image: makeImage(false), targetFormat: ImageSourceFormat.Png })!;\n expect(imageBufferFromImageSource({ source: opaque })!.format).to.equal(ImageBufferFormat.Rgb);\n });\n });\n\n describe(\"imageSourceFromImageBuffer\", () => {\n it(\"encodes to specified format\", () => {\n const image = makeImage(false);\n const png = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png })!;\n expect(png.format).to.equal(ImageSourceFormat.Png);\n const jpeg = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg })!;\n expect(jpeg.format).to.equal(ImageSourceFormat.Jpeg);\n\n // PNG is lossless\n expectEqualImageBuffers(imageBufferFromImageSource({ source: png })!, image);\n\n // JPEG is lossy\n expectEqualImageBuffers(imageBufferFromImageSource({ source: jpeg })!, image, 2);\n });\n\n it(\"defaults to PNG IFF alpha channel is present\", () => {\n const transparent = makeImage(true);\n expect(imageSourceFromImageBuffer({ image: transparent })!.format).to.equal(ImageSourceFormat.Png);\n\n const opaque = makeImage(false);\n expect(imageSourceFromImageBuffer({ image: opaque })!.format).to.equal(ImageSourceFormat.Jpeg);\n });\n\n it(\"flips vertically IFF specified\", () => {\n const image = makeImage(false);\n let source = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png })!;\n let output = imageBufferFromImageSource({ source })!;\n expectImagePixels(output, [...top, ...middle, ...bottom ]);\n\n source = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Png, flipVertically: true })!;\n output = imageBufferFromImageSource({ source })!;\n expectImagePixels(output, [...bottom, ...middle, ...top ]);\n });\n\n it(\"trades quality for size when encoding JPEG\", () => {\n const image = makeImage(false);\n const low = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 50 })!;\n const medium = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 75 })!;\n const high = imageSourceFromImageBuffer({ image, targetFormat: ImageSourceFormat.Jpeg, jpegQuality: 100 })!;\n expect(low.data.length).lessThan(medium.data.length);\n expect(medium.data.length).lessThan(high.data.length);\n\n const highImg = imageBufferFromImageSource({ source: high })!;\n const lowImg = imageBufferFromImageSource({ source: low })!;\n const mediumImg = imageBufferFromImageSource({ source: medium })!;\n\n expect(computeMaxCompressionError(highImg, image)).to.equal(2);\n const mediumError = computeMaxCompressionError(mediumImg, image);\n expect(mediumError).greaterThan(2);\n expect(computeMaxCompressionError(lowImg, image)).greaterThan(mediumError);\n });\n\n it(\"throws if image is in alpha format\", () => {\n const image = ImageBuffer.create(new Uint8Array([1, 2, 3, 4, 5]), ImageBufferFormat.Alpha, 5);\n expect(() => imageSourceFromImageBuffer({ image })).to.throw(\"imageSourceFromImageBuffer cannot be used with alpha-only images\");\n });\n });\n});\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IpcHost.test.js","sourceRoot":"","sources":["../../../src/test/IpcHost.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as sinon from \"sinon\";\r\nimport { expect } from \"chai\";\r\nimport { IpcInvokeReturn, IpcSocketBackend } from \"@itwin/core-common\";\r\nimport { IpcHandler, IpcHost } from \"../IpcHost\";\r\n\r\ninterface MockIpcInterface {\r\n mockMethod: () => string;\r\n}\r\n\r\nclass MockIpcHandler extends IpcHandler implements MockIpcInterface {\r\n public override get channelName() { return \"mock-channel\"; }\r\n\r\n public mockMethod(): string {\r\n return \"mock-value\";\r\n }\r\n\r\n #privateFunction(): void { }\r\n}\r\n\r\ndescribe(\"IpcHost\", () => {\r\n let socket: sinon.SinonStubbedInstance<IpcSocketBackend>;\r\n\r\n beforeEach(async () => {\r\n socket = {\r\n send: sinon.stub(),\r\n addListener: sinon.stub(),\r\n removeListener: sinon.stub(),\r\n handle: sinon.stub(),\r\n };\r\n\r\n await IpcHost.startup({ ipcHost: { socket } });\r\n });\r\n\r\n describe(\"IpcHandler\", () => {\r\n it(\"should call public methods\", async () => {\r\n MockIpcHandler.register();\r\n\r\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\r\n expect(handleCall).to.not.be.undefined;\r\n\r\n const handler = handleCall.args[1];\r\n expect(typeof handler).to.equal(\"function\");\r\n\r\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"mockMethod\");\r\n\r\n expect(ipcReturn.result).to.equal(\"mock-value\");\r\n expect(ipcReturn.error).to.be.undefined;\r\n });\r\n\r\n it(\"should not call private methods\", async () => {\r\n MockIpcHandler.register();\r\n\r\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\r\n expect(handleCall).to.not.be.undefined;\r\n\r\n const handler = handleCall.args[1];\r\n expect(typeof handler).to.equal(\"function\");\r\n\r\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"#privateFunction\");\r\n\r\n expect(ipcReturn.result).to.be.undefined;\r\n expect(ipcReturn.error).to.not.be.undefined;\r\n });\r\n\r\n it(\"should not call methods inherited from Object\", async () => {\r\n MockIpcHandler.register();\r\n\r\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\r\n expect(handleCall).to.not.be.undefined;\r\n\r\n const handler = handleCall.args[1];\r\n expect(typeof handler).to.equal(\"function\");\r\n\r\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"toString\");\r\n\r\n expect(ipcReturn.result).to.be.undefined;\r\n expect(ipcReturn.error).to.not.be.undefined;\r\n });\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"IpcHost.test.js","sourceRoot":"","sources":["../../../src/test/IpcHost.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as sinon from \"sinon\";\nimport { expect } from \"chai\";\nimport { IpcInvokeReturn, IpcSocketBackend } from \"@itwin/core-common\";\nimport { IpcHandler, IpcHost } from \"../IpcHost\";\n\ninterface MockIpcInterface {\n mockMethod: () => string;\n}\n\nclass MockIpcHandler extends IpcHandler implements MockIpcInterface {\n public override get channelName() { return \"mock-channel\"; }\n\n public mockMethod(): string {\n return \"mock-value\";\n }\n\n #privateFunction(): void { }\n}\n\ndescribe(\"IpcHost\", () => {\n let socket: sinon.SinonStubbedInstance<IpcSocketBackend>;\n\n beforeEach(async () => {\n socket = {\n send: sinon.stub(),\n addListener: sinon.stub(),\n removeListener: sinon.stub(),\n handle: sinon.stub(),\n };\n\n await IpcHost.startup({ ipcHost: { socket } });\n });\n\n describe(\"IpcHandler\", () => {\n it(\"should call public methods\", async () => {\n MockIpcHandler.register();\n\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\n expect(handleCall).to.not.be.undefined;\n\n const handler = handleCall.args[1];\n expect(typeof handler).to.equal(\"function\");\n\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"mockMethod\");\n\n expect(ipcReturn.result).to.equal(\"mock-value\");\n expect(ipcReturn.error).to.be.undefined;\n });\n\n it(\"should not call private methods\", async () => {\n MockIpcHandler.register();\n\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\n expect(handleCall).to.not.be.undefined;\n\n const handler = handleCall.args[1];\n expect(typeof handler).to.equal(\"function\");\n\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"#privateFunction\");\n\n expect(ipcReturn.result).to.be.undefined;\n expect(ipcReturn.error).to.not.be.undefined;\n });\n\n it(\"should not call methods inherited from Object\", async () => {\n MockIpcHandler.register();\n\n const handleCall = socket.handle.getCalls().find((call) => call.args[0] === \"itwin.mock-channel\")!;\n expect(handleCall).to.not.be.undefined;\n\n const handler = handleCall.args[1];\n expect(typeof handler).to.equal(\"function\");\n\n const ipcReturn: IpcInvokeReturn = await handler(undefined, \"toString\");\n\n expect(ipcReturn.result).to.be.undefined;\n expect(ipcReturn.error).to.not.be.undefined;\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KnownTestLocations.js","sourceRoot":"","sources":["../../../src/test/KnownTestLocations.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAE7B,6GAA6G;IACtG,MAAM,KAAK,SAAS;QACzB,IAAI,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACvC,6FAA6F;YAC7F,uCAAuC;YACvC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,2CAA2C;IACpC,MAAM,KAAK,SAAS;QACzB,IAAI,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF","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 { join } from \"path\";\r\nimport { tmpdir } from \"os\";\r\nimport { ProcessDetector } from \"@itwin/core-bentley\";\r\n\r\nexport class KnownTestLocations {\r\n\r\n /** The directory where test assets are stored. Keep in mind that the test is playing the role of the app. */\r\n public static get assetsDir(): string {\r\n if (ProcessDetector.isMobileAppBackend) {\r\n // Note: this relies on the native test runner copying its assets out of its app wrapper into\r\n // its tmpdir before running the tests.\r\n return join(tmpdir(), \"assets\");\r\n }\r\n\r\n return join(__dirname, \"assets\");\r\n }\r\n\r\n /** The directory where tests can write. */\r\n public static get outputDir(): string {\r\n if (ProcessDetector.isMobileAppBackend) {\r\n return join(tmpdir(), \"output\");\r\n }\r\n\r\n // Assume that we are running in nodejs\r\n return join(__dirname, \"output\");\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"KnownTestLocations.js","sourceRoot":"","sources":["../../../src/test/KnownTestLocations.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAE7B,6GAA6G;IACtG,MAAM,KAAK,SAAS;QACzB,IAAI,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACvC,6FAA6F;YAC7F,uCAAuC;YACvC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,2CAA2C;IACpC,MAAM,KAAK,SAAS;QACzB,IAAI,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF","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 { join } from \"path\";\nimport { tmpdir } from \"os\";\nimport { ProcessDetector } from \"@itwin/core-bentley\";\n\nexport class KnownTestLocations {\n\n /** The directory where test assets are stored. Keep in mind that the test is playing the role of the app. */\n public static get assetsDir(): string {\n if (ProcessDetector.isMobileAppBackend) {\n // Note: this relies on the native test runner copying its assets out of its app wrapper into\n // its tmpdir before running the tests.\n return join(tmpdir(), \"assets\");\n }\n\n return join(__dirname, \"assets\");\n }\n\n /** The directory where tests can write. */\n public static get outputDir(): string {\n if (ProcessDetector.isMobileAppBackend) {\n return join(tmpdir(), \"output\");\n }\n\n // Assume that we are running in nodejs\n return join(__dirname, \"output\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PrintElementTree.js","sourceRoot":"","sources":["../../../src/test/PrintElementTree.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,QAAQ,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,SAAqB;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAY;IACnC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,IAAqB,EAAE,MAAgB,EAAE,SAAqB,EAAE,MAAc;IACrI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEpB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAE1F,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAQ,SAAS,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1F,4DAA4D;QAC5D,MAAM,CAAC,qBAAqB,CAAC,4BAA4B,OAAO,CAAC,aAAa,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5G,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC9C,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { DbResult, Id64String, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelDb } from \"../IModelDb\";\r\nimport { Model } from \"../Model\";\r\nimport { Element } from \"../Element\";\r\n\r\nexport function fmtElement(iModel: IModelDb, elementId: Id64String): string {\r\n const el = iModel.elements.getElement(elementId);\r\n return `${el.id} ${el.classFullName} ${el.getDisplayLabel()}`;\r\n}\r\n\r\nexport function fmtModel(model: Model): string {\r\n return `${model.id} ${model.classFullName} ${model.name}`;\r\n}\r\n\r\nexport function printElementTree(loggerCategory: string, seen: Set<Id64String>, iModel: IModelDb, elementId: Id64String, indent: number) {\r\n if (seen.has(elementId)) {\r\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)}${fmtElement(iModel, elementId)} (SEEN)`);\r\n return;\r\n }\r\n\r\n seen.add(elementId);\r\n\r\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)}${fmtElement(iModel, elementId)}`);\r\n\r\n for (const child of iModel.elements.queryChildren(elementId)) {\r\n printElementTree(loggerCategory, seen, iModel, child, indent + 1);\r\n }\r\n\r\n const subModel = iModel.models.tryGetModel<Model>(elementId);\r\n if (subModel !== undefined) {\r\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)} subModel ${fmtModel(subModel)}:`);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.withPreparedStatement(`select ecinstanceid from ${Element.classFullName} where Model.Id = ?`, (stmt) => {\r\n stmt.bindId(1, subModel.id);\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n printElementTree(loggerCategory, seen, iModel, stmt.getValue(0).getId(), indent + 1);\r\n }\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrintElementTree.js","sourceRoot":"","sources":["../../../src/test/PrintElementTree.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,QAAQ,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,SAAqB;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAY;IACnC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,IAAqB,EAAE,MAAgB,EAAE,SAAqB,EAAE,MAAc;IACrI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEpB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAE1F,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAQ,SAAS,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1F,4DAA4D;QAC5D,MAAM,CAAC,qBAAqB,CAAC,4BAA4B,OAAO,CAAC,aAAa,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5G,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC9C,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC","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 { DbResult, Id64String, Logger } from \"@itwin/core-bentley\";\nimport { IModelDb } from \"../IModelDb\";\nimport { Model } from \"../Model\";\nimport { Element } from \"../Element\";\n\nexport function fmtElement(iModel: IModelDb, elementId: Id64String): string {\n const el = iModel.elements.getElement(elementId);\n return `${el.id} ${el.classFullName} ${el.getDisplayLabel()}`;\n}\n\nexport function fmtModel(model: Model): string {\n return `${model.id} ${model.classFullName} ${model.name}`;\n}\n\nexport function printElementTree(loggerCategory: string, seen: Set<Id64String>, iModel: IModelDb, elementId: Id64String, indent: number) {\n if (seen.has(elementId)) {\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)}${fmtElement(iModel, elementId)} (SEEN)`);\n return;\n }\n\n seen.add(elementId);\n\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)}${fmtElement(iModel, elementId)}`);\n\n for (const child of iModel.elements.queryChildren(elementId)) {\n printElementTree(loggerCategory, seen, iModel, child, indent + 1);\n }\n\n const subModel = iModel.models.tryGetModel<Model>(elementId);\n if (subModel !== undefined) {\n Logger.logTrace(loggerCategory, `${\"\\t\".repeat(indent)} subModel ${fmtModel(subModel)}:`);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n iModel.withPreparedStatement(`select ecinstanceid from ${Element.classFullName} where Model.Id = ?`, (stmt) => {\n stmt.bindId(1, subModel.id);\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n printElementTree(loggerCategory, seen, iModel, stmt.getValue(0).getId(), indent + 1);\n }\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyDb.test.js","sourceRoot":"","sources":["../../../src/test/PropertyDb.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 { expect } from \"chai\";\r\nimport { existsSync } from \"fs\";\r\nimport { Suite } from \"mocha\";\r\nimport { join } from \"path\";\r\nimport { OpenMode } from \"@itwin/core-bentley\";\r\nimport { IModelHost } from \"../IModelHost\";\r\nimport { PropertyStore } from \"../PropertyStore\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\n\r\ndescribe(\"PropertyDb\", function (this: Suite) {\r\n this.timeout(0);\r\n\r\n const outputDir = KnownTestLocations.outputDir;\r\n\r\n before(async () => IModelHost.startup());\r\n\r\n it(\"save and load properties\", async () => {\r\n const dbName = join(outputDir, \"properties.db\");\r\n PropertyStore.PropertyDb.createNewDb(dbName);\r\n expect(existsSync(dbName)).true;\r\n const propertyDb = new PropertyStore.PropertyDb();\r\n propertyDb.openDb(dbName, OpenMode.ReadWrite);\r\n\r\n const countProperties = (filter?: PropertyStore.PropertyFilter) => {\r\n let count = 0;\r\n propertyDb.forAllProperties(() => {\r\n ++count;\r\n }, filter);\r\n return count;\r\n };\r\n const testJson = {\r\n a: \"test string\",\r\n num: 20,\r\n b: true,\r\n };\r\n\r\n const string1 = \"this is a test\";\r\n const string2 = \"this is another test\";\r\n const blob1 = new Uint8Array([2, 33, 23, 0, 202]);\r\n await propertyDb.saveProperty(\"test-string\", string1);\r\n await propertyDb.saveProperty(\"test-string2\", string2);\r\n await propertyDb.saveProperty(\"test-obj\", testJson);\r\n await propertyDb.saveProperty(\"is-false\", false);\r\n await propertyDb.saveProperty(\"is-true\", true);\r\n await propertyDb.saveProperty(\"is-100\", 100);\r\n await propertyDb.saveProperty(\"is-2.3\", 2.3);\r\n await propertyDb.saveProperty(\"is-blob\", blob1);\r\n propertyDb.saveChanges();\r\n expect(countProperties()).equal(8);\r\n\r\n expect(propertyDb.getString(\"test-string\")).equals(string1);\r\n expect(propertyDb.getString(\"test-string2\")).equals(string2);\r\n expect(propertyDb.getObject(\"test-obj\")).deep.equal(testJson);\r\n expect(propertyDb.getBoolean(\"is-false\")).false;\r\n expect(propertyDb.getBoolean(\"is-true\")).true;\r\n expect(propertyDb.getNumber(\"is-100\")).equal(100);\r\n expect(propertyDb.getNumber(\"is-2.3\")).equal(2.3);\r\n expect(propertyDb.getBlob(\"is-blob\")).deep.equal(blob1);\r\n\r\n const updated = \"this is a different string\";\r\n await propertyDb.saveProperty(\"test-string\", updated);\r\n expect(propertyDb.getString(\"test-string\")).equals(updated);\r\n\r\n expect(propertyDb.getNumber(\"test-string\")).undefined;\r\n expect(propertyDb.getString(\"not there\")).undefined;\r\n expect(propertyDb.getBlob(\"not there\")).undefined;\r\n expect(propertyDb.getNumber(\"not there\")).undefined;\r\n expect(propertyDb.getBlob(\"not there\")).undefined;\r\n expect(propertyDb.getNumber(\"not there\", 50)).equal(50);\r\n\r\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(3);\r\n await propertyDb.deleteProperty(\"test-string\");\r\n expect(countProperties()).equal(7);\r\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(2);\r\n\r\n propertyDb.closeDb(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"PropertyDb.test.js","sourceRoot":"","sources":["../../../src/test/PropertyDb.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 { expect } from \"chai\";\nimport { existsSync } from \"fs\";\nimport { Suite } from \"mocha\";\nimport { join } from \"path\";\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { IModelHost } from \"../IModelHost\";\nimport { PropertyStore } from \"../PropertyStore\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\n\ndescribe(\"PropertyDb\", function (this: Suite) {\n this.timeout(0);\n\n const outputDir = KnownTestLocations.outputDir;\n\n before(async () => IModelHost.startup());\n\n it(\"save and load properties\", async () => {\n const dbName = join(outputDir, \"properties.db\");\n PropertyStore.PropertyDb.createNewDb(dbName);\n expect(existsSync(dbName)).true;\n const propertyDb = new PropertyStore.PropertyDb();\n propertyDb.openDb(dbName, OpenMode.ReadWrite);\n\n const countProperties = (filter?: PropertyStore.PropertyFilter) => {\n let count = 0;\n propertyDb.forAllProperties(() => {\n ++count;\n }, filter);\n return count;\n };\n const testJson = {\n a: \"test string\",\n num: 20,\n b: true,\n };\n\n const string1 = \"this is a test\";\n const string2 = \"this is another test\";\n const blob1 = new Uint8Array([2, 33, 23, 0, 202]);\n await propertyDb.saveProperty(\"test-string\", string1);\n await propertyDb.saveProperty(\"test-string2\", string2);\n await propertyDb.saveProperty(\"test-obj\", testJson);\n await propertyDb.saveProperty(\"is-false\", false);\n await propertyDb.saveProperty(\"is-true\", true);\n await propertyDb.saveProperty(\"is-100\", 100);\n await propertyDb.saveProperty(\"is-2.3\", 2.3);\n await propertyDb.saveProperty(\"is-blob\", blob1);\n propertyDb.saveChanges();\n expect(countProperties()).equal(8);\n\n expect(propertyDb.getString(\"test-string\")).equals(string1);\n expect(propertyDb.getString(\"test-string2\")).equals(string2);\n expect(propertyDb.getObject(\"test-obj\")).deep.equal(testJson);\n expect(propertyDb.getBoolean(\"is-false\")).false;\n expect(propertyDb.getBoolean(\"is-true\")).true;\n expect(propertyDb.getNumber(\"is-100\")).equal(100);\n expect(propertyDb.getNumber(\"is-2.3\")).equal(2.3);\n expect(propertyDb.getBlob(\"is-blob\")).deep.equal(blob1);\n\n const updated = \"this is a different string\";\n await propertyDb.saveProperty(\"test-string\", updated);\n expect(propertyDb.getString(\"test-string\")).equals(updated);\n\n expect(propertyDb.getNumber(\"test-string\")).undefined;\n expect(propertyDb.getString(\"not there\")).undefined;\n expect(propertyDb.getBlob(\"not there\")).undefined;\n expect(propertyDb.getNumber(\"not there\")).undefined;\n expect(propertyDb.getBlob(\"not there\")).undefined;\n expect(propertyDb.getNumber(\"not there\", 50)).equal(50);\n\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(3);\n await propertyDb.deleteProperty(\"test-string\");\n expect(countProperties()).equal(7);\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(2);\n\n propertyDb.closeDb(true);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RevisionUtility.js","sourceRoot":"","sources":["../../../src/test/RevisionUtility.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 { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelNative } from \"../internal/NativePlatform\";\r\nimport { IModelJsFs } from \"../IModelJsFs\";\r\n\r\nexport interface LzmaParams {\r\n dictSize?: number;\r\n level?: number;\r\n lc?: number;\r\n lp?: number;\r\n pb?: number;\r\n fb?: number;\r\n numHashBytes?: number;\r\n mc?: number;\r\n writeEndMark?: number;\r\n btMode?: number;\r\n numThreads?: number;\r\n blockSize?: number;\r\n numBlockThreads?: number;\r\n numTotalThreads?: number;\r\n algo?: number;\r\n}\r\n\r\nexport interface ChangesetSizeInfo {\r\n compressSize?: number;\r\n uncompressSize?: number;\r\n prefixSize?: number;\r\n}\r\n\r\nexport class RevisionUtility {\r\n public static readonly DEFAULT: LzmaParams = {\r\n algo: 1,\r\n blockSize: 67108864,\r\n btMode: 1,\r\n dictSize: 16777216,\r\n fb: 64,\r\n lc: 3,\r\n level: 7,\r\n lp: 0,\r\n mc: 48,\r\n numBlockThreads: 4,\r\n numHashBytes: 4,\r\n numThreads: 2,\r\n numTotalThreads: 8,\r\n pb: 2,\r\n writeEndMark: 0,\r\n };\r\n\r\n public static recompressRevision(sourceFile: string, targetFile: string, lzmaProps?: LzmaParams): BentleyStatus {\r\n if (!IModelJsFs.existsSync(sourceFile))\r\n throw new Error(\"SourceFile does not exists\");\r\n return IModelNative.platform.RevisionUtility.recompressRevision(sourceFile, targetFile, lzmaProps ? JSON.stringify(lzmaProps) : undefined);\r\n }\r\n public static disassembleRevision(sourceFile: string, targetDir: string): BentleyStatus {\r\n if (!IModelJsFs.existsSync(sourceFile))\r\n throw new Error(\"SourceFile does not exists\");\r\n return IModelNative.platform.RevisionUtility.disassembleRevision(sourceFile, targetDir);\r\n }\r\n public static assembleRevision(targetFile: string, rawChangesetFile: string, prefixFile?: string, lzmaProps?: LzmaParams): BentleyStatus {\r\n if (!IModelJsFs.existsSync(rawChangesetFile))\r\n throw new Error(\"RawChangesetFile does not exists\");\r\n if (prefixFile && !IModelJsFs.existsSync(prefixFile))\r\n throw new Error(\"prefixFile does not exists\");\r\n return IModelNative.platform.RevisionUtility.assembleRevision(targetFile, rawChangesetFile, prefixFile, lzmaProps ? JSON.stringify(lzmaProps) : undefined);\r\n }\r\n public static normalizeLzmaParams(lzmaProps?: LzmaParams): LzmaParams {\r\n return JSON.parse(IModelNative.platform.RevisionUtility.normalizeLzmaParams(lzmaProps ? JSON.stringify(lzmaProps) : undefined)) as LzmaParams;\r\n }\r\n public static computeStatistics(sourceFile: string, addPrefix: boolean = true): any {\r\n if (!IModelJsFs.existsSync(sourceFile))\r\n throw new Error(\"SourceFile does not exists\");\r\n return JSON.parse(IModelNative.platform.RevisionUtility.computeStatistics(sourceFile, addPrefix));\r\n }\r\n public static getUncompressSize(sourceFile: string): ChangesetSizeInfo {\r\n if (!IModelJsFs.existsSync(sourceFile))\r\n throw new Error(\"SourceFile does not exists\");\r\n return JSON.parse(IModelNative.platform.RevisionUtility.getUncompressSize(sourceFile)) as ChangesetSizeInfo;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RevisionUtility.js","sourceRoot":"","sources":["../../../src/test/RevisionUtility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0B3C,MAAM,OAAO,eAAe;IACnB,MAAM,CAAU,OAAO,GAAe;QAC3C,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,QAAQ;QAClB,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,CAAC;QACL,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC;QAClB,EAAE,EAAE,CAAC;QACL,YAAY,EAAE,CAAC;KAChB,CAAC;IAEK,MAAM,CAAC,kBAAkB,CAAC,UAAkB,EAAE,UAAkB,EAAE,SAAsB;QAC7F,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7I,CAAC;IACM,MAAM,CAAC,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;QACrE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IACM,MAAM,CAAC,gBAAgB,CAAC,UAAkB,EAAE,gBAAwB,EAAE,UAAmB,EAAE,SAAsB;QACtH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7J,CAAC;IACM,MAAM,CAAC,mBAAmB,CAAC,SAAsB;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAe,CAAC;IAChJ,CAAC;IACM,MAAM,CAAC,iBAAiB,CAAC,UAAkB,EAAE,YAAqB,IAAI;QAC3E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACpG,CAAC;IACM,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAsB,CAAC;IAC9G,CAAC","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 { BentleyStatus } from \"@itwin/core-bentley\";\nimport { IModelNative } from \"../internal/NativePlatform\";\nimport { IModelJsFs } from \"../IModelJsFs\";\n\nexport interface LzmaParams {\n dictSize?: number;\n level?: number;\n lc?: number;\n lp?: number;\n pb?: number;\n fb?: number;\n numHashBytes?: number;\n mc?: number;\n writeEndMark?: number;\n btMode?: number;\n numThreads?: number;\n blockSize?: number;\n numBlockThreads?: number;\n numTotalThreads?: number;\n algo?: number;\n}\n\nexport interface ChangesetSizeInfo {\n compressSize?: number;\n uncompressSize?: number;\n prefixSize?: number;\n}\n\nexport class RevisionUtility {\n public static readonly DEFAULT: LzmaParams = {\n algo: 1,\n blockSize: 67108864,\n btMode: 1,\n dictSize: 16777216,\n fb: 64,\n lc: 3,\n level: 7,\n lp: 0,\n mc: 48,\n numBlockThreads: 4,\n numHashBytes: 4,\n numThreads: 2,\n numTotalThreads: 8,\n pb: 2,\n writeEndMark: 0,\n };\n\n public static recompressRevision(sourceFile: string, targetFile: string, lzmaProps?: LzmaParams): BentleyStatus {\n if (!IModelJsFs.existsSync(sourceFile))\n throw new Error(\"SourceFile does not exists\");\n return IModelNative.platform.RevisionUtility.recompressRevision(sourceFile, targetFile, lzmaProps ? JSON.stringify(lzmaProps) : undefined);\n }\n public static disassembleRevision(sourceFile: string, targetDir: string): BentleyStatus {\n if (!IModelJsFs.existsSync(sourceFile))\n throw new Error(\"SourceFile does not exists\");\n return IModelNative.platform.RevisionUtility.disassembleRevision(sourceFile, targetDir);\n }\n public static assembleRevision(targetFile: string, rawChangesetFile: string, prefixFile?: string, lzmaProps?: LzmaParams): BentleyStatus {\n if (!IModelJsFs.existsSync(rawChangesetFile))\n throw new Error(\"RawChangesetFile does not exists\");\n if (prefixFile && !IModelJsFs.existsSync(prefixFile))\n throw new Error(\"prefixFile does not exists\");\n return IModelNative.platform.RevisionUtility.assembleRevision(targetFile, rawChangesetFile, prefixFile, lzmaProps ? JSON.stringify(lzmaProps) : undefined);\n }\n public static normalizeLzmaParams(lzmaProps?: LzmaParams): LzmaParams {\n return JSON.parse(IModelNative.platform.RevisionUtility.normalizeLzmaParams(lzmaProps ? JSON.stringify(lzmaProps) : undefined)) as LzmaParams;\n }\n public static computeStatistics(sourceFile: string, addPrefix: boolean = true): any {\n if (!IModelJsFs.existsSync(sourceFile))\n throw new Error(\"SourceFile does not exists\");\n return JSON.parse(IModelNative.platform.RevisionUtility.computeStatistics(sourceFile, addPrefix));\n }\n public static getUncompressSize(sourceFile: string): ChangesetSizeInfo {\n if (!IModelJsFs.existsSync(sourceFile))\n throw new Error(\"SourceFile does not exists\");\n return JSON.parse(IModelNative.platform.RevisionUtility.getUncompressSize(sourceFile)) as ChangesetSizeInfo;\n }\n}\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":["/*---------------------------------------------------------------------------------------------\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
+ {"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 +1 @@
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"]}
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 +1 @@
1
- {"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { AccessToken, GuidString } from \"@itwin/core-bentley\";\r\nimport { ColorDef, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { BriefcaseDb, ChannelControl, SpatialCategory } from \"../core-backend\";\r\nimport { HubMock } from \"../internal/HubMock\";\r\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\r\n\r\n/** Test utility to push an iModel and ChangeSets */\r\nexport class TestChangeSetUtility {\r\n private readonly _iModelName: string;\r\n\r\n public iTwinId!: GuidString;\r\n public iModelId!: GuidString;\r\n private _iModel!: BriefcaseDb;\r\n private _accessToken: AccessToken;\r\n\r\n private _modelId!: string;\r\n private _categoryId!: string;\r\n\r\n constructor(accessToken: AccessToken, iModelName: string) {\r\n this._accessToken = accessToken;\r\n this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)\r\n }\r\n\r\n private async addTestModel(): Promise<void> {\r\n [, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(this._iModel, IModelTestUtils.getUniqueModelCode(this._iModel, \"TestPhysicalModel\"), true);\r\n this._iModel.saveChanges(\"Added test model\");\r\n }\r\n\r\n private async addTestCategory(): Promise<void> {\r\n this._categoryId = SpatialCategory.insert(this._iModel, IModel.dictionaryId, \"TestSpatialCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n this._iModel.saveChanges(\"Added test category\");\r\n }\r\n\r\n private async addTestElements(): Promise<void> {\r\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\r\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\r\n this._iModel.saveChanges(\"Added test elements\");\r\n }\r\n\r\n /** Create a new iModel, populate it, push the changes and returns the opened db.\r\n * Uses the iTwinId from HubMock.\r\n */\r\n public async createTestIModel(): Promise<BriefcaseDb> {\r\n this.iTwinId = HubMock.iTwinId;\r\n\r\n // Re-create iModel on iModelHub\r\n this.iModelId = await HubWrappers.recreateIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelName: this._iModelName, noLocks: true });\r\n\r\n this._iModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\r\n this._iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n // Populate sample data\r\n await this.addTestModel();\r\n await this.addTestCategory();\r\n await this.addTestElements();\r\n\r\n // Push changes to the hub\r\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Setup test model\" });\r\n return this._iModel;\r\n }\r\n\r\n public async pushTestChangeSet() {\r\n if (!this._iModel)\r\n throw new Error(\"Must first call createTestIModel\");\r\n await this.addTestElements();\r\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Added test elements\" });\r\n }\r\n\r\n public async deleteTestIModel(): Promise<void> {\r\n if (!this._iModel)\r\n throw new Error(\"Must first call createTestIModel\");\r\n await HubWrappers.closeAndDeleteBriefcaseDb(this._accessToken, this._iModel);\r\n await HubMock.deleteIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken, GuidString } from \"@itwin/core-bentley\";\nimport { ColorDef, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { BriefcaseDb, ChannelControl, SpatialCategory } from \"../core-backend\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\n\n/** Test utility to push an iModel and ChangeSets */\nexport class TestChangeSetUtility {\n private readonly _iModelName: string;\n\n public iTwinId!: GuidString;\n public iModelId!: GuidString;\n private _iModel!: BriefcaseDb;\n private _accessToken: AccessToken;\n\n private _modelId!: string;\n private _categoryId!: string;\n\n constructor(accessToken: AccessToken, iModelName: string) {\n this._accessToken = accessToken;\n this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)\n }\n\n private async addTestModel(): Promise<void> {\n [, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(this._iModel, IModelTestUtils.getUniqueModelCode(this._iModel, \"TestPhysicalModel\"), true);\n this._iModel.saveChanges(\"Added test model\");\n }\n\n private async addTestCategory(): Promise<void> {\n this._categoryId = SpatialCategory.insert(this._iModel, IModel.dictionaryId, \"TestSpatialCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n this._iModel.saveChanges(\"Added test category\");\n }\n\n private async addTestElements(): Promise<void> {\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\n this._iModel.elements.insertElement(IModelTestUtils.createPhysicalObject(this._iModel, this._modelId, this._categoryId).toJSON());\n this._iModel.saveChanges(\"Added test elements\");\n }\n\n /** Create a new iModel, populate it, push the changes and returns the opened db.\n * Uses the iTwinId from HubMock.\n */\n public async createTestIModel(): Promise<BriefcaseDb> {\n this.iTwinId = HubMock.iTwinId;\n\n // Re-create iModel on iModelHub\n this.iModelId = await HubWrappers.recreateIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelName: this._iModelName, noLocks: true });\n\n this._iModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n this._iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n // Populate sample data\n await this.addTestModel();\n await this.addTestCategory();\n await this.addTestElements();\n\n // Push changes to the hub\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Setup test model\" });\n return this._iModel;\n }\n\n public async pushTestChangeSet() {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await this.addTestElements();\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Added test elements\" });\n }\n\n public async deleteTestIModel(): Promise<void> {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await HubWrappers.closeAndDeleteBriefcaseDb(this._accessToken, this._iModel);\n await HubMock.deleteIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as path from \"path\";\r\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\r\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\r\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\r\nimport { IModelNative } from \"../internal/NativePlatform\";\r\n\r\n/** Class for simple test timing */\r\nexport class Timer {\r\n private _label: string;\r\n private _start: Date;\r\n constructor(label: string) {\r\n this._label = `\\t${label}`;\r\n this._start = new Date();\r\n }\r\n\r\n public end() {\r\n const stop = new Date();\r\n const elapsed = stop.getTime() - this._start.getTime();\r\n // eslint-disable-next-line no-console\r\n console.log(`${this._label}: ${elapsed}ms`);\r\n }\r\n}\r\n\r\n/**\r\n * Disables native code assertions from firing. This can be used by tests that intentionally\r\n * test failing operations. If those failing operations raise assertions in native code, the test\r\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\r\n * this class.\r\n */\r\nexport class DisableNativeAssertions implements Disposable {\r\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\r\n\r\n constructor() {\r\n this._native = new IModelNative.platform.DisableNativeAssertions();\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this._native)\r\n return;\r\n\r\n this._native.dispose();\r\n this._native = undefined;\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose(): void {\r\n this[Symbol.dispose]();\r\n }\r\n}\r\n\r\nexport class TestUtils {\r\n public static getCacheDir(fallback: string | undefined = undefined) {\r\n if (ProcessDetector.isMobileAppBackend) {\r\n return undefined; // Let the native side handle the cache.\r\n }\r\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\r\n }\r\n\r\n /** Handles the startup of IModelHost.\r\n * The provided config is used and will override any of the default values used in this method.\r\n *\r\n * The default includes:\r\n * - cacheDir = path.join(__dirname, \".cache\")\r\n * - allowSharedChannel = false;\r\n */\r\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\r\n const cfg = config ?? {};\r\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\r\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\r\n await IModelHost.startup(cfg);\r\n }\r\n\r\n public static async shutdownBackend(): Promise<void> {\r\n return IModelHost.shutdown();\r\n }\r\n\r\n public static setupLogging() {\r\n Logger.initializeToConsole();\r\n Logger.setLevelDefault(LogLevel.Error);\r\n }\r\n\r\n private static initDebugLogLevels(reset?: boolean) {\r\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\r\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\r\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\r\n }\r\n\r\n // Setup typical programmatic log level overrides here\r\n // Convenience method used to debug specific tests/fixtures\r\n public static setupDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(false);\r\n }\r\n\r\n public static resetDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(true);\r\n }\r\n}\r\n\r\n// The very first \"before\" run to initially setup the logging and initial backend.\r\nbefore(async () => {\r\n TestUtils.setupLogging();\r\n await TestUtils.startBackend();\r\n});\r\n\r\nafter(async () => {\r\n await TestUtils.shutdownBackend();\r\n});\r\n\r\n"]}
1
+ {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as path from \"path\";\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\nimport { IModelNative } from \"../internal/NativePlatform\";\n\n/** Class for simple test timing */\nexport class Timer {\n private _label: string;\n private _start: Date;\n constructor(label: string) {\n this._label = `\\t${label}`;\n this._start = new Date();\n }\n\n public end() {\n const stop = new Date();\n const elapsed = stop.getTime() - this._start.getTime();\n // eslint-disable-next-line no-console\n console.log(`${this._label}: ${elapsed}ms`);\n }\n}\n\n/**\n * Disables native code assertions from firing. This can be used by tests that intentionally\n * test failing operations. If those failing operations raise assertions in native code, the test\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\n * this class.\n */\nexport class DisableNativeAssertions implements Disposable {\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\n\n constructor() {\n this._native = new IModelNative.platform.DisableNativeAssertions();\n }\n\n public [Symbol.dispose](): void {\n if (!this._native)\n return;\n\n this._native.dispose();\n this._native = undefined;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\nexport class TestUtils {\n public static getCacheDir(fallback: string | undefined = undefined) {\n if (ProcessDetector.isMobileAppBackend) {\n return undefined; // Let the native side handle the cache.\n }\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\n }\n\n /** Handles the startup of IModelHost.\n * The provided config is used and will override any of the default values used in this method.\n *\n * The default includes:\n * - cacheDir = path.join(__dirname, \".cache\")\n * - allowSharedChannel = false;\n */\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\n const cfg = config ?? {};\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\n await IModelHost.startup(cfg);\n }\n\n public static async shutdownBackend(): Promise<void> {\n return IModelHost.shutdown();\n }\n\n public static setupLogging() {\n Logger.initializeToConsole();\n Logger.setLevelDefault(LogLevel.Error);\n }\n\n private static initDebugLogLevels(reset?: boolean) {\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\n }\n\n // Setup typical programmatic log level overrides here\n // Convenience method used to debug specific tests/fixtures\n public static setupDebugLogLevels() {\n TestUtils.initDebugLogLevels(false);\n }\n\n public static resetDebugLogLevels() {\n TestUtils.initDebugLogLevels(true);\n }\n}\n\n// The very first \"before\" run to initially setup the logging and initial backend.\nbefore(async () => {\n TestUtils.setupLogging();\n await TestUtils.startBackend();\n});\n\nafter(async () => {\n await TestUtils.shutdownBackend();\n});\n\n"]}