UNPKG

@stackbit/types

Version:

Types for Stackbit config and Content Source Interface

85 lines 2.47 kB
import { DocumentField, DocumentStringLikeFieldForType } from './content-source-document-fields'; import { DocumentPermissions } from './content-permissions'; export type TypeDocument = 'document'; export type DocumentStatus = 'added' | 'modified' | 'published' | 'deleted' | 'archived'; export interface Document<DocumentContext = unknown> { type: TypeDocument; id: string; manageUrl: string; modelName: string; status: DocumentStatus; createdAt: string; createdBy?: string; updatedAt: string; updatedBy?: string[]; locale?: string; fields: Record<string, DocumentField>; context: DocumentContext; hidden?: boolean; permissions?: DocumentPermissions; } export type DocumentWithSource = Document & { srcType: string; srcProjectId: string; }; export interface DocumentSpecifier { srcType: string; srcProjectId: string; srcDocumentId: string; omitFields?: boolean; } export type TypeAsset = 'asset'; export interface Asset<AssetContext = unknown> { type: TypeAsset; id: string; manageUrl: string; status: DocumentStatus; createdAt: string; createdBy?: string; updatedAt: string; updatedBy?: string[]; locale?: string; fields: AssetFields; context: AssetContext; hidden?: boolean; permissions?: DocumentPermissions; } export type AssetWithSource = Asset & { srcType: string; srcProjectId: string; }; export type AssetField = AssetFields[keyof AssetFields]; export type AssetFields = { [key in string]: DocumentStringLikeFieldForType<'string'> | DocumentStringLikeFieldForType<'text'> | AssetFileField; } & { title: DocumentStringLikeFieldForType<'string'>; } & { file: AssetFileField; }; /** * Asset "assetFile" field */ export type AssetFileField = AssetFileFieldLocalized | AssetFileFieldNonLocalized; export interface AssetFileFieldNonLocalized extends AssetFileFieldBase, AssetFileFieldProps { localized?: false; } export interface AssetFileFieldLocalized extends AssetFileFieldBase { localized: true; locales: Record<string, { locale: string; } & AssetFileFieldProps>; } export type AssetFileFieldBase = { type: 'assetFile'; }; export interface AssetFileFieldProps { url: string; fileName?: string; contentType?: string; size?: number; dimensions?: { width?: number; height?: number; }; } //# sourceMappingURL=content-source-document.d.ts.map