@croct/content-model
Version:
A library for modeling, validating and interpolating structured content.
40 lines (39 loc) • 1.15 kB
TypeScript
import { ContentDefinitionBundle } from '../definition';
/**
* A code generator.
*
* @typeParam T The generator parameters.
*/
export interface CodeGenerator<P extends any[] = []> {
generate(...args: P): string;
}
/**
* A collection of versioned content definition bundles.
*/
export type ContentDefinitionCollection<O extends Record<string, any> = Record<string, any>, B extends Record<string, any> = Record<string, any>> = {
[collection: string]: Omit<O, 'definition'> & {
definitions: {
[id: string]: {
[version: string]: B & ContentDefinitionBundle;
};
};
};
};
/**
* The input of a definition-based code generator.
*/
type Definition = ContentDefinitionBundle | ContentDefinitionCollection;
/**
* A definition-based code generator.
*/
export interface DefinitionBasedGenerator<T extends Definition> extends CodeGenerator<[T]> {
/**
* Generates code based on the given definition.
*
* @param definition The definition for which to generate code.
*
* @returns The generated code.
*/
generate(definition: T): string;
}
export {};