@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_.
44 lines (33 loc) • 1.48 kB
text/typescript
import { isBlockDocumentReferenceValue } from '@/models/api/BlockDocumentCreateRequest'
import { SchemaResolver } from '@/services/schemas/resolvers/schemas'
import { getSchemaValueDefinition } from '@/services/schemas/utilities'
import { Schema, SchemaProperties, SchemaProperty } from '@/types'
import { mapValues } from '@/utilities/object'
export const schemaBlockReferenceDefaultValuesResolver: SchemaResolver = (schema: Schema): Schema => {
const { properties, ...rest } = schema
const resolved: Schema = rest
resolved.properties = resolveSchemaPropertyBlockReferenceDefaultValues(properties)
return resolved
}
function resolveSchemaPropertyBlockReferenceDefaultValues(properties: SchemaProperties | undefined): SchemaProperties | undefined {
if (!properties) {
return undefined
}
return mapValues(properties, (key, property) => resolveSchemaPropertyBlockReferenceDefaultValue(property))
}
function resolveSchemaPropertyBlockReferenceDefaultValue(property: SchemaProperty | undefined): SchemaProperty | undefined {
if (!property) {
return undefined
}
const resolved: SchemaProperty = { ...property }
if (isBlockDocumentReferenceValue(property.default)) {
const definition = getSchemaValueDefinition(property, property.default)
if (definition) {
resolved.default = {
blockDocumentId: property.default.$ref.block_document_id,
blockTypeSlug: definition.blockTypeSlug,
}
}
}
return resolved
}