@itwin/core-backend 5.8.0-dev.18 → 5.8.0-dev.19

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 (415) 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/ECSqlRowExecutor.js.map +1 -1
  27. package/lib/cjs/ECSqlStatement.js.map +1 -1
  28. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  29. package/lib/cjs/Element.js.map +1 -1
  30. package/lib/cjs/ElementAspect.js.map +1 -1
  31. package/lib/cjs/ElementGraphics.js.map +1 -1
  32. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  33. package/lib/cjs/Entity.js.map +1 -1
  34. package/lib/cjs/EntityReferences.js.map +1 -1
  35. package/lib/cjs/ExportGraphics.js.map +1 -1
  36. package/lib/cjs/ExternalSource.js.map +1 -1
  37. package/lib/cjs/FontFile.js.map +1 -1
  38. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  39. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  40. package/lib/cjs/GeometrySummary.js +47 -47
  41. package/lib/cjs/GeometrySummary.js.map +1 -1
  42. package/lib/cjs/IModelDb.js +8 -8
  43. package/lib/cjs/IModelDb.js.map +1 -1
  44. package/lib/cjs/IModelDbFonts.js.map +1 -1
  45. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  46. package/lib/cjs/IModelHost.js.map +1 -1
  47. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  48. package/lib/cjs/IModelJsFs.js.map +1 -1
  49. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  50. package/lib/cjs/IpcHost.d.ts.map +1 -1
  51. package/lib/cjs/IpcHost.js +28 -4
  52. package/lib/cjs/IpcHost.js.map +1 -1
  53. package/lib/cjs/LineStyle.js.map +1 -1
  54. package/lib/cjs/LocalHub.js +1 -1
  55. package/lib/cjs/LocalHub.js.map +1 -1
  56. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  57. package/lib/cjs/LockControl.js.map +1 -1
  58. package/lib/cjs/Material.js.map +1 -1
  59. package/lib/cjs/Model.js.map +1 -1
  60. package/lib/cjs/NativeAppStorage.js.map +1 -1
  61. package/lib/cjs/NativeHost.js.map +1 -1
  62. package/lib/cjs/NavigationRelationship.js.map +1 -1
  63. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  64. package/lib/cjs/PropertyStore.js.map +1 -1
  65. package/lib/cjs/Relationship.js.map +1 -1
  66. package/lib/cjs/RpcBackend.js.map +1 -1
  67. package/lib/cjs/SQLiteDb.js.map +1 -1
  68. package/lib/cjs/Schema.js.map +1 -1
  69. package/lib/cjs/SchemaSync.js.map +1 -1
  70. package/lib/cjs/SchemaUtils.js.map +1 -1
  71. package/lib/cjs/SheetIndex.js.map +1 -1
  72. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  73. package/lib/cjs/SqliteStatement.js.map +1 -1
  74. package/lib/cjs/StashManager.js.map +1 -1
  75. package/lib/cjs/Texture.js.map +1 -1
  76. package/lib/cjs/TileStorage.js.map +1 -1
  77. package/lib/cjs/TxnManager.js.map +1 -1
  78. package/lib/cjs/ViewDefinition.js.map +1 -1
  79. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  80. package/lib/cjs/ViewStore.js.map +1 -1
  81. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  82. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  83. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  84. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  85. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  86. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  87. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  88. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  89. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  90. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  91. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  92. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  93. package/lib/cjs/core-backend.js.map +1 -1
  94. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  95. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  96. package/lib/cjs/domains/GenericElements.js.map +1 -1
  97. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  98. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  99. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  100. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  101. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  102. package/lib/cjs/internal/HubMock.js.map +1 -1
  103. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  104. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  105. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  106. package/lib/cjs/internal/NoLocks.js.map +1 -1
  107. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  108. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  109. package/lib/cjs/internal/Symbols.js.map +1 -1
  110. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  111. package/lib/cjs/internal/cross-package.js.map +1 -1
  112. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +1 -1
  113. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  114. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  115. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  116. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +1 -1
  117. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  118. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  119. package/lib/cjs/rpc/multipart.js.map +1 -1
  120. package/lib/cjs/rpc/tracing.js.map +1 -1
  121. package/lib/cjs/rpc/web/logging.js.map +1 -1
  122. package/lib/cjs/rpc/web/request.js.map +1 -1
  123. package/lib/cjs/rpc/web/response.js.map +1 -1
  124. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  125. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  126. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  127. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  128. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  129. package/lib/cjs/workspace/Settings.js.map +1 -1
  130. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  131. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  132. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  133. package/lib/cjs/workspace/Workspace.js.map +1 -1
  134. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  135. package/lib/esm/BackendHubAccess.js.map +1 -1
  136. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  137. package/lib/esm/BisCoreSchema.js.map +1 -1
  138. package/lib/esm/BlobContainerService.js.map +1 -1
  139. package/lib/esm/BriefcaseManager.js.map +1 -1
  140. package/lib/esm/CatalogDb.js.map +1 -1
  141. package/lib/esm/Category.js.map +1 -1
  142. package/lib/esm/ChangeSummaryManager.js +2 -2
  143. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  144. package/lib/esm/ChangedElementsDb.js.map +1 -1
  145. package/lib/esm/ChangesetECAdaptor.js +248 -248
  146. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  147. package/lib/esm/ChannelControl.js.map +1 -1
  148. package/lib/esm/CheckpointManager.js.map +1 -1
  149. package/lib/esm/ClassRegistry.js +5 -5
  150. package/lib/esm/ClassRegistry.js.map +1 -1
  151. package/lib/esm/CloudSqlite.js.map +1 -1
  152. package/lib/esm/CodeService.js.map +1 -1
  153. package/lib/esm/CodeSpecs.js.map +1 -1
  154. package/lib/esm/ConcurrentQuery.js.map +1 -1
  155. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  156. package/lib/esm/DevTools.js.map +1 -1
  157. package/lib/esm/DisplayStyle.js.map +1 -1
  158. package/lib/esm/ECDb.js.map +1 -1
  159. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  160. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  161. package/lib/esm/ECSqlStatement.js.map +1 -1
  162. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  163. package/lib/esm/Element.js.map +1 -1
  164. package/lib/esm/ElementAspect.js.map +1 -1
  165. package/lib/esm/ElementGraphics.js.map +1 -1
  166. package/lib/esm/ElementTreeWalker.js.map +1 -1
  167. package/lib/esm/Entity.js.map +1 -1
  168. package/lib/esm/EntityReferences.js.map +1 -1
  169. package/lib/esm/ExportGraphics.js.map +1 -1
  170. package/lib/esm/ExternalSource.js.map +1 -1
  171. package/lib/esm/FontFile.js.map +1 -1
  172. package/lib/esm/GeoCoordConfig.js.map +1 -1
  173. package/lib/esm/GeographicCRSServices.js.map +1 -1
  174. package/lib/esm/GeometrySummary.js +47 -47
  175. package/lib/esm/GeometrySummary.js.map +1 -1
  176. package/lib/esm/IModelDb.js +8 -8
  177. package/lib/esm/IModelDb.js.map +1 -1
  178. package/lib/esm/IModelDbFonts.js.map +1 -1
  179. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  180. package/lib/esm/IModelHost.js.map +1 -1
  181. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  182. package/lib/esm/IModelJsFs.js.map +1 -1
  183. package/lib/esm/ImageSourceConversion.js.map +1 -1
  184. package/lib/esm/IpcHost.d.ts.map +1 -1
  185. package/lib/esm/IpcHost.js +28 -4
  186. package/lib/esm/IpcHost.js.map +1 -1
  187. package/lib/esm/LineStyle.js.map +1 -1
  188. package/lib/esm/LocalHub.js +1 -1
  189. package/lib/esm/LocalHub.js.map +1 -1
  190. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  191. package/lib/esm/LockControl.js.map +1 -1
  192. package/lib/esm/Material.js.map +1 -1
  193. package/lib/esm/Model.js.map +1 -1
  194. package/lib/esm/NativeAppStorage.js.map +1 -1
  195. package/lib/esm/NativeHost.js.map +1 -1
  196. package/lib/esm/NavigationRelationship.js.map +1 -1
  197. package/lib/esm/PromiseMemoizer.js.map +1 -1
  198. package/lib/esm/PropertyStore.js.map +1 -1
  199. package/lib/esm/Relationship.js.map +1 -1
  200. package/lib/esm/RpcBackend.js.map +1 -1
  201. package/lib/esm/SQLiteDb.js.map +1 -1
  202. package/lib/esm/Schema.js.map +1 -1
  203. package/lib/esm/SchemaSync.js.map +1 -1
  204. package/lib/esm/SchemaUtils.js.map +1 -1
  205. package/lib/esm/SheetIndex.js.map +1 -1
  206. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  207. package/lib/esm/SqliteStatement.js.map +1 -1
  208. package/lib/esm/StashManager.js.map +1 -1
  209. package/lib/esm/Texture.js.map +1 -1
  210. package/lib/esm/TileStorage.js.map +1 -1
  211. package/lib/esm/TxnManager.js.map +1 -1
  212. package/lib/esm/ViewDefinition.js.map +1 -1
  213. package/lib/esm/ViewStateHydrator.js.map +1 -1
  214. package/lib/esm/ViewStore.js.map +1 -1
  215. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  216. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  217. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  218. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  219. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  220. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  221. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  222. package/lib/esm/core-backend.js.map +1 -1
  223. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  224. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  225. package/lib/esm/domains/GenericElements.js.map +1 -1
  226. package/lib/esm/domains/GenericSchema.js.map +1 -1
  227. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  228. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  229. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  230. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  231. package/lib/esm/internal/HubMock.js.map +1 -1
  232. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  233. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  234. package/lib/esm/internal/NativePlatform.js.map +1 -1
  235. package/lib/esm/internal/NoLocks.js.map +1 -1
  236. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  237. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  238. package/lib/esm/internal/Symbols.js.map +1 -1
  239. package/lib/esm/internal/annotations/fields.js.map +1 -1
  240. package/lib/esm/internal/cross-package.js.map +1 -1
  241. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +1 -1
  242. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  243. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  244. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  245. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +1 -1
  246. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  247. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  248. package/lib/esm/rpc/multipart.js.map +1 -1
  249. package/lib/esm/rpc/tracing.js.map +1 -1
  250. package/lib/esm/rpc/web/logging.js.map +1 -1
  251. package/lib/esm/rpc/web/request.js.map +1 -1
  252. package/lib/esm/rpc/web/response.js.map +1 -1
  253. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  254. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  255. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  256. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  257. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  258. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  259. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  260. package/lib/esm/test/AttachDb.test.js +11 -11
  261. package/lib/esm/test/AttachDb.test.js.map +1 -1
  262. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  263. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  264. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  265. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  266. package/lib/esm/test/IModelHost.test.js.map +1 -1
  267. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  268. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  269. package/lib/esm/test/IpcHost.test.js +64 -13
  270. package/lib/esm/test/IpcHost.test.js.map +1 -1
  271. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  272. package/lib/esm/test/PrintElementTree.js.map +1 -1
  273. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  274. package/lib/esm/test/RevisionUtility.js.map +1 -1
  275. package/lib/esm/test/SchemaUtils.test.js +25 -25
  276. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  277. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  278. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  279. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  280. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  281. package/lib/esm/test/TestUtils.js.map +1 -1
  282. package/lib/esm/test/annotations/Fields.test.js +53 -53
  283. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  284. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  285. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  286. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  287. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  288. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  289. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  290. package/lib/esm/test/categories/Category.test.js.map +1 -1
  291. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  292. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  293. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  294. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  295. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  296. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  297. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  298. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  299. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  300. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  301. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  302. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  303. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  304. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  305. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  306. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  307. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  308. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  309. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  310. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  311. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  312. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  313. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  314. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  315. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  316. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  317. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  318. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  319. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  320. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  321. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  322. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  323. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  324. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  325. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  326. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  327. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  328. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  329. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  330. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  331. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  332. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  333. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  334. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  335. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  336. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  337. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  338. package/lib/esm/test/hubaccess/SemanticRebase.test.js +145 -145
  339. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  340. package/lib/esm/test/imageData.js.map +1 -1
  341. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  342. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  343. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  344. package/lib/esm/test/imodel/IModel.test.js +44 -44
  345. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  346. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  347. package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
  348. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  349. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  350. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  351. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  352. package/lib/esm/test/index.js.map +1 -1
  353. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  354. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  355. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  356. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  357. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  358. package/lib/esm/test/rpc/response.test.js.map +1 -1
  359. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  360. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  361. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  362. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  363. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  364. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  365. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  366. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  367. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  368. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  369. package/lib/esm/test/standalone/ChangesetReader.test.js +135 -135
  370. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  371. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  372. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  373. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  374. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  375. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  376. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  377. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  378. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  379. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  380. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  381. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  382. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  383. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  384. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  385. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  386. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  387. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  388. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  389. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  390. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  391. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  392. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  393. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  394. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  395. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  396. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  397. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  398. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  399. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  400. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  401. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  402. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  403. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  404. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  405. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  406. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  407. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  408. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  409. package/lib/esm/workspace/Settings.js.map +1 -1
  410. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  411. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  412. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  413. package/lib/esm/workspace/Workspace.js.map +1 -1
  414. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  415. package/package.json +13 -13
@@ -1 +1 @@
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
+ {"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,11 +1,31 @@
1
1
  import * as sinon from "sinon";
2
2
  import { expect } from "chai";
3
3
  import { IpcHandler, IpcHost } from "../IpcHost";
4
+ class OuterError extends Error {
5
+ originalError;
6
+ context;
7
+ errors;
8
+ constructor(originalError) {
9
+ super("outer");
10
+ this.originalError = originalError;
11
+ this.context = { cause: originalError };
12
+ this.errors = [new Error("array-child-1"), new Error("array-child-2")];
13
+ }
14
+ }
4
15
  class MockIpcHandler extends IpcHandler {
5
16
  get channelName() { return "mock-channel"; }
6
17
  mockMethod() {
7
18
  return "mock-value";
8
19
  }
20
+ throwNestedError() {
21
+ const inner = new Error("inner-message");
22
+ throw new OuterError(inner);
23
+ }
24
+ throwCircularError() {
25
+ const err = new Error("circular");
26
+ err.cause = err; // circular reference
27
+ throw err;
28
+ }
9
29
  #privateFunction() { }
10
30
  }
11
31
  describe("IpcHost", () => {
@@ -20,36 +40,67 @@ describe("IpcHost", () => {
20
40
  await IpcHost.startup({ ipcHost: { socket } });
21
41
  });
22
42
  describe("IpcHandler", () => {
23
- it("should call public methods", async () => {
43
+ let handler;
44
+ beforeEach(() => {
24
45
  MockIpcHandler.register();
25
46
  const handleCall = socket.handle.getCalls().find((call) => call.args[0] === "itwin.mock-channel");
26
47
  expect(handleCall).to.not.be.undefined;
27
- const handler = handleCall.args[1];
28
- expect(typeof handler).to.equal("function");
48
+ handler = handleCall.args[1];
49
+ });
50
+ it("should call public methods", async () => {
29
51
  const ipcReturn = await handler(undefined, "mockMethod");
30
52
  expect(ipcReturn.result).to.equal("mock-value");
31
53
  expect(ipcReturn.error).to.be.undefined;
32
54
  });
33
55
  it("should not call private methods", async () => {
34
- MockIpcHandler.register();
35
- const handleCall = socket.handle.getCalls().find((call) => call.args[0] === "itwin.mock-channel");
36
- expect(handleCall).to.not.be.undefined;
37
- const handler = handleCall.args[1];
38
- expect(typeof handler).to.equal("function");
39
56
  const ipcReturn = await handler(undefined, "#privateFunction");
40
57
  expect(ipcReturn.result).to.be.undefined;
41
58
  expect(ipcReturn.error).to.not.be.undefined;
42
59
  });
43
60
  it("should not call methods inherited from Object", async () => {
44
- MockIpcHandler.register();
45
- const handleCall = socket.handle.getCalls().find((call) => call.args[0] === "itwin.mock-channel");
46
- expect(handleCall).to.not.be.undefined;
47
- const handler = handleCall.args[1];
48
- expect(typeof handler).to.equal("function");
49
61
  const ipcReturn = await handler(undefined, "toString");
50
62
  expect(ipcReturn.result).to.be.undefined;
51
63
  expect(ipcReturn.error).to.not.be.undefined;
52
64
  });
65
+ it("should serialize nested Error properties preserving message and stack", async () => {
66
+ const ipcReturn = await handler(undefined, "throwNestedError");
67
+ const error = ipcReturn.error;
68
+ // Top-level error
69
+ expect(error.message).to.equal("outer");
70
+ expect(error.stack).to.be.a("string");
71
+ // Direct Error property
72
+ expect(error.originalError.message).to.equal("inner-message");
73
+ expect(error.originalError.stack).to.be.a("string");
74
+ // Error nested inside a plain-object property
75
+ expect(error.context.cause.message).to.equal("inner-message");
76
+ expect(error.context.cause.stack).to.be.a("string");
77
+ // Array of Errors stays an array
78
+ expect(Array.isArray(error.errors)).to.be.true;
79
+ expect(error.errors[0].message).to.equal("array-child-1");
80
+ expect(error.errors[1].message).to.equal("array-child-2");
81
+ });
82
+ it("should omit stack on nested Errors when IpcHost.noStack is set", async () => {
83
+ const originalNoStack = IpcHost.noStack;
84
+ IpcHost.noStack = true;
85
+ try {
86
+ const ipcReturn = await handler(undefined, "throwNestedError");
87
+ const error = ipcReturn.error;
88
+ expect(error.stack).to.be.undefined;
89
+ expect(error.originalError.stack).to.be.undefined;
90
+ expect(error.context.cause.stack).to.be.undefined;
91
+ expect(error.errors[0].stack).to.be.undefined;
92
+ expect(error.errors[1].stack).to.be.undefined;
93
+ }
94
+ finally {
95
+ IpcHost.noStack = originalNoStack;
96
+ }
97
+ });
98
+ it("should not infinitely recurse on circular Error references", async () => {
99
+ const ipcReturn = await handler(undefined, "throwCircularError");
100
+ const error = ipcReturn.error;
101
+ expect(error.message).to.equal("circular");
102
+ expect(error.cause).to.be.undefined;
103
+ });
53
104
  });
54
105
  });
55
106
  //# sourceMappingURL=IpcHost.test.js.map
@@ -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\";\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
+ {"version":3,"file":"IpcHost.test.js","sourceRoot":"","sources":["../../../src/test/IpcHost.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQjD,MAAM,UAAW,SAAQ,KAAK;IAGA;IAFZ,OAAO,CAAmB;IAC1B,MAAM,CAAU;IAChC,YAA4B,aAAoB;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,kBAAa,GAAb,aAAa,CAAO;QAE9C,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AAED,MAAM,cAAe,SAAQ,UAAU;IACrC,IAAoB,WAAW,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IAErD,UAAU;QACf,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACrB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEM,kBAAkB;QACvB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,CAAQ,CAAC;QACzC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,qBAAqB;QACtC,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,gBAAgB,KAAW,CAAC;CAC7B;AAED,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAI,MAAoD,CAAC;IAEzD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG;YACP,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YAClB,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE;YACzB,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE;YAC5B,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;SACrB,CAAC;QAEF,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,OAAqD,CAAC;QAE1D,UAAU,CAAC,GAAG,EAAE;YACd,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAE,CAAC;YACnG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACvC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACzD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAY,CAAC;YACrC,kBAAkB;YAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACtC,wBAAwB;YACxB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpD,8CAA8C;YAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpD,iCAAiC;YACjC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YACxC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAY,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;gBAClD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;gBAClD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAChD,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,OAAO,GAAG,eAAe,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAY,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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 throwNestedError: () => never;\r\n throwCircularError: () => never;\r\n}\r\n\r\nclass OuterError extends Error {\r\n public readonly context: { cause: Error };\r\n public readonly errors: Error[];\r\n constructor(public readonly originalError: Error) {\r\n super(\"outer\");\r\n this.context = { cause: originalError };\r\n this.errors = [new Error(\"array-child-1\"), new Error(\"array-child-2\")];\r\n }\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 public throwNestedError(): never {\r\n const inner = new Error(\"inner-message\");\r\n throw new OuterError(inner);\r\n }\r\n\r\n public throwCircularError(): never {\r\n const err = new Error(\"circular\") as any;\r\n err.cause = err; // circular reference\r\n throw err;\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 let handler: (...args: any[]) => Promise<IpcInvokeReturn>;\r\n\r\n beforeEach(() => {\r\n MockIpcHandler.register();\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 handler = handleCall.args[1];\r\n });\r\n\r\n it(\"should call public methods\", async () => {\r\n const ipcReturn = await handler(undefined, \"mockMethod\");\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 const ipcReturn = await handler(undefined, \"#privateFunction\");\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 const ipcReturn = await handler(undefined, \"toString\");\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 serialize nested Error properties preserving message and stack\", async () => {\r\n const ipcReturn = await handler(undefined, \"throwNestedError\");\r\n const error = ipcReturn.error as any;\r\n // Top-level error\r\n expect(error.message).to.equal(\"outer\");\r\n expect(error.stack).to.be.a(\"string\");\r\n // Direct Error property\r\n expect(error.originalError.message).to.equal(\"inner-message\");\r\n expect(error.originalError.stack).to.be.a(\"string\");\r\n // Error nested inside a plain-object property\r\n expect(error.context.cause.message).to.equal(\"inner-message\");\r\n expect(error.context.cause.stack).to.be.a(\"string\");\r\n // Array of Errors stays an array\r\n expect(Array.isArray(error.errors)).to.be.true;\r\n expect(error.errors[0].message).to.equal(\"array-child-1\");\r\n expect(error.errors[1].message).to.equal(\"array-child-2\");\r\n });\r\n\r\n it(\"should omit stack on nested Errors when IpcHost.noStack is set\", async () => {\r\n const originalNoStack = IpcHost.noStack;\r\n IpcHost.noStack = true;\r\n try {\r\n const ipcReturn = await handler(undefined, \"throwNestedError\");\r\n const error = ipcReturn.error as any;\r\n expect(error.stack).to.be.undefined;\r\n expect(error.originalError.stack).to.be.undefined;\r\n expect(error.context.cause.stack).to.be.undefined;\r\n expect(error.errors[0].stack).to.be.undefined;\r\n expect(error.errors[1].stack).to.be.undefined;\r\n } finally {\r\n IpcHost.noStack = originalNoStack;\r\n }\r\n });\r\n\r\n it(\"should not infinitely recurse on circular Error references\", async () => {\r\n const ipcReturn = await handler(undefined, \"throwCircularError\");\r\n const error = ipcReturn.error as any;\r\n expect(error.message).to.equal(\"circular\");\r\n expect(error.cause).to.be.undefined;\r\n });\r\n });\r\n});\r\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":["/*---------------------------------------------------------------------------------------------\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
+ {"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 +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":["/*---------------------------------------------------------------------------------------------\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
+ {"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 +1 @@
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
+ {"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 +1 @@
1
- {"version":3,"file":"RevisionUtility.js","sourceRoot":"","sources":["../../../src/test/RevisionUtility.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 { 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"]}
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"]}
@@ -9,14 +9,14 @@ import { ECDbTestHelper } from "./ecdb/ECDbTestHelper";
9
9
  import { DbResult } from "@itwin/core-bentley";
10
10
  describe("convertEC2Schemas", () => {
11
11
  it("verify namespace", () => {
12
- const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
13
- <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
14
- <ECSchemaReference name="RefSchema" version="01.00" prefix="rs" />
15
- <ECClass typeName="TestEntityClass" isDomainClass="true" />
12
+ const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
13
+ <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
14
+ <ECSchemaReference name="RefSchema" version="01.00" prefix="rs" />
15
+ <ECClass typeName="TestEntityClass" isDomainClass="true" />
16
16
  </ECSchema>`;
17
- const ec2RefSchema = `<?xml version="1.0" encoding="UTF-8"?>
18
- <ECSchema schemaName="RefSchema" nameSpacePrefix="rs" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
19
- <ECClass typeName="TestStructClass" isStruct="true" />
17
+ const ec2RefSchema = `<?xml version="1.0" encoding="UTF-8"?>
18
+ <ECSchema schemaName="RefSchema" nameSpacePrefix="rs" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
19
+ <ECClass typeName="TestStructClass" isStruct="true" />
20
20
  </ECSchema>`;
21
21
  const ec3Schemas = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);
22
22
  assert.equal(ec3Schemas.length, 2);
@@ -27,24 +27,24 @@ describe("convertEC2Schemas", () => {
27
27
  assert.isTrue(ec3RefSchema.includes("http://www.bentley.com/schemas/Bentley.ECXML.3.2"));
28
28
  });
29
29
  it("rename reserved words", async () => {
30
- const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
31
- <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
32
- <ECClass typeName="TestEntityClass" isDomainClass="true">
33
- <ECProperty propertyName="Id" typeName="string" />
34
- <ECProperty propertyName="ECInstanceId" typeName="string" />
35
- <ECProperty propertyName="ECClassId" typeName="string" />
36
- <ECProperty propertyName="SourceECInstanceId" typeName="string" />
37
- <ECProperty propertyName="SourceId" typeName="string" />
38
- <ECProperty propertyName="SourceECClassId" typeName="string" />
39
- <ECProperty propertyName="TargetECInstanceId" typeName="string" />
40
- <ECProperty propertyName="TargetId" typeName="string" />
41
- <ECProperty propertyName="TargetECClassId" typeName="string" />
42
- </ECClass>
43
- <ECClass typeName="TestStructClass" isStruct="true">
44
- <ECProperty propertyName="Id" typeName="string" />
45
- <ECProperty propertyName="ECInstanceId" typeName="string" />
46
- <ECProperty propertyName="ECClassId" typeName="string" />
47
- </ECClass>
30
+ const ec2SchemaXml = `<?xml version="1.0" encoding="UTF-8"?>
31
+ <ECSchema schemaName="TestSchema" version="1.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.2.0">
32
+ <ECClass typeName="TestEntityClass" isDomainClass="true">
33
+ <ECProperty propertyName="Id" typeName="string" />
34
+ <ECProperty propertyName="ECInstanceId" typeName="string" />
35
+ <ECProperty propertyName="ECClassId" typeName="string" />
36
+ <ECProperty propertyName="SourceECInstanceId" typeName="string" />
37
+ <ECProperty propertyName="SourceId" typeName="string" />
38
+ <ECProperty propertyName="SourceECClassId" typeName="string" />
39
+ <ECProperty propertyName="TargetECInstanceId" typeName="string" />
40
+ <ECProperty propertyName="TargetId" typeName="string" />
41
+ <ECProperty propertyName="TargetECClassId" typeName="string" />
42
+ </ECClass>
43
+ <ECClass typeName="TestStructClass" isStruct="true">
44
+ <ECProperty propertyName="Id" typeName="string" />
45
+ <ECProperty propertyName="ECInstanceId" typeName="string" />
46
+ <ECProperty propertyName="ECClassId" typeName="string" />
47
+ </ECClass>
48
48
  </ECSchema>`;
49
49
  const ec3Schemas = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);
50
50
  assert.equal(ec3Schemas.length, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaUtils.test.js","sourceRoot":"","sources":["../../../src/test/SchemaUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert } from \"chai\";\nimport { convertEC2SchemasToEC3Schemas, ECDb, ECSqlStatement, upgradeCustomAttributesToEC3 } from \"../core-backend\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ecdb/ECDbTestHelper\";\nimport { DbResult } from \"@itwin/core-bentley\";\n\ndescribe(\"convertEC2Schemas\", () => {\n it(\"verify namespace\", () => {\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECSchemaReference name=\"RefSchema\" version=\"01.00\" prefix=\"rs\" />\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\" />\n </ECSchema>`;\n\n const ec2RefSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"RefSchema\" nameSpacePrefix=\"rs\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\" />\n </ECSchema>`;\n\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);\n assert.equal(ec3Schemas.length, 2);\n // converted EC3 schemas are in the same order as of input schemas\n const ec3SchemaXml = ec3Schemas[0];\n const ec3RefSchema = ec3Schemas[1];\n\n assert.isTrue(ec3SchemaXml.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\n assert.isTrue(ec3RefSchema.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\n });\n\n it(\"rename reserved words\", async () => {\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\">\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceId\" typeName=\"string\" />\n <ECProperty propertyName=\"SourceECClassId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetId\" typeName=\"string\" />\n <ECProperty propertyName=\"TargetECClassId\" typeName=\"string\" />\n </ECClass>\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\">\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\n </ECClass>\n </ECSchema>`;\n\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);\n assert.equal(ec3Schemas.length, 1);\n const schemasWithUpdatedCA: string[] = upgradeCustomAttributesToEC3(ec3Schemas);\n assert.equal(schemasWithUpdatedCA.length, 1);\n\n const outDir = KnownTestLocations.outputDir;\n const db: ECDb = ECDbTestHelper.createECDb(outDir, \"RenameReservedWords.ecdb\", schemasWithUpdatedCA[0]);\n assert.isTrue(db !== undefined);\n assert.isTrue(db.isOpen);\n\n const propNamesInEntityClass = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let stmt: ECSqlStatement = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestEntityClass' ORDER BY p.Ordinal\");\n let rowCount = 0;\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rowCount++;\n const row = stmt.getRow();\n propNamesInEntityClass.push(row.name);\n }\n stmt[Symbol.dispose]();\n assert.equal(rowCount, 9);\n\n assert.isFalse(propNamesInEntityClass.includes(\"Id\")); // The Id property is a reserved keyword and should have been renamed\n assert.isFalse(propNamesInEntityClass.includes(\"ECClassId\")); // The ECClassId property is a reserved keyword and should have been renamed\n assert.isFalse(propNamesInEntityClass.includes(\"ECInstanceId\")); // The ECInstanceId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_Id_\")); // The Id property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is a reserved keyword and should have been renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECInstanceId\")); // The SourceECInstanceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceId\")); // The SourceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECClassId\")); // The SourceECClassId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECInstanceId\")); // The TargetECInstanceId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetId\")); // The TargetId property is allowed on Entity classes and should not be renamed\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECClassId\")); // The TargetECClassId property is allowed on Entity classes and should not be renamed\n\n const propNamesInStructClass = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n stmt = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestStructClass' ORDER BY p.Ordinal\");\n rowCount = 0;\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rowCount++;\n const row = stmt.getRow();\n propNamesInStructClass.push(row.name);\n }\n stmt[Symbol.dispose]();\n assert.equal(rowCount, 3);\n\n assert.isTrue(propNamesInStructClass.includes(\"Id\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\n assert.isTrue(propNamesInStructClass.includes(\"ECClassId\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isTrue(propNamesInStructClass.includes(\"ECInstanceId\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_Id_\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\n });\n});\n"]}
1
+ {"version":3,"file":"SchemaUtils.test.js","sourceRoot":"","sources":["../../../src/test/SchemaUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert } from \"chai\";\r\nimport { convertEC2SchemasToEC3Schemas, ECDb, ECSqlStatement, upgradeCustomAttributesToEC3 } from \"../core-backend\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\nimport { ECDbTestHelper } from \"./ecdb/ECDbTestHelper\";\r\nimport { DbResult } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"convertEC2Schemas\", () => {\r\n it(\"verify namespace\", () => {\r\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECSchemaReference name=\"RefSchema\" version=\"01.00\" prefix=\"rs\" />\r\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\" />\r\n </ECSchema>`;\r\n\r\n const ec2RefSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"RefSchema\" nameSpacePrefix=\"rs\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\" />\r\n </ECSchema>`;\r\n\r\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml, ec2RefSchema]);\r\n assert.equal(ec3Schemas.length, 2);\r\n // converted EC3 schemas are in the same order as of input schemas\r\n const ec3SchemaXml = ec3Schemas[0];\r\n const ec3RefSchema = ec3Schemas[1];\r\n\r\n assert.isTrue(ec3SchemaXml.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\r\n assert.isTrue(ec3RefSchema.includes(\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\"));\r\n });\r\n\r\n it(\"rename reserved words\", async () => {\r\n const ec2SchemaXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestSchema\" version=\"1.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.2.0\">\r\n <ECClass typeName=\"TestEntityClass\" isDomainClass=\"true\">\r\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"SourceECClassId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"TargetECClassId\" typeName=\"string\" />\r\n </ECClass>\r\n <ECClass typeName=\"TestStructClass\" isStruct=\"true\">\r\n <ECProperty propertyName=\"Id\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECInstanceId\" typeName=\"string\" />\r\n <ECProperty propertyName=\"ECClassId\" typeName=\"string\" />\r\n </ECClass>\r\n </ECSchema>`;\r\n\r\n const ec3Schemas: string[] = convertEC2SchemasToEC3Schemas([ec2SchemaXml]);\r\n assert.equal(ec3Schemas.length, 1);\r\n const schemasWithUpdatedCA: string[] = upgradeCustomAttributesToEC3(ec3Schemas);\r\n assert.equal(schemasWithUpdatedCA.length, 1);\r\n\r\n const outDir = KnownTestLocations.outputDir;\r\n const db: ECDb = ECDbTestHelper.createECDb(outDir, \"RenameReservedWords.ecdb\", schemasWithUpdatedCA[0]);\r\n assert.isTrue(db !== undefined);\r\n assert.isTrue(db.isOpen);\r\n\r\n const propNamesInEntityClass = [];\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n let stmt: ECSqlStatement = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestEntityClass' ORDER BY p.Ordinal\");\r\n let rowCount = 0;\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n rowCount++;\r\n const row = stmt.getRow();\r\n propNamesInEntityClass.push(row.name);\r\n }\r\n stmt[Symbol.dispose]();\r\n assert.equal(rowCount, 9);\r\n\r\n assert.isFalse(propNamesInEntityClass.includes(\"Id\")); // The Id property is a reserved keyword and should have been renamed\r\n assert.isFalse(propNamesInEntityClass.includes(\"ECClassId\")); // The ECClassId property is a reserved keyword and should have been renamed\r\n assert.isFalse(propNamesInEntityClass.includes(\"ECInstanceId\")); // The ECInstanceId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_Id_\")); // The Id property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is a reserved keyword and should have been renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECInstanceId\")); // The SourceECInstanceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceId\")); // The SourceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"SourceECClassId\")); // The SourceECClassId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECInstanceId\")); // The TargetECInstanceId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetId\")); // The TargetId property is allowed on Entity classes and should not be renamed\r\n assert.isTrue(propNamesInEntityClass.includes(\"TargetECClassId\")); // The TargetECClassId property is allowed on Entity classes and should not be renamed\r\n\r\n const propNamesInStructClass = [];\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n stmt = db.prepareStatement(\"SELECT p.Name FROM meta.ECPropertyDef p JOIN meta.ECClassDef c USING meta.ClassOwnsLocalProperties JOIN meta.ECSchemaDef s USING meta.SchemaOwnsClasses WHERE s.Name='TestSchema' AND c.Name='TestStructClass' ORDER BY p.Ordinal\");\r\n rowCount = 0;\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n rowCount++;\r\n const row = stmt.getRow();\r\n propNamesInStructClass.push(row.name);\r\n }\r\n stmt[Symbol.dispose]();\r\n assert.equal(rowCount, 3);\r\n\r\n assert.isTrue(propNamesInStructClass.includes(\"Id\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isTrue(propNamesInStructClass.includes(\"ECClassId\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isTrue(propNamesInStructClass.includes(\"ECInstanceId\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_Id_\")); // The Id property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECClassId_\")); // The ECClassId property is not a reserved keyword for Struct classes and should not be renamed\r\n assert.isFalse(propNamesInStructClass.includes(\"TestSchema_ECInstanceId_\")); // The ECInstanceId property is not a reserved keyword for Struct classes and should not be renamed\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SequentialLogMatcher.js","sourceRoot":"","sources":["../../../src/test/SequentialLogMatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { LogFunction, Logger, LoggingMetaData, LogLevel } from \"@itwin/core-bentley\";\n\n/**\n * SequentialLogMatcher match log messages in order and remove them from the list. Any test using\n * should check if length come down to zero. If its not then test should fail.\n */\nexport class SequentialLogMatcher extends Logger {\n private _rules: LogMatchRule[] = [];\n private _originalLogError: LogFunction | undefined;\n private _originalLogWarning: LogFunction | undefined;\n private _originalLogInfo: LogFunction | undefined;\n private _originalLogTrace: LogFunction | undefined;\n\n private allow(level: LogLevel, category: string, message: string): boolean {\n if (this._rules.length === 0)\n return true;\n\n const rule = this._rules[0];\n if (rule.test(level, category, message)) {\n this._rules.shift();\n return this._suppressMatchLogMsgs === false;\n }\n return true;\n }\n\n public constructor(private _suppressMatchLogMsgs: boolean = true) {\n super();\n this._originalLogError = Logger._logError;\n this._originalLogWarning = Logger._logWarning;\n this._originalLogInfo = Logger._logInfo;\n this._originalLogTrace = Logger._logTrace;\n\n Logger._logError = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Error, category, message))\n this._originalLogError?.(category, message, metaData);\n };\n\n Logger._logWarning = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Warning, category, message))\n this._originalLogWarning?.(category, message, metaData);\n };\n\n Logger._logInfo = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Info, category, message))\n this._originalLogInfo?.(category, message, metaData);\n };\n\n Logger._logTrace = (category: string, message: string, metaData: LoggingMetaData) => {\n if (this.allow(LogLevel.Trace, category, message))\n this._originalLogTrace?.(category, message, metaData);\n };\n }\n\n public append(): LogMatchRule {\n const newMatch = new LogMatchRule();\n this._rules.push(newMatch);\n return newMatch;\n }\n public finish(): boolean {\n return this.length === 0;\n }\n public finishAndDispose(): boolean {\n const rc = this.finish();\n Logger._logError = this._originalLogError;\n Logger._logWarning = this._originalLogWarning;\n Logger._logInfo = this._originalLogInfo;\n Logger._logTrace = this._originalLogTrace;\n return rc;\n }\n public get length(): number { return this._rules.length; }\n}\n\nexport class LogMatchRule {\n private _level?: LogLevel;\n private _category?: string | RegExp;\n private _message?: string | RegExp;\n private _metaDataCheck?: (data: any) => boolean;\n public test(level: LogLevel, category: string, message: string): boolean {\n if (this._level) {\n if (this._level !== level)\n return false;\n }\n\n if (this._category) {\n if (this._category instanceof RegExp) {\n if (!this._category.test(category))\n return false;\n } else {\n if (this._category !== category)\n return false;\n }\n }\n if (this._message) {\n if (this._message instanceof RegExp) {\n if (!this._message.test(message))\n return false;\n } else {\n if (this._message !== message)\n return false;\n }\n }\n return true;\n }\n\n private level(lvl: LogLevel): LogMatchRule {\n this._level = lvl;\n return this;\n }\n public trace(): LogMatchRule {\n return this.level(LogLevel.Trace);\n }\n public error(): LogMatchRule {\n return this.level(LogLevel.Error);\n }\n public info(): LogMatchRule {\n return this.level(LogLevel.Info);\n }\n public warn(): LogMatchRule {\n return this.level(LogLevel.Warning);\n }\n public category(category: string | RegExp): LogMatchRule {\n this._category = category;\n return this;\n }\n public message(message: string | RegExp): LogMatchRule {\n this._message = message;\n return this;\n }\n public metadata(check: (data: any) => boolean): LogMatchRule {\n this._metaDataCheck = check;\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"SequentialLogMatcher.js","sourceRoot":"","sources":["../../../src/test/SequentialLogMatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { LogFunction, Logger, LoggingMetaData, LogLevel } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * SequentialLogMatcher match log messages in order and remove them from the list. Any test using\r\n * should check if length come down to zero. If its not then test should fail.\r\n */\r\nexport class SequentialLogMatcher extends Logger {\r\n private _rules: LogMatchRule[] = [];\r\n private _originalLogError: LogFunction | undefined;\r\n private _originalLogWarning: LogFunction | undefined;\r\n private _originalLogInfo: LogFunction | undefined;\r\n private _originalLogTrace: LogFunction | undefined;\r\n\r\n private allow(level: LogLevel, category: string, message: string): boolean {\r\n if (this._rules.length === 0)\r\n return true;\r\n\r\n const rule = this._rules[0];\r\n if (rule.test(level, category, message)) {\r\n this._rules.shift();\r\n return this._suppressMatchLogMsgs === false;\r\n }\r\n return true;\r\n }\r\n\r\n public constructor(private _suppressMatchLogMsgs: boolean = true) {\r\n super();\r\n this._originalLogError = Logger._logError;\r\n this._originalLogWarning = Logger._logWarning;\r\n this._originalLogInfo = Logger._logInfo;\r\n this._originalLogTrace = Logger._logTrace;\r\n\r\n Logger._logError = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Error, category, message))\r\n this._originalLogError?.(category, message, metaData);\r\n };\r\n\r\n Logger._logWarning = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Warning, category, message))\r\n this._originalLogWarning?.(category, message, metaData);\r\n };\r\n\r\n Logger._logInfo = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Info, category, message))\r\n this._originalLogInfo?.(category, message, metaData);\r\n };\r\n\r\n Logger._logTrace = (category: string, message: string, metaData: LoggingMetaData) => {\r\n if (this.allow(LogLevel.Trace, category, message))\r\n this._originalLogTrace?.(category, message, metaData);\r\n };\r\n }\r\n\r\n public append(): LogMatchRule {\r\n const newMatch = new LogMatchRule();\r\n this._rules.push(newMatch);\r\n return newMatch;\r\n }\r\n public finish(): boolean {\r\n return this.length === 0;\r\n }\r\n public finishAndDispose(): boolean {\r\n const rc = this.finish();\r\n Logger._logError = this._originalLogError;\r\n Logger._logWarning = this._originalLogWarning;\r\n Logger._logInfo = this._originalLogInfo;\r\n Logger._logTrace = this._originalLogTrace;\r\n return rc;\r\n }\r\n public get length(): number { return this._rules.length; }\r\n}\r\n\r\nexport class LogMatchRule {\r\n private _level?: LogLevel;\r\n private _category?: string | RegExp;\r\n private _message?: string | RegExp;\r\n private _metaDataCheck?: (data: any) => boolean;\r\n public test(level: LogLevel, category: string, message: string): boolean {\r\n if (this._level) {\r\n if (this._level !== level)\r\n return false;\r\n }\r\n\r\n if (this._category) {\r\n if (this._category instanceof RegExp) {\r\n if (!this._category.test(category))\r\n return false;\r\n } else {\r\n if (this._category !== category)\r\n return false;\r\n }\r\n }\r\n if (this._message) {\r\n if (this._message instanceof RegExp) {\r\n if (!this._message.test(message))\r\n return false;\r\n } else {\r\n if (this._message !== message)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private level(lvl: LogLevel): LogMatchRule {\r\n this._level = lvl;\r\n return this;\r\n }\r\n public trace(): LogMatchRule {\r\n return this.level(LogLevel.Trace);\r\n }\r\n public error(): LogMatchRule {\r\n return this.level(LogLevel.Error);\r\n }\r\n public info(): LogMatchRule {\r\n return this.level(LogLevel.Info);\r\n }\r\n public warn(): LogMatchRule {\r\n return this.level(LogLevel.Warning);\r\n }\r\n public category(category: string | RegExp): LogMatchRule {\r\n this._category = category;\r\n return this;\r\n }\r\n public message(message: string | RegExp): LogMatchRule {\r\n this._message = message;\r\n return this;\r\n }\r\n public metadata(check: (data: any) => boolean): LogMatchRule {\r\n this._metaDataCheck = check;\r\n return this;\r\n }\r\n}\r\n"]}