v0

v0.19

v0.19.3

Bugfixes

  • Paramaters was causing error when default is fetch remotely, fixed

v0.19.2

Improvements

  • Style improvement: PageTitle, bg-color, z-index
  • Nested types were causing compilation error in generated controllers when used as parameter or return type, fixed
  • Logo is now hidden during generate
  • UI generation can now be disabled to allow backend-only builds in docker
  • Improvement Parameters and QueryParameters component for number type behaviour
  • Expose ScrollTop component to ScrollTopOptions in DefaultLayout
  • Implement Id convention to properties

v0.19.1

Improvements

  • UI projects were not including styles in dev mode, fixed
    • Now only dependencies listed in vite.optimizeDeps.include setting are optimized, make sure you add the packages that need to be optimized

v0.19.0

Packages

This release introduces a package renaming and rebundling prior to v1.0;

  • Baked: The implementation package (previously Baked.Architecture and Baked.Recipe.Service)
  • Baked.Abstractions: The abstraction package (previously Baked.Service)
  • @mouseless/baked: The UI package (previously baked-recipe-admin)

Improvements

  • Renamed Service recipe as Monolith
  • ServiceNfr and ServiceSpec renamed as MonolithNfr and MonolithSpec respectively
  • UI components are moved from Baked.Theme.Default to Baked.Ui namespace
  • Convention extensions are standardized
    • whenType:, whenProperty:, whenMethod:, whenParameter: are all renamed as when: to match other convention extensions
    • apply: parameter in metadata configuration extensions are renamed as attribute: to match Set/Add
    • First parameter of when: in metadata configuration extensions is changed to context instead of attribute for consistency with other extensions
    • All metadata convention and configurations are renamed as attribute, e.g., SetTypeMetadata -> SetTypeAttribute
    • whenComponent: is renamed as where: for better readability
  • String UI component is renamed as Text
  • The add and set methods in Caster are made internal
  • RequestResponseExamples and RequestResponseExamplesData moved from Baked.Abstractions to Baked
  • primevue, primeicons and @primeuix/themes where bundled dependencies which was increasing the package size, fixed
  • Some primevue styles were not loading due to duplication caused by bundling, fixed
  • Lazy prefix in generated .baked/components.js are removed for simplicity
    • This is experimental and any issues will be fixed prior to v1.0

Library Upgrades

NuGet PackageOld VersionNew Version
BenchmarkDotNet0.15.20.15.4
Microsoft.AspNetCore.Authentication.JwtBearer9.0.99.0.10
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.99.0.10
Microsoft.AspNetCore.Mvc.Testing9.0.99.0.10
Microsoft.Data.Sqlite.Core9.0.99.0.10
Microsoft.Extensions.Caching.Abstractions9.0.99.0.10
Microsoft.Extensions.Configuration.Abstractions9.0.99.0.10
Microsoft.Extensions.Configuration.Binder9.0.99.0.10
Microsoft.Extensions.FileProviders.Abstractions9.0.99.0.10
Microsoft.Extensions.Localization9.0.99.0.10
Microsoft.Extensions.Localization.Abstractions9.0.99.0.10
Microsoft.Extensions.Logging.Abstractions9.0.99.0.10
Microsoft.Extensions.TimeProvider.Testing9.9.09.10.0
Microsoft.NET.Test.Sdk17.14.118.0.0
NHibernate5.5.35.6.0
NUnit3TestAdapter5.1.05.2.0
Npgsql9.0.39.0.4
Oracle.ManagedDataAccess.Core23.9.123.26.0
Swashbuckle.AspNetCore9.0.49.0.6
Swashbuckle.AspNetCore.Annotations9.0.49.0.6
npm PackageOld VersionNew Version
@nuxtjs/i18n10.1.010.1.1
@primeuix/themes1.2.31.2.5
primevue4.3.94.4.1

v0.18

v0.18.1

Bugfixes

  • Tabs indexes order correct order for showWhen

Improvements

  • Changed context functions naming conventions for provide and inject
  • Standardize all composables to use ({}) object pattern for better consistency
  • Implement TypeError case for client Error, ErrorPage
  • Add default param allowEmpty to false
  • IComponentDescriptor.Data is now settable
  • Package keys updated in locales
  • FirstProperty, FirstMethod and FirstParameter helper extensions added with their overload
  • DataTable and DataTable.Column drills fixed
  • GetListProperty and TryGetListProperty helper extensions added
  • The itemsProp is set in ObjectWithList data tables.
  • LabelAttribute added to builder's index property
  • All pages now have a margin at the bottom to avoid collision of scroll to top and data panels
npm PackageOld VersionNew Version
@nuxt/kit3.19.2removed

v0.18.0

Features

  • Beta features are available in Baked.Recipe.Service.Application;
    • Introducing UI Conventions: UiLayer and ThemeFeature now provides several conventions and extension methods to allow you to build your page descriptors via conventions instead of configuring them one by one
    • Introducing UX Features: many UxFeature implementations are provided to deliver built-in user experiences that leverage the new UI convention system

Improvements

  • AdminThemeFeature is renamed as DefaultThemeFeature to indicate that it serves as a base for other themes
  • Component initializers now have a schema: and optional data: function parameter, minimizing the need to duplicate schema properties in component initializers
  • ComponentDescriptor is removed, all components must have a schema now
    • Rate, Money, Number now have a component schema even if the schemas don't have any property
  • ComponentDescriptorAttribute<TSchema> is renamed as ComponentDescriptor<TSchema> and is not an attribute any more
    • To add metadata to a domain model use ComponentDescriptorBuilderAttribute and for schema parts use DescriptorBuilderAttribute
  • IPageSchema and PageSchemaBase are introduced to allow custom pages
  • ClientCache is now automatically mapped to RemoteData attributes
  • Add/remove metadata extensions are now available property, method and parameter as well
  • Domain model now respects AllowMultiple property of an attribute, allowing an attribute to be overriden when it is single instance attribute
    • Add{..}Metadata now only works for the attributes that have AllowMultiple set to true
    • Set{..}Metadata is now introduced to setting (or overriding) a single instance for the attributes that have AllowMultiple set to false
  • .baked/components.js now ensures components are sorted by name to make it easier to spot unexpected changes
  • AttributeCollection was not keeping the of attributes in the order they were added fixed

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Authentication.JwtBearer9.0.79.0.9
Microsoft.AspNetCore.Mvc.Testing9.0.79.0.9
Microsoft.Data.Sqlite.Core9.0.79.0.9
Microsoft.Extensions.Caching.Abstractions9.0.79.0.9
Microsoft.Extensions.Configuration.Abstractions9.0.79.0.9
Microsoft.Extensions.Configuration.Binder9.0.79.0.9
Microsoft.Extensions.FileProviders.Abstractions9.0.79.0.9
Microsoft.Extensions.Localization9.0.79.0.9
Microsoft.Extensions.Localization.Abstractions9.0.79.0.9
Microsoft.Extensions.TimeProvider.Testing9.7.09.9.0
Microsoft.Extensions.Logging.Abstractions9.0.79.0.9
MySql.Data9.3.09.4.0
Newtonsoft.Json13.0.313.0.4
NHibernate5.5.25.5.3
NHibernate.Extensions.Sqlite9.0.59.0.8
NUnit4.3.24.4.0
NUnit3TestAdapter5.0.05.1.0
SQLitePCLRaw.bundle_e_sqlite32.1.113.0.2
Swashbuckle.AspNetCore9.0.39.0.4
Swashbuckle.AspNetCore.Annotations9.0.39.0.4
System.IdentityModel.Tokens.Jwt8.12.18.14.0
npm PackageOld VersionNew Version
@nuxt/kit3.17.73.19.2
@nuxtjs/i18n10.0.110.1.0
@primeuix/themes1.2.11.2.3
primevue4.3.64.3.9

v0.17

v0.17.8

Improvements

  • Popover styles have been moved to the module
  • Page scroll has been moved from the article to the html element
  • Fix minor issues
    • Add padding top PageTitle to ensure space on mobile
    • Remove accidental horizontal scroll on ReportPage tabs

v0.17.7

Improvements

  • Failure to import app.json file with absolute path in Windows, fixed
  • Added useBreakpoints composable for media queries
  • All UI components are now responsive
    • PageTitle's description now shows info icon on mobile screens
    • PageTitle actions now shows popover on mobile screens
    • SideMenu component displays labels on larger screens
    • SideMenu component snaps to the bottom on mobile screens
    • DataPanel parameters now uses popover on mobile screens
    • DataTable disables the frozen option for mobile screens
    • DataTable paginator now becomes dropdown for mobile screens
    • LanguageSwitcher component displays labels on larger screens

v0.17.6

Bugfixes

  • Set the object value as the value for the page context key in the Select and Select Button components, fixed

Improvements

  • Remove localizeParameters from DataTable.Export and introduce a more generic parameterFormatter to allow any transformation to parameter value for the csv export file name
  • app.json is now imported automatically

v0.17.5

Improvements

  • Select and SelectButton components now add selected values to the page context
  • Bake.vue now provides data descriptor to the component, inject it using context.dataDescriptor()
  • useDataFetcher now provides a way to get parameter values from data descriptor via fetchParameters method
  • DataTable.vue now includes parameter values in export file names
  • RemoteData.Options has changed to RemoteData.Attributes to avoid confusion with ofetch's options parameter
  • The select input on the cache page was not working properly, improved
  • The QueryParameters component setDefaults was not working properly, improved
  • Clear cache on teardown was missing for InMemoryCachingFeature, fixed
  • Improved Layout, Input, MenuPage, ReportPage, QueryParameters, Parameters components watchers

v0.17.4

Bugfixes

  • Select and SelectButton was losing stateful selected value due to async data, fixed

v0.17.3

Bugfixes

  • DataTable was having a glitch due to awaiting composableResolver, fixed
  • DataTable was having a glitch with VirtualScroller, fixed
  • Revert .json file generation unix-style line endings

v0.17.2

Bugfixes

  • useFormat was causing error due to misuse of useI18n in useLocalization, fixed

v0.17.1

Improvements

  • UI wasn't using default locale as a fallback, fixed
  • DataTable export file name and export button label wasn't using localization, fixed
  • useFormat wasn't using locale info from i18n, fixed
  • locale.en.restext format wasn't supported for default language when generating missing keys, fixed
    • locale.en.{restext|json} is now the standard format for locale files, do NOT use locale.restext in backend
  • ServiceSpec and DataSourceSpec were missing localization feature, fixed
  • ILocalizer interface was removed, Baked.Service.Application now depend on Microsoft.AspNetCore.Localization and may use IStringLocalizer directly
  • ExceptionHandler wasn't setting details when there is no localizer, fixed
  • ExceptionHandler wasn't using localization for exception titles, fixed

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Localization2.3.0removed
Microsoft.Extensions.Localizationnew9.0.7
Microsoft.Extensions.Localization.Abstractionsnew9.0.7

v0.17.0

Features

  • Beta features are available in Baked.Recipe.Service.Application;
    • RateLimiter feature is now added with ConcurrencyLimiter implementation
    • Localization feature is now added
    • Caching.InMemory is introduced to allow you to cache data in memory for application-wide caching
  • Beta feature is available in baked-recipe-admin;
    • localization plugin has been introduced along with the useLocalization composable to manage texts according to culture.
    • cacheApplication and cacheUser plugins are introduced to cache api responses in local storage with a configured expiration value

Improvements

  • useFormat was clearing text when number has two trailing zeros, fixed
  • useFormat shorteners was not working for negative values, fixed
  • UiLayer now provides UsingLocaleTemplate and UsingLocalization helpers for adding and tracking locale keys for generated page descriptors
  • UI components from different page but same route was having state conflicts, fixed
  • Parameters component now emits onChanged before onReady to fix values inconsistency
  • Local storage was getting cleared on logout, fixed
  • Csv formatter now including column and row based format
  • .json file generation now uses unix-style line endings

Library Upgrades

NuGet PackageOld VersionNew Version
BenchmarkDotNet0.15.00.15.2
Microsoft.AspNetCore.Authentication.JwtBearer9.0.59.0.7
Microsoft.AspNetCore.Authentication.NewtonsoftJson9.0.59.0.7
Microsoft.AspNetCore.Authentication.Testing9.0.59.0.7
Microsoft.AspNetCore.Localizationnew2.3.0
Microsoft.Data.Sqlite.Core9.0.59.0.7
Microsoft.Extensions.Caching.Abstractions9.0.59.0.7
Microsoft.Extensions.Configuration.Abstractions9.0.59.0.7
Microsoft.Extensions.Configuration.Binder9.0.59.0.7
Microsoft.Extensions.FileProviders.Abstractions9.0.59.0.7
Microsoft.Extensions.Logging.Abstractions9.0.59.0.7
Microsoft.Extensions.TimeProvider.Testing9.5.09.7.0
Microsoft.NET.Test.Sdk17.13.017.14.1
NHibernate.Extensions.Sqlite9.0.29.0.5
Oracle.ManagedDataAccess.Core23.8.023.9.1
Swashbuckle.AspNetCore8.1.19.0.3
Swashbuckle.AspNetCore.Annotations8.1.19.0.3
System.IdentityModel.Tokens.Jwt8.10.08.12.1
npm PackageOld VersionNew Version
@nuxt/kit3.16.23.17.7
@nuxtjs/i18nnew10.0.1
@nuxtjs/tailwindcss6.13.26.14.0
@primeuix/themes1.1.11.2.1
primevue4.3.44.3.6

v0.16

v0.16.8

Improvements

  • Add decimal digits support for small numbers in Money and Number

v0.16.7

Improvements

  • DataTable now supports frozen columns and actions column is frozen by default
  • DataPanel onload scroll into view is now removed

v0.16.6

Improvements

  • DataTable styles were not loading due to an error in primevue, styles included in the package and fixed.
  • DataTableColumn now has alignRight: option
  • DataTable export button was added to last column, causing misalignment, fixed by adding actions column
  • DataTableColumn title was exported as label when no label was given, fixed
  • DataPanel autoscroll is triggered each time it is loaded

v0.16.5

Bugfixes

  • Select and SelectButton with async data was causing error upon reloading

v0.16.4

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Authentication.JwtBearer9.0.49.0.5
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.49.0.5
Microsoft.AspNetCore.Mvc.Testing9.0.49.0.5
Microsoft.CodeAnalysis.CSharp4.14.34.14.4
Microsoft.Data.Sqlite.Core9.0.49.0.5
Microsoft.Extensions.Caching.Abstractions9.0.49.0.5
Microsoft.Extensions.Configuration.Abstractions9.0.49.0.5
Microsoft.Extensions.Configuration.Binder9.0.49.0.5
Microsoft.Extensions.FileProviders.Abstractions9.0.49.0.5
Microsoft.Extensions.Logging.Abstractions9.0.59.0.5
Microsoft.Extensions.TimeProvider.Testing9.4.09.5.0
System.IdentityModel.Tokens.Jwt8.8.08.10.0
npm PackageOld VersionNew Version
@primeuix/themes1.0.31.1.1
primevue4.3.34.3.4

v0.16.3

Improvements

  • ReportContext was throwing error for null query parameters, fixed.
  • UI components now have context aware css marker classes to enable customization
  • PageTitle had a margin issue when description is mutline, fixed

v0.16.2

Improvements

  • ReportPage now offers a better full-screen rendering
    • DefaultLayout provides article overflow option in UI context
    • overflow is added to ReportPageTab to automatically enable article overflow when tab is selected
    • fullScreen is moved from ReportPageTabContent to ReportPageTab to manage both fullScreen and overflow together
    • ReportPage was rendering only first tab content when a tab is full-screen, now it renders all contents
  • DefaultLayout overflow was not hidden causing unintended scrolls, fixed
  • DataTable now has virtualScrollerOptions property for increasing performance when handling large amount of data

v0.16.1

Improvements

  • 500 responses from running backend were causing retry instead of redirecting to error page, fixed.
  • Menu sections have bigger fonts with more contrast for better readability
  • Filter input now gains focus automatically to filter menus without making an extra click
  • DataTable component now provides exporting its data in CSV format

v0.16.0

Features

  • Beta features are available in baked-recipe-admin;
    • Message component is with icon and severity support
    • Number component is introduced to display numbers in formatted with tooltips

Improvements

  • The QueryParameter component now supports subcomponents that manage its own default value. It can be managed with the defaultSelfManaged parameter.
  • Changed breadcrumb last item from <span> to link.
  • Removed DeclaredOnly binding flag from properties.
  • ConditionalComponent was renamed to Conditional and moved under the namespace Baked.Theme.Admin.
  • String component now has max length property, which will truncate the text ending with ellipsis and show full text with a tooltip
  • IReportContext, now allows nulls in parameter dictionary.
  • New ToBase64Url and FromBase64Url extensions added.
  • showUnhandled flag is added to exception handling, and enabled by default in staging environment
  • DataTable component now has footer support
  • DataTable component now has scrollable toggle

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Authentication.JwtBearer9.0.39.0.4
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.39.0.4
Microsoft.AspNetCore.Mvc.Testing9.0.39.0.4
Microsoft.Data.Sqlite.Core9.0.39.0.4
Microsoft.Extensions.Caching.Abstractions9.0.39.0.4
Microsoft.Extensions.Configuration.Abstractions9.0.39.0.4
Microsoft.Extensions.Configuration.Binder9.0.39.0.4
Microsoft.Extensions.FileProviders.Abstractions9.0.39.0.4
Microsoft.Extensions.Logging.Abstractions9.0.39.0.4
Microsoft.Extensions.TimeProvider.Testing9.3.09.4.0
MySql.Data9.2.09.3.0
Oracle.ManagedDataAccess.Core23.7.023.8.0
Swashbuckle.AspNetCore8.1.08.1.1
Swashbuckle.AspNetCore.Annotations8.1.08.1.1
System.IdentityModel.Tokens.Jwt8.7.08.8.0
npm PackageOld VersionNew Version
@nuxt/kit3.16.13.16.2
@primeuix/themes1.0.01.0.3

v0.15

v0.15.5

Improvements

  • MenuPage now supports sections
  • Filter is added to allow MenuPage to filter its links
  • Rich transients were causing build error when their initializer With is async, fixed
  • ActionModelAttribute now has a separate InvocationIsAsync and ReturnIsAsync to make it possible for the action to be async while its backing method is not

v0.15.4

Improvements

  • Baked.vue now has key attribute with loading as value

v0.15.3

Improvements

  • Header.vue loading skeleton height was different than loaded state, causing a flicker after page changes, fixed

Bugfixes

  • Bake.vue wasn't waiting for data to be set after loading false, causing component to render when data is null, fixed
  • InjectedData with prop value was causing error when data is still null, fixed

v0.15.2

Improvements

  • primevue is bundled again to solve dev mode style issue
  • DataTable now allows to define different components for the same column depending on a row value
  • Bake.vue now provides loading instead of passing it via props
  • Bake.vue now provides fetched data in InjectedData
  • InjectedData now supports prop to inject part of the data instead of the whole object

v0.15.1

Improvements

  • Add setupBaked plugin to module
  • Fix component styles in dev mode not working
  • Add support for subdirs in .baked pages
  • Add trailingSlash plugin to admin recipe
  • Auth plugin LoginPageRoute is now added to anonymous page routes automatically
  • Add Custom to Components helpers to create new ComponentDescriptor(...)
  • Data type of @default in Parameter is changed to IData
  • Fixed SelectButton and Select doesn't set selected when data is not Inline
  • Fixed DataPanel load title data

Library Upgrades

npm PackageOld VersionNew Version
vue-deepunref1.0.1removed

v0.15.0

Features

  • Beta features are available in baked-recipe-admin;
    • DataPanel is introduced where you can lazy load your data within a panel
      • Parameters is added to render input parameters in icon template of Panel
    • ErrorHandling plugin is introduced for handling errors and alert or full page error info display
    • ErrorPage schema is added to create descriptor for custom error page
    • DataTable page component is added
    • ReportPage schema is added to create report like pages
      • DeferredTabContent component is added to load tab contents lazily in report pages
      • QueryParameters component is added to render input parameters in actions template of PageTitle
    • Icon, Money, Rate, Link page components are added
    • useFormat composable is added for number formatting
    • Auth plugin is now introduced for authorized routing and requests with jwt support
    • AuthorizedContent component is now introduced for to display/hide content
    • Select input component is added
    • useQuery composable is added as a computed data to use query parameters in place for a data
      • When used in query data of a remote data, it forwards current page's all query parameters to a remote call, allowing to use an endpoint of a rich transient in a data panel
    • useContext composable is added to manage bake context in ui components
    • InjectedData is introduced for components to provide values, e.g. parameter data, to its child commponents
    • CompositeData is introduced to combine data from different sources
    • ModalLayout is introduced for pages like login
    • CustomPage is introduced to allow custom pages through baked ui
    • SelectButton input component is added
  • Beta features are available in Baked.Recipe.Service.Application;
    • Jwt authentication feature implementation is now added with JwtTokenBuilder implementation of ITokenBuilder service

Improvements

  • baked-recipe-admin package size is reduced
  • Remove bottom margin from PageTitle and add space between header and content in MenuPage
  • ComputedData now accepts args to be passed from backend to frontend
  • RemoteData now accepts query
  • Bake.vue now provides a baked component path under useContext().path() to be used as a unique key within a page
  • Bake.vue now manages loading state, making it possible for components to show a skeleton during loading
  • SideMenu, PageTitle, Header now supports skeleton
  • DetailPage and its conventions are removed
  • Layout now automatically resolves and changes the page layout when the page schema has layout property, which allows you to specify layout of a page through its descriptor from backend
  • baseURL and retryFetch are moved from baked.components.Bake to baked.composables.useDataFetcher to make them reusable across the project
  • route-params is removed from Page and fixed to baked, since there is no value in making that something configurable
  • Page and layout descriptors are now loaded in script setup to avoid flickers on page load

Library Upgrades

NuGet PackageOld VersionNew Version
FluentNHibernate3.4.03.4.1
Microsoft.AspNetCore.Authentication.JwtBearernew9.0.3
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.29.0.3
Microsoft.AspNetCore.Mvc.Testing9.0.29.0.3
Microsoft.Data.Sqlite.Core9.0.29.0.3
Microsoft.Extensions.Caching.Abstractions9.0.29.0.3
Microsoft.Extensions.Configuration.Abstractions9.0.29.0.3
Microsoft.Extensions.Configuration.Binder9.0.29.0.3
Microsoft.Extensions.FileProviders.Abstractions9.0.29.0.3
Microsoft.Extensions.Logging.Abstractions9.0.29.0.3
Microsoft.Extensions.TimeProvider.Testing9.2.09.3.0
NHibernate.Extensions.Sqlite9.0.19.0.2
SQLitePCLRaw.bundle_e_sqlite2.1.102.1.11
Swashbuckle.AspNetCore7.3.18.1.0
Swashbuckle.AspNetCore.Annotations7.3.18.1.0
System.IdentityModel.Tokens.Jwtnew8.7.0
npm PackageOld VersionNew Version
@nuxt/kit3.15.43.16.1
@nuxtjs/tailwindcss6.13.16.13.2
@primeuix/themesnew1.0.0
@primevue/themes4.2.5removed
async-mutexnew0.5.0
primevue4.2.54.3.3
vue-deepunrefnew1.0.1

v0.14

v0.14.1

Improvements

  • Overriding baked defaults in nuxt.config.ts was not possible, fixed
  • CopyComponentDescriptors property was causing error when not set, fixed
  • MenuPage now accepts any component in header

v0.14.0

Features

  • Beta features are available;
    • baked-recipe-admin npm package is released
    • UiLayer is added to Service recipe, you can now configure LayoutDescriptors and PageDescriptors in features
    • Theme feature is now added with Admin implementation with below component schemas
      • Layouts: DefaultLayout
      • Pages: DetailPage, MenuPage
      • Components: CardLink, Header, None, PageTitle, SideMenu, String
    • Binding feature is added with the default Rest implementation where all the rest api bindings are made for domain objects

Improvements

  • GeneratedFileDescriptor now has optional Outdir property
  • All API conventions are migrated to be domain model conventions making it possible to access final api model in domain model builder
  • CodeGenerationLayer now outputs the generated code next to the generated assembly to allow further investigation in case code is not generated as expected
  • CodeGenerationLayer now skips compiling code if no changes in generated code are detected

Library Upgrades

NuGet PackageOld VersionNew Version
Microsoft.AspNetCore.Mvc.NewtonsoftJson9.0.19.0.2
Microsoft.AspNetCore.Mvc.Testing9.0.19.0.2
Microsoft.CodeAnalysis.CSharp4.12.04.13.0
Microsoft.Data.Sqlite.Core9.0.19.0.2
Microsoft.Extensions.Caching.Abstraction9.0.19.0.2
Microsoft.Extensions.Configuration.Abstractions9.0.19.0.2
Microsoft.Extensions.Configuration.Binder9.0.19.0.2
Microsoft.Extensions.FileProviders.Abstractions9.0.19.0.2
Microsoft.Extensions.Logging.Abstractions9.0.19.0.2
Microsoft.Extensions.TimeProvider.Testing9.1.09.2.0
Microsoft.NET.Test.Sdk17.12.117.13.0
NHibernate.Extensions.Sqlite9.0.09.0.1
NUnitTestAdapter4.6.05.0.0
Npgsql9.0.29.0.3
Swashbuckle.AspNetCore7.2.07.3.1
Swashbuckle.AspNetCore.Annotations7.2.07.3.1
npm PackageOld VersionNew Version
@nuxt/kitnew3.15.4
@nuxtjs/tailwindcssnew6.13.1
@primevue/themesnew4.2.5
primeiconsnew7.0.0
primevuenew4.2.5

v0.13

v0.13.1

Bugfixes

  • Post build target for generating code was incorrect in .targets file, fixed

v0.13.0

.NET Upgrade

Baked now supports .NET 9! Below you can find a task list to upgrade your projects.

- [ ] Upgrade .NET and C## versions
  - [ ] in projects
  - [ ] in docker files
  - [ ] in GitHub workflows
- [ ] Upgrade Baked version
- [ ] You can use `GeneratedRegex`es in properties instead of methods
- [ ] If `Base64` encoded information is carried in the url, use `Base64Url`
- [ ] `params` arguments should be converted from arrays to `IEnumerable`
- [ ] Use the new linQ extensions(`CountBy`, `AggregateBy`,
  `Index<TSource>(IEnumerable<TSource>))`.
- [ ] Use new `TimeSpan.From*` overloads
  - `FromDays`
  - `FromHours`
  - `FromMinutes`
  - `FromSeconds`
  - `FromMilliseconds`
  - `FromMicroseconds`
- [ ] Use Keyed Services in Middlewares.
- [ ] Use semicolon instead of curly braces for empty class declarations
Upgrade .NET and C## versions
  • Upgrade the project's C# language to 13.
  • Framework version upgrade to net9.0 in the projects.
  • Framework and sdk version upgrade to 9 in Dockerfile.
  • Upgrade dotnet version 9 in Github actions.

Features

  • Application now provides Generate and Start modes which can be run both together or individually with distinct ApplicationContext's.
    • RunFlags is introduced for configuring application mode
  • LayerBase now provides GetGeneratePhases() method to enable registering specific phases to run at Generate mode
  • Service and Data Source recipes now triggers Generate mode run at post build
  • Domain layer's AddDomainTypes and BuildDomainModel phases now only runs in Generate mode
  • CodeGeneration layer's GenerateCode and Compile phases now only runs in Generate mode
  • CodeGeneration layer now introduces IGeneratedFileCollection which enables generating data files in Generate mode
  • CodeGeneration layer now introduces GeneratedContext at BuildConfiguration phase which provides access to generated assemblies and files in Start mode
  • Domain layer now provides a DomainServicesCollection configuration target in Generate mode which will then be used to generate IServiceAdder implementation

Improvements

  • CodeGeneration layer now compiles and saves generated assemblies and files to entry assembly location with ASPNETCORE_ENVIRONMENT subfolder
  • DomainAssemblies feature now generates
    • ICasterConfigurer implementations and
    • TagDescriptor
    • RequestResponseExample json files in Generate mode
  • AutoMapOrm feature now generates IServiceAdder implementations from DomainModel in Generate mode
  • GiveMe.PropertyOf<T> helper is renamed to ThePropertyOf<T>
  • GiveMe.MethodOf<T> helper is renamed to TheMethodOf<T>
  • Following features now use DomainServicesModel target to register services in Generate mode
    • Transient
    • Scoped
    • Singleton
  • GiveMe.PropertyOf<T> helper is renamed to ThePropertyOf<T>
  • GiveMe.MethodOf<T> helper is renamed to TheMethodOf<T>
  • Removed namespaces from SchemaId created in Swagger.
  • ProblemDetails feature now no longer searches domain assemblies and IExceptionHandler implementations are required to be added in ConfigurationOverrider feature
  • LayerConfigurator now provides Use<T> helper to use phase artifacts and no longer provides access to application context

Library Upgrades

PackageOld VersionNew Version
coverlet.collector6.0.26.0.4
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.89.0.1
Microsoft.AspNetCore.Mvc.Testing8.0.109.0.1
Microsoft.AspNetCore.Authorization8.0.8removed
Microsoft.CodeAnalysis.CSharp4.11.04.12.0
Microsoft.Data.Sqlite.Core8.0.109.0.1
Microsoft.CodeAnalysis.Analyzers3.3.4removed
Microsoft.Extensions.Caching.Abstraction8.0.09.0.1
Microsoft.Extensions.Configuration.Abstractions8.0.09.0.1
Microsoft.Extensions.Configuration.Binder8.0.29.0.1
Microsoft.Extensions.FileProviders.Abstractions8.0.09.0.1
Microsoft.Extensions.Logging.Abstractions8.0.29.0.1
Microsoft.Extensions.TimeProvider.Testing8.10.09.1.0
Microsoft.NET.Test.Sdk17.11.117.12.0
MySql.Data9.1.09.2.0
NHibernate.Extensions.Sqlite8.0.149.0.0
NUnit4.2.24.3.2
Npgsql8.0.59.0.2
Oracle.ManagedDataAccess.Core23.6.023.7.0
Shouldly4.2.14.3.0
Swashbuckle.AspNetCore6.9.07.2.0
Swashbuckle.AspNetCore.Annotations6.9.07.2.0

v0.12

v0.12.1

Improvements

  • Fake reporting wasn't working without registering a ReportOptions, fixed
  • Fake reporting now allows to provide a base path
  • Data source spec was throwing missing ISession error, fixed
  • Add query not found option to report context mocking
  • Rich transient wasn't added to data source recipe, fixed
  • Rich transient group names are now plural, making it similar to rich entity
  • Domain assemblies feature now accepts one assembly when it accepts one base namespace, to avoid confusion
  • File provider wasn't working without providing a base namespace in domain assemblies, fixed

v0.12.0

Features

  • Beta features are available in Baked.Recipe.Service package;
    • RuntimeLayeris added which merges the following layers:
      • Configuration
      • DependencyInjection
      • Monitoring
    • Oracle implementation of Database feature is now added
    • Cors feature is now added with AspNetCore implementation
    • Reporting feature is introduced with three implenmentations NativeSql for production, Mock and Fake for development
    • DataSource recipe is available which includes minimal features for a web application that only reads data from given database
    • RichTransient coding style feature is now added
    • NamespaceAsRoute coding style is introduced where namespaces are directly reflected to the endpoints routes

Improvements

  • MockConfiguration feature now clears FakeSettings list on teardown
  • MockMe.TheClient helper now provides optional parameter to clear previous invocations
  • ConfigureAction and OverrideAction helpers are now added to configure RestApi.ActionModel before and after conventions
  • Enum<T> helper class is added to use enum values within ValueSource attribute
  • DataAccess layer now exposes FluentConfiguration as configuration target
  • DataAccess layer now introduces IDatabaseInitializerCollection configuration target for registering database initialization actions
  • IServiceProvider now has UseCurrentScope extensions to resolve services using the scope provided by IServiceProviderAccessor implementations
  • TestRun now creates and disposes a scope for each test run to
  • Runtime layer now provides IFileProvidercomponent with CompositeFileProvider implementation
  • ReadAsString and ReadAsStringAsync helper extensions are now added for IFileProvider
  • DomainAssemblies feature now have options to auto add embedded file providers for give assemblies
  • Dotnet feature now adds embedded and physical file providers for given entry assembly
  • Async overloads for ShouldPass and ShouldFail are now available
  • Default exception handler is renamed as ProblemDetails
  • ITextTransformer is introduced in Core feature to allow business to make use of Humanizer methods without depending on it

Library Upgrades

PackageOld VersionNew Version
Oracle.ManagedDataAccess.Corenew23.6.0
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.88.0.10
Microsoft.AspNetCore.Mvc.Testing8.0.88.0.10
Microsoft.Data.Sqlite.Core8.0.88.0.10
Microsoft.Extensions.Logging.Abstractions8.0.18.0.2
Microsoft.Extensions.TimeProvider.Testing8.9.18.10.0
MySql.Data9.0.09.1.0
NHibernate.Extensions.Sqlite8.0.138.0.14
Npgsql8.0.48.0.5
Swashbuckle.AspNetCore6.8.06.9.0
Swashbuckle.AspNetCore.Annotations6.8.06.9.0

v0.11

v0.11.2

Improvements

  • Testing layer and MockOverrider feature were coupled with ServiceSpec preventing to create a custom recipe, fixed.
  • PUT, PATCH and DELETE method conventions are improved for bulk operations

Library Upgrades

PackageOld VersionNew Version
NHibernate.Extensions.Sqlite8.0.128.0.13
Swashbuckle.AspNetCore6.7.36.8.0
Swashbuckle.AspNetCore.Annotations6.7.36.8.0

v0.11.1

Bugfixes

  • Generated IManyToOneFecherservices was getting compiler error when a non-public member was accessed, fixed

Improvements

  • Generated assembly names are now set from Name property of GeneratedAssemblyDescriptor with Baked.g. prefix

v0.11.0

Features

  • Beta features are available in Baked.Recipe.Service package;
    • PostgreSql implementation is added to Database feature
    • RecordsAreDtos coding style was added to support domain type records as api inputs

Improvements

  • Built-in configs couldn't be overridden in appsettings.json and appsettings.[Environment].json files, fixed
  • IQueryContext now provides whereIf: to allow dynamic where clause building
  • *By methods were causing parents to be fetched lazily, fixed

Library Upgrades

PackageOld VersionNew Version
BenchmarkDotNet0.13.120.14.0
Microsoft.AspNetCore.Authorization8.0.78.0.8
Microsoft.Extensions.TimeProvider.Testing8.8.08.9.1
Microsoft.NET.Test.Sdk17.11.017.11.1
Moq4.20.704.20.72
NHibernate.Extensions.Sqlite8.0.88.0.12
NUnit4.2.14.2.2
Npgsqlnew8.0.4
SQLitePCLRaw.bundle_e_sqlite32.1.92.1.10
Swashbuckle.AspNetCore6.7.16.7.3
Swashbuckle.AspNetCore.Annotations6.7.16.7.3

v0.10

v0.10.10

Improvements

  • Change Response.StatusCode property type to HttpStatusCode
  • VerifySent now have allowErrorResponse parameter as optional
  • MockMe.TheClient<T> can now set response with only statusCode parameter

Bugfixes

  • VerifySent was throwing key not found exception when header key was not present, fixed

Library Upgrades

PackageOld VersionNew Version
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.78.0.8
Microsoft.AspNetCore.Mvc.Testing8.0.68.0.8
Microsoft.CodeAnalysis.CSharp4.10.04.11.0
Microsoft.Data.Sqlite.Core8.0.78.0.8
Microsoft.Extensions.TimeProvider.Testing8.7.08.8.0
Microsoft.NET.Test.Sdk17.10.017.11.0
NUnit4.1.04.2.1
NUnit3TestAdapter4.5.04.6.0
SQLitePCLRaw.bundle_e_sqlite32.1.82.1.9
Swashbuckle.AspNetCore6.6.26.7.1
Swashbuckle.AspNetCore.Annotations6.6.26.7.1

v0.10.9

Improvements

  • InMemory and Sqlite data base features were not working under ARM processors, fixed
  • Automatic schema update is removed from Sqlite database because Microsoft.Data.Sqlite.Core does not support SchemaUpdate
  • autoExportSchema parameter is introduced to Sqlite database with default value true to use automatic schema for development databases which clears data each time your application runs. You may set it to false if you want your data to retain.
  • Client.Send now has option to disable ensure success status code check to return error response data

Library Upgrades

PackageOld VersionNew Version
Microsoft.Data.Sqlite.Corenew8.0.7
NHibernate.Extensions.Sqlitenew8.0.8
SQLitePCLRaw.bundle_e_sqlite3new2.1.8
System.Data.SQLite1.0.118removed

v0.10.8

Library Upgrades

PackageOld VersionNew Version
FluentNHibernate3.3.03.4.0
Microsoft.AspNetCore.Authorization8.0.68.0.7
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.68.0.7
Microsoft.Extensions.Configuration.Binder8.0.18.0.2
Microsoft.Extensions.TimeProvider.Testing8.6.08.7.0
MySql.Data8.4.09.0.0
NHibernate5.5.15.5.2

v0.10.7

Improvements

  • Add support for including entity and record (response) properties in swagger
  • Request and response examples are included in swagger
  • Allow multi scheme IDs in security requirement filter
  • Tag documentation was causing empty tags to appear, fixed

Bugfixes

  • Newlines in XML comments were causing code generation to fail, fixed

Library Upgrades

PackageOld VersionNew Version
Microsoft.AspNetCore.Authorization8.0.58.0.6
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.58.0.6
Microsoft.AspNetCore.Mvc.Testing8.0.58.0.6
Microsoft.CodeAnalysis.CSharp4.9.24.10.0
Microsoft.Extensions.TimeProvider.Testing8.5.08.6.0

v0.10.6

Improvements

  • Existing swashbuckle configuration and filters now allow a multi document setup
    • FixedBearerToken now accepts document names and description of token parameter
    • Document based security definition extension is added
  • json request and response types were documented as more than one type, restricted to application/json
  • Domain model now contains xml comments as XmlNode instances
  • Swagger now includes xml documentation coming from doman model

v0.10.5

Improvements

  • DO is renamed as Baked (Objects)
    • Root namespace is Baked
    • Forge is now Bake
    • Blueprints is now Recipe
  • Authentication.Disabled was removed
  • NHibernate logs are now redirected to logger instead of direct console logging
  • Default levels are added to enable request/response and sql logging for development, only error for production

Bugfixes

  • NHibernate proxies were causing serialization error, fixed

v0.10.4

Improvements

  • Log now includes, domain type and method, timestamp and trace id in log message
  • 4xx is now logged in warning level leaving only 5xx in error level
  • Single line is now configurable from outside of RequestLoggingFeature

v0.10.3

Improvements

  • Add Lock to IEntityContext to enable select for update for making critical updates in sync

v0.10.2

Improvements

  • ObjectAsJson coding style feature now supports rendering object parameter as FromBody without generating a request class
  • Only concrete classes are now included in EntityExtensionViaComposition and EntitySubclassViaComposition coding style features
  • RequireClaim and RequireNoClaim renamed to RequireUser and AllowAnonymous respectively
  • RequireUser now accepts list of claims and can keep the base claim
  • RequireUser and AllowAnonymous can now be added to class
  • Authorization now expects authenticated user when no base claim is given
  • Authorization now allows multiple base claims
  • Transients having only one initializer with not api input paramteres are now not marked as api service
  • Create is now added as alias to add child methods

v0.10.1

Improvements

  • NFR tests now run faster. Nfr and ServiceNfr is redesigned to built only once for the complete test run.
    • Nfr environment is added to environment extensions for NFR specific configuration under Program.cs
    • ServiceNfr now runs only for Nfr environment
    • Forge configurations of ServiceNfr is removed completely, it uses automatically generated Program class
      • To enable test projects to see internal Program class, add InternalsVisibleTo to your application
    • Test projects don't need to have GenerateProgramFile set to false any more
  • WelcomePage greeting feature is now removed

Bugfixes

  • Fixes a bug where casters fails because of service providers during nfr tests

Library Upgrades

PackageOld VersionNew Version
BenchmarkDotNet0.13.110.13.12
Microsoft.AspNetCore.Authorization8.0.38.0.5
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.38.0.5
Microsoft.AspNetCore.Mvc.Testing8.0.38.0.5
Microsoft.CodeAnalysis.CSharp4.8.04.9.2
Microsoft.Extensions.TimeProvider.Testing8.3.08.5.0
Microsoft.NET.Test.Sdk17.9.017.10.0
MySql.Data8.3.08.4.0
NHibernate5.5.05.5.1
Swashbuckle.AspNetCore6.5.06.6.2

v0.10.0

Features

  • Beta features are available in do-blueprints-service package;
    • CodeGenerationLayer is introduced, now it is possible to generate code during initialization of a service
    • DomainLayer now provides;
      • an inherited factory mechanism to individually configure level of reflected details for registered types. Models for types are now built as following inherited levels;
        • TypeModel
        • TypeModelGenerics
        • TypeModelInheritance
        • TypeModelMetadata
        • TypeModelMembers
      • a metadata mechanism that allows you to add custom attributes to domain model
      • an indexer mechanism that allows you to index models based on their attributes
    • RestApiLayer now provides;
      • api model to generate controller code from domain model
      • model binder configuration to allow custom parameter types from action parameters
    • Forge.New.Service now automatically generates;
      • api controllers and actions from domain model
      • entity lookup calls for entity and entity extension parameters
      • all types of parameters and return types
      • stylized routes with default conventions
      • additional attributes for controller actions
      • multi unique property instead of just id route
      • commands as actions
      • entity extension services under entity route
      • entity subclass services under entity route via a discriminator unique property
      • add/remove child routes
      • null check for not-null parameters
      • redirect result for uri returning methods
    • Business and Orm is split into two features
      • LifetimeFeature is introduced with three implementations Singleton, Scoped and Transient
      • CodingStyleFeature is introduced with existing coding styles to separate them from business feature
    • Business now allows service casting, service.Cast().To<AnotherService>()
    • Authorization feature is now added with ClaimBasedAuthorization implementation which supports;
      • Individual claim requirements for actions
      • Default claim requirement for all actions
      • Anonymous access to specific actions
    • HttpServerLayer now registers authentication services and adds authentication middleware
      • provides AuthenticationCollection configuration target which supports forwarding request to appropriate handlers

Improvements

  • MvcNewtonsoftJsonOptions is added to RestApiLayer as configuration target
  • IScoped marker interface is removed, [Name]Context convention is introduced to configure scoped lifetime by convention
  • FixedToken authentication is now the default in Service blueprint
  • Default business feature is renamed as DomainAssemblies
  • Default orm feature is renamed as AutoMap
  • Documentation feature is refactored into coding styles and removed completely
  • Authentication feature is now a multi-feature
  • Not null parameters throw bad request when null value is received
  • FixedToken authentication feature is now renamed to FixedBearerToken
    • Feature now have TokenOptions parameter to configure token names and associated claims with given tokens
    • Feature now automatically adds hash and requestId parameters to actions when form post authentication is required

Bugfixes

  • TypeModel's which are not business types were throwing null reference exception for collection properties, fixed

Library Upgrades

PackageOld VersionNew Version
Humanizer.Corenew2.14.1
Microsoft.AspNetCore.Authorizationnew8.0.3

v0.9

v0.9.1

Improvements

  • SecurityRequirementOperationFilter was resetting the whole security definition list instead of adding, fixed
  • UseAttribute didn't allow multiple usage, fixed
  • AddHeaderOperationFilter was specific to adding headers, generalized and renamed as AddParameterOperationFilter
  • HasMetadata helper added to make it easy to check if an HttpContext has given attribute in requests action

Library Upgrades

PackageOld VersionNew Version
coverlet.collector6.0.06.0.2
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.18.0.3
Microsoft.AspNetCore.Mvc.Testing8.0.18.0.3
Microsoft.Extensions.Logging.Abstractions8.0.08.0.1
Microsoft.Extensions.TimeProvider.Testing8.1.08.3.0
Microsoft.NET.Test.Sdk17.8.017.9.0
NUnit4.0.14.1.0

v0.9.0

Features

  • Beta features are available in do-blueprints-service package;
    • Authentication feature is added with FixedToken implementation

v0.8

v0.8.0

Features

  • Beta features are available in do-blueprints-service package;
    • HttpClient layer is added, you can now configure HttpClientDescriptor to add and configure HttpClient's
    • Communication feature is added with Http and Mock implementations

v0.7

v0.7.1

Improvements

  • AGuid() test spec helper now returns a fixed value with optional starts:string parameter

v0.7.0

Features

  • Beta features are available in do-blueprints-service package;
    • DomainLayer is added which creates DomainModel phase artifact to be used in features
    • Added IScoped marker interface
    • Added a default BusinessFeature which uses DomainModel to register services using following conventions:
      • Types which have With method with are registered as transient services with singleton factories
      • Types which implements IScoped interface are registered as scoped services with singleton factories
      • Remaining types are registered as singleton services
      • Implemented interfaces are registered for types with same service lifetimes, if interfaces belongs to any assembly in the added to assembly descriptor list
      • Following types are ignored:
        • Types not in configured assembly or type collection
        • Types with System namespace
        • Non public types
        • Abstract types
        • Value types
        • Types with generic type parameters
        • Attributes
        • Exceptions
        • Delegates
        • Records
        • DTOs

Improvements

  • Features can now access ApplicationContext through LayerConfigurator
  • Added folllowing helper extensions for registering services;
    • AddTransientWithFactory<TService,TImplementation>()
    • AddScopedWithFactory<TService,TImplementation>()
    • AddSingleton<TService,TImplementation>(bool forward)
  • Added ServiceNfr base class which exposes overridable members for performing integration tests using Microsoft.AspNetCore.Mvc.Testing package

Bugfixes

  • Transaction rollback was not reverting changes properly when an exception occured, fixed

Library Upgrades

PackageOld VersionNew Version
Microsoft.AspNetCore.Mvc.NewtonsoftJson8.0.08.0.1
Microsoft.AspNetCore.Mvc.Testingnew8.0.1
Microsoft.Extensions.Configuration.Binder8.0.08.0.1
Microsoft.Extensions.TimeProvider.Testing8.0.08.0.1
MySql.Data8.2.08.3.0

v0.6

v0.6.0

.NET Upgrade

DO now supports .NET 8! Below you can find a task list to upgrade your projects.

- [ ] Upgrade .NET and C## versions
  - [ ] in projects
  - [ ] in docker files
  - [ ] in GitHub workflows
- [ ] Upgrade DO version
- [ ] Syntax improvements
  - [ ] Use primary constructors
  - [ ] Use collection expressions
- [ ] Use `[FromKeyedServices]` and `[FromServices]` in controllers
Upgrade .NET and C## versions
  • Upgrade the project's C# language to 12.
  • Framework version upgrade to net8.0 in the projects.
  • Framework and sdk version upgrade to 8 in Dockerfile.
  • Upgrade dotnet version 8 in Github actions.
Syntax improvements
Primary constructors

Use primary constructor, when there is a dependency that needs to be injected at the constructor without any logic or when the base class constructor is called. Parameter names start with underscore.

public class Entity(IEntityContext<Entity> _context)
{
  ...
}
Collection expressions

Use new and simplified collection expressions, where possible.

Visit Collection expression for more details.

[FromServices] in controllers

Instead of using constructor injection, use [FromServices] attribute to inject dependencies in controllers.

public Entity Get([FromServices] IQueryContext<Entity> entityQuery) { }

Improvements

  • ExceptionHandling now uses Microsoft.AspNetCore.Diagnostics.IExceptionHandling
    • ExceptionHandling feature now adds StatusCodePages middleware.
  • Exceptions now return ProblemDetails as response
  • ISystem is replaced with TimeProvider.System
    • Mocker, TheSystem extension is renamed to TheTime
    • Use FakeTimeProvider for tests by mocking TheTime
  • Internal Server Error response included extra details in message, removed
    • Extra details can be reached from the logs
  • HandledException is now abstract
    • Added optional ExtraDetails collection property to HandledException

Library Upgrades

PackageOld VersionNew Version
Microsoft.AspNetCore.Mvc.NewtonsoftJson7.0.138.0.0
Microsoft.Extensions.Configuration.Abstractions7.0.08.0.0
Microsoft.Extensions.Configuration.Binder7.0.08.0.0
Microsoft.Extensions.Logging.Abstractions7.0.08.0.0
Microsoft.NET.Test.Sdk7.0.08.0.0
Microsoft.Extensions.TimeProvider.Testingnew8.0.0
Moq4.20.694.20.70
NHibernate5.4.65.5.0
NUnit3.14.04.0.1
StyleCop.Analyzers.Unstable1.2.0.5071.2.0.556

v0.5

v0.5.0

Features

  • Beta features are available in do-blueprints-service package;
    • Caching feature is now added with ScopedMemory implementation

Improvements

  • Added CustomMySQL57Dialect for enabling varchar column type with 1023 max capacity
  • Added TransientWithFactory<TService, TImplementation> and ScopedWithFactory<TService, TImplementation> extensions for registering services with implementations
  • Added new ServiceSpec extensions:
    • AnInteger extension for Stubber
    • AMemoryCache extension for Stubber
    • ShouldHaveCount extension for IMemoryCache

v0.4

v0.4.3

Improvements

  • CommitAsync now accepts nullable parameters
  • Added generic overload for MockMe.ASetting()

v0.4.2

Improvements

  • Improved exception message when there is no valid json in the database.
  • Added GetRequiredValue<T> extension to IConfiguration with default value option
  • Mock IConfiguration return values for not defined settings can now be configured by overriding ServiceSpec.GetDefaultSettingsValue()

Bugfixes

  • ObjectUserType was causing its data to be corrupted when it contains special characters, fixed.

v0.4.1

Bugfixes

  • Automatic StyleCop.Analyzer reference conflicts with Directory.Packages.props usage, fixed

v0.4.0

.NET Upgrade

DO now supports .NET 7! Below you can find a task list to upgrade your projects.

- [ ] Upgrade .NET and C## versions
  - [ ] in projects
  - [ ] in docker files
  - [ ] in GitHub workflows
- [ ] Migrate to central package management
- [ ] Utilize regex source generator
Upgrade .NET and C## versions
in projects
  • Change the C## version to 11.0 in <LangVersion> tag in Directory.Build.props.
  • Change the .NET version to net7.0 in <TargetFramework> tag in Directory.Build.props.
in docker files

Update .NET version in Dockerfile

  • replace .../dotnet/aspnet:6.0-focal to .../dotnet/aspnet:7.0
  • replace .../dotnet/sdk:6.0-focal to .../dotnet/sdk:7.0
  • again docker compose up ✅
in GitHub workflows

Update dotnet-version to 7

- name: Setup .NET
  uses: actions/setup-dotnet@v3
  with:
    dotnet-version: 7
Migrate to central package management
  • Add Directory.Packages.props root
  • Set true to <ManagePackageVersionsCentrally>
  • Go through all .csproj and collect all packages into Directory.Packages.props and remove versions from all .csproj.

Visit Central Package Management for more details.

Utilize regex source generator

Use regex source generator where possible.

Visit Regular expressions for more details.

Library Upgrades

PackageOld VersionNew Version
FluentNHibernate3.2.13.3.0
Microsoft.AspNetCore.Mvc.NewtonsoftJson6.0.227.0.13
Microsoft.Extensions.Configuration.Abstractions6.0.07.0.0
Microsoft.Extensions.Configuration.Binder6.0.07.0.4
Moq4.18.44.20.69
MySql.Data8.1.08.2.0
NUnit3.13.33.14.0

v0.3

v0.3.7

Improvements

  • All packages include StyleCop and a custom stylecop.ruleset now

Library Upgrades

PackageOld VersionNew Version
StyleCop.Analyzers.Unstablenew1.2.0.507

v0.3.6

Bugfixes

  • passSomeTime parameter was not changing ISystem.Now correctly, fixed

v0.3.5

Improvements

  • Added ScopedWithFactory<T>() helper for registering scoped services
  • Added new ServiceSpec extensions:
    • ADateTime extension for Stubber
    • ADictionary extensions for Stubber
    • AnEmail extension for Stubber
    • ToGuid extension for string
  • Added passSomeTime parameter to Mocker.TheSystem extension

v0.3.4

Improvements

  • Enums in responses are returned as string now.
  • Swagger now supports object parameter and return type in endpoints.
  • By and All methods now have Take and Skip options

Library Upgrades

PackageOld VersionNew Version
Microsoft.AspNetCore.Mvc.NewtonsoftJson6.0.206.0.22
Moq4.18.44.20.69
NHibernate5.4.45.4.6

v0.3.3

Improvements

  • Transaction function or action allows task return
  • Add logger services during unit testing
  • Reset mocked singleton services were not setup after reset, fixed
  • Added HandledException and HandledExceptionHandler for providing a better distinction in results for managed and unmanaged exceptions
  • AddHandler<T>() extension for exception handling feature is now removed, all IExceptionHandler implementations should be registered as singleton services from features
  • RecordNotFoundException now returns 404 status code
  • Added an ISetup.Returns() extensions for ordered setup return values of a mock service

v0.3.2

Improvements

  • ITransaction now accepts Action and Action<TEntity> where you can give an entity to be updated in a new transaction
  • ApplicationContext KeyNotFoundException is now more informative
  • Same Layer and Feature can no longer be added multiple times
  • Mocked services which are singleton are now reset during unit test teardown
  • IConfiguration mock is now added and can be configured with helpers provided from ServiceSpec
  • ISystemcan now be configured with helpers provided from ServiceSpec
  • ShouldBeInserted and ShouldBeDeleted extensions are now added for testing entities
  • Swagger now renders enum as string
  • SingleById() query now throws a RecordNotFoundException if no matching record is found

Library Upgrades

PackageOld VersionNew Version
Microsoft.Extensions.Configuration.Abstractionsnew6.0.0
Microsoft.Extensions.Configuration.Bindernew6.0.0

v0.3.1

Bugfixes

  • DbType.Object type was not supported in SQLite and InMemory features, fixed.

v0.3.0

Features

  • Beta features are available in do-blueprints-service package;
    • Documentation feature is added with Default implementation.

Improvements

  • Changed Id automaping logic. Now Guid properties named as Id are being mapped as Id.
  • Entity properties of type object were not being mapped as MEDIUMTEXT, fixed.
  • Swagger schema ID conflict that occurred when two different controllers had a nested class with the same name, fixed.
  • Searcher GetMe is added to Spec, Searcher extensions have been added to ServiceSpecExtensions.
  • Url Extensions and Guid Extensions are added to ServiceSpecExtensions for generating new Uri and Guid.

v0.2

v0.2.1

Improvements

  • Added singleton access helper to Stubber, GiveMe.The<TService>().
  • GiveMe.Create() is renamed to GiveMe.A(), GiveMe.An().
  • GiveMe.A() and GiveMe.An() are renamed to GiveMe.AnInstanceOf()
  • Configurators now have ability to switch based on environments
    • developmentDatabase is removed, you can use environment switcher
  • Added Uri to String mapping support for Orm feature
  • Added object to StringClob mapping support for Orm feature

v0.2.0

Packages

  • Do.Blueprints.Service.Application package is introduced. This package exposes was formerly named as Do.Blueprints.Service
    • Do.Blueprints.Service package now only contains ports of service blueprint and expected to be used from business domain projects

Features

  • Beta features are available in do-blueprints-service package;
    • Core feature is added with Dotnet and Mock implementations
    • DataAccess layer is added, you can now configure NHibernate
    • Monitoring layer is added, you can now configure ILoggerBuilder
    • HttpServer layer is added, you can now configure IMiddlewareCollection along with IEndpointRouteBuilder
      • Web layer is merged into this new layer and IApplicationBuilder is removed from configuration
    • Configuration layer is added, you can now configure IConfigurationBuilder
    • RestApi layer is added, you can now configure SwaggerGenOptions, SwaggerOptions and SwaggerUIOptions along with IApplicationPartCollection
    • Testing layer is added, you can now configure TestConfiguration
    • Swagger implementation is added for greeting feature
    • Logging feature is added with Request implementation
    • MockOverriderfeature is added with FirstInterface implementation
    • Business feature is added with no implementation
    • HelloWorld implementation of Greeting feature is now removed
    • Exception Handling feature is now added with Default implementation
    • Database feature is added with InMemory,Sqlite and MySql implementations
    • Orm feature is added with NHibernate implementation

Library Upgrades

PackageOld VersionNew Version
FluentNHibernatenew3.2.1
Microsoft.AspNetCore.Mvc.NewtonsoftJsonnew6.0.20
Microsoft.Extensions.Logging.Abstractionsnew7.0.1
Moqnew4.18.4
MySql.Datanew8.1.0
NHibernatenew5.4.4
NUnitnew3.13.3
Shouldlynew4.2.1
Swashbuckle.AspNetCorenew6.5.0
System.Data.SQLitenew1.0.118

v0.1

v0.1.0

Packages

  • Do.Architecture package is introduced. This package exposes core feature and layer system that is mentioned in Architecture section

Features

  • Beta features are available in do-blueprints-service package;
    • DependencyInjection layer is added, you can now configure IServiceCollection in features
    • Web layer is added, you can now configure IApplicationBuilder and IEndpointRouteBuilder in features
    • Greeting feature is added with two implementations HelloWorld and WelcomePage

v0.0

v0.0.0

Packages

  • Do.Blueprints.Service package is created with literally zero features
    • Architecture is documented with initial vision
    • Empty solution is created with initial projects that have no code