All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for polymorphic serialization based on interface types.
- Extraction of type extension metadata when it was not defined.
- Extraction of property extension metadata when it was not defined.
- Type extension metadata.
- Property extension metadata.
- Invalid ES5 lazy type resolvers.
- Strongly typed custom options.
- Performance improvements when using custom options.
- Old custom data option.
- Replace old custom data configurations with newly introduced strongly typed custom options.
- Fluent api for declarative configuration.
- Property metadata sorters.
- Inject metadata sorters.
- Stable json stringify and parse functions.
- Any and unknown type serializers.
- Modules support.
- Performance improvements.
- If property type argument is not configured then no error will be thrown and property will be serialized as unknown.
- Weak reference maps changed to regular maps to allow more extension points.
- Reference handler names to be more self descriptive.
- Replace old declarative configuration calls with newly introduced fluent api.
- You can still use raw declarative api through the options by adapting method calls.
- Preserve null option.
- Performance improvements.
- Simplify handling of object references inside serializers.
- Separate modules are now merged into one to reduce final application bundle size and simplify usage.
- Helper decorators as they silently increase final application bundle size and reduce performance on startup for the end user.
- Replace all separate module imports to
@dipscope/type-manager
. - Remove all helper decorators and use configure options with the same names from the main
Type
,Property
andInject
decorators.
- Moved source maps into separate file and reduced production bundle size.
- Getters for serialized and deserialized default value in metadata.
- Decorators and options to define serialized and deserialized default value explicitly.
- Set webpack global output object to
this
.
- Getters of serialized and deserialized property names for property metadata.
- Definition logic of serialized and deserialized property names from type serializer.
- Serialized property name was displayed in log messages.
- Used symbol instead of string based key to store type metadata.
- Avoid complete reset of custom data by providing
null
as argument. - Code style improvements.
- Custom data options are now behave like built in configure options.
- Path reference handler is now using path traversal instead of direct evaluation for resolving references.
- Polymorphic types support.
- Enums support.
- Accessors support.
- Multiple runtime configurations support.
- Newly introduced
TypeFn
is now used instead ofTypeCtor
in configure methods due to adding polymorphic types support. - Static methods of
TypeManager
now return static instance to enable method chaining.
- Replace
TypeCtor
withTypeFn
if you are using declarative configuration.
- Generics support.
- Circular object reference support.
- Short property declaration syntax.
- Naming convention support.
- Module separation.
- New set of serializers.
- Core types, interfaces and classes moved to a core module to keep main namespace clean.
- All decorators are now available from the main namespace.
- Invalid implicit conversion of boolean serializer.
- Properties were not assigned during deserialization if they already have initialized value.
- Multiple decorator and related options as they are no longer required.
- Replace all core type and interface imports from
@dipscope/type-manager
to@dipscope/type-manager/core
. - Replace all helper decorator imports from
@dipscope/type-manager/helpers
to@dipscope/type-manager
. - Change all places where
Property
decorator is used to declare an array of types to a proper generic variant. - If you are using
TypeSerializer
,TypeFactory
,TypeInjector
helper decorators or interfaces then rename them toSerializer
,Factory
,Injector
accordingly. - If you are using
typeAlias
ortypeResolver
property options replace them totypeArgument
.
- Improved type serializer context to avoid instance of call in serializers.
- Broken helpers module.
- Broken module resolvers.
- Broken imports from newly introduced namespaces.
- Dependency injection support.
- Immutable types support.
- Type hint support.
- Custom data support.
- Type serializer now an inteface.
- Some helper decorators renamed to match option names.
- Helper decorators moved to their own namespace.
- Replace extension with implementation for custom type serializers.
- If your custom serializers uses implicit conversion make it part of the serialize and deserialize methods. You can check if it should be used based on newly introduced serializer context.
- If you are using
Serializer
helper decorator then rename it toTypeSerializer
. - For all helper decorators change imports to
@dipscope/type-manager/helpers
. Now they are located in their own namespace.
- Type manager methods to configure each option individually.
- Type options were not applied after changes at runtime.
- Type error when trying to serialize and deserialize object with null values.
- Explicit deserialization of properties.
- Broken exports for browser based applications.
- Multiple property option to indicate that certain property is an array when using without reflect metadata.
- Type extraction using reflect metadata.
- Global type options.
- Default value definition for types and properties.
- Implicit conversion for types and properties.
- Type manager stringify and parse methods for working with JSON.
- Type manager for serializing and deserializing objects.
- Decorator annotations for type and property metadata.
- Declarative configuration for type and property metadata.
- Custom serializer support.
- Reflect metadata support.