Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
fd5211e
IModelHost.saveITwinSettingsDictionary
johnnyd710 Mar 23, 2026
96b01bf
simplify workspace construction
johnnyd710 Mar 23, 2026
74b1f80
remove dead code
johnnyd710 Mar 23, 2026
a33c7e6
.
johnnyd710 Mar 23, 2026
8c39632
ITwin settings container management
johnnyd710 Mar 23, 2026
2573041
lint
johnnyd710 Mar 23, 2026
71e4327
use itwin error
johnnyd710 Mar 23, 2026
cb7ce14
use itwin errors
johnnyd710 Mar 23, 2026
a8b5577
move itwin settings container mgmt to SettingsDb - better place for it?
johnnyd710 Mar 23, 2026
42b4271
undo that change
johnnyd710 Mar 23, 2026
a4d4250
simplify containerEntry assignment
johnnyd710 Mar 23, 2026
1a05b72
add more tests
johnnyd710 Mar 23, 2026
d399e61
rename getITwinSingletonContainerId to getITwinContainerId
johnnyd710 Mar 23, 2026
ac6fbae
.
johnnyd710 Mar 23, 2026
92cea79
.
johnnyd710 Mar 23, 2026
a5bef45
rush extract api
johnnyd710 Mar 23, 2026
d15c0f6
.
johnnyd710 Mar 23, 2026
2bea298
Enhance documentation for SettingsDictionaryProps to include iTwin-sp…
johnnyd710 Mar 23, 2026
21a00aa
add log message
johnnyd710 Mar 23, 2026
a5fd0eb
logError
johnnyd710 Mar 23, 2026
fcb7b4b
change back to warning
johnnyd710 Mar 23, 2026
302d04e
withEditableDb method
johnnyd710 Mar 23, 2026
4c230bd
extract api changes
johnnyd710 Mar 23, 2026
d75e348
update SettingsDictionarySource to separate workspaceDb and settingsDb
johnnyd710 Mar 24, 2026
d120979
.
johnnyd710 Mar 24, 2026
36c6764
Merge branch 'master' into john/itwin-workspace
johnnyd710 Mar 24, 2026
f4fdfd4
add tests
johnnyd710 Mar 24, 2026
5b4c2c3
.
johnnyd710 Mar 24, 2026
8dd82f1
.
johnnyd710 Mar 24, 2026
de331e6
.
johnnyd710 Mar 24, 2026
a5c5cc2
remove redundant tests
johnnyd710 Mar 24, 2026
939a2f4
rush lint
johnnyd710 Mar 24, 2026
fb61004
final pass
johnnyd710 Mar 24, 2026
7c8b59b
update NextVersion
johnnyd710 Mar 25, 2026
655bb51
Merge branch 'master' into john/itwin-workspace
johnnyd710 Mar 25, 2026
7299f87
rush change
johnnyd710 Mar 25, 2026
49fc123
fix ios test failures
johnnyd710 Mar 25, 2026
c21fcc1
.
johnnyd710 Mar 25, 2026
9f914a8
refactor
johnnyd710 Mar 29, 2026
c3d8cfb
fix: ensure correct expectations in WorkspaceExamples tests
johnnyd710 Mar 30, 2026
4b55b5b
Merge branch 'master' into john/itwin-workspace
johnnyd710 Mar 30, 2026
be9d54e
feat: add SettingsEditor namespace with constructForITwin function
johnnyd710 Mar 30, 2026
b938522
.
johnnyd710 Mar 30, 2026
06541e5
.
johnnyd710 Mar 30, 2026
0be4c40
docs update
johnnyd710 Mar 30, 2026
f54d09f
Merge branch 'master' into john/itwin-workspace
johnnyd710 Mar 30, 2026
798e43f
OwnedWorkspace.close note in jsDocs
johnnyd710 Mar 30, 2026
6eaf437
Add getForITwin function to SettingsEditor
johnnyd710 Mar 31, 2026
2e95d39
use try-catch for workspace initialization
johnnyd710 Mar 31, 2026
8c79b16
database is closed in finally block during settings loading
johnnyd710 Mar 31, 2026
ed769a4
Close workspace after loading settings in ITwinWorkspace tests
johnnyd710 Mar 31, 2026
285e0dd
Add tests to ensure editor closes on error during save and delete ope…
johnnyd710 Mar 31, 2026
9612ca2
update docs
johnnyd710 Mar 31, 2026
b7205b6
extract api
johnnyd710 Mar 31, 2026
932045f
Merge branch 'master' into john/itwin-workspace
johnnyd710 Mar 31, 2026
531fac7
Add error handling to continue loading sibling dictionaries in Worksp…
johnnyd710 Mar 31, 2026
ad47246
use WorkspaceDbSettingsProps
johnnyd710 Apr 1, 2026
b1b8e7b
Merge branch 'master' into john/itwin-workspace
johnnyd710 Apr 1, 2026
03e8267
update workspace examples
johnnyd710 Apr 1, 2026
dc995fd
use named function
johnnyd710 Apr 2, 2026
bb63aec
Merge branch 'master' into john/itwin-workspace
johnnyd710 Apr 2, 2026
7713b90
fix removed ref
johnnyd710 Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 46 additions & 114 deletions common/api/core-backend.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -1786,23 +1786,9 @@ export interface CreateNewIModelProps extends IModelNameArg {
readonly version0?: LocalFileName;
}

// @beta
export interface CreateNewSettingsContainerArgs {
dbName?: WorkspaceDbName;
manifest: SettingsDbManifest;
metadata: Omit<BlobContainer.Metadata, "containerType">;
scope: BlobContainer.Scope;
}

// @beta
export interface CreateNewSettingsDbVersionArgs {
fromProps?: SettingsDbProps;
identifier?: string;
versionType: CloudSqlite.SemverIncrement;
}

// @beta
export interface CreateNewWorkspaceContainerArgs {
containerType?: "workspace" | "settings";
dbName?: WorkspaceDbName;
manifest: WorkspaceDbManifest;
metadata: Omit<BlobContainer.Metadata, "containerType">;
Expand All @@ -1816,13 +1802,6 @@ export interface CreateNewWorkspaceDbVersionArgs {
versionType: CloudSqlite.SemverIncrement;
}

// @beta
export interface CreateSettingsDbArgs {
dbName?: WorkspaceDbName;
manifest: SettingsDbManifest;
version?: WorkspaceDbVersion;
}

// @public
export interface CreateSheetViewDefinitionArgs {
baseModelId: Id64String;
Expand Down Expand Up @@ -2510,26 +2489,6 @@ export interface EditableCatalogDb extends CatalogDb {
updateCatalogManifest(manifest: CatalogIModel.Manifest): void;
}

// @beta
export interface EditableSettingsCloudContainer extends CloudSqliteContainer {
abandonChanges(): void;
acquireWriteLock(user: string): void;
readonly cloudProps: WorkspaceContainerProps | undefined;
createDb(args: CreateSettingsDbArgs): Promise<EditableSettingsDb>;
createNewSettingsDbVersion(args: CreateNewSettingsDbVersionArgs): Promise<SettingsDbVersionResult>;
getEditableDb(props?: SettingsDbProps): EditableSettingsDb;
releaseWriteLock(): void;
}

// @beta
export interface EditableSettingsDb extends SettingsDb {
readonly container: EditableSettingsCloudContainer;
removeSetting(settingName: SettingName): void;
updateManifest(manifest: SettingsDbManifest): void;
updateSetting(args: UpdateSettingArgs): void;
updateSettings(settings: SettingsContainer): void;
}

// @beta
export interface EditableWorkspaceContainer extends WorkspaceContainer {
abandonChanges(): void;
Expand All @@ -2546,6 +2505,7 @@ export interface EditableWorkspaceContainer extends WorkspaceContainer {
}>;
getEditableDb(props: WorkspaceDbProps): EditableWorkspaceDb;
releaseWriteLock(): void;
withEditableDb(user: string, operation: (db: EditableWorkspaceDb) => void, props?: WorkspaceDbProps): Promise<void>;
}

// @beta
Expand Down Expand Up @@ -3596,14 +3556,6 @@ export interface GetAvailableCoordinateReferenceSystemsArgs {
includeWorld?: boolean;
}

// @beta
export interface GetSettingsDbArgs {
readonly containerId: WorkspaceContainerId;
readonly dbName?: WorkspaceDbName;
readonly priority: SettingsPriority;
readonly version?: string;
}

// @beta
export interface GetWorkspaceContainerArgs extends WorkspaceContainerProps {
accessToken: AccessToken;
Expand Down Expand Up @@ -4140,9 +4092,15 @@ export class IModelHost {
// (undocumented)
static configuration?: Omit<IModelHostOptions, "hubAccess">;
static createNewIModel(arg: CreateNewIModelProps): Promise<GuidString>;
// @beta
static deleteSettingDictionary(iTwinId: GuidString, name: string): Promise<void>;
static getAccessToken(): Promise<AccessToken>;
// @internal
static getCrashReportProperties(): CrashReportingConfigNameValuePair[];
// @beta
static getITwinWorkspace(iTwinId: GuidString): Promise<OwnedWorkspace>;
// @beta
static getITwinWorkspace(props: WorkspaceDbSettingsProps | WorkspaceDbSettingsProps[]): Promise<OwnedWorkspace>;
static get isValid(): boolean;
static get logTileLoadTimeThreshold(): number;
static get logTileSizeThreshold(): number;
Expand All @@ -4157,6 +4115,8 @@ export class IModelHost {
static removeCrashReportProperty(name: string): void;
// @internal
static get restrictTileUrlsByClientIp(): boolean;
// @beta
static saveSettingDictionary(iTwinId: GuidString, name: string, settings: SettingsContainer): Promise<void>;
// @internal (undocumented)
static readonly session: Mutable<SessionProps>;
static get sessionId(): GuidString;
Expand Down Expand Up @@ -4484,6 +4444,9 @@ export interface IpcHostOpts {
// @beta
export function isITextAnnotation(element: Element_2): element is ITextAnnotation & Element_2;

// @internal
export function isSettingsDb(db: WorkspaceDb): db is SettingsDb;

// @beta
export interface ITextAnnotation {
defaultTextStyle?: TextAnnotationUsesTextStyleByDefault;
Expand Down Expand Up @@ -5481,6 +5444,9 @@ export interface QueryMappedFamiliesArgs {
includeNonEmbedded?: boolean;
}

// @internal
export function queryStringResourceNames(db: SettingsDb): WorkspaceDbName[];

// @beta
export interface QueryWorkspaceResourcesArgs {
callback: QueryWorkspaceResourcesCallback;
Expand Down Expand Up @@ -5989,41 +5955,23 @@ export interface SettingsContainer {
[name: SettingName]: Setting | undefined;
}

// @beta
export interface SettingsDb {
// @internal (undocumented)
[_implementationProhibited]: unknown;
close(): void;
readonly container: CloudSqliteContainer;
readonly dbName: string;
getSetting<T extends Setting>(settingName: SettingName): T | undefined;
getSettings(): SettingsContainer;
readonly isOpen: boolean;
readonly manifest: SettingsDbManifest;
open(): void;
readonly priority: SettingsPriority;
readonly version: string;
}

// @beta
export interface SettingsDbManifest {
readonly contactName?: string;
readonly description?: string;
readonly lastEditedBy?: string;
readonly settingsName: string;
// @internal
export namespace SettingsContainers {
export function getITwinContainerId(iTwinId: GuidString): Promise<WorkspaceContainerId | undefined>;
export function getITwinSettingsSources(iTwinId: GuidString): Promise<WorkspaceDbSettingsProps[] | undefined>;
export interface QueryArgs {
iTwinId: GuidString;
label?: string;
}
}

// @beta
export interface SettingsDbProps {
readonly dbName?: WorkspaceDbName;
readonly version?: string;
}
// @internal
export type SettingsDb = WorkspaceDb & {
readonly dbName: SettingsDbName;
};

// @beta
export interface SettingsDbVersionResult {
newDb: WorkspaceDbNameAndVersion;
oldDb: WorkspaceDbNameAndVersion;
}
// @internal
export type SettingsDbName = typeof settingsWorkspaceDbName;

// @beta
export interface SettingsDictionary {
Expand All @@ -6045,31 +5993,17 @@ export interface SettingsDictionarySource {
readonly workspaceDb?: WorkspaceDb;
}

// @beta (undocumented)
// @internal (undocumented)
export namespace SettingsEditor {
export function construct(): SettingsEditor;
export function createEmptyDb(args: {
localFileName: LocalFileName;
manifest: SettingsDbManifest;
}): void;
export function queryContainers(args: QuerySettingsContainersArgs): Promise<BlobContainer.MetadataResponse[]>;
export interface QuerySettingsContainersArgs {
iModelId?: GuidString;
iTwinId: GuidString;
label?: string;
}
}

// @beta
export interface SettingsEditor {
// @internal (undocumented)
[_implementationProhibited]: unknown;
close(): void;
createNewCloudContainer(args: CreateNewSettingsContainerArgs): Promise<EditableSettingsCloudContainer>;
findContainers(args: SettingsEditor.QuerySettingsContainersArgs): Promise<EditableSettingsCloudContainer[]>;
getContainer(args: GetWorkspaceContainerArgs): EditableSettingsCloudContainer;
getContainerAsync(props: WorkspaceContainerProps): Promise<EditableSettingsCloudContainer>;
readonly workspace: Workspace;
const containerType = "settings";
export function constructForITwin(iTwinId: GuidString): Promise<{
editor: WorkspaceEditor;
container: EditableWorkspaceContainer;
}>;
export function getForITwin(iTwinId: GuidString): Promise<{
editor: WorkspaceEditor;
container: EditableWorkspaceContainer;
} | undefined>;
}

// @beta
Expand All @@ -6086,7 +6020,7 @@ export namespace SettingsPriority {
}

// @internal
export const settingsResourceName = "settings";
export const settingsResourceName = "settingsDictionary";

// @beta
export interface SettingsSchemas {
Expand All @@ -6103,6 +6037,9 @@ export interface SettingsSchemas {
validateSetting<T>(value: T, settingName: SettingName): T;
}

// @internal
export const settingsWorkspaceDbName: WorkspaceDbName;

// @public @preview
export class Sheet extends Document_2 {
protected constructor(props: SheetProps, iModel: IModelDb);
Expand Down Expand Up @@ -7256,12 +7193,6 @@ export interface UpdateModelOptions extends ModelProps {
updateLastMod?: boolean;
}

// @beta
export interface UpdateSettingArgs {
readonly settingName: SettingName;
readonly value: Setting;
}

// @beta
export function upgradeCustomAttributesToEC3(xmlSchemas: string[], schemaContext?: ECSchemaXmlContext): string[];

Expand Down Expand Up @@ -7926,7 +7857,6 @@ export interface Workspace {
getCloudCache(): CloudSqlite.CloudCache;
getContainer(props: GetWorkspaceContainerArgs): WorkspaceContainer;
getContainerAsync(props: WorkspaceContainerProps): Promise<WorkspaceContainer>;
getSettingsDb(args: GetSettingsDbArgs): SettingsDb;
getWorkspaceDb(props: WorkspaceDbCloudProps): Promise<WorkspaceDb>;
getWorkspaceDbs(args: Workspace.DbListOrSettingName & {
problems?: WorkspaceDbLoadError[];
Expand All @@ -7939,6 +7869,7 @@ export interface Workspace {
settingName: SettingName,
filter?: Workspace.DbListFilter): WorkspaceDbCloudProps[];
readonly settings: Settings;
settingsSources?: WorkspaceDbSettingsProps | WorkspaceDbSettingsProps[];
}

// @beta (undocumented)
Expand Down Expand Up @@ -8081,6 +8012,7 @@ export namespace WorkspaceEditor {
}): void;
export function queryContainers(args: QueryWorkspaceContainersArgs): Promise<BlobContainer.MetadataResponse[]>;
export interface QueryWorkspaceContainersArgs {
containerType?: "workspace" | "settings";
iModelId?: GuidString;
iTwinId: GuidString;
label?: string;
Expand Down
16 changes: 16 additions & 0 deletions common/api/core-common.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -5760,6 +5760,22 @@ export function isValidImageSourceFormat(format: number): format is ImageSourceF
// @internal
export const iTwinChannel: (channel: string) => string;

// @beta
export interface ITwinSettingsError extends ITwinError {
readonly iTwinId?: GuidString;
readonly priority?: number;
}

// @beta (undocumented)
export namespace ITwinSettingsError {
const // (undocumented)
scope = "itwin-settings";
export function isError(error: unknown, key?: Key): error is ITwinSettingsError;
// (undocumented)
export type Key = "failed-to-obtain-container-token" | "multiple-itwin-settings-containers" | "no-cloud-container" | "blob-service-unavailable" | "invalid-priority" | "unknown-setting";
export function throwError<T extends ITwinSettingsError>(key: Key, e: Omit<T, "name" | "iTwinErrorId">): never;
}

// @public
export interface JsonGeometryStream {
data: GeometryStreamProps;
Expand Down
20 changes: 7 additions & 13 deletions common/api/summary/core-backend.exports.csv
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,8 @@ beta;interface;CreateChangeSummaryArgs
alpha;interface;CreateFontFileFromRscBlobArgs
beta;interface;CreateFontFileFromShxBlobArgs
public;interface;CreateNewIModelProps
beta;interface;CreateNewSettingsContainerArgs
beta;interface;CreateNewSettingsDbVersionArgs
beta;interface;CreateNewWorkspaceContainerArgs
beta;interface;CreateNewWorkspaceDbVersionArgs
beta;interface;CreateSettingsDbArgs
public;interface;CreateSheetViewDefinitionArgs
beta;function;createTerminatorGeometry
beta;interface;CustomHandledProperty
Expand Down Expand Up @@ -189,8 +186,6 @@ public;class;ECSqlValueIterator
deprecated;class;ECSqlValueIterator
public;class;ECSqlWriteStatement
beta;interface;EditableCatalogDb
beta;interface;EditableSettingsCloudContainer
beta;interface;EditableSettingsDb
beta;interface;EditableWorkspaceContainer
beta;interface;EditableWorkspaceDb
public;class;ElementAspect
Expand Down Expand Up @@ -305,7 +300,6 @@ public;class;GeometryPart
preview;class;GeometryPart
beta;function;getAvailableCoordinateReferenceSystems
beta;interface;GetAvailableCoordinateReferenceSystemsArgs
beta;interface;GetSettingsDbArgs
beta;interface;GetWorkspaceContainerArgs
beta;interface;GetWorkspaceResourceArgs
public;class;Graphic3d
Expand Down Expand Up @@ -374,6 +368,7 @@ public;class;IpcHandler
public;class;IpcHost
public;interface;IpcHostOpts
beta;function;isITextAnnotation
internal;function;isSettingsDb
beta;interface;ITextAnnotation
public;interface;ITwinIdArg
public;class;KnownLocations
Expand Down Expand Up @@ -468,6 +463,7 @@ public;type;PullChangesArgs
public;interface;PushChangesArgs
beta;interface;QueryLocalChangesArgs
beta;interface;QueryMappedFamiliesArgs
internal;function;queryStringResourceNames
beta;interface;QueryWorkspaceResourcesArgs
beta;type;QueryWorkspaceResourcesCallback
alpha;interface;RebaseHandler
Expand Down Expand Up @@ -517,19 +513,18 @@ beta;type;SettingName
beta;interface;Settings
beta;interface;SettingSchema
beta;interface;SettingsContainer
beta;interface;SettingsDb
beta;interface;SettingsDbManifest
beta;interface;SettingsDbProps
beta;interface;SettingsDbVersionResult
internal;namespace;SettingsContainers
internal;type;SettingsDb
internal;type;SettingsDbName
beta;interface;SettingsDictionary
beta;interface;SettingsDictionaryProps
beta;interface;SettingsDictionarySource
beta;namespace;SettingsEditor
beta;interface;SettingsEditor
internal;namespace;SettingsEditor
beta;type;SettingsPriority
beta;namespace;SettingsPriority
internal;const;settingsResourceName
beta;interface;SettingsSchemas
internal;const;settingsWorkspaceDbName
public;class;Sheet
preview;class;Sheet
public;class;SheetBorderTemplate
Expand Down Expand Up @@ -641,7 +636,6 @@ alpha;type;TxnMode
public;class;TypeDefinitionElement
preview;class;TypeDefinitionElement
public;interface;UpdateModelOptions
beta;interface;UpdateSettingArgs
beta;function;upgradeCustomAttributesToEC3
public;class;UrlLink
preview;class;UrlLink
Expand Down
2 changes: 2 additions & 0 deletions common/api/summary/core-common.exports.csv
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,8 @@ preview;function;isPlacement3dProps
public;function;isPowerOfTwo
public;function;isValidImageSourceFormat
internal;const;iTwinChannel
beta;interface;ITwinSettingsError
beta;namespace;ITwinSettingsError
public;interface;JsonGeometryStream
beta;type;LeaderAttachment
beta;type;LeaderTextPointOptions
Expand Down
Loading
Loading