From 00caabfbcceb29cebdc9c31d5461e6891a6f3a80 Mon Sep 17 00:00:00 2001 From: Dillon Nys Date: Thu, 28 Aug 2025 13:05:45 -0700 Subject: [PATCH 1/2] test(cli): Update tests for latest changes - Updates pinned Flutter SDK - Fixes cloud hub build - Ensure grpc is <4.2.0 (latest version exports Any -- needs changes) --- .github/workflows/celest_cli.e2e.yaml | 1 + .github/workflows/celest_cli.yaml | 4 ++-- apps/cli/fixtures/standalone/api/goldens/ast.json | 4 ++-- .../standalone/api/goldens/ast.resolved.json | 4 ++-- .../fixtures/standalone/api/goldens/celest.json | 14 +++++++------- apps/cli/fixtures/standalone/auth/goldens/ast.json | 4 ++-- .../standalone/auth/goldens/ast.resolved.json | 4 ++-- .../fixtures/standalone/auth/goldens/celest.json | 14 +++++++------- apps/cli/fixtures/standalone/data/goldens/ast.json | 4 ++-- .../standalone/data/goldens/ast.resolved.json | 4 ++-- .../fixtures/standalone/data/goldens/celest.json | 14 +++++++------- .../fixtures/standalone/env_vars/goldens/ast.json | 4 ++-- .../standalone/env_vars/goldens/ast.resolved.json | 4 ++-- .../standalone/env_vars/goldens/celest.json | 14 +++++++------- .../standalone/exceptions/goldens/ast.json | 4 ++-- .../exceptions/goldens/ast.resolved.json | 4 ++-- .../standalone/exceptions/goldens/celest.json | 14 +++++++------- .../fixtures/standalone/flutter/goldens/ast.json | 4 ++-- .../standalone/flutter/goldens/ast.resolved.json | 4 ++-- .../standalone/flutter/goldens/celest.json | 14 +++++++------- apps/cli/fixtures/standalone/http/goldens/ast.json | 4 ++-- .../standalone/http/goldens/ast.resolved.json | 4 ++-- .../fixtures/standalone/http/goldens/celest.json | 14 +++++++------- .../fixtures/standalone/marcelo/goldens/ast.json | 4 ++-- .../standalone/marcelo/goldens/ast.resolved.json | 4 ++-- .../standalone/marcelo/goldens/celest.json | 14 +++++++------- .../fixtures/standalone/streaming/goldens/ast.json | 4 ++-- .../standalone/streaming/goldens/ast.resolved.json | 4 ++-- .../standalone/streaming/goldens/celest.json | 14 +++++++------- .../cli/lib/src/compiler/api/local_api_runner.dart | 5 +++-- apps/cli/test/e2e/common/test_cloud.dart | 11 +++++++++-- packages/celest_cloud/pubspec.yaml | 2 +- packages/celest_core/pubspec.yaml | 2 +- services/celest_cloud_hub/pubspec.lock | 2 +- services/celest_cloud_hub/pubspec.yaml | 2 +- 35 files changed, 118 insertions(+), 109 deletions(-) diff --git a/.github/workflows/celest_cli.e2e.yaml b/.github/workflows/celest_cli.e2e.yaml index 0ccf0576..8bf04f6f 100644 --- a/.github/workflows/celest_cli.e2e.yaml +++ b/.github/workflows/celest_cli.e2e.yaml @@ -41,6 +41,7 @@ jobs: uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # 2.21.0 with: cache: true + channel: beta # Remove when native assets is available in stable - name: Setup Deps if: runner.os == 'Linux' run: tool/setup-ci.sh diff --git a/.github/workflows/celest_cli.yaml b/.github/workflows/celest_cli.yaml index 93188b6d..0fb77d1e 100644 --- a/.github/workflows/celest_cli.yaml +++ b/.github/workflows/celest_cli.yaml @@ -43,8 +43,8 @@ jobs: cache: true # Because many golden tests encode the precise Dart/Flutter SDKs used to generate # them, these values must be consistently used when running tests locally and in CI. - flutter-version: 3.35.1 - channel: stable + flutter-version: 3.36.0-0.3.pre + channel: beta # Remove when native assets is available in stable - name: Setup Libsecret if: runner.os == 'Linux' run: tool/setup-ci.sh diff --git a/apps/cli/fixtures/standalone/api/goldens/ast.json b/apps/cli/fixtures/standalone/api/goldens/ast.json index e735d544..c8358c4a 100644 --- a/apps/cli/fixtures/standalone/api/goldens/ast.json +++ b/apps/cli/fixtures/standalone/api/goldens/ast.json @@ -33812,7 +33812,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -33821,7 +33821,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/api/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/api/goldens/ast.resolved.json index d6f64c9b..da9f6a11 100644 --- a/apps/cli/fixtures/standalone/api/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/api/goldens/ast.resolved.json @@ -3615,7 +3615,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -3624,7 +3624,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/api/goldens/celest.json b/apps/cli/fixtures/standalone/api/goldens/celest.json index dc2ce350..50404783 100644 --- a/apps/cli/fixtures/standalone/api/goldens/celest.json +++ b/apps/cli/fixtures/standalone/api/goldens/celest.json @@ -3401,28 +3401,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/auth/goldens/ast.json b/apps/cli/fixtures/standalone/auth/goldens/ast.json index 48b4b56c..5b672db5 100644 --- a/apps/cli/fixtures/standalone/auth/goldens/ast.json +++ b/apps/cli/fixtures/standalone/auth/goldens/ast.json @@ -2164,7 +2164,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -2173,7 +2173,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/auth/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/auth/goldens/ast.resolved.json index 4f138ff8..676b9e7b 100644 --- a/apps/cli/fixtures/standalone/auth/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/auth/goldens/ast.resolved.json @@ -652,7 +652,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -661,7 +661,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/auth/goldens/celest.json b/apps/cli/fixtures/standalone/auth/goldens/celest.json index 7f6ae72a..8cef8e95 100644 --- a/apps/cli/fixtures/standalone/auth/goldens/celest.json +++ b/apps/cli/fixtures/standalone/auth/goldens/celest.json @@ -659,28 +659,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/data/goldens/ast.json b/apps/cli/fixtures/standalone/data/goldens/ast.json index 303c4a36..446d2953 100644 --- a/apps/cli/fixtures/standalone/data/goldens/ast.json +++ b/apps/cli/fixtures/standalone/data/goldens/ast.json @@ -731,7 +731,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -740,7 +740,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/data/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/data/goldens/ast.resolved.json index d2af57f1..778cc883 100644 --- a/apps/cli/fixtures/standalone/data/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/data/goldens/ast.resolved.json @@ -262,7 +262,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -271,7 +271,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/data/goldens/celest.json b/apps/cli/fixtures/standalone/data/goldens/celest.json index b9ad18ca..bbbdbd4d 100644 --- a/apps/cli/fixtures/standalone/data/goldens/celest.json +++ b/apps/cli/fixtures/standalone/data/goldens/celest.json @@ -250,28 +250,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/env_vars/goldens/ast.json b/apps/cli/fixtures/standalone/env_vars/goldens/ast.json index 5989b542..88227adb 100644 --- a/apps/cli/fixtures/standalone/env_vars/goldens/ast.json +++ b/apps/cli/fixtures/standalone/env_vars/goldens/ast.json @@ -836,7 +836,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -845,7 +845,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/env_vars/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/env_vars/goldens/ast.resolved.json index 879fbcff..a64865b3 100644 --- a/apps/cli/fixtures/standalone/env_vars/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/env_vars/goldens/ast.resolved.json @@ -94,7 +94,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -103,7 +103,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/env_vars/goldens/celest.json b/apps/cli/fixtures/standalone/env_vars/goldens/celest.json index 8b52f3e7..55df7eb5 100644 --- a/apps/cli/fixtures/standalone/env_vars/goldens/celest.json +++ b/apps/cli/fixtures/standalone/env_vars/goldens/celest.json @@ -102,28 +102,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/exceptions/goldens/ast.json b/apps/cli/fixtures/standalone/exceptions/goldens/ast.json index 20888a48..02ca58b0 100644 --- a/apps/cli/fixtures/standalone/exceptions/goldens/ast.json +++ b/apps/cli/fixtures/standalone/exceptions/goldens/ast.json @@ -1334,7 +1334,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -1343,7 +1343,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/exceptions/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/exceptions/goldens/ast.resolved.json index 36e5b35c..ff04a948 100644 --- a/apps/cli/fixtures/standalone/exceptions/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/exceptions/goldens/ast.resolved.json @@ -190,7 +190,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -199,7 +199,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/exceptions/goldens/celest.json b/apps/cli/fixtures/standalone/exceptions/goldens/celest.json index ab9abce2..bcadac15 100644 --- a/apps/cli/fixtures/standalone/exceptions/goldens/celest.json +++ b/apps/cli/fixtures/standalone/exceptions/goldens/celest.json @@ -186,28 +186,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/flutter/goldens/ast.json b/apps/cli/fixtures/standalone/flutter/goldens/ast.json index aa7f164b..fa7480c9 100644 --- a/apps/cli/fixtures/standalone/flutter/goldens/ast.json +++ b/apps/cli/fixtures/standalone/flutter/goldens/ast.json @@ -1108,7 +1108,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "flutter", @@ -1117,7 +1117,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/flutter/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/flutter/goldens/ast.resolved.json index adda3e7a..15ccbf67 100644 --- a/apps/cli/fixtures/standalone/flutter/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/flutter/goldens/ast.resolved.json @@ -89,7 +89,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "flutter", @@ -98,7 +98,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/flutter/goldens/celest.json b/apps/cli/fixtures/standalone/flutter/goldens/celest.json index 882c3e43..da5ce9e8 100644 --- a/apps/cli/fixtures/standalone/flutter/goldens/celest.json +++ b/apps/cli/fixtures/standalone/flutter/goldens/celest.json @@ -91,28 +91,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "FLUTTER", diff --git a/apps/cli/fixtures/standalone/http/goldens/ast.json b/apps/cli/fixtures/standalone/http/goldens/ast.json index d5df0767..0a4fd9e2 100644 --- a/apps/cli/fixtures/standalone/http/goldens/ast.json +++ b/apps/cli/fixtures/standalone/http/goldens/ast.json @@ -4966,7 +4966,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -4975,7 +4975,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/http/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/http/goldens/ast.resolved.json index 1445e245..d5da1e12 100644 --- a/apps/cli/fixtures/standalone/http/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/http/goldens/ast.resolved.json @@ -254,7 +254,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -263,7 +263,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/http/goldens/celest.json b/apps/cli/fixtures/standalone/http/goldens/celest.json index ffcd6609..23ed3c57 100644 --- a/apps/cli/fixtures/standalone/http/goldens/celest.json +++ b/apps/cli/fixtures/standalone/http/goldens/celest.json @@ -247,28 +247,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/marcelo/goldens/ast.json b/apps/cli/fixtures/standalone/marcelo/goldens/ast.json index 2b3aca8a..4dded492 100644 --- a/apps/cli/fixtures/standalone/marcelo/goldens/ast.json +++ b/apps/cli/fixtures/standalone/marcelo/goldens/ast.json @@ -1632,7 +1632,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -1641,7 +1641,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/marcelo/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/marcelo/goldens/ast.resolved.json index e514bba8..8e5bbbde 100644 --- a/apps/cli/fixtures/standalone/marcelo/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/marcelo/goldens/ast.resolved.json @@ -233,7 +233,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -242,7 +242,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/marcelo/goldens/celest.json b/apps/cli/fixtures/standalone/marcelo/goldens/celest.json index 0f7a367a..58d4c82d 100644 --- a/apps/cli/fixtures/standalone/marcelo/goldens/celest.json +++ b/apps/cli/fixtures/standalone/marcelo/goldens/celest.json @@ -226,28 +226,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/fixtures/standalone/streaming/goldens/ast.json b/apps/cli/fixtures/standalone/streaming/goldens/ast.json index 06b99eb3..df361fb7 100644 --- a/apps/cli/fixtures/standalone/streaming/goldens/ast.json +++ b/apps/cli/fixtures/standalone/streaming/goldens/ast.json @@ -534,7 +534,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -543,7 +543,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } }, diff --git a/apps/cli/fixtures/standalone/streaming/goldens/ast.resolved.json b/apps/cli/fixtures/standalone/streaming/goldens/ast.resolved.json index 0ceceee2..93e31459 100644 --- a/apps/cli/fixtures/standalone/streaming/goldens/ast.resolved.json +++ b/apps/cli/fixtures/standalone/streaming/goldens/ast.resolved.json @@ -89,7 +89,7 @@ "celest": "1.0.14", "dart": { "type": "dart", - "version": "3.9.0-333.2.beta", + "version": "3.10.0-75.1.beta", "enabledExperiments": [] }, "targetSdk": "dart", @@ -98,7 +98,7 @@ ], "flutter": { "type": "flutter", - "version": "3.35.0-0.1.pre", + "version": "3.36.0-0.3.pre", "enabledExperiments": [] } } diff --git a/apps/cli/fixtures/standalone/streaming/goldens/celest.json b/apps/cli/fixtures/standalone/streaming/goldens/celest.json index 33b47c6a..e07142c6 100644 --- a/apps/cli/fixtures/standalone/streaming/goldens/celest.json +++ b/apps/cli/fixtures/standalone/streaming/goldens/celest.json @@ -89,28 +89,28 @@ "type": "DART", "version": { "major": 3, - "minor": 9, + "minor": 10, "patch": 0, "preRelease": [ - 333.0, - 2.0, + 75.0, + 1.0, "beta" ], - "canonicalizedVersion": "3.9.0-333.2.beta" + "canonicalizedVersion": "3.10.0-75.1.beta" } }, "flutter": { "type": "FLUTTER", "version": { "major": 3, - "minor": 35, + "minor": 36, "patch": 0, "preRelease": [ 0.0, - 1.0, + 3.0, "pre" ], - "canonicalizedVersion": "3.35.0-0.1.pre" + "canonicalizedVersion": "3.36.0-0.3.pre" } }, "targetSdk": "DART", diff --git a/apps/cli/lib/src/compiler/api/local_api_runner.dart b/apps/cli/lib/src/compiler/api/local_api_runner.dart index adf9c3a5..342bced9 100644 --- a/apps/cli/lib/src/compiler/api/local_api_runner.dart +++ b/apps/cli/lib/src/compiler/api/local_api_runner.dart @@ -194,8 +194,9 @@ final class LocalApiRunner { '--enable-vm-service=$vmServicePort', // Start VM service '--no-dds', // We want to talk directly to VM service. '--enable-asserts', - '--packages', - projectPaths.packagesConfig, + // TODO(dnys1): VM service reports error with this flag + // '--packages', + // projectPaths.packagesConfig, outputDill, ], SdkType.flutter => [ diff --git a/apps/cli/test/e2e/common/test_cloud.dart b/apps/cli/test/e2e/common/test_cloud.dart index aa3be669..271f1204 100644 --- a/apps/cli/test/e2e/common/test_cloud.dart +++ b/apps/cli/test/e2e/common/test_cloud.dart @@ -40,14 +40,21 @@ base mixin TestCloud on E2ETest { final gitRoot = await findGitRoot(); final cloudHubRoot = p.join(gitRoot, 'services', 'celest_cloud_hub'); + await processManager.run([ + Sdk.current.dart, + 'pub', + 'get', + ], workingDirectory: cloudHubRoot); + print('Running Cloud Hub...'); final port = await RandomPortFinder().findOpenPort(); _cloudHubProcess = await processManager.start( [ Sdk.current.dart, + '--enable-experiment=native-assets', 'run', '--observe', - p.join(cloudHubRoot, 'bin', 'cloud_hub.dart'), + './bin/cloud_hub.dart', ], environment: { 'PORT': port.toString(), @@ -55,7 +62,7 @@ base mixin TestCloud on E2ETest { 'CLOUD_HUB_DATABASE_HOST': 'file::memory:', }, includeParentEnvironment: true, - workingDirectory: tempDir.path, + workingDirectory: cloudHubRoot, ); _cloudHubProcess! ..captureStdout(sink: log, prefix: '[CloudHub] ') diff --git a/packages/celest_cloud/pubspec.yaml b/packages/celest_cloud/pubspec.yaml index 2abe09f0..2a73ee46 100644 --- a/packages/celest_cloud/pubspec.yaml +++ b/packages/celest_cloud/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: code_builder: ^4.10.0 collection: ^1.18.0 fixnum: ^1.1.0 - grpc: ^4.0.0 + grpc: '>=4.0.0 <4.2.0' http: ^1.0.0 json_annotation: ^4.8.0 logging: ^1.2.0 diff --git a/packages/celest_core/pubspec.yaml b/packages/celest_core/pubspec.yaml index 0c9646ef..06d3fe78 100644 --- a/packages/celest_core/pubspec.yaml +++ b/packages/celest_core/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: async: ^2.11.0 cedar: ^0.2.6 collection: ^1.18.0 - grpc: ^4.0.0 + grpc: '>=4.0.0 <4.2.0' http: ^1.0.0 http_parser: ^4.0.0 json_annotation: ^4.7.0 diff --git a/services/celest_cloud_hub/pubspec.lock b/services/celest_cloud_hub/pubspec.lock index 76f31628..edc0f209 100644 --- a/services/celest_cloud_hub/pubspec.lock +++ b/services/celest_cloud_hub/pubspec.lock @@ -164,7 +164,7 @@ packages: path: "../../apps/cli" relative: true source: path - version: "1.0.13" + version: "1.0.14" celest_cloud: dependency: "direct main" description: diff --git a/services/celest_cloud_hub/pubspec.yaml b/services/celest_cloud_hub/pubspec.yaml index c5d3b702..76858946 100644 --- a/services/celest_cloud_hub/pubspec.yaml +++ b/services/celest_cloud_hub/pubspec.yaml @@ -27,7 +27,7 @@ dependencies: file: ^7.0.1 fixnum: ^1.1.1 graphql: ^5.2.1 - grpc: ^4.0.1 + grpc: '>=4.0.0 <4.2.0' hooks: ^0.20.0 http: ^1.1.0 json_annotation: ^4.9.0 From 642f9640455136e4e244cff4a2647e6b01763ca4 Mon Sep 17 00:00:00 2001 From: Dillon Nys Date: Thu, 28 Aug 2025 14:24:04 -0700 Subject: [PATCH 2/2] Fix lint errors --- .github/workflows/celest_cli.e2e.yaml | 5 +- .github/workflows/celest_cli.yaml | 8 +- apps/cli/fixtures/fixtures_test.dart | 220 +++++++++--------- apps/cli/lib/src/codegen/allocator.dart | 2 + apps/cli/test/pub/pub_cache_test.dart | 1 + packages/celest_cloud/CHANGELOG.md | 4 + .../lib/src/cloud/base/base_service.dart | 23 +- .../celest_cloud/lib/src/util/operations.dart | 62 ++--- 8 files changed, 169 insertions(+), 156 deletions(-) diff --git a/.github/workflows/celest_cli.e2e.yaml b/.github/workflows/celest_cli.e2e.yaml index 8bf04f6f..18e81a01 100644 --- a/.github/workflows/celest_cli.e2e.yaml +++ b/.github/workflows/celest_cli.e2e.yaml @@ -29,9 +29,9 @@ jobs: fail-fast: false matrix: os: - - ubuntu-latest + - ubuntu-large - macos-latest - - windows-latest + # - windows-latest runs-on: ${{ matrix.os }} timeout-minutes: 45 steps: @@ -41,6 +41,7 @@ jobs: uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # 2.21.0 with: cache: true + flutter-version: 3.35.0-0.3.pre # TODO: Remove when beta channel is back to normal channel: beta # Remove when native assets is available in stable - name: Setup Deps if: runner.os == 'Linux' diff --git a/.github/workflows/celest_cli.yaml b/.github/workflows/celest_cli.yaml index 0fb77d1e..d3f92119 100644 --- a/.github/workflows/celest_cli.yaml +++ b/.github/workflows/celest_cli.yaml @@ -31,7 +31,7 @@ jobs: os: - ubuntu-large - macos-latest-xlarge - - windows-large + # - windows-large runs-on: ${{ matrix.os }} timeout-minutes: 45 steps: @@ -41,9 +41,7 @@ jobs: uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # 2.21.0 with: cache: true - # Because many golden tests encode the precise Dart/Flutter SDKs used to generate - # them, these values must be consistently used when running tests locally and in CI. - flutter-version: 3.36.0-0.3.pre + flutter-version: 3.35.0-0.3.pre # TODO: Remove when beta channel is back to normal channel: beta # Remove when native assets is available in stable - name: Setup Libsecret if: runner.os == 'Linux' @@ -53,7 +51,7 @@ jobs: run: dart pub upgrade - name: Test working-directory: apps/cli - run: dart test -x e2e --fail-fast -j 1 --reporter=failures-only + run: dart test -x e2e --fail-fast -j8 --reporter=failures-only - name: Test (Fixtures) working-directory: apps/cli run: dart test fixtures/fixtures_test.dart --fail-fast -j 1 --reporter=failures-only diff --git a/apps/cli/fixtures/fixtures_test.dart b/apps/cli/fixtures/fixtures_test.dart index 9d9c159b..e07da35f 100644 --- a/apps/cli/fixtures/fixtures_test.dart +++ b/apps/cli/fixtures/fixtures_test.dart @@ -59,10 +59,10 @@ void main() { final testRunners = []; final testDirs = [ - // TODO(dnys1): Need to ensure Firebase/Supabase pre-reqs are installed - // p.join(fileSystem.currentDirectory.path, 'fixtures', 'apps'), - p.join(fileSystem.currentDirectory.path, 'fixtures', 'standalone'), - ] + // TODO(dnys1): Need to ensure Firebase/Supabase pre-reqs are installed + // p.join(fileSystem.currentDirectory.path, 'fixtures', 'apps'), + p.join(fileSystem.currentDirectory.path, 'fixtures', 'standalone'), + ] .map(fileSystem.directory) .expand((testDir) => testDir.listSync().whereType()); for (final testDir in testDirs) { @@ -135,9 +135,7 @@ class TestRunner { static Future _warmUp(String projectRoot) { return Isolate.run(() async { - final sdkResult = await DartSdkFinder( - projectRoot: projectRoot, - ).findSdk(); + final sdkResult = await DartSdkFinder(projectRoot: projectRoot).findSdk(); Sdk.current = sdkResult.sdk; return CelestAnalyzer.warmUp(projectRoot); }); @@ -147,16 +145,13 @@ class TestRunner { group(testName, () { setUpAll(() async { if (fileSystem.file(p.join(projectRoot, '.fvmrc')).existsSync()) { - final res = Process.runSync( - 'fvm', - ['use'], - workingDirectory: projectRoot, - ); + final res = Process.runSync('fvm', [ + 'use', + ], workingDirectory: projectRoot); expect(res.exitCode, 0, reason: '${res.stdout}\n${res.stderr}'); } - final sdkResult = await DartSdkFinder( - projectRoot: projectRoot, - ).findSdk(); + final sdkResult = + await DartSdkFinder(projectRoot: projectRoot).findSdk(); Sdk.current = sdkResult.sdk; await runPub( exe: Platform.resolvedExecutable, @@ -227,11 +222,11 @@ class TestRunner { // Analyzer needs a bit longer. // TODO(dnys1): Benchmark + improve performance of analysis. test('analyzer', timeout: const Timeout.factor(3), () async { - final CelestAnalysisResult(:project, :errors, :warnings) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors, :warnings) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(warnings, isEmpty); expect(project, isNotNull); @@ -248,27 +243,32 @@ class TestRunner { const JsonEncoder.withIndent(' ').convert(project!.toJson()), ); } else { - final expectedAst = jsonDecode(await goldenAst.readAsString()); - expect(project!.toJson(), expectedAst); + final expectedAst = + jsonDecode(await goldenAst.readAsString()) as Map; + expect( + project!.toJson()..remove('sdkConfig'), + expectedAst..remove('sdkConfig'), + ); } }); } void testCodegen() { test('codegen', () async { - final CelestAnalysisResult(:project, :errors, :warnings) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors, :warnings) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(warnings, isEmpty); expect(project, isNotNull); - final configValues = await ConfigValueSolver( - project: project!, - environmentId: 'local', - ).solveAll(); + final configValues = + await ConfigValueSolver( + project: project!, + environmentId: 'local', + ).solveAll(); final projectResolver = ProjectLinker( configValues: configValues, environmentId: 'local', @@ -306,19 +306,20 @@ class TestRunner { void testResolve() { test('resolve', () async { - final CelestAnalysisResult(:project, :errors, :warnings) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors, :warnings) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(warnings, isEmpty); expect(project, isNotNull); - final configValues = await ConfigValueSolver( - project: project!, - environmentId: 'local', - ).solveAll(); + final configValues = + await ConfigValueSolver( + project: project!, + environmentId: 'local', + ).solveAll(); final projectResolver = ProjectLinker( configValues: configValues, environmentId: 'local', @@ -335,26 +336,32 @@ class TestRunner { const JsonEncoder.withIndent(' ').convert(resolvedAst), ); } else { - final expectedAst = jsonDecode(resolvedAstFile.readAsStringSync()); - expect(resolvedAst, expectedAst); + final expectedAst = + jsonDecode(resolvedAstFile.readAsStringSync()) + as Map; + expect( + resolvedAst..remove('sdkConfig'), + expectedAst..remove('sdkConfig'), + ); } }); } void testClient() { test('client', () async { - final CelestAnalysisResult(:project, :errors) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(project, isNotNull); - final configValues = await ConfigValueSolver( - project: project!, - environmentId: 'local', - ).solveAll(); + final configValues = + await ConfigValueSolver( + project: project!, + environmentId: 'local', + ).solveAll(); final projectResolver = ProjectLinker( configValues: configValues, environmentId: 'local', @@ -401,11 +408,11 @@ class TestRunner { final isCI = platform.environment.containsKey('CI'); final shouldRun = !isCI || platform.isLinux; test('build', skip: !shouldRun, () async { - final CelestAnalysisResult(:project, :errors) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(project, isNotNull); @@ -423,17 +430,14 @@ class TestRunner { final outputDir = projectPaths.buildDir; final imageName = '$testName-${Random().nextInt(1000000)}'; - final dockerBuild = await processManager.run( - [ - 'docker', - 'build', - '-t', - imageName, - '--platform=linux/amd64', - '.', - ], - workingDirectory: outputDir, - ); + final dockerBuild = await processManager.run([ + 'docker', + 'build', + '-t', + imageName, + '--platform=linux/amd64', + '.', + ], workingDirectory: outputDir); expect( dockerBuild.exitCode, 0, @@ -441,26 +445,22 @@ class TestRunner { ); addTearDown(() async { - await processManager.run( - ['docker', 'image', 'rm', imageName], - ); + await processManager.run(['docker', 'image', 'rm', imageName]); }); final openPort = await RandomPortFinder().findOpenPort(); - final dockerRun = await processManager.start( - [ - 'docker', - 'run', - '--rm', - '-p', - '$openPort:8080', - '--platform=linux/amd64', - for (final database in project!.databases.values) - if (database.config case ast.CelestDatabaseConfig(:final hostname)) - '--env=${hostname.name}=file::memory:', - imageName, - ], - ); + final dockerRun = await processManager.start([ + 'docker', + 'run', + '--rm', + '-p', + '$openPort:8080', + '--platform=linux/amd64', + for (final database in project!.databases.values) + if (database.config case ast.CelestDatabaseConfig(:final hostname)) + '--env=${hostname.name}=file::memory:', + imageName, + ]); addTearDown(() => dockerRun.kill(ProcessSignal.sigkill)); final dockerOutput = StreamController.broadcast(sync: true); @@ -503,18 +503,19 @@ class TestRunner { setUpAll(() async { final entrypoint = projectPaths.localApiEntrypoint; - final CelestAnalysisResult(:project, :errors) = - await analyzer.analyzeProject( - migrateProject: false, - updateResources: updateGoldens, - ); + final CelestAnalysisResult(:project, :errors) = await analyzer + .analyzeProject( + migrateProject: false, + updateResources: updateGoldens, + ); expect(errors, isEmpty); expect(project, isNotNull); - final configValues = await ConfigValueSolver( - project: project!, - environmentId: 'local', - ).solveAll(); + final configValues = + await ConfigValueSolver( + project: project!, + environmentId: 'local', + ).solveAll(); final projectResolver = ProjectLinker( configValues: configValues, environmentId: 'local', @@ -526,8 +527,9 @@ class TestRunner { configValues: { ...configValues, for (final database in project.databases.values) - if (database.config - case ast.CelestDatabaseConfig(:final hostname)) + if (database.config case ast.CelestDatabaseConfig( + :final hostname, + )) hostname.name: 'file::memory:', }, environmentId: 'local', @@ -577,19 +579,20 @@ class TestRunner { group(functionName, () { for (final testCase in httpTests) { test(testCase.name, () async { - final request = Request( - testCase.method, - apiUri() - .resolve( - '/${apiName.paramCase}/${functionName.paramCase}', + final request = + Request( + testCase.method, + apiUri() + .resolve( + '/${apiName.paramCase}/${functionName.paramCase}', + ) + .replace(queryParameters: testCase.queryParameters), ) - .replace(queryParameters: testCase.queryParameters), - ) - ..headers.addAll({ - 'Content-Type': 'application/json', - ...testCase.headers, - }) - ..body = jsonEncode(testCase.input); + ..headers.addAll({ + 'Content-Type': 'application/json', + ...testCase.headers, + }) + ..body = jsonEncode(testCase.input); if (testCase.setup case final setup?) { await setup(request); } @@ -4535,7 +4538,8 @@ final tests = { final jwt = JWT( { 'aud': 'authenticated', - 'exp': DateTime.now() + 'exp': + DateTime.now() .add(const Duration(days: 1)) .millisecondsSinceEpoch ~/ 1000, diff --git a/apps/cli/lib/src/codegen/allocator.dart b/apps/cli/lib/src/codegen/allocator.dart index 13040fa6..73077495 100644 --- a/apps/cli/lib/src/codegen/allocator.dart +++ b/apps/cli/lib/src/codegen/allocator.dart @@ -171,6 +171,8 @@ final class CelestAllocator implements Allocator { // But this should be fairly robust and I don't expect we'll see any // issues. return '_\$${packageName}_${p.url.basenameWithoutExtension(filename)}'; + case Uri(scheme: 'dart'): + return null; default: _logger.fine('Could not allocate prefix.', 'Unexpected URI: $uri'); } diff --git a/apps/cli/test/pub/pub_cache_test.dart b/apps/cli/test/pub/pub_cache_test.dart index bcfe1a6a..ed17b82e 100644 --- a/apps/cli/test/pub/pub_cache_test.dart +++ b/apps/cli/test/pub/pub_cache_test.dart @@ -21,6 +21,7 @@ void main() { 'fixes cache', timeout: Timeout.none, skip: !platform.environment.containsKey('CI'), + tags: ['e2e'], () async { final result = await pubCache.repair(); expect( diff --git a/packages/celest_cloud/CHANGELOG.md b/packages/celest_cloud/CHANGELOG.md index 23be4cb8..494f933f 100644 --- a/packages/celest_cloud/CHANGELOG.md +++ b/packages/celest_cloud/CHANGELOG.md @@ -1,3 +1,7 @@ +# NEXT + +- chore: Fix lint errors + # 0.1.9 - chore: Bump Dart SDK constraint to `^3.7.0` diff --git a/packages/celest_cloud/lib/src/cloud/base/base_service.dart b/packages/celest_cloud/lib/src/cloud/base/base_service.dart index 3e2a6640..cca52900 100644 --- a/packages/celest_cloud/lib/src/cloud/base/base_service.dart +++ b/packages/celest_cloud/lib/src/cloud/base/base_service.dart @@ -37,23 +37,24 @@ abstract mixin class BaseService { } @protected - Stream> streamOperation< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + Stream> streamOperation< + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage >( String name, { required Operation operation, required OperationsProtocol operations, - required Metadata metadata, - required Response response, + required TMetadata metadata, + required TResponse response, Logger? logger, }) async* { - final Stream> stream = operation.stream( - operations: operations, - metadata: metadata, - response: response, - logger: logger, - ); + final Stream> stream = operation + .stream( + operations: operations, + metadata: metadata, + response: response, + logger: logger, + ); try { await for (final state in stream) { logger?.fine('[$name.${operation.name}] Operation state:\n$state'); diff --git a/packages/celest_cloud/lib/src/util/operations.dart b/packages/celest_cloud/lib/src/util/operations.dart index 9b014439..324b4b2e 100644 --- a/packages/celest_cloud/lib/src/util/operations.dart +++ b/packages/celest_cloud/lib/src/util/operations.dart @@ -30,16 +30,18 @@ extension WaitForOperation on Operation { return operation.response.unpackInto(response); } - Stream> - stream({ + Stream> stream< + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage + >({ required OperationsProtocol operations, - required Metadata metadata, - required Response response, + required TMetadata metadata, + required TResponse response, Logger? logger, }) { if (done) { return Stream.value( - state(metadata: metadata, response: response), + state(metadata: metadata, response: response), ); } return OperationWaiter( @@ -47,32 +49,32 @@ extension WaitForOperation on Operation { protocol: operations, logger: logger, ).stream.map((operation) { - return operation.state( + return operation.state( metadata: metadata, response: response, ); }); } - OperationState state< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage - >({required Metadata metadata, required Response response}) { + OperationState state< + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage + >({required TMetadata metadata, required TResponse response}) { if (done) { if (hasError()) { - return OperationFailure( + return OperationFailure( id: name, metadata: hasMetadata() ? metadata.unpack(this.metadata) : metadata, error: error.grpcError, ); } - return OperationSuccess( + return OperationSuccess( id: name, metadata: hasMetadata() ? metadata.unpack(this.metadata) : metadata, response: response.unpack(ensureResponse()), ); } - return OperationInProgress( + return OperationInProgress( id: name, metadata: hasMetadata() ? metadata.unpack(this.metadata) : metadata, ); @@ -92,24 +94,24 @@ extension on T { } sealed class OperationState< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage > { OperationState({required this.id, required this.metadata}); final String id; - final Metadata metadata; + final TMetadata metadata; bool get done => false; - Response? get response => null; + TResponse? get response => null; GrpcError? get error => null; } final class OperationInProgress< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage > - extends OperationState { + extends OperationState { OperationInProgress({required super.id, required super.metadata}); @override @@ -122,10 +124,10 @@ final class OperationInProgress< } final class OperationSuccess< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage > - extends OperationState { + extends OperationState { OperationSuccess({ required super.id, required super.metadata, @@ -136,7 +138,7 @@ final class OperationSuccess< bool get done => true; @override - final Response response; + final TResponse response; @override String toString() { @@ -149,10 +151,10 @@ final class OperationSuccess< } final class OperationCancelled< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage > - extends OperationState { + extends OperationState { OperationCancelled({required super.id, required super.metadata}); @override @@ -168,10 +170,10 @@ final class OperationCancelled< } final class OperationFailure< - Metadata extends GeneratedMessage, - Response extends GeneratedMessage + TMetadata extends GeneratedMessage, + TResponse extends GeneratedMessage > - extends OperationState { + extends OperationState { OperationFailure({ required super.id, required super.metadata,