aqueduct
A modern HTTP server application framework, ORM and OAuth2 provider with OpenAPI 3.0 integration. Foundation for REST, RPC or GraphQL services.
3.3.0
What this package is like to depend on
Last release 6 years ago
no release in 18 months
Ships unpredictably
gaps range from 2 weeks to 12 months
Most releases are documented
notes for 26 of 33 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
38 releases · first in 2016
0 releases in the last 12 months
see the full history below
Release timeline
38 releases · Jun 2016 to Jun 2020Releases
latest 38-
4.0.0-b101 Jun 2020 pre-releaseNothing published for this version
-
3.3.012 Apr 2020Nothing published for this version
-
3.3.0+103 May 2020 -
3.3.0-b108 Apr 2020 pre-releaseNothing published for this version
-
3.2.119 Apr 2019Release notes
Open source →- Fixes issue when using
QueryReduceinside a transaction. - Fixes issue when generating an OpenAPI document with ManagedObjects that have enumerated properties
- Fixes issue when generating an OpenAPI document with List<Serializable> bound to a request body
- Fixes issue when using
-
3.2.007 Mar 2019Release notes
Open source →- Adds
readmethod toSerializablefor filtering, ignoring or rejecting keys. - Fixes issues with Dart 2.1.1 mirror type checking changes
- Adds
likematcher expression - Escapes postgres special characters in LIKE expressions for all other string matcher expressions
- Fixes security vulnerability where a specific authorization header value would be associated with the wrong token in rare cases (credit to Philipp Schiffmann)
- Adds
Validate.constantto properties that use the@primaryKeyannotation. - Allows
Validateannotations to be added to belongs-to relationship properties; the validation is run on the foreign key. - Allows any type - e.g.
Map<String, dynamic>- to be bound withBind.body.
- Adds
-
3.2.0+105 Apr 2019Nothing published for this version
-
3.1.017 Dec 2018Release notes
Open source →- Adds the implicit authorization grant flow via the
AuthRedirectControllertype. - Deprecates
AuthCodeControllerin favor ofAuthRedirectController. - Improves speed of many database CLI commands
- Improves error messaging of the CLI; no longer includes stack trace for expected errors.
- Allows self-referencing and cyclical relationships between managed objects
- Fixes bug where ManagedObjects cannot have mixins
- Adds
ManagedContext.insertObject,ManagedContext.insertObjectsandManagedContext.fetchObjectWithID.
- Adds the implicit authorization grant flow via the
-
3.1.0+118 Dec 2018Nothing published for this version
-
3.1.0-beta.115 Nov 2018 pre-releaseNothing published for this version
-
3.0.227 Sep 2018Release notes
Open source →- Fix regression when generating OpenAPI documentation for
ManagedObjects - Adds
--resolve-relative-urlsflag todocumentcommands to improve client applications - Adds
Serializable.documentSchemainstance method. RemovesSerializable.documentstatic method. - Adds optional
valuesargument toQueryconstructor
- Fix regression when generating OpenAPI documentation for
-
3.0.131 Aug 2018Release notes
Open source →Controlleris now an abstract class that requires implementinghandle. This is a minor breaking change that should not have an impact.- 'Serializable' can now implement static 'document' method to override component documentation behavior
- Removes
aqueduct setup --heroku=<name>and instead points to documentation. - Fixes issue ORM had with transformed values (e.g. enums) and nullable columns
-
3.0.006 Aug 2018Release notes
Open source →- Adds
BodyDecoder.decode<T>andBodyDecoder.as<T>. This replaces existingdecodeAs*andas*methods. - Adds
AuthDelegate.addClientandAuthServer.addClient. - Adds
ManagedContext.transactionto enable queries to be run in a database transaction. - Adds 'Scope' annotation to add granular scoping to
ResourceControllermethods. - Adds
Recyclable<T>to control whether controllers are instantiated per request or are reused. - Adds support for storing PostgreSQL JSONB data with
Documentdata type. - Adds
Query.insertObject. - Adds support for OpenAPI 3.0.0 documentation generation.
- Adds
APIComponentDocumenter,APIOperationDocumenter,APIDocumentContext. - Removes
PackagePathResolver,ApplicationOptions.isDocumentingandAPIDocumentable.
- Adds
- Adds
MockHTTPServer.queueHandlerandMockHTTPServer.queueOutage. Query.wherebehavior has changed to consistently use property selector syntax.- Removes methods like
whereEqualToand replaced withQueryExpression.
- Removes methods like
Controller.generaterenamed toController.link. RemovedController.pipe.package:aqueduct/testmoved topackage:aqueduct_test/aqueduct_test, which is a separate dependency fromaqueduct.- Renames methods in
AuthDelegateto provide consistency. - Removes
ManagedContext.defaultContext; context usage must be explicit. - Removes
HTTPResponseException. Responses can now be thrown instead. QueryExceptions are no longer thrown for every ORM exception. If a store chooses to interpret an exception, it will still throw aQueryException. Otherwise, the underlying driver exception will be thrown.- Default constructor for
PostgreSQLPersistentStorenow takes connection info instead of closure. Controller.listenrenamedController.linkFunction.- Change default port for
aqueduct serveto 8888. - Binding metadata -
HTTPPath,HTTPBody,HTTPQueryandHTTPHeader- have been changed toBind.path,Bind.body,Bind.queryandBind.header, respectively. - Remove
@httpGet(and otherHTTPMethodannotations) constants. Behavior replaced by@Operation. - Removes
runOnMainIsolatefromApplication.start()and addedApplication.startOnMainIsolate()as replacement. - Removes
ManagedSet.haveAtLeastOneWhere. - Renames
RequestSinktoApplicationChannel.- Replace constructor and
willOpenwithprepare. - Replace
setupRouterwithentryPoint.
- Replace constructor and
- Replaces
AuthCodeController.renderFunctionwithAuthCodeControllerDelegate. - Removes
AuthStrategyin place ofAuthorizationParser<T>.- Adds concrete implementations of
AuthorizationParser<T>,AuthorizationBearerParserandAuthorizationBasicParser.
- Adds concrete implementations of
- Removes
AuthValidator.fromBearerTokenandAuthValidator.fromBasicCredentialsand replaces withAuthValidator.validate<T>. - Renames the following:
Authorization.resourceOwnerIdentifier->Authorization.ownerIDRequest.innerRequest->Request.rawAuthStorage->AuthServerDelegateAuthServer.storage->AuthServer.delegateApplicationConfiguration->ApplicationOptionsApplication.configuration->Application.optionsHTTPFileController->FileControllerHTTPSerializable->SerializableHTTPCachePolicy->CachePolicyHTTPCodecRepository->CodecRegistryrequiredHTTPParameter->requiredBindingManagedTableAttributes->TableManagedRelationshipDeleteRule->DeleteRuleManagedRelationship->RelateManagedColumnAttributes->ColumnmanagedPrimaryKey->primaryKeyManagedTransientAttribute->SerializeSerializenow replacesmanagedTransientAttribute,managedTransientInputAttribute, andmanagedTransientOutputAttribute.
RequestController->ControllerRequestController.processRequest->Controller.handleHTTPController->ResourceController
- Adds
-
3.0.0-beta.224 Jul 2018 pre-releaseNothing published for this version
-
3.0.0-beta.122 Jul 2018 pre-releaseNothing published for this version
-
2.5.012 Oct 2017Release notes
Open source →- Adds
aqueduct db schemato print an application's data model. - Adds
aqueduct document servethat serves the API documentation for an application. - Adds
--machineflag toaqueducttool to only emit machine-readable output. - Adds
defaultDelaytoMockHTTPServer. Defaults to null for no delay. - Adds
defaultResponsetoMockHTTPServer. Defaults to a 503 response instead of a 200. - Adds option to set a custom delay for a specific response in
MockHTTPServer'squeueResponsefunction. - Performance improvements
- Adds
-
2.5.0+101 Dec 2017Nothing published for this version
-
2.4.030 Aug 2017Release notes
Open source →- Adds
HTTPRequestBody.maxSizeto limit HTTP request body sizes. Defaults to 10MB. - Adds
ManagedTableAttributesto configure underlying database table to use multiple columns to test for uniqueness.
- Adds
-
2.3.222 Jul 2017Release notes
Open source →- Adds
Request.addResponseModifierto allow middleware to modify responses.
- Adds
-
2.3.120 Jul 2017Release notes
Open source →- Adds
Response.bufferOutputto control whether the HTTP response bytes are buffered. - Adds
whereNotto apply an inverse to otherQuery.whereexpression, e.g.whereNot(whereIn(["a", "b"])). - Fixes bug where subclassing
ManagedObjectControllerdidn't work. - Renames
ResourceRegistrytoServiceRegistry. - Improves feedback and interface for
package:aqueduct/test.dart.
- Adds
-
2.3.029 Jun 2017Release notes
Open source →- Adds
Request.acceptableContentTypesandRequest.acceptsContentTypefor convenient usage of Accept header. - Adds
AuthStorage.allowedScopesForAuthenticatableto provide user attribute-based scoping, e.g. roles. - Adds
Query.forEntityandManagedObjectController.forEntityto dynamically instantiate these types, i.e. use runtime values to build the query. - Adds
PersistentStore.newQuery- allows aPersistentStoreimplementation to provide its own implementation ofQueryspecific to its underlying database. - Adds
Query.reduceto perform aggregate functions on database tables, e.g. sum, average, maximum, etc. enums may be used as persistent properties inManagedObject<T>. The underlying database will store them a strings.- Speed of generating a template project has been greatly improved.
- Adds
-
2.2.210 Jun 2017 -
2.2.102 Jun 2017Release notes
Open source →- Allow
HTTPCodecRepository.addto use specify default charset for Content-Type if a request does not specify one.
- Allow
-
2.2.001 Jun 2017Release notes
Open source →- The default template created by
aqueduct createis now mostly empty. Available templates can be listed withaqueduct create list-templatesand selected with the command-line option--template. - Bug fixes where
aqueduct authwould fail to insert new Client IDs. joinManyandjoinOneare deprecated, usejoin(set:)andjoin(object:)instead.HTTPCodecRepositoryreplacesResponse.addEncoderandHTTPBody.addDecoder.Streams may now beResponsebodies.- Request bodies may be bound in
HTTPControllerwithHTTPBodymetadata. - Adds file serving with
HTTPFileController. - Adds
HTTPCachePolicyto control cache headers for aResponse. Request.bodyhas significantly improved behavior and has been optimized.- Content-Length is included instead of
Transfer-Encoding: chunkedwhen the size of the response body can be determined efficiently.
- The default template created by
-
2.1.128 Apr 2017Release notes
Open source →- Adds
ResourceRegistry: tracks port-consuming resources like database connections to ensure they are closed when an application shuts down during testing.
- Adds
-
2.1.027 Apr 2017Release notes
Open source →- Fixes race condition when stopping an application during test execution
- Adds validation behavior to
ManagedObjects usingValidateandManagedValidatorandManagedObject.validate. ManagedObjects now have callbackswillUpdateandwillInsertto modify their values before updating and inserting.- Fixes issue with
aqueduct serveon Windows.
-
2.0.326 Apr 2017Release notes
Open source →- Fixes issue with
aqueduct documentfor routes usinglisten - Fixes issue when using
TestClientto execute requests with public OAuth2 client - Enables database migrations past the initial
aqueduct db generate. - CLI tools print tool version, project version (when applicable)
- Fixes issue with
-
2.0.3+126 Apr 2017Nothing published for this version
-
2.0.207 Apr 2017Release notes
Open source →- Allow binding to system-assigned port so tests can be run in parallel
- Change
aqueduct servedefault port to 8081 so can develop in parallel to Angular2 apps that default to 8080 - Remove
SecurityContextreference fromApplicationConfiguration. SSL configured via newaqueduct serveargumentsssl-key-pathandssl-certificate-path, or overridingsecurityContextinRequestSink.
-
2.0.110 Mar 2017Release notes
Open source →- Fixes issue where some types of join queries would access the wrong properties
- Fixes issue where an object cannot be inserted without values; this matters when the inserted values will be created by the database.
-
2.0.002 Mar 2017Release notes
Open source →-
Added
RequestController.letUncaughtExceptionsEscapefor better debugging during tests. -
Persistent types for
ManagedObjects can now have superclasses. -
ManagedRelationships now have a.deferred()constructor. This allowsManagedObjects to have relationships toManagedObjects in other packages. -
Added
RequestSink.initializeApplicationmethod to do one-time startup tasks that were previously done in a start script. -
RequestSinkconstructor now takesApplicationConfiguration, instead ofMap. -
Added
configurationFilePathtoApplicationConfiguration. -
Improved error reporting from failed application startups.
-
Automatically lowercase headers in
Responseobjects so that other parts of an application can accurately read their values during processing. -
Added
HTTPBodyobject to represent HTTP request bodies inRequest. Decoders are now added to this type. -
ORM: Renamed
Query.matchOntoQuery.where. -
ORM: Removed
includeInResultSetforQuery's, instead, addedjoinOnandjoinManywhich create subqueries that can be configured further. -
ORM: Allow
Query.whereto reference properties in related objects without including related objects in results, i.e. can fetchParentobjects and filter them by values in theirChildrelationships. -
ORM: Joins can now be applied to belongsTo relationship properties.
-
ORM: Matchers such as
whereNullandwhereNotNullcan be applied to a relationship property inQuery.where. -
ORM: Renamed
ManagedSet.matchOntoManagedSet.haveAtLeastOneWhere. -
ORM: Added matchers for case-insensitive string matching, and added case-insensitive option to
whereEqualsandwhereNotEquals. -
Auth: Added
aqueduct/managed_authlibrary. Implements storage of OAuth 2.0 tokens usingManagedObjects. See API reference for more details. -
Auth: Improved error and response messaging to better align with the OAuth 2.0 spec, especially with regards to the authorization code flow.
-
Auth: Added distinction between public and confidential clients, as defined by OAuth 2.0 spec.
-
Auth: Improved class and property naming.
-
Tooling: Added
aqueduct authtool to create client ID and secrets and add them to a database for applications using theaqueduct/managed_authpackage. -
Tooling: Added more user-friendly configuration options for
aqueduct dbtool. -
Tooling: Added
aqueduct setup --herokufor setting up projects to be deployed to Heroku. -
Tooling: Added
aqueduct servecommand for running Aqueduct applications without having to write a start script. -
Tooling: Added
aqueduct documentcommand to generate OpenAPI specification for Aqueduct applications, instead of relying on a script that came with the template.
-
-
1.0.407 Dec 2016Release notes
Open source →- BREAKING CHANGE: Added new
Response.contentTypeproperty. Adding "Content-Type" to the headers of aResponseno longer has any effect; use this property instead. ManagedDataModels now scan all libraries forManagedObject<T>subclasses to generate a data model. UseManagedDataModel.fromCurrentMirrorSystemto create instances ofManagedDataModel.- The last instantiated
ManagedContextnow becomes theManagedContext.defaultContext; prior to this change, it was the first instantiated context. AddedManagedContext.standaloneto opt out of setting the default context. - @HTTPQuery parameters in HTTPController responder method will now only allow multiple keys in the query string if and only if the argument type is a List.
- BREAKING CHANGE: Added new
-
1.0.314 Nov 2016Release notes
Open source →- Fix to allow Windows user to use
aqueduct setup. - Fix to CORS processing.
- HTTPControllers now return 405 if there is no responder method match for a request.
- Fix to allow Windows user to use
-
1.0.204 Nov 2016Release notes
Open source →- Fix type checking for transient map and list properties of ManagedObject.
- Add flags to
Process.runSyncthat allow Windows user to useaqueductexecutable.
-
1.0.120 Oct 2016Release notes
Open source →- Change behavior of isolate supervision. If an isolate has an uncaught exception, it logs the exception but does not restart the isolate.
-
1.0.018 Oct 2016 -
1.0.0+118 Oct 2016Nothing published for this version
-
0.9.026 Jun 2016Nothing published for this version