alinea
Version:
Headless git-based CMS
19 lines (18 loc) • 762 B
TypeScript
import { Type } from './Type.js';
import type { RecordShape } from './shape/RecordShape.js';
export interface Schema<Definitions = {}> extends Record<string, Type> {
}
export declare namespace Schema {
function referencedViews(schema: Schema): Array<string>;
function validate(schema: Schema): void;
function shapes(schema: Schema): Record<string, RecordShape>;
function typeNames(schema: Schema): Map<Type, string>;
function contained(schema: Schema, contains: Array<string | Type>): Array<string>;
}
export interface SchemaTypes {
[key: string]: Type;
}
export interface SchemaOptions<Definition> {
types: Definition;
}
export declare function schema<Definition extends SchemaTypes>(options: SchemaOptions<Definition>): Definition;