UNPKG

@stackbit/sdk

Version:
173 lines (148 loc) 4.67 kB
import * as StackbitTypes from '@stackbit/types'; // re-export types for backward compatibility export type RawConfig = StackbitTypes.StackbitConfig; export { StackbitConfig, Import, ContentfulImport, SanityImport, ContentModelMap, ContentModel, PresetSource, PresetSourceFiles, ModelsSource, ModelsSourceFiles, ModelsSourceContentful, ModelsSourceSanity, Field, FieldType, FieldSpecificProps, FieldCommonProps, FieldEnum, FieldImage, FieldNumber, FieldObject, FieldModel, FieldReference, FieldStyle, FieldList, FieldListObject, FieldListModel, FieldListReference, FieldBasicProps, FieldEnumProps, FieldEnumDropdownProps, FieldEnumThumbnailsProps, FieldEnumPaletteProps, FieldEnumOptionValue, FieldEnumOptionObject, FieldEnumOptionThumbnails, FieldEnumOptionPalette, FieldImageProps, FieldNumberProps, FieldObjectProps, FieldGroupItem, FieldModelProps, FieldReferenceProps, FieldCrossReferenceProps, StyleProps, FieldStyleProps, FieldListProps, FieldListItems } from '@stackbit/types'; export interface StackbitConfigWithPaths extends StackbitTypes.StackbitConfig { dirPath: string; filePath: string; } export interface Config extends Omit<StackbitTypes.StackbitConfig, 'models' | 'customContentReload' | 'experimental' | 'sitemap'> { dirPath: string; filePath: string; models: Model[]; presets?: PresetMap; internalStackbitRunnerOptions?: SSGRunOptions; hcrHandled?: boolean; } export type PresetMap = Record<string, Preset>; export interface Preset { label: string; modelName: string; srcType: string; srcProjectId: string; thumbnail?: string; locale?: string; metadata: any; data: Record<string, any>; } export interface SSGRunOptions { displayName?: string; runCommand?: string; runArgs?: string[]; directPaths?: string[]; blockedPaths?: string[]; directRoutes?: Record<string, string>; proxyWebsockets?: boolean; triggerInstallFiles?: string[]; triggerRestartFiles?: string[]; appCopySkipFiles?: string[]; cacheDir?: string; envVars?: Record<string, any>; directChangeSocketOrigin?: boolean; directChangeOrigin?: boolean; patterns?: { doneStart?: string[]; errorState?: string[]; deletedPage?: string[]; }; patch?: (dir: string, updatedFiles: string[]) => Promise<void>; unpatch?: (dir: string, updatedFiles: string[]) => Promise<void>; postInstall?: (dir: string) => Promise<void>; } /****************************** *** Normalized Model Types *** ******************************/ export type Model = ObjectModel | DataModel | PageModel | ConfigModel; export type ObjectModel = StackbitTypes.ObjectModel & BaseModel; export type DataModel = DataModelSingle | DataModelList; export type PageModel = StackbitTypes.PageModel & BaseModel; export type ConfigModel = StackbitTypes.ConfigModel & BaseModel; export type ImageModel = { type: 'image'; name: '__image_model'; label?: string; labelField?: string; fields?: StackbitTypes.Field[]; source?: string; }; export interface DataModelSingle extends StackbitTypes.DataModel, BaseModel { isList?: false; } export interface DataModelList extends StackbitTypes.DataModel, BaseModel { isList: true; items: StackbitTypes.FieldListItems; } export type BaseModel = ModelMetadata & { presets?: string[] }; interface ModelMetadata { __metadata?: { filePath?: string; invalid?: boolean; }; } /*********************** *** Raw Model Types *** ***********************/ export type YamlModel = YamlObjectModel | YamlPageModel | YamlConfigModel | YamlDataModel; export type YamlModelMap = Record<string, YamlModel>; export interface YamlBaseModel extends Omit<StackbitTypes.ModelCommonFields, 'name'>, ModelMetadata { type: YamlModel['type']; } export interface YamlObjectModel extends Omit<StackbitTypes.ObjectModel, 'name'>, ModelMetadata {} export interface YamlPageModel extends Omit<StackbitTypes.PageModel, 'name'>, ModelMetadata {} export interface YamlConfigModel extends Omit<StackbitTypes.ConfigModel, 'name'>, ModelMetadata {} export type YamlDataModel = YamlDataModelSingle | YamlDataModelList; export interface YamlDataModelSingle extends Omit<StackbitTypes.DataModel, 'name'>, ModelMetadata { isList?: false; } export interface YamlDataModelList extends Omit<StackbitTypes.DataModel, 'name'>, ModelMetadata { isList: true; items: StackbitTypes.FieldListItems; }