- Adds
Request.acceptableContentTypes
andRequest.acceptsContentType
for convenient usage of Accept header. - Adds
AuthStorage.allowedScopesForAuthenticatable
to provide user attribute-based scoping, e.g. roles.
- Adds
ApplicationMessageHub
to send cross-isolate messages.
- Allow
HTTPCodecRepository.add
to use specify default charset for Content-Type if a request does not specify one.
- The default template created by
aqueduct create
is now mostly empty. Available templates can be listed withaqueduct create list-templates
and selected with the command-line option--template
. - Bug fixes where
aqueduct auth
would fail to insert new Client IDs. joinMany
andjoinOne
are deprecated, usejoin(set:)
andjoin(object:)
instead.HTTPCodecRepository
replacesResponse.addEncoder
andHTTPBody.addDecoder
.Stream
s may now beResponse
bodies.- Request bodies may be bound in
HTTPController
withHTTPBody
metadata. - Adds file serving with
HTTPFileController
. - Adds
HTTPCachePolicy
to control cache headers for aResponse
. Request.body
has significantly improved behavior and has been optimized.- Content-Length is included instead of
Transfer-Encoding: chunked
when the size of the response body can be determined efficiently.
- Adds
ResourceRegistry
: tracks port-consuming resources like database connections to ensure they are closed when an application shuts down during testing.
- Fixes race condition when stopping an application during test execution
- Adds validation behavior to
ManagedObject
s usingValidate
andManagedValidator
andManagedObject.validate
. ManagedObject
s now have callbackswillUpdate
andwillInsert
to modify their values before updating and inserting.- Fixes issue with
aqueduct serve
on Windows.
- Fixes issue with
aqueduct document
for routes usinglisten
- Fixes issue when using
TestClient
to execute requests with public OAuth2 client - Enables database migrations past the initial
aqueduct db generate
. - CLI tools print tool version, project version (when applicable)
- Allow binding to system-assigned port so tests can be run in parallel
- Change
aqueduct serve
default port to 8081 so can develop in parallel to Angular2 apps that default to 8080 - Remove
SecurityContext
reference fromApplicationConfiguration
. SSL configured via newaqueduct serve
argumentsssl-key-path
andssl-certificate-path
, or overridingsecurityContext
inRequestSink
.
- 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.
-
Added
RequestController.letUncaughtExceptionsEscape
for better debugging during tests. -
Persistent types for
ManagedObject
s can now have superclasses. -
ManagedRelationship
s now have a.deferred()
constructor. This allowsManagedObject
s to have relationships toManagedObject
s in other packages. -
Added
RequestSink.initializeApplication
method to do one-time startup tasks that were previously done in a start script. -
RequestSink
constructor now takesApplicationConfiguration
, instead ofMap
. -
Added
configurationFilePath
toApplicationConfiguration
. -
Improved error reporting from failed application startups.
-
Automatically lowercase headers in
Response
objects so that other parts of an application can accurately read their values during processing. -
Added
HTTPBody
object to represent HTTP request bodies inRequest
. Decoders are now added to this type. -
ORM: Renamed
Query.matchOn
toQuery.where
. -
ORM: Removed
includeInResultSet
forQuery
's, instead, addedjoinOn
andjoinMany
which create subqueries that can be configured further. -
ORM: Allow
Query.where
to reference properties in related objects without including related objects in results, i.e. can fetchParent
objects and filter them by values in theirChild
relationships. -
ORM: Joins can now be applied to belongsTo relationship properties.
-
ORM: Matchers such as
whereNull
andwhereNotNull
can be applied to a relationship property inQuery.where
. -
ORM: Renamed
ManagedSet.matchOn
toManagedSet.haveAtLeastOneWhere
. -
ORM: Added matchers for case-insensitive string matching, and added case-insensitive option to
whereEquals
andwhereNotEquals
. -
Auth: Added
aqueduct/managed_auth
library. Implements storage of OAuth 2.0 tokens usingManagedObject
s. 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 auth
tool to create client ID and secrets and add them to a database for applications using theaqueduct/managed_auth
package. -
Tooling: Added more user-friendly configuration options for
aqueduct db
tool. -
Tooling: Added
aqueduct setup --heroku
for setting up projects to be deployed to Heroku. -
Tooling: Added
aqueduct serve
command for running Aqueduct applications without having to write a start script. -
Tooling: Added
aqueduct document
command to generate OpenAPI specification for Aqueduct applications, instead of relying on a script that came with the template.
- BREAKING CHANGE: Added new
Response.contentType
property. Adding "Content-Type" to the headers of aResponse
no longer has any effect; use this property instead. ManagedDataModel
s now scan all libraries forManagedObject<T>
subclasses to generate a data model. UseManagedDataModel.fromCurrentMirrorSystem
to create instances ofManagedDataModel
.- The last instantiated
ManagedContext
now becomes theManagedContext.defaultContext
; prior to this change, it was the first instantiated context. AddedManagedContext.standalone
to 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.
- 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 type checking for transient map and list properties of ManagedObject.
- Add flags to
Process.runSync
that allow Windows user to useaqueduct
executable.
- Change behavior of isolate supervision. If an isolate has an uncaught exception, it logs the exception but does not restart the isolate.
- Initial stable release.