@ngtools/json-schema
Version:
Schema validating and reading for configurations, similar to Angular CLI config.
141 lines (140 loc) • 5.47 kB
TypeScript
import { JsonSchemaErrorBase } from './error';
import { Serializer } from './serializer';
import { SchemaNode, TypeScriptType } from './node';
export declare class InvalidSchema extends JsonSchemaErrorBase {
}
export declare class InvalidValueError extends JsonSchemaErrorBase {
}
export declare class MissingImplementationError extends JsonSchemaErrorBase {
}
export declare class SettingReadOnlyPropertyError extends JsonSchemaErrorBase {
}
export declare class InvalidUpdateValue extends JsonSchemaErrorBase {
}
export interface Schema {
[key: string]: any;
}
/** This interface is defined to simplify the arguments passed in to the SchemaTreeNode. */
export declare type TreeNodeConstructorArgument<T> = {
parent?: SchemaTreeNode<T>;
name?: string;
value: T;
forward?: SchemaTreeNode<any>;
schema: Schema;
};
/**
* Holds all the information, including the value, of a node in the schema tree.
*/
export declare abstract class SchemaTreeNode<T> implements SchemaNode {
protected _parent: SchemaTreeNode<any>;
protected _defined: boolean;
protected _dirty: boolean;
protected _schema: Schema;
protected _name: string;
protected _value: T;
protected _forward: SchemaTreeNode<any>;
constructor(nodeMetaData: TreeNodeConstructorArgument<T>);
dispose(): void;
readonly defined: boolean;
dirty: boolean;
readonly value: T;
readonly abstract type: string;
readonly abstract tsType: TypeScriptType;
abstract destroy(): void;
readonly abstract defaultValue: any | null;
readonly name: string;
readonly readOnly: boolean;
readonly frozen: boolean;
readonly description: any;
readonly required: boolean;
isChildRequired(_name: string): boolean;
readonly parent: SchemaTreeNode<any>;
readonly children: {
[key: string]: SchemaTreeNode<any>;
} | null;
readonly items: SchemaTreeNode<any>[] | null;
readonly itemPrototype: SchemaTreeNode<any> | null;
abstract get(): T;
set(_v: T, _init?: boolean, _force?: boolean): void;
isCompatible(_v: any): boolean;
abstract serialize(serializer: Serializer): void;
protected static _defineProperty<T>(proto: any, treeNode: SchemaTreeNode<T>): void;
}
/** Base Class used for Non-Leaves TreeNode. Meaning they can have children. */
export declare abstract class NonLeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
dispose(): void;
get(): T;
destroy(): void;
protected _createChildProperty<T>(name: string, value: T, forward: SchemaTreeNode<T>, schema: Schema, define?: boolean): SchemaTreeNode<T>;
}
export declare class OneOfSchemaTreeNode extends NonLeafSchemaTreeNode<any> {
protected _typesPrototype: SchemaTreeNode<any>[];
protected _currentTypeHolder: SchemaTreeNode<any> | null;
constructor(metaData: TreeNodeConstructorArgument<any>);
_set(v: any, init: boolean, force: boolean): void;
set(v: any, _init?: boolean, force?: boolean): void;
get(): any;
readonly defaultValue: any | null;
readonly defined: boolean;
readonly items: SchemaTreeNode<any>[];
readonly type: string;
readonly tsType: null;
serialize(serializer: Serializer): void;
}
/** A Schema Tree Node that represents an object. */
export declare class ObjectSchemaTreeNode extends NonLeafSchemaTreeNode<{
[key: string]: any;
}> {
protected _children: {
[key: string]: SchemaTreeNode<any>;
};
protected _frozen: boolean;
constructor(metaData: TreeNodeConstructorArgument<any>);
_set(value: any, init: boolean, force: boolean): void;
set(v: any, force?: boolean): void;
readonly frozen: boolean;
readonly children: {
[key: string]: SchemaTreeNode<any>;
} | null;
readonly type: string;
readonly tsType: ObjectConstructor;
readonly defaultValue: any | null;
isCompatible(v: any): boolean;
isChildRequired(name: string): boolean;
serialize(serializer: Serializer): void;
}
/** A Schema Tree Node that represents an array. */
export declare class ArraySchemaTreeNode extends NonLeafSchemaTreeNode<Array<any>> {
protected _items: SchemaTreeNode<any>[];
protected _itemPrototype: SchemaTreeNode<any>;
constructor(metaData: TreeNodeConstructorArgument<Array<any>>);
_set(value: any, init: boolean, _force: boolean): void;
set(v: any, init?: boolean, force?: boolean): void;
isCompatible(v: any): boolean;
readonly type: string;
readonly tsType: ArrayConstructor;
readonly items: SchemaTreeNode<any>[];
readonly itemPrototype: SchemaTreeNode<any>;
readonly defaultValue: any | null;
serialize(serializer: Serializer): void;
}
/**
* The root class of the tree node. Receives a prototype that will be filled with the
* properties of the Schema root.
*/
export declare class RootSchemaTreeNode extends ObjectSchemaTreeNode {
constructor(proto: any, metaData: TreeNodeConstructorArgument<Object>);
}
/** A leaf in the schema tree. Must contain a single primitive value. */
export declare abstract class LeafSchemaTreeNode<T> extends SchemaTreeNode<T> {
protected _default: T;
constructor(metaData: TreeNodeConstructorArgument<T>);
get(): any;
set(v: T, init?: boolean, force?: boolean): void;
destroy(): void;
readonly defaultValue: T;
readonly hasDefault: boolean;
abstract convert(v: any): T;
abstract isCompatible(v: any): boolean;
serialize(serializer: Serializer): void;
}