@itwin/core-backend 5.13.0-dev.1 → 5.13.0-dev.2
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/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +12 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +2 -0
- package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.d.ts +3 -0
- package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +12 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +63 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Workspace.d.ts +2 -0
- package/lib/esm/workspace/Workspace.d.ts.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.d.ts +3 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +14 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceEditor.js","sourceRoot":"","sources":["../../../src/workspace/WorkspaceEditor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,YAAY;AACZ,MAAM,KAAW,eAAe,CA6C/B;AA7CD,WAAiB,eAAe;IAC9B;;;;OAIG;IACH,SAAgB,SAAS;QACvB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAFe,yBAAS,YAExB,CAAA;IAED;;;;OAIG;IACH,SAAgB,aAAa,CAAC,IAAqE;QACjG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAFe,6BAAa,gBAE5B,CAAA;IAcD;;;;;;;OAOG;IACI,KAAK,UAAU,eAAe,CAAC,IAAkC;QACtE,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO;YACrC,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;QAC1H,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC;IACjI,CAAC;IALqB,+BAAe,kBAKpC,CAAA;AACH,CAAC,EA7CgB,eAAe,KAAf,eAAe,QA6C/B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Workspace\n */\n\nimport { LocalFileName } from \"@itwin/core-common\";\nimport { GuidString } from \"@itwin/core-bentley\";\nimport { SQLiteDb } from \"../SQLiteDb\";\nimport { SettingsContainer } from \"./Settings\";\nimport { BlobContainer } from \"../BlobContainerService\";\nimport {\n GetWorkspaceContainerArgs, Workspace, WorkspaceContainer, WorkspaceContainerProps, WorkspaceDb, WorkspaceDbCloudProps, WorkspaceDbManifest, WorkspaceDbName, WorkspaceDbNameAndVersion,\n WorkspaceDbProps, WorkspaceDbVersion, WorkspaceResourceName,\n} from \"./Workspace\";\nimport { WorkspaceSqliteDb } from \"../internal/workspace/WorkspaceSqliteDb\";\nimport { constructWorkspaceEditor } from \"../internal/workspace/WorkspaceImpl\";\nimport { _implementationProhibited } from \"../internal/Symbols\";\nimport { CloudSqlite } from \"../CloudSqlite\";\nimport { IModelHost } from \"../IModelHost\";\n\n/** @beta */\nexport namespace WorkspaceEditor {\n /**\n * Create a new [[WorkspaceEditor]] for creating new versions of [[WorkspaceDb]]s.\n * @note the caller becomes the owner of the Workspace.Editor and is responsible for calling [[WorkspaceEditor.close]] on it when they are finished using it.\n * @note It is illegal to have more than one Workspace.Editor active in a single session.\n */\n export function construct(): WorkspaceEditor {\n return constructWorkspaceEditor();\n }\n\n /**\n * Create a new, empty, [[EditableWorkspaceDb]] file on the local filesystem for importing [[Workspace]] resources.\n * @note Do not pass an untrusted or unintended path in `localFileName`.\n * This helper creates or overwrites the file at that location; callers that need fail-if-exists behavior should check first.\n */\n export function createEmptyDb(args: { localFileName: LocalFileName, manifest: WorkspaceDbManifest }): void {\n WorkspaceSqliteDb.createNewDb(args.localFileName, args);\n }\n\n /** Arguments for [[WorkspaceEditor.queryContainers]] and [[WorkspaceEditor.findContainers]]. */\n export interface QueryWorkspaceContainersArgs {\n /** The iTwinId whose workspace containers should be queried. */\n iTwinId: GuidString;\n /** Optional iModelId to further scope the query to containers associated with a specific iModel. */\n iModelId?: GuidString;\n /** Optional label filter. */\n label?: string;\n /** The type of container to query. Defaults to `\"workspace\"`. */\n containerType?: \"workspace\" | \"settings\";\n }\n\n /**\n * Query the [[BlobContainer]] service for all workspace containers associated with a given iTwin.\n * This is a convenience wrapper around `BlobContainer.service.queryContainersMetadata` that\n * automatically filters by `containerType: \"workspace\"`.\n * @param args - The query arguments including the iTwinId.\n * @returns A promise that resolves to the matching container metadata entries.\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n */\n export async function queryContainers(args: QueryWorkspaceContainersArgs): Promise<BlobContainer.MetadataResponse[]> {\n if (undefined === BlobContainer.service)\n throw new Error(\"BlobContainer.service is not available. Ensure IModelHost is initialized with a valid configuration.\");\n const userToken = await IModelHost.getAccessToken();\n return BlobContainer.service.queryContainersMetadata(userToken, { ...args, containerType: args.containerType ?? \"workspace\" });\n }\n}\n\n/** Arguments supplied to [[WorkspaceEditor.createNewCloudContainer]] to create a new [[EditableWorkspaceContainer]].\n * @beta\n */\nexport interface CreateNewWorkspaceContainerArgs {\n /**\n * The scope of the container. This determines the ownership of the container, how RBAC rights are assigned,\n * and the location of the datacenter\n */\n scope: BlobContainer.Scope;\n /** The manifest to be stored in the default WorkspaceDb in the new container. */\n manifest: WorkspaceDbManifest;\n /** Metadata stored by the BlobContainer service */\n metadata: Omit<BlobContainer.Metadata, \"containerType\">;\n /** The type of container to create. Defaults to `\"workspace\"`. */\n containerType?: \"workspace\" | \"settings\";\n /** The name of the default [[WorkspaceDb]] created inside the new container.\n * Default: \"workspace-db\";\n */\n dbName?: WorkspaceDbName;\n}\n\n/**\n * A [[WorkspaceContainer]] opened for editing by a [[WorkspaceEditor]].\n * You can create new [[WorkspaceDb]]s or new versions of existing [[WorkspaceDb]]s inside it.\n * Before actually making any changes to the container's contents, you must first obtain an exclusive write lock on it via\n * [[acquireWriteLock]]. Only one user can hold the write lock at any given time. When you have finished making changes,\n * you can use [[releaseWriteLock]] to publish your changes, or [[abandonChanges]] to discard them.\n * @beta\n */\nexport interface EditableWorkspaceContainer extends WorkspaceContainer {\n /**\n * Create a copy of an existing [[WorkspaceDb]] in this container with a new [[WorkspaceDbVersion]].\n * The copy should be modified with new content before the write lock is released,\n * and thereafter may never be modified again.\n * @note The copy actually shares all of the data with the original, but with copy-on-write if/when data in the new WorkspaceDb is modified.\n * @param props - The properties that determine the source WorkspaceDb to serve as the basis for the new version.\n * @returns A promise that resolves to an object containing the old and new WorkspaceDb names and versions.\n */\n createNewWorkspaceDbVersion(props: CreateNewWorkspaceDbVersionArgs): Promise<{ oldDb: WorkspaceDbNameAndVersion, newDb: WorkspaceDbNameAndVersion }>;\n\n /**\n * Create a new, empty [[WorkspaceDb]].\n * @param args - The arguments for creating the new WorkspaceDb. If `args.version` is omitted for a cloud container, the new db is created as version `0.0.0`.\n * @returns A promise that resolves to an EditableWorkspaceDb.\n */\n createDb(args: { dbName?: WorkspaceDbName, version?: WorkspaceDbVersion, manifest: WorkspaceDbManifest }): Promise<EditableWorkspaceDb>;\n\n /**\n * Get the cloud properties of this container.\n */\n readonly cloudProps: WorkspaceContainerProps | undefined;\n\n /**\n * Get an editable [[WorkspaceDb]] to add, delete, or update resources *within a newly created version* of a WorkspaceDb.\n * Repeated calls that resolve to the same WorkspaceDb return the same cached instance until it is closed.\n * @param props - The properties of the WorkspaceDb.\n */\n getEditableDb(props: WorkspaceDbProps): EditableWorkspaceDb;\n\n /**\n * Acquire the write lock on the container. Use [[releaseWriteLock]] to release the lock after publishing your changes, or\n * [[abandonChanges]] to release the lock and discard your changes.\n * Only one use can hold the write lock at any given time. However, readers can continue to read the published contents of the container while\n * a writer holds the write lock. Readers will only see the writer's changes after they are published by [[releaseWriteLock]].\n * @param user - The name of the user acquiring the write lock.\n */\n acquireWriteLock(user: string): void;\n\n /**\n * Release the write lock on the container. This should be called after all changes to the container's contents are complete. It\n * publishes and uploads the changes made to any [[WorkspaceDb]]s while the lock was held, after which those dbs become immutable.\n */\n releaseWriteLock(): void;\n\n /**\n * Abandon any changes made to the container and release the write lock. Any newly created versions of WorkspaceDbs are discarded.\n */\n abandonChanges(): void;\n\n /**\n * Acquire the write lock, get or create an editable tip [[WorkspaceDb]], open it, run `operation`,\n * then close the db and release the lock.\n * If the current tip has already been published, a new prerelease version is created automatically.\n * On error the lock is released and changes are abandoned.\n * @param user - The name of the user acquiring the write lock.\n * @param operation - A callback invoked with the opened [[EditableWorkspaceDb]].\n * @param props - Properties identifying which db to operate on. Defaults to the container's default db.\n */\n withEditableDb(user: string, operation: (db: EditableWorkspaceDb) => void, props?: WorkspaceDbProps): Promise<void>;\n}\n\n/**\n * Arguments supplied to [[Workspace.createNewWorkspaceDbVersion]].\n * @beta\n */\nexport interface CreateNewWorkspaceDbVersionArgs {\n /**\n * The properties that determine the source [[WorkspaceDb]] to serve as the basis for the new version.\n * This is usually the latest version, but it is possible to create patches to older versions.\n */\n fromProps?: WorkspaceDbProps;\n /** The type of version increment to apply to the source version. */\n versionType: CloudSqlite.SemverIncrement;\n /** For prerelease versions, a string that becomes part of the version name. */\n identifier?: string;\n}\n\n/**\n * An editable [[WorkspaceDb]]. This is used only by tools to allow administrators to create and modify WorkspaceDbs.\n * For cloud-based WorkspaceDbs, the container's write token must be obtained via [[EditableWorkspaceContainer.acquireWriteLock]] before the methods in this interface may be used.\n * Normally, only admins will have write access to a [[Workspace]].\n * Only one admin at a time may be editing a Workspace.\n * @beta\n */\nexport interface EditableWorkspaceDb extends WorkspaceDb {\n readonly container: EditableWorkspaceContainer;\n /**\n * The cloud properties of the [[WorkspaceDb]], if this is a cloud-based WorkspaceDb.\n */\n get cloudProps(): WorkspaceDbCloudProps | undefined;\n\n /**\n * Update the contents of the manifest in this WorkspaceDb.\n * @param manifest - The updated manifest.\n */\n updateManifest(manifest: WorkspaceDbManifest): void;\n\n /**\n * Add or update a resource in this WorkspaceDb that can be loaded as a [[SettingsDictionary]].\n * The `settings` will be stored as stringified JSON.\n * @param settings - The settings object to add or update.\n * @param rscName - The name of the settings resource. Defaults to \"settingsDictionary\" if undefined.\n */\n updateSettingsResource(settings: SettingsContainer, rscName?: string): void;\n\n /**\n * Add a new string resource to this WorkspaceDb.\n * @param rscName - The name of the string resource.\n * @param val - The string to save.\n * @throws if a string resource named `rscName` already exists.\n */\n addString(rscName: WorkspaceResourceName, val: string): void;\n\n /**\n * Update an existing string resource with a new value, or add it if it does not exist.\n * @param rscName - The name of the string resource.\n * @param val - The new value.\n */\n updateString(rscName: WorkspaceResourceName, val: string): void;\n\n /**\n * Remove a string resource.\n * @param rscName - The name of the string resource to remove.\n */\n removeString(rscName: WorkspaceResourceName): void;\n\n /**\n * Add a new binary resource to this WorkspaceDb.\n * @param rscName - The name of the blob resource.\n * @param val - The blob to save.\n * @throws if a blob resource named `rscName` already exists.\n */\n addBlob(rscName: WorkspaceResourceName, val: Uint8Array): void;\n\n /**\n * Update an existing blob resource with a new value, or add it if it does not exist.\n * @param rscName - The name of the blob resource.\n * @param val - The new value.\n */\n updateBlob(rscName: WorkspaceResourceName, val: Uint8Array): void;\n\n /**\n * Get a BlobIO writer for a previously-added blob WorkspaceResource.\n * @param rscName - The name of the blob resource.\n * @returns A BlobIO writer.\n * @note After writing is complete, the caller must call `close` on the BlobIO and must call `saveChanges` on the `db`.\n * @internal\n */\n getBlobWriter(rscName: WorkspaceResourceName): SQLiteDb.BlobIO;\n\n /**\n * Remove a binary resource.\n * @param rscName - The name of the blob resource to remove.\n */\n removeBlob(rscName: WorkspaceResourceName): void;\n\n /**\n * Copy the contents of an existing local file into this WorkspaceDb as a file resource.\n * @param rscName - The name of the file resource.\n * @param localFileName - The name of a local file to be read.\n * @param fileExt - The extension to be appended to the generated fileName when this WorkspaceDb is extracted from the WorkspaceDb.\n * By default, the characters after the last \".\" in `localFileName` are used. Pass this argument to override that.\n */\n addFile(rscName: WorkspaceResourceName, localFileName: LocalFileName, fileExt?: string): void;\n\n /**\n * Replace an existing file resource with the contents of another local file.\n * @param rscName - The name of the file resource.\n * @param localFileName - The name of a local file to be read.\n * @throws If the file resource does not exist.\n */\n updateFile(rscName: WorkspaceResourceName, localFileName: LocalFileName): void;\n\n /**\n * Remove a file resource.\n * @param rscName - The name of the file resource to remove.\n */\n removeFile(rscName: WorkspaceResourceName): void;\n}\n\n/** An object that permits administrators to modify the contents of a [[Workspace]].\n * Use [[WorkspaceEditor.construct]] to obtain a WorkspaceEditor, and [[close]] when finished using it.\n * Only one WorkspaceEditor may be in use at any given time.\n * Use [[getContainer]] to edit an existing [[WorkspaceContainer]], or [[createNewCloudContainer]] to create a new [[WorkspaceContainer]].\n * @beta\n */\nexport interface WorkspaceEditor {\n /** @internal */\n [_implementationProhibited]: unknown;\n\n /**\n * The workspace dedicated to this editor.\n * @note This workspace is independent from [[IModelHost.appWorkspace]] and all [[IModelDb.workspace]]s. It has its own [[Settings]] and [[WorkspaceDb]]s.\n */\n readonly workspace: Workspace;\n\n /**\n * Retrieves a container for the editor with the specified properties and access token.\n */\n getContainer(args: GetWorkspaceContainerArgs): EditableWorkspaceContainer;\n\n /**\n * Asynchronously retrieves a container for the editor with the specified properties.\n */\n getContainerAsync(props: WorkspaceContainerProps): Promise<EditableWorkspaceContainer>;\n\n /**\n * Creates a new cloud container for holding WorkspaceDbs, from the [[BlobContainer]] service.\n * @note The current user must have administrator rights for the iTwin for the container.\n */\n createNewCloudContainer(args: CreateNewWorkspaceContainerArgs): Promise<EditableWorkspaceContainer>;\n\n /**\n * Find and open existing workspace containers by querying the [[BlobContainer]] service.\n * This is a convenience method that queries for all workspace containers matching the given iTwinId\n * (and optionally iModelId), requests write access tokens, and opens each matching container.\n * @param args - The query arguments including iTwinId and optionally iModelId and label.\n * @returns A promise that resolves to an array of opened [[EditableWorkspaceContainer]]s.\n * @note Requires [[IModelHost.authorizationClient]] and [[BlobContainer.service]] to be configured.\n */\n findContainers(args: WorkspaceEditor.QueryWorkspaceContainersArgs): Promise<EditableWorkspaceContainer[]>;\n\n /**\n * Closes this editor. All [[workspace]] containers are dropped.\n */\n close(): void;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WorkspaceEditor.js","sourceRoot":"","sources":["../../../src/workspace/WorkspaceEditor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,YAAY;AACZ,MAAM,KAAW,eAAe,CA6C/B;AA7CD,WAAiB,eAAe;IAC9B;;;;OAIG;IACH,SAAgB,SAAS;QACvB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAFe,yBAAS,YAExB,CAAA;IAED;;;;OAIG;IACH,SAAgB,aAAa,CAAC,IAAqE;QACjG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAFe,6BAAa,gBAE5B,CAAA;IAcD;;;;;;;OAOG;IACI,KAAK,UAAU,eAAe,CAAC,IAAkC;QACtE,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO;YACrC,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;QAC1H,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC;IACjI,CAAC;IALqB,+BAAe,kBAKpC,CAAA;AACH,CAAC,EA7CgB,eAAe,KAAf,eAAe,QA6C/B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Workspace\n */\n\nimport { LocalFileName } from \"@itwin/core-common\";\nimport { GuidString } from \"@itwin/core-bentley\";\nimport { SQLiteDb } from \"../SQLiteDb\";\nimport { SettingsContainer } from \"./Settings\";\nimport { BlobContainer } from \"../BlobContainerService\";\nimport {\n GetWorkspaceContainerArgs, Workspace, WorkspaceContainer, WorkspaceContainerProps, WorkspaceDb, WorkspaceDbCloudProps, WorkspaceDbManifest, WorkspaceDbName, WorkspaceDbNameAndVersion,\n WorkspaceDbProps, WorkspaceDbVersion, WorkspaceResourceName,\n} from \"./Workspace\";\nimport { WorkspaceSqliteDb } from \"../internal/workspace/WorkspaceSqliteDb\";\nimport { constructWorkspaceEditor } from \"../internal/workspace/WorkspaceImpl\";\nimport { _implementationProhibited } from \"../internal/Symbols\";\nimport { CloudSqlite } from \"../CloudSqlite\";\nimport { IModelHost } from \"../IModelHost\";\n\n/** @beta */\nexport namespace WorkspaceEditor {\n /**\n * Create a new [[WorkspaceEditor]] for creating new versions of [[WorkspaceDb]]s.\n * @note the caller becomes the owner of the Workspace.Editor and is responsible for calling [[WorkspaceEditor.close]] on it when they are finished using it.\n * @note It is illegal to have more than one Workspace.Editor active in a single session.\n */\n export function construct(): WorkspaceEditor {\n return constructWorkspaceEditor();\n }\n\n /**\n * Create a new, empty, [[EditableWorkspaceDb]] file on the local filesystem for importing [[Workspace]] resources.\n * @note Do not pass an untrusted or unintended path in `localFileName`.\n * This helper creates or overwrites the file at that location; callers that need fail-if-exists behavior should check first.\n */\n export function createEmptyDb(args: { localFileName: LocalFileName, manifest: WorkspaceDbManifest }): void {\n WorkspaceSqliteDb.createNewDb(args.localFileName, args);\n }\n\n /** Arguments for [[WorkspaceEditor.queryContainers]] and [[WorkspaceEditor.findContainers]]. */\n export interface QueryWorkspaceContainersArgs {\n /** The iTwinId whose workspace containers should be queried. */\n iTwinId: GuidString;\n /** Optional iModelId to further scope the query to containers associated with a specific iModel. */\n iModelId?: GuidString;\n /** Optional label filter. */\n label?: string;\n /** The type of container to query. Defaults to `\"workspace\"`. */\n containerType?: \"workspace\" | \"settings\";\n }\n\n /**\n * Query the [[BlobContainer]] service for all workspace containers associated with a given iTwin.\n * This is a convenience wrapper around `BlobContainer.service.queryContainersMetadata` that\n * automatically filters by `containerType: \"workspace\"`.\n * @param args - The query arguments including the iTwinId.\n * @returns A promise that resolves to the matching container metadata entries.\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n */\n export async function queryContainers(args: QueryWorkspaceContainersArgs): Promise<BlobContainer.MetadataResponse[]> {\n if (undefined === BlobContainer.service)\n throw new Error(\"BlobContainer.service is not available. Ensure IModelHost is initialized with a valid configuration.\");\n const userToken = await IModelHost.getAccessToken();\n return BlobContainer.service.queryContainersMetadata(userToken, { ...args, containerType: args.containerType ?? \"workspace\" });\n }\n}\n\n/** Arguments supplied to [[WorkspaceEditor.createNewCloudContainer]] to create a new [[EditableWorkspaceContainer]].\n * @beta\n */\nexport interface CreateNewWorkspaceContainerArgs {\n /**\n * The scope of the container. This determines the ownership of the container, how RBAC rights are assigned,\n * and the location of the datacenter\n */\n scope: BlobContainer.Scope;\n /** The manifest to be stored in the default WorkspaceDb in the new container. */\n manifest: WorkspaceDbManifest;\n /** Metadata stored by the BlobContainer service */\n metadata: Omit<BlobContainer.Metadata, \"containerType\">;\n /** The type of container to create. Defaults to `\"workspace\"`. */\n containerType?: \"workspace\" | \"settings\";\n /** The name of the default [[WorkspaceDb]] created inside the new container.\n * Default: \"workspace-db\";\n */\n dbName?: WorkspaceDbName;\n}\n\n/**\n * A [[WorkspaceContainer]] opened for editing by a [[WorkspaceEditor]].\n * You can create new [[WorkspaceDb]]s or new versions of existing [[WorkspaceDb]]s inside it.\n * Before actually making any changes to the container's contents, you must first obtain an exclusive write lock on it via\n * [[acquireWriteLock]]. Only one user can hold the write lock at any given time. When you have finished making changes,\n * you can use [[releaseWriteLock]] to publish your changes, or [[abandonChanges]] to discard them.\n * @beta\n */\nexport interface EditableWorkspaceContainer extends WorkspaceContainer {\n /**\n * Create a copy of an existing [[WorkspaceDb]] in this container with a new [[WorkspaceDbVersion]].\n * The copy should be modified with new content before the write lock is released,\n * and thereafter may never be modified again.\n * @note The copy actually shares all of the data with the original, but with copy-on-write if/when data in the new WorkspaceDb is modified.\n * @param props - The properties that determine the source WorkspaceDb to serve as the basis for the new version.\n * @returns A promise that resolves to an object containing the old and new WorkspaceDb names and versions.\n */\n createNewWorkspaceDbVersion(props: CreateNewWorkspaceDbVersionArgs): Promise<{ oldDb: WorkspaceDbNameAndVersion, newDb: WorkspaceDbNameAndVersion }>;\n\n /**\n * Create a new, empty [[WorkspaceDb]].\n * @param args - The arguments for creating the new WorkspaceDb. If `args.version` is omitted for a cloud container, the new db is created as version `0.0.0`.\n * @returns A promise that resolves to an EditableWorkspaceDb.\n */\n createDb(args: { dbName?: WorkspaceDbName, version?: WorkspaceDbVersion, manifest: WorkspaceDbManifest }): Promise<EditableWorkspaceDb>;\n\n /**\n * Get the cloud properties of this container.\n */\n readonly cloudProps: WorkspaceContainerProps | undefined;\n\n /**\n * Get an editable [[WorkspaceDb]] to add, delete, or update resources *within a newly created version* of a WorkspaceDb.\n * Repeated calls that resolve to the same WorkspaceDb return the same cached instance until it is closed.\n * @param props - The properties of the WorkspaceDb.\n */\n getEditableDb(props: WorkspaceDbProps): EditableWorkspaceDb;\n\n /**\n * Acquire the write lock on the container. Use [[releaseWriteLock]] to release the lock after publishing your changes, or\n * [[abandonChanges]] to release the lock and discard your changes.\n * Only one use can hold the write lock at any given time. However, readers can continue to read the published contents of the container while\n * a writer holds the write lock. Readers will only see the writer's changes after they are published by [[releaseWriteLock]].\n * @param user - The name of the user acquiring the write lock.\n */\n acquireWriteLock(user: string): void;\n\n /**\n * Release the write lock on the container. This should be called after all changes to the container's contents are complete. It\n * publishes and uploads the changes made to any [[WorkspaceDb]]s while the lock was held, after which those dbs become immutable.\n */\n releaseWriteLock(): void;\n\n /**\n * Abandon any changes made to the container and release the write lock. Any newly created versions of WorkspaceDbs are discarded.\n */\n abandonChanges(): void;\n\n /**\n * Acquire the write lock, get or create an editable tip [[WorkspaceDb]], open it, run `operation`,\n * then close the db and release the lock.\n * If the current tip has already been published, a new prerelease version is created automatically.\n * On error the lock is released and changes are abandoned.\n * @param user - The name of the user acquiring the write lock.\n * @param operation - A callback invoked with the opened [[EditableWorkspaceDb]].\n * @param props - Properties identifying which db to operate on. Defaults to the container's default db.\n */\n withEditableDb(user: string, operation: (db: EditableWorkspaceDb) => void, props?: WorkspaceDbProps): Promise<void>;\n}\n\n/**\n * Arguments supplied to [[Workspace.createNewWorkspaceDbVersion]].\n * @beta\n */\nexport interface CreateNewWorkspaceDbVersionArgs {\n /**\n * The properties that determine the source [[WorkspaceDb]] to serve as the basis for the new version.\n * This is usually the latest version, but it is possible to create patches to older versions.\n */\n fromProps?: WorkspaceDbProps;\n /** The type of version increment to apply to the source version. */\n versionType: CloudSqlite.SemverIncrement;\n /** For prerelease versions, a string that becomes part of the version name. */\n identifier?: string;\n}\n\n/**\n * An editable [[WorkspaceDb]]. This is used only by tools to allow administrators to create and modify WorkspaceDbs.\n * For cloud-based WorkspaceDbs, the container's write token must be obtained via [[EditableWorkspaceContainer.acquireWriteLock]] before the methods in this interface may be used.\n * Normally, only admins will have write access to a [[Workspace]].\n * Only one admin at a time may be editing a Workspace.\n * @beta\n */\nexport interface EditableWorkspaceDb extends WorkspaceDb {\n readonly container: EditableWorkspaceContainer;\n /**\n * The cloud properties of the [[WorkspaceDb]], if this is a cloud-based WorkspaceDb.\n */\n get cloudProps(): WorkspaceDbCloudProps | undefined;\n\n /**\n * Update the contents of the manifest in this WorkspaceDb.\n * @param manifest - The updated manifest.\n */\n updateManifest(manifest: WorkspaceDbManifest): void;\n\n /**\n * Add or update a resource in this WorkspaceDb that can be loaded as a [[SettingsDictionary]].\n * The `settings` will be stored as stringified JSON.\n * @param settings - The settings object to add or update.\n * @param rscName - The name of the settings resource. Defaults to \"settingsDictionary\" if undefined.\n */\n updateSettingsResource(settings: SettingsContainer, rscName?: string): void;\n\n /**\n * Add a new string resource to this WorkspaceDb.\n * @param rscName - The name of the string resource.\n * @param val - The string to save.\n * @throws if a string resource named `rscName` already exists.\n */\n addString(rscName: WorkspaceResourceName, val: string): void;\n\n /**\n * Update an existing string resource with a new value, or add it if it does not exist.\n * @param rscName - The name of the string resource.\n * @param val - The new value.\n */\n updateString(rscName: WorkspaceResourceName, val: string): void;\n\n /**\n * Remove a string resource.\n * @param rscName - The name of the string resource to remove.\n */\n removeString(rscName: WorkspaceResourceName): void;\n\n /**\n * Add a new binary resource to this WorkspaceDb.\n * @param rscName - The name of the blob resource.\n * @param val - The blob to save.\n * @throws if a blob resource named `rscName` already exists.\n */\n addBlob(rscName: WorkspaceResourceName, val: Uint8Array): void;\n\n /**\n * Update an existing blob resource with a new value, or add it if it does not exist.\n * @param rscName - The name of the blob resource.\n * @param val - The new value.\n */\n updateBlob(rscName: WorkspaceResourceName, val: Uint8Array): void;\n\n /**\n * Get a BlobIO writer for a previously-added blob WorkspaceResource.\n * @param rscName - The name of the blob resource.\n * @returns A BlobIO writer.\n * @note After writing is complete, the caller must call `close` on the BlobIO and must call `saveChanges` on the `db`.\n * @internal\n */\n getBlobWriter(rscName: WorkspaceResourceName): SQLiteDb.BlobIO;\n\n /**\n * Remove a binary resource.\n * @param rscName - The name of the blob resource to remove.\n */\n removeBlob(rscName: WorkspaceResourceName): void;\n\n /**\n * Copy the contents of an existing local file into this WorkspaceDb as a file resource.\n * @param rscName - The name of the file resource.\n * @param localFileName - The name of a local file to be read.\n * @param fileExt - The extension to be appended to the generated fileName when this WorkspaceDb is extracted from the WorkspaceDb.\n * By default, the characters after the last \".\" in `localFileName` are used. Pass this argument to override that.\n * @deprecated File resources are deprecated. Store the contents as a blob using [[addBlob]], or as a string using [[addString]].\n */\n addFile(rscName: WorkspaceResourceName, localFileName: LocalFileName, fileExt?: string): void;\n\n /**\n * Replace an existing file resource with the contents of another local file.\n * @param rscName - The name of the file resource.\n * @param localFileName - The name of a local file to be read.\n * @throws If the file resource does not exist.\n * @deprecated File resources are deprecated. Migrate existing file resources to blobs or strings. This method remains available for maintaining existing resources.\n */\n updateFile(rscName: WorkspaceResourceName, localFileName: LocalFileName): void;\n\n /**\n * Remove a file resource.\n * @param rscName - The name of the file resource to remove.\n * @deprecated File resources are deprecated. This method remains available for removing existing file resources.\n */\n removeFile(rscName: WorkspaceResourceName): void;\n}\n\n/** An object that permits administrators to modify the contents of a [[Workspace]].\n * Use [[WorkspaceEditor.construct]] to obtain a WorkspaceEditor, and [[close]] when finished using it.\n * Only one WorkspaceEditor may be in use at any given time.\n * Use [[getContainer]] to edit an existing [[WorkspaceContainer]], or [[createNewCloudContainer]] to create a new [[WorkspaceContainer]].\n * @beta\n */\nexport interface WorkspaceEditor {\n /** @internal */\n [_implementationProhibited]: unknown;\n\n /**\n * The workspace dedicated to this editor.\n * @note This workspace is independent from [[IModelHost.appWorkspace]] and all [[IModelDb.workspace]]s. It has its own [[Settings]] and [[WorkspaceDb]]s.\n */\n readonly workspace: Workspace;\n\n /**\n * Retrieves a container for the editor with the specified properties and access token.\n */\n getContainer(args: GetWorkspaceContainerArgs): EditableWorkspaceContainer;\n\n /**\n * Asynchronously retrieves a container for the editor with the specified properties.\n */\n getContainerAsync(props: WorkspaceContainerProps): Promise<EditableWorkspaceContainer>;\n\n /**\n * Creates a new cloud container for holding WorkspaceDbs, from the [[BlobContainer]] service.\n * @note The current user must have administrator rights for the iTwin for the container.\n */\n createNewCloudContainer(args: CreateNewWorkspaceContainerArgs): Promise<EditableWorkspaceContainer>;\n\n /**\n * Find and open existing workspace containers by querying the [[BlobContainer]] service.\n * This is a convenience method that queries for all workspace containers matching the given iTwinId\n * (and optionally iModelId), requests write access tokens, and opens each matching container.\n * @param args - The query arguments including iTwinId and optionally iModelId and label.\n * @returns A promise that resolves to an array of opened [[EditableWorkspaceContainer]]s.\n * @note Requires [[IModelHost.authorizationClient]] and [[BlobContainer.service]] to be configured.\n */\n findContainers(args: WorkspaceEditor.QueryWorkspaceContainersArgs): Promise<EditableWorkspaceContainer[]>;\n\n /**\n * Closes this editor. All [[workspace]] containers are dropped.\n */\n close(): void;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-backend",
|
|
3
|
-
"version": "5.13.0-dev.
|
|
3
|
+
"version": "5.13.0-dev.2",
|
|
4
4
|
"description": "iTwin.js backend components",
|
|
5
5
|
"main": "lib/cjs/core-backend.js",
|
|
6
6
|
"module": "lib/esm/core-backend.js",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@opentelemetry/api": "^1.0.4",
|
|
30
|
-
"@itwin/core-
|
|
31
|
-
"@itwin/core-
|
|
32
|
-
"@itwin/
|
|
33
|
-
"@itwin/
|
|
30
|
+
"@itwin/core-common": "5.13.0-dev.2",
|
|
31
|
+
"@itwin/core-geometry": "5.13.0-dev.2",
|
|
32
|
+
"@itwin/ecschema-metadata": "5.13.0-dev.2",
|
|
33
|
+
"@itwin/core-bentley": "5.13.0-dev.2"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"@opentelemetry/api": {
|
|
@@ -65,7 +65,6 @@
|
|
|
65
65
|
"dotenv-expand": "^5.1.0",
|
|
66
66
|
"eslint": "^9.31.0",
|
|
67
67
|
"fs-extra": "^8.1.0",
|
|
68
|
-
"glob": "^10.5.0",
|
|
69
68
|
"mocha": "^11.1.0",
|
|
70
69
|
"node-simctl": "~7.6.1",
|
|
71
70
|
"null-loader": "^4.0.1",
|
|
@@ -77,17 +76,17 @@
|
|
|
77
76
|
"marked": "^14.1.3",
|
|
78
77
|
"sql-formatter": "^15.4.6",
|
|
79
78
|
"webpack": "^5.97.1",
|
|
80
|
-
"@itwin/
|
|
81
|
-
"@itwin/
|
|
82
|
-
"@itwin/
|
|
83
|
-
"@itwin/core-
|
|
84
|
-
"@itwin/
|
|
85
|
-
"@itwin/ecschema-metadata": "5.13.0-dev.
|
|
86
|
-
"
|
|
87
|
-
"
|
|
79
|
+
"@itwin/core-bentley": "5.13.0-dev.2",
|
|
80
|
+
"@itwin/build-tools": "5.13.0-dev.2",
|
|
81
|
+
"@itwin/core-common": "5.13.0-dev.2",
|
|
82
|
+
"@itwin/core-geometry": "5.13.0-dev.2",
|
|
83
|
+
"@itwin/ecschema-locaters": "5.13.0-dev.2",
|
|
84
|
+
"@itwin/ecschema-metadata": "5.13.0-dev.2",
|
|
85
|
+
"@itwin/ecsql-common": "5.13.0-dev.2",
|
|
86
|
+
"internal-tools": "3.0.0-dev.69"
|
|
88
87
|
},
|
|
89
88
|
"dependencies": {
|
|
90
|
-
"@bentley/imodeljs-native": "5.13.
|
|
89
|
+
"@bentley/imodeljs-native": "5.13.3",
|
|
91
90
|
"@itwin/object-storage-azure": "^3.0.4",
|
|
92
91
|
"@azure/storage-blob": "^12.28.0",
|
|
93
92
|
"form-data": "^4.0.6",
|