@itwin/core-backend 5.8.0-dev.2 → 5.8.0-dev.20

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 (540) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.js.map +1 -1
  15. package/lib/cjs/CheckpointManager.js.map +1 -1
  16. package/lib/cjs/ClassRegistry.js +5 -5
  17. package/lib/cjs/ClassRegistry.js.map +1 -1
  18. package/lib/cjs/CloudSqlite.js.map +1 -1
  19. package/lib/cjs/CodeService.js.map +1 -1
  20. package/lib/cjs/CodeSpecs.js.map +1 -1
  21. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  22. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  23. package/lib/cjs/DevTools.js.map +1 -1
  24. package/lib/cjs/DisplayStyle.js.map +1 -1
  25. package/lib/cjs/ECDb.d.ts +26 -0
  26. package/lib/cjs/ECDb.d.ts.map +1 -1
  27. package/lib/cjs/ECDb.js +53 -2
  28. package/lib/cjs/ECDb.js.map +1 -1
  29. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  30. package/lib/cjs/ECSqlRowExecutor.d.ts +66 -0
  31. package/lib/cjs/ECSqlRowExecutor.d.ts.map +1 -0
  32. package/lib/cjs/ECSqlRowExecutor.js +135 -0
  33. package/lib/cjs/ECSqlRowExecutor.js.map +1 -0
  34. package/lib/cjs/ECSqlStatement.d.ts +13 -1
  35. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  36. package/lib/cjs/ECSqlStatement.js +30 -0
  37. package/lib/cjs/ECSqlStatement.js.map +1 -1
  38. package/lib/cjs/ECSqlSyncReader.d.ts +104 -0
  39. package/lib/cjs/ECSqlSyncReader.d.ts.map +1 -0
  40. package/lib/cjs/ECSqlSyncReader.js +191 -0
  41. package/lib/cjs/ECSqlSyncReader.js.map +1 -0
  42. package/lib/cjs/Element.js.map +1 -1
  43. package/lib/cjs/ElementAspect.js.map +1 -1
  44. package/lib/cjs/ElementGraphics.js.map +1 -1
  45. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  46. package/lib/cjs/Entity.js.map +1 -1
  47. package/lib/cjs/EntityReferences.js.map +1 -1
  48. package/lib/cjs/ExportGraphics.js.map +1 -1
  49. package/lib/cjs/ExternalSource.js.map +1 -1
  50. package/lib/cjs/FontFile.js.map +1 -1
  51. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  52. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  53. package/lib/cjs/GeometrySummary.js +47 -47
  54. package/lib/cjs/GeometrySummary.js.map +1 -1
  55. package/lib/cjs/IModelDb.d.ts +26 -1
  56. package/lib/cjs/IModelDb.d.ts.map +1 -1
  57. package/lib/cjs/IModelDb.js +63 -11
  58. package/lib/cjs/IModelDb.js.map +1 -1
  59. package/lib/cjs/IModelDbFonts.js.map +1 -1
  60. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  61. package/lib/cjs/IModelHost.js.map +1 -1
  62. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  63. package/lib/cjs/IModelJsFs.js.map +1 -1
  64. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  65. package/lib/cjs/IpcHost.d.ts.map +1 -1
  66. package/lib/cjs/IpcHost.js +28 -4
  67. package/lib/cjs/IpcHost.js.map +1 -1
  68. package/lib/cjs/LineStyle.d.ts +6 -0
  69. package/lib/cjs/LineStyle.d.ts.map +1 -1
  70. package/lib/cjs/LineStyle.js +41 -32
  71. package/lib/cjs/LineStyle.js.map +1 -1
  72. package/lib/cjs/LocalHub.d.ts +17 -10
  73. package/lib/cjs/LocalHub.d.ts.map +1 -1
  74. package/lib/cjs/LocalHub.js +127 -29
  75. package/lib/cjs/LocalHub.js.map +1 -1
  76. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  77. package/lib/cjs/LockControl.js.map +1 -1
  78. package/lib/cjs/Material.js.map +1 -1
  79. package/lib/cjs/Model.js.map +1 -1
  80. package/lib/cjs/NativeAppStorage.js.map +1 -1
  81. package/lib/cjs/NativeHost.js.map +1 -1
  82. package/lib/cjs/NavigationRelationship.js.map +1 -1
  83. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  84. package/lib/cjs/PropertyStore.js.map +1 -1
  85. package/lib/cjs/Relationship.js.map +1 -1
  86. package/lib/cjs/RpcBackend.js.map +1 -1
  87. package/lib/cjs/SQLiteDb.js.map +1 -1
  88. package/lib/cjs/Schema.js.map +1 -1
  89. package/lib/cjs/SchemaSync.js.map +1 -1
  90. package/lib/cjs/SchemaUtils.js.map +1 -1
  91. package/lib/cjs/SheetIndex.js.map +1 -1
  92. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  93. package/lib/cjs/SqliteStatement.js.map +1 -1
  94. package/lib/cjs/StashManager.js.map +1 -1
  95. package/lib/cjs/Texture.js.map +1 -1
  96. package/lib/cjs/TileStorage.js.map +1 -1
  97. package/lib/cjs/TxnManager.js.map +1 -1
  98. package/lib/cjs/ViewDefinition.js.map +1 -1
  99. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  100. package/lib/cjs/ViewStore.js.map +1 -1
  101. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  102. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  103. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  104. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  105. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  106. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  107. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  108. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  109. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  110. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  111. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  112. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  113. package/lib/cjs/core-backend.d.ts +3 -0
  114. package/lib/cjs/core-backend.d.ts.map +1 -1
  115. package/lib/cjs/core-backend.js +3 -0
  116. package/lib/cjs/core-backend.js.map +1 -1
  117. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  118. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  119. package/lib/cjs/domains/GenericElements.js.map +1 -1
  120. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  121. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  122. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  123. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  124. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  125. package/lib/cjs/internal/HubMock.js.map +1 -1
  126. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  127. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  128. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  129. package/lib/cjs/internal/NoLocks.js.map +1 -1
  130. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  131. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  132. package/lib/cjs/internal/Symbols.js.map +1 -1
  133. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  134. package/lib/cjs/internal/cross-package.js.map +1 -1
  135. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +38 -0
  136. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +1 -0
  137. package/lib/cjs/internal/workspace/SettingsDbImpl.js +108 -0
  138. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +1 -0
  139. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +7 -0
  140. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -0
  141. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +266 -0
  142. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -0
  143. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +1 -0
  144. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  145. package/lib/cjs/internal/workspace/SettingsImpl.js +8 -4
  146. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  147. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  148. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +14 -0
  149. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +1 -0
  150. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +40 -0
  151. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +1 -0
  152. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +1 -0
  153. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  154. package/lib/cjs/internal/workspace/WorkspaceImpl.js +67 -16
  155. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  156. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  157. package/lib/cjs/rpc/multipart.js.map +1 -1
  158. package/lib/cjs/rpc/tracing.js.map +1 -1
  159. package/lib/cjs/rpc/web/logging.js.map +1 -1
  160. package/lib/cjs/rpc/web/request.js.map +1 -1
  161. package/lib/cjs/rpc/web/response.js.map +1 -1
  162. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  163. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  164. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  165. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  166. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  167. package/lib/cjs/workspace/Settings.d.ts +8 -0
  168. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  169. package/lib/cjs/workspace/Settings.js.map +1 -1
  170. package/lib/cjs/workspace/SettingsDb.d.ts +109 -0
  171. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -0
  172. package/lib/cjs/workspace/SettingsDb.js +19 -0
  173. package/lib/cjs/workspace/SettingsDb.js.map +1 -0
  174. package/lib/cjs/workspace/SettingsEditor.d.ts +250 -0
  175. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -0
  176. package/lib/cjs/workspace/SettingsEditor.js +53 -0
  177. package/lib/cjs/workspace/SettingsEditor.js.map +1 -0
  178. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  179. package/lib/cjs/workspace/Workspace.d.ts +42 -19
  180. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  181. package/lib/cjs/workspace/Workspace.js.map +1 -1
  182. package/lib/cjs/workspace/WorkspaceEditor.d.ts +32 -1
  183. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  184. package/lib/cjs/workspace/WorkspaceEditor.js +19 -0
  185. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  186. package/lib/esm/BackendHubAccess.js.map +1 -1
  187. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  188. package/lib/esm/BisCoreSchema.js.map +1 -1
  189. package/lib/esm/BlobContainerService.js.map +1 -1
  190. package/lib/esm/BriefcaseManager.js.map +1 -1
  191. package/lib/esm/CatalogDb.js.map +1 -1
  192. package/lib/esm/Category.js.map +1 -1
  193. package/lib/esm/ChangeSummaryManager.js +2 -2
  194. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  195. package/lib/esm/ChangedElementsDb.js.map +1 -1
  196. package/lib/esm/ChangesetECAdaptor.js +248 -248
  197. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  198. package/lib/esm/ChannelControl.js.map +1 -1
  199. package/lib/esm/CheckpointManager.js.map +1 -1
  200. package/lib/esm/ClassRegistry.js +5 -5
  201. package/lib/esm/ClassRegistry.js.map +1 -1
  202. package/lib/esm/CloudSqlite.js.map +1 -1
  203. package/lib/esm/CodeService.js.map +1 -1
  204. package/lib/esm/CodeSpecs.js.map +1 -1
  205. package/lib/esm/ConcurrentQuery.js.map +1 -1
  206. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  207. package/lib/esm/DevTools.js.map +1 -1
  208. package/lib/esm/DisplayStyle.js.map +1 -1
  209. package/lib/esm/ECDb.d.ts +26 -0
  210. package/lib/esm/ECDb.d.ts.map +1 -1
  211. package/lib/esm/ECDb.js +54 -3
  212. package/lib/esm/ECDb.js.map +1 -1
  213. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  214. package/lib/esm/ECSqlRowExecutor.d.ts +66 -0
  215. package/lib/esm/ECSqlRowExecutor.d.ts.map +1 -0
  216. package/lib/esm/ECSqlRowExecutor.js +131 -0
  217. package/lib/esm/ECSqlRowExecutor.js.map +1 -0
  218. package/lib/esm/ECSqlStatement.d.ts +13 -1
  219. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  220. package/lib/esm/ECSqlStatement.js +30 -0
  221. package/lib/esm/ECSqlStatement.js.map +1 -1
  222. package/lib/esm/ECSqlSyncReader.d.ts +104 -0
  223. package/lib/esm/ECSqlSyncReader.d.ts.map +1 -0
  224. package/lib/esm/ECSqlSyncReader.js +187 -0
  225. package/lib/esm/ECSqlSyncReader.js.map +1 -0
  226. package/lib/esm/Element.js.map +1 -1
  227. package/lib/esm/ElementAspect.js.map +1 -1
  228. package/lib/esm/ElementGraphics.js.map +1 -1
  229. package/lib/esm/ElementTreeWalker.js.map +1 -1
  230. package/lib/esm/Entity.js.map +1 -1
  231. package/lib/esm/EntityReferences.js.map +1 -1
  232. package/lib/esm/ExportGraphics.js.map +1 -1
  233. package/lib/esm/ExternalSource.js.map +1 -1
  234. package/lib/esm/FontFile.js.map +1 -1
  235. package/lib/esm/GeoCoordConfig.js.map +1 -1
  236. package/lib/esm/GeographicCRSServices.js.map +1 -1
  237. package/lib/esm/GeometrySummary.js +47 -47
  238. package/lib/esm/GeometrySummary.js.map +1 -1
  239. package/lib/esm/IModelDb.d.ts +26 -1
  240. package/lib/esm/IModelDb.d.ts.map +1 -1
  241. package/lib/esm/IModelDb.js +63 -11
  242. package/lib/esm/IModelDb.js.map +1 -1
  243. package/lib/esm/IModelDbFonts.js.map +1 -1
  244. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  245. package/lib/esm/IModelHost.js.map +1 -1
  246. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  247. package/lib/esm/IModelJsFs.js.map +1 -1
  248. package/lib/esm/ImageSourceConversion.js.map +1 -1
  249. package/lib/esm/IpcHost.d.ts.map +1 -1
  250. package/lib/esm/IpcHost.js +28 -4
  251. package/lib/esm/IpcHost.js.map +1 -1
  252. package/lib/esm/LineStyle.d.ts +6 -0
  253. package/lib/esm/LineStyle.d.ts.map +1 -1
  254. package/lib/esm/LineStyle.js +41 -32
  255. package/lib/esm/LineStyle.js.map +1 -1
  256. package/lib/esm/LocalHub.d.ts +17 -10
  257. package/lib/esm/LocalHub.d.ts.map +1 -1
  258. package/lib/esm/LocalHub.js +128 -30
  259. package/lib/esm/LocalHub.js.map +1 -1
  260. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  261. package/lib/esm/LockControl.js.map +1 -1
  262. package/lib/esm/Material.js.map +1 -1
  263. package/lib/esm/Model.js.map +1 -1
  264. package/lib/esm/NativeAppStorage.js.map +1 -1
  265. package/lib/esm/NativeHost.js.map +1 -1
  266. package/lib/esm/NavigationRelationship.js.map +1 -1
  267. package/lib/esm/PromiseMemoizer.js.map +1 -1
  268. package/lib/esm/PropertyStore.js.map +1 -1
  269. package/lib/esm/Relationship.js.map +1 -1
  270. package/lib/esm/RpcBackend.js.map +1 -1
  271. package/lib/esm/SQLiteDb.js.map +1 -1
  272. package/lib/esm/Schema.js.map +1 -1
  273. package/lib/esm/SchemaSync.js.map +1 -1
  274. package/lib/esm/SchemaUtils.js.map +1 -1
  275. package/lib/esm/SheetIndex.js.map +1 -1
  276. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  277. package/lib/esm/SqliteStatement.js.map +1 -1
  278. package/lib/esm/StashManager.js.map +1 -1
  279. package/lib/esm/Texture.js.map +1 -1
  280. package/lib/esm/TileStorage.js.map +1 -1
  281. package/lib/esm/TxnManager.js.map +1 -1
  282. package/lib/esm/ViewDefinition.js.map +1 -1
  283. package/lib/esm/ViewStateHydrator.js.map +1 -1
  284. package/lib/esm/ViewStore.js.map +1 -1
  285. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  286. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  287. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  288. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  289. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  290. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  291. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  292. package/lib/esm/core-backend.d.ts +3 -0
  293. package/lib/esm/core-backend.d.ts.map +1 -1
  294. package/lib/esm/core-backend.js +3 -0
  295. package/lib/esm/core-backend.js.map +1 -1
  296. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  297. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  298. package/lib/esm/domains/GenericElements.js.map +1 -1
  299. package/lib/esm/domains/GenericSchema.js.map +1 -1
  300. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  301. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  302. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  303. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  304. package/lib/esm/internal/HubMock.js.map +1 -1
  305. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  306. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  307. package/lib/esm/internal/NativePlatform.js.map +1 -1
  308. package/lib/esm/internal/NoLocks.js.map +1 -1
  309. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  310. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  311. package/lib/esm/internal/Symbols.js.map +1 -1
  312. package/lib/esm/internal/annotations/fields.js.map +1 -1
  313. package/lib/esm/internal/cross-package.js.map +1 -1
  314. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +38 -0
  315. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +1 -0
  316. package/lib/esm/internal/workspace/SettingsDbImpl.js +104 -0
  317. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +1 -0
  318. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +7 -0
  319. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -0
  320. package/lib/esm/internal/workspace/SettingsEditorImpl.js +263 -0
  321. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -0
  322. package/lib/esm/internal/workspace/SettingsImpl.d.ts +1 -0
  323. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  324. package/lib/esm/internal/workspace/SettingsImpl.js +5 -2
  325. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  326. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  327. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +14 -0
  328. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +1 -0
  329. package/lib/esm/internal/workspace/SettingsSqliteDb.js +36 -0
  330. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +1 -0
  331. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +1 -0
  332. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  333. package/lib/esm/internal/workspace/WorkspaceImpl.js +67 -17
  334. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  335. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  336. package/lib/esm/rpc/multipart.js.map +1 -1
  337. package/lib/esm/rpc/tracing.js.map +1 -1
  338. package/lib/esm/rpc/web/logging.js.map +1 -1
  339. package/lib/esm/rpc/web/request.js.map +1 -1
  340. package/lib/esm/rpc/web/response.js.map +1 -1
  341. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  342. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  343. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  344. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  345. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  346. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  347. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  348. package/lib/esm/test/AttachDb.test.js +11 -11
  349. package/lib/esm/test/AttachDb.test.js.map +1 -1
  350. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  351. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  352. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  353. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  354. package/lib/esm/test/IModelHost.test.js.map +1 -1
  355. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  356. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  357. package/lib/esm/test/IpcHost.test.js +64 -13
  358. package/lib/esm/test/IpcHost.test.js.map +1 -1
  359. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  360. package/lib/esm/test/PrintElementTree.js.map +1 -1
  361. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  362. package/lib/esm/test/RevisionUtility.js.map +1 -1
  363. package/lib/esm/test/SchemaUtils.test.js +25 -25
  364. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  365. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  366. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  367. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  368. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  369. package/lib/esm/test/TestUtils.js.map +1 -1
  370. package/lib/esm/test/annotations/Fields.test.js +53 -53
  371. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  372. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  373. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  374. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  375. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  376. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  377. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  378. package/lib/esm/test/categories/Category.test.js.map +1 -1
  379. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  380. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  381. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  382. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  383. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  384. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  385. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  386. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  387. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  388. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  389. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  390. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  391. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  392. package/lib/esm/test/ecdb/ECSqlQuery.test.js +100 -12
  393. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  394. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  395. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  396. package/lib/esm/test/ecdb/ECSqlSyncReader.test.d.ts +2 -0
  397. package/lib/esm/test/ecdb/ECSqlSyncReader.test.d.ts.map +1 -0
  398. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +122 -0
  399. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -0
  400. package/lib/esm/test/ecdb/QueryReaders.test.d.ts +2 -0
  401. package/lib/esm/test/ecdb/QueryReaders.test.d.ts.map +1 -0
  402. package/lib/esm/test/ecdb/QueryReaders.test.js +1462 -0
  403. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -0
  404. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  405. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  406. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +4 -1
  407. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  408. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  409. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  410. package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts +1 -1
  411. package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts.map +1 -1
  412. package/lib/esm/test/ecsql/src/ECSqlTestParser.js +11 -5
  413. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  414. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +186 -100
  415. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  416. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  417. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  418. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  419. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  420. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  421. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  422. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  423. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  424. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  425. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  426. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  427. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  428. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  429. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  430. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  431. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  432. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  433. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  434. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  435. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  436. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  437. package/lib/esm/test/hubaccess/SemanticRebase.test.js +145 -145
  438. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  439. package/lib/esm/test/imageData.js.map +1 -1
  440. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  441. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  442. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  443. package/lib/esm/test/imodel/IModel.test.js +44 -44
  444. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  445. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  446. package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
  447. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  448. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  449. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  450. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  451. package/lib/esm/test/index.js.map +1 -1
  452. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  453. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  454. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  455. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  456. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  457. package/lib/esm/test/rpc/response.test.js.map +1 -1
  458. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  459. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  460. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  461. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  462. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  463. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  464. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  465. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  466. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  467. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  468. package/lib/esm/test/standalone/ChangesetReader.test.js +135 -135
  469. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  470. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  471. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  472. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  473. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  474. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  475. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  476. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  477. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  478. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  479. package/lib/esm/test/standalone/HubMock.test.js +177 -7
  480. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  481. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  482. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  483. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  484. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  485. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  486. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  487. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  488. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  489. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  490. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  491. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  492. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  493. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  494. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  495. package/lib/esm/test/standalone/Settings.test.js +18 -0
  496. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  497. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  498. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  499. package/lib/esm/test/standalone/StandaloneDb.test.js +51 -1
  500. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  501. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  502. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  503. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  504. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  505. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  506. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  507. package/lib/esm/test/standalone/Workspace.test.js +213 -0
  508. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  509. package/lib/esm/test/standalone/iModelDb.test.d.ts +2 -0
  510. package/lib/esm/test/standalone/iModelDb.test.d.ts.map +1 -0
  511. package/lib/esm/test/standalone/iModelDb.test.js +35 -0
  512. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -0
  513. package/lib/esm/test/workspace/SettingsDb.test.d.ts +2 -0
  514. package/lib/esm/test/workspace/SettingsDb.test.d.ts.map +1 -0
  515. package/lib/esm/test/workspace/SettingsDb.test.js +465 -0
  516. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -0
  517. package/lib/esm/workspace/Settings.d.ts +8 -0
  518. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  519. package/lib/esm/workspace/Settings.js.map +1 -1
  520. package/lib/esm/workspace/SettingsDb.d.ts +109 -0
  521. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -0
  522. package/lib/esm/workspace/SettingsDb.js +16 -0
  523. package/lib/esm/workspace/SettingsDb.js.map +1 -0
  524. package/lib/esm/workspace/SettingsEditor.d.ts +250 -0
  525. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -0
  526. package/lib/esm/workspace/SettingsEditor.js +50 -0
  527. package/lib/esm/workspace/SettingsEditor.js.map +1 -0
  528. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  529. package/lib/esm/workspace/Workspace.d.ts +42 -19
  530. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  531. package/lib/esm/workspace/Workspace.js.map +1 -1
  532. package/lib/esm/workspace/WorkspaceEditor.d.ts +32 -1
  533. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  534. package/lib/esm/workspace/WorkspaceEditor.js +19 -0
  535. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  536. package/package.json +15 -15
  537. package/lib/esm/test/ecdb/ECSqlReader.test.d.ts +0 -2
  538. package/lib/esm/test/ecdb/ECSqlReader.test.d.ts.map +0 -1
  539. package/lib/esm/test/ecdb/ECSqlReader.test.js +0 -669
  540. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +0 -1
@@ -0,0 +1,1462 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ /*---------------------------------------------------------------------------------------------
54
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
55
+ * See LICENSE.md in the project root for license terms and full copyright notice.
56
+ *--------------------------------------------------------------------------------------------*/
57
+ import { DbResult } from "@itwin/core-bentley";
58
+ import { Code, ColorDef, IModel, QueryBinder, QueryOptionsBuilder, QueryRowFormat } from "@itwin/core-common";
59
+ import { DefinitionModel, ElementTreeDeleter, ElementTreeWalkerScope, PhysicalModel, PhysicalObject, SnapshotDb, Subject } from "../../core-backend";
60
+ import { IModelTestUtils } from "../IModelTestUtils";
61
+ import { KnownTestLocations } from "../KnownTestLocations";
62
+ import { ECDbTestHelper } from "./ECDbTestHelper";
63
+ import { Range3d } from "@itwin/core-geometry";
64
+ import * as chai from "chai";
65
+ import * as chaiAsPromised from "chai-as-promised";
66
+ chai.use(chaiAsPromised);
67
+ const assert = chai.assert;
68
+ const expect = chai.expect;
69
+ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (() => {
70
+ let iModel;
71
+ before(async () => {
72
+ iModel = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile("test.bim"));
73
+ });
74
+ after(async () => {
75
+ iModel.close();
76
+ });
77
+ describe("bind Id64 enumerable", async () => {
78
+ const outDir = KnownTestLocations.outputDir;
79
+ it("ecsql reader simple", async () => {
80
+ const env_1 = { stack: [], error: void 0, hasError: false };
81
+ try {
82
+ const ecdb = __addDisposableResource(env_1, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
83
+ <ECEntityClass typeName="Foo" modifier="Sealed">
84
+ <ECProperty propertyName="n" typeName="int"/>
85
+ </ECEntityClass>
86
+ </ECSchema>`), false);
87
+ assert.isTrue(ecdb.isOpen);
88
+ ecdb.saveChanges();
89
+ const params = new QueryBinder();
90
+ params.bindIdSet(1, ["0x32"]);
91
+ const optionBuilder = new QueryOptionsBuilder();
92
+ optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);
93
+ const readerCallback = async (readerObj) => {
94
+ const rows = await readerObj.toArray();
95
+ assert.equal(rows[0].id, "0x32");
96
+ assert.equal(rows.length, 1);
97
+ };
98
+ const syncReaderCallback = (syncReader) => {
99
+ const rows = syncReader.toArray();
100
+ assert.equal(rows[0].id, "0x32");
101
+ assert.equal(rows.length, 1);
102
+ };
103
+ ecdb.withQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", syncReaderCallback, params, optionBuilder.getOptions());
104
+ const reader = ecdb.createQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", params, optionBuilder.getOptions());
105
+ await readerCallback(reader);
106
+ }
107
+ catch (e_1) {
108
+ env_1.error = e_1;
109
+ env_1.hasError = true;
110
+ }
111
+ finally {
112
+ __disposeResources(env_1);
113
+ }
114
+ });
115
+ it("ecsql reader simple for IdSet", async () => {
116
+ const env_2 = { stack: [], error: void 0, hasError: false };
117
+ try {
118
+ const ecdb = __addDisposableResource(env_2, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
119
+ <ECEntityClass typeName="Foo" modifier="Sealed">
120
+ <ECProperty propertyName="n" typeName="int"/>
121
+ </ECEntityClass>
122
+ </ECSchema>`), false);
123
+ assert.isTrue(ecdb.isOpen);
124
+ ecdb.saveChanges();
125
+ const params = new QueryBinder();
126
+ params.bindIdSet(1, ["0x32"]);
127
+ const optionBuilder = new QueryOptionsBuilder();
128
+ optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);
129
+ const readerCallback = async (readerObj) => {
130
+ const rows = await readerObj.toArray();
131
+ assert.equal(rows[0].id, "0x32");
132
+ assert.equal(rows.length, 1);
133
+ };
134
+ const syncReaderCallback = (syncReader) => {
135
+ const rows = syncReader.toArray();
136
+ assert.equal(rows[0].id, "0x32");
137
+ assert.equal(rows.length, 1);
138
+ };
139
+ ecdb.withQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES", syncReaderCallback, params, optionBuilder.getOptions());
140
+ const reader = ecdb.createQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES", params, optionBuilder.getOptions());
141
+ await readerCallback(reader);
142
+ }
143
+ catch (e_2) {
144
+ env_2.error = e_2;
145
+ env_2.hasError = true;
146
+ }
147
+ finally {
148
+ __disposeResources(env_2);
149
+ }
150
+ });
151
+ it("bindIdSet not working with integer Ids", async () => {
152
+ const env_3 = { stack: [], error: void 0, hasError: false };
153
+ try {
154
+ const ecdb = __addDisposableResource(env_3, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
155
+ <ECEntityClass typeName="Foo" modifier="Sealed">
156
+ <ECProperty propertyName="n" typeName="int"/>
157
+ </ECEntityClass>
158
+ </ECSchema>`), false);
159
+ assert.isTrue(ecdb.isOpen);
160
+ ecdb.saveChanges();
161
+ const params = new QueryBinder();
162
+ params.bindIdSet(1, ["50"]);
163
+ const optionBuilder = new QueryOptionsBuilder();
164
+ optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);
165
+ const readerCallback = async (readerObj) => {
166
+ const rows = await readerObj.toArray();
167
+ assert.equal(rows.length, 0);
168
+ };
169
+ const syncreaderCallback = (syncReader) => {
170
+ const rows = syncReader.toArray();
171
+ assert.equal(rows.length, 0);
172
+ };
173
+ ecdb.withQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", syncreaderCallback, params, optionBuilder.getOptions());
174
+ const reader = ecdb.createQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", params, optionBuilder.getOptions());
175
+ await readerCallback(reader);
176
+ }
177
+ catch (e_3) {
178
+ env_3.error = e_3;
179
+ env_3.hasError = true;
180
+ }
181
+ finally {
182
+ __disposeResources(env_3);
183
+ }
184
+ });
185
+ it("ecsql reader simple using query reader", async () => {
186
+ const env_4 = { stack: [], error: void 0, hasError: false };
187
+ try {
188
+ const ecdb = __addDisposableResource(env_4, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
189
+ <ECEntityClass typeName="Foo" modifier="Sealed">
190
+ <ECProperty propertyName="n" typeName="int"/>
191
+ </ECEntityClass>
192
+ </ECSchema>`), false);
193
+ assert.isTrue(ecdb.isOpen);
194
+ const insertResult = await ecdb.withCachedWriteStatement("INSERT INTO ts.Foo(n) VALUES(20)", async (stmt) => {
195
+ return stmt.stepForInsert();
196
+ });
197
+ ecdb.saveChanges();
198
+ assert.equal(insertResult.status, DbResult.BE_SQLITE_DONE);
199
+ assert.equal(insertResult.id, "0x1");
200
+ const params = new QueryBinder();
201
+ params.bindId("firstId", insertResult.id);
202
+ const resultAssertCallback = (queryReader) => {
203
+ assert.equal(queryReader.current.id, "0x1");
204
+ assert.equal(queryReader.current.ecinstanceid, "0x1");
205
+ assert.equal(queryReader.current.n, 20);
206
+ assert.equal(queryReader.current.ID, "0x1");
207
+ assert.equal(queryReader.current.ECINSTANCEID, "0x1");
208
+ assert.equal(queryReader.current[0], "0x1");
209
+ assert.equal(queryReader.current[1], 20);
210
+ const row0 = queryReader.current.toRow();
211
+ assert.equal(row0.ECInstanceId, "0x1");
212
+ assert.equal(row0.n, 20);
213
+ };
214
+ const readerCallback = async (readerObj) => {
215
+ assert.isTrue(await readerObj.step());
216
+ resultAssertCallback(readerObj);
217
+ assert.isFalse(await readerObj.step());
218
+ };
219
+ const synReaderCallback = (syncReader) => {
220
+ assert.isTrue(syncReader.step());
221
+ resultAssertCallback(syncReader);
222
+ assert.isFalse(syncReader.step());
223
+ };
224
+ ecdb.withQueryReader("SELECT ECInstanceId, n FROM ts.Foo WHERE ECInstanceId=:firstId LIMIT 1", synReaderCallback, params);
225
+ const reader = ecdb.createQueryReader("SELECT ECInstanceId, n FROM ts.Foo WHERE ECInstanceId=:firstId", params, { limit: { count: 1 } });
226
+ await readerCallback(reader);
227
+ }
228
+ catch (e_4) {
229
+ env_4.error = e_4;
230
+ env_4.hasError = true;
231
+ }
232
+ finally {
233
+ __disposeResources(env_4);
234
+ }
235
+ });
236
+ it("ecsql reader simple using query row reader", async () => {
237
+ // Use existing element from test.bim
238
+ const elementId = "0x1";
239
+ const params = new QueryBinder();
240
+ params.bindId("firstId", elementId);
241
+ const resultAssertCallback = (queryReader) => {
242
+ assert.equal(queryReader.current.id, "0x1");
243
+ assert.equal(queryReader.current.ecinstanceid, "0x1");
244
+ assert.isDefined(queryReader.current.ecclassid);
245
+ assert.equal(queryReader.current.ID, "0x1");
246
+ assert.equal(queryReader.current.ECINSTANCEID, "0x1");
247
+ assert.equal(queryReader.current[0], "0x1");
248
+ assert.isDefined(queryReader.current[1]);
249
+ const row0 = queryReader.current.toRow();
250
+ assert.equal(row0.ECInstanceId, "0x1");
251
+ assert.isDefined(row0.ECClassId);
252
+ };
253
+ const readerCallback = async (readerObj) => {
254
+ assert.isTrue(await readerObj.step());
255
+ resultAssertCallback(readerObj);
256
+ assert.isFalse(await readerObj.step());
257
+ };
258
+ const synReaderCallback = (syncReader) => {
259
+ assert.isTrue(syncReader.step());
260
+ resultAssertCallback(syncReader);
261
+ assert.isFalse(syncReader.step());
262
+ };
263
+ iModel.withQueryReader("SELECT ECInstanceId, ECClassId FROM bis.Element WHERE ECInstanceId=:firstId", synReaderCallback, params);
264
+ const reader = iModel.createQueryReader("SELECT ECInstanceId, ECClassId FROM bis.Element WHERE ECInstanceId=:firstId", params, { limit: { count: 1 } });
265
+ await readerCallback(reader);
266
+ });
267
+ it("should bind Range3d", async () => {
268
+ const env_5 = { stack: [], error: void 0, hasError: false };
269
+ try {
270
+ const testRange = new Range3d(1.2, 2.3, 3.4, 4.5, 5.6, 6.7);
271
+ const ecdb = __addDisposableResource(env_5, ECDbTestHelper.createECDb(outDir, "bindrange3d.ecdb", `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
272
+ <ECEntityClass typeName="Foo" modifier="Sealed">
273
+ <ECProperty propertyName="Range3d" typeName="binary"/>
274
+ </ECEntityClass>
275
+ </ECSchema>`), false);
276
+ assert.isTrue(ecdb.isOpen);
277
+ ecdb.withCachedWriteStatement("INSERT INTO test.Foo([Range3d]) VALUES(?)", (stmt) => {
278
+ stmt.bindRange3d(1, testRange);
279
+ const res = stmt.stepForInsert();
280
+ assert.equal(res.status, DbResult.BE_SQLITE_DONE);
281
+ });
282
+ ecdb.saveChanges();
283
+ const params = new QueryBinder();
284
+ params.bindRange3d(1, testRange);
285
+ const reader = ecdb.createQueryReader("SELECT ECInstanceId, [Range3d] FROM test.Foo WHERE Range3d=?", params);
286
+ const rows = await reader.toArray();
287
+ const rangeBlob = rows[0][1];
288
+ const rangeFloatArray = new Float64Array(rangeBlob.buffer);
289
+ assert.equal(rangeFloatArray.length, 6);
290
+ const actualRange = new Range3d(...rangeFloatArray);
291
+ assert.isTrue(actualRange.isAlmostEqual(testRange));
292
+ }
293
+ catch (e_5) {
294
+ env_5.error = e_5;
295
+ env_5.hasError = true;
296
+ }
297
+ finally {
298
+ __disposeResources(env_5);
299
+ }
300
+ });
301
+ });
302
+ describe("Works as iterable iterator", () => {
303
+ it("iterable in for loop", async () => {
304
+ const expectedRowCount = 46; // 46 Elements in test.bim
305
+ const readerCallback = async (readerObj) => {
306
+ let actualRowCount = 0;
307
+ for await (const row of readerObj) {
308
+ actualRowCount++;
309
+ assert.isDefined(row[0]);
310
+ }
311
+ assert.equal(actualRowCount, expectedRowCount);
312
+ };
313
+ const syncReaderCallback = (syncReader) => {
314
+ let actualRowCount = 0;
315
+ for (const row of syncReader) {
316
+ actualRowCount++;
317
+ assert.isDefined(row[0]);
318
+ }
319
+ assert.equal(actualRowCount, expectedRowCount);
320
+ };
321
+ iModel.withQueryReader("SELECT * FROM bis.Element", syncReaderCallback);
322
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element");
323
+ await readerCallback(reader);
324
+ });
325
+ it("iterable with .next()", async () => {
326
+ const readerCallback = async (readerObj) => {
327
+ let row;
328
+ let actualRowCount = 0;
329
+ while ((row = await readerObj.next()).done === false) {
330
+ actualRowCount++;
331
+ assert.equal(row.value[0], `0x${actualRowCount}`);
332
+ }
333
+ assert.equal(actualRowCount, 5);
334
+ };
335
+ const syncReaderCallback = (syncReader) => {
336
+ let row;
337
+ let actualRowCount = 0;
338
+ while ((row = syncReader.next()).done === false) {
339
+ actualRowCount++;
340
+ assert.equal(row.value[0], `0x${actualRowCount}`);
341
+ }
342
+ assert.equal(actualRowCount, 5);
343
+ };
344
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback);
345
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 } });
346
+ await readerCallback(reader);
347
+ });
348
+ it("Should not fail on empty array", async () => {
349
+ const idSet = [];
350
+ const binder = QueryBinder.from([idSet]);
351
+ const reader = iModel.createQueryReader("SELECT ECInstanceId, ECClassId, Name from ecdbf.ExternalFileInfo WHERE InVirtualSet(?, ECInstanceId)", binder);
352
+ assert.isFalse(await reader.step());
353
+ });
354
+ });
355
+ describe("Common usages", () => {
356
+ describe("Get all rows", () => {
357
+ const expectedRowCount = 46; // 46 Elements in test.bim
358
+ it("Get all rows using iterable iterator", async () => {
359
+ const readerCallback = async (readerObj) => {
360
+ let rowCount = 0;
361
+ for await (const _row of readerObj) {
362
+ rowCount++;
363
+ }
364
+ assert.equal(rowCount, expectedRowCount);
365
+ };
366
+ const syncReaderCallback = (syncReader) => {
367
+ let rowCount = 0;
368
+ for (const _row of syncReader) {
369
+ rowCount++;
370
+ }
371
+ assert.equal(rowCount, expectedRowCount);
372
+ };
373
+ iModel.withQueryReader("SELECT * FROM bis.Element", syncReaderCallback);
374
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element");
375
+ await readerCallback(reader);
376
+ });
377
+ it("Get all rows using step", async () => {
378
+ const readerCallback = async (readerObj) => {
379
+ let rowCount = 0;
380
+ while (await readerObj.step()) {
381
+ rowCount++;
382
+ }
383
+ assert.equal(rowCount, expectedRowCount);
384
+ };
385
+ const syncReaderCallback = (syncReader) => {
386
+ let rowCount = 0;
387
+ while (syncReader.step()) {
388
+ rowCount++;
389
+ }
390
+ assert.equal(rowCount, expectedRowCount);
391
+ };
392
+ iModel.withQueryReader("SELECT * FROM bis.Element", syncReaderCallback);
393
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element");
394
+ await readerCallback(reader);
395
+ });
396
+ it("Get all rows using toArray", async () => {
397
+ const readerCallback = async (readerObj) => {
398
+ const rows = await readerObj.toArray();
399
+ assert.equal(rows.length, expectedRowCount);
400
+ };
401
+ const syncReaderCallback = (syncReader) => {
402
+ const rows = syncReader.toArray();
403
+ assert.equal(rows.length, expectedRowCount);
404
+ };
405
+ iModel.withQueryReader("SELECT * FROM bis.Element", syncReaderCallback);
406
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element");
407
+ await readerCallback(reader);
408
+ });
409
+ });
410
+ describe("Get id from each row", () => {
411
+ it("Get id using iterable iterator with unspecified rowFormat", async () => {
412
+ const resultAssertCallback = (row, expectedId) => {
413
+ assert.equal(row[0], expectedId);
414
+ assert.equal(row.id, expectedId);
415
+ assert.equal(row.ecinstanceid, expectedId);
416
+ assert.equal(row.ECINSTANCEID, expectedId);
417
+ assert.equal(row.ECInstanceId, expectedId);
418
+ assert.equal(row.toArray()[0], expectedId);
419
+ assert.equal(row.toRow().ECInstanceId, expectedId);
420
+ };
421
+ const readerCallback = async (readerObj) => {
422
+ let counter = 1;
423
+ let rowCount = 0;
424
+ for await (const row of readerObj) {
425
+ const currentExpectedId = `0x${counter}`;
426
+ resultAssertCallback(row, currentExpectedId);
427
+ counter++;
428
+ rowCount++;
429
+ }
430
+ assert.equal(rowCount, 5);
431
+ };
432
+ const syncReaderCallback = (syncReader) => {
433
+ let counter = 1;
434
+ let rowCount = 0;
435
+ for (const row of syncReader) {
436
+ const currentExpectedId = `0x${counter}`;
437
+ resultAssertCallback(row, currentExpectedId);
438
+ counter++;
439
+ rowCount++;
440
+ }
441
+ assert.equal(rowCount, 5);
442
+ };
443
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback);
444
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 } });
445
+ await readerCallback(reader);
446
+ });
447
+ it("Get id using iterable iterator with UseJsPropertyNames rowFormat", async () => {
448
+ const resultAssertCallback = (row, expectedId) => {
449
+ assert.equal(row[0], expectedId);
450
+ assert.equal(row.id, expectedId);
451
+ assert.equal(row.ecinstanceid, expectedId);
452
+ assert.equal(row.ECINSTANCEID, expectedId);
453
+ assert.equal(row.ECInstanceId, expectedId);
454
+ assert.equal(row.toArray()[0], expectedId);
455
+ assert.equal(row.toRow().id, expectedId);
456
+ };
457
+ const readerCallback = async (readerObj) => {
458
+ let counter = 1;
459
+ let rowCount = 0;
460
+ for await (const row of readerObj) {
461
+ const currentExpectedId = `0x${counter}`;
462
+ resultAssertCallback(row, currentExpectedId);
463
+ counter++;
464
+ rowCount++;
465
+ }
466
+ assert.equal(rowCount, 5);
467
+ };
468
+ const syncReaderCallback = (syncReader) => {
469
+ let counter = 1;
470
+ let rowCount = 0;
471
+ for (const row of syncReader) {
472
+ const currentExpectedId = `0x${counter}`;
473
+ resultAssertCallback(row, currentExpectedId);
474
+ counter++;
475
+ rowCount++;
476
+ }
477
+ assert.equal(rowCount, 5);
478
+ };
479
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
480
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });
481
+ await readerCallback(reader);
482
+ });
483
+ it("Get id using iterable iterator with UseECSqlPropertyNames rowFormat", async () => {
484
+ const resultAssertCallback = (row, expectedId) => {
485
+ assert.equal(row[0], expectedId);
486
+ assert.equal(row.id, expectedId);
487
+ assert.equal(row.ecinstanceid, expectedId);
488
+ assert.equal(row.ECINSTANCEID, expectedId);
489
+ assert.equal(row.ECInstanceId, expectedId);
490
+ assert.equal(row.toArray()[0], expectedId);
491
+ assert.equal(row.toRow().ECInstanceId, expectedId);
492
+ };
493
+ const readerCallback = async (readerObj) => {
494
+ let counter = 1;
495
+ let rowCount = 0;
496
+ for await (const row of readerObj) {
497
+ const currentExpectedId = `0x${counter}`;
498
+ resultAssertCallback(row, currentExpectedId);
499
+ counter++;
500
+ rowCount++;
501
+ }
502
+ assert.equal(rowCount, 5);
503
+ };
504
+ const syncReaderCallback = (syncReader) => {
505
+ let counter = 1;
506
+ let rowCount = 0;
507
+ for (const row of syncReader) {
508
+ const currentExpectedId = `0x${counter}`;
509
+ resultAssertCallback(row, currentExpectedId);
510
+ counter++;
511
+ rowCount++;
512
+ }
513
+ assert.equal(rowCount, 5);
514
+ };
515
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
516
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });
517
+ await readerCallback(reader);
518
+ });
519
+ it("Get id using iterable iterator with UseECSqlPropertyIndexes rowFormat", async () => {
520
+ const resultAssertCallback = (row, expectedId) => {
521
+ assert.equal(row[0], expectedId);
522
+ assert.equal(row.id, expectedId);
523
+ assert.equal(row.ecinstanceid, expectedId);
524
+ assert.equal(row.ECINSTANCEID, expectedId);
525
+ assert.equal(row.ECInstanceId, expectedId);
526
+ assert.equal(row.toArray()[0], expectedId);
527
+ assert.equal(row.toRow().ECInstanceId, expectedId);
528
+ };
529
+ const readerCallback = async (readerObj) => {
530
+ let counter = 1;
531
+ let rowCount = 0;
532
+ for await (const row of readerObj) {
533
+ const currentExpectedId = `0x${counter}`;
534
+ resultAssertCallback(row, currentExpectedId);
535
+ counter++;
536
+ rowCount++;
537
+ }
538
+ assert.equal(rowCount, 5);
539
+ };
540
+ const syncreaderCallback = (syncReader) => {
541
+ let counter = 1;
542
+ let rowCount = 0;
543
+ for (const row of syncReader) {
544
+ const currentExpectedId = `0x${counter}`;
545
+ resultAssertCallback(row, currentExpectedId);
546
+ counter++;
547
+ rowCount++;
548
+ }
549
+ assert.equal(rowCount, 5);
550
+ };
551
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncreaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
552
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
553
+ await readerCallback(reader);
554
+ });
555
+ it("Get id using step with unspecified rowFormat", async () => {
556
+ const resultAssertCallback = (queryReader, expectedId) => {
557
+ assert.equal(queryReader.current[0], expectedId);
558
+ assert.equal(queryReader.current.id, expectedId);
559
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
560
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
561
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
562
+ assert.equal(queryReader.current.toArray()[0], expectedId);
563
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
564
+ };
565
+ const readerCallback = async (readerObj) => {
566
+ let counter = 1;
567
+ let rowCount = 0;
568
+ while (await readerObj.step()) {
569
+ const currentExpectedId = `0x${counter}`;
570
+ resultAssertCallback(readerObj, currentExpectedId);
571
+ counter++;
572
+ rowCount++;
573
+ }
574
+ assert.equal(rowCount, 5);
575
+ };
576
+ const synReaderCallback = (syncReader) => {
577
+ let counter = 1;
578
+ let rowCount = 0;
579
+ while (syncReader.step()) {
580
+ const currentExpectedId = `0x${counter}`;
581
+ resultAssertCallback(syncReader, currentExpectedId);
582
+ counter++;
583
+ rowCount++;
584
+ }
585
+ assert.equal(rowCount, 5);
586
+ };
587
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", synReaderCallback);
588
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 } });
589
+ await readerCallback(reader);
590
+ });
591
+ it("Get id using step with UseJsPropertyNames rowFormat", async () => {
592
+ const resultAssertCallback = (queryReader, expectedId) => {
593
+ assert.equal(queryReader.current[0], expectedId);
594
+ assert.equal(queryReader.current.id, expectedId);
595
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
596
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
597
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
598
+ assert.equal(queryReader.current.toArray()[0], expectedId);
599
+ assert.equal(queryReader.current.toRow().id, expectedId);
600
+ };
601
+ const readerCallback = async (readerObj) => {
602
+ let counter = 1;
603
+ let rowCount = 0;
604
+ while (await readerObj.step()) {
605
+ const currentExpectedId = `0x${counter}`;
606
+ resultAssertCallback(readerObj, currentExpectedId);
607
+ counter++;
608
+ rowCount++;
609
+ }
610
+ assert.equal(rowCount, 5);
611
+ };
612
+ const syncReaderCallback = (syncReader) => {
613
+ let counter = 1;
614
+ let rowCount = 0;
615
+ while (syncReader.step()) {
616
+ const currentExpectedId = `0x${counter}`;
617
+ resultAssertCallback(syncReader, currentExpectedId);
618
+ counter++;
619
+ rowCount++;
620
+ }
621
+ assert.equal(rowCount, 5);
622
+ };
623
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
624
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });
625
+ await readerCallback(reader);
626
+ });
627
+ it("Get id using step with UseECSqlPropertyNames rowFormat", async () => {
628
+ const resultassertCallback = (queryReader, expectedId) => {
629
+ assert.equal(queryReader.current[0], expectedId);
630
+ assert.equal(queryReader.current.id, expectedId);
631
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
632
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
633
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
634
+ assert.equal(queryReader.current.toArray()[0], expectedId);
635
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
636
+ };
637
+ const readerCallback = async (readerObj) => {
638
+ let counter = 1;
639
+ let rowCount = 0;
640
+ while (await readerObj.step()) {
641
+ const currentExpectedId = `0x${counter}`;
642
+ resultassertCallback(readerObj, currentExpectedId);
643
+ counter++;
644
+ rowCount++;
645
+ }
646
+ assert.equal(rowCount, 5);
647
+ };
648
+ const syncReaderCallback = (syncReader) => {
649
+ let counter = 1;
650
+ let rowCount = 0;
651
+ while (syncReader.step()) {
652
+ const currentExpectedId = `0x${counter}`;
653
+ resultassertCallback(syncReader, currentExpectedId);
654
+ counter++;
655
+ rowCount++;
656
+ }
657
+ assert.equal(rowCount, 5);
658
+ };
659
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
660
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });
661
+ await readerCallback(reader);
662
+ });
663
+ it("Get id using step with UseECSqlPropertyIndexes rowFormat", async () => {
664
+ const resultassertCallback = (queryReader, expectedId) => {
665
+ assert.equal(queryReader.current[0], expectedId);
666
+ assert.equal(queryReader.current.id, expectedId);
667
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
668
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
669
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
670
+ assert.equal(queryReader.current.toArray()[0], expectedId);
671
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
672
+ };
673
+ const readerCallback = async (readerObj) => {
674
+ let counter = 1;
675
+ let rowCount = 0;
676
+ while (await readerObj.step()) {
677
+ const currentExpectedId = `0x${counter}`;
678
+ resultassertCallback(readerObj, currentExpectedId);
679
+ counter++;
680
+ rowCount++;
681
+ }
682
+ assert.equal(rowCount, 5);
683
+ };
684
+ const syncReaderCallback = (syncReader) => {
685
+ let counter = 1;
686
+ let rowCount = 0;
687
+ while (syncReader.step()) {
688
+ const currentExpectedId = `0x${counter}`;
689
+ resultassertCallback(syncReader, currentExpectedId);
690
+ counter++;
691
+ rowCount++;
692
+ }
693
+ assert.equal(rowCount, 5);
694
+ };
695
+ iModel.withQueryReader("SELECT * FROM meta.ECSchemaDef LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
696
+ const reader = iModel.createQueryReader("SELECT * FROM meta.ECSchemaDef", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
697
+ await readerCallback(reader);
698
+ });
699
+ });
700
+ describe("Get duplicate property names", () => {
701
+ it("Get duplicate property names using iterable iterator with unspecified rowFormat", async () => {
702
+ const expectedIds = ["0x1", "0xe", "0x10", "0x11", "0x12"];
703
+ const resultassertCallback = (row, expectedId) => {
704
+ assert.equal(row[0], expectedId);
705
+ assert.equal(row.id, expectedId);
706
+ assert.equal(row.ecinstanceid, expectedId);
707
+ assert.equal(row.ECINSTANCEID, expectedId);
708
+ assert.equal(row.ECInstanceId, expectedId);
709
+ assert.equal(row.toArray()[0], expectedId);
710
+ assert.equal(row.toRow().ECInstanceId, expectedId);
711
+ };
712
+ const readerCallback = async (readerObj) => {
713
+ let counter = 1;
714
+ let rowCount = 0;
715
+ for await (const row of readerObj) {
716
+ const currentExpectedId = expectedIds[counter - 1];
717
+ resultassertCallback(row, currentExpectedId);
718
+ counter++;
719
+ rowCount++;
720
+ }
721
+ assert.equal(rowCount, 5);
722
+ };
723
+ const syncReaderCallback = (syncReader) => {
724
+ let counter = 1;
725
+ let rowCount = 0;
726
+ for (const row of syncReader) {
727
+ const currentExpectedId = expectedIds[counter - 1];
728
+ resultassertCallback(row, currentExpectedId);
729
+ counter++;
730
+ rowCount++;
731
+ }
732
+ assert.equal(rowCount, 5);
733
+ };
734
+ iModel.withQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId LIMIT 5", syncReaderCallback);
735
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId", undefined, { limit: { count: 5 } });
736
+ await readerCallback(reader);
737
+ });
738
+ it("Get duplicate property names using iterable iterator with UseJsPropertyNames rowFormat", async () => {
739
+ const expectedIds = ["0x1", "0xe", "0x10", "0x11", "0x12"];
740
+ const resultassertCallback = (row, expectedId) => {
741
+ assert.equal(row[0], expectedId);
742
+ assert.equal(row.id, expectedId);
743
+ assert.equal(row.ecinstanceid, expectedId);
744
+ assert.equal(row.ECINSTANCEID, expectedId);
745
+ assert.equal(row.ECInstanceId, expectedId);
746
+ assert.equal(row.toArray()[0], expectedId);
747
+ assert.equal(row.toRow().id, expectedId);
748
+ };
749
+ const readerCallback = async (readerObj) => {
750
+ let counter = 1;
751
+ let rowCount = 0;
752
+ for await (const row of readerObj) {
753
+ const currentExpectedId = expectedIds[counter - 1];
754
+ resultassertCallback(row, currentExpectedId);
755
+ counter++;
756
+ rowCount++;
757
+ }
758
+ assert.equal(rowCount, 5);
759
+ };
760
+ const syncReaderCallback = (syncReader) => {
761
+ let counter = 1;
762
+ let rowCount = 0;
763
+ for (const row of syncReader) {
764
+ const currentExpectedId = expectedIds[counter - 1];
765
+ resultassertCallback(row, currentExpectedId);
766
+ counter++;
767
+ rowCount++;
768
+ }
769
+ assert.equal(rowCount, 5);
770
+ };
771
+ iModel.withQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
772
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });
773
+ await readerCallback(reader);
774
+ });
775
+ it("Get duplicate property names using iterable iterator with UseECSqlPropertyNames rowFormat", async () => {
776
+ const expectedIds = ["0x1", "0xe", "0x10", "0x11", "0x12"];
777
+ const resultassertCallback = (row, expectedId) => {
778
+ assert.equal(row[0], expectedId);
779
+ assert.equal(row.id, expectedId);
780
+ assert.equal(row.ecinstanceid, expectedId);
781
+ assert.equal(row.ECINSTANCEID, expectedId);
782
+ assert.equal(row.ECInstanceId, expectedId);
783
+ assert.equal(row.toArray()[0], expectedId);
784
+ assert.equal(row.toRow().ECInstanceId, expectedId);
785
+ };
786
+ const readerCallback = async (readerObj) => {
787
+ let counter = 1;
788
+ let rowCount = 0;
789
+ for await (const row of readerObj) {
790
+ const currentExpectedId = expectedIds[counter - 1];
791
+ resultassertCallback(row, currentExpectedId);
792
+ counter++;
793
+ rowCount++;
794
+ }
795
+ assert.equal(rowCount, 5);
796
+ };
797
+ const syncReaderCallback = (syncReader) => {
798
+ let counter = 1;
799
+ let rowCount = 0;
800
+ for (const row of syncReader) {
801
+ const currentExpectedId = expectedIds[counter - 1];
802
+ resultassertCallback(row, currentExpectedId);
803
+ counter++;
804
+ rowCount++;
805
+ }
806
+ assert.equal(rowCount, 5);
807
+ };
808
+ iModel.withQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
809
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });
810
+ await readerCallback(reader);
811
+ });
812
+ it("Get duplicate property names using iterable iterator with UseECSqlPropertyIndexes rowFormat", async () => {
813
+ const expectedIds = ["0x1", "0xe", "0x10", "0x11", "0x12"];
814
+ const resultassertCallback = (row, expectedId) => {
815
+ assert.equal(row[0], expectedId);
816
+ assert.equal(row.id, expectedId);
817
+ assert.equal(row.ecinstanceid, expectedId);
818
+ assert.equal(row.ECINSTANCEID, expectedId);
819
+ assert.equal(row.ECInstanceId, expectedId);
820
+ assert.equal(row.toArray()[0], expectedId);
821
+ assert.equal(row.toRow().ECInstanceId, expectedId);
822
+ };
823
+ const readerCallback = async (readerObj) => {
824
+ let counter = 1;
825
+ let rowCount = 0;
826
+ for await (const row of readerObj) {
827
+ const currentExpectedId = expectedIds[counter - 1];
828
+ resultassertCallback(row, currentExpectedId);
829
+ counter++;
830
+ rowCount++;
831
+ }
832
+ assert.equal(rowCount, 5);
833
+ };
834
+ const syncreaderCallback = (syncReader) => {
835
+ let counter = 1;
836
+ let rowCount = 0;
837
+ for (const row of syncReader) {
838
+ const currentExpectedId = expectedIds[counter - 1];
839
+ resultassertCallback(row, currentExpectedId);
840
+ counter++;
841
+ rowCount++;
842
+ }
843
+ assert.equal(rowCount, 5);
844
+ };
845
+ iModel.withQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId LIMIT 5", syncreaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
846
+ const reader = iModel.createQueryReader("SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
847
+ await readerCallback(reader);
848
+ });
849
+ });
850
+ describe("Get specific values", () => {
851
+ it("Get only ECInstanceId with unspecified rowFormat", async () => {
852
+ const resuktassertCallback = (queryReader, expectedId) => {
853
+ assert.equal(queryReader.current[0], expectedId);
854
+ assert.equal(queryReader.current.id, expectedId);
855
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
856
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
857
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
858
+ assert.equal(queryReader.current.toArray()[0], expectedId);
859
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
860
+ };
861
+ const readerCallback = async (readerObj) => {
862
+ let counter = 1;
863
+ let rowCount = 0;
864
+ while (await readerObj.step()) {
865
+ const currentExpectedId = `0x${counter}`;
866
+ resuktassertCallback(readerObj, currentExpectedId);
867
+ counter++;
868
+ rowCount++;
869
+ }
870
+ assert.equal(rowCount, 5);
871
+ };
872
+ const syncReaderCallback = (syncReader) => {
873
+ let counter = 1;
874
+ let rowCount = 0;
875
+ while (syncReader.step()) {
876
+ const currentExpectedId = `0x${counter}`;
877
+ resuktassertCallback(syncReader, currentExpectedId);
878
+ counter++;
879
+ rowCount++;
880
+ }
881
+ assert.equal(rowCount, 5);
882
+ };
883
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback);
884
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 } });
885
+ await readerCallback(reader);
886
+ });
887
+ it("Get only ECInstanceId with UseJsPropertyNames rowFormat", async () => {
888
+ const resultassertCallback = (queryReader, expectedId) => {
889
+ assert.equal(queryReader.current[0], expectedId);
890
+ assert.equal(queryReader.current.id, expectedId);
891
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
892
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
893
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
894
+ assert.equal(queryReader.current.toArray()[0], expectedId);
895
+ assert.equal(queryReader.current.toRow().id, expectedId);
896
+ };
897
+ const readerCallback = async (readerObj) => {
898
+ let counter = 1;
899
+ let rowCount = 0;
900
+ while (await readerObj.step()) {
901
+ const currentExpectedId = `0x${counter}`;
902
+ resultassertCallback(readerObj, currentExpectedId);
903
+ counter++;
904
+ rowCount++;
905
+ }
906
+ assert.equal(rowCount, 5);
907
+ };
908
+ const syncReaderCallback = (syncReader) => {
909
+ let counter = 1;
910
+ let rowCount = 0;
911
+ while (syncReader.step()) {
912
+ const currentExpectedId = `0x${counter}`;
913
+ resultassertCallback(syncReader, currentExpectedId);
914
+ counter++;
915
+ rowCount++;
916
+ }
917
+ assert.equal(rowCount, 5);
918
+ };
919
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
920
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });
921
+ await readerCallback(reader);
922
+ });
923
+ it("Get only ECInstanceId with UseECSqlPropertyNames rowFormat", async () => {
924
+ const resultassertCallback = (queryReader, expectedId) => {
925
+ assert.equal(queryReader.current[0], expectedId);
926
+ assert.equal(queryReader.current.id, expectedId);
927
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
928
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
929
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
930
+ assert.equal(queryReader.current.toArray()[0], expectedId);
931
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
932
+ };
933
+ const readerCallback = async (readerObj) => {
934
+ let counter = 1;
935
+ let rowCount = 0;
936
+ while (await readerObj.step()) {
937
+ const currentExpectedId = `0x${counter}`;
938
+ resultassertCallback(readerObj, currentExpectedId);
939
+ counter++;
940
+ rowCount++;
941
+ }
942
+ assert.equal(rowCount, 5);
943
+ };
944
+ const syncReaderCallback = (syncReader) => {
945
+ let counter = 1;
946
+ let rowCount = 0;
947
+ while (syncReader.step()) {
948
+ const currentExpectedId = `0x${counter}`;
949
+ resultassertCallback(syncReader, currentExpectedId);
950
+ counter++;
951
+ rowCount++;
952
+ }
953
+ assert.equal(rowCount, 5);
954
+ };
955
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
956
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });
957
+ await readerCallback(reader);
958
+ });
959
+ it("Get only ECInstanceId with UseECSqlPropertyIndexes rowFormat", async () => {
960
+ const resultassertCallback = (queryReader, expectedId) => {
961
+ assert.equal(queryReader.current[0], expectedId);
962
+ assert.equal(queryReader.current.id, expectedId);
963
+ assert.equal(queryReader.current.ecinstanceid, expectedId);
964
+ assert.equal(queryReader.current.ECINSTANCEID, expectedId);
965
+ assert.equal(queryReader.current.ECInstanceId, expectedId);
966
+ assert.equal(queryReader.current.toArray()[0], expectedId);
967
+ assert.equal(queryReader.current.toRow().ECInstanceId, expectedId);
968
+ };
969
+ const readerCallback = async (readerObj) => {
970
+ let counter = 1;
971
+ let rowCount = 0;
972
+ while (await readerObj.step()) {
973
+ const currentExpectedId = `0x${counter}`;
974
+ resultassertCallback(readerObj, currentExpectedId);
975
+ counter++;
976
+ rowCount++;
977
+ }
978
+ assert.equal(rowCount, 5);
979
+ };
980
+ const syncReaderCallback = (syncReader) => {
981
+ let counter = 1;
982
+ let rowCount = 0;
983
+ while (syncReader.step()) {
984
+ const currentExpectedId = `0x${counter}`;
985
+ resultassertCallback(syncReader, currentExpectedId);
986
+ counter++;
987
+ rowCount++;
988
+ }
989
+ assert.equal(rowCount, 5);
990
+ };
991
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
992
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
993
+ await readerCallback(reader);
994
+ });
995
+ it("Get one column with custom name with unspecified rowFormat", async () => {
996
+ const resultassertCallback = (queryReader, expectedId) => {
997
+ assert.equal(queryReader.current[0], expectedId);
998
+ assert.equal(queryReader.current.customColumnName, expectedId);
999
+ assert.equal(queryReader.current.toArray()[0], expectedId);
1000
+ assert.equal(queryReader.current.toRow().customColumnName, expectedId);
1001
+ };
1002
+ const readerCallback = async (readerObj) => {
1003
+ let counter = 1;
1004
+ let rowCount = 0;
1005
+ while (await readerObj.step()) {
1006
+ const currentExpectedId = `0x${counter}`;
1007
+ resultassertCallback(readerObj, currentExpectedId);
1008
+ counter++;
1009
+ rowCount++;
1010
+ }
1011
+ assert.equal(rowCount, 5);
1012
+ };
1013
+ const syncReaderCallback = (syncReader) => {
1014
+ let counter = 1;
1015
+ let rowCount = 0;
1016
+ while (syncReader.step()) {
1017
+ const currentExpectedId = `0x${counter}`;
1018
+ resultassertCallback(syncReader, currentExpectedId);
1019
+ counter++;
1020
+ rowCount++;
1021
+ }
1022
+ assert.equal(rowCount, 5);
1023
+ };
1024
+ iModel.withQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback);
1025
+ const reader = iModel.createQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 } });
1026
+ await readerCallback(reader);
1027
+ });
1028
+ it("Get one column with custom name with UseJsPropertyNames rowFormat", async () => {
1029
+ const resultassertCallback = (queryReader, expectedId) => {
1030
+ assert.equal(queryReader.current[0], expectedId);
1031
+ assert.equal(queryReader.current.customColumnName, expectedId);
1032
+ assert.equal(queryReader.current.toArray()[0], expectedId);
1033
+ assert.equal(queryReader.current.toRow().customColumnName, expectedId);
1034
+ };
1035
+ const readerCallback = async (readerObj) => {
1036
+ let counter = 1;
1037
+ let rowCount = 0;
1038
+ while (await readerObj.step()) {
1039
+ const currentExpectedId = `0x${counter}`;
1040
+ resultassertCallback(readerObj, currentExpectedId);
1041
+ counter++;
1042
+ rowCount++;
1043
+ }
1044
+ assert.equal(rowCount, 5);
1045
+ };
1046
+ const syncReaderCallback = (syncReader) => {
1047
+ let counter = 1;
1048
+ let rowCount = 0;
1049
+ while (syncReader.step()) {
1050
+ const currentExpectedId = `0x${counter}`;
1051
+ resultassertCallback(syncReader, currentExpectedId);
1052
+ counter++;
1053
+ rowCount++;
1054
+ }
1055
+ assert.equal(rowCount, 5);
1056
+ };
1057
+ iModel.withQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
1058
+ const reader = iModel.createQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });
1059
+ await readerCallback(reader);
1060
+ });
1061
+ it("Get one column with custom name with UseECSqlPropertyNames rowFormat", async () => {
1062
+ const resultassertCallback = (queryReader, expectedId) => {
1063
+ assert.equal(queryReader.current[0], expectedId);
1064
+ assert.equal(queryReader.current.customColumnName, expectedId);
1065
+ assert.equal(queryReader.current.toArray()[0], expectedId);
1066
+ assert.equal(queryReader.current.toRow().customColumnName, expectedId);
1067
+ };
1068
+ const readerCallback = async (readerObj) => {
1069
+ let counter = 1;
1070
+ let rowCount = 0;
1071
+ while (await readerObj.step()) {
1072
+ const currentExpectedId = `0x${counter}`;
1073
+ resultassertCallback(readerObj, currentExpectedId);
1074
+ counter++;
1075
+ rowCount++;
1076
+ }
1077
+ assert.equal(rowCount, 5);
1078
+ };
1079
+ const syncReaderCallback = (syncReader) => {
1080
+ let counter = 1;
1081
+ let rowCount = 0;
1082
+ while (syncReader.step()) {
1083
+ const currentExpectedId = `0x${counter}`;
1084
+ resultassertCallback(syncReader, currentExpectedId);
1085
+ counter++;
1086
+ rowCount++;
1087
+ }
1088
+ assert.equal(rowCount, 5);
1089
+ };
1090
+ iModel.withQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
1091
+ const reader = iModel.createQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });
1092
+ await readerCallback(reader);
1093
+ });
1094
+ it("Get one column with custom name with UseECSqlPropertyIndexes rowFormat", async () => {
1095
+ const resultassertCallback = (queryReader, expectedId) => {
1096
+ assert.equal(queryReader.current[0], expectedId);
1097
+ assert.equal(queryReader.current.customColumnName, expectedId);
1098
+ assert.equal(queryReader.current.toArray()[0], expectedId);
1099
+ assert.equal(queryReader.current.toRow().customColumnName, expectedId);
1100
+ };
1101
+ const readerCallback = async (readerObj) => {
1102
+ let counter = 1;
1103
+ let rowCount = 0;
1104
+ while (await readerObj.step()) {
1105
+ const currentExpectedId = `0x${counter}`;
1106
+ resultassertCallback(readerObj, currentExpectedId);
1107
+ counter++;
1108
+ rowCount++;
1109
+ }
1110
+ assert.equal(rowCount, 5);
1111
+ };
1112
+ const syncReaderCallback = (syncReader) => {
1113
+ let counter = 1;
1114
+ let rowCount = 0;
1115
+ while (syncReader.step()) {
1116
+ const currentExpectedId = `0x${counter}`;
1117
+ resultassertCallback(syncReader, currentExpectedId);
1118
+ counter++;
1119
+ rowCount++;
1120
+ }
1121
+ assert.equal(rowCount, 5);
1122
+ };
1123
+ iModel.withQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC LIMIT 5", syncReaderCallback, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
1124
+ const reader = iModel.createQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });
1125
+ await readerCallback(reader);
1126
+ });
1127
+ });
1128
+ describe("Get count of results", () => {
1129
+ const expectedRowCount = 46; // 46 Elements in test.bim
1130
+ const sql = "SELECT COUNT(*) numResults FROM (SELECT * FROM bis.Element)";
1131
+ it("Get count of rows using current index", async () => {
1132
+ const syncReaderCallback = (syncReader) => {
1133
+ syncReader.step();
1134
+ assert.equal(syncReader.current[0], expectedRowCount);
1135
+ };
1136
+ const readerCallback = async (readerObj) => {
1137
+ await readerObj.step();
1138
+ assert.equal(readerObj.current[0], expectedRowCount);
1139
+ };
1140
+ iModel.withQueryReader(sql, syncReaderCallback);
1141
+ const reader = iModel.createQueryReader(sql);
1142
+ await readerCallback(reader);
1143
+ });
1144
+ it("Get count of rows using current column name", async () => {
1145
+ const readerCallback = async (readerObj) => {
1146
+ await readerObj.step();
1147
+ assert.equal(readerObj.current.numResults, expectedRowCount);
1148
+ };
1149
+ const syncReaderCallback = (syncReader) => {
1150
+ syncReader.step();
1151
+ assert.equal(syncReader.current.numResults, expectedRowCount);
1152
+ };
1153
+ iModel.withQueryReader(sql, syncReaderCallback);
1154
+ const reader = iModel.createQueryReader(sql);
1155
+ await readerCallback(reader);
1156
+ });
1157
+ it("Get count of rows using current and toRow", async () => {
1158
+ const readerCallback = async (readerObj) => {
1159
+ await readerObj.step();
1160
+ assert.equal(readerObj.current.toRow().numResults, expectedRowCount);
1161
+ };
1162
+ const syncReaderCallback = (syncReader) => {
1163
+ syncReader.step();
1164
+ assert.equal(syncReader.current.toRow().numResults, expectedRowCount);
1165
+ };
1166
+ iModel.withQueryReader(sql, syncReaderCallback);
1167
+ const reader = iModel.createQueryReader(sql);
1168
+ await readerCallback(reader);
1169
+ });
1170
+ it("Get count of rows using toArray result itself", async () => {
1171
+ const readerCallback = async (readerObj) => {
1172
+ await readerObj.step();
1173
+ assert.equal(readerObj.current.toArray()[0], expectedRowCount);
1174
+ };
1175
+ const syncReaderCallback = (syncReader) => {
1176
+ syncReader.step();
1177
+ assert.equal(syncReader.current.toArray()[0], expectedRowCount);
1178
+ };
1179
+ iModel.withQueryReader(sql, syncReaderCallback);
1180
+ const reader = iModel.createQueryReader(sql);
1181
+ await readerCallback(reader);
1182
+ });
1183
+ it("Get count of rows using iterable iterator and index", async () => {
1184
+ const readerCallback = async (readerObj) => {
1185
+ let count = 0;
1186
+ for await (const row of readerObj) {
1187
+ count = row[0];
1188
+ }
1189
+ assert.equal(count, expectedRowCount);
1190
+ };
1191
+ const syncReaderCallback = (syncReader) => {
1192
+ let count = 0;
1193
+ for (const row of syncReader) {
1194
+ count = row[0];
1195
+ }
1196
+ assert.equal(count, expectedRowCount);
1197
+ };
1198
+ iModel.withQueryReader(sql, syncReaderCallback);
1199
+ const reader = iModel.createQueryReader(sql);
1200
+ await readerCallback(reader);
1201
+ });
1202
+ it("Get count of rows using iterable iterator and column name", async () => {
1203
+ const readerCallback = async (readerObj) => {
1204
+ let count = 0;
1205
+ for await (const row of readerObj) {
1206
+ count = row.numResults;
1207
+ }
1208
+ assert.equal(count, expectedRowCount);
1209
+ };
1210
+ const syncReaderCallback = (syncReader) => {
1211
+ let count = 0;
1212
+ for (const row of syncReader) {
1213
+ count = row.numResults;
1214
+ }
1215
+ assert.equal(count, expectedRowCount);
1216
+ };
1217
+ iModel.withQueryReader(sql, syncReaderCallback);
1218
+ const reader = iModel.createQueryReader(sql);
1219
+ await readerCallback(reader);
1220
+ });
1221
+ it("Get count of rows using iterable iterator and toRow", async () => {
1222
+ const readerCallback = async (readerObj) => {
1223
+ let count = 0;
1224
+ for await (const row of readerObj) {
1225
+ count = row.toRow().numResults;
1226
+ }
1227
+ assert.equal(count, expectedRowCount);
1228
+ };
1229
+ const syncReaderCallback = (syncReader) => {
1230
+ let count = 0;
1231
+ for (const row of syncReader) {
1232
+ count = row.toRow().numResults;
1233
+ }
1234
+ assert.equal(count, expectedRowCount);
1235
+ };
1236
+ iModel.withQueryReader(sql, syncReaderCallback);
1237
+ const reader = iModel.createQueryReader(sql);
1238
+ await readerCallback(reader);
1239
+ });
1240
+ });
1241
+ describe("Tests for extendedType and extendType property behaviour of QueryPropertyMetaData", () => {
1242
+ it("Id type column with alias", async () => {
1243
+ const readerCallback = async (readerObj) => {
1244
+ const metaData = await readerObj.getMetaData();
1245
+ assert.equal("Id", metaData[0].extendedType);
1246
+ assert.equal("Id", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1247
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1248
+ };
1249
+ const syncReaderCallback = (syncReader) => {
1250
+ const metaData = syncReader.getMetaData();
1251
+ assert.equal("Id", metaData[0].extendedType);
1252
+ assert.equal("Id", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1253
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1254
+ };
1255
+ iModel.withQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", syncReaderCallback);
1256
+ const reader = iModel.createQueryReader("SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC");
1257
+ await readerCallback(reader);
1258
+ });
1259
+ it("Id type column without alias", async () => {
1260
+ const readerCallback = async (readerObj) => {
1261
+ const metaData = await readerObj.getMetaData();
1262
+ assert.equal("Id", metaData[0].extendedType);
1263
+ assert.equal("Id", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1264
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1265
+ };
1266
+ const syncReaderCallback = (syncReader) => {
1267
+ const metaData = syncReader.getMetaData();
1268
+ assert.equal("Id", metaData[0].extendedType);
1269
+ assert.equal("Id", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1270
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1271
+ };
1272
+ iModel.withQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC", syncReaderCallback);
1273
+ const reader = iModel.createQueryReader("SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC");
1274
+ await readerCallback(reader);
1275
+ });
1276
+ it("ClassId type column", async () => {
1277
+ const readerCallback = async (readerObj) => {
1278
+ const metaData = await readerObj.getMetaData();
1279
+ assert.equal("ClassId", metaData[0].extendedType);
1280
+ assert.equal("ClassId", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1281
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1282
+ };
1283
+ const syncReaderCallback = (syncReader) => {
1284
+ const metaData = syncReader.getMetaData();
1285
+ assert.equal("ClassId", metaData[0].extendedType);
1286
+ assert.equal("ClassId", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1287
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1288
+ };
1289
+ iModel.withQueryReader("SELECT ECClassId FROM bis.Element ORDER BY ECClassId ASC", syncReaderCallback);
1290
+ const reader = iModel.createQueryReader("SELECT ECClassId FROM bis.Element ORDER BY ECClassId ASC");
1291
+ await readerCallback(reader);
1292
+ });
1293
+ it("Column without extended type", async () => {
1294
+ const readerCallback = async (readerObj) => {
1295
+ const metaData = await readerObj.getMetaData();
1296
+ assert.equal(undefined, metaData[0].extendedType);
1297
+ assert.equal("", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1298
+ };
1299
+ const syncReaderCallback = (syncReader) => {
1300
+ const metaData = syncReader.getMetaData();
1301
+ assert.equal(undefined, metaData[0].extendedType);
1302
+ assert.equal("", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1303
+ };
1304
+ iModel.withQueryReader("SELECT s.Name FROM meta.ECSchemaDef s ORDER BY s.Name ASC", syncReaderCallback);
1305
+ const reader = iModel.createQueryReader("SELECT s.Name FROM meta.ECSchemaDef s ORDER BY s.Name ASC");
1306
+ await readerCallback(reader);
1307
+ });
1308
+ it("Column without extended type with alias", async () => {
1309
+ const readerCallback = async (readerObj) => {
1310
+ const metaData = await readerObj.getMetaData();
1311
+ assert.equal(undefined, metaData[0].extendedType);
1312
+ assert.equal("", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1313
+ };
1314
+ const syncReaderCallback = (syncReader) => {
1315
+ const metaData = syncReader.getMetaData();
1316
+ assert.equal(undefined, metaData[0].extendedType);
1317
+ assert.equal("", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1318
+ };
1319
+ iModel.withQueryReader("SELECT s.Name a FROM meta.ECSchemaDef s ORDER BY a ASC", syncReaderCallback);
1320
+ const reader = iModel.createQueryReader("SELECT s.Name a FROM meta.ECSchemaDef s ORDER BY a ASC");
1321
+ await readerCallback(reader);
1322
+ });
1323
+ it("Geometric type column with alias", async () => {
1324
+ const readerCallback = async (readerObj) => {
1325
+ const metaData = await readerObj.getMetaData();
1326
+ assert.equal("GeometryStream", metaData[0].extendedType);
1327
+ assert.equal("GeometryStream", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1328
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1329
+ };
1330
+ const syncReaderCallback = (syncReader) => {
1331
+ const metaData = syncReader.getMetaData();
1332
+ assert.equal("GeometryStream", metaData[0].extendedType);
1333
+ assert.equal("GeometryStream", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1334
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1335
+ };
1336
+ iModel.withQueryReader("select GeometryStream A from bis.GeometricElement3d LIMIT 1", syncReaderCallback);
1337
+ const reader = iModel.createQueryReader("select GeometryStream A from bis.GeometricElement3d LIMIT 1");
1338
+ await readerCallback(reader);
1339
+ });
1340
+ it("Geometric type column without alias", async () => {
1341
+ const readerCallback = async (readerObj) => {
1342
+ const metaData = await readerObj.getMetaData();
1343
+ assert.equal("GeometryStream", metaData[0].extendedType);
1344
+ assert.equal("GeometryStream", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1345
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1346
+ };
1347
+ const syncReaderCallback = (syncReader) => {
1348
+ const metaData = syncReader.getMetaData();
1349
+ assert.equal("GeometryStream", metaData[0].extendedType);
1350
+ assert.equal("GeometryStream", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1351
+ assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated
1352
+ };
1353
+ iModel.withQueryReader("select GeometryStream from bis.GeometricElement3d LIMIT 1", syncReaderCallback);
1354
+ const reader = iModel.createQueryReader("select GeometryStream from bis.GeometricElement3d LIMIT 1");
1355
+ await readerCallback(reader);
1356
+ });
1357
+ });
1358
+ });
1359
+ }));
1360
+ describe("createQueryReader vs withQueryReader ", () => {
1361
+ /** Deletes an entire element tree, including sub-models, child elements and code scope references.
1362
+ * Items are deleted in bottom-up order. Definitions and Subjects are deleted after normal elements.
1363
+ * Call deleteNormalElements on each tree. Then call deleteSpecialElements.
1364
+ */
1365
+ class TestElementCascadingDeleter extends ElementTreeDeleter {
1366
+ shouldVisitCodeScopes(_elementId, _scope) {
1367
+ return true;
1368
+ }
1369
+ /** The main tree-walking function */
1370
+ processElementTree(element, scope) {
1371
+ if (this.shouldVisitCodeScopes(element, scope)) {
1372
+ this._processCodeScopes(element, scope);
1373
+ }
1374
+ super.processElementTree(element, scope);
1375
+ }
1376
+ /** Process code scope references */
1377
+ _processCodeScopes(element, scope) {
1378
+ const newScope = new ElementTreeWalkerScope(scope, element);
1379
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
1380
+ this._iModel.withPreparedStatement(`
1381
+ SELECT ECInstanceId
1382
+ FROM bis.Element
1383
+ WHERE CodeScope.id=?
1384
+ AND Parent.id IS NULL
1385
+ `, (stmt) => {
1386
+ stmt.bindId(1, element);
1387
+ while (stmt.step() === DbResult.BE_SQLITE_ROW) {
1388
+ const elementId = stmt.getValue(0).getId();
1389
+ this.processElementTree(elementId, newScope);
1390
+ }
1391
+ });
1392
+ }
1393
+ }
1394
+ // Actual test begins here
1395
+ let iModelDb;
1396
+ function createTestIModelWithScopedPhysicalObject() {
1397
+ const pathForEmpty = IModelTestUtils.prepareOutputFile("ECReferenceTypesCache", "empty.bim");
1398
+ const testIModelDb = SnapshotDb.createEmpty(pathForEmpty, {
1399
+ rootSubject: { name: "empty " },
1400
+ });
1401
+ const subjectId = Subject.insert(testIModelDb, IModel.rootSubjectId, "Subject", "Subject Description");
1402
+ const physicalModelId = PhysicalModel.insert(testIModelDb, subjectId, "Physical");
1403
+ const definitionModelId = DefinitionModel.insert(testIModelDb, subjectId, "Definition");
1404
+ const spatialCategoryId = IModelTestUtils.insertSpatialCategory(testIModelDb, definitionModelId, "SpatialCategory", ColorDef.green);
1405
+ const physicalObjectProps5 = {
1406
+ classFullName: PhysicalObject.classFullName,
1407
+ model: physicalModelId,
1408
+ category: spatialCategoryId,
1409
+ code: Code.createEmpty(),
1410
+ userLabel: "ScopingElement",
1411
+ };
1412
+ const scopingElement = testIModelDb.elements.insertElement(physicalObjectProps5);
1413
+ const childElement = {
1414
+ classFullName: PhysicalObject.classFullName,
1415
+ model: physicalModelId,
1416
+ category: spatialCategoryId,
1417
+ code: { spec: "0x1", scope: scopingElement },
1418
+ userLabel: "ScopedElement",
1419
+ };
1420
+ testIModelDb.elements.insertElement(childElement);
1421
+ testIModelDb.saveChanges();
1422
+ return testIModelDb;
1423
+ }
1424
+ beforeEach(async () => {
1425
+ iModelDb = createTestIModelWithScopedPhysicalObject();
1426
+ });
1427
+ afterEach(async () => {
1428
+ iModelDb.close();
1429
+ });
1430
+ it("Failing while using createQueryReader()", async () => {
1431
+ const sql = `
1432
+ SELECT ECInstanceId
1433
+ FROM ${PhysicalObject.classFullName}
1434
+ `;
1435
+ const reader = iModelDb.createQueryReader(sql, undefined, { usePrimaryConn: true });
1436
+ const elementTreeDeleter = new TestElementCascadingDeleter(iModelDb);
1437
+ await reader.step(); // step to initialize reader
1438
+ const firstId = reader.current[0];
1439
+ elementTreeDeleter.deleteNormalElements(firstId);
1440
+ await reader.step(); // step to initialize reader
1441
+ const secondId = reader.current[0];
1442
+ // This is because ecsqlreader built using createQueryReader caches results and so when it tries to access the second element, it is already deleted from the database and it throws "Not Found" error.
1443
+ expect(() => elementTreeDeleter.deleteNormalElements(secondId)).to.throw();
1444
+ });
1445
+ it("Passing while using withQueryReader()", async () => {
1446
+ const sql = `
1447
+ SELECT ECInstanceId
1448
+ FROM ${PhysicalObject.classFullName}
1449
+ `;
1450
+ iModelDb.withQueryReader(sql, (reader) => {
1451
+ const elementTreeDeleter = new TestElementCascadingDeleter(iModelDb);
1452
+ let cntSteps = 0;
1453
+ while (reader.step()) {
1454
+ const id = reader.current[0];
1455
+ elementTreeDeleter.deleteNormalElements(id);
1456
+ cntSteps++;
1457
+ }
1458
+ assert.equal(cntSteps, 1);
1459
+ });
1460
+ });
1461
+ });
1462
+ //# sourceMappingURL=QueryReaders.test.js.map