import { IJsonSchemaSerializer } from './IJsonSchemaSerializer'; import { ISerializeOptions } from '../serializer/ISerializeOptions'; import { IPropertyRef } from '../../api/IPropertyRef'; import { IClassRef } from "../../api/IClassRef"; export interface IJsonSchemaSerializeOptions extends ISerializeOptions { /** * Version of json schema */ version?: 'draft-07' | string; /** * If multiple schemas */ handleMultipleSchemas?: 'reference' | 'clone'; /** * If set then on entries with type object the class function will be passed under key $target * * { * title: 'TestClass', * type: 'object', * $target: ClassType * } */ appendTarget?: boolean; /** * Callback for postprocess */ postProcess?: (src: any, dst: any, serializer?: IJsonSchemaSerializer) => void; /** * Allow override of existing standard properties */ allowKeyOverride?: boolean; /** * Property keys where information can be skipped * Default if not set: ['type', '$ref', 'target', '$target','propertyName', 'metaType', 'namespace', 'name'] * See constant DEFAULT_KEY_TO_SKIP */ keysToSkip?: string[]; /** * By default options of reference properties are removed, to pass them set this to 'false'. */ deleteReferenceKeys?: boolean; /** * Passed method for type correction if necessary, else */ typeConversion?: (type: any, property: IPropertyRef) => string | null; /** * Passed method for type hint if necessary, else */ typeHint?: (klass: Function | IClassRef, propertyName: string, instance: any, value: any) => string; /** * Default type hint on null or undefined */ defaultTypeHint?: string; /** * Ignore unknown type */ ignoreUnknownType?: boolean; /** * Serialize only decorated properties (default is true) */ onlyDecorated?: boolean; /** * Add $namespace to schema */ appendNamespace?: boolean; /** * Check if kind of property should be serialized * * - check for property ref * - or klass + property name * */ allowedProperty?: (entry: IPropertyRef | string, klass?: Function) => boolean; }