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 extensionsapply: 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 Bakedprimevue, 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 Package | Old Version | New Version |
|---|
| BenchmarkDotNet | 0.15.2 | 0.15.4 |
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.9 | 9.0.10 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.9 | 9.0.10 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.9 | 9.0.10 |
| Microsoft.Data.Sqlite.Core | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Configuration.Binder | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Localization | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Localization.Abstractions | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.9 | 9.0.10 |
| Microsoft.Extensions.TimeProvider.Testing | 9.9.0 | 9.10.0 |
| Microsoft.NET.Test.Sdk | 17.14.1 | 18.0.0 |
| NHibernate | 5.5.3 | 5.6.0 |
| NUnit3TestAdapter | 5.1.0 | 5.2.0 |
| Npgsql | 9.0.3 | 9.0.4 |
| Oracle.ManagedDataAccess.Core | 23.9.1 | 23.26.0 |
| Swashbuckle.AspNetCore | 9.0.4 | 9.0.6 |
| Swashbuckle.AspNetCore.Annotations | 9.0.4 | 9.0.6 |
| npm Package | Old Version | New Version |
|---|
| @nuxtjs/i18n | 10.1.0 | 10.1.1 |
| @primeuix/themes | 1.2.3 | 1.2.5 |
| primevue | 4.3.9 | 4.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 overloadDataTable and DataTable.Column drills fixedGetListProperty 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 Package | Old Version | New Version |
|---|
| @nuxt/kit | 3.19.2 | removed |
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 pagesClientCache 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 trueSet{..}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 changesAttributeCollection was not keeping the of attributes in the order they were
added fixed
Library Upgrades
| NuGet Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.7 | 9.0.9 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.7 | 9.0.9 |
| Microsoft.Data.Sqlite.Core | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.Configuration.Binder | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.Localization | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.Localization.Abstractions | 9.0.7 | 9.0.9 |
| Microsoft.Extensions.TimeProvider.Testing | 9.7.0 | 9.9.0 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.7 | 9.0.9 |
| MySql.Data | 9.3.0 | 9.4.0 |
| Newtonsoft.Json | 13.0.3 | 13.0.4 |
| NHibernate | 5.5.2 | 5.5.3 |
| NHibernate.Extensions.Sqlite | 9.0.5 | 9.0.8 |
| NUnit | 4.3.2 | 4.4.0 |
| NUnit3TestAdapter | 5.0.0 | 5.1.0 |
| SQLitePCLRaw.bundle_e_sqlite3 | 2.1.11 | 3.0.2 |
| Swashbuckle.AspNetCore | 9.0.3 | 9.0.4 |
| Swashbuckle.AspNetCore.Annotations | 9.0.3 | 9.0.4 |
| System.IdentityModel.Tokens.Jwt | 8.12.1 | 8.14.0 |
| npm Package | Old Version | New Version |
|---|
| @nuxt/kit | 3.17.7 | 3.19.2 |
| @nuxtjs/i18n | 10.0.1 | 10.1.0 |
| @primeuix/themes | 1.2.1 | 1.2.3 |
| primevue | 4.3.6 | 4.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 screensPageTitle actions now shows popover on mobile screensSideMenu component displays labels on larger screensSideMenu component snaps to the bottom on mobile screensDataPanel parameters now uses popover on mobile screensDataTable disables the frozen option for mobile screensDataTable paginator now becomes dropdown for mobile screensLanguageSwitcher 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
contextBake.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 methodDataTable.vue now includes parameter values in export file namesRemoteData.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,
fixedDataTable 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, fixeduseFormat wasn't using locale info from i18n, fixedlocale.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, fixedILocalizer interface was removed, Baked.Service.Application now depend on
Microsoft.AspNetCore.Localization and may use IStringLocalizer directlyExceptionHandler wasn't setting details when there is no localizer, fixedExceptionHandler wasn't using localization for exception titles, fixed
Library Upgrades
| NuGet Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Localization | 2.3.0 | removed |
| Microsoft.Extensions.Localization | new | 9.0.7 |
| Microsoft.Extensions.Localization.Abstractions | new | 9.0.7 |
v0.17.0
Features
- Beta features are available in
Baked.Recipe.Service.Application;
RateLimiter feature is now added with ConcurrencyLimiter implementationLocalization feature is now addedCaching.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, fixeduseFormat shorteners was not working for negative values, fixedUiLayer 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 Package | Old Version | New Version |
|---|
| BenchmarkDotNet | 0.15.0 | 0.15.2 |
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.5 | 9.0.7 |
| Microsoft.AspNetCore.Authentication.NewtonsoftJson | 9.0.5 | 9.0.7 |
| Microsoft.AspNetCore.Authentication.Testing | 9.0.5 | 9.0.7 |
| Microsoft.AspNetCore.Localization | new | 2.3.0 |
| Microsoft.Data.Sqlite.Core | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.Configuration.Binder | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.5 | 9.0.7 |
| Microsoft.Extensions.TimeProvider.Testing | 9.5.0 | 9.7.0 |
| Microsoft.NET.Test.Sdk | 17.13.0 | 17.14.1 |
| NHibernate.Extensions.Sqlite | 9.0.2 | 9.0.5 |
| Oracle.ManagedDataAccess.Core | 23.8.0 | 23.9.1 |
| Swashbuckle.AspNetCore | 8.1.1 | 9.0.3 |
| Swashbuckle.AspNetCore.Annotations | 8.1.1 | 9.0.3 |
| System.IdentityModel.Tokens.Jwt | 8.10.0 | 8.12.1 |
| npm Package | Old Version | New Version |
|---|
| @nuxt/kit | 3.16.2 | 3.17.7 |
| @nuxtjs/i18n | new | 10.0.1 |
| @nuxtjs/tailwindcss | 6.13.2 | 6.14.0 |
| @primeuix/themes | 1.1.1 | 1.2.1 |
| primevue | 4.3.4 | 4.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
defaultDataPanel 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: optionDataTable export button was added to last column, causing misalignment,
fixed by adding actions columnDataTableColumn title was exported as label when no label was given, fixedDataPanel 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 Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.4 | 9.0.5 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.4 | 9.0.5 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.4 | 9.0.5 |
| Microsoft.CodeAnalysis.CSharp | 4.14.3 | 4.14.4 |
| Microsoft.Data.Sqlite.Core | 9.0.4 | 9.0.5 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.4 | 9.0.5 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.4 | 9.0.5 |
| Microsoft.Extensions.Configuration.Binder | 9.0.4 | 9.0.5 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.4 | 9.0.5 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.5 | 9.0.5 |
| Microsoft.Extensions.TimeProvider.Testing | 9.4.0 | 9.5.0 |
| System.IdentityModel.Tokens.Jwt | 8.8.0 | 8.10.0 |
| npm Package | Old Version | New Version |
|---|
| @primeuix/themes | 1.0.3 | 1.1.1 |
| primevue | 4.3.3 | 4.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 contextoverflow is added to ReportPageTab to automatically enable article
overflow when tab is selectedfullScreen is moved from ReportPageTabContent to ReportPageTab to
manage both fullScreen and overflow togetherReportPage 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, fixedDataTable 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 supportNumber 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 tooltipIReportContext, 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 environmentDataTable component now has footer supportDataTable component now has scrollable toggle
Library Upgrades
| NuGet Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.3 | 9.0.4 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.3 | 9.0.4 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.3 | 9.0.4 |
| Microsoft.Data.Sqlite.Core | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.Configuration.Binder | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.3 | 9.0.4 |
| Microsoft.Extensions.TimeProvider.Testing | 9.3.0 | 9.4.0 |
| MySql.Data | 9.2.0 | 9.3.0 |
| Oracle.ManagedDataAccess.Core | 23.7.0 | 23.8.0 |
| Swashbuckle.AspNetCore | 8.1.0 | 8.1.1 |
| Swashbuckle.AspNetCore.Annotations | 8.1.0 | 8.1.1 |
| System.IdentityModel.Tokens.Jwt | 8.7.0 | 8.8.0 |
| npm Package | Old Version | New Version |
|---|
| @nuxt/kit | 3.16.1 | 3.16.2 |
| @primeuix/themes | 1.0.0 | 1.0.3 |
v0.15
v0.15.5
Improvements
MenuPage now supports sectionsFilter 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, fixedInjectedData 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 issueDataTable now allows to define different components for the same column
depending on a row valueBake.vue now provides loading instead of passing it via propsBake.vue now provides fetched data in InjectedDataInjectedData 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 Package | Old Version | New Version |
|---|
| vue-deepunref | 1.0.1 | removed |
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 displayErrorPage schema is added to create descriptor for custom error pageDataTable page component is addedReportPage schema is added to create report like pages
DeferredTabContent component is added to load tab contents lazily in
report pagesQueryParameters component is added to render input parameters in
actions template of PageTitle
Icon, Money, Rate, Link page components are addeduseFormat composable is added for number formattingAuth plugin is now introduced for authorized routing and requests with
jwt supportAuthorizedContent component is now introduced for to display/hide
contentSelect input component is addeduseQuery 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 componentsInjectedData is introduced for components to provide values, e.g.
parameter data, to its child commponentsCompositeData is introduced to combine data from different sourcesModalLayout is introduced for pages like loginCustomPage is introduced to allow custom pages through baked uiSelectButton 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 frontendRemoteData now accepts queryBake.vue now provides a baked component path under useContext().path() to
be used as a unique key within a pageBake.vue now manages loading state, making it possible for components to
show a skeleton during loadingSideMenu, PageTitle, Header now supports skeletonDetailPage and its conventions are removedLayout 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 backendbaseURL and retryFetch are moved from baked.components.Bake to
baked.composables.useDataFetcher to make them reusable across the projectroute-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 Package | Old Version | New Version |
|---|
| FluentNHibernate | 3.4.0 | 3.4.1 |
| Microsoft.AspNetCore.Authentication.JwtBearer | new | 9.0.3 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.2 | 9.0.3 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.2 | 9.0.3 |
| Microsoft.Data.Sqlite.Core | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.Caching.Abstractions | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.Configuration.Binder | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.2 | 9.0.3 |
| Microsoft.Extensions.TimeProvider.Testing | 9.2.0 | 9.3.0 |
| NHibernate.Extensions.Sqlite | 9.0.1 | 9.0.2 |
| SQLitePCLRaw.bundle_e_sqlite | 2.1.10 | 2.1.11 |
| Swashbuckle.AspNetCore | 7.3.1 | 8.1.0 |
| Swashbuckle.AspNetCore.Annotations | 7.3.1 | 8.1.0 |
| System.IdentityModel.Tokens.Jwt | new | 8.7.0 |
| npm Package | Old Version | New Version |
|---|
| @nuxt/kit | 3.15.4 | 3.16.1 |
| @nuxtjs/tailwindcss | 6.13.1 | 6.13.2 |
| @primeuix/themes | new | 1.0.0 |
| @primevue/themes | 4.2.5 | removed |
| async-mutex | new | 0.5.0 |
| primevue | 4.2.5 | 4.3.3 |
| vue-deepunref | new | 1.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, fixedMenuPage now accepts any component in header
v0.14.0
Features
- Beta features are available;
baked-recipe-admin npm package is releasedUiLayer is added to Service recipe, you can now configure
LayoutDescriptors and PageDescriptors in featuresTheme 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
expectedCodeGenerationLayer now skips compiling code if no changes in generated code
are detected
Library Upgrades
| NuGet Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 9.0.1 | 9.0.2 |
| Microsoft.AspNetCore.Mvc.Testing | 9.0.1 | 9.0.2 |
| Microsoft.CodeAnalysis.CSharp | 4.12.0 | 4.13.0 |
| Microsoft.Data.Sqlite.Core | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.Caching.Abstraction | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.Configuration.Abstractions | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.Configuration.Binder | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.FileProviders.Abstractions | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.Logging.Abstractions | 9.0.1 | 9.0.2 |
| Microsoft.Extensions.TimeProvider.Testing | 9.1.0 | 9.2.0 |
| Microsoft.NET.Test.Sdk | 17.12.1 | 17.13.0 |
| NHibernate.Extensions.Sqlite | 9.0.0 | 9.0.1 |
| NUnitTestAdapter | 4.6.0 | 5.0.0 |
| Npgsql | 9.0.2 | 9.0.3 |
| Swashbuckle.AspNetCore | 7.2.0 | 7.3.1 |
| Swashbuckle.AspNetCore.Annotations | 7.2.0 | 7.3.1 |
| npm Package | Old Version | New Version |
|---|
| @nuxt/kit | new | 3.15.4 |
| @nuxtjs/tailwindcss | new | 6.13.1 |
| @primevue/themes | new | 4.2.5 |
| primeicons | new | 7.0.0 |
| primevue | new | 4.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 modeService and Data Source recipes now triggers Generate mode run at post
buildDomain layer's AddDomainTypes and BuildDomainModel phases now only runs
in Generate modeCodeGeneration layer's GenerateCode and Compile phases now only runs
in Generate modeCodeGeneration layer now introduces IGeneratedFileCollection which
enables generating data files in Generate modeCodeGeneration layer now introduces GeneratedContext at
BuildConfiguration phase which provides access to generated assemblies and
files in Start modeDomain 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 subfolderDomainAssemblies feature now generates
ICasterConfigurer
implementations andTagDescriptorRequestResponseExample
json files in Generate mode
AutoMapOrm feature now generates IServiceAdder implementations from
DomainModel in Generate modeGiveMe.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
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 featureLayerConfigurator now provides Use<T> helper to use phase artifacts and
no longer provides access to application context
Library Upgrades
| Package | Old Version | New Version |
|---|
| coverlet.collector | 6.0.2 | 6.0.4 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.8 | 9.0.1 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.10 | 9.0.1 |
| Microsoft.AspNetCore.Authorization | 8.0.8 | removed |
| Microsoft.CodeAnalysis.CSharp | 4.11.0 | 4.12.0 |
| Microsoft.Data.Sqlite.Core | 8.0.10 | 9.0.1 |
| Microsoft.CodeAnalysis.Analyzers | 3.3.4 | removed |
| Microsoft.Extensions.Caching.Abstraction | 8.0.0 | 9.0.1 |
| Microsoft.Extensions.Configuration.Abstractions | 8.0.0 | 9.0.1 |
| Microsoft.Extensions.Configuration.Binder | 8.0.2 | 9.0.1 |
| Microsoft.Extensions.FileProviders.Abstractions | 8.0.0 | 9.0.1 |
| Microsoft.Extensions.Logging.Abstractions | 8.0.2 | 9.0.1 |
| Microsoft.Extensions.TimeProvider.Testing | 8.10.0 | 9.1.0 |
| Microsoft.NET.Test.Sdk | 17.11.1 | 17.12.0 |
| MySql.Data | 9.1.0 | 9.2.0 |
| NHibernate.Extensions.Sqlite | 8.0.14 | 9.0.0 |
| NUnit | 4.2.2 | 4.3.2 |
| Npgsql | 8.0.5 | 9.0.2 |
| Oracle.ManagedDataAccess.Core | 23.6.0 | 23.7.0 |
| Shouldly | 4.2.1 | 4.3.0 |
| Swashbuckle.AspNetCore | 6.9.0 | 7.2.0 |
| Swashbuckle.AspNetCore.Annotations | 6.9.0 | 7.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:
ConfigurationDependencyInjectionMonitoring
Oracle implementation of Database feature is now addedCors feature is now added with AspNetCore implementationReporting feature is introduced with three implenmentations NativeSql
for production, Mock and Fake for developmentDataSource recipe is available which includes minimal features for a web
application that only reads data from given databaseRichTransient coding style feature is now addedNamespaceAsRoute coding style is introduced where namespaces are directly
reflected to the endpoints routes
Improvements
MockConfiguration feature now clears FakeSettings list on teardownMockMe.TheClient helper now provides optional parameter to clear previous
invocationsConfigureAction and OverrideAction helpers are now added to configure
RestApi.ActionModel before and after conventionsEnum<T> helper class is added to use enum values within ValueSource
attributeDataAccess layer now exposes FluentConfiguration as configuration targetDataAccess layer now introduces IDatabaseInitializerCollection
configuration target for registering database initialization actionsIServiceProvider now has UseCurrentScope extensions to resolve services
using the scope provided by IServiceProviderAccessor implementationsTestRun now creates and disposes a scope for each test run toRuntime layer now provides IFileProvidercomponent with
CompositeFileProvider implementationReadAsString and ReadAsStringAsync helper extensions are now added for
IFileProviderDomainAssemblies feature now have options to auto add embedded file
providers for give assembliesDotnet 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 ProblemDetailsITextTransformer is introduced in Core feature to allow business to make
use of Humanizer methods without depending on it
Library Upgrades
| Package | Old Version | New Version |
|---|
| Oracle.ManagedDataAccess.Core | new | 23.6.0 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.8 | 8.0.10 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.8 | 8.0.10 |
| Microsoft.Data.Sqlite.Core | 8.0.8 | 8.0.10 |
| Microsoft.Extensions.Logging.Abstractions | 8.0.1 | 8.0.2 |
| Microsoft.Extensions.TimeProvider.Testing | 8.9.1 | 8.10.0 |
| MySql.Data | 9.0.0 | 9.1.0 |
| NHibernate.Extensions.Sqlite | 8.0.13 | 8.0.14 |
| Npgsql | 8.0.4 | 8.0.5 |
| Swashbuckle.AspNetCore | 6.8.0 | 6.9.0 |
| Swashbuckle.AspNetCore.Annotations | 6.8.0 | 6.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
| Package | Old Version | New Version |
|---|
| NHibernate.Extensions.Sqlite | 8.0.12 | 8.0.13 |
| Swashbuckle.AspNetCore | 6.7.3 | 6.8.0 |
| Swashbuckle.AspNetCore.Annotations | 6.7.3 | 6.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 featureRecordsAreDtos 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
| Package | Old Version | New Version |
|---|
| BenchmarkDotNet | 0.13.12 | 0.14.0 |
| Microsoft.AspNetCore.Authorization | 8.0.7 | 8.0.8 |
| Microsoft.Extensions.TimeProvider.Testing | 8.8.0 | 8.9.1 |
| Microsoft.NET.Test.Sdk | 17.11.0 | 17.11.1 |
| Moq | 4.20.70 | 4.20.72 |
| NHibernate.Extensions.Sqlite | 8.0.8 | 8.0.12 |
| NUnit | 4.2.1 | 4.2.2 |
| Npgsql | new | 8.0.4 |
| SQLitePCLRaw.bundle_e_sqlite3 | 2.1.9 | 2.1.10 |
| Swashbuckle.AspNetCore | 6.7.1 | 6.7.3 |
| Swashbuckle.AspNetCore.Annotations | 6.7.1 | 6.7.3 |
v0.10
v0.10.10
Improvements
- Change
Response.StatusCode property type to HttpStatusCode VerifySent now have allowErrorResponse parameter as optionalMockMe.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
| Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.7 | 8.0.8 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.6 | 8.0.8 |
| Microsoft.CodeAnalysis.CSharp | 4.10.0 | 4.11.0 |
| Microsoft.Data.Sqlite.Core | 8.0.7 | 8.0.8 |
| Microsoft.Extensions.TimeProvider.Testing | 8.7.0 | 8.8.0 |
| Microsoft.NET.Test.Sdk | 17.10.0 | 17.11.0 |
| NUnit | 4.1.0 | 4.2.1 |
| NUnit3TestAdapter | 4.5.0 | 4.6.0 |
| SQLitePCLRaw.bundle_e_sqlite3 | 2.1.8 | 2.1.9 |
| Swashbuckle.AspNetCore | 6.6.2 | 6.7.1 |
| Swashbuckle.AspNetCore.Annotations | 6.6.2 | 6.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
| Package | Old Version | New Version |
|---|
| Microsoft.Data.Sqlite.Core | new | 8.0.7 |
| NHibernate.Extensions.Sqlite | new | 8.0.8 |
| SQLitePCLRaw.bundle_e_sqlite3 | new | 2.1.8 |
| System.Data.SQLite | 1.0.118 | removed |
v0.10.8
Library Upgrades
| Package | Old Version | New Version |
|---|
| FluentNHibernate | 3.3.0 | 3.4.0 |
| Microsoft.AspNetCore.Authorization | 8.0.6 | 8.0.7 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.6 | 8.0.7 |
| Microsoft.Extensions.Configuration.Binder | 8.0.1 | 8.0.2 |
| Microsoft.Extensions.TimeProvider.Testing | 8.6.0 | 8.7.0 |
| MySql.Data | 8.4.0 | 9.0.0 |
| NHibernate | 5.5.1 | 5.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
| Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Authorization | 8.0.5 | 8.0.6 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.5 | 8.0.6 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.5 | 8.0.6 |
| Microsoft.CodeAnalysis.CSharp | 4.9.2 | 4.10.0 |
| Microsoft.Extensions.TimeProvider.Testing | 8.5.0 | 8.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 BakeBlueprints 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 respectivelyRequireUser now accepts list of claims and can keep the base claimRequireUser and AllowAnonymous can now be added to classAuthorization now expects authenticated user when no base claim is givenAuthorization 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.csServiceNfr 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
| Package | Old Version | New Version |
|---|
| BenchmarkDotNet | 0.13.11 | 0.13.12 |
| Microsoft.AspNetCore.Authorization | 8.0.3 | 8.0.5 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.3 | 8.0.5 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.3 | 8.0.5 |
| Microsoft.CodeAnalysis.CSharp | 4.8.0 | 4.9.2 |
| Microsoft.Extensions.TimeProvider.Testing | 8.3.0 | 8.5.0 |
| Microsoft.NET.Test.Sdk | 17.9.0 | 17.10.0 |
| MySql.Data | 8.3.0 | 8.4.0 |
| NHibernate | 5.5.0 | 5.5.1 |
| Swashbuckle.AspNetCore | 6.5.0 | 6.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 serviceDomainLayer 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;
TypeModelTypeModelGenericsTypeModelInheritanceTypeModelMetadataTypeModelMembers
- 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 TransientCodingStyleFeature 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 targetIScoped marker interface is removed, [Name]Context convention is
introduced to configure scoped lifetime by conventionFixedToken authentication is now the default in Service blueprintDefault business feature is renamed as DomainAssembliesDefault orm feature is renamed as AutoMapDocumentation feature is refactored into coding styles and removed
completelyAuthentication 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
| Package | Old Version | New Version |
|---|
| Humanizer.Core | new | 2.14.1 |
| Microsoft.AspNetCore.Authorization | new | 8.0.3 |
v0.9
v0.9.1
Improvements
SecurityRequirementOperationFilter was resetting the whole security
definition list instead of adding, fixedUseAttribute didn't allow multiple usage, fixedAddHeaderOperationFilter was specific to adding headers, generalized and
renamed as AddParameterOperationFilterHasMetadata helper added to make it easy to check if an HttpContext has
given attribute in requests action
Library Upgrades
| Package | Old Version | New Version |
|---|
| coverlet.collector | 6.0.0 | 6.0.2 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.1 | 8.0.3 |
| Microsoft.AspNetCore.Mvc.Testing | 8.0.1 | 8.0.3 |
| Microsoft.Extensions.Logging.Abstractions | 8.0.0 | 8.0.1 |
| Microsoft.Extensions.TimeProvider.Testing | 8.1.0 | 8.3.0 |
| Microsoft.NET.Test.Sdk | 17.8.0 | 17.9.0 |
| NUnit | 4.0.1 | 4.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'sCommunication 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
| Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 8.0.0 | 8.0.1 |
| Microsoft.AspNetCore.Mvc.Testing | new | 8.0.1 |
| Microsoft.Extensions.Configuration.Binder | 8.0.0 | 8.0.1 |
| Microsoft.Extensions.TimeProvider.Testing | 8.0.0 | 8.0.1 |
| MySql.Data | 8.2.0 | 8.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
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)
{
...
}
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.IExceptionHandlingExceptionHandling feature now adds StatusCodePages middleware.
- Exceptions now return
ProblemDetails as response ISystem is replaced with TimeProvider.SystemMocker, 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
| Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 7.0.13 | 8.0.0 |
| Microsoft.Extensions.Configuration.Abstractions | 7.0.0 | 8.0.0 |
| Microsoft.Extensions.Configuration.Binder | 7.0.0 | 8.0.0 |
| Microsoft.Extensions.Logging.Abstractions | 7.0.0 | 8.0.0 |
| Microsoft.NET.Test.Sdk | 7.0.0 | 8.0.0 |
| Microsoft.Extensions.TimeProvider.Testing | new | 8.0.0 |
| Moq | 4.20.69 | 4.20.70 |
| NHibernate | 5.4.6 | 5.5.0 |
| NUnit | 3.14.0 | 4.0.1 |
| StyleCop.Analyzers.Unstable | 1.2.0.507 | 1.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 StubberAMemoryCache extension for StubberShouldHaveCount 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
- 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.
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 ✅
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
| Package | Old Version | New Version |
|---|
| FluentNHibernate | 3.2.1 | 3.3.0 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 6.0.22 | 7.0.13 |
| Microsoft.Extensions.Configuration.Abstractions | 6.0.0 | 7.0.0 |
| Microsoft.Extensions.Configuration.Binder | 6.0.0 | 7.0.4 |
| Moq | 4.18.4 | 4.20.69 |
| MySql.Data | 8.1.0 | 8.2.0 |
| NUnit | 3.13.3 | 3.14.0 |
v0.3
v0.3.7
Improvements
- All packages include
StyleCop and a custom stylecop.ruleset now
Library Upgrades
| Package | Old Version | New Version |
|---|
| StyleCop.Analyzers.Unstable | new | 1.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 StubberADictionary extensions for StubberAnEmail extension for StubberToGuid 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
| Package | Old Version | New Version |
|---|
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 6.0.20 | 6.0.22 |
| Moq | 4.18.4 | 4.20.69 |
| NHibernate | 5.4.4 | 5.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 featuresRecordNotFoundException 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 transactionApplicationContext 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 ServiceSpecISystemcan now be configured with helpers provided from ServiceSpecShouldBeInserted 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
| Package | Old Version | New Version |
|---|
| Microsoft.Extensions.Configuration.Abstractions | new | 6.0.0 |
| Microsoft.Extensions.Configuration.Binder | new | 6.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.ServiceDo.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 implementationsDataAccess layer is added, you can now configure NHibernateMonitoring layer is added, you can now configure ILoggerBuilderHttpServer layer is added, you can now configure
IMiddlewareCollection along with IEndpointRouteBuilderWeb layer is merged into this new layer and IApplicationBuilder is
removed from configuration
Configuration layer is added, you can now configure
IConfigurationBuilderRestApi layer is added, you can now configure SwaggerGenOptions,
SwaggerOptions and SwaggerUIOptions along with
IApplicationPartCollectionTesting layer is added, you can now configure TestConfigurationSwagger implementation is added for greeting featureLogging feature is added with Request implementationMockOverriderfeature is added with FirstInterface implementationBusiness feature is added with no implementationHelloWorld implementation of Greeting feature is now removedException Handling feature is now added with Default implementationDatabase feature is added with InMemory,Sqlite and MySql
implementationsOrm feature is added with NHibernate implementation
Library Upgrades
| Package | Old Version | New Version |
|---|
| FluentNHibernate | new | 3.2.1 |
| Microsoft.AspNetCore.Mvc.NewtonsoftJson | new | 6.0.20 |
| Microsoft.Extensions.Logging.Abstractions | new | 7.0.1 |
| Moq | new | 4.18.4 |
| MySql.Data | new | 8.1.0 |
| NHibernate | new | 5.4.4 |
| NUnit | new | 3.13.3 |
| Shouldly | new | 4.2.1 |
| Swashbuckle.AspNetCore | new | 6.5.0 |
| System.Data.SQLite | new | 1.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 featuresWeb layer is added, you can now configure IApplicationBuilder and
IEndpointRouteBuilder in featuresGreeting 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