From 45f32ab27a7e8ea9b2f5e6c735b06e8b9ddd80d9 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Fri, 21 Jun 2024 17:57:33 -0700 Subject: [PATCH 1/3] chore: optimize Request.read --- packages/dart_frog/CHANGELOG.md | 4 ++++ packages/dart_frog/lib/src/request.dart | 14 ++++++-------- packages/dart_frog/pubspec.yaml | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/dart_frog/CHANGELOG.md b/packages/dart_frog/CHANGELOG.md index 03bfdc8fe..2a6e9d0d8 100644 --- a/packages/dart_frog/CHANGELOG.md +++ b/packages/dart_frog/CHANGELOG.md @@ -1,3 +1,7 @@ +# 1.1.1-wip + +- chore: optimize `Request.read()`. + # 1.1.0 - feat: support reuse of nested router ([#393](https://github.com/VeryGoodOpenSource/dart_frog/pull/393)) diff --git a/packages/dart_frog/lib/src/request.dart b/packages/dart_frog/lib/src/request.dart index 63c88766a..2997e261b 100644 --- a/packages/dart_frog/lib/src/request.dart +++ b/packages/dart_frog/lib/src/request.dart @@ -93,7 +93,7 @@ class Request { Request._(this._request); - shelf.Request _request; + final shelf.Request _request; /// Connection information for the associated HTTP request. HttpConnectionInfo get connectionInfo { @@ -120,16 +120,12 @@ class Request { /// Returns a [Future] containing the body as a [String]. Future body() async { - const requestBodyKey = 'dart_frog.request.body'; - final bodyFromContext = - _request.context[requestBodyKey] as Completer?; - if (bodyFromContext != null) return bodyFromContext.future; + final bodyFromContext = _bodyFutureExpando[_request]; + if (bodyFromContext != null) return bodyFromContext; final completer = Completer(); try { - _request = _request.change( - context: {..._request.context, requestBodyKey: completer}, - ); + _bodyFutureExpando[_request] = completer.future; completer.complete(await _request.readAsString()); } catch (error, stackTrace) { completer.completeError(error, stackTrace); @@ -158,3 +154,5 @@ class Request { return Request._(_request.change(headers: headers, path: path, body: body)); } } + +final _bodyFutureExpando = Expando>('dart_frog.request.body'); diff --git a/packages/dart_frog/pubspec.yaml b/packages/dart_frog/pubspec.yaml index 280f97cf4..bc45867c7 100644 --- a/packages/dart_frog/pubspec.yaml +++ b/packages/dart_frog/pubspec.yaml @@ -1,6 +1,6 @@ name: dart_frog description: A fast, minimalistic backend framework for Dart built by Very Good Ventures. -version: 1.1.0 +version: 1.1.1-wip homepage: https://dartfrog.vgv.dev repository: https://github.com/VeryGoodOpenSource/dart_frog issue_tracker: https://github.com/VeryGoodOpenSource/dart_frog/issues From e4337343e5a22cd09d2e12249610353953ef5bc2 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Tue, 25 Jun 2024 12:44:04 -0700 Subject: [PATCH 2/3] Update packages/dart_frog/pubspec.yaml Co-authored-by: Jochum van der Ploeg --- packages/dart_frog/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dart_frog/pubspec.yaml b/packages/dart_frog/pubspec.yaml index bc45867c7..280f97cf4 100644 --- a/packages/dart_frog/pubspec.yaml +++ b/packages/dart_frog/pubspec.yaml @@ -1,6 +1,6 @@ name: dart_frog description: A fast, minimalistic backend framework for Dart built by Very Good Ventures. -version: 1.1.1-wip +version: 1.1.0 homepage: https://dartfrog.vgv.dev repository: https://github.com/VeryGoodOpenSource/dart_frog issue_tracker: https://github.com/VeryGoodOpenSource/dart_frog/issues From 40c7ed2313d001a0a841849056dc4112ada45097 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Tue, 25 Jun 2024 12:44:12 -0700 Subject: [PATCH 3/3] Update packages/dart_frog/CHANGELOG.md Co-authored-by: Jochum van der Ploeg --- packages/dart_frog/CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/dart_frog/CHANGELOG.md b/packages/dart_frog/CHANGELOG.md index 2a6e9d0d8..03bfdc8fe 100644 --- a/packages/dart_frog/CHANGELOG.md +++ b/packages/dart_frog/CHANGELOG.md @@ -1,7 +1,3 @@ -# 1.1.1-wip - -- chore: optimize `Request.read()`. - # 1.1.0 - feat: support reuse of nested router ([#393](https://github.com/VeryGoodOpenSource/dart_frog/pull/393))