@prefecthq/prefect-ui-library
Version:
This library is the Vue and Typescript component library for [Prefect 2](https://github.com/PrefectHQ/prefect) and [Prefect Cloud 2](https://www.prefect.io/cloud/). _The components and utilities in this project are not meant to be used independently_.
29 lines (22 loc) • 904 B
text/typescript
import { CloudConfigMissingParamsError } from '@/models/CloudConfigMissingParamsError'
import { Api, ApiBaseUrl, PrefectConfig } from '@/services/Api'
export type CloudApiConfig = PrefectConfig & {
accountId: string,
workspaceId: string,
}
export type WorkspaceApiConfig = PrefectConfig | CloudApiConfig
export function isCloudConfig(config: WorkspaceApiConfig): config is CloudApiConfig {
return 'accountId' in config && 'workspaceId' in config && 'token' in config
}
const getWorkspaceBaseUrl: ApiBaseUrl = (config) => {
if (!isCloudConfig(config)) {
return config.baseUrl
}
if (config.accountId && config.workspaceId) {
return `${config.baseUrl}/accounts/${config.accountId}/workspaces/${config.workspaceId}`
}
throw new CloudConfigMissingParamsError()
}
export class WorkspaceApi extends Api<WorkspaceApiConfig> {
protected override apiBaseUrl = getWorkspaceBaseUrl
}