Entities used by the RESTful API for managing themes

Jens Pelzetter 2020-08-08 19:27:57 +02:00
parent 3551dd4b6d
commit 589ca1a2c6
1 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,67 @@
/**
* Entities used by the RESTful API for managing themes
* @packageDocumentation
*/
import {
LocalizedString,
assertProperties,
} from "@libreccm/ccm-apiclient-commons";
export interface ThemeInfo {
themeManifest: ThemeManifest;
version: ThemeVersion;
provider: string;
}
export interface ThemeManifest {
name: string;
type: string;
masterTheme: string;
title: LocalizedString;
description: LocalizedString;
defaultTemplate: string;
}
export enum ThemeVersion {
DRAFT,
LIVE,
}
export function buildThemeInfoFromRecord(
record: Record<string, unknown>
): ThemeInfo {
assertProperties(record, ["themeManifest", "version", "provider"]);
const themeManifest: ThemeManifest = buildThemeManifestFromRecord(
record.themeManifest as Record<string, unknown>
);
return {
themeManifest,
version: record.version as ThemeVersion,
provider: record.provider as string,
};
}
export function buildThemeManifestFromRecord(
record: Record<string, unknown>
): ThemeManifest {
assertProperties(record, [
"name",
"type",
"masterTheme",
"title",
"description",
"defaultTemplate",
]);
return {
name: record.name as string,
type: record.type as string,
masterTheme: record.masterTheme as string,
title: record.title as LocalizedString,
description: record.description as LocalizedString,
defaultTemplate: record.defaultTemplate as string,
};
}