Skip to main content

angel3_serialize_generator 10.0.0 copy "angel3_serialize_generator: ^10.0.0" to clipboard
angel3_serialize_generator: ^10.0.0 copied to clipboard

Angel3 model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling.

Change Log #

10.0.0 #

Breaking changes in 10.0.0 #

  • Breaking: No longer uses dart:mirrors: SerializableFieldMirror.serializer and deserializer are function names as Strings, where they were Symbols. The generated code is the same
  • Breaking: Generated hashCode getters use Object.hashAll instead of hashObjects; regenerate existing models
  • Breaking: A generated class is named by removing a modelPrefix (_, Entity), then a modelSuffix (Entity), matched by case: UserIdentity keeps its name, where it became UserId. The prefixes and suffixes are capitalised
  • Breaking: A value in includeAnnotations that is not a constant instance of a class or enum fails the build

Fixes in 10.0.0 #

  • Hash codes: List and Map fields are hashed by their length, so equal models have equal hash codes
  • Serializers: Serializable.serializers is read by enum value name, including from other constants; an unknown value is logged. The serializer class is generated only for map or json, and is a Codec only for map
  • Names: Generated classes and their serializers are named in pascal case everywhere (UrlSerializer of _URL), models refer to each other by their generated names, and two models of the same generated name fail the build
  • Types: Types are written with their import prefixes, nullability and type arguments, and fields of function or record types are generated, where any of these could fail the build or not compile
  • Annotations: Enum values and constants are generated as references, and keep their import prefixes
  • ORM: ShimFieldImpl makes its own member reference, so ORM models with @BelongsTo build with analyzer 14.5; ShimFieldImpl is deprecated
  • Dependencies: Removed quiver
  • Docs: The README tells how to install and use the package, and how to migrate from 9.x

9.1.0 #

  • Require Dart >= 3.13
  • Updated analyzer to 14.0.0

9.0.0 #

  • Require Dart >= 3.12
  • Updated analyzer to 13.0.0

8.8.0 #

  • Require Dart >= 3.9
  • Updated analyzer to 8.4.x
  • Updated build to 4.0.x
  • Updated source_gen to 4.0.0
  • Updated ShimFieldImpl
  • Removed ShimFieldImpl2

8.6.1 #

  • Updated TypeChecker.fromRuntime() to TypeChecker.typeNamed()

  • Removed ShimFieldImpl2

8.6.0 #

  • Require Dart >= 3.8.0
  • Updated lints to 6.0.0
  • Updated dependencies to the latest release
  • Updated analyzer to 7.7.x
  • Added ShimFieldImpl2 due to breaking changes in analyzer 7.7.x

8.5.0 #

  • Added support for Entity<Class> and <Class>Entity as data model

8.4.1 #

  • Fixed ShimFieldImpl due to breaking changes in analyzer 7.3.0

8.4.0 #

  • Require Dart >= 3.6
  • Updated lints to 5.x
  • Updated source_gen to 2.x
  • Updated analyzer to 7.x
  • Updated dependencies to the latest release
  • Updated ShimFieldImpl

8.3.1 #

  • Updated dependencies

8.3.0 #

  • Require Dart >= 3.3
  • Updated lints to 4.0.0

8.2.1 #

  • Updated repository link

8.2.0 #

  • Updated lints to 3.0.0
  • Fixed linter warnings

8.1.0 #

  • Upgraded to analyzer 6.2.x

8.0.1 #

  • Fixed JsonModelGenerator from generating duplicated fields
  • Fixed JsonModelGenerator to priortize id field as the first argument

8.0.0 #

  • Require Dart >= 3.0

7.2.0-beta.1 #

  • Require Dart >= 2.19
  • Fixed topMap incorrect return

7.1.0 #

  • Require Dart >= 2.18
  • Upgraded to analyzer 5.x.x
  • Replaced deprecated element2 with element

7.0.0 #

  • Require Dart >= 2.17
  • Fixed enum test cases
  • Resolved deprecated methods

6.1.1 #

  • Fixed issue #68: Support for non-nullable type

6.1.0 #

  • Updated to analyzer 4.x.x

6.0.0 #

  • Require Dart >= 2.16
  • Updated to analyzer 3.x.x
  • Fixed default value for List and Enum

5.0.0 #

  • Skipped release

4.3.0 #

  • Updated to use package:belatuk_code_buffer

4.2.0 #

  • Fixed toMap method generation for non nullable Map
  • Fixed fromMap method generation for non nullable Map
  • Updated linter to package:lints

4.1.2 #

  • Fixed toMap method generation
  • Fixed fromMape method generation
  • Fixed TypescriptBuilder
  • Updated generator to add const [] to List type args in the contructor
  • Updated generator to product non nullable aware code
  • Refactored away nullable code
  • Added logging to facilitate tracing the code generation via -verbose flag
  • Removed redudant null checking in the generated code

4.1.1 #

  • Fixed SerializerGenerator to recognize nullable class

4.1.0 #

  • Upgraded to support analyzer 2.0.0 major release

4.0.3 #

  • Added useNullSafetySyntax: true to DartEmitter
  • Fixed JsonModelGenerator class to produce correct NNBD code
    • Replaced @required with required
    • Fixed all none nullable field to be required in the constructor
    • Fixed generated methods to return the correct type
    • Fixed generated methods to be annnotated with override where applicable
    • Removed redundant null checking in the generated code

4.0.2 #

  • Fixed build.yaml to use angel3 packages
  • Updated README

4.0.1 #

  • Resolved static analysis warnings

4.0.0 #

  • Migrated to support Dart >= 2.12 NNBD
  • Importing Optional package is required for the ORM model

3.0.0 #

  • Migrated to work with Dart >= 2.12 Non NNBD

2.5.0 #

  • Support mutable models (again).
  • Use whereType() instead of chaining where() and cast().
  • Support pulling fields from parent classes and interfaces.
  • Only generate const constructors if all fields lack a setter.
  • Don't type-annotate initializing formals.

2.4.4 #

  • Remove unnecessary new and const.

2.4.3 #

  • Generate Codec and Converter classes.
  • Generate toString methods.
  • Include original documentation comments from the model.

2.4.2 #

  • Fix bug where enums didn't support default values.
  • Stop emitting @required on items with default values.
  • Create default @SerializableField for fields without them.

2.4.1+1 #

  • Change as Iterable<Map> to .cast<Map>.

2.4.1 #

  • Support serializesTo.
  • Don't emit @required if there is a default value.
  • Deprecate autoIdAndDateFields.

2.4.0 #

  • Introduce @SerializableField, and say goodbye to annotation hell.
  • Support custom (de)serializers.
  • Allow passing of annotations to the generated class.
  • Fixted TypeScript ref generator.

2.3.0 #

  • Add @DefaultValue support.

2.2.2 #

  • Split out TS def builder, to emit to source.

2.2.1 #

  • Explicit changes for assisting angel_orm_generator.

2.2.0 #

  • Build to cache.
  • Only generate one .g.dart file.
  • Support for Uint8List.
  • Use .cast() for Lists and Maps of non-Model types.

2.1.2 #

  • Add declare module to generated TypeScript files.

2.1.1 #

  • Generate hashCode.

2.1.0 #

  • Removed dependency on package:id.
  • Update dependencies for Dart2Stable.
  • jsonModelBuilder now uses SharedPartBuilder, rather than PartBuilder.

2.0.10 #

  • Generate XFields.allFields constant.
  • No longer breaks in cases where dynamic is present.
  • Call toJson in toMap on nested models.
  • Never generate named parameters from private fields.
  • Use the new @generatedSerializable to always find generated models.

2.0.9+4 #

  • Remove defaults in build.yaml.

2.0.9+3 #

  • Fix a cast error when self-referencing nested list expressions.

2.0.9+2 #

  • Fix previously unseen cast errors with enums.

2.0.9+1 #

  • Fix a cast error when deserializing nested model classes.

2.0.9 #

  • Upgrade to source_gen@^0.8.0.

2.0.8+3 #

  • Don't fail on null in toMap.
  • Support self-referencing via toJson().

2.0.8+2 #

  • Better discern when custom methods disqualify classes from const protection.

2.0.8+1 #

  • Fix generation of const constructors with iterables.

2.0.8 #

  • Now supports de/serialization of enum types.
  • Generate const constructors when possible.
  • Remove whereType, perform manual coercion.
  • Generate a fromMap with typecasting, for Dart 2's sake.

2.0.7 #

  • Create unmodifiable Lists and Maps.
  • Support @required on fields.
  • Affix an @immutable annotation to classes, if package:meta is imported.
  • Add /// <reference path="..." /> to TypeScript models.

2.0.6 #

  • Support for using abstract to create immutable model classes.
  • Add support for custom constructor parameters.
  • Closed ##21 - better naming of Map types.
  • Added overridden == operators.

2.0.5 #

  • Deserialization now supports un-serialized DateTime.
  • Better support for regular typed Lists and Maps in TypeScript.

2.0.4 #

  • Fields in TypeScript definitions are now nullable by default.

2.0.3 #

  • Added a TypeScriptDefinitionBuilder.

2.0.2 #

  • Generates an XFields class with the serialized names of all fields in a model class X.
  • Removed unnecessary named parameters from XSerializer.fromMap.

2.0.1 #

  • Ensured that List is only transformed if it generically references a Model.
2
likes
160
points
400
downloads

Documentation

API reference

Publisher

verified publisherdukefirehawk.com

Weekly Downloads

Angel3 model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling.

Homepage
Repository (GitHub)
View/report issues
Contributing

License

BSD-3-Clause (license)

Dependencies

analyzer, angel3_model, angel3_serialize, belatuk_code_buffer, build, build_config, code_builder, logging, meta, path, recase, source_gen

More

Packages that depend on angel3_serialize_generator