@stackbit/sdk
Version:
173 lines (148 loc) • 4.67 kB
text/typescript
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;
}