terradart_cloudflare 0.35.0
terradart_cloudflare: ^0.35.0 copied to clipboard
Curated factory wrappers for Cloudflare resources (official cloudflare/cloudflare Terraform provider) for Dart-first Terraform stacks.
Changelog #
0.35.0 - 2026-10-03 #
- No API changes. Lockstep release with the
terradartcommand's--jsonoutput, fixed exit codes,--no-input,--dry-run,terradart help <topic>and bundled agent skill; no provider pin moves.
0.34.0 - 2026-10-03 #
- No API changes. Lockstep release with the
terradartcommand'sinit,validateandstate migrate; no provider pin moves.
0.33.0 - 2026-10-02 #
- No API changes. Lockstep release with the new
terradart_clipackage (theterradartcommand); no provider pin moves.
0.32.1 - 2026-10-02 #
- No API changes. Republishes the 0.32.0 workspace so
terradart_appwrite,terradart_cloudflare,terradart_awsandterradart_migratereach pub.dev; the 0.32.0 publish workflow stopped them at a wrapper-count check that also counted hand-written files, and now counts only generated wrappers (#877).
0.32.0 - 2026-10-02 #
- Breaking: attribute getters drop the
Refsuffix and pass straight into an argument (zone.id,record.name); a Dart reserved word or aResource/Datamember takes anAttrsuffix. See MIGRATING.md. - Breaking:
CloudflareUserGroupMemberstakes itsuserGroupIdasRefTo<CloudflareUserGroup>and each memberidasRefTo<CloudflareAccountMember>. Synth output is unchanged for a literal. See MIGRATING.md. - Breaking: every barrel re-exports
terradart_core, and a data source is also exported from its service barrel. Helperencode()/blockKeyare@internal. See MIGRATING.md. - Breaking:
provider:on every factory and data source takes the registeredCloudflareProviderinstance instead of'cloudflare.<alias>'. See MIGRATING.md. - Breaking: an argument the provider schema marks sensitive is
Sensitive<T>— a variable, an expression or an attribute getter, never.literal(...). See MIGRATING.md. - Breaking: every generated enum is an extension type implementing
TfArg<String>, so an enum slot takes a member bare (type: .cnameinstead of.literal(.cname)). See MIGRATING.md. - Breaking: every factory takes its local name as the first positional argument:
CloudflareDnsRecord('www', ...). See MIGRATING.md.
0.31.0 - 2026-10-01 #
- Breaking — generated type names are short: a derived helper, enum or nested sealed type is named after its resource and its own block or attribute instead of the whole block path, a name two blocks would share takes the nearest parent that tells them apart, identical blocks share one helper, and no name repeats the words its resource stem ends with. 975 types are renamed. Arguments, variant constructors and synth output are unchanged;
dart analyzelists the old names. See MIGRATING.md. - 2,595 new
<name>Refgetters, one per input a resource or data source takes (TfRef<String> get scopeIdRef), so another argument, an output or a constant reads what the input is set to with.ref(...). - Breaking — 200 value-list fields in helper classes take their element type:
TfArg<List<String>>/TfArg<List<num>>instead ofTfArg<List<Object?>>. Synth output is unchanged. SeeMIGRATING.md. - Every resource has a
refgetter returningRefTo<ItsClass>, and so does every data source that reads a resource of this package — the reference the arguments naming another resource take. - Breaking — 292 arguments that name another resource (account and zone) take a
RefTo<Target>instead of aTfArg<String>:CloudflareDnsRecord(zoneId: zone.ref). The argument picks the attribute it emits;.literal(...),.variable(...),.expression(...)and.arg(...)take a value outside the Stack, and.pinned('attr')keeps emitting another attribute. SeeMIGRATING.md. - Breaking — requires Dart 3.10 (
sdk: ^3.10.0, was^3.6.0). The generated wrappers were already formatted in the Dart 3.7+ tall style, so the constraint now matches them (pub.dev static analysis no longer reports a formatter mismatch). - Breaking: inputs the provider requires exactly one of are sealed types — 13 groups on 5 resources take one required argument (or helper field) whose variants each set one member (e.g.
CloudflareRuleset(scope: .zoneId(...)),CloudflareAccountMember(access: .roles(...))). Synth output is unchanged. See MIGRATING.md. - Breaking: mutually exclusive inputs the provider also accepts none of are nullable sealed types — 14 groups on 8 resources (5 on resource arguments, 9 in nested blocks) take one optional argument (or helper field) whose variants each set one member (e.g.
CloudflareDnsRecord(content: .content(...)),CloudflareWorkersScript(content: .contentFile(...))). Leave it out to set none. Synth output is unchanged. See MIGRATING.md. - Breaking:
CloudflareEmailSecurityAllowPolicyno longer takes the deprecatedisSender,isSpoofandisRecipient(end of life 2026-07-01); useisTrustedSender,isAcceptableSenderandisExemptRecipient. See MIGRATING.md. - The factories the 5.26.0 schema bump added are curated: scope first in the constructor (
zoneId/accountId), then the required inputs, and a class doc onCloudflareCtAlerting,CloudflareEmailSendingSubdomain,CloudflareMagicWanBgpFilterProfile,CloudflareNelSetting,CloudflarePrecursor,CloudflareZeroTrustCasbPolicy,CloudflareZeroTrustCasbWebhookandCloudflareZoneTracing. Only the parameter order changes otherwise; synth output keeps the same values. - Generated wrappers encode optional inputs as null-aware map elements (
'k': ?x,'k': ?x?.toTfJson()) instead ofif (x != null) 'k': xguards, regenerated withterradart wrap. No API change; synth output is unchanged.
0.30.0 - 2026-09-28 #
- Breaking: an attribute the schema declares as a map of objects
(
nesting_mode: "map") takesMap<String, Helper>instead of one helper, which no value could make passterraform validate— 34 inputs across 7 resources (for exampleCloudflareZeroTrustRiskBehavior.behaviors,PagesProjectDeploymentConfigsPreview.envVars,CloudflareWorkersScript.files). A plain literal in the Pages project's sensitiveenv_vars.*.valuenow fails synth. See MIGRATING.md. - Breaking: the
cloudflare/cloudflarepin moves from5.23.0to5.26.0, and the factories follow the provider's schema changes:DataCloudflareRateLimitsis removed, and 45 constructor slots, getters and helpers are removed, renamed, retyped or now required (for exampleCloudflareFlagshipFlag.flagKey,CloudConnectorRulesRules.provider→cloudConnectorRulesProvider, the pipelineschema.formathelpers). See MIGRATING.md. - Factories for the 14 resources and 22 data sources added in 5.24.0–5.26.0,
with new
ct,field,nelandprecursorbarrels. The catalog stays filled at the pin;examples/cloudflare_leftover_quickstartcovers them. - Breaking: inputs with a fixed value set are generated enums instead
of
Strings — 538 string slots and 41 list slots, 579 enums (for exampleCloudflareDnsRecord.typetakesDnsRecordType.cname). The value sets come from the provider'sstringvalidator.OneOfvalidators and itsAvailable values:descriptions at the pin; synth output is unchanged. See MIGRATING.md.
0.29.0 - 2026-09-27 #
Lockstep release. No terradart_cloudflare API changes.
0.28.1 - 2026-09-13 #
Lockstep release with terradart_migrate 0.28.1 (passthrough emission fix — a bare Map / List parameter no longer comes out as TfArg.literal). No terradart_cloudflare API changes.
0.28.0 - 2026-09-13 #
CloudflareProvider.alias(provider "cloudflare" { alias = "other_account" }) and aprovider:parameter on every factory and data source, so a resource can select an aliased configuration (provider: 'cloudflare.other_account') (#666).
0.27.0 - 2026-08-30 #
Lockstep release with terradart_core 0.27.0 (TfVariable / Stack.addVariable and S3Backend). No terradart_cloudflare API changes.
0.26.0 - 2026-08-24 #
- Fill the catalog at the
cloudflare/cloudflare5.23.0pin: 257 resource factories + 446 data sources (703 catalog entries). Nested plugin-framework objects are typed Dart helper classes. - Breaking:
CloudflareZone.accountisZoneAccountinstead ofTfArg<Map<String, dynamic>>. See MIGRATING.md. CloudflareDnsRecordgains typeddata/settings/private_routing.- Six resources take required create-time
id:CloudflareAiGateway,CloudflareAiSearchInstance,CloudflareImage,CloudflareImageVariant,CloudflareZeroTrustAccessAiControlsMcpPortal,CloudflareZeroTrustAccessAiControlsMcpServer. - Coverage:
examples/cloudflare_dns_quickstartplusexamples/cloudflare_leftover_quickstart(synth +terraform validate; apply-smoke skip-listed). Factories the leftover dummy cannot satisfy are listed intool/example_debt.yaml.
0.25.3 - 2026-08-23 #
- Ship the hand-written
catalog_entry.dartthe generated catalog imports. No factory or provider changes.
0.25.2 #
- Initial release:
CloudflareProvider(secret-free by design — the schema's sensitive attributesapi_token/api_key/api_user_service_keyare structurally excluded; apply authenticates viaCLOUDFLARE_*environment variables) and the first curated factories,CloudflareZoneandCloudflareDnsRecord, pinned exactly to provider 5.23.0.