UNPKG

@jungvonmatt/sb-migrate

Version:

CLI tool for managing Storyblok schema and content migrations

111 lines (110 loc) 3.95 kB
import { MigrationFn } from "../utils/migration"; import { IComponentSchemaItem } from "./IComponent"; import { IPendingDataSourceEntry } from "./IDataSource"; import { IStoryContent } from "./stories"; export type MigrationType = "create-component-group" | "update-component-group" | "delete-component-group" | "create-component" | "update-component" | "delete-component" | "create-story" | "update-story" | "delete-story" | "create-datasource" | "update-datasource" | "delete-datasource" | "transform-entries"; export type ComponentGroupMigration = { name: string; uuid?: string; }; export type ComponentMigration = { name: string; display_name?: string; is_root?: boolean; is_nestable?: boolean; component_group_name?: string; schema: Record<string, IComponentSchemaItem>; tabs?: Record<string, string[]>; }; export type StoryMigration = { name: string; slug?: string; parent_id?: number; content: IStoryContent; publish?: boolean; release_id?: number; lang?: string; }; export type DatasourceMigration = { name: string; slug: string; }; export type DatasourceEntryMigration = { datasource_id: number | string; name: string; value: string; dimension_value?: string; }; export interface RunOptions { dryRun?: boolean; space?: string; token?: string; publish?: "all" | "published" | "published-with-changes"; languages?: string; throttle?: number; } export interface BaseMigration { type: MigrationType; description?: string; } export interface CreateComponentGroupMigration extends BaseMigration { type: "create-component-group"; groups: ComponentGroupMigration[]; } export interface UpdateComponentGroupMigration extends BaseMigration { type: "update-component-group"; id: number | string; group: ComponentGroupMigration; } export interface DeleteComponentGroupMigration extends BaseMigration { type: "delete-component-group"; id: number | string; } export interface CreateComponentMigration extends BaseMigration { type: "create-component"; schema: ComponentMigration; } export interface UpdateComponentMigration extends BaseMigration { type: "update-component"; schema: Partial<ComponentMigration>; } export interface DeleteComponentMigration extends BaseMigration { type: "delete-component"; name: string; } export interface CreateStoryMigration extends BaseMigration { type: "create-story"; story: StoryMigration; } export interface UpdateStoryMigration extends BaseMigration { type: "update-story"; id: number | string; story: Partial<StoryMigration>; } export interface DeleteStoryMigration extends BaseMigration { type: "delete-story"; id: number | string; } export interface CreateDatasourceMigration extends BaseMigration { type: "create-datasource"; datasource: DatasourceMigration; entries?: Omit<IPendingDataSourceEntry, "datasource_id">[]; } export interface UpdateDatasourceMigration extends BaseMigration { type: "update-datasource"; id: number | string; datasource: Partial<DatasourceMigration>; entries?: Omit<IPendingDataSourceEntry, "datasource_id">[]; } export interface DeleteDatasourceMigration extends BaseMigration { type: "delete-datasource"; id: number | string; } export interface TransformEntriesMigration extends BaseMigration { type: "transform-entries"; component: string; transform: MigrationFn; publish?: "all" | "published" | "published-with-changes"; languages?: string; } export type Migration = CreateComponentGroupMigration | UpdateComponentGroupMigration | DeleteComponentGroupMigration | CreateComponentMigration | UpdateComponentMigration | DeleteComponentMigration | CreateStoryMigration | UpdateStoryMigration | DeleteStoryMigration | CreateDatasourceMigration | UpdateDatasourceMigration | DeleteDatasourceMigration | TransformEntriesMigration;