UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

325 lines 10.8 kB
import { Discriminant } from './discriminant'; import { Discriminator } from './discriminator'; import { Factory } from './factory'; import { GenericMetadata } from './generic-metadata'; import { Injector } from './injector'; import { Logger } from './logger'; import { Nullable } from './nullable'; import { Optional } from './optional'; import { PropertyState } from './property-state'; import { ReferenceCallback } from './reference-callback'; import { ReferenceHandler } from './reference-handler'; import { ReferenceKey } from './reference-key'; import { ReferenceValue } from './reference-value'; import { ReferenceValueGetter } from './reference-value-getter'; import { ReferenceValueSetter } from './reference-value-setter'; import { Serializer } from './serializer'; import { TypeFn } from './type-fn'; import { TypeLike } from './type-like'; import { TypeMetadata } from './type-metadata'; import { TypeState } from './type-state'; /** * Serializer context of a certain type. * * @type {SerializerContext<TObject>} */ export declare class SerializerContext<TObject> { /** * Serializer context root. * * This is a value passed to the root serializer. * * @type {any} */ readonly $: any; /** * Reference map. * * Used to preserve object references. * * @type {Map<ReferenceKey, ReferenceValue>} */ readonly referenceMap: Map<ReferenceKey, ReferenceValue>; /** * Reference callback map. * * Used to assign object references in a later time due to circular dependency. * * @type {Map<ReferenceKey, Array<ReferenceCallback>>} */ readonly referenceCallbackMap: Map<ReferenceKey, Array<ReferenceCallback>>; /** * Parent serializer context. * * Present when any serializer defines child context. * * @type {Optional<SerializerContext<any>>} */ readonly parentSerializerContext: Optional<SerializerContext<any>>; /** * Json path key. * * @type {any} */ jsonPathKey: any; /** * Type state. * * @type {TypeState<TObject>} */ typeState: TypeState<TObject>; /** * Property state. * * @type {TypeState<TObject>} */ genericMetadatas: ReadonlyArray<GenericMetadata<any>>; /** * Property state. * * @type {Optional<PropertyState<any, TObject>>} */ propertyState: Optional<PropertyState<any, TObject>>; /** * Reference value setter. * * @type {Optional<ReferenceValueSetter>} */ referenceValueSetter: Optional<ReferenceValueSetter>; /** * Constructor. * * @param {any} $ Serializer context root. * @param {Map<ReferenceKey, ReferenceValue>} referenceMap Reference map. * @param {Map<ReferenceKey, Array<ReferenceCallback>>} referenceCallbackMap Reference callback map. * @param {Optional<SerializerContext<any>>} parentSerializerContext Parent serializer context. * @param {any} jsonPathKey Json path key. * @param {TypeState<TObject>} typeState Type state. * @param {ReadonlyArray<GenericMetadata<any>>} genericMetadatas Generic metadatas. * @param {Optional<PropertyState<any, TObject>>} propertyState Property state. * @param {Optional<ReferenceValueSetter>} referenceValueSetter Reference value setter. */ constructor($: any, referenceMap: Map<ReferenceKey, ReferenceValue>, referenceCallbackMap: Map<ReferenceKey, Array<ReferenceCallback>>, parentSerializerContext: Optional<SerializerContext<any>>, jsonPathKey: any, typeState: TypeState<TObject>, genericMetadatas: ReadonlyArray<GenericMetadata<any>>, propertyState: Optional<PropertyState<any, TObject>>, referenceValueSetter: Optional<ReferenceValueSetter>); /** * Gets json path from serializer context root. * * @returns {string} Json path. */ get jsonPath(): string; /** * 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 discriminant. * * @returns {Discriminant} Discriminant. */ get discriminant(): Discriminant; /** * Gets discriminator. * * @returns {Discriminator} Discriminator. */ get discriminator(): Discriminator; /** * Gets factory. * * @returns {Factory} Factory. */ get factory(): Factory; /** * Gets injector. * * @returns {Injector} Injector */ get injector(): Injector; /** * Gets logger. * * @returns {Logger} Logger instance. */ get logger(): Logger; /** * Gets indicator if context is polymorphic. * * @returns {boolean} True when context is polymorphic. False otherwise. */ get polymorphic(): boolean; /** * Gets indicator if discriminator should be preserved. * * @returns {boolean} True when discriminator should be preserved. False otherwise. */ get preserveDiscriminator(): boolean; /** * Gets reference handler. * * @returns {ReferenceHandler} Reference handler. */ get referenceHandler(): ReferenceHandler; /** * Gets serializer. * * @returns {Serializer<TObject>} Serializer. */ get serializer(): Serializer<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} True when type should use default value. False otherwise. */ get useDefaultValue(): boolean; /** * Gets indicator if implicit conversion should be used. * * @returns {boolean} True when type should use implicit conversion. False otherwise. */ get useImplicitConversion(): boolean; /** * Serializes provided value using context. * * @param {TypeLike<TObject>} x Some value. * * @returns {TypeLike<any>} Value serialized by context. */ serialize(x: TypeLike<TObject>): TypeLike<any>; /** * Deserializes provided value using context. * * @param {TypeLike<any>} x Some value. * * @returns {TypeLike<TObject>} Value deserialized by context. */ deserialize(x: TypeLike<any>): TypeLike<TObject>; /** * Defines reference. * * May be called during serialization to define reference. * * @param {ReferenceKey} referenceKey Reference key. * @param {ReferenceValueGetter} referenceValueGetter Reference value getter. * * @returns {ReferenceValue} Reference value. */ defineReference(referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue; /** * Restores reference. * * May be called during deserialization to restore reference. * * @param {ReferenceKey} referenceKey Reference key. * @param {ReferenceValueGetter} referenceValueGetter Reference value getter. * * @returns {ReferenceValue} Reference value. */ restoreReference(referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue; /** * Registers callback for provided reference key. * * May be called by reference handlers to register a callback resolver for a circular reference. * * @param {ReferenceKey} referenceKey Reference key. * * @returns {void} */ registerReferenceCallback(referenceKey: ReferenceKey): void; /** * Pushes callback for provided reference key. * * Called by reference handlers during handling of circular references. * * @param {ReferenceKey} referenceKey Reference key. * @param {ReferenceCallback} referenceCallback Reference callback. * * @returns {void} */ pushReferenceCallback(referenceKey: ReferenceKey, referenceCallback: ReferenceCallback): void; /** * Resolves callbacks for provided reference key. * * May be called by reference handlers when circular references can be resolved. * * @param {ReferenceKey} referenceKey Reference key. * * @returns {void} */ resolveReferenceCallbacks(referenceKey: ReferenceKey): void; /** * Defines child serializer context. * * Called by serializers on drill down. * * @returns {SerializerContext<any>} Child serializer context. */ defineChildSerializerContext(): SerializerContext<any>; /** * Defines generic serializer context. * * Called by serializers which work with generics. * * @param {number} genericIndex Generic index. * * @returns {SerializerContext<any>} Generic serializer context. */ defineGenericSerializerContext(genericIndex: number): SerializerContext<any>; /** * Defines polymorphic serializer context. * * Called by serializers which work with polymorphic types. * * @param {TypeFn<any>|Record<string, any>} x Type function or record. * * @returns {SerializerContext<any>} Polymorphic serializer context. */ definePolymorphicSerializerContext(x: TypeFn<any> | Record<string, any>): SerializerContext<any>; /** * Defines polymorphic serializer context by type function. * * @param {TypeFn<any>|Record<string, any>} x Type function or record. * * @returns {SerializerContext<any>} Polymorphic serializer context. */ private definePolymorphicSerializerContextByTypeFn; /** * Defines polymorphic serializer context by discriminant. * * @param {TypeFn<any>|Record<string, any>} x Type function or record. * * @returns {SerializerContext<any>} Polymorphic serializer context. */ private definePolymorphicSerializerContextByDiscriminant; } //# sourceMappingURL=serializer-context.d.ts.map