UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

413 lines 15.2 kB
import { Alias } from './alias'; import { CustomKey } from './custom-key'; import { CustomOption } from './custom-option'; import { CustomValue } from './custom-value'; import { DefaultValue } from './default-value'; import { GenericArgument } from './generic-argument'; import { GenericMetadata } from './generic-metadata'; import { Metadata } from './metadata'; import { NamingConvention } from './naming-convention'; import { Nullable } from './nullable'; import { Optional } from './optional'; import { PropertyExtensionMetadata } from './property-extension-metadata'; import { PropertyExtensionMetadataCtor } from './property-extension-metadata-ctor'; import { PropertyExtensionOptions } from './property-extension-options'; import { PropertyName } from './property-name'; import { PropertyOptions } from './property-options'; import { PropertyState } from './property-state'; import { ResolvedPropertyState } from './property-states/resolved-property-state'; import { UnresolvedPropertyState } from './property-states/unresolved-property-state'; import { ReferenceHandler } from './reference-handler'; import { Serializer } from './serializer'; import { TypeArgument } from './type-argument'; import { TypeFn } from './type-fn'; import { TypeManager } from './type-manager'; import { TypeMetadata } from './type-metadata'; /** * Main class used to describe a certain property. * * @type {PropertyMetadata<TDeclaringObject, TObject>} */ export declare class PropertyMetadata<TDeclaringObject, TObject> extends Metadata { /** * Type metadata to which property metadata belongs to. * * @type {TypeMetadata<TDeclaringObject>} */ readonly declaringTypeMetadata: TypeMetadata<TDeclaringObject>; /** * Property name as declared in type. * * @type {PropertyName} */ readonly propertyName: PropertyName; /** * Normalized property name used for sorting. * * @type {PropertyName} */ readonly normalizedPropertyName: PropertyName; /** * Property options. * * @type {PropertyOptions<TObject>} */ private readonly propertyOptions; /** * Type function defined using reflect metadata. * * @type {Optional<TypeFn<TObject>>} */ private readonly reflectTypeFn; /** * Current property state. * * @type {PropertyState<TDeclaringObject, TObject>} */ private currentPropertyState; /** * Constructor. * * @param {TypeManager} typeManager Type manager. * @param {ReadonlyMap<Alias, TypeFn<any>>} typeFnMap Type function map for types with aliases. * @param {TypeMetadata<TDeclaringObject>} declaringTypeMetadata Type metadata to which property metadata belongs to. * @param {PropertyName} propertyName Property name. * @param {PropertyOptions<TObject>} propertyOptions Property options. */ constructor(typeManager: TypeManager, typeFnMap: ReadonlyMap<Alias, TypeFn<any>>, declaringTypeMetadata: TypeMetadata<TDeclaringObject>, propertyName: PropertyName, propertyOptions: PropertyOptions<TObject>); /** * Gets property state. * * @returns {PropertyState<TDeclaringObject, TObject>} Property state. */ get propertyState(): PropertyState<TDeclaringObject, TObject>; /** * Gets alias. * * @returns {Optional<Alias>} Alias or undefined. */ get alias(): Optional<Alias>; /** * Gets custom value map. * * @returns {ReadonlyMap<CustomKey<any>, CustomValue>} Custom value map. */ get customValueMap(): ReadonlyMap<CustomKey<any>, CustomValue>; /** * Gets serialized null value. * * @returns {Nullable<any>} Resolved serialized null value or undefined. */ get serializedNullValue(): Nullable<any>; /** * Gets serialized default value. * * @returns {Optional<any>} Resolved serialized default value or undefined. */ get serializedDefaultValue(): Optional<any>; /** * Gets deserialized null value. * * @returns {Nullable<any>} Resolved deserialized null value or undefined. */ get deserializedNullValue(): Nullable<any>; /** * Gets deserialized default value. * * @returns {Optional<any>} Resolved deserialized default value or undefined. */ get deserializedDefaultValue(): Optional<any>; /** * Gets serialized property name. * * @returns {string} Serialized property name. */ get serializedPropertyName(): string; /** * Gets deserialized property name. * * @returns {string} Deserialized property name. */ get deserializedPropertyName(): string; /** * Gets deserializable value. * * @returns {boolean} Deserializable indicator. */ get deserializable(): boolean; /** * Gets generic arguments. * * @returns {ReadonlyArray<GenericArgument<any>>} Generic arguments. */ get genericArguments(): ReadonlyArray<GenericArgument<any>>; /** * Gets generic metadatas. * * @returns {ReadonlyArray<GenericMetadata<any>>} Generic metadatas. */ get genericMetadatas(): ReadonlyArray<GenericMetadata<any>>; /** * Gets naming convention. * * @returns {Optional<NamingConvention>} Naming convention or undefined. */ get namingConvention(): Optional<NamingConvention>; /** * Gets reference handler. * * @returns {ReferenceHandler} Reference handler. */ get referenceHandler(): ReferenceHandler; /** * Gets serializable value. * * @returns {boolean} Serializable indicator. */ get serializable(): boolean; /** * Gets serializer. * * @returns {Serializer<TObject>} Serializer. */ get serializer(): Serializer<TObject>; /** * Gets type argument. * * @returns {TypeArgument} Type argument. */ get typeArgument(): TypeArgument<TObject>; /** * Gets type metadata. * * @returns {TypeMetadata<TObject>} Type metadata. */ get typeMetadata(): TypeMetadata<TObject>; /** * Gets indicator if null value should be preserved. * * @returns {boolean} True when null value should be preserved. False otherwise. */ get preserveNull(): boolean; /** * Gets indicator if default value should be used. * * @returns {boolean} Use default value indicator. */ get useDefaultValue(): boolean; /** * Gets indicator if implicit conversion should be used. * * @returns {boolean} Use implicit conversion indicator. */ get useImplicitConversion(): boolean; /** * Constructs initial property options by extending passed options * with default values if they are not overriden. All references are kept. * * @param {PropertyOptions<TObject>} propertyOptions Property options. * * @returns {PropertyOptions<TObject>} Constructed type options. */ private constructPropertyOptions; /** * Configures property extension metadata. * * @param {PropertyExtensionMetadataCtor<TPropertyExtensionMetadata, TPropertyExtensionOptions, TDeclaringObject, TObject>} propertyExtensionMetadataCtor Property extension metadata constructor. * @param {TPropertyExtensionOptions} propertyExtensionOptions Property extension options. * * @returns {TPropertyExtensionMetadata} Property extension metadata */ configurePropertyExtensionMetadata<TPropertyExtensionMetadata extends PropertyExtensionMetadata<TDeclaringObject, TObject, TPropertyExtensionOptions>, TPropertyExtensionOptions extends PropertyExtensionOptions>(propertyExtensionMetadataCtor: PropertyExtensionMetadataCtor<TPropertyExtensionMetadata, TPropertyExtensionOptions, TDeclaringObject, TObject>, propertyExtensionOptions?: TPropertyExtensionOptions): TPropertyExtensionMetadata; /** * Extracts property extension metadata. * * @param {PropertyExtensionMetadataCtor<TPropertyExtensionMetadata, TPropertyExtensionOptions, TDeclaringObject, TObject>} propertyExtensionMetadataCtor Property extension metadata constructor. * * @returns {Optional<TPropertyExtensionMetadata>} Property extension metadata or undefined. */ extractPropertyExtensionMetadata<TPropertyExtensionMetadata extends PropertyExtensionMetadata<TDeclaringObject, TObject, TPropertyExtensionOptions>, TPropertyExtensionOptions extends PropertyExtensionOptions>(propertyExtensionMetadataCtor: PropertyExtensionMetadataCtor<TPropertyExtensionMetadata, TPropertyExtensionOptions, TDeclaringObject, TObject>): Optional<TPropertyExtensionMetadata>; /** * Extracts property extension metadata ctor set from custom value map. * * @returns {Set<PropertyExtensionMetadataCtor<any, any, any, any>>} Property extension metadata ctor set. */ private extractPropertyExtensionMetadataCtorSet; /** * Resolves property state. * * Calling this method has side effects by recomputing property state. If you need current * type state then use provided getter for that. * * @returns {ResolvedPropertyState<TDeclaringObject, TObject>} Resolved property state. */ resolvePropertyState(): ResolvedPropertyState<TDeclaringObject, TObject>; /** * Unresolves property state. * * Calling this method has side effects by resetting property state. * * @returns {UnresolvedPropertyState<TDeclaringObject, TObject>} Unresolved property state. */ unresolvePropertyState(): UnresolvedPropertyState<TDeclaringObject, TObject>; /** * Resolves custom value map the same way as it is done for the main options. * * @returns {ReadonlyMap<CustomKey<any>, CustomValue>} Resolved custom value map. */ private resolveCustomValueMap; /** * Configures alias. * * @param {Optional<Alias>} alias Alias or undefined. * * @returns {this} Current instance of property metadata. */ hasAlias(alias: Optional<Alias>): this; /** * Configures custom value map. * * @param {Optional<Map<CustomKey<any>, CustomValue>>} customValueMap Custom value map or undefined. * * @returns {this} Current instance of property metadata. */ hasCustomValueMap(customValueMap: Optional<Map<CustomKey<any>, CustomValue>>): this; /** * Configures custom value. * * @param {CustomKey<TCustomValue>} customKey Custom key. * @param {TCustomValue} customValue Custom value. * * @returns {this} Current instance of property metadata. */ hasCustomValue<TCustomValue>(customKey: CustomKey<TCustomValue>, customValue: TCustomValue): this; /** * Extracts value by custom key. * * @param {CustomKey<TCustomValue>} customKey Custom key. * * @returns {TCustomValue} Custom value. */ extractCustomValue<TCustomValue>(customKey: CustomKey<TCustomValue>): TCustomValue; /** * Configures custom options. * * @param {ReadonlyArray<CustomOption>} customOptions Custom options. * * @returns {this} Current instance of property metadata. */ hasCustomOptions(customOptions: ReadonlyArray<CustomOption>): this; /** * Configures default value. * * @param {DefaultValue} defaultValue Default value. * * @returns {this} Current instance of property metadata. */ hasDefaultValue(defaultValue: DefaultValue): this; /** * Configures serialized default value. * * @param {DefaultValue} serializedDefaultValue Serialized default value. * * @returns {this} Current instance of property metadata. */ hasSerializedDefaultValue(serializedDefaultValue: DefaultValue): this; /** * Configures deserialized default value. * * @param {DefaultValue} deserializedDefaultValue Deserialized default value. * * @returns {this} Current instance of property metadata. */ hasDeserializedDefaultValue(deserializedDefaultValue: DefaultValue): this; /** * Configures deserializable. * * @param {boolean} deserializable Deserializable. * * @returns {this} Current instance of property metadata. */ isDeserializable(deserializable?: boolean): this; /** * Configures serializable. * * @param {boolean} serializable Serializable. * * @returns {this} Current instance of property metadata. */ isSerializable(serializable?: boolean): this; /** * Configures generic arguments. * * @param {Optional<Array<GenericArgument<any>>>} genericArguments Generic arguments or undefined. * * @returns {this} Current instance of property metadata. */ hasGenericArguments(genericArguments: Optional<Array<GenericArgument<any>>>): this; /** * Configures naming convention. * * @param {Optional<NamingConvention>} namingConvention Naming convention or undefined. * * @returns {this} Current instance of property metadata. */ hasNamingConvention(namingConvention: Optional<NamingConvention>): this; /** * Configures reference handler. * * @param {Optional<ReferenceHandler>} referenceHandler Reference handler or undefined. * * @returns {this} Current instance of property metadata. */ hasReferenceHandler(referenceHandler: Optional<ReferenceHandler>): this; /** * Configures serializer. * * @param {Optional<Serializer<TObject>>} serializer Serializer or undefined. * * @returns {this} Current instance of property metadata. */ hasSerializer(serializer: Optional<Serializer<TObject>>): this; /** * Configures type argument. * * @param {Optional<TypeArgument<TObject>>} typeArgument Type argument or undefined. * * @returns {this} Current instance of property metadata. */ hasTypeArgument(typeArgument: Optional<TypeArgument<TObject>>): this; /** * Configures preserve null. * * @param {boolean} preserveNull Preserve null. * * @returns {this} Current instance of property metadata. */ shouldPreserveNull(preserveNull?: boolean): this; /** * Configures use default value. * * @param {boolean} useDefaultValue Use default value. * * @returns {this} Current instance of property metadata. */ shouldUseDefaultValue(useDefaultValue?: boolean): this; /** * Configures use implicit convertion. * * @param {boolean} useImplicitConversion Use implicit convertion. * * @returns {this} Current instance of property metadata. */ shouldUseImplicitConversion(useImplicitConversion?: boolean): this; /** * Configures property metadata based on provided options. * * @param {PropertyOptions<TObject>} propertyOptions Property options. * * @returns {this} Current instance of property metadata. */ configure(propertyOptions: PropertyOptions<TObject>): this; } //# sourceMappingURL=property-metadata.d.ts.map