PackageTrack
Sign in Get early access

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 2020
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 38
  1. 4.0.0-b1 01 Jun 2020 pre-release

    Nothing published for this version

  2. 3.3.0 12 Apr 2020

    Nothing published for this version

  3. 3.3.0+1 03 May 2020
    Release notes
    • Temporary fix to issue where pre-release version is selected.
    Open source →
  4. 3.3.0-b1 08 Apr 2020 pre-release

    Nothing published for this version

  5. 3.2.1 19 Apr 2019
    Release notes
    • Fixes issue when using QueryReduce inside 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
    Open source →
  6. 3.2.0 07 Mar 2019
    Release notes
    • Adds read method to Serializable for filtering, ignoring or rejecting keys.
    • Fixes issues with Dart 2.1.1 mirror type checking changes
    • Adds like matcher 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.constant to properties that use the @primaryKey annotation.
    • Allows Validate annotations 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 with Bind.body.
    Open source →
  7. 3.2.0+1 05 Apr 2019

    Nothing published for this version

  8. 3.1.0 17 Dec 2018
    Release notes
    • Adds the implicit authorization grant flow via the AuthRedirectController type.
    • Deprecates AuthCodeController in favor of AuthRedirectController.
    • 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.insertObjects and ManagedContext.fetchObjectWithID.
    Open source →
  9. 3.1.0+1 18 Dec 2018

    Nothing published for this version

  10. 3.1.0-beta.1 15 Nov 2018 pre-release

    Nothing published for this version

  11. 3.0.2 27 Sep 2018
    Release notes
    • Fix regression when generating OpenAPI documentation for ManagedObjects
    • Adds --resolve-relative-urls flag to document commands to improve client applications
    • Adds Serializable.documentSchema instance method. Removes Serializable.document static method.
    • Adds optional values argument to Query constructor
    Open source →
  12. 3.0.1 31 Aug 2018
    Release notes
    • Controller is now an abstract class that requires implementing handle. 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
    Open source →
  13. 3.0.0 06 Aug 2018
    Release notes
    • Adds BodyDecoder.decode<T> and BodyDecoder.as<T>. This replaces existing decodeAs* and as* methods.
    • Adds AuthDelegate.addClient and AuthServer.addClient.
    • Adds ManagedContext.transaction to enable queries to be run in a database transaction.
    • Adds 'Scope' annotation to add granular scoping to ResourceController methods.
    • Adds Recyclable<T> to control whether controllers are instantiated per request or are reused.
    • Adds support for storing PostgreSQL JSONB data with Document data type.
    • Adds Query.insertObject.
    • Adds support for OpenAPI 3.0.0 documentation generation.
      • Adds APIComponentDocumenter, APIOperationDocumenter, APIDocumentContext.
      • Removes PackagePathResolver, ApplicationOptions.isDocumenting and APIDocumentable.
    • Adds MockHTTPServer.queueHandler and MockHTTPServer.queueOutage.
    • Query.where behavior has changed to consistently use property selector syntax.
      • Removes methods like whereEqualTo and replaced with QueryExpression.
    • Controller.generate renamed to Controller.link. Removed Controller.pipe.
    • package:aqueduct/test moved to package:aqueduct_test/aqueduct_test, which is a separate dependency from aqueduct.
    • Renames methods in AuthDelegate to 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 a QueryException. Otherwise, the underlying driver exception will be thrown.
    • Default constructor for PostgreSQLPersistentStore now takes connection info instead of closure.
    • Controller.listen renamed Controller.linkFunction.
    • Change default port for aqueduct serve to 8888.
    • Binding metadata - HTTPPath, HTTPBody, HTTPQuery and HTTPHeader - have been changed to Bind.path, Bind.body, Bind.query and Bind.header, respectively.
    • Remove @httpGet (and other HTTPMethod annotations) constants. Behavior replaced by @Operation.
    • Removes runOnMainIsolate from Application.start() and added Application.startOnMainIsolate() as replacement.
    • Removes ManagedSet.haveAtLeastOneWhere.
    • Renames RequestSink to ApplicationChannel.
      • Replace constructor and willOpen with prepare.
      • Replace setupRouter with entryPoint.
    • Replaces AuthCodeController.renderFunction with AuthCodeControllerDelegate.
    • Removes AuthStrategy in place of AuthorizationParser<T>.
      • Adds concrete implementations of AuthorizationParser<T>, AuthorizationBearerParser and AuthorizationBasicParser.
    • Removes AuthValidator.fromBearerToken and AuthValidator.fromBasicCredentials and replaces with AuthValidator.validate<T>.
    • Renames the following:
      • Authorization.resourceOwnerIdentifier -> Authorization.ownerID
      • Request.innerRequest -> Request.raw
      • AuthStorage -> AuthServerDelegate
      • AuthServer.storage -> AuthServer.delegate
      • ApplicationConfiguration -> ApplicationOptions
      • Application.configuration -> Application.options
      • HTTPFileController -> FileController
      • HTTPSerializable -> Serializable
      • HTTPCachePolicy -> CachePolicy
      • HTTPCodecRepository -> CodecRegistry
      • requiredHTTPParameter -> requiredBinding
      • ManagedTableAttributes -> Table
      • ManagedRelationshipDeleteRule -> DeleteRule
      • ManagedRelationship -> Relate
      • ManagedColumnAttributes -> Column
      • managedPrimaryKey -> primaryKey
      • ManagedTransientAttribute -> Serialize
        • Serialize now replaces managedTransientAttribute, managedTransientInputAttribute, and managedTransientOutputAttribute.
      • RequestController -> Controller
      • RequestController.processRequest -> Controller.handle
      • HTTPController -> ResourceController
    Open source →
  14. 3.0.0-beta.2 24 Jul 2018 pre-release

    Nothing published for this version

  15. 3.0.0-beta.1 22 Jul 2018 pre-release

    Nothing published for this version

  16. 2.5.0 12 Oct 2017
    Release notes
    • Adds aqueduct db schema to print an application's data model.
    • Adds aqueduct document serve that serves the API documentation for an application.
    • Adds --machine flag to aqueduct tool to only emit machine-readable output.
    • Adds defaultDelay to MockHTTPServer. Defaults to null for no delay.
    • Adds defaultResponse to MockHTTPServer. Defaults to a 503 response instead of a 200.
    • Adds option to set a custom delay for a specific response in MockHTTPServer's queueResponse function.
    • Performance improvements
    Open source →
  17. 2.5.0+1 01 Dec 2017

    Nothing published for this version

  18. 2.4.0 30 Aug 2017
    Release notes
    • Adds HTTPRequestBody.maxSize to limit HTTP request body sizes. Defaults to 10MB.
    • Adds ManagedTableAttributes to configure underlying database table to use multiple columns to test for uniqueness.
    Open source →
  19. 2.3.2 22 Jul 2017
    Release notes
    • Adds Request.addResponseModifier to allow middleware to modify responses.
    Open source →
  20. 2.3.1 20 Jul 2017
    Release notes
    • Adds Response.bufferOutput to control whether the HTTP response bytes are buffered.
    • Adds whereNot to apply an inverse to other Query.where expression, e.g. whereNot(whereIn(["a", "b"])).
    • Fixes bug where subclassing ManagedObjectController didn't work.
    • Renames ResourceRegistry to ServiceRegistry.
    • Improves feedback and interface for package:aqueduct/test.dart.
    Open source →
  21. 2.3.0 29 Jun 2017
    Release notes
    • Adds Request.acceptableContentTypes and Request.acceptsContentType for convenient usage of Accept header.
    • Adds AuthStorage.allowedScopesForAuthenticatable to provide user attribute-based scoping, e.g. roles.
    • Adds Query.forEntity and ManagedObjectController.forEntity to dynamically instantiate these types, i.e. use runtime values to build the query.
    • Adds PersistentStore.newQuery - allows a PersistentStore implementation to provide its own implementation of Query specific to its underlying database.
    • Adds Query.reduce to perform aggregate functions on database tables, e.g. sum, average, maximum, etc.
    • enums may be used as persistent properties in ManagedObject<T>. The underlying database will store them a strings.
    • Speed of generating a template project has been greatly improved.
    Open source →
  22. 2.2.2 10 Jun 2017
    Release notes
    • Adds ApplicationMessageHub to send cross-isolate messages.
    Open source →
  23. 2.2.1 02 Jun 2017
    Release notes
    • Allow HTTPCodecRepository.add to use specify default charset for Content-Type if a request does not specify one.
    Open source →
  24. 2.2.0 01 Jun 2017
    Release notes
    • The default template created by aqueduct create is now mostly empty. Available templates can be listed with aqueduct create list-templates and selected with the command-line option --template.
    • Bug fixes where aqueduct auth would fail to insert new Client IDs.
    • joinMany and joinOne are deprecated, use join(set:) and join(object:) instead.
    • HTTPCodecRepository replaces Response.addEncoder and HTTPBody.addDecoder.
    • Streams may now be Response bodies.
    • Request bodies may be bound in HTTPController with HTTPBody metadata.
    • Adds file serving with HTTPFileController.
    • Adds HTTPCachePolicy to control cache headers for a Response.
    • 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.
    Open source →
  25. 2.1.1 28 Apr 2017
    Release notes
    • Adds ResourceRegistry: tracks port-consuming resources like database connections to ensure they are closed when an application shuts down during testing.
    Open source →
  26. 2.1.0 27 Apr 2017
    Release notes
    • Fixes race condition when stopping an application during test execution
    • Adds validation behavior to ManagedObjects using Validate and ManagedValidator and ManagedObject.validate.
    • ManagedObjects now have callbacks willUpdate and willInsert to modify their values before updating and inserting.
    • Fixes issue with aqueduct serve on Windows.
    Open source →
  27. 2.0.3 26 Apr 2017
    Release notes
    • Fixes issue with aqueduct document for routes using listen
    • 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)
    Open source →
  28. 2.0.3+1 26 Apr 2017

    Nothing published for this version

  29. 2.0.2 07 Apr 2017
    Release notes
    • 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 from ApplicationConfiguration. SSL configured via new aqueduct serve arguments ssl-key-path and ssl-certificate-path, or overriding securityContext in RequestSink.
    Open source →
  30. 2.0.1 10 Mar 2017
    Release notes
    • 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.
    Open source →
  31. 2.0.0 02 Mar 2017
    Release notes
    • Added RequestController.letUncaughtExceptionsEscape for better debugging during tests.

    • Persistent types for ManagedObjects can now have superclasses.

    • ManagedRelationships now have a .deferred() constructor. This allows ManagedObjects to have relationships to ManagedObjects in other packages.

    • Added RequestSink.initializeApplication method to do one-time startup tasks that were previously done in a start script.

    • RequestSink constructor now takes ApplicationConfiguration, instead of Map.

    • Added configurationFilePath to ApplicationConfiguration.

    • 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 in Request. Decoders are now added to this type.

    • ORM: Renamed Query.matchOn to Query.where.

    • ORM: Removed includeInResultSet for Query's, instead, added joinOn and joinMany 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 fetch Parent objects and filter them by values in their Child relationships.

    • ORM: Joins can now be applied to belongsTo relationship properties.

    • ORM: Matchers such as whereNull and whereNotNull can be applied to a relationship property in Query.where.

    • ORM: Renamed ManagedSet.matchOn to ManagedSet.haveAtLeastOneWhere.

    • ORM: Added matchers for case-insensitive string matching, and added case-insensitive option to whereEquals and whereNotEquals.

    • Auth: Added aqueduct/managed_auth library. Implements storage of OAuth 2.0 tokens using ManagedObjects. 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 the aqueduct/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.

    Open source →
  32. 1.0.4 07 Dec 2016
    Release notes
    • BREAKING CHANGE: Added new Response.contentType property. Adding "Content-Type" to the headers of a Response no longer has any effect; use this property instead.
    • ManagedDataModels now scan all libraries for ManagedObject<T> subclasses to generate a data model. Use ManagedDataModel.fromCurrentMirrorSystem to create instances of ManagedDataModel.
    • The last instantiated ManagedContext now becomes the ManagedContext.defaultContext; prior to this change, it was the first instantiated context. Added ManagedContext.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.
    Open source →
  33. 1.0.3 14 Nov 2016
    Release notes
    • 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.
    Open source →
  34. 1.0.2 04 Nov 2016
    Release notes
    • Fix type checking for transient map and list properties of ManagedObject.
    • Add flags to Process.runSync that allow Windows user to use aqueduct executable.
    Open source →
  35. 1.0.1 20 Oct 2016
    Release notes
    • Change behavior of isolate supervision. If an isolate has an uncaught exception, it logs the exception but does not restart the isolate.
    Open source →
  36. 1.0.0 18 Oct 2016
    Release notes
    • Initial stable release.
    Open source →
  37. 1.0.0+1 18 Oct 2016

    Nothing published for this version

  38. 0.9.0 26 Jun 2016

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive