@sanity/types
Version:
Type definitions for common Sanity data structures
47 lines (42 loc) • 1.21 kB
text/typescript
import {type AssetSource} from '../../../assets'
import {type Reference} from '../../../reference'
import {type RuleDef, type ValidationBuilder} from '../../ruleBuilder'
import {type InitialValueProperty} from '../../types'
import {type ObjectDefinition, type ObjectOptions} from './object'
/** @public */
export interface FileOptions extends ObjectOptions {
storeOriginalFilename?: boolean
accept?: string
sources?: AssetSource[]
}
/** @public */
export interface FileRule extends RuleDef<FileRule, FileValue> {
/**
* Require a file field has an asset.
*
* @example
* ```ts
* defineField({
* name: 'file',
* title: 'File',
* type: 'file',
* validation: (Rule) => Rule.required().assetRequired(),
* })
* ```
*/
assetRequired(): FileRule
}
/** @public */
export interface FileValue {
asset?: Reference
[index: string]: unknown
}
/** @public */
export interface FileDefinition
extends Omit<ObjectDefinition, 'type' | 'fields' | 'options' | 'groups' | 'validation'> {
type: 'file'
fields?: ObjectDefinition['fields']
options?: FileOptions
validation?: ValidationBuilder<FileRule, FileValue>
initialValue?: InitialValueProperty<any, FileValue>
}