@itwin/core-backend 5.0.0-dev.90 → 5.0.0-dev.92
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.
- package/lib/esm/BackendHubAccess.d.ts +215 -0
- package/lib/esm/BackendHubAccess.d.ts.map +1 -0
- package/lib/esm/BackendHubAccess.js +41 -0
- package/lib/esm/BackendHubAccess.js.map +1 -0
- package/lib/esm/BackendLoggerCategory.d.ts +88 -0
- package/lib/esm/BackendLoggerCategory.d.ts.map +1 -0
- package/lib/esm/BackendLoggerCategory.js +93 -0
- package/lib/esm/BackendLoggerCategory.js.map +1 -0
- package/lib/esm/BisCoreSchema.d.ts +22 -0
- package/lib/esm/BisCoreSchema.d.ts.map +1 -0
- package/lib/esm/BisCoreSchema.js +61 -0
- package/lib/esm/BisCoreSchema.js.map +1 -0
- package/lib/esm/BlobContainerService.d.ts +159 -0
- package/lib/esm/BlobContainerService.d.ts.map +1 -0
- package/lib/esm/BlobContainerService.js +15 -0
- package/lib/esm/BlobContainerService.js.map +1 -0
- package/lib/esm/BriefcaseManager.d.ts +213 -0
- package/lib/esm/BriefcaseManager.d.ts.map +1 -0
- package/lib/esm/BriefcaseManager.js +520 -0
- package/lib/esm/BriefcaseManager.js.map +1 -0
- package/lib/esm/Category.d.ts +136 -0
- package/lib/esm/Category.d.ts.map +1 -0
- package/lib/esm/Category.js +224 -0
- package/lib/esm/Category.js.map +1 -0
- package/lib/esm/ChangeSummaryManager.d.ts +161 -0
- package/lib/esm/ChangeSummaryManager.d.ts.map +1 -0
- package/lib/esm/ChangeSummaryManager.js +414 -0
- package/lib/esm/ChangeSummaryManager.js.map +1 -0
- package/lib/esm/ChangedElementsDb.d.ts +101 -0
- package/lib/esm/ChangedElementsDb.d.ts.map +1 -0
- package/lib/esm/ChangedElementsDb.js +165 -0
- package/lib/esm/ChangedElementsDb.js.map +1 -0
- package/lib/esm/ChangesetECAdaptor.d.ts +203 -0
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -0
- package/lib/esm/ChangesetECAdaptor.js +814 -0
- package/lib/esm/ChangesetECAdaptor.js.map +1 -0
- package/lib/esm/ChannelControl.d.ts +68 -0
- package/lib/esm/ChannelControl.d.ts.map +1 -0
- package/lib/esm/ChannelControl.js +15 -0
- package/lib/esm/ChannelControl.js.map +1 -0
- package/lib/esm/CheckpointManager.d.ts +123 -0
- package/lib/esm/CheckpointManager.d.ts.map +1 -0
- package/lib/esm/CheckpointManager.js +375 -0
- package/lib/esm/CheckpointManager.js.map +1 -0
- package/lib/esm/ClassRegistry.d.ts +134 -0
- package/lib/esm/ClassRegistry.d.ts.map +1 -0
- package/lib/esm/ClassRegistry.js +324 -0
- package/lib/esm/ClassRegistry.js.map +1 -0
- package/lib/esm/CloudSqlite.d.ts +682 -0
- package/lib/esm/CloudSqlite.d.ts.map +1 -0
- package/lib/esm/CloudSqlite.js +511 -0
- package/lib/esm/CloudSqlite.js.map +1 -0
- package/lib/esm/CodeService.d.ts +402 -0
- package/lib/esm/CodeService.d.ts.map +1 -0
- package/lib/esm/CodeService.js +65 -0
- package/lib/esm/CodeService.js.map +1 -0
- package/lib/esm/CodeSpecs.d.ts +59 -0
- package/lib/esm/CodeSpecs.d.ts.map +1 -0
- package/lib/esm/CodeSpecs.js +152 -0
- package/lib/esm/CodeSpecs.js.map +1 -0
- package/lib/esm/ConcurrentQuery.d.ts +14 -0
- package/lib/esm/ConcurrentQuery.d.ts.map +1 -0
- package/lib/esm/ConcurrentQuery.js +33 -0
- package/lib/esm/ConcurrentQuery.js.map +1 -0
- package/lib/esm/CustomViewState3dCreator.d.ts +22 -0
- package/lib/esm/CustomViewState3dCreator.d.ts.map +1 -0
- package/lib/esm/CustomViewState3dCreator.js +78 -0
- package/lib/esm/CustomViewState3dCreator.js.map +1 -0
- package/lib/esm/DevTools.d.ts +73 -0
- package/lib/esm/DevTools.d.ts.map +1 -0
- package/lib/esm/DevTools.js +153 -0
- package/lib/esm/DevTools.js.map +1 -0
- package/lib/esm/DisplayStyle.d.ts +99 -0
- package/lib/esm/DisplayStyle.d.ts.map +1 -0
- package/lib/esm/DisplayStyle.js +264 -0
- package/lib/esm/DisplayStyle.js.map +1 -0
- package/lib/esm/ECDb.d.ts +170 -0
- package/lib/esm/ECDb.d.ts.map +1 -0
- package/lib/esm/ECDb.js +329 -0
- package/lib/esm/ECDb.js.map +1 -0
- package/lib/esm/ECSchemaXmlContext.d.ts +46 -0
- package/lib/esm/ECSchemaXmlContext.d.ts.map +1 -0
- package/lib/esm/ECSchemaXmlContext.js +66 -0
- package/lib/esm/ECSchemaXmlContext.js.map +1 -0
- package/lib/esm/ECSqlStatement.d.ts +492 -0
- package/lib/esm/ECSqlStatement.d.ts.map +1 -0
- package/lib/esm/ECSqlStatement.js +810 -0
- package/lib/esm/ECSqlStatement.js.map +1 -0
- package/lib/esm/Element.d.ts +987 -0
- package/lib/esm/Element.d.ts.map +1 -0
- package/lib/esm/Element.js +1337 -0
- package/lib/esm/Element.js.map +1 -0
- package/lib/esm/ElementAspect.d.ts +164 -0
- package/lib/esm/ElementAspect.d.ts.map +1 -0
- package/lib/esm/ElementAspect.js +204 -0
- package/lib/esm/ElementAspect.js.map +1 -0
- package/lib/esm/ElementGraphics.d.ts +7 -0
- package/lib/esm/ElementGraphics.d.ts.map +1 -0
- package/lib/esm/ElementGraphics.js +36 -0
- package/lib/esm/ElementGraphics.js.map +1 -0
- package/lib/esm/ElementTreeWalker.d.ts +182 -0
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -0
- package/lib/esm/ElementTreeWalker.js +421 -0
- package/lib/esm/ElementTreeWalker.js.map +1 -0
- package/lib/esm/Entity.d.ts +142 -0
- package/lib/esm/Entity.d.ts.map +1 -0
- package/lib/esm/Entity.js +186 -0
- package/lib/esm/Entity.js.map +1 -0
- package/lib/esm/EntityReferences.d.ts +50 -0
- package/lib/esm/EntityReferences.d.ts.map +1 -0
- package/lib/esm/EntityReferences.js +92 -0
- package/lib/esm/EntityReferences.js.map +1 -0
- package/lib/esm/ExportGraphics.d.ts +318 -0
- package/lib/esm/ExportGraphics.d.ts.map +1 -0
- package/lib/esm/ExportGraphics.js +209 -0
- package/lib/esm/ExportGraphics.js.map +1 -0
- package/lib/esm/ExternalSource.d.ts +89 -0
- package/lib/esm/ExternalSource.d.ts.map +1 -0
- package/lib/esm/ExternalSource.js +139 -0
- package/lib/esm/ExternalSource.js.map +1 -0
- package/lib/esm/FontFile.d.ts +68 -0
- package/lib/esm/FontFile.d.ts.map +1 -0
- package/lib/esm/FontFile.js +33 -0
- package/lib/esm/FontFile.js.map +1 -0
- package/lib/esm/GeoCoordConfig.d.ts +30 -0
- package/lib/esm/GeoCoordConfig.d.ts.map +1 -0
- package/lib/esm/GeoCoordConfig.js +78 -0
- package/lib/esm/GeoCoordConfig.js.map +1 -0
- package/lib/esm/GeographicCRSServices.d.ts +40 -0
- package/lib/esm/GeographicCRSServices.d.ts.map +1 -0
- package/lib/esm/GeographicCRSServices.js +17 -0
- package/lib/esm/GeographicCRSServices.js.map +1 -0
- package/lib/esm/GeometrySummary.d.ts +5 -0
- package/lib/esm/GeometrySummary.d.ts.map +1 -0
- package/lib/esm/GeometrySummary.js +381 -0
- package/lib/esm/GeometrySummary.js.map +1 -0
- package/lib/esm/HubMock.d.ts +95 -0
- package/lib/esm/HubMock.d.ts.map +1 -0
- package/lib/esm/HubMock.js +220 -0
- package/lib/esm/HubMock.js.map +1 -0
- package/lib/esm/IModelDb.d.ts +1398 -0
- package/lib/esm/IModelDb.d.ts.map +1 -0
- package/lib/esm/IModelDb.js +3230 -0
- package/lib/esm/IModelDb.js.map +1 -0
- package/lib/esm/IModelDbFonts.d.ts +54 -0
- package/lib/esm/IModelDbFonts.d.ts.map +1 -0
- package/lib/esm/IModelDbFonts.js +9 -0
- package/lib/esm/IModelDbFonts.js.map +1 -0
- package/lib/esm/IModelElementCloneContext.d.ts +92 -0
- package/lib/esm/IModelElementCloneContext.d.ts.map +1 -0
- package/lib/esm/IModelElementCloneContext.js +168 -0
- package/lib/esm/IModelElementCloneContext.js.map +1 -0
- package/lib/esm/IModelHost.d.ts +387 -0
- package/lib/esm/IModelHost.d.ts.map +1 -0
- package/lib/esm/IModelHost.js +502 -0
- package/lib/esm/IModelHost.js.map +1 -0
- package/lib/esm/IModelJsFs.d.ts +62 -0
- package/lib/esm/IModelJsFs.d.ts.map +1 -0
- package/lib/esm/IModelJsFs.js +151 -0
- package/lib/esm/IModelJsFs.js.map +1 -0
- package/lib/esm/ImageSourceConversion.d.ts +49 -0
- package/lib/esm/ImageSourceConversion.d.ts.map +1 -0
- package/lib/esm/ImageSourceConversion.js +33 -0
- package/lib/esm/ImageSourceConversion.js.map +1 -0
- package/lib/esm/IpcHost.d.ts +111 -0
- package/lib/esm/IpcHost.d.ts.map +1 -0
- package/lib/esm/IpcHost.js +311 -0
- package/lib/esm/IpcHost.js.map +1 -0
- package/lib/esm/LineStyle.d.ts +312 -0
- package/lib/esm/LineStyle.d.ts.map +1 -0
- package/lib/esm/LineStyle.js +293 -0
- package/lib/esm/LineStyle.js.map +1 -0
- package/lib/esm/LocalHub.d.ts +163 -0
- package/lib/esm/LocalHub.d.ts.map +1 -0
- package/lib/esm/LocalHub.js +583 -0
- package/lib/esm/LocalHub.js.map +1 -0
- package/lib/esm/LocalhostIpcHost.d.ts +22 -0
- package/lib/esm/LocalhostIpcHost.d.ts.map +1 -0
- package/lib/esm/LocalhostIpcHost.js +74 -0
- package/lib/esm/LocalhostIpcHost.js.map +1 -0
- package/lib/esm/LockControl.d.ts +73 -0
- package/lib/esm/LockControl.d.ts.map +1 -0
- package/lib/esm/LockControl.js +9 -0
- package/lib/esm/LockControl.js.map +1 -0
- package/lib/esm/Material.d.ts +131 -0
- package/lib/esm/Material.d.ts.map +1 -0
- package/lib/esm/Material.js +235 -0
- package/lib/esm/Material.js.map +1 -0
- package/lib/esm/Model.d.ts +375 -0
- package/lib/esm/Model.d.ts.map +1 -0
- package/lib/esm/Model.js +484 -0
- package/lib/esm/Model.js.map +1 -0
- package/lib/esm/NativeAppStorage.d.ts +52 -0
- package/lib/esm/NativeAppStorage.d.ts.map +1 -0
- package/lib/esm/NativeAppStorage.js +205 -0
- package/lib/esm/NativeAppStorage.js.map +1 -0
- package/lib/esm/NativeHost.d.ts +53 -0
- package/lib/esm/NativeHost.d.ts.map +1 -0
- package/lib/esm/NativeHost.js +158 -0
- package/lib/esm/NativeHost.js.map +1 -0
- package/lib/esm/NavigationRelationship.d.ts +185 -0
- package/lib/esm/NavigationRelationship.d.ts.map +1 -0
- package/lib/esm/NavigationRelationship.js +238 -0
- package/lib/esm/NavigationRelationship.js.map +1 -0
- package/lib/esm/PromiseMemoizer.d.ts +48 -0
- package/lib/esm/PromiseMemoizer.d.ts.map +1 -0
- package/lib/esm/PromiseMemoizer.js +101 -0
- package/lib/esm/PromiseMemoizer.js.map +1 -0
- package/lib/esm/PropertyStore.d.ts +134 -0
- package/lib/esm/PropertyStore.d.ts.map +1 -0
- package/lib/esm/PropertyStore.js +177 -0
- package/lib/esm/PropertyStore.js.map +1 -0
- package/lib/esm/Relationship.d.ts +399 -0
- package/lib/esm/Relationship.d.ts.map +1 -0
- package/lib/esm/Relationship.js +474 -0
- package/lib/esm/Relationship.js.map +1 -0
- package/lib/esm/RpcBackend.d.ts +6 -0
- package/lib/esm/RpcBackend.d.ts.map +1 -0
- package/lib/esm/RpcBackend.js +28 -0
- package/lib/esm/RpcBackend.js.map +1 -0
- package/lib/esm/SQLiteDb.d.ts +324 -0
- package/lib/esm/SQLiteDb.d.ts.map +1 -0
- package/lib/esm/SQLiteDb.js +379 -0
- package/lib/esm/SQLiteDb.js.map +1 -0
- package/lib/esm/Schema.d.ts +79 -0
- package/lib/esm/Schema.d.ts.map +1 -0
- package/lib/esm/Schema.js +113 -0
- package/lib/esm/Schema.js.map +1 -0
- package/lib/esm/SchemaSync.d.ts +47 -0
- package/lib/esm/SchemaSync.d.ts.map +1 -0
- package/lib/esm/SchemaSync.js +148 -0
- package/lib/esm/SchemaSync.js.map +1 -0
- package/lib/esm/SchemaUtils.d.ts +19 -0
- package/lib/esm/SchemaUtils.d.ts.map +1 -0
- package/lib/esm/SchemaUtils.js +37 -0
- package/lib/esm/SchemaUtils.js.map +1 -0
- package/lib/esm/SheetIndex.d.ts +148 -0
- package/lib/esm/SheetIndex.d.ts.map +1 -0
- package/lib/esm/SheetIndex.js +228 -0
- package/lib/esm/SheetIndex.js.map +1 -0
- package/lib/esm/SqliteChangesetReader.d.ts +278 -0
- package/lib/esm/SqliteChangesetReader.d.ts.map +1 -0
- package/lib/esm/SqliteChangesetReader.js +337 -0
- package/lib/esm/SqliteChangesetReader.js.map +1 -0
- package/lib/esm/SqliteStatement.d.ts +375 -0
- package/lib/esm/SqliteStatement.d.ts.map +1 -0
- package/lib/esm/SqliteStatement.js +615 -0
- package/lib/esm/SqliteStatement.js.map +1 -0
- package/lib/esm/TextAnnotationElement.d.ts +54 -0
- package/lib/esm/TextAnnotationElement.d.ts.map +1 -0
- package/lib/esm/TextAnnotationElement.js +89 -0
- package/lib/esm/TextAnnotationElement.js.map +1 -0
- package/lib/esm/TextAnnotationGeometry.d.ts +32 -0
- package/lib/esm/TextAnnotationGeometry.d.ts.map +1 -0
- package/lib/esm/TextAnnotationGeometry.js +181 -0
- package/lib/esm/TextAnnotationGeometry.js.map +1 -0
- package/lib/esm/TextAnnotationLayout.d.ts +177 -0
- package/lib/esm/TextAnnotationLayout.d.ts.map +1 -0
- package/lib/esm/TextAnnotationLayout.js +513 -0
- package/lib/esm/TextAnnotationLayout.js.map +1 -0
- package/lib/esm/Texture.d.ts +58 -0
- package/lib/esm/Texture.d.ts.map +1 -0
- package/lib/esm/Texture.js +81 -0
- package/lib/esm/Texture.js.map +1 -0
- package/lib/esm/TileStorage.d.ts +59 -0
- package/lib/esm/TileStorage.d.ts.map +1 -0
- package/lib/esm/TileStorage.js +158 -0
- package/lib/esm/TileStorage.js.map +1 -0
- package/lib/esm/TxnManager.d.ts +296 -0
- package/lib/esm/TxnManager.d.ts.map +1 -0
- package/lib/esm/TxnManager.js +619 -0
- package/lib/esm/TxnManager.js.map +1 -0
- package/lib/esm/ViewDefinition.d.ts +392 -0
- package/lib/esm/ViewDefinition.d.ts.map +1 -0
- package/lib/esm/ViewDefinition.js +638 -0
- package/lib/esm/ViewDefinition.js.map +1 -0
- package/lib/esm/ViewStateHydrator.d.ts +14 -0
- package/lib/esm/ViewStateHydrator.d.ts.map +1 -0
- package/lib/esm/ViewStateHydrator.js +89 -0
- package/lib/esm/ViewStateHydrator.js.map +1 -0
- package/lib/esm/ViewStore.d.ts +502 -0
- package/lib/esm/ViewStore.d.ts.map +1 -0
- package/lib/esm/ViewStore.js +1259 -0
- package/lib/esm/ViewStore.js.map +1 -0
- package/lib/esm/core-backend.d.ts +183 -0
- package/lib/esm/core-backend.d.ts.map +1 -0
- package/lib/esm/core-backend.js +187 -0
- package/lib/esm/core-backend.js.map +1 -0
- package/lib/esm/domains/FunctionalElements.d.ts +86 -0
- package/lib/esm/domains/FunctionalElements.d.ts.map +1 -0
- package/lib/esm/domains/FunctionalElements.js +117 -0
- package/lib/esm/domains/FunctionalElements.js.map +1 -0
- package/lib/esm/domains/FunctionalSchema.d.ts +14 -0
- package/lib/esm/domains/FunctionalSchema.d.ts.map +1 -0
- package/lib/esm/domains/FunctionalSchema.js +37 -0
- package/lib/esm/domains/FunctionalSchema.js.map +1 -0
- package/lib/esm/domains/GenericElements.d.ts +160 -0
- package/lib/esm/domains/GenericElements.d.ts.map +1 -0
- package/lib/esm/domains/GenericElements.js +225 -0
- package/lib/esm/domains/GenericElements.js.map +1 -0
- package/lib/esm/domains/GenericSchema.d.ts +11 -0
- package/lib/esm/domains/GenericSchema.d.ts.map +1 -0
- package/lib/esm/domains/GenericSchema.js +25 -0
- package/lib/esm/domains/GenericSchema.js.map +1 -0
- package/lib/esm/internal/ChangesetConflictArgs.d.ts +62 -0
- package/lib/esm/internal/ChangesetConflictArgs.d.ts.map +1 -0
- package/lib/esm/internal/ChangesetConflictArgs.js +104 -0
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -0
- package/lib/esm/internal/ChannelAdmin.d.ts +34 -0
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -0
- package/lib/esm/internal/ChannelAdmin.js +122 -0
- package/lib/esm/internal/ChannelAdmin.js.map +1 -0
- package/lib/esm/internal/FontFileImpl.d.ts +34 -0
- package/lib/esm/internal/FontFileImpl.d.ts.map +1 -0
- package/lib/esm/internal/FontFileImpl.js +135 -0
- package/lib/esm/internal/FontFileImpl.js.map +1 -0
- package/lib/esm/internal/IModelDbFontsImpl.d.ts +7 -0
- package/lib/esm/internal/IModelDbFontsImpl.d.ts.map +1 -0
- package/lib/esm/internal/IModelDbFontsImpl.js +183 -0
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -0
- package/lib/esm/internal/NativePlatform.d.ts +15 -0
- package/lib/esm/internal/NativePlatform.d.ts.map +1 -0
- package/lib/esm/internal/NativePlatform.js +43 -0
- package/lib/esm/internal/NativePlatform.js.map +1 -0
- package/lib/esm/internal/NoLocks.d.ts +6 -0
- package/lib/esm/internal/NoLocks.d.ts.map +1 -0
- package/lib/esm/internal/NoLocks.js +24 -0
- package/lib/esm/internal/NoLocks.js.map +1 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts +52 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -0
- package/lib/esm/internal/ServerBasedLocks.js +175 -0
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +18 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -0
- package/lib/esm/internal/Symbols.js +25 -0
- package/lib/esm/internal/Symbols.js.map +1 -0
- package/lib/esm/internal/cross-package.d.ts +4 -0
- package/lib/esm/internal/cross-package.d.ts.map +1 -0
- package/lib/esm/internal/cross-package.js +8 -0
- package/lib/esm/internal/cross-package.js.map +1 -0
- package/lib/esm/internal/workspace/SettingsImpl.d.ts +43 -0
- package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/SettingsImpl.js +154 -0
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js +268 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +41 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.js +691 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js +35 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
- package/lib/esm/rpc/multipart.d.ts +12 -0
- package/lib/esm/rpc/multipart.d.ts.map +1 -0
- package/lib/esm/rpc/multipart.js +67 -0
- package/lib/esm/rpc/multipart.js.map +1 -0
- package/lib/esm/rpc/tracing.d.ts +29 -0
- package/lib/esm/rpc/tracing.d.ts.map +1 -0
- package/lib/esm/rpc/tracing.js +71 -0
- package/lib/esm/rpc/tracing.js.map +1 -0
- package/lib/esm/rpc/web/logging.d.ts +10 -0
- package/lib/esm/rpc/web/logging.d.ts.map +1 -0
- package/lib/esm/rpc/web/logging.js +41 -0
- package/lib/esm/rpc/web/logging.js.map +1 -0
- package/lib/esm/rpc/web/request.d.ts +7 -0
- package/lib/esm/rpc/web/request.d.ts.map +1 -0
- package/lib/esm/rpc/web/request.js +71 -0
- package/lib/esm/rpc/web/request.js.map +1 -0
- package/lib/esm/rpc/web/response.d.ts +7 -0
- package/lib/esm/rpc/web/response.d.ts.map +1 -0
- package/lib/esm/rpc/web/response.js +136 -0
- package/lib/esm/rpc/web/response.js.map +1 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts +16 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js +29 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +51 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js +313 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts +21 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js +193 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +45 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +166 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +18 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +41 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -0
- package/lib/esm/test/AdvancedEqual.d.ts +38 -0
- package/lib/esm/test/AdvancedEqual.d.ts.map +1 -0
- package/lib/esm/test/AdvancedEqual.js +67 -0
- package/lib/esm/test/AdvancedEqual.js.map +1 -0
- package/lib/esm/test/AttachDb.test.d.ts +2 -0
- package/lib/esm/test/AttachDb.test.d.ts.map +1 -0
- package/lib/esm/test/AttachDb.test.js +157 -0
- package/lib/esm/test/AttachDb.test.js.map +1 -0
- package/lib/esm/test/GeometryTestUtil.d.ts +7 -0
- package/lib/esm/test/GeometryTestUtil.d.ts.map +1 -0
- package/lib/esm/test/GeometryTestUtil.js +25 -0
- package/lib/esm/test/GeometryTestUtil.js.map +1 -0
- package/lib/esm/test/IModelHost.test.d.ts +2 -0
- package/lib/esm/test/IModelHost.test.d.ts.map +1 -0
- package/lib/esm/test/IModelHost.test.js +187 -0
- package/lib/esm/test/IModelHost.test.js.map +1 -0
- package/lib/esm/test/IModelTestUtils.d.ts +173 -0
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -0
- package/lib/esm/test/IModelTestUtils.js +1113 -0
- package/lib/esm/test/IModelTestUtils.js.map +1 -0
- package/lib/esm/test/ImageSourceConversion.test.d.ts +2 -0
- package/lib/esm/test/ImageSourceConversion.test.d.ts.map +1 -0
- package/lib/esm/test/ImageSourceConversion.test.js +171 -0
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -0
- package/lib/esm/test/IpcHost.test.d.ts +2 -0
- package/lib/esm/test/IpcHost.test.d.ts.map +1 -0
- package/lib/esm/test/IpcHost.test.js +55 -0
- package/lib/esm/test/IpcHost.test.js.map +1 -0
- package/lib/esm/test/KnownTestLocations.d.ts +7 -0
- package/lib/esm/test/KnownTestLocations.d.ts.map +1 -0
- package/lib/esm/test/KnownTestLocations.js +27 -0
- package/lib/esm/test/KnownTestLocations.js.map +1 -0
- package/lib/esm/test/PrintElementTree.d.ts +7 -0
- package/lib/esm/test/PrintElementTree.d.ts.map +1 -0
- package/lib/esm/test/PrintElementTree.js +35 -0
- package/lib/esm/test/PrintElementTree.js.map +1 -0
- package/lib/esm/test/PropertyDb.test.d.ts +2 -0
- package/lib/esm/test/PropertyDb.test.d.ts.map +1 -0
- package/lib/esm/test/PropertyDb.test.js +71 -0
- package/lib/esm/test/PropertyDb.test.js.map +1 -0
- package/lib/esm/test/RevisionUtility.d.ts +33 -0
- package/lib/esm/test/RevisionUtility.d.ts.map +1 -0
- package/lib/esm/test/RevisionUtility.js +52 -0
- package/lib/esm/test/RevisionUtility.js.map +1 -0
- package/lib/esm/test/SchemaUtils.test.d.ts +2 -0
- package/lib/esm/test/SchemaUtils.test.d.ts.map +1 -0
- package/lib/esm/test/SchemaUtils.test.js +97 -0
- package/lib/esm/test/SchemaUtils.test.js.map +1 -0
- package/lib/esm/test/SequentialLogMatcher.d.ts +35 -0
- package/lib/esm/test/SequentialLogMatcher.d.ts.map +1 -0
- package/lib/esm/test/SequentialLogMatcher.js +130 -0
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -0
- package/lib/esm/test/TestChangeSetUtility.d.ts +23 -0
- package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -0
- package/lib/esm/test/TestChangeSetUtility.js +65 -0
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -0
- package/lib/esm/test/TestUtils.d.ts +38 -0
- package/lib/esm/test/TestUtils.d.ts.map +1 -0
- package/lib/esm/test/TestUtils.js +99 -0
- package/lib/esm/test/TestUtils.js.map +1 -0
- package/lib/esm/test/annotations/TextAnnotation.test.d.ts +2 -0
- package/lib/esm/test/annotations/TextAnnotation.test.d.ts.map +1 -0
- package/lib/esm/test/annotations/TextAnnotation.test.js +1135 -0
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -0
- package/lib/esm/test/categories/Category.test.d.ts +2 -0
- package/lib/esm/test/categories/Category.test.d.ts.map +1 -0
- package/lib/esm/test/categories/Category.test.js +51 -0
- package/lib/esm/test/categories/Category.test.js.map +1 -0
- package/lib/esm/test/codespec/CodeSpec.test.d.ts +2 -0
- package/lib/esm/test/codespec/CodeSpec.test.d.ts.map +1 -0
- package/lib/esm/test/codespec/CodeSpec.test.js +51 -0
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -0
- package/lib/esm/test/ecdb/CTE.test.d.ts +2 -0
- package/lib/esm/test/ecdb/CTE.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/CTE.test.js +177 -0
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +167 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECDb.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECDb.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECDb.test.js +642 -0
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.d.ts +5 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.js +28 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +63 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.d.ts +5 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js +971 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +770 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.js +669 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +3239 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.d.ts +2 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js +508 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts +4 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +127 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts +2 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +196 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts +66 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js +420 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts +2 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +365 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts +2 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts.map +1 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.js +208 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -0
- package/lib/esm/test/element/ElementAspect.test.d.ts +2 -0
- package/lib/esm/test/element/ElementAspect.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementAspect.test.js +363 -0
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts +2 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.js +383 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -0
- package/lib/esm/test/element/ElementRoundTrip.test.d.ts +2 -0
- package/lib/esm/test/element/ElementRoundTrip.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js +916 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -0
- package/lib/esm/test/element/ExcludedElements.test.d.ts +2 -0
- package/lib/esm/test/element/ExcludedElements.test.d.ts.map +1 -0
- package/lib/esm/test/element/ExcludedElements.test.js +57 -0
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -0
- package/lib/esm/test/element/ExternalSource.test.d.ts +2 -0
- package/lib/esm/test/element/ExternalSource.test.d.ts.map +1 -0
- package/lib/esm/test/element/ExternalSource.test.js +107 -0
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -0
- package/lib/esm/test/element/NullStructArray.test.d.ts +2 -0
- package/lib/esm/test/element/NullStructArray.test.d.ts.map +1 -0
- package/lib/esm/test/element/NullStructArray.test.js +77 -0
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -0
- package/lib/esm/test/element/UrlLink.test.d.ts +2 -0
- package/lib/esm/test/element/UrlLink.test.d.ts.map +1 -0
- package/lib/esm/test/element/UrlLink.test.js +36 -0
- package/lib/esm/test/element/UrlLink.test.js.map +1 -0
- package/lib/esm/test/font/FontFile.test.d.ts +2 -0
- package/lib/esm/test/font/FontFile.test.d.ts.map +1 -0
- package/lib/esm/test/font/FontFile.test.js +139 -0
- package/lib/esm/test/font/FontFile.test.js.map +1 -0
- package/lib/esm/test/font/IModelDbFonts.test.d.ts +2 -0
- package/lib/esm/test/font/IModelDbFonts.test.d.ts.map +1 -0
- package/lib/esm/test/font/IModelDbFonts.test.js +264 -0
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +165 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.js +137 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -0
- package/lib/esm/test/imageData.d.ts +9 -0
- package/lib/esm/test/imageData.d.ts.map +1 -0
- package/lib/esm/test/imageData.js +16 -0
- package/lib/esm/test/imageData.js.map +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts +2 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +382 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -0
- package/lib/esm/test/imodel/GetTextureImage.test.d.ts +2 -0
- package/lib/esm/test/imodel/GetTextureImage.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/GetTextureImage.test.js +29 -0
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -0
- package/lib/esm/test/imodel/IModel.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModel.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModel.test.js +2601 -0
- package/lib/esm/test/imodel/IModel.test.js.map +1 -0
- package/lib/esm/test/imodel/ProjectExtents.test.d.ts +2 -0
- package/lib/esm/test/imodel/ProjectExtents.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/ProjectExtents.test.js +66 -0
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts +2 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.js +74 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -0
- package/lib/esm/test/index.d.ts +7 -0
- package/lib/esm/test/index.d.ts.map +1 -0
- package/lib/esm/test/index.js +11 -0
- package/lib/esm/test/index.js.map +1 -0
- package/lib/esm/test/misc/DevTools.test.d.ts +2 -0
- package/lib/esm/test/misc/DevTools.test.d.ts.map +1 -0
- package/lib/esm/test/misc/DevTools.test.js +72 -0
- package/lib/esm/test/misc/DevTools.test.js.map +1 -0
- package/lib/esm/test/misc/EntitySubClasses.test.d.ts +2 -0
- package/lib/esm/test/misc/EntitySubClasses.test.d.ts.map +1 -0
- package/lib/esm/test/misc/EntitySubClasses.test.js +106 -0
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -0
- package/lib/esm/test/misc/GeoServices.test.d.ts +2 -0
- package/lib/esm/test/misc/GeoServices.test.d.ts.map +1 -0
- package/lib/esm/test/misc/GeoServices.test.js +850 -0
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.d.ts +2 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.d.ts.map +1 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.js +111 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -0
- package/lib/esm/test/native/DgnDbWorker.test.d.ts +2 -0
- package/lib/esm/test/native/DgnDbWorker.test.d.ts.map +1 -0
- package/lib/esm/test/native/DgnDbWorker.test.js +159 -0
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -0
- package/lib/esm/test/rpc/response.test.d.ts +2 -0
- package/lib/esm/test/rpc/response.test.d.ts.map +1 -0
- package/lib/esm/test/rpc/response.test.js +112 -0
- package/lib/esm/test/rpc/response.test.js.map +1 -0
- package/lib/esm/test/schema/ClassRegistry.test.d.ts +2 -0
- package/lib/esm/test/schema/ClassRegistry.test.d.ts.map +1 -0
- package/lib/esm/test/schema/ClassRegistry.test.js +679 -0
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -0
- package/lib/esm/test/schema/FunctionalDomain.test.d.ts +2 -0
- package/lib/esm/test/schema/FunctionalDomain.test.d.ts.map +1 -0
- package/lib/esm/test/schema/FunctionalDomain.test.js +490 -0
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -0
- package/lib/esm/test/schema/GenericDomain.test.d.ts +2 -0
- package/lib/esm/test/schema/GenericDomain.test.d.ts.map +1 -0
- package/lib/esm/test/schema/GenericDomain.test.js +132 -0
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.d.ts +2 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.d.ts.map +1 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.js +95 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +4 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangeMerge.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangeMerge.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangeMerge.test.js +413 -0
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangesetReader.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangesetReader.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangesetReader.test.js +890 -0
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts +2 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js +49 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -0
- package/lib/esm/test/standalone/DisplayStyle.test.d.ts +2 -0
- package/lib/esm/test/standalone/DisplayStyle.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/DisplayStyle.test.js +136 -0
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementGraphics.test.d.ts +2 -0
- package/lib/esm/test/standalone/ElementGraphics.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ElementGraphics.test.js +127 -0
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.d.ts +2 -0
- package/lib/esm/test/standalone/ElementMesh.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.js +142 -0
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -0
- package/lib/esm/test/standalone/ExportGraphics.test.d.ts +2 -0
- package/lib/esm/test/standalone/ExportGraphics.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ExportGraphics.test.js +1040 -0
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts +2 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js +139 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.d.ts +2 -0
- package/lib/esm/test/standalone/GeometryStream.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.js +2869 -0
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -0
- package/lib/esm/test/standalone/HubMock.test.d.ts +2 -0
- package/lib/esm/test/standalone/HubMock.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/HubMock.test.js +343 -0
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.d.ts +7 -0
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.js +859 -0
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts +2 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +417 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -0
- package/lib/esm/test/standalone/MergeConflict.test.d.ts +7 -0
- package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/MergeConflict.test.js +345 -0
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.d.ts +2 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.js +121 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts +2 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +398 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -0
- package/lib/esm/test/standalone/RenderTimeline.test.d.ts +2 -0
- package/lib/esm/test/standalone/RenderTimeline.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/RenderTimeline.test.js +71 -0
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -0
- package/lib/esm/test/standalone/SQLiteDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SQLiteDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SQLiteDb.test.js +63 -0
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -0
- package/lib/esm/test/standalone/SchemaUtils.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaUtils.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaUtils.test.js +25 -0
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -0
- package/lib/esm/test/standalone/SectionDrawing.test.d.ts +2 -0
- package/lib/esm/test/standalone/SectionDrawing.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SectionDrawing.test.js +83 -0
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts +2 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +279 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -0
- package/lib/esm/test/standalone/Setting.test.d.ts +2 -0
- package/lib/esm/test/standalone/Setting.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Setting.test.js +76 -0
- package/lib/esm/test/standalone/Setting.test.js.map +1 -0
- package/lib/esm/test/standalone/Settings.test.d.ts +2 -0
- package/lib/esm/test/standalone/Settings.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Settings.test.js +349 -0
- package/lib/esm/test/standalone/Settings.test.js.map +1 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.d.ts +2 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.js +31 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SnapshotDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js +153 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -0
- package/lib/esm/test/standalone/Texture.test.d.ts +2 -0
- package/lib/esm/test/standalone/Texture.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Texture.test.js +90 -0
- package/lib/esm/test/standalone/Texture.test.js.map +1 -0
- package/lib/esm/test/standalone/TileCache.test.d.ts +9 -0
- package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TileCache.test.js +127 -0
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -0
- package/lib/esm/test/standalone/TileTree.test.d.ts +2 -0
- package/lib/esm/test/standalone/TileTree.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TileTree.test.js +241 -0
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -0
- package/lib/esm/test/standalone/TxnManager.test.d.ts +2 -0
- package/lib/esm/test/standalone/TxnManager.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TxnManager.test.js +878 -0
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -0
- package/lib/esm/test/standalone/ViewDefinition.test.d.ts +2 -0
- package/lib/esm/test/standalone/ViewDefinition.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ViewDefinition.test.js +279 -0
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js +288 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -0
- package/lib/esm/test/standalone/Workspace.test.d.ts +2 -0
- package/lib/esm/test/standalone/Workspace.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Workspace.test.js +161 -0
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -0
- package/lib/esm/workspace/Settings.d.ts +216 -0
- package/lib/esm/workspace/Settings.d.ts.map +1 -0
- package/lib/esm/workspace/Settings.js +83 -0
- package/lib/esm/workspace/Settings.js.map +1 -0
- package/lib/esm/workspace/SettingsSchemas.d.ts +135 -0
- package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -0
- package/lib/esm/workspace/SettingsSchemas.js +9 -0
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -0
- package/lib/esm/workspace/Workspace.d.ts +507 -0
- package/lib/esm/workspace/Workspace.d.ts.map +1 -0
- package/lib/esm/workspace/Workspace.js +97 -0
- package/lib/esm/workspace/Workspace.js.map +1 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts +245 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -0
- package/lib/esm/workspace/WorkspaceEditor.js +31 -0
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -0
- package/package.json +18 -14
|
@@ -0,0 +1,691 @@
|
|
|
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
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Workspace
|
|
7
|
+
*/
|
|
8
|
+
import { createHash } from "crypto";
|
|
9
|
+
import * as fs from "fs-extra";
|
|
10
|
+
import { dirname, extname, join } from "path";
|
|
11
|
+
import * as semver from "semver";
|
|
12
|
+
import { assert, BeEvent, DbResult, OpenMode } from "@itwin/core-bentley";
|
|
13
|
+
import { IModelError } from "@itwin/core-common";
|
|
14
|
+
import { CloudSqlite } from "../../CloudSqlite";
|
|
15
|
+
import { IModelHost, KnownLocations } from "../../IModelHost";
|
|
16
|
+
import { IModelJsFs } from "../../IModelJsFs";
|
|
17
|
+
import { SQLiteDb } from "../../SQLiteDb";
|
|
18
|
+
import { SettingsPriority } from "../../workspace/Settings";
|
|
19
|
+
import { Workspace, WorkspaceSettingNames, } from "../../workspace/Workspace";
|
|
20
|
+
import { WorkspaceEditor } from "../../workspace/WorkspaceEditor";
|
|
21
|
+
import { WorkspaceSqliteDb } from "./WorkspaceSqliteDb";
|
|
22
|
+
import { SettingsImpl } from "./SettingsImpl";
|
|
23
|
+
import { _implementationProhibited, _nativeDb } from "../Symbols";
|
|
24
|
+
function workspaceDbNameWithDefault(dbName) {
|
|
25
|
+
return dbName ?? "workspace-db";
|
|
26
|
+
}
|
|
27
|
+
/** file extension for local WorkspaceDbs */
|
|
28
|
+
export const workspaceDbFileExt = "itwin-workspace";
|
|
29
|
+
function makeWorkspaceCloudCache(arg) {
|
|
30
|
+
const cache = CloudSqlite.CloudCaches.getCache(arg);
|
|
31
|
+
if (undefined === cache.workspaceContainers) // if we just created this container, add the map.
|
|
32
|
+
cache.workspaceContainers = new Map();
|
|
33
|
+
return cache;
|
|
34
|
+
}
|
|
35
|
+
function getContainerFullId(props) {
|
|
36
|
+
return `${props.baseUri}/${props.containerId}`;
|
|
37
|
+
}
|
|
38
|
+
function getWorkspaceCloudContainer(props, cache) {
|
|
39
|
+
const id = getContainerFullId(props);
|
|
40
|
+
let cloudContainer = cache.workspaceContainers.get(id);
|
|
41
|
+
if (undefined !== cloudContainer)
|
|
42
|
+
return cloudContainer;
|
|
43
|
+
cloudContainer = CloudSqlite.createCloudContainer(props);
|
|
44
|
+
cache.workspaceContainers.set(id, cloudContainer);
|
|
45
|
+
cloudContainer.connectCount = 0;
|
|
46
|
+
cloudContainer.sharedConnect = function () {
|
|
47
|
+
if (this.connectCount++ === 0) {
|
|
48
|
+
this.connect(cache);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
53
|
+
cloudContainer.sharedDisconnect = function () {
|
|
54
|
+
if (--this.connectCount <= 0) {
|
|
55
|
+
this.disconnect();
|
|
56
|
+
cache.workspaceContainers.delete(id);
|
|
57
|
+
this.connectCount = 0;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return cloudContainer;
|
|
61
|
+
}
|
|
62
|
+
class WorkspaceContainerImpl {
|
|
63
|
+
[_implementationProhibited] = undefined;
|
|
64
|
+
workspace;
|
|
65
|
+
filesDir;
|
|
66
|
+
id;
|
|
67
|
+
fromProps;
|
|
68
|
+
_cloudContainer;
|
|
69
|
+
get cloudContainer() {
|
|
70
|
+
return this._cloudContainer;
|
|
71
|
+
}
|
|
72
|
+
_wsDbs = new Map();
|
|
73
|
+
get dirName() { return join(this.workspace.containerDir, this.id); }
|
|
74
|
+
constructor(workspace, props) {
|
|
75
|
+
validateWorkspaceContainerId(props.containerId);
|
|
76
|
+
this.workspace = workspace;
|
|
77
|
+
this.id = props.containerId;
|
|
78
|
+
this.fromProps = props;
|
|
79
|
+
if (props.baseUri !== "")
|
|
80
|
+
this._cloudContainer = getWorkspaceCloudContainer(props, this.workspace.getCloudCache());
|
|
81
|
+
workspace.addContainer(this);
|
|
82
|
+
this.filesDir = join(this.dirName, "Files");
|
|
83
|
+
const cloudContainer = this.cloudContainer;
|
|
84
|
+
if (undefined === cloudContainer)
|
|
85
|
+
return;
|
|
86
|
+
// sharedConnect returns true if we just connected (if the container is shared, it may have already been connected)
|
|
87
|
+
if (cloudContainer.sharedConnect() && false !== props.syncOnConnect) {
|
|
88
|
+
try {
|
|
89
|
+
cloudContainer.checkForChanges();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// must be offline
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
resolveDbFileName(props) {
|
|
97
|
+
const cloudContainer = this.cloudContainer;
|
|
98
|
+
if (undefined === cloudContainer)
|
|
99
|
+
return join(this.dirName, `${props.dbName}.${workspaceDbFileExt}`); // local file, versions not allowed
|
|
100
|
+
const dbName = workspaceDbNameWithDefault(props.dbName);
|
|
101
|
+
const dbs = cloudContainer.queryDatabases(`${dbName}*`); // get all databases that start with dbName
|
|
102
|
+
const versions = [];
|
|
103
|
+
for (const db of dbs) {
|
|
104
|
+
const thisDb = parseWorkspaceDbFileName(db);
|
|
105
|
+
if (thisDb.dbName === dbName && "string" === typeof thisDb.version && thisDb.version.length > 0)
|
|
106
|
+
versions.push(thisDb.version);
|
|
107
|
+
}
|
|
108
|
+
if (versions.length === 0)
|
|
109
|
+
versions[0] = "0.0.0";
|
|
110
|
+
const range = props.version ?? "*";
|
|
111
|
+
try {
|
|
112
|
+
const version = semver.maxSatisfying(versions, range, { loose: true, includePrerelease: props.includePrerelease });
|
|
113
|
+
if (version)
|
|
114
|
+
return `${dbName}:${version}`;
|
|
115
|
+
}
|
|
116
|
+
catch { }
|
|
117
|
+
throwWorkspaceDbLoadError(`No version of '${dbName}' available for "${range}"`, props);
|
|
118
|
+
}
|
|
119
|
+
addWorkspaceDb(toAdd) {
|
|
120
|
+
if (undefined !== this._wsDbs.get(toAdd.dbName))
|
|
121
|
+
throw new Error(`workspaceDb '${toAdd.dbName}' already exists in workspace`);
|
|
122
|
+
this._wsDbs.set(toAdd.dbName, toAdd);
|
|
123
|
+
}
|
|
124
|
+
getWorkspaceDb(props) {
|
|
125
|
+
return this._wsDbs.get(workspaceDbNameWithDefault(props?.dbName)) ?? new WorkspaceDbImpl(props ?? {}, this);
|
|
126
|
+
}
|
|
127
|
+
closeWorkspaceDb(toDrop) {
|
|
128
|
+
const name = toDrop.dbName;
|
|
129
|
+
const wsDb = this._wsDbs.get(name);
|
|
130
|
+
if (wsDb === toDrop) {
|
|
131
|
+
this._wsDbs.delete(name);
|
|
132
|
+
wsDb.close();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
close() {
|
|
136
|
+
for (const [_name, db] of this._wsDbs)
|
|
137
|
+
db.close();
|
|
138
|
+
this._wsDbs.clear();
|
|
139
|
+
this.cloudContainer?.sharedDisconnect();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Implementation of WorkspaceDb */
|
|
143
|
+
class WorkspaceDbImpl {
|
|
144
|
+
[_implementationProhibited] = undefined;
|
|
145
|
+
sqliteDb = new WorkspaceSqliteDb();
|
|
146
|
+
dbName;
|
|
147
|
+
_container;
|
|
148
|
+
onClose = new BeEvent();
|
|
149
|
+
dbFileName;
|
|
150
|
+
_manifest;
|
|
151
|
+
/** true if this WorkspaceDb is currently open */
|
|
152
|
+
get isOpen() { return this.sqliteDb.isOpen; }
|
|
153
|
+
get container() { return this._container; }
|
|
154
|
+
queryFileResource(rscName) {
|
|
155
|
+
const info = this.sqliteDb[_nativeDb].queryEmbeddedFile(rscName);
|
|
156
|
+
if (undefined === info)
|
|
157
|
+
return undefined;
|
|
158
|
+
// since resource names can contain illegal characters, path separators, etc., we make the local file name from its hash, in hex.
|
|
159
|
+
let localFileName = join(this._container.filesDir, createHash("sha1").update(this.dbFileName).update(rscName).digest("hex"));
|
|
160
|
+
if (info.fileExt !== "") // since some applications may expect to see the extension, append it here if it was supplied.
|
|
161
|
+
localFileName = `${localFileName}.${info.fileExt}`;
|
|
162
|
+
return { localFileName, info };
|
|
163
|
+
}
|
|
164
|
+
constructor(props, container) {
|
|
165
|
+
this.dbName = workspaceDbNameWithDefault(props.dbName);
|
|
166
|
+
validateWorkspaceDbName(this.dbName);
|
|
167
|
+
this._container = container;
|
|
168
|
+
this.dbFileName = container.resolveDbFileName(props);
|
|
169
|
+
container.addWorkspaceDb(this);
|
|
170
|
+
if (true === props.prefetch)
|
|
171
|
+
this.prefetch();
|
|
172
|
+
}
|
|
173
|
+
open() {
|
|
174
|
+
this.sqliteDb.openDb(this.dbFileName, OpenMode.Readonly, this._container.cloudContainer);
|
|
175
|
+
}
|
|
176
|
+
close() {
|
|
177
|
+
if (this.isOpen) {
|
|
178
|
+
this.onClose.raiseEvent();
|
|
179
|
+
this.sqliteDb.closeDb();
|
|
180
|
+
this._container.closeWorkspaceDb(this);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
get version() {
|
|
184
|
+
const cloudContainer = this.container.cloudContainer;
|
|
185
|
+
if (undefined === cloudContainer)
|
|
186
|
+
return "1.0.0"; // local file, no versioning. return default
|
|
187
|
+
return parseWorkspaceDbFileName(this.dbFileName).version;
|
|
188
|
+
}
|
|
189
|
+
get manifest() {
|
|
190
|
+
return this._manifest ??= this.withOpenDb((db) => {
|
|
191
|
+
const manifestJson = db[_nativeDb].queryFileProperty(workspaceManifestProperty, true);
|
|
192
|
+
return manifestJson ? JSON.parse(manifestJson) : { workspaceName: this.dbName };
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
withOpenDb(operation) {
|
|
196
|
+
const done = this.isOpen ? () => { } : (this.open(), () => this.close());
|
|
197
|
+
try {
|
|
198
|
+
return operation(this.sqliteDb);
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
done();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
getString(rscName) {
|
|
205
|
+
return this.withOpenDb((db) => {
|
|
206
|
+
return db.withSqliteStatement("SELECT value from strings WHERE id=?", (stmt) => {
|
|
207
|
+
stmt.bindString(1, rscName);
|
|
208
|
+
return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValueString(0) : undefined;
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
getBlobReader(rscName) {
|
|
213
|
+
return this.sqliteDb.withSqliteStatement("SELECT rowid from blobs WHERE id=?", (stmt) => {
|
|
214
|
+
stmt.bindString(1, rscName);
|
|
215
|
+
const blobReader = SQLiteDb.createBlobIO();
|
|
216
|
+
blobReader.open(this.sqliteDb[_nativeDb], { tableName: "blobs", columnName: "value", row: stmt.getValueInteger(0) });
|
|
217
|
+
return blobReader;
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
getBlob(rscName) {
|
|
221
|
+
return this.withOpenDb((db) => {
|
|
222
|
+
return db.withSqliteStatement("SELECT value from blobs WHERE id=?", (stmt) => {
|
|
223
|
+
stmt.bindString(1, rscName);
|
|
224
|
+
return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValueBlob(0) : undefined;
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
getFile(rscName, targetFileName) {
|
|
229
|
+
return this.withOpenDb((db) => {
|
|
230
|
+
const file = this.queryFileResource(rscName);
|
|
231
|
+
if (!file)
|
|
232
|
+
return undefined;
|
|
233
|
+
const info = file.info;
|
|
234
|
+
const localFileName = targetFileName ?? file.localFileName;
|
|
235
|
+
// check whether the file is already up to date.
|
|
236
|
+
const stat = fs.existsSync(localFileName) && fs.statSync(localFileName);
|
|
237
|
+
if (stat && Math.round(stat.mtimeMs) === info.date && stat.size === info.size)
|
|
238
|
+
return localFileName; // yes, we're done
|
|
239
|
+
// extractEmbeddedFile fails if the file exists or if the directory does not exist
|
|
240
|
+
if (stat)
|
|
241
|
+
fs.removeSync(localFileName);
|
|
242
|
+
else
|
|
243
|
+
IModelJsFs.recursiveMkDirSync(dirname(localFileName));
|
|
244
|
+
db[_nativeDb].extractEmbeddedFile({ name: rscName, localFileName });
|
|
245
|
+
const date = new Date(info.date);
|
|
246
|
+
fs.utimesSync(localFileName, date, date); // set the last-modified date of the file to match date in container
|
|
247
|
+
fs.chmodSync(localFileName, "0444"); // set file readonly
|
|
248
|
+
return localFileName;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
prefetch(opts) {
|
|
252
|
+
const cloudContainer = this._container.cloudContainer;
|
|
253
|
+
if (cloudContainer === undefined)
|
|
254
|
+
throw new Error("no cloud container to prefetch");
|
|
255
|
+
return CloudSqlite.startCloudPrefetch(cloudContainer, this.dbFileName, opts);
|
|
256
|
+
}
|
|
257
|
+
queryResources(args) {
|
|
258
|
+
const table = "blob" !== args.type ? "strings" : "blobs";
|
|
259
|
+
this.withOpenDb((db) => {
|
|
260
|
+
const where = undefined !== args.namePattern ? ` WHERE id ${args.nameCompare ?? "="} ?` : "";
|
|
261
|
+
db.withSqliteStatement(`SELECT id from ${table}${where}`, (stmt) => {
|
|
262
|
+
function* makeIterable() {
|
|
263
|
+
while (DbResult.BE_SQLITE_ROW === stmt.step()) {
|
|
264
|
+
yield stmt.getValueString(0);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (undefined !== args.namePattern) {
|
|
268
|
+
stmt.bindString(1, args.namePattern);
|
|
269
|
+
}
|
|
270
|
+
args.callback(makeIterable());
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/** Implementation of Workspace */
|
|
276
|
+
class WorkspaceImpl {
|
|
277
|
+
[_implementationProhibited] = undefined;
|
|
278
|
+
_containers = new Map();
|
|
279
|
+
containerDir;
|
|
280
|
+
settings;
|
|
281
|
+
_cloudCache;
|
|
282
|
+
getCloudCache() {
|
|
283
|
+
return this._cloudCache ??= makeWorkspaceCloudCache({ cacheName: "Workspace", cacheSize: "20G" });
|
|
284
|
+
}
|
|
285
|
+
constructor(settings, opts) {
|
|
286
|
+
this.settings = settings;
|
|
287
|
+
this.containerDir = opts?.containerDir ?? join(IModelHost.cacheDir, "Workspace");
|
|
288
|
+
let settingsFiles = opts?.settingsFiles;
|
|
289
|
+
if (settingsFiles) {
|
|
290
|
+
if (typeof settingsFiles === "string")
|
|
291
|
+
settingsFiles = [settingsFiles];
|
|
292
|
+
settingsFiles.forEach((file) => settings.addFile(file, SettingsPriority.application));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
addContainer(toAdd) {
|
|
296
|
+
if (undefined !== this._containers.get(toAdd.id))
|
|
297
|
+
throw new Error("container already exists in workspace");
|
|
298
|
+
this._containers.set(toAdd.id, toAdd);
|
|
299
|
+
}
|
|
300
|
+
findContainer(containerId) {
|
|
301
|
+
return this._containers.get(containerId);
|
|
302
|
+
}
|
|
303
|
+
getContainer(props) {
|
|
304
|
+
return this.findContainer(props.containerId) ?? new WorkspaceContainerImpl(this, props);
|
|
305
|
+
}
|
|
306
|
+
async getContainerAsync(props) {
|
|
307
|
+
const accessToken = props.accessToken ?? ((props.baseUri === "") || props.isPublic) ? "" : await CloudSqlite.requestToken({ ...props, accessLevel: "read" });
|
|
308
|
+
return this.getContainer({ ...props, accessToken });
|
|
309
|
+
}
|
|
310
|
+
async getWorkspaceDb(props) {
|
|
311
|
+
let container = this.findContainer(props.containerId);
|
|
312
|
+
if (undefined === container) {
|
|
313
|
+
const accessToken = props.isPublic ? "" : await CloudSqlite.requestToken({ accessLevel: "read", ...props });
|
|
314
|
+
container = new WorkspaceContainerImpl(this, { ...props, accessToken });
|
|
315
|
+
}
|
|
316
|
+
return container.getWorkspaceDb(props);
|
|
317
|
+
}
|
|
318
|
+
async loadSettingsDictionary(props, problems) {
|
|
319
|
+
if (!Array.isArray(props))
|
|
320
|
+
props = [props];
|
|
321
|
+
for (const prop of props) {
|
|
322
|
+
const db = await this.getWorkspaceDb(prop);
|
|
323
|
+
db.open();
|
|
324
|
+
try {
|
|
325
|
+
const manifest = db.manifest;
|
|
326
|
+
const dictProps = { name: prop.resourceName, workspaceDb: db, priority: prop.priority };
|
|
327
|
+
// don't load if we already have this dictionary. Happens if the same WorkspaceDb is in more than one list
|
|
328
|
+
if (undefined === this.settings.getDictionary(dictProps)) {
|
|
329
|
+
const settingsJson = db.getString(prop.resourceName);
|
|
330
|
+
if (undefined === settingsJson)
|
|
331
|
+
throwWorkspaceDbLoadError(`could not load setting dictionary resource '${prop.resourceName}' from: '${manifest.workspaceName}'`, prop, db);
|
|
332
|
+
db.close(); // don't leave this db open in case we're going to find another dictionary in it recursively.
|
|
333
|
+
this.settings.addJson(dictProps, settingsJson);
|
|
334
|
+
const dict = this.settings.getDictionary(dictProps);
|
|
335
|
+
if (dict) {
|
|
336
|
+
Workspace.onSettingsDictionaryLoadedFn({ dict, from: db });
|
|
337
|
+
// if the dictionary we just loaded has a "settingsWorkspaces" entry, load them too, recursively
|
|
338
|
+
const nested = dict.getSetting(WorkspaceSettingNames.settingsWorkspaces);
|
|
339
|
+
if (nested !== undefined) {
|
|
340
|
+
IModelHost.settingsSchemas.validateSetting(nested, WorkspaceSettingNames.settingsWorkspaces);
|
|
341
|
+
await this.loadSettingsDictionary(nested, problems);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (e) {
|
|
347
|
+
db.close();
|
|
348
|
+
problems?.push(e);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
close() {
|
|
353
|
+
this.settings.close();
|
|
354
|
+
for (const [_id, container] of this._containers)
|
|
355
|
+
container.close();
|
|
356
|
+
this._containers.clear();
|
|
357
|
+
}
|
|
358
|
+
resolveWorkspaceDbSetting(settingName, filter) {
|
|
359
|
+
const settingDef = IModelHost.settingsSchemas.settingDefs.get(settingName);
|
|
360
|
+
const combine = settingDef?.combineArray === true;
|
|
361
|
+
filter = filter ?? (() => true);
|
|
362
|
+
const result = [];
|
|
363
|
+
for (const entry of this.settings.getSettingEntries(settingName)) {
|
|
364
|
+
for (const dbProp of entry.value) {
|
|
365
|
+
if (filter(dbProp, entry.dictionary)) {
|
|
366
|
+
result.push(dbProp);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
if (!combine) {
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return result;
|
|
374
|
+
}
|
|
375
|
+
async getWorkspaceDbs(args) {
|
|
376
|
+
const dbList = (args.settingName !== undefined) ? this.resolveWorkspaceDbSetting(args.settingName, args.filter) : args.dbs;
|
|
377
|
+
const result = [];
|
|
378
|
+
const pushUnique = (wsDb) => {
|
|
379
|
+
for (const db of result) {
|
|
380
|
+
// if we already have this db, skip it. The test below also has to consider that we create a separate WorkspaceDb object for the same
|
|
381
|
+
// database from more than one Workspace (though then they must use a "shared" CloudContainer).
|
|
382
|
+
if (db === wsDb || ((db.container.cloudContainer === wsDb.container.cloudContainer) && (db.dbFileName === wsDb.dbFileName)))
|
|
383
|
+
return; // this db is redundant
|
|
384
|
+
}
|
|
385
|
+
result.push(wsDb);
|
|
386
|
+
};
|
|
387
|
+
for (const dbProps of dbList) {
|
|
388
|
+
try {
|
|
389
|
+
pushUnique(await this.getWorkspaceDb(dbProps));
|
|
390
|
+
}
|
|
391
|
+
catch (e) {
|
|
392
|
+
const loadErr = e;
|
|
393
|
+
loadErr.wsDbProps = dbProps;
|
|
394
|
+
args.problems?.push(loadErr);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return result;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
const workspaceEditorName = "WorkspaceEditor"; // name of the cache for the editor workspace
|
|
401
|
+
class EditorWorkspaceImpl extends WorkspaceImpl {
|
|
402
|
+
getCloudCache() {
|
|
403
|
+
return this._cloudCache ??= makeWorkspaceCloudCache({ cacheName: workspaceEditorName, cacheSize: "20G" });
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
class EditorImpl {
|
|
407
|
+
[_implementationProhibited] = undefined;
|
|
408
|
+
workspace = new EditorWorkspaceImpl(new SettingsImpl(), { containerDir: join(IModelHost.cacheDir, workspaceEditorName) });
|
|
409
|
+
async initializeContainer(args) {
|
|
410
|
+
class CloudAccess extends CloudSqlite.DbAccess {
|
|
411
|
+
static _cacheName = workspaceEditorName;
|
|
412
|
+
static async initializeWorkspace(args) {
|
|
413
|
+
const props = await this.createBlobContainer({ scope: args.scope, metadata: { ...args.metadata, containerType: "workspace" } });
|
|
414
|
+
const dbFullName = makeWorkspaceDbFileName(workspaceDbNameWithDefault(args.dbName), "0.0.0");
|
|
415
|
+
await super._initializeDb({ ...args, props, dbName: dbFullName, dbType: WorkspaceSqliteDb, blockSize: "4M" });
|
|
416
|
+
return props;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return CloudAccess.initializeWorkspace(args);
|
|
420
|
+
}
|
|
421
|
+
async createNewCloudContainer(args) {
|
|
422
|
+
const cloudContainer = await this.initializeContainer(args);
|
|
423
|
+
const userToken = await IModelHost.authorizationClient?.getAccessToken();
|
|
424
|
+
const accessToken = await CloudSqlite.requestToken({ ...cloudContainer, accessLevel: "write", userToken });
|
|
425
|
+
return this.getContainer({ accessToken, ...cloudContainer, writeable: true, description: args.metadata.description });
|
|
426
|
+
}
|
|
427
|
+
getContainer(props) {
|
|
428
|
+
return this.workspace.findContainer(props.containerId) ?? new EditorContainerImpl(this.workspace, props);
|
|
429
|
+
}
|
|
430
|
+
async getContainerAsync(props) {
|
|
431
|
+
const accessToken = props.accessToken ?? (props.baseUri === "") ? "" : await CloudSqlite.requestToken({ ...props, accessLevel: "write" });
|
|
432
|
+
return this.getContainer({ ...props, accessToken });
|
|
433
|
+
}
|
|
434
|
+
close() {
|
|
435
|
+
this.workspace.close();
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
class EditorContainerImpl extends WorkspaceContainerImpl {
|
|
439
|
+
get cloudContainer() {
|
|
440
|
+
return super.cloudContainer;
|
|
441
|
+
}
|
|
442
|
+
get cloudProps() {
|
|
443
|
+
const cloudContainer = this.cloudContainer;
|
|
444
|
+
if (undefined === cloudContainer)
|
|
445
|
+
return undefined;
|
|
446
|
+
return {
|
|
447
|
+
baseUri: cloudContainer.baseUri,
|
|
448
|
+
containerId: cloudContainer.containerId,
|
|
449
|
+
storageType: cloudContainer.storageType,
|
|
450
|
+
isPublic: cloudContainer.isPublic,
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
async createNewWorkspaceDbVersion(args) {
|
|
454
|
+
const cloudContainer = this.cloudContainer;
|
|
455
|
+
if (undefined === cloudContainer)
|
|
456
|
+
throw new Error("versions require cloud containers");
|
|
457
|
+
const oldName = this.resolveDbFileName(args.fromProps ?? {});
|
|
458
|
+
const oldDb = parseWorkspaceDbFileName(oldName);
|
|
459
|
+
const newVersion = semver.inc(oldDb.version, args.versionType, args.identifier);
|
|
460
|
+
if (!newVersion)
|
|
461
|
+
throwWorkspaceDbLoadError("invalid version", args.fromProps ?? {});
|
|
462
|
+
const newName = makeWorkspaceDbFileName(oldDb.dbName, newVersion);
|
|
463
|
+
await cloudContainer.copyDatabase(oldName, newName);
|
|
464
|
+
// return the old and new db names and versions
|
|
465
|
+
return { oldDb, newDb: { dbName: oldDb.dbName, version: newVersion } };
|
|
466
|
+
}
|
|
467
|
+
getWorkspaceDb(props) {
|
|
468
|
+
return this.getEditableDb(props);
|
|
469
|
+
}
|
|
470
|
+
getEditableDb(props) {
|
|
471
|
+
const db = this._wsDbs.get(workspaceDbNameWithDefault(props.dbName)) ?? new EditableDbImpl(props, this);
|
|
472
|
+
const isPrerelease = semver.major(db.version) === 0 || semver.prerelease(db.version);
|
|
473
|
+
if (!isPrerelease && this.cloudContainer && this.cloudContainer.queryDatabase(db.dbFileName)?.state !== "copied") {
|
|
474
|
+
this._wsDbs.delete(workspaceDbNameWithDefault(props.dbName));
|
|
475
|
+
throw new Error(`${db.dbFileName} has been published and is not editable. Make a new version first.`);
|
|
476
|
+
}
|
|
477
|
+
return db;
|
|
478
|
+
}
|
|
479
|
+
acquireWriteLock(user) {
|
|
480
|
+
if (this.cloudContainer) {
|
|
481
|
+
this.cloudContainer.acquireWriteLock(user);
|
|
482
|
+
this.cloudContainer.writeLockHeldBy = user;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
releaseWriteLock() {
|
|
486
|
+
if (this.cloudContainer) {
|
|
487
|
+
this.cloudContainer.releaseWriteLock();
|
|
488
|
+
this.cloudContainer.writeLockHeldBy = undefined;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
abandonChanges() {
|
|
492
|
+
if (this.cloudContainer) {
|
|
493
|
+
this.cloudContainer.abandonChanges();
|
|
494
|
+
this.cloudContainer.writeLockHeldBy = undefined;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
async createDb(args) {
|
|
498
|
+
if (!this.cloudContainer) {
|
|
499
|
+
WorkspaceEditor.createEmptyDb({ localFileName: this.resolveDbFileName(args), manifest: args.manifest });
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
// currently the only way to create a workspaceDb in a cloud container is to create a temporary workspaceDb and upload it.
|
|
503
|
+
const tempDbFile = join(KnownLocations.tmpdir, `empty.${workspaceDbFileExt}`);
|
|
504
|
+
if (fs.existsSync(tempDbFile))
|
|
505
|
+
IModelJsFs.removeSync(tempDbFile);
|
|
506
|
+
WorkspaceEditor.createEmptyDb({ localFileName: tempDbFile, manifest: args.manifest });
|
|
507
|
+
await CloudSqlite.uploadDb(this.cloudContainer, { localFileName: tempDbFile, dbName: makeWorkspaceDbFileName(workspaceDbNameWithDefault(args.dbName)) });
|
|
508
|
+
IModelJsFs.removeSync(tempDbFile);
|
|
509
|
+
}
|
|
510
|
+
return this.getWorkspaceDb(args);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
class EditableDbImpl extends WorkspaceDbImpl {
|
|
514
|
+
get container() {
|
|
515
|
+
assert(this._container instanceof EditorContainerImpl);
|
|
516
|
+
return this._container;
|
|
517
|
+
}
|
|
518
|
+
static validateResourceName(name) {
|
|
519
|
+
if (name.trim() !== name) {
|
|
520
|
+
throw new Error("resource name may not have leading or trailing spaces");
|
|
521
|
+
}
|
|
522
|
+
if (name.length > 1024) {
|
|
523
|
+
throw new Error("resource name too long");
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
validateResourceSize(val) {
|
|
527
|
+
const len = typeof val === "string" ? val.length : val.byteLength;
|
|
528
|
+
if (len > (1024 * 1024 * 1024)) // one gigabyte
|
|
529
|
+
throw new Error("value is too large");
|
|
530
|
+
}
|
|
531
|
+
get cloudProps() {
|
|
532
|
+
const props = this._container.cloudProps;
|
|
533
|
+
if (props === undefined)
|
|
534
|
+
return undefined;
|
|
535
|
+
const parsed = parseWorkspaceDbFileName(this.dbFileName);
|
|
536
|
+
return { ...props, dbName: parsed.dbName, version: parsed.version };
|
|
537
|
+
}
|
|
538
|
+
open() {
|
|
539
|
+
this.sqliteDb.openDb(this.dbFileName, OpenMode.ReadWrite, this._container.cloudContainer);
|
|
540
|
+
}
|
|
541
|
+
close() {
|
|
542
|
+
if (this.isOpen) {
|
|
543
|
+
// whenever we close an EditableDb, update the name of the last editor in the manifest
|
|
544
|
+
const lastEditedBy = this._container.cloudContainer?.writeLockHeldBy;
|
|
545
|
+
if (lastEditedBy !== undefined)
|
|
546
|
+
this.updateManifest({ ...this.manifest, lastEditedBy });
|
|
547
|
+
// make sure all changes were saved before we close
|
|
548
|
+
this.sqliteDb.saveChanges();
|
|
549
|
+
}
|
|
550
|
+
super.close();
|
|
551
|
+
}
|
|
552
|
+
getFileModifiedTime(localFileName) {
|
|
553
|
+
return Math.round(fs.statSync(localFileName).mtimeMs);
|
|
554
|
+
}
|
|
555
|
+
performWriteSql(rscName, sql, bind) {
|
|
556
|
+
this.sqliteDb.withSqliteStatement(sql, (stmt) => {
|
|
557
|
+
stmt.bindString(1, rscName);
|
|
558
|
+
bind?.(stmt);
|
|
559
|
+
const rc = stmt.step();
|
|
560
|
+
if (DbResult.BE_SQLITE_DONE !== rc) {
|
|
561
|
+
if (DbResult.BE_SQLITE_CONSTRAINT_PRIMARYKEY === rc)
|
|
562
|
+
throw new IModelError(rc, `resource "${rscName}" already exists`);
|
|
563
|
+
throw new IModelError(rc, `workspace [${sql}]`);
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
this.sqliteDb.saveChanges();
|
|
567
|
+
}
|
|
568
|
+
updateManifest(manifest) {
|
|
569
|
+
this.sqliteDb[_nativeDb].saveFileProperty(workspaceManifestProperty, JSON.stringify(manifest));
|
|
570
|
+
this._manifest = undefined;
|
|
571
|
+
}
|
|
572
|
+
updateSettingsResource(settings, rscName) {
|
|
573
|
+
this.updateString(rscName ?? "settingsDictionary", JSON.stringify(settings));
|
|
574
|
+
}
|
|
575
|
+
addString(rscName, val) {
|
|
576
|
+
EditableDbImpl.validateResourceName(rscName);
|
|
577
|
+
this.validateResourceSize(val);
|
|
578
|
+
this.performWriteSql(rscName, "INSERT INTO strings(id,value) VALUES(?,?)", (stmt) => stmt.bindString(2, val));
|
|
579
|
+
}
|
|
580
|
+
updateString(rscName, val) {
|
|
581
|
+
this.validateResourceSize(val);
|
|
582
|
+
this.performWriteSql(rscName, "INSERT INTO strings(id,value) VALUES(?,?) ON CONFLICT(id) DO UPDATE SET value=excluded.value WHERE value!=excluded.value", (stmt) => stmt.bindString(2, val));
|
|
583
|
+
}
|
|
584
|
+
removeString(rscName) {
|
|
585
|
+
this.performWriteSql(rscName, "DELETE FROM strings WHERE id=?");
|
|
586
|
+
}
|
|
587
|
+
addBlob(rscName, val) {
|
|
588
|
+
EditableDbImpl.validateResourceName(rscName);
|
|
589
|
+
this.validateResourceSize(val);
|
|
590
|
+
this.performWriteSql(rscName, "INSERT INTO blobs(id,value) VALUES(?,?)", (stmt) => stmt.bindBlob(2, val));
|
|
591
|
+
}
|
|
592
|
+
updateBlob(rscName, val) {
|
|
593
|
+
this.validateResourceSize(val);
|
|
594
|
+
this.performWriteSql(rscName, "INSERT INTO blobs(id,value) VALUES(?,?) ON CONFLICT(id) DO UPDATE SET value=excluded.value WHERE value!=excluded.value", (stmt) => stmt.bindBlob(2, val));
|
|
595
|
+
}
|
|
596
|
+
getBlobWriter(rscName) {
|
|
597
|
+
return this.sqliteDb.withSqliteStatement("SELECT rowid from blobs WHERE id=?", (stmt) => {
|
|
598
|
+
stmt.bindString(1, rscName);
|
|
599
|
+
const blobWriter = SQLiteDb.createBlobIO();
|
|
600
|
+
blobWriter.open(this.sqliteDb[_nativeDb], { tableName: "blobs", columnName: "value", row: stmt.getValueInteger(0), writeable: true });
|
|
601
|
+
return blobWriter;
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
removeBlob(rscName) {
|
|
605
|
+
this.performWriteSql(rscName, "DELETE FROM blobs WHERE id=?");
|
|
606
|
+
}
|
|
607
|
+
addFile(rscName, localFileName, fileExt) {
|
|
608
|
+
EditableDbImpl.validateResourceName(rscName);
|
|
609
|
+
fileExt = fileExt ?? extname(localFileName);
|
|
610
|
+
if (fileExt?.[0] === ".")
|
|
611
|
+
fileExt = fileExt.slice(1);
|
|
612
|
+
this.sqliteDb[_nativeDb].embedFile({ name: rscName, localFileName, date: this.getFileModifiedTime(localFileName), fileExt });
|
|
613
|
+
}
|
|
614
|
+
updateFile(rscName, localFileName) {
|
|
615
|
+
this.queryFileResource(rscName); // throws if not present
|
|
616
|
+
this.sqliteDb[_nativeDb].replaceEmbeddedFile({ name: rscName, localFileName, date: this.getFileModifiedTime(localFileName) });
|
|
617
|
+
}
|
|
618
|
+
removeFile(rscName) {
|
|
619
|
+
const file = this.queryFileResource(rscName);
|
|
620
|
+
if (undefined === file)
|
|
621
|
+
throw new Error(`file resource "${rscName}" does not exist`);
|
|
622
|
+
if (file && fs.existsSync(file.localFileName))
|
|
623
|
+
fs.unlinkSync(file.localFileName);
|
|
624
|
+
this.sqliteDb[_nativeDb].removeEmbeddedFile(rscName);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
export function constructWorkspaceDb(props, container) {
|
|
628
|
+
return new WorkspaceDbImpl(props, container);
|
|
629
|
+
}
|
|
630
|
+
export function constructWorkspace(settings, opts) {
|
|
631
|
+
return new WorkspaceImpl(settings, opts);
|
|
632
|
+
}
|
|
633
|
+
export function constructWorkspaceEditor() {
|
|
634
|
+
return new EditorImpl();
|
|
635
|
+
}
|
|
636
|
+
export function noLeadingOrTrailingSpaces(name, msg) {
|
|
637
|
+
if (name.trim() !== name)
|
|
638
|
+
throw new Error(`${msg} [${name}] may not have leading or trailing spaces`);
|
|
639
|
+
}
|
|
640
|
+
export function validateWorkspaceDbName(dbName) {
|
|
641
|
+
if (dbName === "" || dbName.length > 255 || /[#\.<>:"/\\"`'|?*\u0000-\u001F]/g.test(dbName) || /^(con|prn|aux|nul|com\d|lpt\d)$/i.test(dbName))
|
|
642
|
+
throw new Error(`invalid dbName: [${dbName}]`);
|
|
643
|
+
noLeadingOrTrailingSpaces(dbName, "dbName");
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Validate that a WorkspaceContainer.Id is valid.
|
|
647
|
+
* The rules for ContainerIds (from Azure, see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata):
|
|
648
|
+
* - may only contain lower case letters, numbers or dashes
|
|
649
|
+
* - may not start or end with with a dash nor have more than one dash in a row
|
|
650
|
+
* - may not be shorter than 3 or longer than 63 characters
|
|
651
|
+
*/
|
|
652
|
+
export function validateWorkspaceContainerId(id) {
|
|
653
|
+
if (!/^(?=.{3,63}$)[a-z0-9]+(-[a-z0-9]+)*$/g.test(id))
|
|
654
|
+
throw new Error(`invalid containerId: [${id}]`);
|
|
655
|
+
}
|
|
656
|
+
export function validateWorkspaceDbVersion(version) {
|
|
657
|
+
version = version ?? "0.0.0";
|
|
658
|
+
const opts = { loose: true, includePrerelease: true };
|
|
659
|
+
// clean allows prerelease, so try it first. If that fails attempt to coerce it (coerce strips prerelease even if you say not to.)
|
|
660
|
+
const semVersion = semver.clean(version, opts) ?? semver.coerce(version, opts)?.version;
|
|
661
|
+
if (!semVersion)
|
|
662
|
+
throw new Error("invalid version specification");
|
|
663
|
+
version = semVersion;
|
|
664
|
+
return version;
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* Parse the name stored in a WorkspaceContainer into the dbName and version number. A single WorkspaceContainer may hold
|
|
668
|
+
* many versions of the same WorkspaceDb. The name of the Db in the WorkspaceContainer is in the format "name:version". This
|
|
669
|
+
* function splits them into separate strings.
|
|
670
|
+
*/
|
|
671
|
+
export function parseWorkspaceDbFileName(dbFileName) {
|
|
672
|
+
const parts = dbFileName.split(":");
|
|
673
|
+
return { dbName: parts[0], version: parts[1] };
|
|
674
|
+
}
|
|
675
|
+
/** Create a dbName for a WorkspaceDb from its base name and version. This will be in the format "name:version" */
|
|
676
|
+
export function makeWorkspaceDbFileName(dbName, version) {
|
|
677
|
+
return `${dbName}:${validateWorkspaceDbVersion(version)}`;
|
|
678
|
+
}
|
|
679
|
+
export const workspaceManifestProperty = { namespace: "workspace", name: "manifest" };
|
|
680
|
+
function throwWorkspaceDbLoadError(msg, wsDbProps, db) {
|
|
681
|
+
const error = new Error(msg);
|
|
682
|
+
error.wsDbProps = wsDbProps;
|
|
683
|
+
error.wsDb = db;
|
|
684
|
+
throw error;
|
|
685
|
+
}
|
|
686
|
+
export function throwWorkspaceDbLoadErrors(msg, errors) {
|
|
687
|
+
const error = new Error(msg);
|
|
688
|
+
error.wsLoadErrors = errors;
|
|
689
|
+
throw error;
|
|
690
|
+
}
|
|
691
|
+
//# sourceMappingURL=WorkspaceImpl.js.map
|