@dipscope/type-manager
Version:
Transform JSON strings or plain objects into JS class instances.
325 lines • 10.8 kB
TypeScript
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