aqueduct 3.3.0+1
aqueduct: ^3.3.0+1 copied to clipboard
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+1 #
- Temporary fix to issue where pre-release version is selected.
3.2.1 #
- 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
3.2.0 #
- 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.
3.1.0 #
- 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.
3.0.2 #
- 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
3.0.1 #
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.0 #
- 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
2.5.0 #
- 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
2.4.0 #
- 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.
2.3.2 #
- Adds
Request.addResponseModifierto allow middleware to modify responses.
2.3.1 #
- 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.
2.3.0 #
- 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.
2.2.2 #
- Adds
ApplicationMessageHubto send cross-isolate messages.
2.2.1 #
- Allow
HTTPCodecRepository.addto use specify default charset for Content-Type if a request does not specify one.
2.2.0 #
- 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.
2.1.1 #
- Adds
ResourceRegistry: tracks port-consuming resources like database connections to ensure they are closed when an application shuts down during testing.
2.1.0 #
- 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.3 #
- 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)
2.0.2 #
- 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.1 #
- 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.0 #
-
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.4 #
- 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.
1.0.3 #
- 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.
1.0.2 #
- Fix type checking for transient map and list properties of ManagedObject.
- Add flags to
Process.runSyncthat allow Windows user to useaqueductexecutable.
1.0.1 #
- Change behavior of isolate supervision. If an isolate has an uncaught exception, it logs the exception but does not restart the isolate.
1.0.0 #
- Initial stable release.