Skip to content

Add polyglot exports for flagd#1181

Merged
aaronpowell merged 5 commits into
mainfrom
dapine/polyglot-export-flagd
Apr 1, 2026
Merged

Add polyglot exports for flagd#1181
aaronpowell merged 5 commits into
mainfrom
dapine/polyglot-export-flagd

Conversation

@IEvangelist

Copy link
Copy Markdown
Contributor

Adds AspireExport coverage and a matching TypeScript validation apphost for flagd.

Copilot AI review requested due to automatic review settings March 18, 2026 15:34
@github-actions

github-actions Bot commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1181

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1181"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds AspireExport (polyglot/ATS) support for the Flagd hosting integration and introduces a TypeScript ValidationAppHost to exercise the generated exports.

Changes:

  • Added AspireExport attributes for FlagdResource and key builder extension methods, with an ATS ignore for WithLogLevel.
  • Added a new TypeScript ValidationAppHost (tsconfig/package files, apphost script, and sample flag definitions) for Flagd.
  • Updated resource API surface exposure for polyglot access (e.g., exposed properties).

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/CommunityToolkit.Aspire.Hosting.Flagd/FlagdResource.cs Adds AspireExport exposure for FlagdResource to enable polyglot access to resource properties.
src/CommunityToolkit.Aspire.Hosting.Flagd/FlagdBuilderExtensions.cs Exports AddFlagd/WithBindFileSync for polyglot apphosts and ignores WithLogLevel for ATS incompatibility.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/tsconfig.json TS build configuration for the ValidationAppHost.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/package.json Defines scripts and dependencies for the ValidationAppHost.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/package-lock.json Locks npm dependency graph for repeatable ValidationAppHost restores.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/flags/flagd.json Sample default flag configuration used by the validation host.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/flags/custom-flagd.json Additional sample flag configuration to validate non-default filename flow.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/apphost.ts TypeScript ValidationAppHost that calls exported APIs and reads exposed properties.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/apphost.run.json Local run profile for the ValidationAppHost.
playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/.aspire/settings.json Configures the TS apphost package mapping/version for validation runs.
Files not reviewed (1)
  • playground/polyglot/TypeScript/CommunityToolkit.Aspire.Hosting.Flagd/ValidationAppHost/package-lock.json: Language not supported

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +1 to +2
#pragma warning disable ASPIREATS001 // AspireExport is experimental

Comment on lines +5 to +6
#pragma warning disable ASPIREATS001 // AspireExport is experimental

Comment on lines 80 to 81
/// <param name="fileSource">The path to the flag configuration file on the host.</param>
/// <param name="filename">The name of the flag configuration file. Defaults to "flagd.json".</param>
IEvangelist and others added 4 commits March 30, 2026 09:50
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@IEvangelist IEvangelist force-pushed the dapine/polyglot-export-flagd branch from e196087 to 895ab1b Compare March 30, 2026 15:43
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
CommunityToolkit.Aspire.GoFeatureFlag 100% 97% 44
CommunityToolkit.Aspire.Hosting.ActiveMQ 88% 48% 95
CommunityToolkit.Aspire.Hosting.ActiveMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.Adminer 89% 70% 20
CommunityToolkit.Aspire.Hosting.Azure.Dapr 28% 5% 38
CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis 60% 50% 20
CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder 100% 100% 11
CommunityToolkit.Aspire.Hosting.Azure.Extensions 64% 30% 27
CommunityToolkit.Aspire.Hosting.Bun 96% 83% 14
CommunityToolkit.Aspire.Hosting.Dapr 47% 26% 557
CommunityToolkit.Aspire.Hosting.DbGate 96% 62% 12
CommunityToolkit.Aspire.Hosting.Deno 98% 85% 22
CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions 100% 94% 30
CommunityToolkit.Aspire.Hosting.Flagd 80% 100% 16
CommunityToolkit.Aspire.Hosting.Flyway 88% 100% 6
CommunityToolkit.Aspire.Hosting.GoFeatureFlag 98% 73% 18
CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService 100% 100% 3
CommunityToolkit.Aspire.Hosting.Golang 59% 46% 45
CommunityToolkit.Aspire.Hosting.Java 86% 75% 207
CommunityToolkit.Aspire.Hosting.Java.ApiApp 65% 50% 11
CommunityToolkit.Aspire.Hosting.Java.WebApp 25% 18% 59
CommunityToolkit.Aspire.Hosting.JavaScript.Extensions 97% 83% 158
CommunityToolkit.Aspire.Hosting.k6 70% 10% 8
CommunityToolkit.Aspire.Hosting.k6.ApiService 61% 67% 13
CommunityToolkit.Aspire.Hosting.Keycloak.Extensions 100% 100% 11
CommunityToolkit.Aspire.Hosting.KurrentDB 86% 88% 19
CommunityToolkit.Aspire.Hosting.LavinMQ 90% 83% 18
CommunityToolkit.Aspire.Hosting.LavinMQ.MassTransit 100% 100% 15
CommunityToolkit.Aspire.Hosting.MailPit 91% 100% 13
CommunityToolkit.Aspire.Hosting.McpInspector 88% 60% 99
CommunityToolkit.Aspire.Hosting.McpInspector.McpServer 89% 100% 2
CommunityToolkit.Aspire.Hosting.Meilisearch 95% 85% 30
CommunityToolkit.Aspire.Hosting.Meilisearch.ApiService 82% 100% 15
CommunityToolkit.Aspire.Hosting.Minio 99% 91% 32
CommunityToolkit.Aspire.Hosting.Minio.ApiService 98% 92% 15
CommunityToolkit.Aspire.Hosting.MongoDB.Extensions 95% 90% 10
CommunityToolkit.Aspire.Hosting.MySql.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Ngrok 48% 32% 96
CommunityToolkit.Aspire.Hosting.Ollama 77% 67% 267
CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector 79% 70% 42
CommunityToolkit.Aspire.Hosting.PapercutSmtp 100% 100% 9
CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions 98% 91% 43
CommunityToolkit.Aspire.Hosting.PowerShell 75% 53% 91
CommunityToolkit.Aspire.Hosting.Python.Extensions 46% 31% 44
CommunityToolkit.Aspire.Hosting.RavenDB 63% 46% 118
CommunityToolkit.Aspire.Hosting.RavenDB.ApiService 21% 33% 16
CommunityToolkit.Aspire.Hosting.Redis.Extensions 100% 71% 14
CommunityToolkit.Aspire.Hosting.Rust 94% 83% 8
CommunityToolkit.Aspire.Hosting.Sftp 86% 70% 16
CommunityToolkit.Aspire.Hosting.Sftp.ApiService 94% 100% 10
CommunityToolkit.Aspire.Hosting.Solr 88% 100% 19
CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects 70% 62% 141
CommunityToolkit.Aspire.Hosting.Sqlite 90% 93% 24
CommunityToolkit.Aspire.Hosting.SqlServer.Extensions 98% 93% 37
CommunityToolkit.Aspire.Hosting.Stripe 50% 17% 119
CommunityToolkit.Aspire.Hosting.SurrealDb 71% 54% 210
CommunityToolkit.Aspire.Hosting.SurrealDb.ApiService 81% 52% 299
CommunityToolkit.Aspire.Hosting.Umami 98% 75% 9
CommunityToolkit.Aspire.Hosting.Zitadel 97% 86% 31
CommunityToolkit.Aspire.KurrentDB 97% 95% 33
CommunityToolkit.Aspire.MassTransit.RabbitMQ 100% 100% 24
CommunityToolkit.Aspire.Meilisearch 97% 96% 38
CommunityToolkit.Aspire.Microsoft.Data.Sqlite 94% 85% 26
CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite 68% 67% 117
CommunityToolkit.Aspire.Minio.Client 93% 87% 67
CommunityToolkit.Aspire.OllamaSharp 78% 74% 76
CommunityToolkit.Aspire.RavenDB.Client 98% 78% 87
CommunityToolkit.Aspire.Sftp 90% 94% 54
CommunityToolkit.Aspire.Sqlite.Api 93% 90% 68
CommunityToolkit.Aspire.SurrealDb 99% 85% 39
Summary 75% (6849 / 9101) 58% (1936 / 3347) 4057

Minimum allowed line rate is 60%

@aaronpowell aaronpowell merged commit 69effe9 into main Apr 1, 2026
465 of 481 checks passed
@aaronpowell aaronpowell deleted the dapine/polyglot-export-flagd branch April 1, 2026 00:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants