@itwin/core-backend 5.0.0-dev.99 → 5.0.0

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 (354) hide show
  1. package/CHANGELOG.md +109 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  6. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseManager.js +12 -0
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CatalogDb.d.ts +103 -0
  10. package/lib/cjs/CatalogDb.d.ts.map +1 -0
  11. package/lib/cjs/CatalogDb.js +271 -0
  12. package/lib/cjs/CatalogDb.js.map +1 -0
  13. package/lib/cjs/Category.d.ts +41 -4
  14. package/lib/cjs/Category.d.ts.map +1 -1
  15. package/lib/cjs/Category.js +77 -4
  16. package/lib/cjs/Category.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.d.ts +12 -10
  18. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  19. package/lib/cjs/CheckpointManager.js +17 -41
  20. package/lib/cjs/CheckpointManager.js.map +1 -1
  21. package/lib/cjs/ClassRegistry.d.ts +1 -1
  22. package/lib/cjs/ClassRegistry.js +1 -1
  23. package/lib/cjs/ClassRegistry.js.map +1 -1
  24. package/lib/cjs/CloudSqlite.d.ts +104 -20
  25. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  26. package/lib/cjs/CloudSqlite.js +157 -46
  27. package/lib/cjs/CloudSqlite.js.map +1 -1
  28. package/lib/cjs/CodeSpecs.d.ts +1 -1
  29. package/lib/cjs/CodeSpecs.js +1 -1
  30. package/lib/cjs/CodeSpecs.js.map +1 -1
  31. package/lib/cjs/DisplayStyle.d.ts +9 -4
  32. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  33. package/lib/cjs/DisplayStyle.js +30 -3
  34. package/lib/cjs/DisplayStyle.js.map +1 -1
  35. package/lib/cjs/ECDb.d.ts +4 -4
  36. package/lib/cjs/ECDb.d.ts.map +1 -1
  37. package/lib/cjs/ECDb.js +4 -4
  38. package/lib/cjs/ECDb.js.map +1 -1
  39. package/lib/cjs/ECSchemaXmlContext.d.ts +1 -1
  40. package/lib/cjs/ECSchemaXmlContext.js +1 -1
  41. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  42. package/lib/cjs/ECSqlStatement.d.ts +6 -6
  43. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  44. package/lib/cjs/ECSqlStatement.js +4 -4
  45. package/lib/cjs/ECSqlStatement.js.map +1 -1
  46. package/lib/cjs/Element.d.ts +217 -61
  47. package/lib/cjs/Element.d.ts.map +1 -1
  48. package/lib/cjs/Element.js +561 -60
  49. package/lib/cjs/Element.js.map +1 -1
  50. package/lib/cjs/ElementAspect.d.ts +8 -8
  51. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  52. package/lib/cjs/ElementAspect.js +8 -8
  53. package/lib/cjs/ElementAspect.js.map +1 -1
  54. package/lib/cjs/Entity.d.ts +52 -8
  55. package/lib/cjs/Entity.d.ts.map +1 -1
  56. package/lib/cjs/Entity.js +63 -5
  57. package/lib/cjs/Entity.js.map +1 -1
  58. package/lib/cjs/ExportGraphics.d.ts +54 -8
  59. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  60. package/lib/cjs/ExportGraphics.js +158 -59
  61. package/lib/cjs/ExportGraphics.js.map +1 -1
  62. package/lib/cjs/IModelDb.d.ts +42 -54
  63. package/lib/cjs/IModelDb.d.ts.map +1 -1
  64. package/lib/cjs/IModelDb.js +164 -93
  65. package/lib/cjs/IModelDb.js.map +1 -1
  66. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  67. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  68. package/lib/cjs/IModelElementCloneContext.js +1 -1
  69. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  70. package/lib/cjs/IModelHost.d.ts +16 -3
  71. package/lib/cjs/IModelHost.d.ts.map +1 -1
  72. package/lib/cjs/IModelHost.js +9 -3
  73. package/lib/cjs/IModelHost.js.map +1 -1
  74. package/lib/cjs/Material.d.ts +20 -1
  75. package/lib/cjs/Material.d.ts.map +1 -1
  76. package/lib/cjs/Material.js +30 -1
  77. package/lib/cjs/Material.js.map +1 -1
  78. package/lib/cjs/Model.d.ts +64 -28
  79. package/lib/cjs/Model.d.ts.map +1 -1
  80. package/lib/cjs/Model.js +115 -27
  81. package/lib/cjs/Model.js.map +1 -1
  82. package/lib/cjs/NativeHost.d.ts.map +1 -1
  83. package/lib/cjs/NativeHost.js +4 -1
  84. package/lib/cjs/NativeHost.js.map +1 -1
  85. package/lib/cjs/SQLiteDb.d.ts +1 -1
  86. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  87. package/lib/cjs/SQLiteDb.js +6 -5
  88. package/lib/cjs/SQLiteDb.js.map +1 -1
  89. package/lib/cjs/SqliteStatement.d.ts +1 -1
  90. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  91. package/lib/cjs/SqliteStatement.js +1 -1
  92. package/lib/cjs/SqliteStatement.js.map +1 -1
  93. package/lib/cjs/TextAnnotationElement.d.ts +2 -2
  94. package/lib/cjs/TextAnnotationElement.js +2 -2
  95. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  96. package/lib/cjs/Texture.d.ts +1 -1
  97. package/lib/cjs/Texture.js +1 -1
  98. package/lib/cjs/Texture.js.map +1 -1
  99. package/lib/cjs/TxnManager.d.ts +4 -4
  100. package/lib/cjs/TxnManager.d.ts.map +1 -1
  101. package/lib/cjs/TxnManager.js +2 -1
  102. package/lib/cjs/TxnManager.js.map +1 -1
  103. package/lib/cjs/ViewDefinition.d.ts +114 -14
  104. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  105. package/lib/cjs/ViewDefinition.js +222 -14
  106. package/lib/cjs/ViewDefinition.js.map +1 -1
  107. package/lib/cjs/ViewStateHydrator.js +3 -3
  108. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  109. package/lib/cjs/ViewStore.d.ts.map +1 -1
  110. package/lib/cjs/ViewStore.js +27 -27
  111. package/lib/cjs/ViewStore.js.map +1 -1
  112. package/lib/cjs/core-backend.d.ts +1 -1
  113. package/lib/cjs/core-backend.d.ts.map +1 -1
  114. package/lib/cjs/core-backend.js +21 -1
  115. package/lib/cjs/core-backend.js.map +1 -1
  116. package/lib/cjs/internal/ChannelAdmin.js +4 -4
  117. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  118. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  119. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  120. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  121. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  122. package/lib/cjs/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
  123. package/lib/cjs/internal/HubMock.d.ts.map +1 -0
  124. package/lib/cjs/{HubMock.js → internal/HubMock.js} +22 -11
  125. package/lib/cjs/internal/HubMock.js.map +1 -0
  126. package/lib/cjs/internal/Symbols.d.ts +2 -2
  127. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  128. package/lib/cjs/internal/Symbols.js +3 -3
  129. package/lib/cjs/internal/Symbols.js.map +1 -1
  130. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +2 -16
  131. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  132. package/lib/cjs/internal/workspace/WorkspaceImpl.js +35 -104
  133. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  134. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  135. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +3 -3
  136. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  137. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  138. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  139. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  140. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  141. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  142. package/lib/cjs/workspace/Workspace.d.ts +6 -13
  143. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  144. package/lib/cjs/workspace/Workspace.js.map +1 -1
  145. package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -7
  146. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  147. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  148. package/lib/esm/BackendHubAccess.d.ts +1 -1
  149. package/lib/esm/BackendHubAccess.js +1 -1
  150. package/lib/esm/BackendHubAccess.js.map +1 -1
  151. package/lib/esm/BriefcaseManager.d.ts +10 -2
  152. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  153. package/lib/esm/BriefcaseManager.js +12 -0
  154. package/lib/esm/BriefcaseManager.js.map +1 -1
  155. package/lib/esm/CatalogDb.d.ts +103 -0
  156. package/lib/esm/CatalogDb.d.ts.map +1 -0
  157. package/lib/esm/CatalogDb.js +267 -0
  158. package/lib/esm/CatalogDb.js.map +1 -0
  159. package/lib/esm/Category.d.ts +41 -4
  160. package/lib/esm/Category.d.ts.map +1 -1
  161. package/lib/esm/Category.js +77 -4
  162. package/lib/esm/Category.js.map +1 -1
  163. package/lib/esm/CheckpointManager.d.ts +12 -10
  164. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  165. package/lib/esm/CheckpointManager.js +18 -42
  166. package/lib/esm/CheckpointManager.js.map +1 -1
  167. package/lib/esm/ClassRegistry.d.ts +1 -1
  168. package/lib/esm/ClassRegistry.js +1 -1
  169. package/lib/esm/ClassRegistry.js.map +1 -1
  170. package/lib/esm/CloudSqlite.d.ts +104 -20
  171. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  172. package/lib/esm/CloudSqlite.js +157 -46
  173. package/lib/esm/CloudSqlite.js.map +1 -1
  174. package/lib/esm/CodeSpecs.d.ts +1 -1
  175. package/lib/esm/CodeSpecs.js +1 -1
  176. package/lib/esm/CodeSpecs.js.map +1 -1
  177. package/lib/esm/DisplayStyle.d.ts +9 -4
  178. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  179. package/lib/esm/DisplayStyle.js +30 -3
  180. package/lib/esm/DisplayStyle.js.map +1 -1
  181. package/lib/esm/ECDb.d.ts +4 -4
  182. package/lib/esm/ECDb.d.ts.map +1 -1
  183. package/lib/esm/ECDb.js +4 -4
  184. package/lib/esm/ECDb.js.map +1 -1
  185. package/lib/esm/ECSchemaXmlContext.d.ts +1 -1
  186. package/lib/esm/ECSchemaXmlContext.js +1 -1
  187. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  188. package/lib/esm/ECSqlStatement.d.ts +6 -6
  189. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  190. package/lib/esm/ECSqlStatement.js +4 -4
  191. package/lib/esm/ECSqlStatement.js.map +1 -1
  192. package/lib/esm/Element.d.ts +217 -61
  193. package/lib/esm/Element.d.ts.map +1 -1
  194. package/lib/esm/Element.js +564 -63
  195. package/lib/esm/Element.js.map +1 -1
  196. package/lib/esm/ElementAspect.d.ts +8 -8
  197. package/lib/esm/ElementAspect.d.ts.map +1 -1
  198. package/lib/esm/ElementAspect.js +8 -8
  199. package/lib/esm/ElementAspect.js.map +1 -1
  200. package/lib/esm/Entity.d.ts +52 -8
  201. package/lib/esm/Entity.d.ts.map +1 -1
  202. package/lib/esm/Entity.js +63 -5
  203. package/lib/esm/Entity.js.map +1 -1
  204. package/lib/esm/ExportGraphics.d.ts +54 -8
  205. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  206. package/lib/esm/ExportGraphics.js +156 -58
  207. package/lib/esm/ExportGraphics.js.map +1 -1
  208. package/lib/esm/IModelDb.d.ts +42 -54
  209. package/lib/esm/IModelDb.d.ts.map +1 -1
  210. package/lib/esm/IModelDb.js +167 -96
  211. package/lib/esm/IModelDb.js.map +1 -1
  212. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  213. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  214. package/lib/esm/IModelElementCloneContext.js +1 -1
  215. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  216. package/lib/esm/IModelHost.d.ts +16 -3
  217. package/lib/esm/IModelHost.d.ts.map +1 -1
  218. package/lib/esm/IModelHost.js +9 -3
  219. package/lib/esm/IModelHost.js.map +1 -1
  220. package/lib/esm/Material.d.ts +20 -1
  221. package/lib/esm/Material.d.ts.map +1 -1
  222. package/lib/esm/Material.js +31 -2
  223. package/lib/esm/Material.js.map +1 -1
  224. package/lib/esm/Model.d.ts +64 -28
  225. package/lib/esm/Model.d.ts.map +1 -1
  226. package/lib/esm/Model.js +116 -28
  227. package/lib/esm/Model.js.map +1 -1
  228. package/lib/esm/NativeHost.d.ts.map +1 -1
  229. package/lib/esm/NativeHost.js +4 -1
  230. package/lib/esm/NativeHost.js.map +1 -1
  231. package/lib/esm/SQLiteDb.d.ts +1 -1
  232. package/lib/esm/SQLiteDb.d.ts.map +1 -1
  233. package/lib/esm/SQLiteDb.js +6 -5
  234. package/lib/esm/SQLiteDb.js.map +1 -1
  235. package/lib/esm/SqliteStatement.d.ts +1 -1
  236. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  237. package/lib/esm/SqliteStatement.js +1 -1
  238. package/lib/esm/SqliteStatement.js.map +1 -1
  239. package/lib/esm/TextAnnotationElement.d.ts +2 -2
  240. package/lib/esm/TextAnnotationElement.js +2 -2
  241. package/lib/esm/TextAnnotationElement.js.map +1 -1
  242. package/lib/esm/Texture.d.ts +1 -1
  243. package/lib/esm/Texture.js +1 -1
  244. package/lib/esm/Texture.js.map +1 -1
  245. package/lib/esm/TxnManager.d.ts +4 -4
  246. package/lib/esm/TxnManager.d.ts.map +1 -1
  247. package/lib/esm/TxnManager.js +2 -1
  248. package/lib/esm/TxnManager.js.map +1 -1
  249. package/lib/esm/ViewDefinition.d.ts +114 -14
  250. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  251. package/lib/esm/ViewDefinition.js +223 -15
  252. package/lib/esm/ViewDefinition.js.map +1 -1
  253. package/lib/esm/ViewStateHydrator.js +3 -3
  254. package/lib/esm/ViewStateHydrator.js.map +1 -1
  255. package/lib/esm/ViewStore.d.ts.map +1 -1
  256. package/lib/esm/ViewStore.js +28 -28
  257. package/lib/esm/ViewStore.js.map +1 -1
  258. package/lib/esm/core-backend.d.ts +1 -1
  259. package/lib/esm/core-backend.d.ts.map +1 -1
  260. package/lib/esm/core-backend.js +21 -1
  261. package/lib/esm/core-backend.js.map +1 -1
  262. package/lib/esm/internal/ChannelAdmin.js +5 -5
  263. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  264. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  265. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  266. package/lib/esm/internal/ElementLRUCache.js +116 -0
  267. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  268. package/lib/esm/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
  269. package/lib/esm/internal/HubMock.d.ts.map +1 -0
  270. package/lib/esm/{HubMock.js → internal/HubMock.js} +22 -11
  271. package/lib/esm/internal/HubMock.js.map +1 -0
  272. package/lib/esm/internal/Symbols.d.ts +2 -2
  273. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  274. package/lib/esm/internal/Symbols.js +2 -2
  275. package/lib/esm/internal/Symbols.js.map +1 -1
  276. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +2 -16
  277. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  278. package/lib/esm/internal/workspace/WorkspaceImpl.js +36 -100
  279. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  280. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  281. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +3 -3
  282. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  283. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  284. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  285. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  286. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  287. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  288. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  289. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  290. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  291. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  292. package/lib/esm/test/IModelTestUtils.d.ts +6 -2
  293. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  294. package/lib/esm/test/IModelTestUtils.js +27 -6
  295. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  296. package/lib/esm/test/TestChangeSetUtility.js +1 -1
  297. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  298. package/lib/esm/test/TestUtils.d.ts +1 -1
  299. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  300. package/lib/esm/test/TestUtils.js +1 -1
  301. package/lib/esm/test/TestUtils.js.map +1 -1
  302. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +4 -4
  303. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  304. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -23
  305. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  306. package/lib/esm/test/font/IModelDbFonts.test.js +1 -1
  307. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  308. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
  309. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  310. package/lib/esm/test/hubaccess/CheckpointManager.test.js +4 -3
  311. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  312. package/lib/esm/test/imodel/IModel.test.js +51 -13
  313. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  314. package/lib/esm/test/standalone/ChangeMerge.test.js +1 -1
  315. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  316. package/lib/esm/test/standalone/ChangesetReader.test.js +1 -1
  317. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  318. package/lib/esm/test/standalone/ExportGraphics.test.js +58 -41
  319. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  320. package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
  321. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  322. package/lib/esm/test/standalone/HubMock.test.js +1 -1
  323. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  324. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  325. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  326. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  327. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  328. package/lib/esm/test/standalone/IModelWrite.test.js +1 -1
  329. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  330. package/lib/esm/test/standalone/MergeConflict.test.js +1 -1
  331. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  332. package/lib/esm/test/standalone/ServerBasedLocks.test.js +1 -1
  333. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  334. package/lib/esm/test/standalone/SnapshotDb.test.js +25 -5
  335. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  336. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  337. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  338. package/lib/esm/test/standalone/Workspace.test.js +4 -3
  339. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  340. package/lib/esm/workspace/Workspace.d.ts +6 -13
  341. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  342. package/lib/esm/workspace/Workspace.js.map +1 -1
  343. package/lib/esm/workspace/WorkspaceEditor.d.ts +2 -7
  344. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  345. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  346. package/package.json +13 -13
  347. package/lib/cjs/HubMock.d.ts.map +0 -1
  348. package/lib/cjs/HubMock.js.map +0 -1
  349. package/lib/esm/HubMock.d.ts.map +0 -1
  350. package/lib/esm/HubMock.js.map +0 -1
  351. package/lib/esm/test/CloudSqliteMock.d.ts +0 -37
  352. package/lib/esm/test/CloudSqliteMock.d.ts.map +0 -1
  353. package/lib/esm/test/CloudSqliteMock.js +0 -117
  354. package/lib/esm/test/CloudSqliteMock.js.map +0 -1
@@ -11,11 +11,20 @@ import type { SQLiteDb, VersionedSqliteDb } from "./SQLiteDb";
11
11
  */
12
12
  export declare namespace CloudSqlite {
13
13
  export type RequestTokenArgs = Optional<BlobContainer.RequestTokenProps, "userToken">;
14
+ /** Add (or replace) a property to an object that is not enumerable.
15
+ * This is important so this member will be skipped when the object is the target of
16
+ * [structuredClone](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
17
+ * (e.g. when the object is part of an exception that is marshalled across process boundaries.)
18
+ */
19
+ export function addHiddenProperty<T>(o: T, p: PropertyKey, value?: any): T;
20
+ export function getBlobService(): BlobContainer.ContainerService;
14
21
  /**
15
22
  * Request a new AccessToken for a cloud container using the [[BlobContainer]] service.
16
23
  * If the service is unavailable or returns an error, an empty token is returned.
17
24
  */
18
25
  export function requestToken(args: RequestTokenArgs): Promise<AccessToken>;
26
+ export function noLeadingOrTrailingSpaces(name: string, msg: string): void;
27
+ export function validateDbName(dbName: DbName): void;
19
28
  /**
20
29
  * Create a new CloudContainer from a ContainerAccessProps. For non-public containers, a valid accessToken must be provided before the container
21
30
  * can be used (e.g. via [[CloudSqlite.requestToken]]).
@@ -135,16 +144,65 @@ export declare namespace CloudSqlite {
135
144
  /** The total number of attached containers on this cache. */
136
145
  readonly attachedContainers?: number;
137
146
  }
147
+ /** The base name of a CloudSqlite database, without any version information.
148
+ * The name must conform to the following constraints:
149
+ * - Case-insensitively unique among all databases in the same [[CloudSqlite.CloudContainer]]
150
+ * - Between 1 and 255 characters in length.
151
+ * - A legal filename on both [Windows](https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions) and UNIX.
152
+ * - Contain none of the following characters: forward or backward slash, period, single or double quote, backtick, colon, and "#".
153
+ * - Begin or end with a whitespace character.
154
+ * @see [[CloudSqlite.DbFullName]] for the fully-specified name, including version information.
155
+ */
156
+ export type DbName = string;
157
+ /** The fully-specified name of a CloudSqlite database, combining its [[CloudSqlite.DbName]] and [[CloudSqlite.DbVersion]] in the format "name:version".
158
+ */
159
+ export type DbFullName = string;
160
+ /** A [semver](https://github.com/npm/node-semver) string describing the version of a database, e.g., "4.2.11".
161
+ */
162
+ export type DbVersion = string;
163
+ /** A [semver string](https://github.com/npm/node-semver?tab=readme-ov-file#ranges) describing a range of acceptable versions,
164
+ * e.g., ">=1.2.7 <1.3.0".
165
+ */
166
+ export type DbVersionRange = string;
167
+ /** Specifies the name and version of a CloudSqlite database.
168
+ */
169
+ export interface DbNameAndVersion {
170
+ /** The name of the database */
171
+ readonly dbName: DbName;
172
+ /** The range of acceptable versions of the database of the specified [[dbName]].
173
+ * If omitted, it defaults to the newest available version.
174
+ */
175
+ readonly version?: DbVersionRange;
176
+ }
177
+ export interface LoadProps extends DbNameAndVersion {
178
+ readonly container: CloudContainer;
179
+ /** If true, allow semver [prerelease versions](https://github.com/npm/node-semver?tab=readme-ov-file#prerelease-tags), e.g., "1.4.2-beta.0".
180
+ * By default, only released version are allowed.
181
+ */
182
+ readonly includePrerelease?: boolean;
183
+ /** If true, start a prefetch operation whenever this database is opened, to begin downloading pages of the database before they are needed. */
184
+ readonly prefetch?: boolean;
185
+ }
186
+ /**
187
+ * The release increment for a version number, used as part of [[CloudSqlite.CreateNewDbVersionArgs]] to specify the kind of version to create.
188
+ * @see [semver.ReleaseType](https://www.npmjs.com/package/semver)
189
+ */
190
+ export type SemverIncrement = "major" | "minor" | "patch" | "premajor" | "preminor" | "prepatch" | "prerelease";
191
+ /**
192
+ * Arguments supplied to [[CloudSqlite.createNewDbVersion]].
193
+ */
194
+ export interface CreateNewDbVersionArgs {
195
+ readonly fromDb: DbNameAndVersion;
196
+ /** The type of version increment to apply to the source version. */
197
+ readonly versionType: SemverIncrement;
198
+ /** For prerelease versions, a string that becomes part of the version name. */
199
+ readonly identifier?: string;
200
+ }
138
201
  /** The name of a CloudSqlite database within a CloudContainer. */
139
202
  export interface DbNameProp {
140
203
  /** the name of the database within the CloudContainer.
141
204
  * @note names of databases within a CloudContainer are always **case sensitive** on all platforms.*/
142
- dbName: string;
143
- }
144
- /** Properties for accessing a database within a CloudContainer */
145
- export interface DbProps extends DbNameProp {
146
- /** the name of the local file to access the database. */
147
- localFileName: LocalFileName;
205
+ dbName: DbFullName;
148
206
  }
149
207
  export type TransferDirection = "upload" | "download";
150
208
  export interface TransferProgress {
@@ -161,7 +219,10 @@ export declare namespace CloudSqlite {
161
219
  /** The number of prefetch requests to issue while there is foreground activity. Default is 3. */
162
220
  minRequests?: number;
163
221
  }
164
- export type TransferDbProps = DbProps & TransferProgress & CloudHttpProps;
222
+ export interface TransferDbProps extends DbNameProp, TransferProgress, CloudHttpProps {
223
+ /** the name of the local file to access the database for uploading and downloading */
224
+ localFileName: LocalFileName;
225
+ }
165
226
  /** Properties for creating a CloudCache. */
166
227
  export interface CacheProps extends CloudHttpProps {
167
228
  /** full path of directory for cache to store its files. Must be on a (preferably fast) local drive, and must be empty when the cache is first created. */
@@ -517,25 +578,48 @@ export declare namespace CloudSqlite {
517
578
  container: CloudContainer;
518
579
  busyHandler?: WriteLockBusyHandler;
519
580
  }): Promise<void>;
581
+ export function getWriteLockHeldBy(container: CloudContainer): string | undefined;
582
+ /** release the write lock on a container. */
583
+ export function releaseWriteLock(container: CloudContainer): void;
520
584
  /**
521
- * Perform an asynchronous write operation on a CloudContainer with the write lock held.
522
- * 1. if write lock is already held by the current user, refresh write lock's expiry time, call operation and return.
523
- * 2. attempt to acquire the write lock, with retries. Throw if unable to obtain write lock.
524
- * 3. perform the operation
525
- * 3.a if the operation throws, abandon all changes and re-throw
526
- * 4. release the write lock.
527
- * 5. return value from operation
528
- * @param user the name to be displayed to other users in the event they attempt to obtain the lock while it is held by us
529
- * @param container the CloudContainer for which the lock is to be acquired
530
- * @param operation an asynchronous operation performed with the write lock held.
531
- * @param busyHandler if present, function called when the write lock is currently held by another user.
532
- * @returns a Promise with the result of `operation`
533
- */
585
+ * Perform an asynchronous write operation on a CloudContainer with the write lock held.
586
+ * 1. if write lock is already held by the current user, refresh write lock's expiry time, call operation and return.
587
+ * 2. attempt to acquire the write lock, with retries. Throw if unable to obtain write lock.
588
+ * 3. perform the operation
589
+ * 3.a if the operation throws, abandon all changes and re-throw
590
+ * 4. release the write lock.
591
+ * 5. return value from operation
592
+ * @param user the name to be displayed to other users in the event they attempt to obtain the lock while it is held by us
593
+ * @param container the CloudContainer for which the lock is to be acquired
594
+ * @param operation an asynchronous operation performed with the write lock held.
595
+ * @param busyHandler if present, function called when the write lock is currently held by another user.
596
+ * @returns a Promise with the result of `operation`
597
+ */
534
598
  export function withWriteLock<T>(args: {
535
599
  user: string;
536
600
  container: CloudContainer;
537
601
  busyHandler?: WriteLockBusyHandler;
538
602
  }, operation: () => Promise<T>): Promise<T>;
603
+ /**
604
+ * Parse the name of a Db stored in a CloudContainer into the dbName and version number. A single CloudContainer may hold
605
+ * many versions of the same Db. The name of the Db in the CloudContainer is in the format "name:version". This
606
+ * function splits them into separate strings.
607
+ */
608
+ export function parseDbFileName(dbFileName: DbFullName): {
609
+ dbName: DbName;
610
+ version: DbVersion;
611
+ };
612
+ export function validateDbVersion(version?: DbVersion): string;
613
+ export function isSemverPrerelease(version: string): true | readonly (string | number)[] | null;
614
+ export function isSemverEditable(dbFullName: string, container: CloudContainer): boolean | readonly (string | number)[];
615
+ /** Create a dbName for a database from its base name and version. This will be in the format "name:version" */
616
+ export function makeSemverName(dbName: DbName, version?: DbVersion): DbName;
617
+ /** query the databases in the supplied container for the highest SemVer match according to the version range. Throws if no version available for the range. */
618
+ export function querySemverMatch(props: LoadProps): DbFullName;
619
+ export function createNewDbVersion(container: CloudContainer, args: CreateNewDbVersionArgs): Promise<{
620
+ oldDb: DbNameAndVersion;
621
+ newDb: DbNameAndVersion;
622
+ }>;
539
623
  /** Arguments to create or find a CloudCache */
540
624
  export interface CreateCloudCacheArg {
541
625
  /** The name of the CloudCache. CloudCache names must be unique. */
@@ -1 +1 @@
1
- {"version":3,"file":"CloudSqlite.d.ts","sourceRoot":"","sources":["../../src/CloudSqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudSqlite.d.ts","sourceRoot":"","sources":["../../src/CloudSqlite.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,17 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.CloudSqlite = void 0;
11
+ const semver = require("semver");
11
12
  const fs_1 = require("fs");
12
13
  const path_1 = require("path");
13
14
  const imodeljs_native_1 = require("@bentley/imodeljs-native");
14
15
  const core_bentley_1 = require("@itwin/core-bentley");
16
+ const core_common_1 = require("@itwin/core-common");
15
17
  const BlobContainerService_1 = require("./BlobContainerService");
16
18
  const IModelHost_1 = require("./IModelHost");
17
19
  const IModelJsFs_1 = require("./IModelJsFs");
18
20
  const tracing_1 = require("./rpc/tracing");
19
- // spell:ignore logmsg httpcode daemonless cachefile cacheslots ddthh
21
+ // spell:ignore logmsg httpcode daemonless cachefile cacheslots ddthh cloudsqlite premajor preminor prepatch
20
22
  /**
21
23
  * Types for accessing SQLite databases stored in cloud containers.
22
24
  * @beta
@@ -25,6 +27,24 @@ var CloudSqlite;
25
27
  (function (CloudSqlite) {
26
28
  const logInfo = (msg) => core_bentley_1.Logger.logInfo("CloudSqlite", msg);
27
29
  const logError = (msg) => core_bentley_1.Logger.logError("CloudSqlite", msg);
30
+ /** Add (or replace) a property to an object that is not enumerable.
31
+ * This is important so this member will be skipped when the object is the target of
32
+ * [structuredClone](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
33
+ * (e.g. when the object is part of an exception that is marshalled across process boundaries.)
34
+ */
35
+ function addHiddenProperty(o, p, value) {
36
+ return Object.defineProperty(o, p, { enumerable: false, writable: true, value });
37
+ }
38
+ CloudSqlite.addHiddenProperty = addHiddenProperty;
39
+ function verifyService(serviceName, service) {
40
+ if (undefined === service)
41
+ core_common_1.CloudSqliteError.throwError("service-not-available", { message: `${serviceName} service is not available` });
42
+ return service;
43
+ }
44
+ function getBlobService() {
45
+ return verifyService("BlobContainer", BlobContainerService_1.BlobContainer.service);
46
+ }
47
+ CloudSqlite.getBlobService = getBlobService;
28
48
  /**
29
49
  * Request a new AccessToken for a cloud container using the [[BlobContainer]] service.
30
50
  * If the service is unavailable or returns an error, an empty token is returned.
@@ -34,13 +54,21 @@ var CloudSqlite;
34
54
  let userToken = args.userToken ? args.userToken : await IModelHost_1.IModelHost.getAccessToken();
35
55
  if (userToken === "")
36
56
  userToken = tracing_1.RpcTrace.currentActivity?.accessToken ?? "";
37
- if (BlobContainerService_1.BlobContainer.service === undefined) {
38
- throw new Error(`BlobContainer.service is not defined`);
39
- }
40
- const response = await BlobContainerService_1.BlobContainer.service.requestToken({ ...args, userToken });
57
+ const response = await getBlobService().requestToken({ ...args, userToken });
41
58
  return response?.token ?? "";
42
59
  }
43
60
  CloudSqlite.requestToken = requestToken;
61
+ function noLeadingOrTrailingSpaces(name, msg) {
62
+ if (name.trim() !== name)
63
+ core_common_1.CloudSqliteError.throwError("invalid-name", { message: `${msg} [${name}] may not have leading or trailing spaces` });
64
+ }
65
+ CloudSqlite.noLeadingOrTrailingSpaces = noLeadingOrTrailingSpaces;
66
+ function validateDbName(dbName) {
67
+ if (dbName === "" || dbName.length > 255 || /[#\.<>:"/\\"`'|?*\u0000-\u001F]/g.test(dbName) || /^(con|prn|aux|nul|com\d|lpt\d)$/i.test(dbName))
68
+ core_common_1.CloudSqliteError.throwError("invalid-name", { message: "invalid dbName", dbName });
69
+ noLeadingOrTrailingSpaces(dbName, "dbName");
70
+ }
71
+ CloudSqlite.validateDbName = validateDbName;
44
72
  /**
45
73
  * Create a new CloudContainer from a ContainerAccessProps. For non-public containers, a valid accessToken must be provided before the container
46
74
  * can be used (e.g. via [[CloudSqlite.requestToken]]).
@@ -49,6 +77,10 @@ var CloudSqlite;
49
77
  */
50
78
  function createCloudContainer(args) {
51
79
  const container = new imodeljs_native_1.NativeLibrary.nativeLib.CloudContainer(args);
80
+ // we're going to add these fields to the newly created object. They should *not* be enumerable so they are not copied
81
+ // when the object is cloned (e.g. when included in an exception across processes).
82
+ addHiddenProperty(container, "timer");
83
+ addHiddenProperty(container, "refreshPromise");
52
84
  const refreshSeconds = (undefined !== args.tokenRefreshSeconds) ? args.tokenRefreshSeconds : 60 * 60; // default is 1 hour
53
85
  container.lockExpireSeconds = args.lockExpireSeconds ?? 60 * 60; // default is 1 hour
54
86
  // don't refresh tokens for public containers or if refreshSeconds<=0
@@ -74,13 +106,13 @@ var CloudSqlite;
74
106
  tokenRefreshFn(); // schedule next refresh
75
107
  }, refreshSeconds * 1000);
76
108
  };
77
- container.onConnected = tokenRefreshFn; // schedule the first refresh when the container is connected
78
- container.onDisconnect = () => {
109
+ addHiddenProperty(container, "onConnected", tokenRefreshFn); // schedule the first refresh when the container is connected
110
+ addHiddenProperty(container, "onDisconnect", () => {
79
111
  if (container.timer !== undefined) {
80
112
  clearTimeout(container.timer);
81
113
  container.timer = undefined;
82
114
  }
83
- };
115
+ });
84
116
  }
85
117
  return container;
86
118
  }
@@ -90,6 +122,7 @@ var CloudSqlite;
90
122
  return new imodeljs_native_1.NativeLibrary.nativeLib.CloudPrefetch(container, dbName, args);
91
123
  }
92
124
  CloudSqlite.startCloudPrefetch = startCloudPrefetch;
125
+ ;
93
126
  /** Logging categories for `CloudCache.setLogMask` */
94
127
  let LoggingMask;
95
128
  (function (LoggingMask) {
@@ -212,50 +245,60 @@ var CloudSqlite;
212
245
  const container = args.container;
213
246
  while (true) {
214
247
  try {
215
- if (container.hasWriteLock) {
216
- if (container.writeLockHeldBy === args.user) {
217
- return container.acquireWriteLock(args.user); // refresh the write lock's expiry time.
218
- }
219
- const err = new Error(); // lock held by another user within this process
220
- err.errorNumber = 5;
221
- err.lockedBy = container.writeLockHeldBy;
222
- err.expires = container.writeLockExpires;
223
- throw err;
224
- }
225
- return container.acquireWriteLock(args.user);
248
+ // if the write is already held:
249
+ // - by the same user, just update the write lock expiry (by calling acquireWriteLock).
250
+ // - by another user, throw an error
251
+ if (container.hasWriteLock && container.writeLockHeldBy !== args.user)
252
+ core_common_1.CloudSqliteError.throwError("write-lock-held", {
253
+ message: "lock in use", errorNumber: 5,
254
+ lockedBy: container.writeLockHeldBy ?? "",
255
+ expires: container.writeLockExpires
256
+ });
257
+ container.acquireWriteLock(args.user);
258
+ container.writeLockHeldBy = args.user;
259
+ return;
226
260
  }
227
261
  catch (e) {
228
262
  if (e.errorNumber === 5 && args.busyHandler && "stop" !== await args.busyHandler(e.lockedBy, e.expires)) // 5 === BE_SQLITE_BUSY
229
263
  continue; // busy handler wants to try again
230
- throw e;
264
+ core_common_1.CloudSqliteError.throwError("write-lock-held", { message: e.message, ...e });
231
265
  }
232
266
  }
233
267
  }
234
268
  CloudSqlite.acquireWriteLock = acquireWriteLock;
269
+ function getWriteLockHeldBy(container) {
270
+ return container.writeLockHeldBy;
271
+ }
272
+ CloudSqlite.getWriteLockHeldBy = getWriteLockHeldBy;
273
+ /** release the write lock on a container. */
274
+ function releaseWriteLock(container) {
275
+ container.releaseWriteLock();
276
+ container.writeLockHeldBy = undefined;
277
+ }
278
+ CloudSqlite.releaseWriteLock = releaseWriteLock;
235
279
  /**
236
- * Perform an asynchronous write operation on a CloudContainer with the write lock held.
237
- * 1. if write lock is already held by the current user, refresh write lock's expiry time, call operation and return.
238
- * 2. attempt to acquire the write lock, with retries. Throw if unable to obtain write lock.
239
- * 3. perform the operation
240
- * 3.a if the operation throws, abandon all changes and re-throw
241
- * 4. release the write lock.
242
- * 5. return value from operation
243
- * @param user the name to be displayed to other users in the event they attempt to obtain the lock while it is held by us
244
- * @param container the CloudContainer for which the lock is to be acquired
245
- * @param operation an asynchronous operation performed with the write lock held.
246
- * @param busyHandler if present, function called when the write lock is currently held by another user.
247
- * @returns a Promise with the result of `operation`
248
- */
280
+ * Perform an asynchronous write operation on a CloudContainer with the write lock held.
281
+ * 1. if write lock is already held by the current user, refresh write lock's expiry time, call operation and return.
282
+ * 2. attempt to acquire the write lock, with retries. Throw if unable to obtain write lock.
283
+ * 3. perform the operation
284
+ * 3.a if the operation throws, abandon all changes and re-throw
285
+ * 4. release the write lock.
286
+ * 5. return value from operation
287
+ * @param user the name to be displayed to other users in the event they attempt to obtain the lock while it is held by us
288
+ * @param container the CloudContainer for which the lock is to be acquired
289
+ * @param operation an asynchronous operation performed with the write lock held.
290
+ * @param busyHandler if present, function called when the write lock is currently held by another user.
291
+ * @returns a Promise with the result of `operation`
292
+ */
249
293
  async function withWriteLock(args, operation) {
250
- await acquireWriteLock(args);
251
294
  const containerInternal = args.container;
295
+ const wasLockedBy = containerInternal.writeLockHeldBy;
296
+ await acquireWriteLock(args);
252
297
  try {
253
- if (containerInternal.writeLockHeldBy === args.user) // If the user already had the write lock, then don't release it.
298
+ if (wasLockedBy === args.user) // If the user already had the write lock, then don't release it.
254
299
  return await operation();
255
- containerInternal.writeLockHeldBy = args.user;
256
300
  const val = await operation(); // wait for work to finish or fail
257
- containerInternal.releaseWriteLock();
258
- containerInternal.writeLockHeldBy = undefined;
301
+ releaseWriteLock(containerInternal);
259
302
  return val;
260
303
  }
261
304
  catch (e) {
@@ -265,6 +308,79 @@ var CloudSqlite;
265
308
  }
266
309
  }
267
310
  CloudSqlite.withWriteLock = withWriteLock;
311
+ /**
312
+ * Parse the name of a Db stored in a CloudContainer into the dbName and version number. A single CloudContainer may hold
313
+ * many versions of the same Db. The name of the Db in the CloudContainer is in the format "name:version". This
314
+ * function splits them into separate strings.
315
+ */
316
+ function parseDbFileName(dbFileName) {
317
+ const parts = dbFileName.split(":");
318
+ return { dbName: parts[0], version: parts[1] ?? "" };
319
+ }
320
+ CloudSqlite.parseDbFileName = parseDbFileName;
321
+ function validateDbVersion(version) {
322
+ version = version ?? "0.0.0";
323
+ const opts = { loose: true, includePrerelease: true };
324
+ // clean allows prerelease, so try it first. If that fails attempt to coerce it (coerce strips prerelease even if you say not to.)
325
+ const semVersion = semver.clean(version, opts) ?? semver.coerce(version, opts)?.version;
326
+ if (!semVersion)
327
+ core_common_1.CloudSqliteError.throwError("invalid-name", { message: "invalid version specification" });
328
+ version = semVersion;
329
+ return version;
330
+ }
331
+ CloudSqlite.validateDbVersion = validateDbVersion;
332
+ function isSemverPrerelease(version) {
333
+ return semver.major(version) === 0 || semver.prerelease(version);
334
+ }
335
+ CloudSqlite.isSemverPrerelease = isSemverPrerelease;
336
+ function isSemverEditable(dbFullName, container) {
337
+ return isSemverPrerelease(parseDbFileName(dbFullName).version) || container.queryDatabase(dbFullName)?.state === "copied";
338
+ }
339
+ CloudSqlite.isSemverEditable = isSemverEditable;
340
+ /** Create a dbName for a database from its base name and version. This will be in the format "name:version" */
341
+ function makeSemverName(dbName, version) {
342
+ return `${dbName}:${validateDbVersion(version)}`;
343
+ }
344
+ CloudSqlite.makeSemverName = makeSemverName;
345
+ /** query the databases in the supplied container for the highest SemVer match according to the version range. Throws if no version available for the range. */
346
+ function querySemverMatch(props) {
347
+ const dbName = props.dbName;
348
+ const dbs = props.container.queryDatabases(`${dbName}*`); // get all databases that start with dbName
349
+ const versions = [];
350
+ for (const db of dbs) {
351
+ const thisDb = parseDbFileName(db);
352
+ if (thisDb.dbName === dbName && "string" === typeof thisDb.version && thisDb.version.length > 0)
353
+ versions.push(thisDb.version);
354
+ }
355
+ if (versions.length === 0)
356
+ versions[0] = "0.0.0";
357
+ const range = props.version ?? "*";
358
+ try {
359
+ const version = semver.maxSatisfying(versions, range, { loose: true, includePrerelease: props.includePrerelease });
360
+ if (version)
361
+ return `${dbName}:${version}`;
362
+ }
363
+ catch { }
364
+ core_common_1.CloudSqliteError.throwError("no-version-available", { message: `No version of '${dbName}' available for "${range}"`, ...props });
365
+ }
366
+ CloudSqlite.querySemverMatch = querySemverMatch;
367
+ async function createNewDbVersion(container, args) {
368
+ const oldFullName = CloudSqlite.querySemverMatch({ container, ...args.fromDb });
369
+ const oldDb = CloudSqlite.parseDbFileName(oldFullName);
370
+ const newVersion = semver.inc(oldDb.version, args.versionType, args.identifier);
371
+ if (!newVersion)
372
+ core_common_1.CloudSqliteError.throwError("invalid-name", { message: `cannot create new version for ${oldFullName}`, dbName: oldFullName, ...args });
373
+ const newName = makeSemverName(oldDb.dbName, newVersion);
374
+ try {
375
+ await container.copyDatabase(oldFullName, newName);
376
+ }
377
+ catch (e) {
378
+ core_common_1.CloudSqliteError.throwError("copy-error", { message: `Error attempting to create new version ${newName} from ${oldFullName}`, ...args, cause: e });
379
+ }
380
+ // return the old and new db names and versions
381
+ return { oldDb, newDb: { dbName: oldDb.dbName, version: newVersion } };
382
+ }
383
+ CloudSqlite.createNewDbVersion = createNewDbVersion;
268
384
  /** The collection of currently extant `CloudCache`s, by name. */
269
385
  class CloudCaches {
270
386
  static cloudCaches = new Map();
@@ -395,14 +511,9 @@ var CloudSqlite;
395
511
  * @note the current user must have administrator rights to create containers.
396
512
  */
397
513
  static async createBlobContainer(args) {
398
- const service = BlobContainerService_1.BlobContainer.service;
399
- if (undefined === service)
400
- throw new Error("no BlobContainer service available");
401
- const auth = IModelHost_1.IModelHost.authorizationClient;
402
- if (undefined === auth)
403
- throw new Error("no authorization client available");
514
+ const auth = verifyService("Authorization Client", IModelHost_1.IModelHost.authorizationClient);
404
515
  const userToken = await auth.getAccessToken();
405
- const cloudContainer = await service.create({ scope: args.scope, metadata: args.metadata, userToken });
516
+ const cloudContainer = await getBlobService().create({ scope: args.scope, metadata: args.metadata, userToken });
406
517
  return { baseUri: cloudContainer.baseUri, containerId: cloudContainer.containerId, storageType: cloudContainer.provider };
407
518
  }
408
519
  /**
@@ -472,7 +583,7 @@ var CloudSqlite;
472
583
  getDbMethod(methodName) {
473
584
  const fn = this._cloudDb[methodName];
474
585
  if (typeof fn !== "function")
475
- throw new Error(`illegal method name ${methodName}`);
586
+ core_common_1.CloudSqliteError.throwError("not-a-function", { message: `illegal method name ${methodName}`, dbName: this.dbName });
476
587
  return fn;
477
588
  }
478
589
  /**