firestore library

Cloud Firestore — Native and Datastore mode databases + composite index management.

Classes

AppConstant<T>
A value the Stack hands to application code as a static const in the generated AppExports file — known when synth runs, so the app compiles against it.
AppExports
Where synth writes the Dart file application code imports: the Stack's constants, as the static const members of <name>Constants, and a typed reader of its Terraform outputs, <name>Outputs.
AttributeRef<T>
Public for sealed pattern matching, but constructor is private — only TfRef.attribute() may construct instances.
DartDefineOutput
An output whose value is the client build's --dart-define file, registered with Stack.addDartDefineOutput.
Data
Base of every user-instantiable Terraform data block.
DataGoogleFirestoreDocument
Factory wrapper for google_firestore_document.
DataRef<T>
Public for sealed pattern matching, but constructor is private — only TfRef.data() may construct instances.
EnvironmentConstant
The AppConstant.fromEnvironment choice.
FirestoreBackupScheduleBackupRecurrence
Choice of recurrence for a GoogleFirestoreBackupSchedule. Sealed so the dichotomy is exhaustive at the type level. The Firestore service requires exactly one of daily_recurrence / weekly_recurrence -- the schema marks both as independently optional but rejects schedules with neither or both.
FirestoreBackupScheduleDailyRecurrence
daily_recurrence block. Carries no fields -- its presence alone signals "run every day". The encoded value is a single empty map (matching the schema's max_items: 1, list shape).
FirestoreBackupScheduleWeeklyRecurrence
weekly_recurrence block. Optional day specifies which weekday the backup runs on; when null, the provider defaults to the schema's DAY_OF_WEEK_UNSPECIFIED (server picks). Pin a specific day for predictable backup windows.
FirestoreChangeStreamCollectionGroupScope
Typed helper for the collection_group_scope block of google_firestore_change_stream (derived from provider schema).
FirestoreChangeStreamCollectionGroupScopeChoice
The FirestoreChangeStreamScope.collectionGroupScope choice: sets collection_group_scope.
FirestoreChangeStreamDatabaseScope
Typed helper for the database_scope block of google_firestore_change_stream (derived from provider schema).
FirestoreChangeStreamDatabaseScopeChoice
The FirestoreChangeStreamScope.databaseScope choice: sets database_scope.
FirestoreChangeStreamScope
Exactly one of database_scope, collection_group_scope on google_firestore_change_stream: the provider rejects none and more than one, so each variant sets one of them.
FirestoreDatabaseCmekConfig
Typed helper for the cmek_config block of google_firestore_database (derived from provider schema).
FirestoreFieldIndexConfig
Typed helper for the index_config block of google_firestore_field (derived from provider schema).
FirestoreFieldIndexes
Typed helper for the index_config.indexes block of google_firestore_field (derived from provider schema).
FirestoreFieldMode
Exactly one of order, array_config on the index_config.indexes block of google_firestore_field: the provider rejects none and more than one, so each variant sets one of them.
FirestoreFieldModeArrayConfig
The FirestoreFieldMode.arrayConfig choice: sets array_config.
FirestoreFieldModeOrder
The FirestoreFieldMode.order choice: sets order.
FirestoreFields
Static factory for Firestore document fields wire-format JSON.
FirestoreFieldTtlConfig
Typed helper for the ttl_config block of google_firestore_field (derived from provider schema).
FirestoreGeoPoint
Sentinel value for Firestore geoPointValue — a latitude/longitude pair.
FirestoreIndexField
One entry in fields[]. Each indexed field declares either an FirestoreIndexFieldOrder (range queries / equality / ORDER BY) or an FirestoreIndexFieldArrayConfig (array-contains queries) via spec. The schema's commented exactly_one_of constraint over order / array_config / search_config / vector_config is modeled at the type level by the sealed FirestoreIndexFieldSpec dispatch.
FirestoreIndexFieldArrayConfig
Array-contains dimension for a field. Firestore only supports 'CONTAINS' as the array config today, so no parameter is exposed.
FirestoreIndexFieldOrder
Range / equality / order-by dimension for a field. Pair FirestoreIndexOrder.descending to flip the per-field direction.
FirestoreIndexFieldSearchConfig
Text-search dimension for a field (Firestore Vector Search / full-text search). The schema models this as a nested block with geo_spec + text_spec; only text_spec is exposed here because geo_spec requires a single boolean knob and merits a separate variant if/when needed.
FirestoreIndexFieldSpec
Sealed dispatch for FirestoreIndexField.spec. Models the schema's exactly_one_of (order / array_config / search_config / vector_config) at the type level. Subclasses encode their own Terraform key.
FirestoreIndexFieldTextSpec
search_config.text_spec block. Carries a list of FirestoreIndexFieldTextSpecEntry entries (one per index_spec the user wants to configure -- e.g. one for substring matching, one for prefix matching of the same field).
FirestoreIndexFieldTextSpecEntry
One entry in text_spec.index_specs. Both fields are schema-optional; combinations are documented in https://firebase.google.com/docs/firestore/text-search.
FirestoreIndexFieldVectorConfig
Vector-search dimension for a field. The schema requires dimension plus a marker flat sub-block; the wrapper emits both.
FirestoreReference
Sentinel value for Firestore referenceValue — a document path of the form projects/<project>/databases/<db>/documents/<col>/<doc>....
GcsBackend
terraform { backend "gcs" { ... } } configuration.
GoogleFirestoreBackupSchedule
Factory wrapper for google_firestore_backup_schedule.
GoogleFirestoreChangeStream
Factory wrapper for google_firestore_change_stream.
GoogleFirestoreDatabase
Factory wrapper for google_firestore_database.
GoogleFirestoreDocument
Factory wrapper for google_firestore_document.
GoogleFirestoreField
Factory wrapper for google_firestore_field.
GoogleFirestoreIndex
Factory wrapper for google_firestore_index.
GoogleFirestoreUserCreds
Factory wrapper for google_firestore_user_creds.
IgnoreAllChanges
IgnoreChanges.all.
IgnoreAttributes
IgnoreChanges.of.
IgnoreChanges
What ignore_changes covers: every attribute, or the listed ones.
InvalidDartDefineOutput
An output of Stack.addDartDefineOutput that cannot carry what it names: an output that is not registered, is sensitive or has no environment value, two outputs read from one variable, or no output at all.
InvalidLifecycle
A lifecycle block Terraform rejects: a data source (or one of its attributes) in replaceTriggeredBy, all inside IgnoreChanges.of, or a condition with an empty error message.
InvalidMoveTarget
A moved block whose to names no resource of the Stack.
InvalidTimeout
A negative timeouts duration.
LifecycleCondition
A precondition or postcondition block: Terraform fails the plan (LifecycleCondition.pre) or the apply (LifecycleCondition.post) with errorMessage when condition is false.
LifecycleOptions
lifecycle { ... } block on a resource.
LocalBackend
terraform { backend "local" { ... } } configuration.
MissingProvider
A block needs a provider configuration the Stack does not register: the provider its type implies (google for google_pubsub_topic), the one its provider meta-argument names, or one a module call passes on.
ModuleCall
A module "<localName>" { ... } call as a Dart value.
NoProviders
The Stack registers no provider, but declares resources or data sources.
ProviderConflict
Two provider registrations Terraform rejects together: two defaults of one name, a repeated alias, an alias that is not an identifier, or configurations of one name with different source / version constraints.
RefConstant<T>
The AppConstant.ref choice.
ReplaceTrigger
What lifecycle.replaceTriggeredBy lists: a resource of the Stack or an attribute getter of one. Resource and TfRef implement it; synth reports a data source or a data-source attribute as an InvalidLifecycle.
Resource
Base of every user-instantiable Terraform resource.
ResourceRef
Public for sealed pattern matching, but constructor is private — only TfRef.resource() may construct instances.
S3Backend
terraform { backend "s3" { ... } } configuration.
Sensitive<T>
What an argument Terraform marks sensitive takes: a variable, an expression or an attribute getter — a value Terraform resolves, never a Dart literal that would be written into main.tf.json.
SensitiveLiteral
A sensitive field is set to a literal, which would write the secret in plain text into main.tf.json.
Stack
User-extended IaC composition root.
StackBackend
Lightweight backend hook. Core ships GcsBackend, S3Backend, and LocalBackend; anything else implements this interface in the caller. The Stack only stores the value and exposes a discriminator for synth's terraform { backend ... } emitter.
StackProvider
Coordination interface between Stack (in this package) and concrete providers (e.g. GoogleProvider in terradart_google). Concrete providers implement every getter using their baked-in constants from Stage 2 codegen.
SynthIssue
One reason a Stack cannot be synthesized.
SynthResult
Bundle returned by StackSynth.synth.
TfAddressed
Anything that exposes a Terraform address, e.g. google_pubsub_topic.orders.
TfArg<T>
A Terraform argument: a Dart-side literal, a reference to another block's attribute (TfRef), a variable or a raw expression.
TfArgExpression<T>
A raw Terraform expression — the tf.json template string, verbatim.
TfArgLiteral<T>
TfArgVariable<T>
TfCollectionType
list(...), set(...) or map(...).
TfMoved
One moved { from = ... to = ... } block: the state object at from now belongs to the resource at to, so a rename does not become a destroy-and-create.
TfObjectType
object({ ... }).
TfOptionalType
optional(<type>[, <default>]).
TfOutput<T>
An output "<name>" { value = ... } block, registered with Stack.addOutput.
TfPrimitiveType
string, number, bool or any.
TfRef<T>
A Terraform-side reference: an attribute of a resource (AttributeRef) or a data source (DataRef), or a whole resource (ResourceRef).
TfTimeouts
timeouts { ... } on a resource or data source: how long Terraform waits for each operation before giving up.
TfTupleType
tuple([...]).
TfType
A Terraform type constraint: string, list(number), object({ name = string }).
TfVariable
One variable "<name>" { ... } declaration.
UndeclaredVariable
A TfArg.variable or var.<name> in an expression names a variable the Stack does not declare.
UnregisteredReference
A block references another block that was never registered on the Stack: built, but not passed to add(...) / addModule(...).
UnresolvableConstant
An AppConstant.ref whose value is not known at synth: the attribute is not set to a literal, is sensitive, does not match the constant's type, or belongs to a block that is not registered.
ValueConstant<T>
The AppConstant.value choice.

Enums

ResourceKind
Whether a Stack entry is a resource block or a data block in Terraform JSON.

Extension Types

AppEngineIntegrationMode
app_engine_integration_mode -- whether the database participates in the legacy App Engine integration. Only meaningful for Datastore-mode databases that were originally provisioned via App Engine.
BackupDayOfWeek
weekly_recurrence.day -- which day of the week the weekly backup runs on. dayOfWeekUnspecified is the schema-default sentinel (server picks the day); the seven concrete weekdays pin the slot.
ConcurrencyMode
concurrency_mode -- transaction concurrency strategy. optimistic is the default for Native mode; pessimistic is the default for Datastore mode. optimisticWithEntityGroups is a legacy Datastore-mode option.
DatabaseEdition
database_edition -- pricing + feature tier. enterprise unlocks the MongoDB-compatible / Realtime-Updates / Data-Access modes but forces type to be firestoreNative.
DeleteProtectionState
delete_protection_state -- when enabled, the database refuses delete operations until protection is disabled. Default unspecified (server-side equivalent to disabled).
FirestoreDataAccessMode
firestore_data_access_mode -- whether the Firestore document API is accessible. Only valid for enterprise edition. Use to lock down a database to MongoDB-compatible / Realtime-Updates access only.
FirestoreDatabaseType
type -- choose between Cloud Firestore's two API modes. Forces replacement when changed.
FirestoreFieldOrder
One FirestoreFieldIndexes.order direction. ASCENDING / DESCENDING.
FirestoreFieldQueryScope
query_scope -- which queries can use this single-field index. collection scopes the index to a single collection; collectionGroup allows the index to serve collection-group queries.
FirestoreIndexApiScope
api_scope -- which Firestore API surface the index targets. anyApi (the default) serves both the Firestore native API and the Datastore-mode API; the others restrict to one.
FirestoreIndexDeletionPolicy
deletion_policy -- behaviour on terraform destroy. delete (the default) tears the index down both in state and in GCP. prevent keeps the index in GCP and FAILS the destroy -- a safety mode for indexes that back production queries.
FirestoreIndexDensity
density -- whether the index includes documents that are missing the indexed fields. sparseAll only indexes documents with values for ALL fields (the default for composite indexes); sparseAny indexes documents with ANY field; dense indexes every document.
FirestoreIndexOrder
One FirestoreIndexField.spec dimension. Pairs with FirestoreIndexOrder.descending to flip the per-field index direction.
FirestoreIndexQueryScope
query_scope -- which queries can use this index. collection (the default) limits the index to queries scoped to a single collection; collectionGroup allows collection-group queries; collectionRecursive also covers descendant collection groups.
MongodbCompatibleDataAccessMode
mongodb_compatible_data_access_mode -- whether the MongoDB-compatible API is accessible. Only valid for enterprise edition.
OutputEnvironment
The environment Stack.outputEnvironment returns: each variable and its value, in registration order.
PointInTimeRecoveryEnablement
point_in_time_recovery_enablement -- when enabled, reads can target timestamps within the past 7 days (1-minute granularity beyond the most-recent hour). Default disabled.
RealtimeUpdatesMode
realtime_updates_mode -- whether the WebSocket-based realtime listener API is accessible. Only valid for enterprise edition.
RefTo
A reference to a resource of type R, for an argument that names another resource (network, vpc_id, role_arn, ...).

Extensions

RefToList on TfArg<List<RefTo<R>>>
A list-valued reference argument (security_group_ids, subnet_ids): a literal list of RefTos, or one value that is the whole list (TfArg.variable('subnet_ids'), TfArg.expression(...)).
TerraformDurationExt on Duration
Converts a Dart Duration into a Terraform duration string ("604800s").

Constants

terradartManifestVariable → const String
The environment variable the terradart command sets to the file runStack and runEnvironments describe what they wrote in.

Functions

runEnvironments<E extends Enum>(List<String> args, List<E> environments, Stack build(E env), {String dir(E env)?, String? workspace(E env)?, List<String> backendConfig(E env)?, E? defaultEnv}) → Future<void>
The entry point of a project with one Stack per environment. The environments are the members of an enum of the project's own — any names, each carrying its values — so the Stack takes a typed env and derives everything per environment from it, its backend included:
runStack(List<String> args, Stack build(), {String out = 'tf-out'}) → Future<void>
The entry point of a project with one Stack: writes it to out.

Exceptions / Errors

DuplicateModuleError
A ModuleCall registered twice under one name.
DuplicateResourceError
Thrown by Stack.add when an entry with the same (kind, terraformType, localName) triple is registered twice.
SynthException
Thrown by Stack.synth() and Stack.writeTo() when the Stack has one or more SynthIssues. Nothing is written.