From 761030de5c89f0473ad8e45295b6e5784f181a64 Mon Sep 17 00:00:00 2001 From: gmpassos Date: Fri, 14 Jun 2024 02:53:36 -0300 Subject: [PATCH 1/9] * `Headers`: * Optimize constructor `_`: use `CaseInsensitiveMap.fromEntries`. --- pkgs/shelf/CHANGELOG.md | 3 +++ pkgs/shelf/lib/src/headers.dart | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md index abd27324..0bcdec06 100644 --- a/pkgs/shelf/CHANGELOG.md +++ b/pkgs/shelf/CHANGELOG.md @@ -1,5 +1,8 @@ ## 1.4.2-wip +* `Headers`: + * Optimize constructor `_`: use `CaseInsensitiveMap.fromEntries`. + * Require Dart `^3.3.0`. ## 1.4.1 diff --git a/pkgs/shelf/lib/src/headers.dart b/pkgs/shelf/lib/src/headers.dart index 5abc7c55..2d2e1477 100644 --- a/pkgs/shelf/lib/src/headers.dart +++ b/pkgs/shelf/lib/src/headers.dart @@ -29,9 +29,9 @@ class Headers extends UnmodifiableMapView> { } Headers._(Map> values) - : super(CaseInsensitiveMap.from(Map.fromEntries(values.entries + : super(CaseInsensitiveMap.fromEntries(values.entries .where((e) => e.value.isNotEmpty) - .map((e) => MapEntry(e.key, List.unmodifiable(e.value)))))); + .map((e) => MapEntry(e.key, List.unmodifiable(e.value))))); Headers._empty() : super(const {}); From 8a5ccc09ef5f485d47839e8600bb11bc113ee0aa Mon Sep 17 00:00:00 2001 From: gmpassos Date: Fri, 14 Jun 2024 03:08:43 -0300 Subject: [PATCH 2/9] * `Headers`: * Added the constructor `Headers.fromEntries`. * Added the internal constructor `_fromEntries`, which uses `CaseInsensitiveMap.fromEntries` for optimization. * Renamed the internal constructor `_` to `_from`, redirecting it to `this._fromEntries`. --- pkgs/shelf/CHANGELOG.md | 4 +++- pkgs/shelf/lib/src/headers.dart | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md index 0bcdec06..f46fcc0a 100644 --- a/pkgs/shelf/CHANGELOG.md +++ b/pkgs/shelf/CHANGELOG.md @@ -1,7 +1,9 @@ ## 1.4.2-wip * `Headers`: - * Optimize constructor `_`: use `CaseInsensitiveMap.fromEntries`. + * Added the constructor `Headers.fromEntries`. + * Added the internal constructor `_fromEntries`, which uses `CaseInsensitiveMap.fromEntries` for optimization. + * Renamed the internal constructor `_` to `_from`, redirecting it to `this._fromEntries`. * Require Dart `^3.3.0`. diff --git a/pkgs/shelf/lib/src/headers.dart b/pkgs/shelf/lib/src/headers.dart index 2d2e1477..fb176463 100644 --- a/pkgs/shelf/lib/src/headers.dart +++ b/pkgs/shelf/lib/src/headers.dart @@ -24,12 +24,24 @@ class Headers extends UnmodifiableMapView> { } else if (values is Headers) { return values; } else { - return Headers._(values); + return Headers._from(values); } } - Headers._(Map> values) - : super(CaseInsensitiveMap.fromEntries(values.entries + factory Headers.fromEntries( + Iterable>>? values) { + if (values == null || (values is List && values.isEmpty)) { + return _emptyHeaders; + } else { + return Headers._fromEntries(values); + } + } + + Headers._from(Map> values) + : this._fromEntries(values.entries); + + Headers._fromEntries(Iterable>> entries) + : super(CaseInsensitiveMap.fromEntries(entries .where((e) => e.value.isNotEmpty) .map((e) => MapEntry(e.key, List.unmodifiable(e.value))))); From e1eacb3c502006724a7f695e02f03696e9bfebd0 Mon Sep 17 00:00:00 2001 From: gmpassos Date: Fri, 14 Jun 2024 03:15:47 -0300 Subject: [PATCH 3/9] headers_test.dart --- pkgs/shelf/test/headers_test.dart | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pkgs/shelf/test/headers_test.dart diff --git a/pkgs/shelf/test/headers_test.dart b/pkgs/shelf/test/headers_test.dart new file mode 100644 index 00000000..ce361f26 --- /dev/null +++ b/pkgs/shelf/test/headers_test.dart @@ -0,0 +1,28 @@ +import 'package:shelf/src/headers.dart'; +import 'package:test/test.dart'; + +void main() { + test('Headers.from', () { + var header = Headers.from({ + 'FoO': ['x', 'y'], + 'bAr': ['z'], + }); + + expect(header['foo'], equals(['x', 'y'])); + expect(header['BAR'], equals(['z'])); + + expect(() => header['X'] = ['x'], throwsA(isA())); + }); + + test('Headers.fromEntries', () { + var header = Headers.fromEntries({ + 'FoO': ['x', 'y'], + 'bAr': ['z'], + }.entries); + + expect(header['foo'], equals(['x', 'y'])); + expect(header['BAR'], equals(['z'])); + + expect(() => header['X'] = ['x'], throwsA(isA())); + }); +} From 5c19a5aeaa091e9c37875a546b2e5d9229cce9f3 Mon Sep 17 00:00:00 2001 From: gmpassos Date: Mon, 17 Jun 2024 16:48:28 -0300 Subject: [PATCH 4/9] http_parser: ^4.1.0 --- pkgs/shelf/CHANGELOG.md | 1 + pkgs/shelf/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md index f46fcc0a..a6ca8888 100644 --- a/pkgs/shelf/CHANGELOG.md +++ b/pkgs/shelf/CHANGELOG.md @@ -6,6 +6,7 @@ * Renamed the internal constructor `_` to `_from`, redirecting it to `this._fromEntries`. * Require Dart `^3.3.0`. +* http_parser: ^4.1.0 ## 1.4.1 diff --git a/pkgs/shelf/pubspec.yaml b/pkgs/shelf/pubspec.yaml index 11f8671b..8338771e 100644 --- a/pkgs/shelf/pubspec.yaml +++ b/pkgs/shelf/pubspec.yaml @@ -15,7 +15,7 @@ environment: dependencies: async: ^2.5.0 collection: ^1.15.0 - http_parser: ^4.0.0 + http_parser: ^4.1.0 path: ^1.8.0 stack_trace: ^1.10.0 stream_channel: ^2.1.0 From 216644dc28e1c6d1a67fe31fb59041c04be39271 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jun 2024 12:57:45 -0700 Subject: [PATCH 5/9] tiny cleanup --- pkgs/shelf/lib/src/headers.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/shelf/lib/src/headers.dart b/pkgs/shelf/lib/src/headers.dart index fb176463..a0832394 100644 --- a/pkgs/shelf/lib/src/headers.dart +++ b/pkgs/shelf/lib/src/headers.dart @@ -24,7 +24,7 @@ class Headers extends UnmodifiableMapView> { } else if (values is Headers) { return values; } else { - return Headers._from(values); + return Headers._fromEntries(values.entries); } } @@ -37,9 +37,6 @@ class Headers extends UnmodifiableMapView> { } } - Headers._from(Map> values) - : this._fromEntries(values.entries); - Headers._fromEntries(Iterable>> entries) : super(CaseInsensitiveMap.fromEntries(entries .where((e) => e.value.isNotEmpty) From aacab5ba3e10e169097da889fc046d5bea977adf Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jun 2024 13:00:04 -0700 Subject: [PATCH 6/9] changelog tweaks --- pkgs/shelf/CHANGELOG.md | 10 +++------- pkgs/shelf/pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md index a6ca8888..31f39835 100644 --- a/pkgs/shelf/CHANGELOG.md +++ b/pkgs/shelf/CHANGELOG.md @@ -1,12 +1,8 @@ -## 1.4.2-wip - -* `Headers`: - * Added the constructor `Headers.fromEntries`. - * Added the internal constructor `_fromEntries`, which uses `CaseInsensitiveMap.fromEntries` for optimization. - * Renamed the internal constructor `_` to `_from`, redirecting it to `this._fromEntries`. +## 1.4.2 +* `Headers`: added the `fromEntries` constructor. +* Require `http_parser`: ^4.1.0 * Require Dart `^3.3.0`. -* http_parser: ^4.1.0 ## 1.4.1 diff --git a/pkgs/shelf/pubspec.yaml b/pkgs/shelf/pubspec.yaml index 8338771e..d0d78bda 100644 --- a/pkgs/shelf/pubspec.yaml +++ b/pkgs/shelf/pubspec.yaml @@ -1,5 +1,5 @@ name: shelf -version: 1.4.2-wip +version: 1.4.2 description: > A model for web server middleware that encourages composition and easy reuse. repository: https://github.com/dart-lang/shelf/tree/master/pkgs/shelf From d433957b63ecf468bd7e0884198cee954e36fa8c Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jun 2024 13:01:27 -0700 Subject: [PATCH 7/9] tiny cleanup --- pkgs/shelf/lib/src/headers.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/shelf/lib/src/headers.dart b/pkgs/shelf/lib/src/headers.dart index a0832394..edf04257 100644 --- a/pkgs/shelf/lib/src/headers.dart +++ b/pkgs/shelf/lib/src/headers.dart @@ -24,7 +24,7 @@ class Headers extends UnmodifiableMapView> { } else if (values is Headers) { return values; } else { - return Headers._fromEntries(values.entries); + return Headers._(values.entries); } } @@ -33,11 +33,11 @@ class Headers extends UnmodifiableMapView> { if (values == null || (values is List && values.isEmpty)) { return _emptyHeaders; } else { - return Headers._fromEntries(values); + return Headers._(values); } } - Headers._fromEntries(Iterable>> entries) + Headers._(Iterable>> entries) : super(CaseInsensitiveMap.fromEntries(entries .where((e) => e.value.isNotEmpty) .map((e) => MapEntry(e.key, List.unmodifiable(e.value))))); From 3171387d998b5ac3eb1b337afceb55c362669cc5 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jun 2024 13:06:02 -0700 Subject: [PATCH 8/9] bump sdk dep on shelf --- .github/workflows/dart.yml | 320 ++++++++++++++++++++++++------------- pkgs/shelf/CHANGELOG.md | 2 +- pkgs/shelf/pubspec.yaml | 2 +- 3 files changed, 213 insertions(+), 111 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 18d34e97..b0e4e88e 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -40,16 +40,16 @@ jobs: - name: mono_repo self validate run: dart pub global run mono_repo generate --validate job_002: - name: "analyze_and_format; linux; Dart 3.3.0; PKGS: pkgs/shelf, pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart analyze --fatal-infos .`" + name: "analyze_and_format; linux; Dart 3.3.0; PKGS: pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart analyze --fatal-infos .`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket;commands:analyze" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket;commands:analyze" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest @@ -60,15 +60,6 @@ jobs: - id: checkout name: Checkout repository uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - - id: pkgs_shelf_pub_upgrade - name: pkgs/shelf; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf - - name: "pkgs/shelf; dart analyze --fatal-infos ." - run: dart analyze --fatal-infos . - if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf - id: pkgs_shelf_packages_handler_pub_upgrade name: pkgs/shelf_packages_handler; dart pub upgrade run: dart pub upgrade @@ -133,6 +124,36 @@ jobs: if: "always() && steps.pkgs_shelf_web_socket_pub_upgrade.conclusion == 'success'" working-directory: pkgs/shelf_web_socket job_003: + name: "analyze_and_format; linux; Dart 3.4.0; PKG: pkgs/shelf; `dart analyze --fatal-infos .`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf;commands:analyze" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.4.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_pub_upgrade + name: pkgs/shelf; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf + - name: "pkgs/shelf; dart analyze --fatal-infos ." + run: dart analyze --fatal-infos . + if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf + job_004: name: "analyze_and_format; linux; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart analyze --fatal-infos .`" runs-on: ubuntu-latest steps: @@ -225,7 +246,7 @@ jobs: run: dart analyze --fatal-infos . if: "always() && steps.pkgs_shelf_web_socket_pub_upgrade.conclusion == 'success'" working-directory: pkgs/shelf_web_socket - job_004: + job_005: name: "analyze_and_format; linux; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart format --output=none --set-exit-if-changed .`" runs-on: ubuntu-latest steps: @@ -318,61 +339,17 @@ jobs: run: "dart format --output=none --set-exit-if-changed ." if: "always() && steps.pkgs_shelf_web_socket_pub_upgrade.conclusion == 'success'" working-directory: pkgs/shelf_web_socket - job_005: - name: "unit_test; linux; Dart 3.3.0; PKGS: pkgs/shelf, pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" - runs-on: ubuntu-latest - steps: - - name: Cache Pub hosted dependencies - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 - with: - path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_test_handler;commands:test_1" - restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_test_handler - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 - os:ubuntu-latest;pub-cache-hosted - os:ubuntu-latest - - name: Setup Dart SDK - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 - with: - sdk: "3.3.0" - - id: checkout - name: Checkout repository - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - - id: pkgs_shelf_pub_upgrade - name: pkgs/shelf; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf - - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random -p chrome" - run: "dart test --test-randomize-ordering-seed=random -p chrome" - if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf - - id: pkgs_shelf_test_handler_pub_upgrade - name: pkgs/shelf_test_handler; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf_test_handler - - name: "pkgs/shelf_test_handler; dart test --test-randomize-ordering-seed=random -p chrome" - run: "dart test --test-randomize-ordering-seed=random -p chrome" - if: "always() && steps.pkgs_shelf_test_handler_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf_test_handler - needs: - - job_001 - - job_002 - - job_003 - - job_004 job_006: - name: "unit_test; linux; Dart 3.3.0; PKGS: pkgs/shelf, pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart test --test-randomize-ordering-seed=random`" + name: "unit_test; linux; Dart 3.3.0; PKGS: pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart test --test-randomize-ordering-seed=random`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket;commands:test_0" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket;commands:test_0" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf-pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_packages_handler-pkgs/shelf_proxy-pkgs/shelf_router-pkgs/shelf_router_generator-pkgs/shelf_static-pkgs/shelf_test_handler-pkgs/shelf_web_socket os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest @@ -383,15 +360,6 @@ jobs: - id: checkout name: Checkout repository uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - - id: pkgs_shelf_pub_upgrade - name: pkgs/shelf; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf - - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random" - run: "dart test --test-randomize-ordering-seed=random" - if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf - id: pkgs_shelf_packages_handler_pub_upgrade name: pkgs/shelf_packages_handler; dart pub upgrade run: dart pub upgrade @@ -460,7 +428,116 @@ jobs: - job_002 - job_003 - job_004 + - job_005 job_007: + name: "unit_test; linux; Dart 3.3.0; PKG: pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_test_handler;commands:test_1" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0;packages:pkgs/shelf_test_handler + os:ubuntu-latest;pub-cache-hosted;sdk:3.3.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.3.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_test_handler_pub_upgrade + name: pkgs/shelf_test_handler; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf_test_handler + - name: "pkgs/shelf_test_handler; dart test --test-randomize-ordering-seed=random -p chrome" + run: "dart test --test-randomize-ordering-seed=random -p chrome" + if: "always() && steps.pkgs_shelf_test_handler_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf_test_handler + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + job_008: + name: "unit_test; linux; Dart 3.4.0; PKG: pkgs/shelf; `dart test --test-randomize-ordering-seed=random -p chrome`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf;commands:test_1" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.4.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_pub_upgrade + name: pkgs/shelf; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf + - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random -p chrome" + run: "dart test --test-randomize-ordering-seed=random -p chrome" + if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + job_009: + name: "unit_test; linux; Dart 3.4.0; PKG: pkgs/shelf; `dart test --test-randomize-ordering-seed=random`" + runs-on: ubuntu-latest + steps: + - name: Cache Pub hosted dependencies + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: "~/.pub-cache/hosted" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf;commands:test_0" + restore-keys: | + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0;packages:pkgs/shelf + os:ubuntu-latest;pub-cache-hosted;sdk:3.4.0 + os:ubuntu-latest;pub-cache-hosted + os:ubuntu-latest + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.4.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_pub_upgrade + name: pkgs/shelf; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf + - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random" + run: "dart test --test-randomize-ordering-seed=random" + if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + job_010: name: "unit_test; linux; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome -c dart2wasm`" runs-on: ubuntu-latest steps: @@ -504,7 +581,8 @@ jobs: - job_002 - job_003 - job_004 - job_008: + - job_005 + job_011: name: "unit_test; linux; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" runs-on: ubuntu-latest steps: @@ -548,7 +626,8 @@ jobs: - job_002 - job_003 - job_004 - job_009: + - job_005 + job_012: name: "unit_test; linux; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_packages_handler, pkgs/shelf_proxy, pkgs/shelf_router, pkgs/shelf_router_generator, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart test --test-randomize-ordering-seed=random`" runs-on: ubuntu-latest steps: @@ -646,7 +725,8 @@ jobs: - job_002 - job_003 - job_004 - job_010: + - job_005 + job_013: name: "unit_test; linux; Dart dev; PKG: pkgs/shelf_router_generator; `dart test --run-skipped -t presubmit-only`" runs-on: ubuntu-latest steps: @@ -681,41 +761,8 @@ jobs: - job_002 - job_003 - job_004 - job_011: - name: "unit_test; windows; Dart 3.3.0; PKGS: pkgs/shelf, pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" - runs-on: windows-latest - steps: - - name: Setup Dart SDK - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 - with: - sdk: "3.3.0" - - id: checkout - name: Checkout repository - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - - id: pkgs_shelf_pub_upgrade - name: pkgs/shelf; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf - - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random -p chrome" - run: "dart test --test-randomize-ordering-seed=random -p chrome" - if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf - - id: pkgs_shelf_test_handler_pub_upgrade - name: pkgs/shelf_test_handler; dart pub upgrade - run: dart pub upgrade - if: "always() && steps.checkout.conclusion == 'success'" - working-directory: pkgs/shelf_test_handler - - name: "pkgs/shelf_test_handler; dart test --test-randomize-ordering-seed=random -p chrome" - run: "dart test --test-randomize-ordering-seed=random -p chrome" - if: "always() && steps.pkgs_shelf_test_handler_pub_upgrade.conclusion == 'success'" - working-directory: pkgs/shelf_test_handler - needs: - - job_001 - - job_002 - - job_003 - - job_004 - job_012: + - job_005 + job_014: name: "unit_test; windows; Dart 3.3.0; PKGS: pkgs/shelf_packages_handler, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart test --test-randomize-ordering-seed=random`" runs-on: windows-latest steps: @@ -767,7 +814,60 @@ jobs: - job_002 - job_003 - job_004 - job_013: + - job_005 + job_015: + name: "unit_test; windows; Dart 3.3.0; PKG: pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" + runs-on: windows-latest + steps: + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.3.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_test_handler_pub_upgrade + name: pkgs/shelf_test_handler; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf_test_handler + - name: "pkgs/shelf_test_handler; dart test --test-randomize-ordering-seed=random -p chrome" + run: "dart test --test-randomize-ordering-seed=random -p chrome" + if: "always() && steps.pkgs_shelf_test_handler_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf_test_handler + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + job_016: + name: "unit_test; windows; Dart 3.4.0; PKG: pkgs/shelf; `dart test --test-randomize-ordering-seed=random -p chrome`" + runs-on: windows-latest + steps: + - name: Setup Dart SDK + uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 + with: + sdk: "3.4.0" + - id: checkout + name: Checkout repository + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 + - id: pkgs_shelf_pub_upgrade + name: pkgs/shelf; dart pub upgrade + run: dart pub upgrade + if: "always() && steps.checkout.conclusion == 'success'" + working-directory: pkgs/shelf + - name: "pkgs/shelf; dart test --test-randomize-ordering-seed=random -p chrome" + run: "dart test --test-randomize-ordering-seed=random -p chrome" + if: "always() && steps.pkgs_shelf_pub_upgrade.conclusion == 'success'" + working-directory: pkgs/shelf + needs: + - job_001 + - job_002 + - job_003 + - job_004 + - job_005 + job_017: name: "unit_test; windows; Dart dev; PKGS: pkgs/shelf, pkgs/shelf_test_handler; `dart test --test-randomize-ordering-seed=random -p chrome`" runs-on: windows-latest steps: @@ -801,7 +901,8 @@ jobs: - job_002 - job_003 - job_004 - job_014: + - job_005 + job_018: name: "unit_test; windows; Dart dev; PKGS: pkgs/shelf_packages_handler, pkgs/shelf_static, pkgs/shelf_test_handler, pkgs/shelf_web_socket; `dart test --test-randomize-ordering-seed=random`" runs-on: windows-latest steps: @@ -853,3 +954,4 @@ jobs: - job_002 - job_003 - job_004 + - job_005 diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md index 31f39835..700a7955 100644 --- a/pkgs/shelf/CHANGELOG.md +++ b/pkgs/shelf/CHANGELOG.md @@ -2,7 +2,7 @@ * `Headers`: added the `fromEntries` constructor. * Require `http_parser`: ^4.1.0 -* Require Dart `^3.3.0`. +* Require Dart `^3.4.0`. ## 1.4.1 diff --git a/pkgs/shelf/pubspec.yaml b/pkgs/shelf/pubspec.yaml index d0d78bda..0163ef6d 100644 --- a/pkgs/shelf/pubspec.yaml +++ b/pkgs/shelf/pubspec.yaml @@ -10,7 +10,7 @@ topics: - backend environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: async: ^2.5.0 From 9a294f0700f018bc952732fa850ab5c25dcb7e18 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jun 2024 13:13:23 -0700 Subject: [PATCH 9/9] more cleanup --- pkgs/shelf/lib/src/headers.dart | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pkgs/shelf/lib/src/headers.dart b/pkgs/shelf/lib/src/headers.dart index edf04257..d78f78f5 100644 --- a/pkgs/shelf/lib/src/headers.dart +++ b/pkgs/shelf/lib/src/headers.dart @@ -29,18 +29,23 @@ class Headers extends UnmodifiableMapView> { } factory Headers.fromEntries( - Iterable>>? values) { - if (values == null || (values is List && values.isEmpty)) { + Iterable>>? entries, + ) { + if (entries == null || (entries is List && entries.isEmpty)) { return _emptyHeaders; } else { - return Headers._(values); + return Headers._(entries); } } Headers._(Iterable>> entries) - : super(CaseInsensitiveMap.fromEntries(entries - .where((e) => e.value.isNotEmpty) - .map((e) => MapEntry(e.key, List.unmodifiable(e.value))))); + : super( + CaseInsensitiveMap.fromEntries( + entries + .where((e) => e.value.isNotEmpty) + .map((e) => MapEntry(e.key, List.unmodifiable(e.value))), + ), + ); Headers._empty() : super(const {});