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 constin 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 constmembers 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
outputwhose value is the client build's--dart-definefile, registered withStack.addDartDefineOutput. - Data
-
Base of every user-instantiable Terraform
datablock. - 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_recurrenceblock. Carries no fields -- its presence alone signals "run every day". The encoded value is a single empty map (matching the schema'smax_items: 1, listshape). - FirestoreBackupScheduleWeeklyRecurrence
-
weekly_recurrenceblock. Optional day specifies which weekday the backup runs on; when null, the provider defaults to the schema'sDAY_OF_WEEK_UNSPECIFIED(server picks). Pin a specific day for predictable backup windows. - FirestoreChangeStreamCollectionGroupScope
-
Typed helper for the
collection_group_scopeblock ofgoogle_firestore_change_stream(derived from provider schema). - FirestoreChangeStreamCollectionGroupScopeChoice
-
The FirestoreChangeStreamScope.collectionGroupScope choice: sets
collection_group_scope. - FirestoreChangeStreamDatabaseScope
-
Typed helper for the
database_scopeblock ofgoogle_firestore_change_stream(derived from provider schema). - FirestoreChangeStreamDatabaseScopeChoice
-
The FirestoreChangeStreamScope.databaseScope choice: sets
database_scope. - FirestoreChangeStreamScope
-
Exactly one of
database_scope,collection_group_scopeongoogle_firestore_change_stream: the provider rejects none and more than one, so each variant sets one of them. - FirestoreDatabaseCmekConfig
-
Typed helper for the
cmek_configblock ofgoogle_firestore_database(derived from provider schema). - FirestoreFieldIndexConfig
-
Typed helper for the
index_configblock ofgoogle_firestore_field(derived from provider schema). - FirestoreFieldIndexes
-
Typed helper for the
index_config.indexesblock ofgoogle_firestore_field(derived from provider schema). - FirestoreFieldMode
-
Exactly one of
order,array_configon theindex_config.indexesblock ofgoogle_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
fieldswire-format JSON. - FirestoreFieldTtlConfig
-
Typed helper for the
ttl_configblock ofgoogle_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 overorder/array_config/search_config/vector_configis 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; onlytext_specis exposed here becausegeo_specrequires 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_specblock. 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
flatsub-block; the wrapper emits both. - FirestoreReference
-
Sentinel value for Firestore
referenceValue— a document path of the formprojects/<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_changescovers: every attribute, or the listed ones. - InvalidDartDefineOutput
-
An output of
Stack.addDartDefineOutputthat 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
lifecycleblock Terraform rejects: a data source (or one of its attributes) inreplaceTriggeredBy,allinside IgnoreChanges.of, or a condition with an empty error message. - InvalidMoveTarget
-
A
movedblock whosetonames no resource of the Stack. - InvalidTimeout
-
A negative
timeoutsduration. - LifecycleCondition
-
A
preconditionorpostconditionblock: 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 (
googleforgoogle_pubsub_topic), the one itsprovidermeta-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.replaceTriggeredBylists: a resource of the Stack or an attribute getter of one.Resourceand TfRef implement it; synth reports a data source or a data-source attribute as anInvalidLifecycle. - 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, andLocalBackend; anything else implements this interface in the caller. TheStackonly stores the value and exposes a discriminator for synth'sterraform { backend ... }emitter. - StackProvider
-
Coordination interface between
Stack(in this package) and concrete providers (e.g.GoogleProviderinterradart_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(...)ormap(...). - 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 withStack.addOutput. - TfPrimitiveType
-
string,number,boolorany. -
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.variableorvar.<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.refwhose 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
resourceblock or adatablock 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.dayOfWeekUnspecifiedis the schema-default sentinel (server picks the day); the seven concrete weekdays pin the slot. - ConcurrencyMode
-
concurrency_mode-- transaction concurrency strategy.optimisticis the default for Native mode;pessimisticis the default for Datastore mode.optimisticWithEntityGroupsis a legacy Datastore-mode option. - DatabaseEdition
-
database_edition-- pricing + feature tier.enterpriseunlocks the MongoDB-compatible / Realtime-Updates / Data-Access modes but forcestypeto befirestoreNative. - DeleteProtectionState
-
delete_protection_state-- whenenabled, the database refuses delete operations until protection is disabled. Defaultunspecified(server-side equivalent todisabled). - FirestoreDataAccessMode
-
firestore_data_access_mode-- whether the Firestore document API is accessible. Only valid forenterpriseedition. 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.orderdirection.ASCENDING/DESCENDING. - FirestoreFieldQueryScope
-
query_scope-- which queries can use this single-field index.collectionscopes the index to a single collection;collectionGroupallows 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 onterraform destroy.delete(the default) tears the index down both in state and in GCP.preventkeeps 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.sparseAllonly indexes documents with values for ALL fields (the default for composite indexes);sparseAnyindexes documents with ANY field;denseindexes 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;collectionGroupallows collection-group queries;collectionRecursivealso covers descendant collection groups. - MongodbCompatibleDataAccessMode
-
mongodb_compatible_data_access_mode-- whether the MongoDB-compatible API is accessible. Only valid forenterpriseedition. - OutputEnvironment
-
The environment
Stack.outputEnvironmentreturns: each variable and its value, in registration order. - PointInTimeRecoveryEnablement
-
point_in_time_recovery_enablement-- whenenabled, reads can target timestamps within the past 7 days (1-minute granularity beyond the most-recent hour). Defaultdisabled. - RealtimeUpdatesMode
-
realtime_updates_mode-- whether the WebSocket-based realtime listener API is accessible. Only valid forenterpriseedition. - 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
terradartcommand 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
envand 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
ModuleCallregistered twice under one name. - DuplicateResourceError
-
Thrown by
Stack.addwhen an entry with the same(kind, terraformType, localName)triple is registered twice. - SynthException
-
Thrown by
Stack.synth()andStack.writeTo()when the Stack has one or more SynthIssues. Nothing is written.