55 lines
1.8 KiB
TypeScript
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>;
|
|
}
|