@archer-edu/dxp-directus-cli
Version:
165 lines (164 loc) • 3.59 kB
TypeScript
import { Command } from "commander";
export type Item = {
id: string;
};
export type File = Item & {
title: string;
description: string;
type: string;
filename_disk: string;
filename_download: string;
};
export type Category = {
id?: number;
name: string;
site: string;
};
export type RemotePost = Item & {
site_id: string;
title: string;
description: string;
description_twitter: string;
description_facebook: string;
headline: string;
content: string;
slug: string;
published: string;
sources?: Array<{
text: string;
url: string;
}>;
image: File;
image_thumbnail?: File;
author: string;
tags: Array<{
site_entry_tags_id: {
id: number;
name: string;
};
}>;
categories: Array<{
site_entry_categories_id: {
name: string;
};
}>;
json_ld: string;
status: 'draft' | 'unapproved' | 'approved' | 'archived';
front_matter: string;
};
export type Post = {
content: string;
metadata: BlogFrontMatter;
sources?: Array<{
text: string;
url: string;
}>;
file_path: string;
};
export type BlogFrontMatter = FrontMatter & {
headline: string;
categories: Array<string>;
tags: Array<string>;
authors: Array<string>;
image?: {
src: string;
alt?: string;
};
image_thumbnail?: {
src: string;
alt?: string;
};
};
export type RemotePageKey = Item & {
id: string;
slug: string;
parent_page?: {
id: string;
slug: string;
};
};
export type RemotePage = RemotePageKey & {
title: string;
description: string;
content: string;
json_ld: string;
status: 'draft' | 'published' | 'archived';
front_matter: string;
sort: number;
date_created: string;
sources?: Array<{
text: string;
url: string;
}>;
sections: Array<PageSection>;
};
export type PageSection = Item & {
name: string;
page_id: string;
type?: 'section' | 'content';
section?: string;
style?: 'base' | 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
align?: 'left' | 'center' | 'right';
content?: string | boolean;
data?: string;
images?: Array<File & {
alt: string;
src: string;
}>;
image?: File & {
alt: string;
src: string;
};
items?: Array<PageSectionItem>;
source?: string;
path?: string;
sort: number;
};
export type PageSectionItem = Item & {
section: string;
item: string;
style?: string;
align?: string;
content?: string;
data?: string;
image?: File & {
alt: string;
src: string;
};
sort: number;
} & Record<string, any>;
export type FrontMatter = {
id: string;
title: string;
description: string;
slug?: string;
menu: string;
draft?: boolean;
json_id?: string;
published?: string;
url?: string;
sections?: Array<PageSection>;
} & Record<string, any>;
export type Page = {
content: string;
metadata: FrontMatter;
sources?: Array<{
text: string;
url: string;
}>;
file_path: string;
};
export type Site = {
blog: {
entries: Array<RemotePost>;
};
pages: Array<RemotePage>;
data_files: Array<SiteData>;
};
export type SiteData = {
id: string;
site: string;
filename: string;
data: string;
};
export type IRegisterCommand = (program: Command) => void;