angel_framework
A high-powered HTTP server with dependency injection, routing and much more.
What this package is like to depend on
Last release 7 years ago
no release in 18 months
Ships fairly regularly
a new release about every 5 weeks
Rarely documented
notes for 9 of 56 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
194 releases · first in 2016
0 releases in the last 12 months
see the full history below
Release timeline
194 releases · Apr 2016 to Feb 2020Releases
latest 60 of 194-
2.1.105 Feb 2020 -
2.1.022 Nov 2019Release notes
Open source →- 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
- This release was originally planned to be
-
2.0.5-beta12 Oct 2019 pre-releaseRelease notes
Open source →- Make
@Expose()inControlleroptional. https://github.com/angel-dart/angel/issues/107 - Add
allowHttp1toAngelHttp2constructors. https://github.com/angel-dart/angel/issues/108 - Add
deserializeBodyanddecodeBodytoRequestContext. 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. mountControllerreturns the mounted controller.
- Make
-
2.0.409 Jul 2019Release notes
Open source →- 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.
- Prepare for Dart SDK change to
-
2.0.4+126 Jul 2019Release notes
Open source →- Run
Controller.configureRoutesbefore mounting@Exposeroutes. - Make
Controller.configureServeralways return aFuture.
- Run
-
2.0.306 Jun 2019Release notes
Open source →- 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.231 May 2019Release notes
Open source →- Make
ResponseContextexplicitly implementStreamConsumer(though technically it already did???) - Split
Controller.configureServerto createController.applyRoutes.
- Make
-
2.0.2+131 May 2019 -
2.0.102 May 2019Release notes
Open source →- Tracked down a bug in
Driver.runPipelinethat allowed fallback handlers to run, even after the response was closed. - Add
RequestContext.shutdownHooks. - Call
RequestContext.closeinDriver.sendResponse. - AngelConfigurer is now
FutureOr<void>, instead of justFutureOr. - Use a
Container.has<Stopwatch>check inDriver.sendResponse. - Remove unnecessary
newandconst.
- Tracked down a bug in
-
2.0.029 Apr 2019 -
2.0.0-rc.1028 Apr 2019 pre-releaseRelease notes
Open source →- Fix an error that prevented
AngelHttp2.customfrom working properly. - Add
startSharedHttp2.
- Fix an error that prevented
-
2.0.0-rc.926 Apr 2019 pre-releaseRelease notes
Open source →- Fix some bugs in the
HookedServiceimplementation that skipped the outputs ofbeforeevents.
- Fix some bugs in the
-
2.0.0-rc.820 Apr 2019 pre-releaseRelease notes
Open source →- Fix
MapServiceflaw where clients could remove all records, even ifallowRemoveAllwerefalse.
- Fix
-
2.0.0-rc.720 Apr 2019 pre-releaseRelease notes
Open source →AnonymousServicecan overridereadData.Service.mapnow overridesreadData.HookedService.readDataforwards toinner.
-
2.0.0-rc.619 Apr 2019 pre-release -
2.0.0-rc.517 Apr 2019 pre-releaseRelease notes
Open source →- Make
serializerFutureOr<String> Function(Object). - Make
ResponseContext.serializereturnFuture<bool>.
- Make
-
2.0.0-rc.417 Apr 2019 pre-releaseRelease notes
Open source →- Support resolution of asynchronous injections in controllers and
ioc. - Inject
RequestContextandResponseContextinto requests.
- Support resolution of asynchronous injections in controllers and
-
2.0.0-rc.311 Apr 2019 pre-release -
2.0.0-rc.211 Apr 2019 pre-release -
2.0.0-rc.111 Apr 2019 pre-releaseRelease notes
Open source →- Fix logic error that allowed content to be written to streaming responses after
closewas closed.
- Fix logic error that allowed content to be written to streaming responses after
-
2.0.0-rc.011 Apr 2019 pre-releaseRelease notes
Open source →- Log a warning when no
reflectoris provided. - Add
AngelEnvironmentclass.- Add
Angel.environment. - Deprecated
app.isProductionin favor ofapp.environment.isProduction.
- Add
- Allow setting of
bodyAsObject,bodyAsMap, orbodyAsListexactly 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.
- Log a warning when no
-
2.0.0-alpha.2311 Mar 2019 pre-release -
2.0.0-alpha.2203 Feb 2019 pre-releaseRelease notes
Open source →- Update pipeline handling mechanism, and inject a
MiddlewarePipelineIterator.- This allows routes to know where in the resolution process they exist, at runtime.
- Update pipeline handling mechanism, and inject a
-
2.0.0-alpha.2103 Feb 2019 pre-releaseRelease notes
Open source →- Update for
[email protected]compatibility. - Add
readAsBytesandreadAsStringtoUploadedFile. - URI-decode path components in HTTP2.
- Update for
-
2.0.0-alpha.2003 Feb 2019 pre-release -
2.0.0-alpha.1927 Jan 2019 pre-releaseRelease notes
Open source →parseBodychecks for null content type, and throws a400if none was given.- Add
ResponseContext.contentLength. - Update
streamFileto set content length, and also to work onHEADrequests.
-
2.0.0-alpha.1831 Dec 2018 pre-releaseRelease notes
Open source →- Upgrade
http2dependency. - Upgrade
uuiddependency. - Fixed a bug that prevented body parsing from ever completing with
http2. - Add
Providers.hashCode.
- Upgrade
-
2.0.0-alpha.1714 Dec 2018 pre-releaseRelease notes
Open source →- Revert the migration to
lumberjackfor now. In the future, when it's more stable, there'll be a conversion, perhaps.
- Revert the migration to
-
2.0.0-alpha.1611 Dec 2018 pre-release -
2.0.0-alpha.1509 Dec 2018 pre-releaseRelease notes
Open source →- Remove dependency on
body_parser. RequestContextnow exposes aStream<List<int>> get bodygetter.- Calling
RequestContext.parseBody()parses its contents. - Added
bodyAsMap,bodyAsList,bodyAsObject, anduploadedFilestoRequestContext. - Removed
Angel.keepRawRequestBuffersand anything that had to do with buffering request bodies.
- Calling
- Remove dependency on
-
2.0.0-alpha.1413 Nov 2018 pre-release -
2.0.0-alpha.1313 Nov 2018 pre-releaseRelease notes
Open source →- Fixed a logic error in
HttpResponseContextthat prevented status codes from being sent.
- Fixed a logic error in
-
2.0.0-alpha.1213 Nov 2018 pre-releaseRelease notes
Open source →- Remove
ResponseContext.sendFile. - Add
Angel.mimeTypeResolver. - Fix a bug where an unknown MIME type on
streamFilewould return a 500.
- Remove
-
2.0.0-alpha.1111 Nov 2018 pre-releaseRelease notes
Open source →- Add
readManytoService. - Allow
ResponseContext.redirectto take aUri. - Add
Angel.mountController. - Add
Angel.findServiceOf. - Roll in HTTP/2. See
pkg:angel_framework/http2.dart.
- Add
-
2.0.0-alpha.1006 Nov 2018 pre-releaseRelease notes
Open source →- All calls to
Service.parseIdare now affixed with the<Id>argument. - Added
urigetter toAngelHttp. - The default for
parseQuerynow wraps query parameters inMap<String, dynamic>.from. This resolves a bug inpackage:angel_validate.
- All calls to
-
2.0.0-alpha.922 Oct 2018 pre-release -
2.0.0-alpha.822 Oct 2018 pre-releaseRelease notes
Open source →- 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.
- No longer export HTTP-specific code from
-
2.0.0-alpha.721 Oct 2018 pre-releaseRelease notes
Open source →- Force a tigher contract on services. They now must return
Dataon all methods except forindex, which returns aList<Data>.
- Force a tigher contract on services. They now must return
-
2.0.0-alpha.621 Oct 2018 pre-release -
2.0.0-alpha.519 Oct 2018 pre-release -
2.0.0-alpha.412 Sep 2018 pre-releaseRelease notes
Open source →- Renamed
waterfalltochain. - Renamed
Routable.servicetoRoutable.findService.- Also
Routable.findHookedService.
- Also
- Renamed
-
2.0.0-alpha.311 Sep 2018 pre-releaseRelease notes
Open source →- Added
<Id, Data>type parameters toService. HookedServicenow follows suit, and takes a third parameter, pointing to the inner service.Routable.usenow uses the generic parameters added toService.- Added generic usage to
HookedServiceListener, etc. - All service methods take
Map<String, dynamic>asparamsnow.
- Added
-
2.0.0-alpha.228 Aug 2018 pre-release -
2.0.0-alpha.121 Aug 2018 pre-releaseRelease notes
Open source →- Removed
Angel.injectEncoders. - Added
Providers.toJson. - Moved
Providers.graphqltoProviders.graphQL. Angel.optimizeForProductionno longer callspreInject, as it does not need to.- Rename
ResponseContext.enableBuffertoResponseContext.useBuffer.
- Removed
-
2.0.0-alpha21 Aug 2018 pre-releaseRelease notes
Open source →- Removed
random_stringdependency. - Moved reflection to
package:angel_container. - Upgraded
package:fileto5.0.0. ResponseContext.sendFilenow usespackage:file.- Abandon
ContentTypein favor ofMediaType. - Changed view engine to use
Map<String, dynamic>. - Remove dependency on
package:json_godby default. - Remove dependency on
package:dart2_constant. - Moved
lib/hooks.dartintopackage:angel_hooks. - Moved
TypedServiceintopackage:angel_typed_service. - Completely removed the
AngelBaseclass. - Removed all
@deprecatedsymbols. Service.toIdwas 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.RequestContextandResponseContextare now generic, and take a single type argument pointing to the underlying request/response type, respectively.RequestContext.ioandResponseContext.ioare now permanently gone.HttpRequestContextImplandHttpResponseContextImplwere renamed toHttpRequestContextandHttpResponseContext.- Lazy-parsing request bodies is now the default;
Angel.lazyParseBodieswas replaced withAngel.eagerParseRequestBodies. Angel.storeOriginalBuffer->Angel.storeRawRequestBuffers.- The methods
lazyBody,lazyFiles, andlazyOriginalBufferonResponseContextwere all replaced withparseBody,parseUploadedFiles, andparseRawRequestBuffer, respectively. - Removed the synchronous equivalents of the above methods (
body,files, andoriginalBuffer), as well asquery. - Removed
Angel.injectionsandRequestContext.injections. - Removed
Angel.injectandRequestContext.inject. - Removed a dependency on
package:pool, which also meant removingAngelHttp.throttle. - Remove the
RequestMiddlewaretypedef; from now on, one should useResponseContext.endexclusively to close responses. waterfallwill 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).@Middlewarenow takes anIterableofRequestHandlers.@Expose.pathnow must be aString, not just anyPattern.@Expose.middlewarenow takesIterable<RequestHandler>, instead of justList.createDynamicHandlerwas renamed toioc, and is now used to run IoC-aware handlers in a type-safe manner.RequestContext.paramsis now aMap<String, dynamic>, rather than just aMap.- Removed
RequestContext.grab. - Removed
RequestContext.properties. - Removed the defunct
debugproperty where it still existed. Routable.usenow only accepts aService.- Removed
Angel.createZoneForRequest. - Removed
Angel.defaultZoneCreator. - Added all flags to the
Angelconstructor, ex.Angel.eagerParseBodies. - Fix a bug where synchronous errors in
handleRequestwould not be caught. AngelHttp.useZonenow defaults tofalse.ResponseContextnow 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.streamingwas replaced byResponseContext.isBuffered.- Made
LockableBytesBuilderpublic. - Removed the now-obsolete
ResponseContext.willCloseItself. - Removed
ResponseContext.dispose. - Removed the now-obsolete
ResponseContext.end. - Removed the now-obsolete
ResponseContext.releaseCorrespondingRequest. preInjectnow takes aReflectoras its second argument.Angel.reflectordefaults toconst EmptyReflector(), disabling reflection out-of-the-box.
- Removed
-
1.1.512 Jul 2018Nothing published for this version
-
1.1.5+104 Aug 2018Nothing published for this version
-
1.1.408 Jun 2018Nothing published for this version
-
1.1.4+108 Jun 2018Nothing published for this version
-
1.1.4+210 Jun 2018Nothing published for this version
-
1.1.4+310 Jun 2018Nothing published for this version
-
1.1.4+420 Jun 2018Nothing published for this version
-
1.1.4+523 Jun 2018Nothing published for this version
-
1.1.4+623 Jun 2018Nothing published for this version
-
1.1.4+727 Jun 2018Nothing published for this version
-
1.1.4+909 Jul 2018Nothing published for this version
-
1.1.4+1009 Jul 2018Nothing published for this version
-
1.1.4+1109 Jul 2018Nothing published for this version
-
1.1.316 May 2018Nothing published for this version
-
1.1.230 Mar 2018Nothing published for this version