v1.2

v1.2.5

Improvements

  • DataTable now accepts sort component
  • Select component now supports NoFloatLabel property
  • ComponentDescriptor<T> now has Override(...) method to allow overriding existing components
    • IComponentDescriptor and ComponentDescriptor<T> now allows Type to be set after its initialization
    • ComponentDescriptor<T> now allows Schema to be set after its initialization

v1.2.4

Improvements

  • Add implicit string conversion to Id

Bugfixes

  • Remove target parameter and move id parameters to their own parameter name in action model

v1.2.3

Improvements

  • Generic support for the data drill of below componets are added
    • ParameterSelect and ParameterSelectButton, default is InlineData
    • TypeFieldset and MethodDataTable, default is RemoteData
  • Data drill has become optional for TypeFieldset and MethodDataTable
  • Non-public initializers were causing rich transients not to be recognized, fixed
  • Posting selected value as object in Select and SelectButton is now available via TargetProp
  • ISelect component interface is provided for both Select and SelectButton to configure them at once through a parent configuration such as Input
  • Select now provides Filter
  • Data convention for locatables under Fieldset is now added

v1.2.2

Improvements

  • InputText and Text components were not created for nullable value types, fixed

v1.2.1

Improvements

  • DataTable now supports server side pagination via ServerPaginator
  • DataTable frozen columns had wrong z-index, fixed
  • LabelCodingStyle now supports value types in addition to string properties
  • entityType renamed to locatableType in TryGetLocatableType extension

v1.2.0

This release brings major improvements on the backend side. Although there seems a lot of breaking changes occured, we expect an easier transition compared for v1.1.x -> v1.2.0 than v1.0.x -> v1.1.0. Most breaking changes are about moving around attributes and conventions and renaming, and adding minor changes to what already existed, except Guid Id -> Id Id transition and computedSync -> computed migration. Please read the breaking changes carefully and one by one to complete a smooth migration.

Features

  • IdCodingStyle feature is now added which configures primary key and foreign key references for entities
    • A property with Baked.Business.Id type is required for a property to be configured as primary key
    • Id can be mapped as Generated, AutoIncrement or Assigned
  • LocatableCodingStyle feature is now added which manages binding of locatable transients
  • ILocator<> generic interface is now introduced for configuring locators for RichTransient and Entity types and their extensions
  • QueryCodingStyle feature is now added to find and mark query classes of locatables
  • UniqueCodingStyle feature is now added that adds unique attribute to properties with a SingleBy... or AnyBy... query
  • ValueTypeCodingStyle feature is now added that allows defining value types which gets automatically mapped to string db columns and gets parsed in api endpoints
  • ClientCodingStyle feature is now added that identifies client interfaces, removes controller for their implementations and add singleton mock automatically

Improvements

  • Computed data and composite data now support sync load
    • If there is no async in the parts of composite data, it performs a sync load
    • Computed data does a sync load unless specified otherwise
  • IData now has a IsAsync property
    • It is set to true in RemoteData
    • It is set to false in InlineData and ContextData
    • In CompositeData, it is set to false if all of the parts are not async
    • In ComputedData, it is set to false value unless it is provided externally or Options is async
  • Datas.Composables now provide UseLoginRedirect extension
  • useDataMounter composable is now added for a more convenient data fetching
  • Default assignments in ui/*.cs components are removed, defaults are provided in components/*.vue components
  • Locatable domain objects were only supported in API parameters, now they are rendered as { id: "..." } in API record inputs as well
  • Relations of a locatable is rendered as a ref object { id: "...", label: "..." }
    • It includes id and all label properties
    • It works only for locatable relations, e.g., Child.Parent property will render only id and label properties of the parent
    • Any locatable under a record will include all of their properties, e.g., Child.ParentWrapper.Parent will render all properties of the parent
  • ExtendedContractResolver is added as a default contract resolver to allow customization of json serialization through RestApiLayer
  • Orm.UniqueAttribute is introduced in abstractions which causes AutoMapOrmFeature to set unique constraint for the properties that have it
  • DefaultThemeFeature now uses Text to render locatable properties
  • DataTableDefaultsUxFeature now uses label (or id) property to display locatable properties
  • DataTableDefaultsUxFeature now hides columns of the same type as the page
  • DataTable.Column now has Hidden property to hide it in front end without removing the column from descriptor
  • LabelsAreFrozenUxFeature (former DesignatedStringPropertiesAreLabelUxFeature) now sets order of label properties to -10 to have them before any other
  • Recipes now allow configuring coding styles that provide configuration
  • UseBuiltInTypesCodingStyleFeature adds Description for the default textPropertySuffixes configuration

Breaking Changes

  • All computeSync renamed to compute, in composables
  • IData now has a IsAsync property
  • create factory method of useEvents is now removed, you may use useEvents composable directly
  • Entity and rich transient domain objects are now rendered ID objects instead of ID strings in API endpoints
    • E.g., for a method like public void Sample(Entity entity);
      • Request object was { "entityId": "..." },
      • Now it has become { "entity": { "id": "..." } }
  • AutoMapOrmFeature no longer configures Id properties and foreign keys
  • Id property type is now changed from System.Guid to Baked.Business.Id
    // not supported
    public Guid Id { get; set; }
    
    // use 'Baked.Business.Id'
    public Id Id { get; set; }
    
  • RichTransient feature now requires initializer to be with single parameter of Business.Id type and contain property with Business.Id type
    // not supported
    public RichTransient With(string id) { ... }
    
    // add 'Baked.Business.Id' property
    public Business.Id Id { get; set; }
    
    public RichTransient With(Id id) {
      Id = id;
    }
    
  • EntityExtensionViaComposition coding style feature is renamed to LocatableExtension coding style feature
  • LocatableExtension (former: EntityExtensionViaComposition) feature now requires a property with Business.Id type
    // not supported
    Entity _entity = default!;
    
    internal EntityExtension With(Entity entity) { ... }
    
    // add 'Baked.Business.Id' property
    Entity _entity = default!;
    
    internal EntityExtension With(Entity entity) { ... }
    
    internal Business.Id Id => _entity.Id;
    
  • SingleByIdConvention is now moved to LocatableCodingStyle feature
  • SingleById and ByIds are now removed from IQueryContext, inject ILocator<> to get entities by id/ids
    // not supported
    IQueryContext<Entity>.SingleById(id);
    
    // add 'Baked.Business.Id' property
    ILocator<Entity>.Locate(id);
    
  • SingleById convention is renamed to AddLocateAction
  • AddLocateAction (former: SingleById) convention now requires Locatable type instead of Query type
    // previous usage
    builder.Conventions.AddSingleById<Entities>();
    
    // use locatable type instead
    builder.Conventions.AddLocateAction<Entity>();
    
  • WithMethodCodingStyleFeature is now renamed to InitializableCodingStyleFeature
  • EntitySubclassViaCompositionCodingStyleFeature is renamed to EntitySubclassCodingStyleFeature
  • DesignatedStringPropertiesAreLabelUxFeature is now split into two, LabelCodingStyleFeature and LabelsAreFrozenUxFeature
  • LabelAttribute and QueryAttribute are moved to Baked.Business namespace
  • EntityAttribute.QueryType property is now removed, use LocatableAttribute.QueryType
    • This change allows query domain objets for any locatable domain object, such as rich transients
    • For this reason, the convention that sets QueryType for entities is now pushed from order 0 to order 30 to make sure all domain objects gets LocatableAttribute
    • If you have conventions that depend on query type of an entity or depend on TryGetQueryType extension, make sure you set its order after 30
  • TryGetEntityAttribute is removed, use TryGetLocatableAttribute
  • TryGetQueryContextType is now redundant and removed
  • Business.DomainAssemblies.Regexes is moved to CodingStyle.Query.Regexes

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Authentication.JwtBearer9.0.119.0.13
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.119.0.13
Microsoft.AspNetCore.Mvc.Testing9.0.119.0.13
Microsoft.Data.Sqlite.Core10.0.110.0.3
Microsoft.Extensions.Caching.Abstractions10.0.110.0.3
Microsoft.Extensions.Configuration.Abstractions10.0.110.0.3
Microsoft.Extensions.Configuration.Binder10.0.110.0.3
Microsoft.Extensions.FileProviders.Abstractions10.0.110.0.3
Microsoft.Extensions.Localization10.0.110.0.3
Microsoft.Extensions.Localization.Abstractions10.0.110.0.3
Microsoft.Extensions.Logging.Abstractions10.0.110.0.3
Microsoft.Extensions.TimeProvider.Testing10.1.010.3.0
MySql.Data9.5.09.6.0
NUnit3TestAdapter6.0.16.1.0
Oracle.ManagedDataAccess.Core23.26.023.26.100
System.IdentityModel.Tokens.Jwt8.15.08.16.0
npm PackageOld VersionNew Version
@nuxtjs/i18n10.2.110.2.3
@primeuix/themes2.0.22.0.3