@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_.
30 lines (23 loc) • 1.29 kB
text/typescript
import { ArtifactType, artifactTypes, ResultArtifactData, MarkdownArtifactData, Artifact, ArtifactData, TableArtifactData } from '@/models/Artifact'
import { isRecord } from '@/utilities/object'
export function isArtifactType<T extends ArtifactType>(artifact: Artifact, type: T): artifact is Artifact & { type: T } {
return artifact.type === type
}
export function isKnownArtifactType(type: unknown): type is ArtifactType & Exclude<ArtifactType, 'unknown'> {
return typeof type === 'string' && artifactTypes.includes(type as ArtifactType) && type !== 'unknown'
}
export function isResultArtifactData(data: ArtifactData): data is ResultArtifactData {
return typeof data === 'object'
}
export function isMarkdownArtifactData(data: ArtifactData): data is MarkdownArtifactData {
return typeof data === 'string'
}
export function isArrayOfMaps(data: unknown): data is Record<string, unknown>[] {
return Array.isArray(data) && data.every(row => isRecord(row))
}
export function isMapOfArrays(data: unknown): data is Record<string, unknown[]> {
return !!data && typeof data === 'object' && Object.values(data).every(row => Array.isArray(row))
}
export function isTableArtifactData(data: ArtifactData): data is TableArtifactData {
return isArrayOfMaps(data) || isMapOfArrays(data)
}