@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
@@ -14,6 +14,7 @@ import { IModelTestUtils } from "../IModelTestUtils";
14
14
  import { validateWorkspaceContainerId } from "../../internal/workspace/WorkspaceImpl";
15
15
  import { _nativeDb } from "../../internal/Symbols";
16
16
  import { CloudSqlite } from "../../CloudSqlite";
17
+ import { BlobContainer } from "../../BlobContainerService";
17
18
  describe("WorkspaceFile", () => {
18
19
  let editor;
19
20
  let workspace;
@@ -163,5 +164,217 @@ describe("WorkspaceFile", () => {
163
164
  fontsDb.addFile("Helvetica.ttf", schemaFile, "ttf");
164
165
  fontsDb.close();
165
166
  });
167
+ describe("workspace db version cache key", () => {
168
+ afterEach(() => sinon.restore());
169
+ function getContainer(containerId, props) {
170
+ return editor.getContainer({ containerId, baseUri: "", storageType: "azure", accessToken: "", ...props });
171
+ }
172
+ function createFakeCloudContainer(containerId) {
173
+ return {
174
+ connect: () => { },
175
+ disconnect: () => { },
176
+ checkForChanges: () => { },
177
+ queryDatabase: () => undefined,
178
+ queryDatabases: () => [],
179
+ acquireWriteLock: () => { },
180
+ releaseWriteLock: () => { },
181
+ abandonChanges: () => { },
182
+ containerId,
183
+ baseUri: "https://example.invalid",
184
+ storageType: "azure",
185
+ isPublic: false,
186
+ };
187
+ }
188
+ function stubCloudLookup(containerId, resolveVersion) {
189
+ sinon.stub(CloudSqlite, "createCloudContainer").returns(createFakeCloudContainer(containerId));
190
+ sinon.stub(CloudSqlite, "querySemverMatch").callsFake((props) => CloudSqlite.makeSemverName(props.dbName, resolveVersion(props)));
191
+ sinon.stub(CloudSqlite, "isSemverEditable").returns(true);
192
+ }
193
+ it("local getWorkspaceDb ignores version selectors for cache identity", async () => {
194
+ const container = getContainer("workspace-cache-local");
195
+ await container.createDb({ dbName: "test-db", manifest: { workspaceName: "workspace-cache-local" } });
196
+ const db1 = container.getWorkspaceDb({ dbName: "test-db" });
197
+ const db2 = container.getWorkspaceDb({ dbName: "test-db", version: "1.0.0", includePrerelease: true });
198
+ expect(db1).to.equal(db2);
199
+ });
200
+ it("local createDb with omitted dbName matches an explicit default-name lookup", async () => {
201
+ const container = getContainer("workspace-cache-local-default-name");
202
+ const db1 = await container.createDb({ manifest: { workspaceName: "workspace-cache-local-default-name" } });
203
+ const db2 = container.getEditableDb({ dbName: "workspace-db" });
204
+ expect(db1).to.equal(db2);
205
+ });
206
+ it("cloud getWorkspaceDb reuses the same instance for semver-equivalent selectors", () => {
207
+ const containerId = "workspace-cache-cloud-equivalent";
208
+ stubCloudLookup(containerId, (props) => props.version === "1" ? "1.0.0" : (props.version ?? "1.0.0"));
209
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
210
+ const db1 = container.getWorkspaceDb({ dbName: "test-db", version: "1" });
211
+ const db2 = container.getWorkspaceDb({ dbName: "test-db", version: "1.0.0" });
212
+ expect(db1).to.equal(db2);
213
+ });
214
+ it("cloud getWorkspaceDb returns different instances for different resolved versions", () => {
215
+ const containerId = "workspace-cache-cloud-different";
216
+ stubCloudLookup(containerId, (props) => props.version ?? "1.0.0");
217
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
218
+ const db1 = container.getWorkspaceDb({ dbName: "test-db", version: "1.0.0" });
219
+ const db2 = container.getWorkspaceDb({ dbName: "test-db", version: "2.0.0" });
220
+ expect(db1).to.not.equal(db2);
221
+ });
222
+ it("cloud getWorkspaceDb respects includePrerelease only when it resolves differently", () => {
223
+ const containerId = "workspace-cache-cloud-prerelease";
224
+ stubCloudLookup(containerId, (props) => props.includePrerelease ? "1.1.0-beta.1" : "1.0.0");
225
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
226
+ const stable = container.getWorkspaceDb({ dbName: "test-db", version: "*" });
227
+ const prerelease = container.getWorkspaceDb({ dbName: "test-db", version: "*", includePrerelease: true });
228
+ expect(stable).to.not.equal(prerelease);
229
+ });
230
+ it("createDb with explicit version returns the cached editable db for that resolved version", async () => {
231
+ const containerId = "workspace-create-version";
232
+ stubCloudLookup(containerId, (props) => props.version ?? "0.0.0");
233
+ sinon.stub(CloudSqlite, "uploadDb").resolves();
234
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
235
+ const db = await container.createDb({ dbName: "test-db", version: "1.0.0", manifest: { workspaceName: "workspace-create-version" } });
236
+ const dbAgain = container.getEditableDb({ dbName: "test-db", version: "1.0.0" });
237
+ expect(db).to.equal(dbAgain);
238
+ });
239
+ it("createDb without an explicit version returns the cached editable db for version 0.0.0", async () => {
240
+ const containerId = "workspace-create-default-version";
241
+ stubCloudLookup(containerId, (props) => props.version ?? "0.0.0");
242
+ sinon.stub(CloudSqlite, "uploadDb").resolves();
243
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
244
+ const db = await container.createDb({ dbName: "test-db", manifest: { workspaceName: "workspace-create-default-version" } });
245
+ const dbAgain = container.getEditableDb({ dbName: "test-db", version: "0.0.0" });
246
+ expect(db).to.equal(dbAgain);
247
+ });
248
+ it("cloud createDb uploads using the requested version", async () => {
249
+ const containerId = "workspace-cloud-explicit-version";
250
+ stubCloudLookup(containerId, (props) => props.version ?? "0.0.0");
251
+ const uploadDb = sinon.stub(CloudSqlite, "uploadDb").resolves();
252
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
253
+ await container.createDb({ dbName: "test-db", version: "1.2.3", manifest: { workspaceName: "workspace-cloud-explicit-version" } });
254
+ expect(uploadDb.calledOnce).to.be.true;
255
+ expect(uploadDb.firstCall.args[1].dbName).to.equal("test-db:1.2.3");
256
+ });
257
+ it("cloud createDb defaults omitted version to 0.0.0", async () => {
258
+ const containerId = "workspace-cloud-default-version";
259
+ stubCloudLookup(containerId, (props) => props.version ?? "0.0.0");
260
+ const uploadDb = sinon.stub(CloudSqlite, "uploadDb").resolves();
261
+ const container = getContainer(containerId, { baseUri: "https://example.invalid" });
262
+ await container.createDb({ dbName: "test-db", manifest: { workspaceName: "workspace-cloud-default-version" } });
263
+ expect(uploadDb.calledOnce).to.be.true;
264
+ expect(uploadDb.firstCall.args[1].dbName).to.equal("test-db:0.0.0");
265
+ });
266
+ });
267
+ describe("getContainerAsync token resolution", () => {
268
+ afterEach(() => sinon.restore());
269
+ it("preserves an explicitly-provided accessToken", async () => {
270
+ const requestTokenStub = sinon.stub(CloudSqlite, "requestToken").rejects(new Error("should not be called"));
271
+ const getContainerSpy = sinon.spy(workspace, "getContainer");
272
+ const props = {
273
+ containerId: "explicit-token-test",
274
+ baseUri: "https://some-cloud-uri",
275
+ storageType: "azure",
276
+ accessToken: "my-explicit-token",
277
+ };
278
+ try {
279
+ await workspace.getContainerAsync(props);
280
+ }
281
+ catch {
282
+ // expected — no real cloud endpoint
283
+ }
284
+ expect(requestTokenStub.called).to.be.false;
285
+ expect(getContainerSpy.calledOnce).to.be.true;
286
+ expect(getContainerSpy.firstCall.args[0].accessToken).to.equal("my-explicit-token");
287
+ });
288
+ it("uses empty token for local containers with empty baseUri", async () => {
289
+ const requestTokenStub = sinon.stub(CloudSqlite, "requestToken").rejects(new Error("should not be called"));
290
+ const getContainerSpy = sinon.spy(workspace, "getContainer");
291
+ const props = {
292
+ containerId: "local-token-test",
293
+ baseUri: "",
294
+ storageType: "azure",
295
+ };
296
+ await workspace.getContainerAsync(props);
297
+ expect(requestTokenStub.called).to.be.false;
298
+ expect(getContainerSpy.calledOnce).to.be.true;
299
+ expect(getContainerSpy.firstCall.args[0].accessToken).to.equal("");
300
+ });
301
+ it("calls requestToken when no accessToken is provided for a cloud container", async () => {
302
+ const requestTokenStub = sinon.stub(CloudSqlite, "requestToken").resolves("resolved-token");
303
+ const getContainerSpy = sinon.spy(workspace, "getContainer");
304
+ const props = {
305
+ containerId: "cloud-no-token-test",
306
+ baseUri: "https://some-cloud-uri",
307
+ storageType: "azure",
308
+ };
309
+ try {
310
+ await workspace.getContainerAsync(props);
311
+ }
312
+ catch {
313
+ // expected — no real cloud endpoint
314
+ }
315
+ expect(requestTokenStub.calledOnce).to.be.true;
316
+ expect(getContainerSpy.calledOnce).to.be.true;
317
+ expect(getContainerSpy.firstCall.args[0].accessToken).to.equal("resolved-token");
318
+ });
319
+ });
320
+ describe("findContainers", () => {
321
+ const testContainerId = "mock-workspace-container-id";
322
+ const testITwinId = "mock-itwin-id";
323
+ const testIModelId = "mock-imodel-id";
324
+ let savedService;
325
+ function createMockService(containers) {
326
+ return {
327
+ create: async () => ({ containerId: testContainerId, baseUri: "https://mock.blob.core/", provider: "azure" }),
328
+ delete: async () => { },
329
+ queryScope: async () => ({ iTwinId: testITwinId }),
330
+ queryMetadata: async () => ({ containerType: "workspace", label: "mock" }),
331
+ queryContainersMetadata: async (_userToken, args) => {
332
+ return containers.filter((c) => (args.containerType === undefined || c.containerType === args.containerType) &&
333
+ (args.iTwinId === testITwinId || args.iTwinId === undefined));
334
+ },
335
+ updateJson: async () => { },
336
+ requestToken: async (_props) => ({
337
+ token: "",
338
+ scope: { iTwinId: testITwinId },
339
+ provider: "azure",
340
+ expiration: new Date(Date.now() + 3600000),
341
+ metadata: { containerType: "workspace", label: "mock" },
342
+ baseUri: "",
343
+ }),
344
+ };
345
+ }
346
+ before(() => {
347
+ savedService = BlobContainer.service;
348
+ });
349
+ afterEach(() => {
350
+ BlobContainer.service = savedService;
351
+ });
352
+ it("finds containers by iTwinId", async () => {
353
+ BlobContainer.service = createMockService([
354
+ { containerId: testContainerId, containerType: "workspace", label: "Test Workspace" },
355
+ ]);
356
+ const containers = await editor.findContainers({ iTwinId: testITwinId });
357
+ expect(containers).to.have.length(1);
358
+ expect(containers[0].fromProps.containerId).to.equal(testContainerId);
359
+ });
360
+ it("finds a container by iTwinId and iModelId", async () => {
361
+ BlobContainer.service = createMockService([
362
+ { containerId: "imodel-scoped-container", containerType: "workspace", label: "iModel Workspace" },
363
+ ]);
364
+ const containers = await editor.findContainers({ iTwinId: testITwinId, iModelId: testIModelId });
365
+ expect(containers).to.have.length(1);
366
+ expect(containers[0].fromProps.containerId).to.equal("imodel-scoped-container");
367
+ });
368
+ it("returns empty array when no workspace containers are found", async () => {
369
+ BlobContainer.service = createMockService([]);
370
+ const containers = await editor.findContainers({ iTwinId: "nonexistent-itwin" });
371
+ expect(containers).to.have.length(0);
372
+ });
373
+ it("throws when BlobContainer.service is not available", async () => {
374
+ BlobContainer.service = undefined;
375
+ await expect(editor.findContainers({ iTwinId: testITwinId }))
376
+ .to.be.rejectedWith(/BlobContainer.service is not available/);
377
+ });
378
+ });
166
379
  });
167
380
  //# sourceMappingURL=Workspace.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Workspace.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/Workspace.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { expect } from \"chai\";\r\nimport * as fs from \"fs-extra\";\r\nimport { extname } from \"path\";\r\nimport * as sinon from \"sinon\";\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { SettingsPriority } from \"../../workspace/Settings\";\r\nimport { Workspace, WorkspaceContainerProps, WorkspaceDbManifest, WorkspaceDbProps } from \"../../workspace/Workspace\";\r\nimport { EditableWorkspaceDb, WorkspaceEditor } from \"../../workspace/WorkspaceEditor\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { validateWorkspaceContainerId } from \"../../internal/workspace/WorkspaceImpl\";\r\nimport { _nativeDb } from \"../../internal/Symbols\";\r\nimport { CloudSqlite } from \"../../CloudSqlite\";\r\n\r\ndescribe(\"WorkspaceFile\", () => {\r\n\r\n let editor: WorkspaceEditor;\r\n let workspace: Workspace;\r\n\r\n before(() => {\r\n editor = WorkspaceEditor.construct();\r\n workspace = editor.workspace;\r\n });\r\n after(() => {\r\n editor.close();\r\n });\r\n\r\n async function makeEditableDb(props: WorkspaceDbProps & WorkspaceContainerProps, manifest: WorkspaceDbManifest): Promise<EditableWorkspaceDb> {\r\n const container = editor.getContainer({ ...props, accessToken: \"\" });\r\n const wsFile = await container.createDb({ ...props, manifest });\r\n wsFile.open();\r\n return wsFile;\r\n }\r\n\r\n function compareFiles(file1: string, file2: string) {\r\n expect(fs.lstatSync(file1).size).equal(fs.lstatSync(file2).size);\r\n expect(fs.readFileSync(file1)).to.deep.equal(fs.readFileSync(file2));\r\n }\r\n\r\n it(\"WorkspaceContainer names\", () => {\r\n const expectBadName = (names: string[]) => {\r\n names.forEach((containerId) => {\r\n expect(() => validateWorkspaceContainerId(containerId), containerId).to.throw(\"containerId\");\r\n });\r\n };\r\n\r\n expectBadName([\r\n \"\",\r\n \" \",\r\n \"12\", // too short\r\n \"a\\\\b\",\r\n `a\"b`,\r\n \"a:b\",\r\n \"a.b\",\r\n \"a?b\",\r\n \"a*b\",\r\n \"a|b\",\r\n \"123--4\",\r\n \"Abc\",\r\n \"return\\r\",\r\n \"newline\\n\",\r\n \"a\".repeat(64), // too long\r\n \"-leading-dash\",\r\n \"trailing-dash-\"]);\r\n\r\n validateWorkspaceContainerId(Guid.createValue()); // guids should be valid\r\n });\r\n\r\n it(\"WorkspaceDbNames\", () => {\r\n const expectBadName = (names: string[]) => {\r\n names.forEach((dbName) => {\r\n expect(() => CloudSqlite.validateDbName(dbName)).to.throw(\"dbName\");\r\n });\r\n };\r\n\r\n expectBadName([\r\n \"\",\r\n \" \",\r\n \"1/2\",\r\n \"a\\\\b\",\r\n `a\"b`,\r\n \"base:1.2.3\",\r\n \"a:b\",\r\n \"a.b\",\r\n \"a?b\",\r\n \"a*b\",\r\n \"a|b\",\r\n \"con\",\r\n \"prn\",\r\n \"return\\r\",\r\n \"newline\\n\",\r\n \"a\".repeat(256), // too long\r\n \" leading space\",\r\n \"trailing space \",\r\n \"per.iod\",\r\n \"hash#tag\",\r\n \"back`tick\",\r\n \"single'quote\",\r\n ]);\r\n\r\n CloudSqlite.validateDbName(Guid.createValue()); // guids should be valid\r\n });\r\n\r\n it(\"WorkspaceDb version fallback\", () => {\r\n expect(CloudSqlite.validateDbVersion(\"\" as CloudSqlite.DbVersion)).equals(\"0.0.0\");\r\n expect(CloudSqlite.makeSemverName(\"db1\", \"\" as CloudSqlite.DbVersion)).equals(\"db1:0.0.0\");\r\n expect(() => CloudSqlite.validateDbVersion(\" \" as CloudSqlite.DbVersion)).to.throw(\"invalid version specification\");\r\n });\r\n\r\n it(\"create new WorkspaceDb\", async () => {\r\n const manifest: WorkspaceDbManifest = { workspaceName: \"resources for acme users\", contactName: \"contact me\" };\r\n const wsFile = await makeEditableDb({ containerId: \"acme-engineering-inc-2\", dbName: \"db1\", baseUri: \"\", storageType: \"azure\" }, manifest);\r\n const inFile = IModelTestUtils.resolveAssetFile(\"test.setting.json5\");\r\n const testRange = new Range3d(1.2, 2.3, 3.4, 4.5, 5.6, 6.7);\r\n let blobVal = new Uint8Array(testRange.toFloat64Array().buffer);\r\n let strVal = \"this is test1\";\r\n const strRscName = \"string-resource/1\";\r\n const blobRscName = \"blob.resource:1\";\r\n const fileRscName = \"settings files/my settings/a.json5\";\r\n\r\n let testManifest = wsFile.manifest;\r\n expect(testManifest.workspaceName).equals(manifest.workspaceName);\r\n expect(testManifest.contactName).equals(manifest.contactName);\r\n\r\n wsFile.updateManifest({ ...testManifest, contactName: \"new contact\" });\r\n testManifest = wsFile.manifest;\r\n expect(testManifest.workspaceName).equals(manifest.workspaceName);\r\n expect(testManifest.contactName).equals(\"new contact\");\r\n\r\n expect(() => wsFile.addFile(fileRscName, \"bad file name\")).to.throw(\"no such file\");\r\n expect(() => wsFile.updateFile(fileRscName, inFile)).to.throw(\"error replacing\");\r\n expect(() => wsFile.removeFile(fileRscName)).to.throw(\"does not exist\");\r\n\r\n wsFile.addBlob(blobRscName, blobVal);\r\n wsFile.addString(strRscName, strVal);\r\n expect(wsFile.getString(strRscName)).equals(strVal);\r\n expect(wsFile.getBlob(blobRscName)).to.deep.equal(blobVal);\r\n strVal = \"updated string\";\r\n blobVal = Uint8Array.from([0, 1, 2, 3]);\r\n wsFile.updateString(strRscName, strVal);\r\n wsFile.updateBlob(blobRscName, blobVal);\r\n expect(wsFile.getString(strRscName)).equals(strVal);\r\n expect(wsFile.getBlob(blobRscName)).to.deep.equal(blobVal);\r\n\r\n wsFile.removeBlob(blobRscName);\r\n wsFile.removeString(strRscName);\r\n expect(wsFile.getString(strRscName)).to.be.undefined;\r\n expect(wsFile.getBlob(blobRscName)).to.be.undefined;\r\n\r\n wsFile.addFile(fileRscName, inFile);\r\n const writeFile = sinon.spy(wsFile.sqliteDb[_nativeDb], \"extractEmbeddedFile\");\r\n expect(writeFile.callCount).eq(0);\r\n const outFile = wsFile.getFile(fileRscName)!;\r\n expect(writeFile.callCount).eq(1);\r\n expect(extname(outFile)).equals(\".json5\");\r\n compareFiles(inFile, outFile);\r\n\r\n let outFile2 = wsFile.getFile(fileRscName)!;\r\n expect(writeFile.callCount).eq(1);\r\n expect(outFile).eq(outFile2);\r\n\r\n const inFile2 = IModelTestUtils.resolveAssetFile(\"TestSettings.schema.json\");\r\n wsFile.updateFile(fileRscName, inFile2);\r\n outFile2 = wsFile.getFile(fileRscName)!;\r\n expect(writeFile.callCount).eq(2);\r\n expect(outFile).eq(outFile2);\r\n compareFiles(inFile2, outFile);\r\n });\r\n\r\n it(\"load workspace settings\", async () => {\r\n const settingsFile = IModelTestUtils.resolveAssetFile(\"test.setting.json5\");\r\n const defaultDb = await makeEditableDb({ containerId: \"default\", dbName: \"db1\", baseUri: \"\", storageType: \"azure\" }, { workspaceName: \"default resources\", contactName: \"contact 123\" });\r\n defaultDb.addString(\"default-settings\", fs.readFileSync(settingsFile, \"utf-8\"));\r\n defaultDb.close();\r\n\r\n const settings = workspace.settings;\r\n await workspace.loadSettingsDictionary(\r\n { dbName: \"db1\", containerId: \"default\", baseUri: \"\", storageType: \"azure\", resourceName: \"default-settings\", priority: SettingsPriority.defaults });\r\n expect(settings.getSetting(\"editor/renderWhitespace\")).equals(\"selection\");\r\n\r\n const workspaceName = \"all fonts workspace\";\r\n const schemaFile = IModelTestUtils.resolveAssetFile(\"TestSettings.schema.json\");\r\n const fontsDb = await makeEditableDb({ containerId: \"fonts\", dbName: \"fonts\", baseUri: \"\", storageType: \"azure\" }, { workspaceName, contactName: \"font guy\" });\r\n\r\n fontsDb.addFile(\"Helvetica.ttf\", schemaFile, \"ttf\");\r\n fontsDb.close();\r\n });\r\n\r\n});\r\n"]}
1
+ {"version":3,"file":"Workspace.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/Workspace.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAuB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAE7B,IAAI,MAAuB,CAAC;IAC5B,IAAI,SAAoB,CAAC;IAEzB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;QACrC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,KAAiD,EAAE,QAA6B;QAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAa;QAChD,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,EAAE;YACxC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC;YACZ,EAAE;YACF,IAAI;YACJ,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;YACR,KAAK;YACL,UAAU;YACV,WAAW;YACX,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW;YAC3B,eAAe;YACf,gBAAgB;SAAC,CAAC,CAAC;QAErB,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,wBAAwB;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,EAAE;YACxC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACvB,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC;YACZ,EAAE;YACF,IAAI;YACJ,KAAK;YACL,MAAM;YACN,KAAK;YACL,YAAY;YACZ,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,UAAU;YACV,WAAW;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW;YAC5B,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,UAAU;YACV,WAAW;YACX,cAAc;SACf,CAAC,CAAC;QAEH,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,wBAAwB;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,EAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,QAAQ,GAAwB,EAAE,aAAa,EAAE,0BAA0B,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3I,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,MAAM,GAAG,eAAe,CAAC;QAC7B,MAAM,UAAU,GAAG,mBAAmB,CAAC;QACvC,MAAM,WAAW,GAAG,iBAAiB,CAAC;QACtC,MAAM,WAAW,GAAG,oCAAoC,CAAC;QAEzD,IAAI,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;QACvE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpF,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAExE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,GAAG,gBAAgB,CAAC;QAC1B,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAEpD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC/E,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7B,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;QACzL,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAChF,SAAS,CAAC,KAAK,EAAE,CAAC;QAElB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,MAAM,SAAS,CAAC,sBAAsB,CACpC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvJ,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,qBAAqB,CAAC;QAC5C,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QAE/J,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAIL,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjC,SAAS,YAAY,CAAC,WAAmB,EAAE,KAAwC;YACjF,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC5G,CAAC;QAED,SAAS,wBAAwB,CAAC,WAAmB;YACnD,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC;gBAClB,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC;gBACrB,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;gBAC9B,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;gBACxB,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC3B,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC3B,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC;gBACzB,WAAW;gBACX,OAAO,EAAE,yBAAyB;gBAClC,WAAW,EAAE,OAAO;gBACpB,QAAQ,EAAE,KAAK;aACyB,CAAC;QAC7C,CAAC;QAED,SAAS,eAAe,CAAC,WAAmB,EAAE,cAAmD;YAC/F,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/F,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,SAAS,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;YACxD,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAEtG,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YACvG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAC;YAE5G,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;YACvF,MAAM,WAAW,GAAG,kCAAkC,CAAC;YACvD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;YAEtG,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1E,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;YAC1F,MAAM,WAAW,GAAG,iCAAiC,CAAC;YACtD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YAElE,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;YAC3F,MAAM,WAAW,GAAG,kCAAkC,CAAC;YACvD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAE5F,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1G,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;YACvG,MAAM,WAAW,GAAG,0BAA0B,CAAC;YAC/C,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE/C,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC;YAEtI,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,MAAM,WAAW,GAAG,kCAAkC,CAAC;YACvD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE/C,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,kCAAkC,EAAE,EAAE,CAAC,CAAC;YAE5H,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,WAAW,GAAG,kCAAkC,CAAC;YACvD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhE,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,kCAAkC,EAAE,EAAE,CAAC,CAAC;YAEnI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,WAAW,GAAG,iCAAiC,CAAC;YACtD,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhE,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpF,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,iCAAiC,EAAE,EAAE,CAAC,CAAC;YAEhH,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC5G,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,KAAK,GAA4B;gBACrC,WAAW,EAAE,qBAAqB;gBAClC,OAAO,EAAE,wBAAwB;gBACjC,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,mBAAmB;aACjC,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YACD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC9C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC5G,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,KAAK,GAA4B;gBACrC,WAAW,EAAE,kBAAkB;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,OAAO;aACrB,CAAC;YAEF,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC9C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC5F,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,KAAK,GAA4B;gBACrC,WAAW,EAAE,qBAAqB;gBAClC,OAAO,EAAE,wBAAwB;gBACjC,WAAW,EAAE,OAAO;aACrB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YACD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC/C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC9C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,MAAM,eAAe,GAAG,6BAA6B,CAAC;QACtD,MAAM,WAAW,GAAG,eAAe,CAAC;QACpC,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACtC,IAAI,YAAwD,CAAC;QAE7D,SAAS,iBAAiB,CAAC,UAA4C;YACrE,OAAO;gBACL,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,OAAgB,EAAE,CAAC;gBACtH,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;gBACtB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAClD,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAC1E,uBAAuB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;oBAClD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC;wBAC5E,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAC7D,CAAC;gBACJ,CAAC;gBACD,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;gBAC1B,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC/B,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;oBAC/B,QAAQ,EAAE,OAAgB;oBAC1B,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;oBAC1C,QAAQ,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;oBACvD,OAAO,EAAE,EAAE;iBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,GAAG,EAAE;YACV,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,aAAa,CAAC,OAAO,GAAG,YAAY,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,aAAa,CAAC,OAAO,GAAG,iBAAiB,CAAC;gBACxC,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE;aACtF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,aAAa,CAAC,OAAO,GAAG,iBAAiB,CAAC;gBACxC,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE;aAClG,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YACjG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,aAAa,CAAC,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAE9C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;YAElC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;iBAC1D,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,wCAAwC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport * as fs from \"fs-extra\";\nimport { extname } from \"path\";\nimport * as sinon from \"sinon\";\nimport { Guid } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { SettingsPriority } from \"../../workspace/Settings\";\nimport { Workspace, WorkspaceContainerProps, WorkspaceDbManifest, WorkspaceDbProps } from \"../../workspace/Workspace\";\nimport { EditableWorkspaceDb, WorkspaceEditor } from \"../../workspace/WorkspaceEditor\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { validateWorkspaceContainerId } from \"../../internal/workspace/WorkspaceImpl\";\nimport { _nativeDb } from \"../../internal/Symbols\";\nimport { CloudSqlite } from \"../../CloudSqlite\";\nimport { BlobContainer } from \"../../BlobContainerService\";\n\ndescribe(\"WorkspaceFile\", () => {\n\n let editor: WorkspaceEditor;\n let workspace: Workspace;\n\n before(() => {\n editor = WorkspaceEditor.construct();\n workspace = editor.workspace;\n });\n after(() => {\n editor.close();\n });\n\n async function makeEditableDb(props: WorkspaceDbProps & WorkspaceContainerProps, manifest: WorkspaceDbManifest): Promise<EditableWorkspaceDb> {\n const container = editor.getContainer({ ...props, accessToken: \"\" });\n const wsFile = await container.createDb({ ...props, manifest });\n wsFile.open();\n return wsFile;\n }\n\n function compareFiles(file1: string, file2: string) {\n expect(fs.lstatSync(file1).size).equal(fs.lstatSync(file2).size);\n expect(fs.readFileSync(file1)).to.deep.equal(fs.readFileSync(file2));\n }\n\n it(\"WorkspaceContainer names\", () => {\n const expectBadName = (names: string[]) => {\n names.forEach((containerId) => {\n expect(() => validateWorkspaceContainerId(containerId), containerId).to.throw(\"containerId\");\n });\n };\n\n expectBadName([\n \"\",\n \" \",\n \"12\", // too short\n \"a\\\\b\",\n `a\"b`,\n \"a:b\",\n \"a.b\",\n \"a?b\",\n \"a*b\",\n \"a|b\",\n \"123--4\",\n \"Abc\",\n \"return\\r\",\n \"newline\\n\",\n \"a\".repeat(64), // too long\n \"-leading-dash\",\n \"trailing-dash-\"]);\n\n validateWorkspaceContainerId(Guid.createValue()); // guids should be valid\n });\n\n it(\"WorkspaceDbNames\", () => {\n const expectBadName = (names: string[]) => {\n names.forEach((dbName) => {\n expect(() => CloudSqlite.validateDbName(dbName)).to.throw(\"dbName\");\n });\n };\n\n expectBadName([\n \"\",\n \" \",\n \"1/2\",\n \"a\\\\b\",\n `a\"b`,\n \"base:1.2.3\",\n \"a:b\",\n \"a.b\",\n \"a?b\",\n \"a*b\",\n \"a|b\",\n \"con\",\n \"prn\",\n \"return\\r\",\n \"newline\\n\",\n \"a\".repeat(256), // too long\n \" leading space\",\n \"trailing space \",\n \"per.iod\",\n \"hash#tag\",\n \"back`tick\",\n \"single'quote\",\n ]);\n\n CloudSqlite.validateDbName(Guid.createValue()); // guids should be valid\n });\n\n it(\"WorkspaceDb version fallback\", () => {\n expect(CloudSqlite.validateDbVersion(\"\" as CloudSqlite.DbVersion)).equals(\"0.0.0\");\n expect(CloudSqlite.makeSemverName(\"db1\", \"\" as CloudSqlite.DbVersion)).equals(\"db1:0.0.0\");\n expect(() => CloudSqlite.validateDbVersion(\" \" as CloudSqlite.DbVersion)).to.throw(\"invalid version specification\");\n });\n\n it(\"create new WorkspaceDb\", async () => {\n const manifest: WorkspaceDbManifest = { workspaceName: \"resources for acme users\", contactName: \"contact me\" };\n const wsFile = await makeEditableDb({ containerId: \"acme-engineering-inc-2\", dbName: \"db1\", baseUri: \"\", storageType: \"azure\" }, manifest);\n const inFile = IModelTestUtils.resolveAssetFile(\"test.setting.json5\");\n const testRange = new Range3d(1.2, 2.3, 3.4, 4.5, 5.6, 6.7);\n let blobVal = new Uint8Array(testRange.toFloat64Array().buffer);\n let strVal = \"this is test1\";\n const strRscName = \"string-resource/1\";\n const blobRscName = \"blob.resource:1\";\n const fileRscName = \"settings files/my settings/a.json5\";\n\n let testManifest = wsFile.manifest;\n expect(testManifest.workspaceName).equals(manifest.workspaceName);\n expect(testManifest.contactName).equals(manifest.contactName);\n\n wsFile.updateManifest({ ...testManifest, contactName: \"new contact\" });\n testManifest = wsFile.manifest;\n expect(testManifest.workspaceName).equals(manifest.workspaceName);\n expect(testManifest.contactName).equals(\"new contact\");\n\n expect(() => wsFile.addFile(fileRscName, \"bad file name\")).to.throw(\"no such file\");\n expect(() => wsFile.updateFile(fileRscName, inFile)).to.throw(\"error replacing\");\n expect(() => wsFile.removeFile(fileRscName)).to.throw(\"does not exist\");\n\n wsFile.addBlob(blobRscName, blobVal);\n wsFile.addString(strRscName, strVal);\n expect(wsFile.getString(strRscName)).equals(strVal);\n expect(wsFile.getBlob(blobRscName)).to.deep.equal(blobVal);\n strVal = \"updated string\";\n blobVal = Uint8Array.from([0, 1, 2, 3]);\n wsFile.updateString(strRscName, strVal);\n wsFile.updateBlob(blobRscName, blobVal);\n expect(wsFile.getString(strRscName)).equals(strVal);\n expect(wsFile.getBlob(blobRscName)).to.deep.equal(blobVal);\n\n wsFile.removeBlob(blobRscName);\n wsFile.removeString(strRscName);\n expect(wsFile.getString(strRscName)).to.be.undefined;\n expect(wsFile.getBlob(blobRscName)).to.be.undefined;\n\n wsFile.addFile(fileRscName, inFile);\n const writeFile = sinon.spy(wsFile.sqliteDb[_nativeDb], \"extractEmbeddedFile\");\n expect(writeFile.callCount).eq(0);\n const outFile = wsFile.getFile(fileRscName)!;\n expect(writeFile.callCount).eq(1);\n expect(extname(outFile)).equals(\".json5\");\n compareFiles(inFile, outFile);\n\n let outFile2 = wsFile.getFile(fileRscName)!;\n expect(writeFile.callCount).eq(1);\n expect(outFile).eq(outFile2);\n\n const inFile2 = IModelTestUtils.resolveAssetFile(\"TestSettings.schema.json\");\n wsFile.updateFile(fileRscName, inFile2);\n outFile2 = wsFile.getFile(fileRscName)!;\n expect(writeFile.callCount).eq(2);\n expect(outFile).eq(outFile2);\n compareFiles(inFile2, outFile);\n });\n\n it(\"load workspace settings\", async () => {\n const settingsFile = IModelTestUtils.resolveAssetFile(\"test.setting.json5\");\n const defaultDb = await makeEditableDb({ containerId: \"default\", dbName: \"db1\", baseUri: \"\", storageType: \"azure\" }, { workspaceName: \"default resources\", contactName: \"contact 123\" });\n defaultDb.addString(\"default-settings\", fs.readFileSync(settingsFile, \"utf-8\"));\n defaultDb.close();\n\n const settings = workspace.settings;\n await workspace.loadSettingsDictionary(\n { dbName: \"db1\", containerId: \"default\", baseUri: \"\", storageType: \"azure\", resourceName: \"default-settings\", priority: SettingsPriority.defaults });\n expect(settings.getSetting(\"editor/renderWhitespace\")).equals(\"selection\");\n\n const workspaceName = \"all fonts workspace\";\n const schemaFile = IModelTestUtils.resolveAssetFile(\"TestSettings.schema.json\");\n const fontsDb = await makeEditableDb({ containerId: \"fonts\", dbName: \"fonts\", baseUri: \"\", storageType: \"azure\" }, { workspaceName, contactName: \"font guy\" });\n\n fontsDb.addFile(\"Helvetica.ttf\", schemaFile, \"ttf\");\n fontsDb.close();\n });\n\n\n\ndescribe(\"workspace db version cache key\", () => {\n afterEach(() => sinon.restore());\n\n function getContainer(containerId: string, props?: Partial<WorkspaceContainerProps>) {\n return editor.getContainer({ containerId, baseUri: \"\", storageType: \"azure\", accessToken: \"\", ...props });\n }\n\n function createFakeCloudContainer(containerId: string): CloudSqlite.CloudContainer {\n return {\n connect: () => { },\n disconnect: () => { },\n checkForChanges: () => { },\n queryDatabase: () => undefined,\n queryDatabases: () => [],\n acquireWriteLock: () => { },\n releaseWriteLock: () => { },\n abandonChanges: () => { },\n containerId,\n baseUri: \"https://example.invalid\",\n storageType: \"azure\",\n isPublic: false,\n } as unknown as CloudSqlite.CloudContainer;\n }\n\n function stubCloudLookup(containerId: string, resolveVersion: (props: WorkspaceDbProps) => string) {\n sinon.stub(CloudSqlite, \"createCloudContainer\").returns(createFakeCloudContainer(containerId));\n sinon.stub(CloudSqlite, \"querySemverMatch\").callsFake((props) => CloudSqlite.makeSemverName(props.dbName, resolveVersion(props)));\n sinon.stub(CloudSqlite, \"isSemverEditable\").returns(true);\n }\n\n it(\"local getWorkspaceDb ignores version selectors for cache identity\", async () => {\n const container = getContainer(\"workspace-cache-local\");\n await container.createDb({ dbName: \"test-db\", manifest: { workspaceName: \"workspace-cache-local\" } });\n\n const db1 = container.getWorkspaceDb({ dbName: \"test-db\" });\n const db2 = container.getWorkspaceDb({ dbName: \"test-db\", version: \"1.0.0\", includePrerelease: true });\n expect(db1).to.equal(db2);\n });\n\n it(\"local createDb with omitted dbName matches an explicit default-name lookup\", async () => {\n const container = getContainer(\"workspace-cache-local-default-name\");\n const db1 = await container.createDb({ manifest: { workspaceName: \"workspace-cache-local-default-name\" } });\n\n const db2 = container.getEditableDb({ dbName: \"workspace-db\" });\n expect(db1).to.equal(db2);\n });\n\n it(\"cloud getWorkspaceDb reuses the same instance for semver-equivalent selectors\", () => {\n const containerId = \"workspace-cache-cloud-equivalent\";\n stubCloudLookup(containerId, (props) => props.version === \"1\" ? \"1.0.0\" : (props.version ?? \"1.0.0\"));\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n const db1 = container.getWorkspaceDb({ dbName: \"test-db\", version: \"1\" });\n const db2 = container.getWorkspaceDb({ dbName: \"test-db\", version: \"1.0.0\" });\n expect(db1).to.equal(db2);\n });\n\n it(\"cloud getWorkspaceDb returns different instances for different resolved versions\", () => {\n const containerId = \"workspace-cache-cloud-different\";\n stubCloudLookup(containerId, (props) => props.version ?? \"1.0.0\");\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n const db1 = container.getWorkspaceDb({ dbName: \"test-db\", version: \"1.0.0\" });\n const db2 = container.getWorkspaceDb({ dbName: \"test-db\", version: \"2.0.0\" });\n expect(db1).to.not.equal(db2);\n });\n\n it(\"cloud getWorkspaceDb respects includePrerelease only when it resolves differently\", () => {\n const containerId = \"workspace-cache-cloud-prerelease\";\n stubCloudLookup(containerId, (props) => props.includePrerelease ? \"1.1.0-beta.1\" : \"1.0.0\");\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n const stable = container.getWorkspaceDb({ dbName: \"test-db\", version: \"*\" });\n const prerelease = container.getWorkspaceDb({ dbName: \"test-db\", version: \"*\", includePrerelease: true });\n expect(stable).to.not.equal(prerelease);\n });\n\n it(\"createDb with explicit version returns the cached editable db for that resolved version\", async () => {\n const containerId = \"workspace-create-version\";\n stubCloudLookup(containerId, (props) => props.version ?? \"0.0.0\");\n sinon.stub(CloudSqlite, \"uploadDb\").resolves();\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n const db = await container.createDb({ dbName: \"test-db\", version: \"1.0.0\", manifest: { workspaceName: \"workspace-create-version\" } });\n\n const dbAgain = container.getEditableDb({ dbName: \"test-db\", version: \"1.0.0\" });\n expect(db).to.equal(dbAgain);\n });\n\n it(\"createDb without an explicit version returns the cached editable db for version 0.0.0\", async () => {\n const containerId = \"workspace-create-default-version\";\n stubCloudLookup(containerId, (props) => props.version ?? \"0.0.0\");\n sinon.stub(CloudSqlite, \"uploadDb\").resolves();\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n const db = await container.createDb({ dbName: \"test-db\", manifest: { workspaceName: \"workspace-create-default-version\" } });\n\n const dbAgain = container.getEditableDb({ dbName: \"test-db\", version: \"0.0.0\" });\n expect(db).to.equal(dbAgain);\n });\n\n it(\"cloud createDb uploads using the requested version\", async () => {\n const containerId = \"workspace-cloud-explicit-version\";\n stubCloudLookup(containerId, (props) => props.version ?? \"0.0.0\");\n const uploadDb = sinon.stub(CloudSqlite, \"uploadDb\").resolves();\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n await container.createDb({ dbName: \"test-db\", version: \"1.2.3\", manifest: { workspaceName: \"workspace-cloud-explicit-version\" } });\n\n expect(uploadDb.calledOnce).to.be.true;\n expect(uploadDb.firstCall.args[1].dbName).to.equal(\"test-db:1.2.3\");\n });\n\n it(\"cloud createDb defaults omitted version to 0.0.0\", async () => {\n const containerId = \"workspace-cloud-default-version\";\n stubCloudLookup(containerId, (props) => props.version ?? \"0.0.0\");\n const uploadDb = sinon.stub(CloudSqlite, \"uploadDb\").resolves();\n\n const container = getContainer(containerId, { baseUri: \"https://example.invalid\" });\n await container.createDb({ dbName: \"test-db\", manifest: { workspaceName: \"workspace-cloud-default-version\" } });\n\n expect(uploadDb.calledOnce).to.be.true;\n expect(uploadDb.firstCall.args[1].dbName).to.equal(\"test-db:0.0.0\");\n });\n});\n\n describe(\"getContainerAsync token resolution\", () => {\n afterEach(() => sinon.restore());\n\n it(\"preserves an explicitly-provided accessToken\", async () => {\n const requestTokenStub = sinon.stub(CloudSqlite, \"requestToken\").rejects(new Error(\"should not be called\"));\n const getContainerSpy = sinon.spy(workspace, \"getContainer\");\n const props: WorkspaceContainerProps = {\n containerId: \"explicit-token-test\",\n baseUri: \"https://some-cloud-uri\",\n storageType: \"azure\",\n accessToken: \"my-explicit-token\",\n };\n\n try {\n await workspace.getContainerAsync(props);\n } catch {\n // expected — no real cloud endpoint\n }\n expect(requestTokenStub.called).to.be.false;\n expect(getContainerSpy.calledOnce).to.be.true;\n expect(getContainerSpy.firstCall.args[0].accessToken).to.equal(\"my-explicit-token\");\n });\n\n it(\"uses empty token for local containers with empty baseUri\", async () => {\n const requestTokenStub = sinon.stub(CloudSqlite, \"requestToken\").rejects(new Error(\"should not be called\"));\n const getContainerSpy = sinon.spy(workspace, \"getContainer\");\n const props: WorkspaceContainerProps = {\n containerId: \"local-token-test\",\n baseUri: \"\",\n storageType: \"azure\",\n };\n\n await workspace.getContainerAsync(props);\n expect(requestTokenStub.called).to.be.false;\n expect(getContainerSpy.calledOnce).to.be.true;\n expect(getContainerSpy.firstCall.args[0].accessToken).to.equal(\"\");\n });\n\n it(\"calls requestToken when no accessToken is provided for a cloud container\", async () => {\n const requestTokenStub = sinon.stub(CloudSqlite, \"requestToken\").resolves(\"resolved-token\");\n const getContainerSpy = sinon.spy(workspace, \"getContainer\");\n const props: WorkspaceContainerProps = {\n containerId: \"cloud-no-token-test\",\n baseUri: \"https://some-cloud-uri\",\n storageType: \"azure\",\n };\n\n try {\n await workspace.getContainerAsync(props);\n } catch {\n // expected — no real cloud endpoint\n }\n expect(requestTokenStub.calledOnce).to.be.true;\n expect(getContainerSpy.calledOnce).to.be.true;\n expect(getContainerSpy.firstCall.args[0].accessToken).to.equal(\"resolved-token\");\n });\n });\n\n describe(\"findContainers\", () => {\n const testContainerId = \"mock-workspace-container-id\";\n const testITwinId = \"mock-itwin-id\";\n const testIModelId = \"mock-imodel-id\";\n let savedService: BlobContainer.ContainerService | undefined;\n\n function createMockService(containers: BlobContainer.MetadataResponse[]): BlobContainer.ContainerService {\n return {\n create: async () => ({ containerId: testContainerId, baseUri: \"https://mock.blob.core/\", provider: \"azure\" as const }),\n delete: async () => {},\n queryScope: async () => ({ iTwinId: testITwinId }),\n queryMetadata: async () => ({ containerType: \"workspace\", label: \"mock\" }),\n queryContainersMetadata: async (_userToken, args) => {\n return containers.filter((c) =>\n (args.containerType === undefined || c.containerType === args.containerType) &&\n (args.iTwinId === testITwinId || args.iTwinId === undefined),\n );\n },\n updateJson: async () => {},\n requestToken: async (_props) => ({\n token: \"\",\n scope: { iTwinId: testITwinId },\n provider: \"azure\" as const,\n expiration: new Date(Date.now() + 3600000),\n metadata: { containerType: \"workspace\", label: \"mock\" },\n baseUri: \"\",\n }),\n };\n }\n\n before(() => {\n savedService = BlobContainer.service;\n });\n\n afterEach(() => {\n BlobContainer.service = savedService;\n });\n\n it(\"finds containers by iTwinId\", async () => {\n BlobContainer.service = createMockService([\n { containerId: testContainerId, containerType: \"workspace\", label: \"Test Workspace\" },\n ]);\n\n const containers = await editor.findContainers({ iTwinId: testITwinId });\n expect(containers).to.have.length(1);\n expect(containers[0].fromProps.containerId).to.equal(testContainerId);\n });\n\n it(\"finds a container by iTwinId and iModelId\", async () => {\n BlobContainer.service = createMockService([\n { containerId: \"imodel-scoped-container\", containerType: \"workspace\", label: \"iModel Workspace\" },\n ]);\n\n const containers = await editor.findContainers({ iTwinId: testITwinId, iModelId: testIModelId });\n expect(containers).to.have.length(1);\n expect(containers[0].fromProps.containerId).to.equal(\"imodel-scoped-container\");\n });\n\n it(\"returns empty array when no workspace containers are found\", async () => {\n BlobContainer.service = createMockService([]);\n\n const containers = await editor.findContainers({ iTwinId: \"nonexistent-itwin\" });\n expect(containers).to.have.length(0);\n });\n\n it(\"throws when BlobContainer.service is not available\", async () => {\n BlobContainer.service = undefined;\n\n await expect(editor.findContainers({ iTwinId: testITwinId }))\n .to.be.rejectedWith(/BlobContainer.service is not available/);\n });\n });\n\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=iModelDb.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iModelDb.test.d.ts","sourceRoot":"","sources":["../../../../src/test/standalone/iModelDb.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { assert } from "chai";
6
+ import { BriefcaseDb, BriefcaseManager } from "../../core-backend";
7
+ import { HubMock } from "../../internal/HubMock";
8
+ import { KnownTestLocations } from "../KnownTestLocations";
9
+ describe("BriefcaseDb", () => {
10
+ let iTwinId;
11
+ before(() => {
12
+ HubMock.startup("BriefcaseDbTest", KnownTestLocations.outputDir);
13
+ iTwinId = HubMock.iTwinId;
14
+ });
15
+ after(() => HubMock.shutdown());
16
+ describe("toJSON", () => {
17
+ it("should include briefcaseId in the returned BriefcaseConnectionProps", async () => {
18
+ const iModelId = await HubMock.createNewIModel({ iModelName: "ToJsonTest", iTwinId });
19
+ const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: "test token", iTwinId, iModelId });
20
+ const db = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
21
+ try {
22
+ const json = db.toJSON();
23
+ assert.isDefined(json.briefcaseId);
24
+ assert.equal(json.briefcaseId, db.briefcaseId);
25
+ assert.isDefined(json.rootSubject);
26
+ assert.isDefined(json.key);
27
+ assert.isDefined(json.projectExtents);
28
+ }
29
+ finally {
30
+ db.close();
31
+ }
32
+ });
33
+ });
34
+ });
35
+ //# sourceMappingURL=iModelDb.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iModelDb.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/iModelDb.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAI/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAmB,CAAC;IAExB,MAAM,CAAC,GAAG,EAAE;QACV,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEhC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;YACtF,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClH,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEzE,IAAI,CAAC;gBACH,MAAM,IAAI,GAA6B,EAAE,CAAC,MAAM,EAAE,CAAC;gBAEnD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;gBAE/C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACxC,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { GuidString } from \"@itwin/core-bentley\";\nimport { BriefcaseConnectionProps } from \"@itwin/core-common\";\nimport { assert } from \"chai\";\nimport { BriefcaseDb, BriefcaseManager } from \"../../core-backend\";\nimport { HubMock } from \"../../internal/HubMock\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\ndescribe(\"BriefcaseDb\", () => {\n let iTwinId: GuidString;\n\n before(() => {\n HubMock.startup(\"BriefcaseDbTest\", KnownTestLocations.outputDir);\n iTwinId = HubMock.iTwinId;\n });\n\n after(() => HubMock.shutdown());\n\n describe(\"toJSON\", () => {\n it(\"should include briefcaseId in the returned BriefcaseConnectionProps\", async () => {\n const iModelId = await HubMock.createNewIModel({ iModelName: \"ToJsonTest\", iTwinId });\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: \"test token\", iTwinId, iModelId });\n const db = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n\n try {\n const json: BriefcaseConnectionProps = db.toJSON();\n\n assert.isDefined(json.briefcaseId);\n assert.equal(json.briefcaseId, db.briefcaseId);\n\n assert.isDefined(json.rootSubject);\n assert.isDefined(json.key);\n assert.isDefined(json.projectExtents);\n } finally {\n db.close();\n }\n });\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SettingsDb.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsDb.test.d.ts","sourceRoot":"","sources":["../../../../src/test/workspace/SettingsDb.test.ts"],"names":[],"mappings":""}