angel3_framework 8.4.0 angel3_framework: ^8.4.0 copied to clipboard
A high-powered HTTP server extensible framework with dependency injection, routing and much more.
Change Log #
8.4.0 #
- Require Dart >= 3.3
- Updated
lints
to 4.0.0
8.3.2 #
- Updated README
8.3.1 #
- Updated repository link
8.3.0 #
- Updated
lints
to 3.0.0 - Fixed linter warnings
8.2.0 #
- Add
addResponseHeader
toAngelHttp
to add headers to HTTP default response - Add
removeResponseHeader
toAngelHttp
to remove headers from HTTP default response
8.1.1 #
- Updated broken image on README
8.1.0 #
- Updated
uuid
to 4.0.0
8.0.0 #
- Require Dart >= 3.0
- Updated
http
to 1.0.0
7.0.4 #
- Updated
Expose
fields to non-nullable - Updated
Controller
to use non-nullable field
7.0.3 #
- Fixed issue #83. Allow Http request to return null headers instead of throwing an exception.
7.0.2 #
- Added performance benchmark to README
7.0.1 #
- Fixed
BytesBuilder
warnings
7.0.0 #
- Require Dart >= 2.17
6.0.0 #
- Require Dart >= 2.16
- Updated
container
to non nullable - Updated
angel
to non nullable - Updated
logger
to non nullable - Refactored error handler
5.0.0 #
- Skipped release
4.2.4 #
- Fixed issue 48. Log not working in development
4.2.3 #
- Fixed
res.json()
throwing bad state exception
4.2.2 #
- Added
Date
to response header - Updated
Server: Angel3
response header
4.2.1 #
- Updated
package:angel3_container
4.2.0 #
- Updated to
package:belatuk_combinator
- Updated to
package:belatuk_merge_map
- Updated linter to
package:lints
4.1.3 #
- Updated README
4.1.2 #
- Updated README
- Fixed NNBD issues
4.1.1 #
- Updated link to
Angel3
home page - Fixed pedantic warnings
4.1.0 #
- Replaced
http_server
withbelatuk_http_server
4.0.4 #
- Fixed response returning incorrect status code
4.0.3 #
- Fixed "Primitive after parsed param injection" test case
- Fixed "Cannot remove all unless explicitly set" test case
- Fixed "null" test case
4.0.2 #
- Updated README
4.0.1 #
- Updated README
4.0.0 #
- Migrated to support Dart >= 2.12 NNBD
3.0.0 #
- Migrated to work with Dart >= 2.12 Non NNBD
2.1.1 #
AngelHttp.uri
now returns an emptyUri
if the server is not listening.
2.1.0 #
- This release was originally planned to be
2.0.5
, but it adds several features, and has therefore been bumped to2.1.0
. - Fix a new (did not appear before 2.6/2.7) type error causing compilation to fail. https://github.com/angel-dart/framework/issues/249
2.0.5-beta #
- Make
@Expose()
inController
optional. https://github.com/angel-dart/angel/issues/107 - Add
allowHttp1
toAngelHttp2
constructors. https://github.com/angel-dart/angel/issues/108 - Add
deserializeBody
anddecodeBody
toRequestContext
. https://github.com/angel-dart/angel/issues/109 - Add
HostnameRouter
, which allows for routing based on hostname. https://github.com/angel-dart/angel/issues/110 - Default to using
ThrowingReflector
, instead ofEmptyReflector
. This will give a more descriptive error when trying to use controllers, etc. without reflection enabled. mountController
returns the mounted controller.
2.0.4+1 #
- Run
Controller.configureRoutes
before mounting@Expose
routes. - Make
Controller.configureServer
always return aFuture
.
2.0.4 #
- Prepare for Dart SDK change to
Stream<List<int>>
that are nowStream<Uint8List>
. - Accept any content type if accept header is missing. See this PR.
2.0.3 #
- Patch up a bug caused by an upstream change to Dart's stream semantics. See more: https://github.com/angel-dart/angel/issues/106#issuecomment-499564485
2.0.2+1 #
- Fix a bug in the implementation of
Controller.applyRoutes
.
2.0.2 #
- Make
ResponseContext
explicitly implementStreamConsumer
(though technically it already did???) - Split
Controller.configureServer
to createController.applyRoutes
.
2.0.1 #
- Tracked down a bug in
Driver.runPipeline
that allowed fallback handlers to run, even after the response was closed. - Add
RequestContext.shutdownHooks
. - Call
RequestContext.close
inDriver.sendResponse
. - AngelConfigurer is now
FutureOr<void>
, instead of justFutureOr
. - Use a
Container.has<Stopwatch>
check inDriver.sendResponse
. - Remove unnecessary
new
andconst
.
2.0.0 #
- Angel 2! 👼 🚀
2.0.0-rc.10 #
- Fix an error that prevented
AngelHttp2.custom
from working properly. - Add
startSharedHttp2
.
2.0.0-rc.9 #
- Fix some bugs in the
HookedService
implementation that skipped the outputs ofbefore
events.
2.0.0-rc.8 #
- Fix
MapService
flaw where clients could remove all records, even ifallowRemoveAll
werefalse
.
2.0.0-rc.7 #
AnonymousService
can overridereadData
.Service.map
now overridesreadData
.HookedService.readData
forwards toinner
.
2.0.0-rc.6 #
- Make
redirect
anddownload
methods asynchronous.
2.0.0-rc.5 #
- Make
serializer
FutureOr<String> Function(Object)
. - Make
ResponseContext.serialize
returnFuture<bool>
.
2.0.0-rc.4 #
- Support resolution of asynchronous injections in controllers and
ioc
. - Inject
RequestContext
andResponseContext
into requests.
2.0.0-rc.3 #
MapService.modify
was not actually modifying items.
2.0.0-rc.2 #
- Fixes Pub analyzer lints (see
angel_route@3.0.6
)
2.0.0-rc.1 #
- Fix logic error that allowed content to be written to streaming responses after
close
was closed.
2.0.0-rc.0 #
- Log a warning when no
reflector
is provided. - Add
AngelEnvironment
class.- Add
Angel.environment
. - Deprecated
app.isProduction
in favor ofapp.environment.isProduction
.
- Add
- Allow setting of
bodyAsObject
,bodyAsMap
, orbodyAsList
exactly once. - Resolve named singletons in
resolveInjection
. - Fix a bug where
Service.parseId<double>
would attempt to parse anint
. - Replace as Data cast in Service.dart with a method that throws a 400 on error.
2.0.0-alpha.24 #
- Add
AngelEnv
class tocore
. - Deprecate
Angel.isProduction
, in favor ofAngelEnv
.
2.0.0-alpha.23 #
ResponseContext.render
setscharset
toutf8
incontentType
.
2.0.0-alpha.22 #
- Update pipeline handling mechanism, and inject a
MiddlewarePipelineIterator
.- This allows routes to know where in the resolution process they exist, at runtime.
2.0.0-alpha.21 #
- Update for
angel_route@3.0.4
compatibility. - Add
readAsBytes
andreadAsString
toUploadedFile
. - URI-decode path components in HTTP2.
2.0.0-alpha.20 #
- Inject the
MiddlewarePipeline
into requests.
2.0.0-alpha.19 #
parseBody
checks for null content type, and throws a400
if none was given.- Add
ResponseContext.contentLength
. - Update
streamFile
to set content length, and also to work onHEAD
requests.
2.0.0-alpha.18 #
- Upgrade
http2
dependency. - Upgrade
uuid
dependency. - Fixed a bug that prevented body parsing from ever completing with
http2
. - Add
Providers.hashCode
.
2.0.0-alpha.17 #
- Revert the migration to
lumberjack
for now. In the future, when it's more stable, there'll be a conversion, perhaps.
2.0.0-alpha.16 #
- Use
package:lumberjack
for logging.
2.0.0-alpha.15 #
- Remove dependency on
body_parser
. RequestContext
now exposes aStream<List<int>> get body
getter.- Calling
RequestContext.parseBody()
parses its contents. - Added
bodyAsMap
,bodyAsList
,bodyAsObject
, anduploadedFiles
toRequestContext
. - Removed
Angel.keepRawRequestBuffers
and anything that had to do with buffering request bodies.
- Calling
2.0.0-alpha.14 #
- Patch
HttpResponseContext._openStream
to send content-length.
2.0.0-alpha.13 #
- Fixed a logic error in
HttpResponseContext
that prevented status codes from being sent.
2.0.0-alpha.12 #
- Remove
ResponseContext.sendFile
. - Add
Angel.mimeTypeResolver
. - Fix a bug where an unknown MIME type on
streamFile
would return a 500.
2.0.0-alpha.11 #
- Add
readMany
toService
. - Allow
ResponseContext.redirect
to take aUri
. - Add
Angel.mountController
. - Add
Angel.findServiceOf
. - Roll in HTTP/2. See
pkg:angel_framework/http2.dart
.
2.0.0-alpha.10 #
- All calls to
Service.parseId
are now affixed with the<Id>
argument. - Added
uri
getter toAngelHttp
. - The default for
parseQuery
now wraps query parameters inMap<String, dynamic>.from
. This resolves a bug inpackage:angel_validate
.
2.0.0-alpha.9 #
- Add
Service.map
.
2.0.0-alpha.8 #
- No longer export HTTP-specific code from
angel_framework.dart
. An import ofimport 'package:angel_framework/http.dart';
will be necessary in most cases now.
2.0.0-alpha.7 #
- Force a tigher contract on services. They now must return
Data
on all methods except forindex
, which returns aList<Data>
.
2.0.0-alpha.6 #
- Allow passing a custom
Container
tohandleContained
and co.
2.0.0-alpha.5 #
MapService
methods now explicitly returnMap<String, dynamic>
.
2.0.0-alpha.4 #
- Renamed
waterfall
tochain
. - Renamed
Routable.service
toRoutable.findService
.- Also
Routable.findHookedService
.
- Also
2.0.0-alpha.3 #
- Added
<Id, Data>
type parameters toService
. HookedService
now follows suit, and takes a third parameter, pointing to the inner service.Routable.use
now uses the generic parameters added toService
.- Added generic usage to
HookedServiceListener
, etc. - All service methods take
Map<String, dynamic>
asparams
now.
2.0.0-alpha.2 #
- Added
ResponseContext.detach
.
2.0.0-alpha.1 #
- Removed
Angel.injectEncoders
. - Added
Providers.toJson
. - Moved
Providers.graphql
toProviders.graphQL
. Angel.optimizeForProduction
no longer callspreInject
, as it does not need to.- Rename
ResponseContext.enableBuffer
toResponseContext.useBuffer
.
2.0.0-alpha #
- Removed
random_string
dependency. - Moved reflection to
package:angel_container
. - Upgraded
package:file
to5.0.0
. ResponseContext.sendFile
now usespackage:file
.- Abandon
ContentType
in favor ofMediaType
. - Changed view engine to use
Map<String, dynamic>
. - Remove dependency on
package:json_god
by default. - Remove dependency on
package:dart2_constant
. - Moved
lib/hooks.dart
intopackage:angel_hooks
. - Moved
TypedService
intopackage:angel_typed_service
. - Completely removed the
AngelBase
class. - Removed all
@deprecated
symbols. Service.toId
was renamed toService.parseId
; it also now uses its single type argument to determine how to parse a value. * In addition, this method was also madestatic
.RequestContext
andResponseContext
are now generic, and take a single type argument pointing to the underlying request/response type, respectively.RequestContext.io
andResponseContext.io
are now permanently gone.HttpRequestContextImpl
andHttpResponseContextImpl
were renamed toHttpRequestContext
andHttpResponseContext
.- Lazy-parsing request bodies is now the default;
Angel.lazyParseBodies
was replaced withAngel.eagerParseRequestBodies
. Angel.storeOriginalBuffer
->Angel.storeRawRequestBuffers
.- The methods
lazyBody
,lazyFiles
, andlazyOriginalBuffer
onResponseContext
were all replaced withparseBody
,parseUploadedFiles
, andparseRawRequestBuffer
, respectively. - Removed the synchronous equivalents of the above methods (
body
,files
, andoriginalBuffer
), as well asquery
. - Removed
Angel.injections
andRequestContext.injections
. - Removed
Angel.inject
andRequestContext.inject
. - Removed a dependency on
package:pool
, which also meant removingAngelHttp.throttle
. - Remove the
RequestMiddleware
typedef; from now on, one should useResponseContext.end
exclusively to close responses. waterfall
will now only acceptRequestHandler
.Routable
, and all of its subclasses, now extendRouter<RequestHandler>
, and therefore only take routes in the form ofFutureOr myFunc(RequestContext, ResponseContext res)
.@Middleware
now takes anIterable
ofRequestHandler
s.@Expose.path
now must be aString
, not just anyPattern
.@Expose.middleware
now takesIterable<RequestHandler>
, instead of justList
.createDynamicHandler
was renamed toioc
, and is now used to run IoC-aware handlers in a type-safe manner.RequestContext.params
is now aMap<String, dynamic>
, rather than just aMap
.- Removed
RequestContext.grab
. - Removed
RequestContext.properties
. - Removed the defunct
debug
property where it still existed. Routable.use
now only accepts aService
.- Removed
Angel.createZoneForRequest
. - Removed
Angel.defaultZoneCreator
. - Added all flags to the
Angel
constructor, ex.Angel.eagerParseBodies
. - Fix a bug where synchronous errors in
handleRequest
would not be caught. AngelHttp.useZone
now defaults tofalse
.ResponseContext
now starts in streaming mode by default; the response buffer is opt-in, as in many cases it is unnecessary and slows down response time.ResponseContext.streaming
was replaced byResponseContext.isBuffered
.- Made
LockableBytesBuilder
public. - Removed the now-obsolete
ResponseContext.willCloseItself
. - Removed
ResponseContext.dispose
. - Removed the now-obsolete
ResponseContext.end
. - Removed the now-obsolete
ResponseContext.releaseCorrespondingRequest
. preInject
now takes aReflector
as its second argument.Angel.reflector
defaults toconst EmptyReflector()
, disabling reflection out-of-the-box.