@jungvonmatt/sb-migrate
Version:
CLI tool for managing Storyblok schema and content migrations
111 lines (110 loc) • 3.95 kB
TypeScript
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;