Files
makelore/electron/image-workspace/module.ts

55 lines
1.8 KiB
TypeScript

import type {
DesignAsset,
DesignAssetUploadInput,
DesignCommandFailureOutcome,
DesignCommandInput,
DesignCommandResult,
DesignCreateWorkspaceInput,
DesignDeleteWorkspaceResult,
DesignRenameWorkspaceInput,
DesignWorkspace,
DesignWorkspaceBootstrap,
DesignWorkspaceEventSubscription,
DesignWorkspaceEventSubscriptionInput,
} from '../../shared/image-workspace';
export type CloseEventSessionsOptions = {
accessToken?: string;
tolerateRemoteFailure?: boolean;
};
export class DesignWorkspaceModuleError extends Error {
readonly status: number;
readonly code: string;
readonly commandOutcome?: DesignCommandFailureOutcome;
constructor(
status: number,
code: string,
message: string,
commandOutcome?: DesignCommandFailureOutcome,
) {
super(message);
this.name = 'DesignWorkspaceModuleError';
this.status = status;
this.code = code;
this.commandOutcome = commandOutcome;
}
}
/** Main-owned deep boundary for one canonical V2 Living Form workspace. */
export interface DesignWorkspaceModule {
bootstrap(): Promise<DesignWorkspaceBootstrap>;
createWorkspace(input: DesignCreateWorkspaceInput): Promise<DesignWorkspace>;
deleteWorkspace(workspaceId: string): Promise<DesignDeleteWorkspaceResult>;
renameWorkspace(input: DesignRenameWorkspaceInput): Promise<DesignWorkspace>;
getWorkspace(workspaceId: string): Promise<DesignWorkspace>;
submitCommand(input: DesignCommandInput): Promise<DesignCommandResult>;
uploadAsset(input: DesignAssetUploadInput): Promise<DesignAsset>;
openWorkspaceEvents(
input: DesignWorkspaceEventSubscriptionInput,
): Promise<DesignWorkspaceEventSubscription>;
closeEventSessions(options?: CloseEventSessionsOptions): Promise<void>;
openAssetContent(workspaceId: string, assetId: string, range?: string): Promise<Response>;
}