gtag config call during Firebase Analytics initialization. |
+
+## AnalyticsSettings.config
+
+Params to be passed in the initial `gtag` config call during Firebase Analytics initialization.
+
+Signature:
+
+```typescript
+config?: GtagConfigParams | EventParams;
+```
diff --git a/docs-devsite/analytics.consentsettings.md b/docs-devsite/analytics.consentsettings.md
new file mode 100644
index 00000000000..975d51d8bc6
--- /dev/null
+++ b/docs-devsite/analytics.consentsettings.md
@@ -0,0 +1,79 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ConsentSettings interface
+Consent status settings for each consent type. For more information, see [the GA4 reference documentation for consent state and consent types](https://developers.google.com/tag-platform/tag-manager/templates/consent-apis).
+
+Signature:
+
+```typescript
+export interface ConsentSettings
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [ad\_storage](./analytics.consentsettings.md#consentsettingsad_storage) | [ConsentStatusString](./analytics.md#consentstatusstring) | Enables storage, such as cookies, related to advertising |
+| [analytics\_storage](./analytics.consentsettings.md#consentsettingsanalytics_storage) | [ConsentStatusString](./analytics.md#consentstatusstring) | Enables storage, such as cookies, related to analytics (for example, visit duration) |
+| [functionality\_storage](./analytics.consentsettings.md#consentsettingsfunctionality_storage) | [ConsentStatusString](./analytics.md#consentstatusstring) | Enables storage that supports the functionality of the website or app such as language settings |
+| [personalization\_storage](./analytics.consentsettings.md#consentsettingspersonalization_storage) | [ConsentStatusString](./analytics.md#consentstatusstring) | Enables storage related to personalization such as video recommendations |
+| [security\_storage](./analytics.consentsettings.md#consentsettingssecurity_storage) | [ConsentStatusString](./analytics.md#consentstatusstring) | Enables storage related to security such as authentication functionality, fraud prevention, and other user protection. |
+
+## ConsentSettings.ad\_storage
+
+Enables storage, such as cookies, related to advertising
+
+Signature:
+
+```typescript
+ad_storage?: ConsentStatusString;
+```
+
+## ConsentSettings.analytics\_storage
+
+Enables storage, such as cookies, related to analytics (for example, visit duration)
+
+Signature:
+
+```typescript
+analytics_storage?: ConsentStatusString;
+```
+
+## ConsentSettings.functionality\_storage
+
+Enables storage that supports the functionality of the website or app such as language settings
+
+Signature:
+
+```typescript
+functionality_storage?: ConsentStatusString;
+```
+
+## ConsentSettings.personalization\_storage
+
+Enables storage related to personalization such as video recommendations
+
+Signature:
+
+```typescript
+personalization_storage?: ConsentStatusString;
+```
+
+## ConsentSettings.security\_storage
+
+Enables storage related to security such as authentication functionality, fraud prevention, and other user protection.
+
+Signature:
+
+```typescript
+security_storage?: ConsentStatusString;
+```
diff --git a/docs-devsite/analytics.controlparams.md b/docs-devsite/analytics.controlparams.md
new file mode 100644
index 00000000000..d7dfea1460c
--- /dev/null
+++ b/docs-devsite/analytics.controlparams.md
@@ -0,0 +1,60 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ControlParams interface
+Standard `gtag.js` control parameters. For more information, see [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export interface ControlParams
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [event\_callback](./analytics.controlparams.md#controlparamsevent_callback) | () => void | |
+| [event\_timeout](./analytics.controlparams.md#controlparamsevent_timeout) | number | |
+| [groups](./analytics.controlparams.md#controlparamsgroups) | string \| string\[\] | |
+| [send\_to](./analytics.controlparams.md#controlparamssend_to) | string \| string\[\] | |
+
+## ControlParams.event\_callback
+
+Signature:
+
+```typescript
+event_callback?: () => void;
+```
+
+## ControlParams.event\_timeout
+
+Signature:
+
+```typescript
+event_timeout?: number;
+```
+
+## ControlParams.groups
+
+Signature:
+
+```typescript
+groups?: string | string[];
+```
+
+## ControlParams.send\_to
+
+Signature:
+
+```typescript
+send_to?: string | string[];
+```
diff --git a/docs-devsite/analytics.customparams.md b/docs-devsite/analytics.customparams.md
new file mode 100644
index 00000000000..37ac6964477
--- /dev/null
+++ b/docs-devsite/analytics.customparams.md
@@ -0,0 +1,19 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# CustomParams interface
+Any custom params the user may pass to `gtag`.
+
+Signature:
+
+```typescript
+export interface CustomParams
+```
diff --git a/docs-devsite/analytics.eventparams.md b/docs-devsite/analytics.eventparams.md
new file mode 100644
index 00000000000..266b8d3e85e
--- /dev/null
+++ b/docs-devsite/analytics.eventparams.md
@@ -0,0 +1,316 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# EventParams interface
+Standard `gtag.js` event parameters. For more information, see [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export interface EventParams
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [affiliation](./analytics.eventparams.md#eventparamsaffiliation) | string | |
+| [checkout\_option](./analytics.eventparams.md#eventparamscheckout_option) | string | |
+| [checkout\_step](./analytics.eventparams.md#eventparamscheckout_step) | number | |
+| [content\_type](./analytics.eventparams.md#eventparamscontent_type) | string | |
+| [coupon](./analytics.eventparams.md#eventparamscoupon) | string | |
+| [currency](./analytics.eventparams.md#eventparamscurrency) | string | |
+| [description](./analytics.eventparams.md#eventparamsdescription) | string | |
+| [event\_category](./analytics.eventparams.md#eventparamsevent_category) | string | |
+| [event\_label](./analytics.eventparams.md#eventparamsevent_label) | string | |
+| [fatal](./analytics.eventparams.md#eventparamsfatal) | boolean | |
+| [firebase\_screen\_class](./analytics.eventparams.md#eventparamsfirebase_screen_class) | string | Firebase-specific. Use to log a screen_class to Firebase Analytics. |
+| [firebase\_screen](./analytics.eventparams.md#eventparamsfirebase_screen) | string | Firebase-specific. Use to log a screen_name to Firebase Analytics. |
+| [item\_id](./analytics.eventparams.md#eventparamsitem_id) | string | |
+| [item\_list\_id](./analytics.eventparams.md#eventparamsitem_list_id) | string | |
+| [item\_list\_name](./analytics.eventparams.md#eventparamsitem_list_name) | string | |
+| [items](./analytics.eventparams.md#eventparamsitems) | [Item](./analytics.item.md#item_interface)\[\] | |
+| [method](./analytics.eventparams.md#eventparamsmethod) | string | |
+| [number](./analytics.eventparams.md#eventparamsnumber) | string | |
+| [page\_location](./analytics.eventparams.md#eventparamspage_location) | string | |
+| [page\_path](./analytics.eventparams.md#eventparamspage_path) | string | |
+| [page\_title](./analytics.eventparams.md#eventparamspage_title) | string | |
+| [payment\_type](./analytics.eventparams.md#eventparamspayment_type) | string | |
+| [promotion\_id](./analytics.eventparams.md#eventparamspromotion_id) | string | |
+| [promotion\_name](./analytics.eventparams.md#eventparamspromotion_name) | string | |
+| [promotions](./analytics.eventparams.md#eventparamspromotions) | [Promotion](./analytics.promotion.md#promotion_interface)\[\] | |
+| [screen\_name](./analytics.eventparams.md#eventparamsscreen_name) | string | |
+| [search\_term](./analytics.eventparams.md#eventparamssearch_term) | string | |
+| [shipping\_tier](./analytics.eventparams.md#eventparamsshipping_tier) | string | |
+| [shipping](./analytics.eventparams.md#eventparamsshipping) | [Currency](./analytics.md#currency) | |
+| [tax](./analytics.eventparams.md#eventparamstax) | [Currency](./analytics.md#currency) | |
+| [transaction\_id](./analytics.eventparams.md#eventparamstransaction_id) | string | |
+| [value](./analytics.eventparams.md#eventparamsvalue) | number | |
+
+## EventParams.affiliation
+
+Signature:
+
+```typescript
+affiliation?: string;
+```
+
+## EventParams.checkout\_option
+
+Signature:
+
+```typescript
+checkout_option?: string;
+```
+
+## EventParams.checkout\_step
+
+Signature:
+
+```typescript
+checkout_step?: number;
+```
+
+## EventParams.content\_type
+
+Signature:
+
+```typescript
+content_type?: string;
+```
+
+## EventParams.coupon
+
+Signature:
+
+```typescript
+coupon?: string;
+```
+
+## EventParams.currency
+
+Signature:
+
+```typescript
+currency?: string;
+```
+
+## EventParams.description
+
+Signature:
+
+```typescript
+description?: string;
+```
+
+## EventParams.event\_category
+
+Signature:
+
+```typescript
+event_category?: string;
+```
+
+## EventParams.event\_label
+
+Signature:
+
+```typescript
+event_label?: string;
+```
+
+## EventParams.fatal
+
+Signature:
+
+```typescript
+fatal?: boolean;
+```
+
+## EventParams.firebase\_screen\_class
+
+Firebase-specific. Use to log a `screen_class` to Firebase Analytics.
+
+Signature:
+
+```typescript
+firebase_screen_class?: string;
+```
+
+## EventParams.firebase\_screen
+
+Firebase-specific. Use to log a `screen_name` to Firebase Analytics.
+
+Signature:
+
+```typescript
+firebase_screen?: string;
+```
+
+## EventParams.item\_id
+
+Signature:
+
+```typescript
+item_id?: string;
+```
+
+## EventParams.item\_list\_id
+
+Signature:
+
+```typescript
+item_list_id?: string;
+```
+
+## EventParams.item\_list\_name
+
+Signature:
+
+```typescript
+item_list_name?: string;
+```
+
+## EventParams.items
+
+Signature:
+
+```typescript
+items?: Item[];
+```
+
+## EventParams.method
+
+Signature:
+
+```typescript
+method?: string;
+```
+
+## EventParams.number
+
+Signature:
+
+```typescript
+number?: string;
+```
+
+## EventParams.page\_location
+
+Signature:
+
+```typescript
+page_location?: string;
+```
+
+## EventParams.page\_path
+
+Signature:
+
+```typescript
+page_path?: string;
+```
+
+## EventParams.page\_title
+
+Signature:
+
+```typescript
+page_title?: string;
+```
+
+## EventParams.payment\_type
+
+Signature:
+
+```typescript
+payment_type?: string;
+```
+
+## EventParams.promotion\_id
+
+Signature:
+
+```typescript
+promotion_id?: string;
+```
+
+## EventParams.promotion\_name
+
+Signature:
+
+```typescript
+promotion_name?: string;
+```
+
+## EventParams.promotions
+
+Signature:
+
+```typescript
+promotions?: Promotion[];
+```
+
+## EventParams.screen\_name
+
+Signature:
+
+```typescript
+screen_name?: string;
+```
+
+## EventParams.search\_term
+
+Signature:
+
+```typescript
+search_term?: string;
+```
+
+## EventParams.shipping\_tier
+
+Signature:
+
+```typescript
+shipping_tier?: string;
+```
+
+## EventParams.shipping
+
+Signature:
+
+```typescript
+shipping?: Currency;
+```
+
+## EventParams.tax
+
+Signature:
+
+```typescript
+tax?: Currency;
+```
+
+## EventParams.transaction\_id
+
+Signature:
+
+```typescript
+transaction_id?: string;
+```
+
+## EventParams.value
+
+Signature:
+
+```typescript
+value?: number;
+```
diff --git a/docs-devsite/analytics.gtagconfigparams.md b/docs-devsite/analytics.gtagconfigparams.md
new file mode 100644
index 00000000000..f5138b8b65e
--- /dev/null
+++ b/docs-devsite/analytics.gtagconfigparams.md
@@ -0,0 +1,134 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# GtagConfigParams interface
+A set of common Google Analytics config settings recognized by `gtag.js`.
+
+Signature:
+
+```typescript
+export interface GtagConfigParams
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [allow\_ad\_personalization\_signals](./analytics.gtagconfigparams.md#gtagconfigparamsallow_ad_personalization_signals) | boolean | If set to false, disables all advertising personalization with gtag.js. See [Disable advertising features](https://developers.google.com/analytics/devguides/collection/ga4/display-features) |
+| [allow\_google\_signals](./analytics.gtagconfigparams.md#gtagconfigparamsallow_google_signals) | boolean | If set to false, disables all advertising features with gtag.js. See [Disable advertising features](https://developers.google.com/analytics/devguides/collection/ga4/display-features) |
+| [cookie\_domain](./analytics.gtagconfigparams.md#gtagconfigparamscookie_domain) | string | Defaults to auto. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id) |
+| [cookie\_expires](./analytics.gtagconfigparams.md#gtagconfigparamscookie_expires) | number | Defaults to 63072000 (two years, in seconds). See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id) |
+| [cookie\_flags](./analytics.gtagconfigparams.md#gtagconfigparamscookie_flags) | string | Appends additional flags to the cookie when set. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id) |
+| [cookie\_prefix](./analytics.gtagconfigparams.md#gtagconfigparamscookie_prefix) | string | Defaults to _ga. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id) |
+| [cookie\_update](./analytics.gtagconfigparams.md#gtagconfigparamscookie_update) | boolean | If set to true, will update cookies on each page load. Defaults to true. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id) |
+| [page\_location](./analytics.gtagconfigparams.md#gtagconfigparamspage_location) | string | The URL of the page. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view) |
+| [page\_title](./analytics.gtagconfigparams.md#gtagconfigparamspage_title) | string | The title of the page. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view) |
+| [send\_page\_view](./analytics.gtagconfigparams.md#gtagconfigparamssend_page_view) | boolean | Whether or not a page view should be sent. If set to true (default), a page view is automatically sent upon initialization of analytics. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view) |
+
+## GtagConfigParams.allow\_ad\_personalization\_signals
+
+If set to false, disables all advertising personalization with `gtag.js`. See [Disable advertising features](https://developers.google.com/analytics/devguides/collection/ga4/display-features)
+
+Signature:
+
+```typescript
+'allow_ad_personalization_signals'?: boolean;
+```
+
+## GtagConfigParams.allow\_google\_signals
+
+If set to false, disables all advertising features with `gtag.js`. See [Disable advertising features](https://developers.google.com/analytics/devguides/collection/ga4/display-features)
+
+Signature:
+
+```typescript
+'allow_google_signals'?: boolean;
+```
+
+## GtagConfigParams.cookie\_domain
+
+Defaults to `auto`. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id)
+
+Signature:
+
+```typescript
+'cookie_domain'?: string;
+```
+
+## GtagConfigParams.cookie\_expires
+
+Defaults to 63072000 (two years, in seconds). See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id)
+
+Signature:
+
+```typescript
+'cookie_expires'?: number;
+```
+
+## GtagConfigParams.cookie\_flags
+
+Appends additional flags to the cookie when set. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id)
+
+Signature:
+
+```typescript
+'cookie_flags'?: string;
+```
+
+## GtagConfigParams.cookie\_prefix
+
+Defaults to `_ga`. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id)
+
+Signature:
+
+```typescript
+'cookie_prefix'?: string;
+```
+
+## GtagConfigParams.cookie\_update
+
+If set to true, will update cookies on each page load. Defaults to true. See [Cookies and user identification](https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id)
+
+Signature:
+
+```typescript
+'cookie_update'?: boolean;
+```
+
+## GtagConfigParams.page\_location
+
+The URL of the page. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view)
+
+Signature:
+
+```typescript
+'page_location'?: string;
+```
+
+## GtagConfigParams.page\_title
+
+The title of the page. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view)
+
+Signature:
+
+```typescript
+'page_title'?: string;
+```
+
+## GtagConfigParams.send\_page\_view
+
+Whether or not a page view should be sent. If set to true (default), a page view is automatically sent upon initialization of analytics. See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view)
+
+Signature:
+
+```typescript
+'send_page_view'?: boolean;
+```
diff --git a/docs-devsite/analytics.item.md b/docs-devsite/analytics.item.md
new file mode 100644
index 00000000000..5c853918edb
--- /dev/null
+++ b/docs-devsite/analytics.item.md
@@ -0,0 +1,278 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# Item interface
+Standard Google Analytics `Item` type.
+
+Signature:
+
+```typescript
+export interface Item
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [affiliation](./analytics.item.md#itemaffiliation) | string | |
+| [brand](./analytics.item.md#itembrand) | string | |
+| [category](./analytics.item.md#itemcategory) | string | |
+| [coupon](./analytics.item.md#itemcoupon) | string | |
+| [creative\_name](./analytics.item.md#itemcreative_name) | string | |
+| [creative\_slot](./analytics.item.md#itemcreative_slot) | string | |
+| [discount](./analytics.item.md#itemdiscount) | [Currency](./analytics.md#currency) | |
+| [id](./analytics.item.md#itemid) | string | |
+| [index](./analytics.item.md#itemindex) | number | |
+| [item\_brand](./analytics.item.md#itemitem_brand) | string | |
+| [item\_category](./analytics.item.md#itemitem_category) | string | |
+| [item\_category2](./analytics.item.md#itemitem_category2) | string | |
+| [item\_category3](./analytics.item.md#itemitem_category3) | string | |
+| [item\_category4](./analytics.item.md#itemitem_category4) | string | |
+| [item\_category5](./analytics.item.md#itemitem_category5) | string | |
+| [item\_id](./analytics.item.md#itemitem_id) | string | |
+| [item\_list\_id](./analytics.item.md#itemitem_list_id) | string | |
+| [item\_list\_name](./analytics.item.md#itemitem_list_name) | string | |
+| [item\_name](./analytics.item.md#itemitem_name) | string | |
+| [item\_variant](./analytics.item.md#itemitem_variant) | string | |
+| [location\_id](./analytics.item.md#itemlocation_id) | string | |
+| [name](./analytics.item.md#itemname) | string | |
+| [price](./analytics.item.md#itemprice) | [Currency](./analytics.md#currency) | |
+| [promotion\_id](./analytics.item.md#itempromotion_id) | string | |
+| [promotion\_name](./analytics.item.md#itempromotion_name) | string | |
+| [quantity](./analytics.item.md#itemquantity) | number | |
+
+## Item.affiliation
+
+Signature:
+
+```typescript
+affiliation?: string;
+```
+
+## Item.brand
+
+> Warning: This API is now obsolete.
+>
+> Use item\_brand instead.
+>
+
+Signature:
+
+```typescript
+brand?: string;
+```
+
+## Item.category
+
+> Warning: This API is now obsolete.
+>
+> Use item\_category instead.
+>
+
+Signature:
+
+```typescript
+category?: string;
+```
+
+## Item.coupon
+
+Signature:
+
+```typescript
+coupon?: string;
+```
+
+## Item.creative\_name
+
+Signature:
+
+```typescript
+creative_name?: string;
+```
+
+## Item.creative\_slot
+
+Signature:
+
+```typescript
+creative_slot?: string;
+```
+
+## Item.discount
+
+Signature:
+
+```typescript
+discount?: Currency;
+```
+
+## Item.id
+
+> Warning: This API is now obsolete.
+>
+> Use item\_id instead.
+>
+
+Signature:
+
+```typescript
+id?: string;
+```
+
+## Item.index
+
+Signature:
+
+```typescript
+index?: number;
+```
+
+## Item.item\_brand
+
+Signature:
+
+```typescript
+item_brand?: string;
+```
+
+## Item.item\_category
+
+Signature:
+
+```typescript
+item_category?: string;
+```
+
+## Item.item\_category2
+
+Signature:
+
+```typescript
+item_category2?: string;
+```
+
+## Item.item\_category3
+
+Signature:
+
+```typescript
+item_category3?: string;
+```
+
+## Item.item\_category4
+
+Signature:
+
+```typescript
+item_category4?: string;
+```
+
+## Item.item\_category5
+
+Signature:
+
+```typescript
+item_category5?: string;
+```
+
+## Item.item\_id
+
+Signature:
+
+```typescript
+item_id?: string;
+```
+
+## Item.item\_list\_id
+
+Signature:
+
+```typescript
+item_list_id?: string;
+```
+
+## Item.item\_list\_name
+
+Signature:
+
+```typescript
+item_list_name?: string;
+```
+
+## Item.item\_name
+
+Signature:
+
+```typescript
+item_name?: string;
+```
+
+## Item.item\_variant
+
+Signature:
+
+```typescript
+item_variant?: string;
+```
+
+## Item.location\_id
+
+Signature:
+
+```typescript
+location_id?: string;
+```
+
+## Item.name
+
+> Warning: This API is now obsolete.
+>
+> Use item\_name instead.
+>
+
+Signature:
+
+```typescript
+name?: string;
+```
+
+## Item.price
+
+Signature:
+
+```typescript
+price?: Currency;
+```
+
+## Item.promotion\_id
+
+Signature:
+
+```typescript
+promotion_id?: string;
+```
+
+## Item.promotion\_name
+
+Signature:
+
+```typescript
+promotion_name?: string;
+```
+
+## Item.quantity
+
+Signature:
+
+```typescript
+quantity?: number;
+```
diff --git a/docs-devsite/analytics.md b/docs-devsite/analytics.md
new file mode 100644
index 00000000000..bd6e4b69351
--- /dev/null
+++ b/docs-devsite/analytics.md
@@ -0,0 +1,991 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# analytics package
+Firebase Analytics
+
+## Functions
+
+| Function | Description |
+| --- | --- |
+| function(app...) |
+| [getAnalytics(app)](./analytics.md#getanalytics) | Returns an [Analytics](./analytics.analytics.md#analytics_interface) instance for the given app. |
+| [initializeAnalytics(app, options)](./analytics.md#initializeanalytics) | Returns an [Analytics](./analytics.analytics.md#analytics_interface) instance for the given app. |
+| function(analyticsInstance...) |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.See [Track Screenviews](https://firebase.google.com/docs/analytics/screenviews). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.See [Measure exceptions](https://developers.google.com/analytics/devguides/collection/ga4/exceptions). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [logEvent(analyticsInstance, eventName, eventParams, options)](./analytics.md#logevent) | Sends a Google Analytics event with given eventParams. This method automatically associates this logged event with this Firebase web app instance on this device.See [Page views](https://developers.google.com/analytics/devguides/collection/ga4/page-view). |
+| [setAnalyticsCollectionEnabled(analyticsInstance, enabled)](./analytics.md#setanalyticscollectionenabled) | Sets whether Google Analytics collection is enabled for this app on this device. Sets global window['ga-disable-analyticsId'] = true; |
+| [setCurrentScreen(analyticsInstance, screenName, options)](./analytics.md#setcurrentscreen) | Use gtag config command to set screen_name. |
+| [setUserId(analyticsInstance, id, options)](./analytics.md#setuserid) | Use gtag config command to set user_id. |
+| [setUserProperties(analyticsInstance, properties, options)](./analytics.md#setuserproperties) | Use gtag config command to set all params specified. |
+| function() |
+| [isSupported()](./analytics.md#issupported) | This is a public static method provided to users that wraps four different checks:1. Check if it's not a browser extension environment. 2. Check if cookies are enabled in current browser. 3. Check if IndexedDB is supported by the browser environment. 4. Check if the current browser context is valid for using IndexedDB.open(). |
+| function(consentSettings...) |
+| [setConsent(consentSettings)](./analytics.md#setconsent) | Sets the applicable end user consent state for this web app across all gtag references once Firebase Analytics is initialized.Use the [ConsentSettings](./analytics.consentsettings.md#consentsettings_interface) to specify individual consent type values. By default consent types are set to "granted". |
+| function(customParams...) |
+| [setDefaultEventParameters(customParams)](./analytics.md#setdefaulteventparameters) | Adds data that will be set on every event logged from the SDK, including automatic ones. With gtag's "set" command, the values passed persist on the current page and are passed with all subsequent events. |
+| function(options...) |
+| [settings(options)](./analytics.md#settings) | Configures Firebase Analytics to use custom gtag or dataLayer names. Intended to be used if gtag.js script has been installed on this page independently of Firebase Analytics, and is using non-default names for either the gtag function or for dataLayer. Must be called before calling getAnalytics() or it won't have any effect. |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [Analytics](./analytics.analytics.md#analytics_interface) | An instance of Firebase Analytics. |
+| [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | Additional options that can be passed to Analytics method calls such as logEvent, etc. |
+| [AnalyticsSettings](./analytics.analyticssettings.md#analyticssettings_interface) | [Analytics](./analytics.analytics.md#analytics_interface) instance initialization options. |
+| [ConsentSettings](./analytics.consentsettings.md#consentsettings_interface) | Consent status settings for each consent type. For more information, see [the GA4 reference documentation for consent state and consent types](https://developers.google.com/tag-platform/tag-manager/templates/consent-apis). |
+| [ControlParams](./analytics.controlparams.md#controlparams_interface) | Standard gtag.js control parameters. For more information, see [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [CustomParams](./analytics.customparams.md#customparams_interface) | Any custom params the user may pass to gtag. |
+| [EventParams](./analytics.eventparams.md#eventparams_interface) | Standard gtag.js event parameters. For more information, see [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events). |
+| [GtagConfigParams](./analytics.gtagconfigparams.md#gtagconfigparams_interface) | A set of common Google Analytics config settings recognized by gtag.js. |
+| [Item](./analytics.item.md#item_interface) | Standard Google Analytics Item type. |
+| [Promotion](./analytics.promotion.md#promotion_interface) | Field previously used by some Google Analytics events. |
+| [SettingsOptions](./analytics.settingsoptions.md#settingsoptions_interface) | Specifies custom options for your Firebase Analytics instance. You must set these before initializing firebase.analytics(). |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [ConsentStatusString](./analytics.md#consentstatusstring) | Whether a particular consent type has been granted or denied. |
+| [Currency](./analytics.md#currency) | Standard Google Analytics currency type. |
+| [CustomEventName](./analytics.md#customeventname) | Any custom event name string not in the standard list of recommended event names. |
+| [EventNameString](./analytics.md#eventnamestring) | Type for standard Google Analytics event names. logEvent also accepts any custom string and interprets it as a custom event name. |
+
+## getAnalytics()
+
+Returns an [Analytics](./analytics.analytics.md#analytics_interface) instance for the given app.
+
+Signature:
+
+```typescript
+export declare function getAnalytics(app?: FirebaseApp): Analytics;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) to use. |
+
+Returns:
+
+[Analytics](./analytics.analytics.md#analytics_interface)
+
+## initializeAnalytics()
+
+Returns an [Analytics](./analytics.analytics.md#analytics_interface) instance for the given app.
+
+Signature:
+
+```typescript
+export declare function initializeAnalytics(app: FirebaseApp, options?: AnalyticsSettings): Analytics;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) to use. |
+| options | [AnalyticsSettings](./analytics.analyticssettings.md#analyticssettings_interface) | |
+
+Returns:
+
+[Analytics](./analytics.analytics.md#analytics_interface)
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'add_payment_info', eventParams?: {
+ coupon?: EventParams['coupon'];
+ currency?: EventParams['currency'];
+ items?: EventParams['items'];
+ payment_type?: EventParams['payment_type'];
+ value?: EventParams['value'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'add\_payment\_info' | |
+| eventParams | { coupon?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['coupon'\]; currency?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['currency'\]; items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; payment\_type?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['payment\_type'\]; value?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['value'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'purchase' | 'refund', eventParams?: {
+ value?: EventParams['value'];
+ currency?: EventParams['currency'];
+ transaction_id: EventParams['transaction_id'];
+ tax?: EventParams['tax'];
+ shipping?: EventParams['shipping'];
+ items?: EventParams['items'];
+ coupon?: EventParams['coupon'];
+ affiliation?: EventParams['affiliation'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'purchase' \| 'refund' | |
+| eventParams | { value?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['value'\]; currency?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['currency'\]; transaction\_id: [EventParams](./analytics.eventparams.md#eventparams_interface)\['transaction\_id'\]; tax?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['tax'\]; shipping?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['shipping'\]; items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; coupon?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['coupon'\]; affiliation?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['affiliation'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+See [Track Screenviews](https://firebase.google.com/docs/analytics/screenviews).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'screen_view', eventParams?: {
+ firebase_screen: EventParams['firebase_screen'];
+ firebase_screen_class: EventParams['firebase_screen_class'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'screen\_view' | |
+| eventParams | { firebase\_screen: [EventParams](./analytics.eventparams.md#eventparams_interface)\['firebase\_screen'\]; firebase\_screen\_class: [EventParams](./analytics.eventparams.md#eventparams_interface)\['firebase\_screen\_class'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'search' | 'view_search_results', eventParams?: {
+ search_term?: EventParams['search_term'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'search' \| 'view\_search\_results' | |
+| eventParams | { search\_term?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['search\_term'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'select_content', eventParams?: {
+ content_type?: EventParams['content_type'];
+ item_id?: EventParams['item_id'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'select\_content' | |
+| eventParams | { content\_type?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['content\_type'\]; item\_id?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_id'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'select_item', eventParams?: {
+ items?: EventParams['items'];
+ item_list_name?: EventParams['item_list_name'];
+ item_list_id?: EventParams['item_list_id'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'select\_item' | |
+| eventParams | { items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; item\_list\_name?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_list\_name'\]; item\_list\_id?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_list\_id'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'select_promotion' | 'view_promotion', eventParams?: {
+ items?: EventParams['items'];
+ promotion_id?: EventParams['promotion_id'];
+ promotion_name?: EventParams['promotion_name'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'select\_promotion' \| 'view\_promotion' | |
+| eventParams | { items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; promotion\_id?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['promotion\_id'\]; promotion\_name?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['promotion\_name'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'set_checkout_option', eventParams?: {
+ checkout_step?: EventParams['checkout_step'];
+ checkout_option?: EventParams['checkout_option'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'set\_checkout\_option' | |
+| eventParams | { checkout\_step?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['checkout\_step'\]; checkout\_option?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['checkout\_option'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'share', eventParams?: {
+ method?: EventParams['method'];
+ content_type?: EventParams['content_type'];
+ item_id?: EventParams['item_id'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'share' | |
+| eventParams | { method?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['method'\]; content\_type?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['content\_type'\]; item\_id?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_id'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'sign_up', eventParams?: {
+ method?: EventParams['method'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'sign\_up' | |
+| eventParams | { method?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['method'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'timing_complete', eventParams?: {
+ name: string;
+ value: number;
+ event_category?: string;
+ event_label?: string;
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'timing\_complete' | |
+| eventParams | { name: string; value: number; event\_category?: string; event\_label?: string; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'add_shipping_info', eventParams?: {
+ coupon?: EventParams['coupon'];
+ currency?: EventParams['currency'];
+ items?: EventParams['items'];
+ shipping_tier?: EventParams['shipping_tier'];
+ value?: EventParams['value'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'add\_shipping\_info' | |
+| eventParams | { coupon?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['coupon'\]; currency?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['currency'\]; items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; shipping\_tier?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['shipping\_tier'\]; value?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['value'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'view_cart' | 'view_item', eventParams?: {
+ currency?: EventParams['currency'];
+ items?: EventParams['items'];
+ value?: EventParams['value'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'view\_cart' \| 'view\_item' | |
+| eventParams | { currency?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['currency'\]; items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; value?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['value'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEvent(analyticsInstance: Analytics, eventName: 'view_item_list', eventParams?: {
+ items?: EventParams['items'];
+ item_list_name?: EventParams['item_list_name'];
+ item_list_id?: EventParams['item_list_id'];
+ [key: string]: any;
+}, options?: AnalyticsCallOptions): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| analyticsInstance | [Analytics](./analytics.analytics.md#analytics_interface) | |
+| eventName | 'view\_item\_list' | |
+| eventParams | { items?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['items'\]; item\_list\_name?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_list\_name'\]; item\_list\_id?: [EventParams](./analytics.eventparams.md#eventparams_interface)\['item\_list\_id'\]; \[key: string\]: any; } | |
+| options | [AnalyticsCallOptions](./analytics.analyticscalloptions.md#analyticscalloptions_interface) | |
+
+Returns:
+
+void
+
+## logEvent()
+
+Sends a Google Analytics event with given `eventParams`. This method automatically associates this logged event with this Firebase web app instance on this device.
+
+List of recommended event parameters can be found in [the GA4 reference documentation](https://developers.google.com/gtagjs/reference/ga4-events).
+
+Signature:
+
+```typescript
+export declare function logEventdataLayer array used by gtag.js. |
+| [gtagName](./analytics.settingsoptions.md#settingsoptionsgtagname) | string | Sets custom name for gtag function. |
+
+## SettingsOptions.dataLayerName
+
+Sets custom name for `dataLayer` array used by `gtag.js`.
+
+Signature:
+
+```typescript
+dataLayerName?: string;
+```
+
+## SettingsOptions.gtagName
+
+Sets custom name for `gtag` function.
+
+Signature:
+
+```typescript
+gtagName?: string;
+```
diff --git a/docs-devsite/app-check.appcheck.md b/docs-devsite/app-check.appcheck.md
new file mode 100644
index 00000000000..a4cb809924d
--- /dev/null
+++ b/docs-devsite/app-check.appcheck.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# AppCheck interface
+The Firebase App Check service interface.
+
+Signature:
+
+```typescript
+export interface AppCheck
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [app](./app-check.appcheck.md#appcheckapp) | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this AppCheck instance is associated with. |
+
+## AppCheck.app
+
+The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this `AppCheck` instance is associated with.
+
+Signature:
+
+```typescript
+app: FirebaseApp;
+```
diff --git a/docs-devsite/app-check.appcheckoptions.md b/docs-devsite/app-check.appcheckoptions.md
new file mode 100644
index 00000000000..4d3630faa65
--- /dev/null
+++ b/docs-devsite/app-check.appcheckoptions.md
@@ -0,0 +1,46 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# AppCheckOptions interface
+Options for App Check initialization.
+
+Signature:
+
+```typescript
+export interface AppCheckOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [isTokenAutoRefreshEnabled](./app-check.appcheckoptions.md#appcheckoptionsistokenautorefreshenabled) | boolean | If set to true, enables automatic background refresh of App Check token. |
+| [provider](./app-check.appcheckoptions.md#appcheckoptionsprovider) | [CustomProvider](./app-check.customprovider.md#customprovider_class) \| [ReCaptchaV3Provider](./app-check.recaptchav3provider.md#recaptchav3provider_class) \| [ReCaptchaEnterpriseProvider](./app-check.recaptchaenterpriseprovider.md#recaptchaenterpriseprovider_class) | A reCAPTCHA V3 provider, reCAPTCHA Enterprise provider, or custom provider. |
+
+## AppCheckOptions.isTokenAutoRefreshEnabled
+
+If set to true, enables automatic background refresh of App Check token.
+
+Signature:
+
+```typescript
+isTokenAutoRefreshEnabled?: boolean;
+```
+
+## AppCheckOptions.provider
+
+A reCAPTCHA V3 provider, reCAPTCHA Enterprise provider, or custom provider.
+
+Signature:
+
+```typescript
+provider: CustomProvider | ReCaptchaV3Provider | ReCaptchaEnterpriseProvider;
+```
diff --git a/docs-devsite/app-check.appchecktoken.md b/docs-devsite/app-check.appchecktoken.md
new file mode 100644
index 00000000000..9cb71d78bbb
--- /dev/null
+++ b/docs-devsite/app-check.appchecktoken.md
@@ -0,0 +1,44 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# AppCheckToken interface
+The token returned from an App Check provider.
+
+Signature:
+
+```typescript
+export interface AppCheckToken
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [expireTimeMillis](./app-check.appchecktoken.md#appchecktokenexpiretimemillis) | number | The local timestamp after which the token will expire. |
+| [token](./app-check.appchecktoken.md#appchecktokentoken) | string | |
+
+## AppCheckToken.expireTimeMillis
+
+The local timestamp after which the token will expire.
+
+Signature:
+
+```typescript
+readonly expireTimeMillis: number;
+```
+
+## AppCheckToken.token
+
+Signature:
+
+```typescript
+readonly token: string;
+```
diff --git a/docs-devsite/app-check.appchecktokenresult.md b/docs-devsite/app-check.appchecktokenresult.md
new file mode 100644
index 00000000000..185d60992c1
--- /dev/null
+++ b/docs-devsite/app-check.appchecktokenresult.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# AppCheckTokenResult interface
+Result returned by `getToken()`.
+
+Signature:
+
+```typescript
+export interface AppCheckTokenResult
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [token](./app-check.appchecktokenresult.md#appchecktokenresulttoken) | string | The token string in JWT format. |
+
+## AppCheckTokenResult.token
+
+The token string in JWT format.
+
+Signature:
+
+```typescript
+readonly token: string;
+```
diff --git a/docs-devsite/app-check.customprovider.md b/docs-devsite/app-check.customprovider.md
new file mode 100644
index 00000000000..e00da1d7897
--- /dev/null
+++ b/docs-devsite/app-check.customprovider.md
@@ -0,0 +1,43 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# CustomProvider class
+Custom provider class.
+
+Signature:
+
+```typescript
+export declare class CustomProvider implements AppCheckProvider
+```
+Implements: AppCheckProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(\_customProviderOptions)](./app-check.customprovider.md#customproviderconstructor) | | Constructs a new instance of the CustomProvider class |
+
+## CustomProvider.(constructor)
+
+Constructs a new instance of the `CustomProvider` class
+
+Signature:
+
+```typescript
+constructor(_customProviderOptions: CustomProviderOptions);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| \_customProviderOptions | [CustomProviderOptions](./app-check.customprovideroptions.md#customprovideroptions_interface) | |
+
diff --git a/docs-devsite/app-check.customprovideroptions.md b/docs-devsite/app-check.customprovideroptions.md
new file mode 100644
index 00000000000..c122e0476dd
--- /dev/null
+++ b/docs-devsite/app-check.customprovideroptions.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# CustomProviderOptions interface
+Options when creating a [CustomProvider](./app-check.customprovider.md#customprovider_class).
+
+Signature:
+
+```typescript
+export interface CustomProviderOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [getToken](./app-check.customprovideroptions.md#customprovideroptionsgettoken) | () => Promise<[AppCheckToken](./app-check.appchecktoken.md#appchecktoken_interface)> | Function to get an App Check token through a custom provider service. |
+
+## CustomProviderOptions.getToken
+
+Function to get an App Check token through a custom provider service.
+
+Signature:
+
+```typescript
+getToken: () => PromisegetToken(). |
+| [CustomProviderOptions](./app-check.customprovideroptions.md#customprovideroptions_interface) | Options when creating a [CustomProvider](./app-check.customprovider.md#customprovider_class). |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [AppCheckTokenListener](./app-check.md#appchecktokenlistener) | A listener that is called whenever the App Check token changes. |
+
+## initializeAppCheck()
+
+Activate App Check for the given app. Can be called only once per app.
+
+Signature:
+
+```typescript
+export declare function initializeAppCheck(app: FirebaseApp | undefined, options: AppCheckOptions): AppCheck;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) \| undefined | the [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) to activate App Check for |
+| options | [AppCheckOptions](./app-check.appcheckoptions.md#appcheckoptions_interface) | App Check initialization options |
+
+Returns:
+
+[AppCheck](./app-check.appcheck.md#appcheck_interface)
+
+## getToken()
+
+Get the current App Check token. Attaches to the most recent in-flight request if one is present. Returns null if no token is present and no token requests are in-flight.
+
+Signature:
+
+```typescript
+export declare function getToken(appCheckInstance: AppCheck, forceRefresh?: boolean): Promisenext, error, and complete properties. next is called with an [AppCheckTokenResult](./app-check.appchecktokenresult.md#appchecktokenresult_interface) whenever the token changes. error is optional and is called if an error is thrown by the listener (the next function). complete is unused, as the token stream is unending. |
+
+Returns:
+
+[Unsubscribe](./util.md#unsubscribe)
+
+A function that unsubscribes this listener.
+
+## onTokenChanged()
+
+Registers a listener to changes in the token state. There can be more than one listener registered at the same time for one or more App Check instances. The listeners call back on the UI thread whenever the current token associated with this App Check instance changes.
+
+Signature:
+
+```typescript
+export declare function onTokenChanged(appCheckInstance: AppCheck, onNext: (tokenResult: AppCheckTokenResult) => void, onError?: (error: Error) => void, onCompletion?: () => void): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| appCheckInstance | [AppCheck](./app-check.appcheck.md#appcheck_interface) | The App Check service instance. |
+| onNext | (tokenResult: [AppCheckTokenResult](./app-check.appchecktokenresult.md#appchecktokenresult_interface)) => void | When the token changes, this function is called with aa [AppCheckTokenResult](./app-check.appchecktokenresult.md#appchecktokenresult_interface). |
+| onError | (error: Error) => void | Optional. Called if there is an error thrown by the listener (the onNext function). |
+| onCompletion | () => void | Currently unused, as the token stream is unending. |
+
+Returns:
+
+[Unsubscribe](./util.md#unsubscribe)
+
+A function that unsubscribes this listener.
+
+## setTokenAutoRefreshEnabled()
+
+Set whether App Check will automatically refresh tokens as needed.
+
+Signature:
+
+```typescript
+export declare function setTokenAutoRefreshEnabled(appCheckInstance: AppCheck, isTokenAutoRefreshEnabled: boolean): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| appCheckInstance | [AppCheck](./app-check.appcheck.md#appcheck_interface) | The App Check service instance. |
+| isTokenAutoRefreshEnabled | boolean | If true, the SDK automatically refreshes App Check tokens as needed. This overrides any value set during initializeAppCheck(). |
+
+Returns:
+
+void
+
+## AppCheckTokenListener
+
+A listener that is called whenever the App Check token changes.
+
+Signature:
+
+```typescript
+export declare type AppCheckTokenListener = (token: AppCheckTokenResult) => void;
+```
diff --git a/docs-devsite/app-check.recaptchaenterpriseprovider.md b/docs-devsite/app-check.recaptchaenterpriseprovider.md
new file mode 100644
index 00000000000..21222c24fb9
--- /dev/null
+++ b/docs-devsite/app-check.recaptchaenterpriseprovider.md
@@ -0,0 +1,43 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ReCaptchaEnterpriseProvider class
+App Check provider that can obtain a reCAPTCHA Enterprise token and exchange it for an App Check token.
+
+Signature:
+
+```typescript
+export declare class ReCaptchaEnterpriseProvider implements AppCheckProvider
+```
+Implements: AppCheckProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(\_siteKey)](./app-check.recaptchaenterpriseprovider.md#recaptchaenterpriseproviderconstructor) | | Create a ReCaptchaEnterpriseProvider instance. |
+
+## ReCaptchaEnterpriseProvider.(constructor)
+
+Create a ReCaptchaEnterpriseProvider instance.
+
+Signature:
+
+```typescript
+constructor(_siteKey: string);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| \_siteKey | string | |
+
diff --git a/docs-devsite/app-check.recaptchav3provider.md b/docs-devsite/app-check.recaptchav3provider.md
new file mode 100644
index 00000000000..f2df61a639d
--- /dev/null
+++ b/docs-devsite/app-check.recaptchav3provider.md
@@ -0,0 +1,43 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ReCaptchaV3Provider class
+App Check provider that can obtain a reCAPTCHA V3 token and exchange it for an App Check token.
+
+Signature:
+
+```typescript
+export declare class ReCaptchaV3Provider implements AppCheckProvider
+```
+Implements: AppCheckProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(\_siteKey)](./app-check.recaptchav3provider.md#recaptchav3providerconstructor) | | Create a ReCaptchaV3Provider instance. |
+
+## ReCaptchaV3Provider.(constructor)
+
+Create a ReCaptchaV3Provider instance.
+
+Signature:
+
+```typescript
+constructor(_siteKey: string);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| \_siteKey | string | |
+
diff --git a/docs-devsite/app.firebaseapp.md b/docs-devsite/app.firebaseapp.md
new file mode 100644
index 00000000000..cafbfdd7c54
--- /dev/null
+++ b/docs-devsite/app.firebaseapp.md
@@ -0,0 +1,91 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FirebaseApp interface
+A [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) holds the initialization information for a collection of services.
+
+Do not call this constructor directly. Instead, use [initializeApp()](./app.md#initializeapp) to create an app.
+
+Signature:
+
+```typescript
+export interface FirebaseApp
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [automaticDataCollectionEnabled](./app.firebaseapp.md#firebaseappautomaticdatacollectionenabled) | boolean | The settable config flag for GDPR opt-in/opt-out |
+| [name](./app.firebaseapp.md#firebaseappname) | string | The (read-only) name for this app.The default app's name is "[DEFAULT]". |
+| [options](./app.firebaseapp.md#firebaseappoptions) | [FirebaseOptions](./app.firebaseoptions.md#firebaseoptions_interface) | The (read-only) configuration options for this app. These are the original parameters given in [initializeApp()](./app.md#initializeapp). |
+
+## FirebaseApp.automaticDataCollectionEnabled
+
+The settable config flag for GDPR opt-in/opt-out
+
+Signature:
+
+```typescript
+automaticDataCollectionEnabled: boolean;
+```
+
+## FirebaseApp.name
+
+The (read-only) name for this app.
+
+The default app's name is `"[DEFAULT]"`.
+
+Signature:
+
+```typescript
+readonly name: string;
+```
+
+### Example 1
+
+
+```javascript
+// The default app's name is "[DEFAULT]"
+const app = initializeApp(defaultAppConfig);
+console.log(app.name); // "[DEFAULT]"
+
+```
+
+### Example 2
+
+
+```javascript
+// A named app's name is what you provide to initializeApp()
+const otherApp = initializeApp(otherAppConfig, "other");
+console.log(otherApp.name); // "other"
+
+```
+
+## FirebaseApp.options
+
+The (read-only) configuration options for this app. These are the original parameters given in [initializeApp()](./app.md#initializeapp).
+
+Signature:
+
+```typescript
+readonly options: FirebaseOptions;
+```
+
+### Example
+
+
+```javascript
+const app = initializeApp(config);
+console.log(app.options.databaseURL === config.databaseURL); // true
+
+```
+
diff --git a/docs-devsite/app.firebaseappsettings.md b/docs-devsite/app.firebaseappsettings.md
new file mode 100644
index 00000000000..3d9f858e548
--- /dev/null
+++ b/docs-devsite/app.firebaseappsettings.md
@@ -0,0 +1,46 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FirebaseAppSettings interface
+Configuration options given to [initializeApp()](./app.md#initializeapp)
+
+Signature:
+
+```typescript
+export interface FirebaseAppSettings
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [automaticDataCollectionEnabled](./app.firebaseappsettings.md#firebaseappsettingsautomaticdatacollectionenabled) | boolean | The settable config flag for GDPR opt-in/opt-out |
+| [name](./app.firebaseappsettings.md#firebaseappsettingsname) | string | custom name for the Firebase App. The default value is "[DEFAULT]". |
+
+## FirebaseAppSettings.automaticDataCollectionEnabled
+
+The settable config flag for GDPR opt-in/opt-out
+
+Signature:
+
+```typescript
+automaticDataCollectionEnabled?: boolean;
+```
+
+## FirebaseAppSettings.name
+
+custom name for the Firebase App. The default value is `"[DEFAULT]"`.
+
+Signature:
+
+```typescript
+name?: string;
+```
diff --git a/docs-devsite/app.firebaseoptions.md b/docs-devsite/app.firebaseoptions.md
new file mode 100644
index 00000000000..5061c901676
--- /dev/null
+++ b/docs-devsite/app.firebaseoptions.md
@@ -0,0 +1,112 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FirebaseOptions interface
+Firebase configuration object. Contains a set of parameters required by services in order to successfully communicate with Firebase server APIs and to associate client data with your Firebase project and Firebase application. Typically this object is populated by the Firebase console at project setup. See also: [Learn about the Firebase config object](https://firebase.google.com/docs/web/setup#config-object).
+
+Signature:
+
+```typescript
+export interface FirebaseOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [apiKey](./app.firebaseoptions.md#firebaseoptionsapikey) | string | An encrypted string used when calling certain APIs that don't need to access private user data (example value: AIzaSyDOCAbC123dEf456GhI789jKl012-MnO). |
+| [appId](./app.firebaseoptions.md#firebaseoptionsappid) | string | Unique identifier for the app. |
+| [authDomain](./app.firebaseoptions.md#firebaseoptionsauthdomain) | string | Auth domain for the project ID. |
+| [databaseURL](./app.firebaseoptions.md#firebaseoptionsdatabaseurl) | string | Default Realtime Database URL. |
+| [measurementId](./app.firebaseoptions.md#firebaseoptionsmeasurementid) | string | An ID automatically created when you enable Analytics in your Firebase project and register a web app. In versions 7.20.0 and higher, this parameter is optional. |
+| [messagingSenderId](./app.firebaseoptions.md#firebaseoptionsmessagingsenderid) | string | Unique numerical value used to identify each sender that can send Firebase Cloud Messaging messages to client apps. |
+| [projectId](./app.firebaseoptions.md#firebaseoptionsprojectid) | string | The unique identifier for the project across all of Firebase and Google Cloud. |
+| [storageBucket](./app.firebaseoptions.md#firebaseoptionsstoragebucket) | string | The default Cloud Storage bucket name. |
+
+## FirebaseOptions.apiKey
+
+An encrypted string used when calling certain APIs that don't need to access private user data (example value: `AIzaSyDOCAbC123dEf456GhI789jKl012-MnO`).
+
+Signature:
+
+```typescript
+apiKey?: string;
+```
+
+## FirebaseOptions.appId
+
+Unique identifier for the app.
+
+Signature:
+
+```typescript
+appId?: string;
+```
+
+## FirebaseOptions.authDomain
+
+Auth domain for the project ID.
+
+Signature:
+
+```typescript
+authDomain?: string;
+```
+
+## FirebaseOptions.databaseURL
+
+Default Realtime Database URL.
+
+Signature:
+
+```typescript
+databaseURL?: string;
+```
+
+## FirebaseOptions.measurementId
+
+An ID automatically created when you enable Analytics in your Firebase project and register a web app. In versions 7.20.0 and higher, this parameter is optional.
+
+Signature:
+
+```typescript
+measurementId?: string;
+```
+
+## FirebaseOptions.messagingSenderId
+
+Unique numerical value used to identify each sender that can send Firebase Cloud Messaging messages to client apps.
+
+Signature:
+
+```typescript
+messagingSenderId?: string;
+```
+
+## FirebaseOptions.projectId
+
+The unique identifier for the project across all of Firebase and Google Cloud.
+
+Signature:
+
+```typescript
+projectId?: string;
+```
+
+## FirebaseOptions.storageBucket
+
+The default Cloud Storage bucket name.
+
+Signature:
+
+```typescript
+storageBucket?: string;
+```
diff --git a/docs-devsite/app.md b/docs-devsite/app.md
new file mode 100644
index 00000000000..babb7d7bd2b
--- /dev/null
+++ b/docs-devsite/app.md
@@ -0,0 +1,306 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# app package
+Firebase App
+
+This package coordinates the communication between the different Firebase components
+
+## Functions
+
+| Function | Description |
+| --- | --- |
+| function(app...) |
+| [deleteApp(app)](./app.md#deleteapp) | Renders this app unusable and frees the resources of all associated services. |
+| function() |
+| [getApps()](./app.md#getapps) | A (read-only) array of all initialized apps. |
+| [initializeApp()](./app.md#initializeapp) | Creates and initializes a FirebaseApp instance. |
+| function(libraryKeyOrName...) |
+| [registerVersion(libraryKeyOrName, version, variant)](./app.md#registerversion) | Registers a library's name and version for platform logging purposes. |
+| function(logCallback...) |
+| [onLog(logCallback, options)](./app.md#onlog) | Sets log handler for all Firebase SDKs. |
+| function(logLevel...) |
+| [setLogLevel(logLevel)](./app.md#setloglevel) | Sets log level for all Firebase SDKs.All of the log types above the current log level are captured (i.e. if you set the log level to info, errors are logged, but debug and verbose logs are not). |
+| function(name...) |
+| [getApp(name)](./app.md#getapp) | Retrieves a [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) instance.When called with no arguments, the default app is returned. When an app name is provided, the app corresponding to that name is returned.An exception is thrown if the app being retrieved has not yet been initialized. |
+| function(options...) |
+| [initializeApp(options, name)](./app.md#initializeapp) | Creates and initializes a [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) instance.See [Add Firebase to your app](https://firebase.google.com/docs/web/setup#add_firebase_to_your_app) and [Initialize multiple projects](https://firebase.google.com/docs/web/setup#multiple-projects) for detailed documentation. |
+| [initializeApp(options, config)](./app.md#initializeapp) | Creates and initializes a FirebaseApp instance. |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | A [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) holds the initialization information for a collection of services.Do not call this constructor directly. Instead, use [initializeApp()](./app.md#initializeapp) to create an app. |
+| [FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface) | Configuration options given to [initializeApp()](./app.md#initializeapp) |
+| [FirebaseOptions](./app.firebaseoptions.md#firebaseoptions_interface) | Firebase configuration object. Contains a set of parameters required by services in order to successfully communicate with Firebase server APIs and to associate client data with your Firebase project and Firebase application. Typically this object is populated by the Firebase console at project setup. See also: [Learn about the Firebase config object](https://firebase.google.com/docs/web/setup#config-object). |
+
+## Variables
+
+| Variable | Description |
+| --- | --- |
+| [SDK\_VERSION](./app.md#sdk_version) | The current SDK version. |
+
+## deleteApp()
+
+Renders this app unusable and frees the resources of all associated services.
+
+Signature:
+
+```typescript
+export declare function deleteApp(app: FirebaseApp): Promise"[DEFAULT]". |
+
+Returns:
+
+[FirebaseApp](./app.firebaseapp.md#firebaseapp_interface)
+
+The app corresponding to the provided app name. If no app name is provided, the default app is returned.
+
+### Example 1
+
+
+```javascript
+// Return the default app
+const app = getApp();
+
+```
+
+### Example 2
+
+
+```javascript
+// Return a named app
+const otherApp = getApp("otherApp");
+
+```
+
+## initializeApp()
+
+Creates and initializes a [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) instance.
+
+See [Add Firebase to your app](https://firebase.google.com/docs/web/setup#add_firebase_to_your_app) and [Initialize multiple projects](https://firebase.google.com/docs/web/setup#multiple-projects) for detailed documentation.
+
+Signature:
+
+```typescript
+export declare function initializeApp(options: FirebaseOptions, name?: string): FirebaseApp;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| options | [FirebaseOptions](./app.firebaseoptions.md#firebaseoptions_interface) | Options to configure the app's services. |
+| name | string | Optional name of the app to initialize. If no name is provided, the default is "[DEFAULT]". |
+
+Returns:
+
+[FirebaseApp](./app.firebaseapp.md#firebaseapp_interface)
+
+The initialized app.
+
+### Example 1
+
+
+```javascript
+
+// Initialize default app
+// Retrieve your own options values by adding a web app on
+// https://console.firebase.google.com
+initializeApp({
+ apiKey: "AIza....", // Auth / General Use
+ authDomain: "YOUR_APP.firebaseapp.com", // Auth with popup/redirect
+ databaseURL: "https://YOUR_APP.firebaseio.com", // Realtime Database
+ storageBucket: "YOUR_APP.appspot.com", // Storage
+ messagingSenderId: "123456789" // Cloud Messaging
+});
+
+```
+
+### Example 2
+
+
+```javascript
+
+// Initialize another app
+const otherApp = initializeApp({
+ databaseURL: "https://example.page.link). |
+| [handleCodeInApp](./auth.actioncodesettings.md#actioncodesettingshandlecodeinapp) | boolean | When set to true, the action code link will be be sent as a Universal Link or Android App Link and will be opened by the app if installed. |
+| [iOS](./auth.actioncodesettings.md#actioncodesettingsios) | { bundleId: string; } | Sets the iOS bundle ID. |
+| [url](./auth.actioncodesettings.md#actioncodesettingsurl) | string | Sets the link continue/state URL. |
+
+## ActionCodeSettings.android
+
+Sets the Android package name.
+
+This will try to open the link in an android app if it is installed. If `installApp` is passed, it specifies whether to install the Android app if the device supports it and the app is not already installed. If this field is provided without a `packageName`, an error is thrown explaining that the `packageName` must be provided in conjunction with this field. If `minimumVersion` is specified, and an older version of the app is installed, the user is taken to the Play Store to upgrade the app.
+
+Signature:
+
+```typescript
+android?: {
+ installApp?: boolean;
+ minimumVersion?: string;
+ packageName: string;
+ };
+```
+
+## ActionCodeSettings.dynamicLinkDomain
+
+When multiple custom dynamic link domains are defined for a project, specify which one to use when the link is to be opened via a specified mobile app (for example, `example.page.link`).
+
+Signature:
+
+```typescript
+dynamicLinkDomain?: string;
+```
+
+## ActionCodeSettings.handleCodeInApp
+
+When set to true, the action code link will be be sent as a Universal Link or Android App Link and will be opened by the app if installed.
+
+In the false case, the code will be sent to the web widget first and then on continue will redirect to the app if installed.
+
+Signature:
+
+```typescript
+handleCodeInApp?: boolean;
+```
+
+## ActionCodeSettings.iOS
+
+Sets the iOS bundle ID.
+
+This will try to open the link in an iOS app if it is installed.
+
+App installation is not supported for iOS.
+
+Signature:
+
+```typescript
+iOS?: {
+ bundleId: string;
+ };
+```
+
+## ActionCodeSettings.url
+
+Sets the link continue/state URL.
+
+This has different meanings in different contexts: - When the link is handled in the web action widgets, this is the deep link in the `continueUrl` query parameter. - When the link is handled in the app directly, this is the `continueUrl` query parameter in the deep link of the Dynamic Link.
+
+Signature:
+
+```typescript
+url: string;
+```
diff --git a/docs-devsite/auth.actioncodeurl.md b/docs-devsite/auth.actioncodeurl.md
new file mode 100644
index 00000000000..f59e20d8c15
--- /dev/null
+++ b/docs-devsite/auth.actioncodeurl.md
@@ -0,0 +1,121 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ActionCodeURL class
+A utility class to parse email action URLs such as password reset, email verification, email link sign in, etc.
+
+The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `ActionCodeURL` class.
+
+Signature:
+
+```typescript
+export declare class ActionCodeURL
+```
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [apiKey](./auth.actioncodeurl.md#actioncodeurlapikey) | | string | The API key of the email action link. |
+| [code](./auth.actioncodeurl.md#actioncodeurlcode) | | string | The action code of the email action link. |
+| [continueUrl](./auth.actioncodeurl.md#actioncodeurlcontinueurl) | | string \| null | The continue URL of the email action link. Null if not provided. |
+| [languageCode](./auth.actioncodeurl.md#actioncodeurllanguagecode) | | string \| null | The language code of the email action link. Null if not provided. |
+| [operation](./auth.actioncodeurl.md#actioncodeurloperation) | | string | The action performed by the email action link. It returns from one of the types from [ActionCodeInfo](./auth.actioncodeinfo.md#actioncodeinfo_interface) |
+| [tenantId](./auth.actioncodeurl.md#actioncodeurltenantid) | | string \| null | The tenant ID of the email action link. Null if the email action is from the parent project. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [parseLink(link)](./auth.actioncodeurl.md#actioncodeurlparselink) | static | Parses the email action link string and returns an [ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) if the link is valid, otherwise returns null. |
+
+## ActionCodeURL.apiKey
+
+The API key of the email action link.
+
+Signature:
+
+```typescript
+readonly apiKey: string;
+```
+
+## ActionCodeURL.code
+
+The action code of the email action link.
+
+Signature:
+
+```typescript
+readonly code: string;
+```
+
+## ActionCodeURL.continueUrl
+
+The continue URL of the email action link. Null if not provided.
+
+Signature:
+
+```typescript
+readonly continueUrl: string | null;
+```
+
+## ActionCodeURL.languageCode
+
+The language code of the email action link. Null if not provided.
+
+Signature:
+
+```typescript
+readonly languageCode: string | null;
+```
+
+## ActionCodeURL.operation
+
+The action performed by the email action link. It returns from one of the types from [ActionCodeInfo](./auth.actioncodeinfo.md#actioncodeinfo_interface)
+
+Signature:
+
+```typescript
+readonly operation: string;
+```
+
+## ActionCodeURL.tenantId
+
+The tenant ID of the email action link. Null if the email action is from the parent project.
+
+Signature:
+
+```typescript
+readonly tenantId: string | null;
+```
+
+## ActionCodeURL.parseLink()
+
+Parses the email action link string and returns an [ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) if the link is valid, otherwise returns null.
+
+Signature:
+
+```typescript
+static parseLink(link: string): ActionCodeURL | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| link | string | The email action link string. |
+
+Returns:
+
+[ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) \| null
+
+The [ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) object, or null if the link is invalid.
+
diff --git a/docs-devsite/auth.additionaluserinfo.md b/docs-devsite/auth.additionaluserinfo.md
new file mode 100644
index 00000000000..ec6ca5740ac
--- /dev/null
+++ b/docs-devsite/auth.additionaluserinfo.md
@@ -0,0 +1,68 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# AdditionalUserInfo interface
+A structure containing additional user information from a federated identity provider.
+
+Signature:
+
+```typescript
+export interface AdditionalUserInfo
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [isNewUser](./auth.additionaluserinfo.md#additionaluserinfoisnewuser) | boolean | Whether the user is new (created via sign-up) or existing (authenticated using sign-in). |
+| [profile](./auth.additionaluserinfo.md#additionaluserinfoprofile) | Record<string, unknown> \| null | Map containing IDP-specific user data. |
+| [providerId](./auth.additionaluserinfo.md#additionaluserinfoproviderid) | string \| null | Identifier for the provider used to authenticate this user. |
+| [username](./auth.additionaluserinfo.md#additionaluserinfousername) | string \| null | The username if the provider is GitHub or Twitter. |
+
+## AdditionalUserInfo.isNewUser
+
+Whether the user is new (created via sign-up) or existing (authenticated using sign-in).
+
+Signature:
+
+```typescript
+readonly isNewUser: boolean;
+```
+
+## AdditionalUserInfo.profile
+
+Map containing IDP-specific user data.
+
+Signature:
+
+```typescript
+readonly profile: RecordAuth service instance. |
+| [config](./auth.auth.md#authconfig) | [Config](./auth.config.md#config_interface) | The [Config](./auth.config.md#config_interface) used to initialize this instance. |
+| [currentUser](./auth.auth.md#authcurrentuser) | [User](./auth.user.md#user_interface) \| null | The currently signed-in user (or null). |
+| [emulatorConfig](./auth.auth.md#authemulatorconfig) | [EmulatorConfig](./auth.emulatorconfig.md#emulatorconfig_interface) \| null | The current emulator configuration (or null). |
+| [languageCode](./auth.auth.md#authlanguagecode) | string \| null | The [Auth](./auth.auth.md#auth_interface) instance's language code. |
+| [name](./auth.auth.md#authname) | string | The name of the app associated with the Auth service instance. |
+| [settings](./auth.auth.md#authsettings) | [AuthSettings](./auth.authsettings.md#authsettings_interface) | The [Auth](./auth.auth.md#auth_interface) instance's settings. |
+| [tenantId](./auth.auth.md#authtenantid) | string \| null | The [Auth](./auth.auth.md#auth_interface) instance's tenant ID. |
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [beforeAuthStateChanged(callback, onAbort)](./auth.auth.md#authbeforeauthstatechanged) | Adds a blocking callback that runs before an auth state change sets a new user. |
+| [onAuthStateChanged(nextOrObserver, error, completed)](./auth.auth.md#authonauthstatechanged) | Adds an observer for changes to the user's sign-in state. |
+| [onIdTokenChanged(nextOrObserver, error, completed)](./auth.auth.md#authonidtokenchanged) | Adds an observer for changes to the signed-in user's ID token. |
+| [setPersistence(persistence)](./auth.auth.md#authsetpersistence) | Changes the type of persistence on the Auth instance. |
+| [signOut()](./auth.auth.md#authsignout) | Signs out the current user. |
+| [updateCurrentUser(user)](./auth.auth.md#authupdatecurrentuser) | Asynchronously sets the provided user as [Auth.currentUser](./auth.auth.md#authcurrentuser) on the [Auth](./auth.auth.md#auth_interface) instance. |
+| [useDeviceLanguage()](./auth.auth.md#authusedevicelanguage) | Sets the current language to the default device/browser preference. |
+
+## Auth.app
+
+The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) associated with the `Auth` service instance.
+
+Signature:
+
+```typescript
+readonly app: FirebaseApp;
+```
+
+## Auth.config
+
+The [Config](./auth.config.md#config_interface) used to initialize this instance.
+
+Signature:
+
+```typescript
+readonly config: Config;
+```
+
+## Auth.currentUser
+
+The currently signed-in user (or null).
+
+Signature:
+
+```typescript
+readonly currentUser: User | null;
+```
+
+## Auth.emulatorConfig
+
+The current emulator configuration (or null).
+
+Signature:
+
+```typescript
+readonly emulatorConfig: EmulatorConfig | null;
+```
+
+## Auth.languageCode
+
+The [Auth](./auth.auth.md#auth_interface) instance's language code.
+
+This is a readable/writable property. When set to null, the default Firebase Console language setting is applied. The language code will propagate to email action templates (password reset, email verification and email change revocation), SMS templates for phone authentication, reCAPTCHA verifier and OAuth popup/redirect operations provided the specified providers support localization with the language code specified.
+
+Signature:
+
+```typescript
+languageCode: string | null;
+```
+
+## Auth.name
+
+The name of the app associated with the `Auth` service instance.
+
+Signature:
+
+```typescript
+readonly name: string;
+```
+
+## Auth.settings
+
+The [Auth](./auth.auth.md#auth_interface) instance's settings.
+
+This is used to edit/read configuration related options such as app verification mode for phone authentication.
+
+Signature:
+
+```typescript
+readonly settings: AuthSettings;
+```
+
+## Auth.tenantId
+
+The [Auth](./auth.auth.md#auth_interface) instance's tenant ID.
+
+This is a readable/writable property. When you set the tenant ID of an [Auth](./auth.auth.md#auth_interface) instance, all future sign-in/sign-up operations will pass this tenant ID and sign in or sign up users to the specified tenant project. When set to null, users are signed in to the parent project.
+
+Signature:
+
+```typescript
+tenantId: string | null;
+```
+
+### Example
+
+
+```javascript
+// Set the tenant ID on Auth instance.
+auth.tenantId = 'TENANT_PROJECT_ID';
+
+// All future sign-in request now include tenant ID.
+const result = await signInWithEmailAndPassword(auth, email, password);
+// result.user.tenantId should be 'TENANT_PROJECT_ID'.
+
+```
+
+## Auth.beforeAuthStateChanged()
+
+Adds a blocking callback that runs before an auth state change sets a new user.
+
+Signature:
+
+```typescript
+beforeAuthStateChanged(callback: (user: User | null) => void | PromisebeforeAuthStateChanged() callback throws, allowing you to undo any side effects. |
+
+Returns:
+
+[Unsubscribe](./util.md#unsubscribe)
+
+## Auth.onAuthStateChanged()
+
+Adds an observer for changes to the user's sign-in state.
+
+To keep the old behavior, see [Auth.onIdTokenChanged()](./auth.auth.md#authonidtokenchanged).
+
+Signature:
+
+```typescript
+onAuthStateChanged(nextOrObserver: NextOrObserverPersistence that the device supports is used. The SDK searches for an existing account in order and, if one is found in a secondary Persistence, the account is moved to the primary Persistence.If no persistence is provided, the SDK falls back on [inMemoryPersistence](./auth.md#inmemorypersistence). |
+| [popupRedirectResolver](./auth.dependencies.md#dependenciespopupredirectresolver) | [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) | The [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) to use. This value depends on the platform. Options are [browserPopupRedirectResolver](./auth.md#browserpopupredirectresolver) and [cordovaPopupRedirectResolver](./auth.md#cordovapopupredirectresolver). This field is optional if neither [signInWithPopup()](./auth.md#signinwithpopup) or [signInWithRedirect()](./auth.md#signinwithredirect) are being used. |
+
+## Dependencies.errorMap
+
+Which [AuthErrorMap](./auth.autherrormap.md#autherrormap_interface) to use.
+
+Signature:
+
+```typescript
+errorMap?: AuthErrorMap;
+```
+
+## Dependencies.persistence
+
+Which [Persistence](./auth.persistence.md#persistence_interface) to use. If this is an array, the first `Persistence` that the device supports is used. The SDK searches for an existing account in order and, if one is found in a secondary `Persistence`, the account is moved to the primary `Persistence`.
+
+If no persistence is provided, the SDK falls back on [inMemoryPersistence](./auth.md#inmemorypersistence).
+
+Signature:
+
+```typescript
+persistence?: Persistence | Persistence[];
+```
+
+## Dependencies.popupRedirectResolver
+
+The [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) to use. This value depends on the platform. Options are [browserPopupRedirectResolver](./auth.md#browserpopupredirectresolver) and [cordovaPopupRedirectResolver](./auth.md#cordovapopupredirectresolver). This field is optional if neither [signInWithPopup()](./auth.md#signinwithpopup) or [signInWithRedirect()](./auth.md#signinwithredirect) are being used.
+
+Signature:
+
+```typescript
+popupRedirectResolver?: PopupRedirectResolver;
+```
diff --git a/docs-devsite/auth.emailauthcredential.md b/docs-devsite/auth.emailauthcredential.md
new file mode 100644
index 00000000000..5d322574b02
--- /dev/null
+++ b/docs-devsite/auth.emailauthcredential.md
@@ -0,0 +1,69 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# EmailAuthCredential class
+Interface that represents the credentials returned by [EmailAuthProvider](./auth.emailauthprovider.md#emailauthprovider_class) for [ProviderId](./auth.md#providerid).PASSWORD
+
+Covers both [SignInMethod](./auth.md#signinmethod).EMAIL\_PASSWORD and [SignInMethod](./auth.md#signinmethod).EMAIL\_LINK.
+
+The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `EmailAuthCredential` class.
+
+Signature:
+
+```typescript
+export declare class EmailAuthCredential extends AuthCredential
+```
+Extends: [AuthCredential](./auth.authcredential.md#authcredential_class)
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [fromJSON(json)](./auth.emailauthcredential.md#emailauthcredentialfromjson) | static | Static method to deserialize a JSON representation of an object into an [AuthCredential](./auth.authcredential.md#authcredential_class). |
+| [toJSON()](./auth.emailauthcredential.md#emailauthcredentialtojson) | | Returns a JSON-serializable representation of this object. |
+
+## EmailAuthCredential.fromJSON()
+
+Static method to deserialize a JSON representation of an object into an [AuthCredential](./auth.authcredential.md#authcredential_class).
+
+Signature:
+
+```typescript
+static fromJSON(json: object | string): EmailAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| json | object \| string | Either object or the stringified representation of the object. When string is provided, JSON.parse would be called first. |
+
+Returns:
+
+[EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class) \| null
+
+If the JSON input does not represent an [AuthCredential](./auth.authcredential.md#authcredential_class), null is returned.
+
+## EmailAuthCredential.toJSON()
+
+Returns a JSON-serializable representation of this object.
+
+Signature:
+
+```typescript
+toJSON(): object;
+```
+Returns:
+
+object
+
+a JSON-serializable representation of this object.
+
diff --git a/docs-devsite/auth.emailauthprovider.md b/docs-devsite/auth.emailauthprovider.md
new file mode 100644
index 00000000000..c1834b1b8c4
--- /dev/null
+++ b/docs-devsite/auth.emailauthprovider.md
@@ -0,0 +1,159 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# EmailAuthProvider class
+Provider for generating [EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class).
+
+Signature:
+
+```typescript
+export declare class EmailAuthProvider implements AuthProvider
+```
+Implements: [AuthProvider](./auth.authprovider.md#authprovider_interface)
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [EMAIL\_LINK\_SIGN\_IN\_METHOD](./auth.emailauthprovider.md#emailauthprovideremail_link_sign_in_method) | static | 'emailLink' | Always set to [SignInMethod](./auth.md#signinmethod).EMAIL\_LINK. |
+| [EMAIL\_PASSWORD\_SIGN\_IN\_METHOD](./auth.emailauthprovider.md#emailauthprovideremail_password_sign_in_method) | static | 'password' | Always set to [SignInMethod](./auth.md#signinmethod).EMAIL\_PASSWORD. |
+| [PROVIDER\_ID](./auth.emailauthprovider.md#emailauthproviderprovider_id) | static | 'password' | Always set to [ProviderId](./auth.md#providerid).PASSWORD, even for email link. |
+| [providerId](./auth.emailauthprovider.md#emailauthproviderproviderid) | | "password" | Always set to [ProviderId](./auth.md#providerid).PASSWORD, even for email link. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(email, password)](./auth.emailauthprovider.md#emailauthprovidercredential) | static | Initialize an [AuthCredential](./auth.authcredential.md#authcredential_class) using an email and password. |
+| [credentialWithLink(email, emailLink)](./auth.emailauthprovider.md#emailauthprovidercredentialwithlink) | static | Initialize an [AuthCredential](./auth.authcredential.md#authcredential_class) using an email and an email link after a sign in with email link operation. |
+
+## EmailAuthProvider.EMAIL\_LINK\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).EMAIL\_LINK.
+
+Signature:
+
+```typescript
+static readonly EMAIL_LINK_SIGN_IN_METHOD: 'emailLink';
+```
+
+## EmailAuthProvider.EMAIL\_PASSWORD\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).EMAIL\_PASSWORD.
+
+Signature:
+
+```typescript
+static readonly EMAIL_PASSWORD_SIGN_IN_METHOD: 'password';
+```
+
+## EmailAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).PASSWORD, even for email link.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'password';
+```
+
+## EmailAuthProvider.providerId
+
+Always set to [ProviderId](./auth.md#providerid).PASSWORD, even for email link.
+
+Signature:
+
+```typescript
+readonly providerId: "password";
+```
+
+## EmailAuthProvider.credential()
+
+Initialize an [AuthCredential](./auth.authcredential.md#authcredential_class) using an email and password.
+
+Signature:
+
+```typescript
+static credential(email: string, password: string): EmailAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| email | string | Email address. |
+| password | string | User account password. |
+
+Returns:
+
+[EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class)
+
+The auth provider credential.
+
+### Example 1
+
+
+```javascript
+const authCredential = EmailAuthProvider.credential(email, password);
+const userCredential = await signInWithCredential(auth, authCredential);
+
+```
+
+### Example 2
+
+
+```javascript
+const userCredential = await signInWithEmailAndPassword(auth, email, password);
+
+```
+
+## EmailAuthProvider.credentialWithLink()
+
+Initialize an [AuthCredential](./auth.authcredential.md#authcredential_class) using an email and an email link after a sign in with email link operation.
+
+Signature:
+
+```typescript
+static credentialWithLink(email: string, emailLink: string): EmailAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| email | string | Email address. |
+| emailLink | string | Sign-in email link. |
+
+Returns:
+
+[EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class)
+
+- The auth provider credential.
+
+### Example 1
+
+
+```javascript
+const authCredential = EmailAuthProvider.credentialWithLink(auth, email, emailLink);
+const userCredential = await signInWithCredential(auth, authCredential);
+
+```
+
+### Example 2
+
+
+```javascript
+await sendSignInLinkToEmail(auth, email);
+// Obtain emailLink from user.
+const userCredential = await signInWithEmailLink(auth, email, emailLink);
+
+```
+
diff --git a/docs-devsite/auth.emulatorconfig.md b/docs-devsite/auth.emulatorconfig.md
new file mode 100644
index 00000000000..23f052c8dc4
--- /dev/null
+++ b/docs-devsite/auth.emulatorconfig.md
@@ -0,0 +1,70 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# EmulatorConfig interface
+Configuration of Firebase Authentication Emulator.
+
+Signature:
+
+```typescript
+export interface EmulatorConfig
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [host](./auth.emulatorconfig.md#emulatorconfighost) | string | The hostname of the emulator, which may be a domain ("localhost"), IPv4 address ("127.0.0.1") or quoted IPv6 address ("\[::1\]"). |
+| [options](./auth.emulatorconfig.md#emulatorconfigoptions) | { readonly disableWarnings: boolean; } | The emulator-specific options. |
+| [port](./auth.emulatorconfig.md#emulatorconfigport) | number \| null | The port of the emulator, or null if port isn't specified (i.e. protocol default). |
+| [protocol](./auth.emulatorconfig.md#emulatorconfigprotocol) | string | The protocol used to communicate with the emulator ("http"/"https"). |
+
+## EmulatorConfig.host
+
+The hostname of the emulator, which may be a domain ("localhost"), IPv4 address ("127.0.0.1") or quoted IPv6 address ("\[::1\]").
+
+Signature:
+
+```typescript
+readonly host: string;
+```
+
+## EmulatorConfig.options
+
+The emulator-specific options.
+
+Signature:
+
+```typescript
+readonly options: {
+ readonly disableWarnings: boolean;
+ };
+```
+
+## EmulatorConfig.port
+
+The port of the emulator, or null if port isn't specified (i.e. protocol default).
+
+Signature:
+
+```typescript
+readonly port: number | null;
+```
+
+## EmulatorConfig.protocol
+
+The protocol used to communicate with the emulator ("http"/"https").
+
+Signature:
+
+```typescript
+readonly protocol: string;
+```
diff --git a/docs-devsite/auth.facebookauthprovider.md b/docs-devsite/auth.facebookauthprovider.md
new file mode 100644
index 00000000000..71ac4eea79c
--- /dev/null
+++ b/docs-devsite/auth.facebookauthprovider.md
@@ -0,0 +1,182 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FacebookAuthProvider class
+Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).FACEBOOK.
+
+Signature:
+
+```typescript
+export declare class FacebookAuthProvider extends BaseOAuthProvider
+```
+Extends: BaseOAuthProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)()](./auth.facebookauthprovider.md#facebookauthproviderconstructor) | | Constructs a new instance of the FacebookAuthProvider class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [FACEBOOK\_SIGN\_IN\_METHOD](./auth.facebookauthprovider.md#facebookauthproviderfacebook_sign_in_method) | static | 'facebook.com' | Always set to [SignInMethod](./auth.md#signinmethod).FACEBOOK. |
+| [PROVIDER\_ID](./auth.facebookauthprovider.md#facebookauthproviderprovider_id) | static | 'facebook.com' | Always set to [ProviderId](./auth.md#providerid).FACEBOOK. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(accessToken)](./auth.facebookauthprovider.md#facebookauthprovidercredential) | static | Creates a credential for Facebook. |
+| [credentialFromError(error)](./auth.facebookauthprovider.md#facebookauthprovidercredentialfromerror) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromResult(userCredential)](./auth.facebookauthprovider.md#facebookauthprovidercredentialfromresult) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+
+## FacebookAuthProvider.(constructor)
+
+Constructs a new instance of the `FacebookAuthProvider` class
+
+Signature:
+
+```typescript
+constructor();
+```
+
+## FacebookAuthProvider.FACEBOOK\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).FACEBOOK.
+
+Signature:
+
+```typescript
+static readonly FACEBOOK_SIGN_IN_METHOD: 'facebook.com';
+```
+
+## FacebookAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).FACEBOOK.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'facebook.com';
+```
+
+## FacebookAuthProvider.credential()
+
+Creates a credential for Facebook.
+
+Signature:
+
+```typescript
+static credential(accessToken: string): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| accessToken | string | Facebook access token. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+### Example
+
+
+```javascript
+// `event` from the Facebook auth.authResponseChange callback.
+const credential = FacebookAuthProvider.credential(event.authResponse.accessToken);
+const result = await signInWithCredential(credential);
+
+```
+
+## FacebookAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+## FacebookAuthProvider.credentialFromResult()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+### Example 1
+
+
+```javascript
+// Sign in using a redirect.
+const provider = new FacebookAuthProvider();
+// Start a sign in process for an unauthenticated user.
+provider.addScope('user_birthday');
+await signInWithRedirect(auth, provider);
+// This will trigger a full page redirect away from your app
+
+// After returning from the redirect when your app initializes you can obtain the result
+const result = await getRedirectResult(auth);
+if (result) {
+ // This is the signed-in user
+ const user = result.user;
+ // This gives you a Facebook Access Token.
+ const credential = FacebookAuthProvider.credentialFromResult(result);
+ const token = credential.accessToken;
+}
+
+```
+
+### Example 2
+
+
+```javascript
+// Sign in using a popup.
+const provider = new FacebookAuthProvider();
+provider.addScope('user_birthday');
+const result = await signInWithPopup(auth, provider);
+
+// The signed-in user info.
+const user = result.user;
+// This gives you a Facebook Access Token.
+const credential = FacebookAuthProvider.credentialFromResult(result);
+const token = credential.accessToken;
+
+```
+
diff --git a/docs-devsite/auth.githubauthprovider.md b/docs-devsite/auth.githubauthprovider.md
new file mode 100644
index 00000000000..d2e04bc8125
--- /dev/null
+++ b/docs-devsite/auth.githubauthprovider.md
@@ -0,0 +1,174 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# GithubAuthProvider class
+Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).GITHUB.
+
+GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect directly, or use the [signInWithPopup()](./auth.md#signinwithpopup) handler:
+
+Signature:
+
+```typescript
+export declare class GithubAuthProvider extends BaseOAuthProvider
+```
+Extends: BaseOAuthProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)()](./auth.githubauthprovider.md#githubauthproviderconstructor) | | Constructs a new instance of the GithubAuthProvider class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [GITHUB\_SIGN\_IN\_METHOD](./auth.githubauthprovider.md#githubauthprovidergithub_sign_in_method) | static | 'github.com' | Always set to [SignInMethod](./auth.md#signinmethod).GITHUB. |
+| [PROVIDER\_ID](./auth.githubauthprovider.md#githubauthproviderprovider_id) | static | 'github.com' | Always set to [ProviderId](./auth.md#providerid).GITHUB. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(accessToken)](./auth.githubauthprovider.md#githubauthprovidercredential) | static | Creates a credential for Github. |
+| [credentialFromError(error)](./auth.githubauthprovider.md#githubauthprovidercredentialfromerror) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromResult(userCredential)](./auth.githubauthprovider.md#githubauthprovidercredentialfromresult) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+
+## GithubAuthProvider.(constructor)
+
+Constructs a new instance of the `GithubAuthProvider` class
+
+Signature:
+
+```typescript
+constructor();
+```
+
+## GithubAuthProvider.GITHUB\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).GITHUB.
+
+Signature:
+
+```typescript
+static readonly GITHUB_SIGN_IN_METHOD: 'github.com';
+```
+
+## GithubAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).GITHUB.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'github.com';
+```
+
+## GithubAuthProvider.credential()
+
+Creates a credential for Github.
+
+Signature:
+
+```typescript
+static credential(accessToken: string): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| accessToken | string | Github access token. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+## GithubAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+## GithubAuthProvider.credentialFromResult()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+### Example 1
+
+
+```javascript
+// Sign in using a redirect.
+const provider = new GithubAuthProvider();
+// Start a sign in process for an unauthenticated user.
+provider.addScope('repo');
+await signInWithRedirect(auth, provider);
+// This will trigger a full page redirect away from your app
+
+// After returning from the redirect when your app initializes you can obtain the result
+const result = await getRedirectResult(auth);
+if (result) {
+ // This is the signed-in user
+ const user = result.user;
+ // This gives you a Github Access Token.
+ const credential = GithubAuthProvider.credentialFromResult(result);
+ const token = credential.accessToken;
+}
+
+```
+
+### Example 2
+
+
+```javascript
+// Sign in using a popup.
+const provider = new GithubAuthProvider();
+provider.addScope('repo');
+const result = await signInWithPopup(auth, provider);
+
+// The signed-in user info.
+const user = result.user;
+// This gives you a Github Access Token.
+const credential = GithubAuthProvider.credentialFromResult(result);
+const token = credential.accessToken;
+
+```
+
diff --git a/docs-devsite/auth.googleauthprovider.md b/docs-devsite/auth.googleauthprovider.md
new file mode 100644
index 00000000000..2e14c0ff88e
--- /dev/null
+++ b/docs-devsite/auth.googleauthprovider.md
@@ -0,0 +1,185 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# GoogleAuthProvider class
+Provider for generating an an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).GOOGLE.
+
+Signature:
+
+```typescript
+export declare class GoogleAuthProvider extends BaseOAuthProvider
+```
+Extends: BaseOAuthProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)()](./auth.googleauthprovider.md#googleauthproviderconstructor) | | Constructs a new instance of the GoogleAuthProvider class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [GOOGLE\_SIGN\_IN\_METHOD](./auth.googleauthprovider.md#googleauthprovidergoogle_sign_in_method) | static | 'google.com' | Always set to [SignInMethod](./auth.md#signinmethod).GOOGLE. |
+| [PROVIDER\_ID](./auth.googleauthprovider.md#googleauthproviderprovider_id) | static | 'google.com' | Always set to [ProviderId](./auth.md#providerid).GOOGLE. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(idToken, accessToken)](./auth.googleauthprovider.md#googleauthprovidercredential) | static | Creates a credential for Google. At least one of ID token and access token is required. |
+| [credentialFromError(error)](./auth.googleauthprovider.md#googleauthprovidercredentialfromerror) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromResult(userCredential)](./auth.googleauthprovider.md#googleauthprovidercredentialfromresult) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+
+## GoogleAuthProvider.(constructor)
+
+Constructs a new instance of the `GoogleAuthProvider` class
+
+Signature:
+
+```typescript
+constructor();
+```
+
+## GoogleAuthProvider.GOOGLE\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).GOOGLE.
+
+Signature:
+
+```typescript
+static readonly GOOGLE_SIGN_IN_METHOD: 'google.com';
+```
+
+## GoogleAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).GOOGLE.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'google.com';
+```
+
+## GoogleAuthProvider.credential()
+
+Creates a credential for Google. At least one of ID token and access token is required.
+
+Signature:
+
+```typescript
+static credential(idToken?: string | null, accessToken?: string | null): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| idToken | string \| null | Google ID token. |
+| accessToken | string \| null | Google access token. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+### Example
+
+
+```javascript
+// \`googleUser\` from the onsuccess Google Sign In callback.
+const credential = GoogleAuthProvider.credential(googleUser.getAuthResponse().id_token);
+const result = await signInWithCredential(credential);
+
+```
+
+## GoogleAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+## GoogleAuthProvider.credentialFromResult()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+### Example 1
+
+
+```javascript
+// Sign in using a redirect.
+const provider = new GoogleAuthProvider();
+// Start a sign in process for an unauthenticated user.
+provider.addScope('profile');
+provider.addScope('email');
+await signInWithRedirect(auth, provider);
+// This will trigger a full page redirect away from your app
+
+// After returning from the redirect when your app initializes you can obtain the result
+const result = await getRedirectResult(auth);
+if (result) {
+ // This is the signed-in user
+ const user = result.user;
+ // This gives you a Google Access Token.
+ const credential = GoogleAuthProvider.credentialFromResult(result);
+ const token = credential.accessToken;
+}
+
+```
+
+### Example 2
+
+
+```javascript
+// Sign in using a popup.
+const provider = new GoogleAuthProvider();
+provider.addScope('profile');
+provider.addScope('email');
+const result = await signInWithPopup(auth, provider);
+
+// The signed-in user info.
+const user = result.user;
+// This gives you a Google Access Token.
+const credential = GoogleAuthProvider.credentialFromResult(result);
+const token = credential.accessToken;
+
+```
+
diff --git a/docs-devsite/auth.idtokenresult.md b/docs-devsite/auth.idtokenresult.md
new file mode 100644
index 00000000000..f000df924d9
--- /dev/null
+++ b/docs-devsite/auth.idtokenresult.md
@@ -0,0 +1,109 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# IdTokenResult interface
+Interface representing ID token result obtained from [User.getIdTokenResult()](./auth.user.md#usergetidtokenresult).
+
+`IdTokenResult` contains the ID token JWT string and other helper properties for getting different data associated with the token as well as all the decoded payload claims.
+
+Note that these claims are not to be trusted as they are parsed client side. Only server side verification can guarantee the integrity of the token claims.
+
+Signature:
+
+```typescript
+export interface IdTokenResult
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [authTime](./auth.idtokenresult.md#idtokenresultauthtime) | string | The authentication time formatted as a UTC string. |
+| [claims](./auth.idtokenresult.md#idtokenresultclaims) | [ParsedToken](./auth.parsedtoken.md#parsedtoken_interface) | The entire payload claims of the ID token including the standard reserved claims as well as the custom claims. |
+| [expirationTime](./auth.idtokenresult.md#idtokenresultexpirationtime) | string | The ID token expiration time formatted as a UTC string. |
+| [issuedAtTime](./auth.idtokenresult.md#idtokenresultissuedattime) | string | The ID token issuance time formatted as a UTC string. |
+| [signInProvider](./auth.idtokenresult.md#idtokenresultsigninprovider) | string \| null | The sign-in provider through which the ID token was obtained (anonymous, custom, phone, password, etc). |
+| [signInSecondFactor](./auth.idtokenresult.md#idtokenresultsigninsecondfactor) | string \| null | The type of second factor associated with this session, provided the user was multi-factor authenticated (eg. phone, etc). |
+| [token](./auth.idtokenresult.md#idtokenresulttoken) | string | The Firebase Auth ID token JWT string. |
+
+## IdTokenResult.authTime
+
+The authentication time formatted as a UTC string.
+
+This is the time the user authenticated (signed in) and not the time the token was refreshed.
+
+Signature:
+
+```typescript
+authTime: string;
+```
+
+## IdTokenResult.claims
+
+The entire payload claims of the ID token including the standard reserved claims as well as the custom claims.
+
+Signature:
+
+```typescript
+claims: ParsedToken;
+```
+
+## IdTokenResult.expirationTime
+
+The ID token expiration time formatted as a UTC string.
+
+Signature:
+
+```typescript
+expirationTime: string;
+```
+
+## IdTokenResult.issuedAtTime
+
+The ID token issuance time formatted as a UTC string.
+
+Signature:
+
+```typescript
+issuedAtTime: string;
+```
+
+## IdTokenResult.signInProvider
+
+The sign-in provider through which the ID token was obtained (anonymous, custom, phone, password, etc).
+
+Note, this does not map to provider IDs.
+
+Signature:
+
+```typescript
+signInProvider: string | null;
+```
+
+## IdTokenResult.signInSecondFactor
+
+The type of second factor associated with this session, provided the user was multi-factor authenticated (eg. phone, etc).
+
+Signature:
+
+```typescript
+signInSecondFactor: string | null;
+```
+
+## IdTokenResult.token
+
+The Firebase Auth ID token JWT string.
+
+Signature:
+
+```typescript
+token: string;
+```
diff --git a/docs-devsite/auth.md b/docs-devsite/auth.md
new file mode 100644
index 00000000000..f0f9029c225
--- /dev/null
+++ b/docs-devsite/auth.md
@@ -0,0 +1,1992 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# auth package
+Firebase Authentication
+
+## Functions
+
+| Function | Description |
+| --- | --- |
+| function(app...) |
+| [getAuth(app)](./auth.md#getauth) | Returns the Auth instance associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). If no instance exists, initializes an Auth instance with platform-specific default dependencies. |
+| [initializeAuth(app, deps)](./auth.md#initializeauth) | Initializes an [Auth](./auth.auth.md#auth_interface) instance with fine-grained control over [Dependencies](./auth.dependencies.md#dependencies_interface). |
+| function(storage...) |
+| [getReactNativePersistence(storage)](./auth.md#getreactnativepersistence) | Returns a persistence object that wraps AsyncStorage imported from react-native or @react-native-community/async-storage, and can be used in the persistence dependency field in [initializeAuth()](./auth.md#initializeauth). |
+| function(auth...) |
+| [applyActionCode(auth, oobCode)](./auth.md#applyactioncode) | Applies a verification code sent to the user by email or other out-of-band mechanism. |
+| [beforeAuthStateChanged(auth, callback, onAbort)](./auth.md#beforeauthstatechanged) | Adds a blocking callback that runs before an auth state change sets a new user. |
+| [checkActionCode(auth, oobCode)](./auth.md#checkactioncode) | Checks a verification code sent to the user by email or other out-of-band mechanism. |
+| [confirmPasswordReset(auth, oobCode, newPassword)](./auth.md#confirmpasswordreset) | Completes the password reset process, given a confirmation code and new password. |
+| [connectAuthEmulator(auth, url, options)](./auth.md#connectauthemulator) | Changes the [Auth](./auth.auth.md#auth_interface) instance to communicate with the Firebase Auth Emulator, instead of production Firebase Auth services. |
+| [createUserWithEmailAndPassword(auth, email, password)](./auth.md#createuserwithemailandpassword) | Creates a new user account associated with the specified email address and password. |
+| [fetchSignInMethodsForEmail(auth, email)](./auth.md#fetchsigninmethodsforemail) | Gets the list of possible sign in methods for the given email address. |
+| [getMultiFactorResolver(auth, error)](./auth.md#getmultifactorresolver) | Provides a [MultiFactorResolver](./auth.multifactorresolver.md#multifactorresolver_interface) suitable for completion of a multi-factor flow. |
+| [getRedirectResult(auth, resolver)](./auth.md#getredirectresult) | Returns a [UserCredential](./auth.usercredential.md#usercredential_interface) from the redirect-based sign-in flow. |
+| [isSignInWithEmailLink(auth, emailLink)](./auth.md#issigninwithemaillink) | Checks if an incoming link is a sign-in with email link suitable for [signInWithEmailLink()](./auth.md#signinwithemaillink). |
+| [onAuthStateChanged(auth, nextOrObserver, error, completed)](./auth.md#onauthstatechanged) | Adds an observer for changes to the user's sign-in state. |
+| [onIdTokenChanged(auth, nextOrObserver, error, completed)](./auth.md#onidtokenchanged) | Adds an observer for changes to the signed-in user's ID token. |
+| [sendPasswordResetEmail(auth, email, actionCodeSettings)](./auth.md#sendpasswordresetemail) | Sends a password reset email to the given email address. |
+| [sendSignInLinkToEmail(auth, email, actionCodeSettings)](./auth.md#sendsigninlinktoemail) | Sends a sign-in email link to the user with the specified email. |
+| [setPersistence(auth, persistence)](./auth.md#setpersistence) | Changes the type of persistence on the [Auth](./auth.auth.md#auth_interface) instance for the currently saved Auth session and applies this type of persistence for future sign-in requests, including sign-in with redirect requests. |
+| [signInAnonymously(auth)](./auth.md#signinanonymously) | Asynchronously signs in as an anonymous user. |
+| [signInWithCredential(auth, credential)](./auth.md#signinwithcredential) | Asynchronously signs in with the given credentials. |
+| [signInWithCustomToken(auth, customToken)](./auth.md#signinwithcustomtoken) | Asynchronously signs in using a custom token. |
+| [signInWithEmailAndPassword(auth, email, password)](./auth.md#signinwithemailandpassword) | Asynchronously signs in using an email and password. |
+| [signInWithEmailLink(auth, email, emailLink)](./auth.md#signinwithemaillink) | Asynchronously signs in using an email and sign-in email link. |
+| [signInWithPhoneNumber(auth, phoneNumber, appVerifier)](./auth.md#signinwithphonenumber) | Asynchronously signs in using a phone number. |
+| [signInWithPopup(auth, provider, resolver)](./auth.md#signinwithpopup) | Authenticates a Firebase client using a popup-based OAuth authentication flow. |
+| [signInWithRedirect(auth, provider, resolver)](./auth.md#signinwithredirect) | Authenticates a Firebase client using a full-page redirect flow. |
+| [signOut(auth)](./auth.md#signout) | Signs out the current user. |
+| [updateCurrentUser(auth, user)](./auth.md#updatecurrentuser) | Asynchronously sets the provided user as [Auth.currentUser](./auth.auth.md#authcurrentuser) on the [Auth](./auth.auth.md#auth_interface) instance. |
+| [useDeviceLanguage(auth)](./auth.md#usedevicelanguage) | Sets the current language to the default device/browser preference. |
+| [verifyPasswordResetCode(auth, code)](./auth.md#verifypasswordresetcode) | Checks a password reset code sent to the user by email or other out-of-band mechanism. |
+| function(link...) |
+| [parseActionCodeURL(link)](./auth.md#parseactioncodeurl) | Parses the email action link string and returns an [ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) if the link is valid, otherwise returns null. |
+| function(user...) |
+| [deleteUser(user)](./auth.md#deleteuser) | Deletes and signs out the user. |
+| [getIdToken(user, forceRefresh)](./auth.md#getidtoken) | Returns a JSON Web Token (JWT) used to identify the user to a Firebase service. |
+| [getIdTokenResult(user, forceRefresh)](./auth.md#getidtokenresult) | Returns a deserialized JSON Web Token (JWT) used to identitfy the user to a Firebase service. |
+| [linkWithCredential(user, credential)](./auth.md#linkwithcredential) | Links the user account with the given credentials. |
+| [linkWithPhoneNumber(user, phoneNumber, appVerifier)](./auth.md#linkwithphonenumber) | Links the user account with the given phone number. |
+| [linkWithPopup(user, provider, resolver)](./auth.md#linkwithpopup) | Links the authenticated provider to the user account using a pop-up based OAuth flow. |
+| [linkWithRedirect(user, provider, resolver)](./auth.md#linkwithredirect) | Links the [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class) to the user account using a full-page redirect flow. |
+| [multiFactor(user)](./auth.md#multifactor) | The [MultiFactorUser](./auth.multifactoruser.md#multifactoruser_interface) corresponding to the user. |
+| [reauthenticateWithCredential(user, credential)](./auth.md#reauthenticatewithcredential) | Re-authenticates a user using a fresh credential. |
+| [reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier)](./auth.md#reauthenticatewithphonenumber) | Re-authenticates a user using a fresh phone credential. |
+| [reauthenticateWithPopup(user, provider, resolver)](./auth.md#reauthenticatewithpopup) | Reauthenticates the current user with the specified [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class) using a pop-up based OAuth flow. |
+| [reauthenticateWithRedirect(user, provider, resolver)](./auth.md#reauthenticatewithredirect) | Reauthenticates the current user with the specified [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class) using a full-page redirect flow. |
+| [reload(user)](./auth.md#reload) | Reloads user account data, if signed in. |
+| [sendEmailVerification(user, actionCodeSettings)](./auth.md#sendemailverification) | Sends a verification email to a user. |
+| [unlink(user, providerId)](./auth.md#unlink) | Unlinks a provider from a user account. |
+| [updateEmail(user, newEmail)](./auth.md#updateemail) | Updates the user's email address. |
+| [updatePassword(user, newPassword)](./auth.md#updatepassword) | Updates the user's password. |
+| [updatePhoneNumber(user, credential)](./auth.md#updatephonenumber) | Updates the user's phone number. |
+| [updateProfile(user, { displayName, photoURL: photoUrl })](./auth.md#updateprofile) | Updates a user's profile data. |
+| [verifyBeforeUpdateEmail(user, newEmail, actionCodeSettings)](./auth.md#verifybeforeupdateemail) | Sends a verification email to a new email address. |
+| function(userCredential...) |
+| [getAdditionalUserInfo(userCredential)](./auth.md#getadditionaluserinfo) | Extracts provider specific [AdditionalUserInfo](./auth.additionaluserinfo.md#additionaluserinfo_interface) for the given credential. |
+
+## Classes
+
+| Class | Description |
+| --- | --- |
+| [ActionCodeURL](./auth.actioncodeurl.md#actioncodeurl_class) | A utility class to parse email action URLs such as password reset, email verification, email link sign in, etc. |
+| [AuthCredential](./auth.authcredential.md#authcredential_class) | Interface that represents the credentials returned by an [AuthProvider](./auth.authprovider.md#authprovider_interface). |
+| [EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class) | Interface that represents the credentials returned by [EmailAuthProvider](./auth.emailauthprovider.md#emailauthprovider_class) for [ProviderId](./auth.md#providerid).PASSWORD |
+| [EmailAuthProvider](./auth.emailauthprovider.md#emailauthprovider_class) | Provider for generating [EmailAuthCredential](./auth.emailauthcredential.md#emailauthcredential_class). |
+| [FacebookAuthProvider](./auth.facebookauthprovider.md#facebookauthprovider_class) | Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).FACEBOOK. |
+| [GithubAuthProvider](./auth.githubauthprovider.md#githubauthprovider_class) | Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).GITHUB. |
+| [GoogleAuthProvider](./auth.googleauthprovider.md#googleauthprovider_class) | Provider for generating an an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).GOOGLE. |
+| [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) | Represents the OAuth credentials returned by an [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class). |
+| [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class) | Provider for generating generic [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class). |
+| [PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class) | Represents the credentials returned by [PhoneAuthProvider](./auth.phoneauthprovider.md#phoneauthprovider_class). |
+| [PhoneAuthProvider](./auth.phoneauthprovider.md#phoneauthprovider_class) | Provider for generating an [PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class). |
+| [PhoneMultiFactorGenerator](./auth.phonemultifactorgenerator.md#phonemultifactorgenerator_class) | Provider for generating a [PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface). |
+| [RecaptchaVerifier](./auth.recaptchaverifier.md#recaptchaverifier_class) | An [reCAPTCHA](https://www.google.com/recaptcha/)-based application verifier. |
+| [SAMLAuthProvider](./auth.samlauthprovider.md#samlauthprovider_class) | An [AuthProvider](./auth.authprovider.md#authprovider_interface) for SAML. |
+| [TwitterAuthProvider](./auth.twitterauthprovider.md#twitterauthprovider_class) | Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).TWITTER. |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [ActionCodeInfo](./auth.actioncodeinfo.md#actioncodeinfo_interface) | A response from [checkActionCode()](./auth.md#checkactioncode). |
+| [ActionCodeSettings](./auth.actioncodesettings.md#actioncodesettings_interface) | An interface that defines the required continue/state URL with optional Android and iOS bundle identifiers. |
+| [AdditionalUserInfo](./auth.additionaluserinfo.md#additionaluserinfo_interface) | A structure containing additional user information from a federated identity provider. |
+| [ApplicationVerifier](./auth.applicationverifier.md#applicationverifier_interface) | A verifier for domain verification and abuse prevention. |
+| [Auth](./auth.auth.md#auth_interface) | Interface representing Firebase Auth service. |
+| [AuthError](./auth.autherror.md#autherror_interface) | Interface for an Auth error. |
+| [AuthErrorMap](./auth.autherrormap.md#autherrormap_interface) | A mapping of error codes to error messages. |
+| [AuthProvider](./auth.authprovider.md#authprovider_interface) | Interface that represents an auth provider, used to facilitate creating [AuthCredential](./auth.authcredential.md#authcredential_class). |
+| [AuthSettings](./auth.authsettings.md#authsettings_interface) | Interface representing an [Auth](./auth.auth.md#auth_interface) instance's settings. |
+| [Config](./auth.config.md#config_interface) | Interface representing the Auth config. |
+| [ConfirmationResult](./auth.confirmationresult.md#confirmationresult_interface) | A result from a phone number sign-in, link, or reauthenticate call. |
+| [Dependencies](./auth.dependencies.md#dependencies_interface) | The dependencies that can be used to initialize an [Auth](./auth.auth.md#auth_interface) instance. |
+| [EmulatorConfig](./auth.emulatorconfig.md#emulatorconfig_interface) | Configuration of Firebase Authentication Emulator. |
+| [IdTokenResult](./auth.idtokenresult.md#idtokenresult_interface) | Interface representing ID token result obtained from [User.getIdTokenResult()](./auth.user.md#usergetidtokenresult). |
+| [MultiFactorAssertion](./auth.multifactorassertion.md#multifactorassertion_interface) | The base class for asserting ownership of a second factor. |
+| [MultiFactorError](./auth.multifactorerror.md#multifactorerror_interface) | The error thrown when the user needs to provide a second factor to sign in successfully. |
+| [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) | A structure containing the information of a second factor entity. |
+| [MultiFactorResolver](./auth.multifactorresolver.md#multifactorresolver_interface) | The class used to facilitate recovery from [MultiFactorError](./auth.multifactorerror.md#multifactorerror_interface) when a user needs to provide a second factor to sign in. |
+| [MultiFactorSession](./auth.multifactorsession.md#multifactorsession_interface) | An interface defining the multi-factor session object used for enrolling a second factor on a user or helping sign in an enrolled user with a second factor. |
+| [MultiFactorUser](./auth.multifactoruser.md#multifactoruser_interface) | An interface that defines the multi-factor related properties and operations pertaining to a [User](./auth.user.md#user_interface). |
+| [OAuthCredentialOptions](./auth.oauthcredentialoptions.md#oauthcredentialoptions_interface) | Defines the options for initializing an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class). |
+| [ParsedToken](./auth.parsedtoken.md#parsedtoken_interface) | Interface representing a parsed ID token. |
+| [Persistence](./auth.persistence.md#persistence_interface) | An interface covering the possible persistence mechanism types. |
+| [PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface) | The class for asserting ownership of a phone second factor. Provided by [PhoneMultiFactorGenerator.assertion()](./auth.phonemultifactorgenerator.md#phonemultifactorgeneratorassertion). |
+| [PhoneMultiFactorEnrollInfoOptions](./auth.phonemultifactorenrollinfooptions.md#phonemultifactorenrollinfooptions_interface) | Options used for enrolling a second factor. |
+| [PhoneMultiFactorInfo](./auth.phonemultifactorinfo.md#phonemultifactorinfo_interface) | The subclass of the [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) interface for phone number second factors. The factorId of this second factor is [FactorId](./auth.md#factorid).PHONE. |
+| [PhoneMultiFactorSignInInfoOptions](./auth.phonemultifactorsignininfooptions.md#phonemultifactorsignininfooptions_interface) | Options used for signing in with a second factor. |
+| [PhoneSingleFactorInfoOptions](./auth.phonesinglefactorinfooptions.md#phonesinglefactorinfooptions_interface) | Options used for single-factor sign-in. |
+| [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) | A resolver used for handling DOM specific operations like [signInWithPopup()](./auth.md#signinwithpopup) or [signInWithRedirect()](./auth.md#signinwithredirect). |
+| [ReactNativeAsyncStorage](./auth.reactnativeasyncstorage.md#reactnativeasyncstorage_interface) | Interface for a supplied AsyncStorage. |
+| [RecaptchaParameters](./auth.recaptchaparameters.md#recaptchaparameters_interface) | Interface representing reCAPTCHA parameters.See the \[reCAPTCHA docs\](https://developers.google.com/recaptcha/docs/display\#render\_param) for the list of accepted parameters. All parameters are accepted except for sitekey: Firebase Auth provisions a reCAPTCHA for each project and will configure the site key upon rendering.For an invisible reCAPTCHA, set the size key to invisible. |
+| [User](./auth.user.md#user_interface) | A user account. |
+| [UserCredential](./auth.usercredential.md#usercredential_interface) | A structure containing a [User](./auth.user.md#user_interface), the [OperationType](./auth.md#operationtype), and the provider ID. |
+| [UserInfo](./auth.userinfo.md#userinfo_interface) | User profile information, visible only to the Firebase project's apps. |
+| [UserMetadata](./auth.usermetadata.md#usermetadata_interface) | Interface representing a user's metadata. |
+
+## Variables
+
+| Variable | Description |
+| --- | --- |
+| [ActionCodeOperation](./auth.md#actioncodeoperation) | An enumeration of the possible email action types. |
+| [AuthErrorCodes](./auth.md#autherrorcodes) | A map of potential Auth error codes, for easier comparison with errors thrown by the SDK. |
+| [browserLocalPersistence](./auth.md#browserlocalpersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type LOCAL using localStorage for the underlying storage. |
+| [browserPopupRedirectResolver](./auth.md#browserpopupredirectresolver) | An implementation of [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) suitable for browser based applications. |
+| [browserSessionPersistence](./auth.md#browsersessionpersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of SESSION using sessionStorage for the underlying storage. |
+| [cordovaPopupRedirectResolver](./auth.md#cordovapopupredirectresolver) | An implementation of [PopupRedirectResolver](./auth.popupredirectresolver.md#popupredirectresolver_interface) suitable for Cordova based applications. |
+| [debugErrorMap](./auth.md#debugerrormap) | A verbose error map with detailed descriptions for most error codes.See discussion at [AuthErrorMap](./auth.autherrormap.md#autherrormap_interface) |
+| [FactorId](./auth.md#factorid) | An enum of factors that may be used for multifactor authentication. |
+| [indexedDBLocalPersistence](./auth.md#indexeddblocalpersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type LOCAL using indexedDB for the underlying storage. |
+| [inMemoryPersistence](./auth.md#inmemorypersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type 'NONE'. |
+| [OperationType](./auth.md#operationtype) | Enumeration of supported operation types. |
+| [prodErrorMap](./auth.md#proderrormap) | A minimal error map with all verbose error messages stripped.See discussion at [AuthErrorMap](./auth.autherrormap.md#autherrormap_interface) |
+| [ProviderId](./auth.md#providerid) | Enumeration of supported providers. |
+| [reactNativeLocalPersistence](./auth.md#reactnativelocalpersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type 'LOCAL' for use in React Native environments. |
+| [SignInMethod](./auth.md#signinmethod) | Enumeration of supported sign-in methods. |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [CustomParameters](./auth.md#customparameters) | Map of OAuth Custom Parameters. |
+| [NextOrObserver](./auth.md#nextorobserver) | Type definition for an event callback. |
+| [PhoneInfoOptions](./auth.md#phoneinfooptions) | The information required to verify the ownership of a phone number. |
+| [UserProfile](./auth.md#userprofile) | User profile used in [AdditionalUserInfo](./auth.additionaluserinfo.md#additionaluserinfo_interface). |
+
+## getAuth()
+
+Returns the Auth instance associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). If no instance exists, initializes an Auth instance with platform-specific default dependencies.
+
+Signature:
+
+```typescript
+export declare function getAuth(app?: FirebaseApp): Auth;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The Firebase App. |
+
+Returns:
+
+[Auth](./auth.auth.md#auth_interface)
+
+## initializeAuth()
+
+Initializes an [Auth](./auth.auth.md#auth_interface) instance with fine-grained control over [Dependencies](./auth.dependencies.md#dependencies_interface).
+
+This function allows more control over the [Auth](./auth.auth.md#auth_interface) instance than [getAuth()](./auth.md#getauth). `getAuth` uses platform-specific defaults to supply the [Dependencies](./auth.dependencies.md#dependencies_interface). In general, `getAuth` is the easiest way to initialize Auth and works for most use cases. Use `initializeAuth` if you need control over which persistence layer is used, or to minimize bundle size if you're not using either `signInWithPopup` or `signInWithRedirect`.
+
+For example, if your app only uses anonymous accounts and you only want accounts saved for the current session, initialize `Auth` with:
+
+```js
+const auth = initializeAuth(app, {
+ persistence: browserSessionPersistence,
+ popupRedirectResolver: undefined,
+});
+
+```
+
+Signature:
+
+```typescript
+export declare function initializeAuth(app: FirebaseApp, deps?: Dependencies): Auth;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | |
+| deps | [Dependencies](./auth.dependencies.md#dependencies_interface) | |
+
+Returns:
+
+[Auth](./auth.auth.md#auth_interface)
+
+## getReactNativePersistence()
+
+Returns a persistence object that wraps `AsyncStorage` imported from `react-native` or `@react-native-community/async-storage`, and can be used in the persistence dependency field in [initializeAuth()](./auth.md#initializeauth).
+
+Signature:
+
+```typescript
+export declare function getReactNativePersistence(storage: ReactNativeAsyncStorage): Persistence;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| storage | [ReactNativeAsyncStorage](./auth.reactnativeasyncstorage.md#reactnativeasyncstorage_interface) | |
+
+Returns:
+
+[Persistence](./auth.persistence.md#persistence_interface)
+
+## applyActionCode()
+
+Applies a verification code sent to the user by email or other out-of-band mechanism.
+
+Signature:
+
+```typescript
+export declare function applyActionCode(auth: Auth, oobCode: string): PromisebeforeAuthStateChanged() callback throws, allowing you to undo any side effects. |
+
+Returns:
+
+[Unsubscribe](./util.md#unsubscribe)
+
+## checkActionCode()
+
+Checks a verification code sent to the user by email or other out-of-band mechanism.
+
+Signature:
+
+```typescript
+export declare function checkActionCode(auth: Auth, oobCode: string): Promiseoptions.disableWarnings defaults to false. Set it to true to disable the warning banner attached to the DOM. |
+
+Returns:
+
+void
+
+### Example
+
+
+```javascript
+connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });
+
+```
+
+## createUserWithEmailAndPassword()
+
+Creates a new user account associated with the specified email address and password.
+
+On successful creation of the user account, this user will also be signed in to your application.
+
+User account creation can fail if the account already exists or the password is invalid.
+
+Note: The email address acts as a unique identifier for the user and enables an email-based password reset. This function will create a new user account and set the initial user password.
+
+Signature:
+
+```typescript
+export declare function createUserWithEmailAndPassword(auth: Auth, email: string, password: string): Promisefacebook.com, twitter.com, etc. |
+| [idToken](./auth.oauthcredential.md#oauthcredentialidtoken) | | string | The OAuth ID token associated with the credential if it belongs to an OIDC provider, such as google.com. |
+| [secret](./auth.oauthcredential.md#oauthcredentialsecret) | | string | The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0 provider, such as twitter.com. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [fromJSON(json)](./auth.oauthcredential.md#oauthcredentialfromjson) | static | Static method to deserialize a JSON representation of an object into an [AuthCredential](./auth.authcredential.md#authcredential_class). |
+| [toJSON()](./auth.oauthcredential.md#oauthcredentialtojson) | | Returns a JSON-serializable representation of this object. |
+
+## OAuthCredential.accessToken
+
+The OAuth access token associated with the credential if it belongs to an [OAuthProvider](./auth.oauthprovider.md#oauthprovider_class), such as `facebook.com`, `twitter.com`, etc.
+
+Signature:
+
+```typescript
+accessToken?: string;
+```
+
+## OAuthCredential.idToken
+
+The OAuth ID token associated with the credential if it belongs to an OIDC provider, such as `google.com`.
+
+Signature:
+
+```typescript
+idToken?: string;
+```
+
+## OAuthCredential.secret
+
+The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0 provider, such as `twitter.com`.
+
+Signature:
+
+```typescript
+secret?: string;
+```
+
+## OAuthCredential.fromJSON()
+
+Static method to deserialize a JSON representation of an object into an [AuthCredential](./auth.authcredential.md#authcredential_class).
+
+Signature:
+
+```typescript
+static fromJSON(json: string | object): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| json | string \| object | Input can be either Object or the stringified representation of the object. When string is provided, JSON.parse would be called first. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+If the JSON input does not represent an [AuthCredential](./auth.authcredential.md#authcredential_class), null is returned.
+
+## OAuthCredential.toJSON()
+
+Returns a JSON-serializable representation of this object.
+
+Signature:
+
+```typescript
+toJSON(): object;
+```
+Returns:
+
+object
+
+a JSON-serializable representation of this object.
+
diff --git a/docs-devsite/auth.oauthcredentialoptions.md b/docs-devsite/auth.oauthcredentialoptions.md
new file mode 100644
index 00000000000..0389c534c17
--- /dev/null
+++ b/docs-devsite/auth.oauthcredentialoptions.md
@@ -0,0 +1,61 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# OAuthCredentialOptions interface
+Defines the options for initializing an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class).
+
+For ID tokens with nonce claim, the raw nonce has to also be provided.
+
+Signature:
+
+```typescript
+export interface OAuthCredentialOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [accessToken](./auth.oauthcredentialoptions.md#oauthcredentialoptionsaccesstoken) | string | The OAuth access token used to initialize the [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class). |
+| [idToken](./auth.oauthcredentialoptions.md#oauthcredentialoptionsidtoken) | string | The OAuth ID token used to initialize the [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class). |
+| [rawNonce](./auth.oauthcredentialoptions.md#oauthcredentialoptionsrawnonce) | string | The raw nonce associated with the ID token. |
+
+## OAuthCredentialOptions.accessToken
+
+The OAuth access token used to initialize the [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class).
+
+Signature:
+
+```typescript
+accessToken?: string;
+```
+
+## OAuthCredentialOptions.idToken
+
+The OAuth ID token used to initialize the [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class).
+
+Signature:
+
+```typescript
+idToken?: string;
+```
+
+## OAuthCredentialOptions.rawNonce
+
+The raw nonce associated with the ID token.
+
+It is required when an ID token with a nonce field is provided. The SHA-256 hash of the raw nonce must match the nonce field in the ID token.
+
+Signature:
+
+```typescript
+rawNonce?: string;
+```
diff --git a/docs-devsite/auth.oauthprovider.md b/docs-devsite/auth.oauthprovider.md
new file mode 100644
index 00000000000..30141fcce40
--- /dev/null
+++ b/docs-devsite/auth.oauthprovider.md
@@ -0,0 +1,168 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# OAuthProvider class
+Provider for generating generic [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class).
+
+Signature:
+
+```typescript
+export declare class OAuthProvider extends BaseOAuthProvider
+```
+Extends: BaseOAuthProvider
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(params)](./auth.oauthprovider.md#oauthprovidercredential) | | Creates a [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a generic OAuth provider's access token or ID token. |
+| [credentialFromError(error)](./auth.oauthprovider.md#oauthprovidercredentialfromerror) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromJSON(json)](./auth.oauthprovider.md#oauthprovidercredentialfromjson) | static | Creates an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a JSON string or a plain object. |
+| [credentialFromResult(userCredential)](./auth.oauthprovider.md#oauthprovidercredentialfromresult) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+
+## OAuthProvider.credential()
+
+Creates a [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a generic OAuth provider's access token or ID token.
+
+The raw nonce is required when an ID token with a nonce field is provided. The SHA-256 hash of the raw nonce must match the nonce field in the ID token.
+
+Signature:
+
+```typescript
+credential(params: OAuthCredentialOptions): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [OAuthCredentialOptions](./auth.oauthcredentialoptions.md#oauthcredentialoptions_interface) | Either the options object containing the ID token, access token and raw nonce or the ID token string. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+### Example
+
+
+```javascript
+// `googleUser` from the onsuccess Google Sign In callback.
+// Initialize a generate OAuth provider with a `google.com` providerId.
+const provider = new OAuthProvider('google.com');
+const credential = provider.credential({
+ idToken: googleUser.getAuthResponse().id_token,
+});
+const result = await signInWithCredential(credential);
+
+```
+
+## OAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+## OAuthProvider.credentialFromJSON()
+
+Creates an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a JSON string or a plain object.
+
+Signature:
+
+```typescript
+static credentialFromJSON(json: object | string): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| json | object \| string | A plain object or a JSON string |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+## OAuthProvider.credentialFromResult()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+### Example 1
+
+
+```javascript
+// Sign in using a redirect.
+const provider = new OAuthProvider('google.com');
+// Start a sign in process for an unauthenticated user.
+provider.addScope('profile');
+provider.addScope('email');
+await signInWithRedirect(auth, provider);
+// This will trigger a full page redirect away from your app
+
+// After returning from the redirect when your app initializes you can obtain the result
+const result = await getRedirectResult(auth);
+if (result) {
+ // This is the signed-in user
+ const user = result.user;
+ // This gives you a OAuth Access Token for the provider.
+ const credential = provider.credentialFromResult(auth, result);
+ const token = credential.accessToken;
+}
+
+```
+
+### Example 2
+
+
+```javascript
+// Sign in using a popup.
+const provider = new OAuthProvider('google.com');
+provider.addScope('profile');
+provider.addScope('email');
+const result = await signInWithPopup(auth, provider);
+
+// The signed-in user info.
+const user = result.user;
+// This gives you a OAuth Access Token for the provider.
+const credential = provider.credentialFromResult(auth, result);
+const token = credential.accessToken;
+
+```
+
diff --git a/docs-devsite/auth.parsedtoken.md b/docs-devsite/auth.parsedtoken.md
new file mode 100644
index 00000000000..7892b135536
--- /dev/null
+++ b/docs-devsite/auth.parsedtoken.md
@@ -0,0 +1,83 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ParsedToken interface
+Interface representing a parsed ID token.
+
+Signature:
+
+```typescript
+export interface ParsedToken
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [auth\_time](./auth.parsedtoken.md#parsedtokenauth_time) | string | Time at which authentication was performed. |
+| [exp](./auth.parsedtoken.md#parsedtokenexp) | string | Expiration time of the token. |
+| [firebase](./auth.parsedtoken.md#parsedtokenfirebase) | { 'sign\_in\_provider'?: string; 'sign\_in\_second\_factor'?: string; 'identities'?: Record<string, string>; } | Firebase specific claims, containing the provider(s) used to authenticate the user. |
+| [iat](./auth.parsedtoken.md#parsedtokeniat) | string | Issuance time of the token. |
+| [sub](./auth.parsedtoken.md#parsedtokensub) | string | UID of the user. |
+
+## ParsedToken.auth\_time
+
+Time at which authentication was performed.
+
+Signature:
+
+```typescript
+'auth_time'?: string;
+```
+
+## ParsedToken.exp
+
+Expiration time of the token.
+
+Signature:
+
+```typescript
+'exp'?: string;
+```
+
+## ParsedToken.firebase
+
+Firebase specific claims, containing the provider(s) used to authenticate the user.
+
+Signature:
+
+```typescript
+'firebase'?: {
+ 'sign_in_provider'?: string;
+ 'sign_in_second_factor'?: string;
+ 'identities'?: RecordsessionStorage. - 'LOCAL' is used for long term persistence such as localStorage or IndexedDB. - 'NONE' is used for in-memory, or no persistence. |
+
+## Persistence.type
+
+Type of Persistence. - 'SESSION' is used for temporary persistence such as `sessionStorage`. - 'LOCAL' is used for long term persistence such as `localStorage` or `IndexedDB`. - 'NONE' is used for in-memory, or no persistence.
+
+Signature:
+
+```typescript
+readonly type: 'SESSION' | 'LOCAL' | 'NONE';
+```
diff --git a/docs-devsite/auth.phoneauthcredential.md b/docs-devsite/auth.phoneauthcredential.md
new file mode 100644
index 00000000000..44a85db5254
--- /dev/null
+++ b/docs-devsite/auth.phoneauthcredential.md
@@ -0,0 +1,63 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PhoneAuthCredential class
+Represents the credentials returned by [PhoneAuthProvider](./auth.phoneauthprovider.md#phoneauthprovider_class).
+
+Signature:
+
+```typescript
+export declare class PhoneAuthCredential extends AuthCredential
+```
+Extends: [AuthCredential](./auth.authcredential.md#authcredential_class)
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [fromJSON(json)](./auth.phoneauthcredential.md#phoneauthcredentialfromjson) | static | Generates a phone credential based on a plain object or a JSON string. |
+| [toJSON()](./auth.phoneauthcredential.md#phoneauthcredentialtojson) | | Returns a JSON-serializable representation of this object. |
+
+## PhoneAuthCredential.fromJSON()
+
+Generates a phone credential based on a plain object or a JSON string.
+
+Signature:
+
+```typescript
+static fromJSON(json: object | string): PhoneAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| json | object \| string | |
+
+Returns:
+
+[PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class) \| null
+
+## PhoneAuthCredential.toJSON()
+
+Returns a JSON-serializable representation of this object.
+
+Signature:
+
+```typescript
+toJSON(): object;
+```
+Returns:
+
+object
+
+a JSON-serializable representation of this object.
+
diff --git a/docs-devsite/auth.phoneauthprovider.md b/docs-devsite/auth.phoneauthprovider.md
new file mode 100644
index 00000000000..41e743386de
--- /dev/null
+++ b/docs-devsite/auth.phoneauthprovider.md
@@ -0,0 +1,256 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PhoneAuthProvider class
+Provider for generating an [PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class).
+
+Signature:
+
+```typescript
+export declare class PhoneAuthProvider
+```
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(auth)](./auth.phoneauthprovider.md#phoneauthproviderconstructor) | | Constructs a new instance of the PhoneAuthProvider class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [PHONE\_SIGN\_IN\_METHOD](./auth.phoneauthprovider.md#phoneauthproviderphone_sign_in_method) | static | 'phone' | Always set to [SignInMethod](./auth.md#signinmethod).PHONE. |
+| [PROVIDER\_ID](./auth.phoneauthprovider.md#phoneauthproviderprovider_id) | static | 'phone' | Always set to [ProviderId](./auth.md#providerid).PHONE. |
+| [providerId](./auth.phoneauthprovider.md#phoneauthproviderproviderid) | | "phone" | Always set to [ProviderId](./auth.md#providerid).PHONE. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(verificationId, verificationCode)](./auth.phoneauthprovider.md#phoneauthprovidercredential) | static | Creates a phone auth credential, given the verification ID from [PhoneAuthProvider.verifyPhoneNumber()](./auth.phoneauthprovider.md#phoneauthproviderverifyphonenumber) and the code that was sent to the user's mobile device. |
+| [credentialFromError(error)](./auth.phoneauthprovider.md#phoneauthprovidercredentialfromerror) | static | Returns an [AuthCredential](./auth.authcredential.md#authcredential_class) when passed an error. |
+| [credentialFromResult(userCredential)](./auth.phoneauthprovider.md#phoneauthprovidercredentialfromresult) | static | Generates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+| [verifyPhoneNumber(phoneOptions, applicationVerifier)](./auth.phoneauthprovider.md#phoneauthproviderverifyphonenumber) | | Starts a phone number authentication flow by sending a verification code to the given phone number. |
+
+## PhoneAuthProvider.(constructor)
+
+Constructs a new instance of the `PhoneAuthProvider` class
+
+Signature:
+
+```typescript
+constructor(auth: Auth);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| auth | [Auth](./auth.auth.md#auth_interface) | The Firebase [Auth](./auth.auth.md#auth_interface) instance in which sign-ins should occur. |
+
+## PhoneAuthProvider.PHONE\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).PHONE.
+
+Signature:
+
+```typescript
+static readonly PHONE_SIGN_IN_METHOD: 'phone';
+```
+
+## PhoneAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).PHONE.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'phone';
+```
+
+## PhoneAuthProvider.providerId
+
+Always set to [ProviderId](./auth.md#providerid).PHONE.
+
+Signature:
+
+```typescript
+readonly providerId: "phone";
+```
+
+## PhoneAuthProvider.credential()
+
+Creates a phone auth credential, given the verification ID from [PhoneAuthProvider.verifyPhoneNumber()](./auth.phoneauthprovider.md#phoneauthproviderverifyphonenumber) and the code that was sent to the user's mobile device.
+
+Signature:
+
+```typescript
+static credential(verificationId: string, verificationCode: string): PhoneAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| verificationId | string | The verification ID returned from [PhoneAuthProvider.verifyPhoneNumber()](./auth.phoneauthprovider.md#phoneauthproviderverifyphonenumber). |
+| verificationCode | string | The verification code sent to the user's mobile device. |
+
+Returns:
+
+[PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class)
+
+The auth provider credential.
+
+### Example 1
+
+
+```javascript
+const provider = new PhoneAuthProvider(auth);
+const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);
+// Obtain verificationCode from the user.
+const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
+const userCredential = signInWithCredential(auth, authCredential);
+
+```
+
+### Example 2
+
+An alternative flow is provided using the `signInWithPhoneNumber` method.
+
+```javascript
+const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
+// Obtain verificationCode from the user.
+const userCredential = await confirmationResult.confirm(verificationCode);
+
+```
+
+## PhoneAuthProvider.credentialFromError()
+
+Returns an [AuthCredential](./auth.authcredential.md#authcredential_class) when passed an error.
+
+This method works for errors like `auth/account-exists-with-different-credentials`. This is useful for recovering when attempting to set a user's phone number but the number in question is already tied to another account. For example, the following code tries to update the current user's phone number, and if that fails, links the user with the account associated with that number:
+
+```js
+const provider = new PhoneAuthProvider(auth);
+const verificationId = await provider.verifyPhoneNumber(number, verifier);
+try {
+ const code = ''; // Prompt the user for the verification code
+ await updatePhoneNumber(
+ auth.currentUser,
+ PhoneAuthProvider.credential(verificationId, code));
+} catch (e) {
+ if ((e as FirebaseError)?.code === 'auth/account-exists-with-different-credential') {
+ const cred = PhoneAuthProvider.credentialFromError(e);
+ await linkWithCredential(auth.currentUser, cred);
+ }
+}
+
+// At this point, auth.currentUser.phoneNumber === number.
+
+```
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): AuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | The error to generate a credential from. |
+
+Returns:
+
+[AuthCredential](./auth.authcredential.md#authcredential_class) \| null
+
+## PhoneAuthProvider.credentialFromResult()
+
+Generates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): AuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[AuthCredential](./auth.authcredential.md#authcredential_class) \| null
+
+## PhoneAuthProvider.verifyPhoneNumber()
+
+Starts a phone number authentication flow by sending a verification code to the given phone number.
+
+Signature:
+
+```typescript
+verifyPhoneNumber(phoneOptions: PhoneInfoOptions | string, applicationVerifier: ApplicationVerifier): Promisestatic | string | The identifier of the phone second factor: phone. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [assertion(credential)](./auth.phonemultifactorgenerator.md#phonemultifactorgeneratorassertion) | static | Provides a [PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface) to confirm ownership of the phone second factor. |
+
+## PhoneMultiFactorGenerator.FACTOR\_ID
+
+The identifier of the phone second factor: `phone`.
+
+Signature:
+
+```typescript
+static FACTOR_ID: string;
+```
+
+## PhoneMultiFactorGenerator.assertion()
+
+Provides a [PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface) to confirm ownership of the phone second factor.
+
+Signature:
+
+```typescript
+static assertion(credential: PhoneAuthCredential): PhoneMultiFactorAssertion;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| credential | [PhoneAuthCredential](./auth.phoneauthcredential.md#phoneauthcredential_class) | |
+
+Returns:
+
+[PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface)
+
+A [PhoneMultiFactorAssertion](./auth.phonemultifactorassertion.md#phonemultifactorassertion_interface) which can be used with [MultiFactorResolver.resolveSignIn()](./auth.multifactorresolver.md#multifactorresolverresolvesignin)
+
diff --git a/docs-devsite/auth.phonemultifactorinfo.md b/docs-devsite/auth.phonemultifactorinfo.md
new file mode 100644
index 00000000000..c12c72b8a55
--- /dev/null
+++ b/docs-devsite/auth.phonemultifactorinfo.md
@@ -0,0 +1,36 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PhoneMultiFactorInfo interface
+The subclass of the [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) interface for phone number second factors. The `factorId` of this second factor is [FactorId](./auth.md#factorid).PHONE.
+
+Signature:
+
+```typescript
+export interface PhoneMultiFactorInfo extends MultiFactorInfo
+```
+Extends: [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface)
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [phoneNumber](./auth.phonemultifactorinfo.md#phonemultifactorinfophonenumber) | string | The phone number associated with the current second factor. |
+
+## PhoneMultiFactorInfo.phoneNumber
+
+The phone number associated with the current second factor.
+
+Signature:
+
+```typescript
+readonly phoneNumber: string;
+```
diff --git a/docs-devsite/auth.phonemultifactorsignininfooptions.md b/docs-devsite/auth.phonemultifactorsignininfooptions.md
new file mode 100644
index 00000000000..592ef7118b3
--- /dev/null
+++ b/docs-devsite/auth.phonemultifactorsignininfooptions.md
@@ -0,0 +1,61 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PhoneMultiFactorSignInInfoOptions interface
+Options used for signing in with a second factor.
+
+Signature:
+
+```typescript
+export interface PhoneMultiFactorSignInInfoOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [multiFactorHint](./auth.phonemultifactorsignininfooptions.md#phonemultifactorsignininfooptionsmultifactorhint) | [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) | The [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) obtained via [MultiFactorResolver.hints](./auth.multifactorresolver.md#multifactorresolverhints).One of multiFactorHint or multiFactorUid is required. |
+| [multiFactorUid](./auth.phonemultifactorsignininfooptions.md#phonemultifactorsignininfooptionsmultifactoruid) | string | The uid of the second factor.One of multiFactorHint or multiFactorUid is required. |
+| [session](./auth.phonemultifactorsignininfooptions.md#phonemultifactorsignininfooptionssession) | [MultiFactorSession](./auth.multifactorsession.md#multifactorsession_interface) | The [MultiFactorSession](./auth.multifactorsession.md#multifactorsession_interface) obtained via [MultiFactorResolver.session](./auth.multifactorresolver.md#multifactorresolversession). |
+
+## PhoneMultiFactorSignInInfoOptions.multiFactorHint
+
+The [MultiFactorInfo](./auth.multifactorinfo.md#multifactorinfo_interface) obtained via [MultiFactorResolver.hints](./auth.multifactorresolver.md#multifactorresolverhints).
+
+One of `multiFactorHint` or `multiFactorUid` is required.
+
+Signature:
+
+```typescript
+multiFactorHint?: MultiFactorInfo;
+```
+
+## PhoneMultiFactorSignInInfoOptions.multiFactorUid
+
+The uid of the second factor.
+
+One of `multiFactorHint` or `multiFactorUid` is required.
+
+Signature:
+
+```typescript
+multiFactorUid?: string;
+```
+
+## PhoneMultiFactorSignInInfoOptions.session
+
+The [MultiFactorSession](./auth.multifactorsession.md#multifactorsession_interface) obtained via [MultiFactorResolver.session](./auth.multifactorresolver.md#multifactorresolversession).
+
+Signature:
+
+```typescript
+session: MultiFactorSession;
+```
diff --git a/docs-devsite/auth.phonesinglefactorinfooptions.md b/docs-devsite/auth.phonesinglefactorinfooptions.md
new file mode 100644
index 00000000000..f7846d0db42
--- /dev/null
+++ b/docs-devsite/auth.phonesinglefactorinfooptions.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PhoneSingleFactorInfoOptions interface
+Options used for single-factor sign-in.
+
+Signature:
+
+```typescript
+export interface PhoneSingleFactorInfoOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [phoneNumber](./auth.phonesinglefactorinfooptions.md#phonesinglefactorinfooptionsphonenumber) | string | Phone number to send a verification code to. |
+
+## PhoneSingleFactorInfoOptions.phoneNumber
+
+Phone number to send a verification code to.
+
+Signature:
+
+```typescript
+phoneNumber: string;
+```
diff --git a/docs-devsite/auth.popupredirectresolver.md b/docs-devsite/auth.popupredirectresolver.md
new file mode 100644
index 00000000000..67c3274847c
--- /dev/null
+++ b/docs-devsite/auth.popupredirectresolver.md
@@ -0,0 +1,19 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# PopupRedirectResolver interface
+A resolver used for handling DOM specific operations like [signInWithPopup()](./auth.md#signinwithpopup) or [signInWithRedirect()](./auth.md#signinwithredirect).
+
+Signature:
+
+```typescript
+export interface PopupRedirectResolver
+```
diff --git a/docs-devsite/auth.reactnativeasyncstorage.md b/docs-devsite/auth.reactnativeasyncstorage.md
new file mode 100644
index 00000000000..231e7d2ed31
--- /dev/null
+++ b/docs-devsite/auth.reactnativeasyncstorage.md
@@ -0,0 +1,89 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ReactNativeAsyncStorage interface
+Interface for a supplied `AsyncStorage`.
+
+Signature:
+
+```typescript
+export interface ReactNativeAsyncStorage
+```
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [getItem(key)](./auth.reactnativeasyncstorage.md#reactnativeasyncstoragegetitem) | Retrieve an item from storage. |
+| [removeItem(key)](./auth.reactnativeasyncstorage.md#reactnativeasyncstorageremoveitem) | Remove an item from storage. |
+| [setItem(key, value)](./auth.reactnativeasyncstorage.md#reactnativeasyncstoragesetitem) | Persist an item in storage. |
+
+## ReactNativeAsyncStorage.getItem()
+
+Retrieve an item from storage.
+
+Signature:
+
+```typescript
+getItem(key: string): PromiseRecaptchaVerifier class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [type](./auth.recaptchaverifier.md#recaptchaverifiertype) | | (not declared) | The application verifier type. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [clear()](./auth.recaptchaverifier.md#recaptchaverifierclear) | | Clears the reCAPTCHA widget from the page and destroys the instance. |
+| [render()](./auth.recaptchaverifier.md#recaptchaverifierrender) | | Renders the reCAPTCHA widget on the page. |
+| [verify()](./auth.recaptchaverifier.md#recaptchaverifierverify) | | Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA token. |
+
+## RecaptchaVerifier.(constructor)
+
+Constructs a new instance of the `RecaptchaVerifier` class
+
+Check the reCAPTCHA docs for a comprehensive list. All parameters are accepted except for the sitekey. Firebase Auth backend provisions a reCAPTCHA for each project and will configure this upon rendering. For an invisible reCAPTCHA, a size key must have the value 'invisible'.
+
+Signature:
+
+```typescript
+constructor(containerOrId: HTMLElement | string, parameters: RecaptchaParameters, authExtern: Auth);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| containerOrId | HTMLElement \| string | The reCAPTCHA container parameter. |
+| parameters | [RecaptchaParameters](./auth.recaptchaparameters.md#recaptchaparameters_interface) | The optional reCAPTCHA parameters. |
+| authExtern | [Auth](./auth.auth.md#auth_interface) | The corresponding Firebase [Auth](./auth.auth.md#auth_interface) instance. |
+
+## RecaptchaVerifier.type
+
+The application verifier type.
+
+For a reCAPTCHA verifier, this is 'recaptcha'.
+
+Signature:
+
+```typescript
+readonly type = "recaptcha";
+```
+
+## RecaptchaVerifier.clear()
+
+Clears the reCAPTCHA widget from the page and destroys the instance.
+
+Signature:
+
+```typescript
+clear(): void;
+```
+Returns:
+
+void
+
+## RecaptchaVerifier.render()
+
+Renders the reCAPTCHA widget on the page.
+
+Signature:
+
+```typescript
+render(): Promisestatic | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromJSON(json)](./auth.samlauthprovider.md#samlauthprovidercredentialfromjson) | static | Creates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a JSON string or a plain object. |
+| [credentialFromResult(userCredential)](./auth.samlauthprovider.md#samlauthprovidercredentialfromresult) | static | Generates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface) after a successful SAML flow completes. |
+
+## SAMLAuthProvider.(constructor)
+
+Constructor. The providerId must start with "saml."
+
+Signature:
+
+```typescript
+constructor(providerId: string);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| providerId | string | SAML provider ID. |
+
+## SAMLAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): AuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[AuthCredential](./auth.authcredential.md#authcredential_class) \| null
+
+## SAMLAuthProvider.credentialFromJSON()
+
+Creates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a JSON string or a plain object.
+
+Signature:
+
+```typescript
+static credentialFromJSON(json: string | object): AuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| json | string \| object | A plain object or a JSON string |
+
+Returns:
+
+[AuthCredential](./auth.authcredential.md#authcredential_class)
+
+## SAMLAuthProvider.credentialFromResult()
+
+Generates an [AuthCredential](./auth.authcredential.md#authcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface) after a successful SAML flow completes.
+
+For example, to get an [AuthCredential](./auth.authcredential.md#authcredential_class), you could write the following code:
+
+```js
+const userCredential = await signInWithPopup(auth, samlProvider);
+const credential = SAMLAuthProvider.credentialFromResult(userCredential);
+
+```
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): AuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[AuthCredential](./auth.authcredential.md#authcredential_class) \| null
+
diff --git a/docs-devsite/auth.twitterauthprovider.md b/docs-devsite/auth.twitterauthprovider.md
new file mode 100644
index 00000000000..9ae64b6bdaf
--- /dev/null
+++ b/docs-devsite/auth.twitterauthprovider.md
@@ -0,0 +1,173 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# TwitterAuthProvider class
+Provider for generating an [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) for [ProviderId](./auth.md#providerid).TWITTER.
+
+Signature:
+
+```typescript
+export declare class TwitterAuthProvider extends BaseOAuthProvider
+```
+Extends: BaseOAuthProvider
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)()](./auth.twitterauthprovider.md#twitterauthproviderconstructor) | | Constructs a new instance of the TwitterAuthProvider class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [PROVIDER\_ID](./auth.twitterauthprovider.md#twitterauthproviderprovider_id) | static | 'twitter.com' | Always set to [ProviderId](./auth.md#providerid).TWITTER. |
+| [TWITTER\_SIGN\_IN\_METHOD](./auth.twitterauthprovider.md#twitterauthprovidertwitter_sign_in_method) | static | 'twitter.com' | Always set to [SignInMethod](./auth.md#signinmethod).TWITTER. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [credential(token, secret)](./auth.twitterauthprovider.md#twitterauthprovidercredential) | static | Creates a credential for Twitter. |
+| [credentialFromError(error)](./auth.twitterauthprovider.md#twitterauthprovidercredentialfromerror) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation. |
+| [credentialFromResult(userCredential)](./auth.twitterauthprovider.md#twitterauthprovidercredentialfromresult) | static | Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface). |
+
+## TwitterAuthProvider.(constructor)
+
+Constructs a new instance of the `TwitterAuthProvider` class
+
+Signature:
+
+```typescript
+constructor();
+```
+
+## TwitterAuthProvider.PROVIDER\_ID
+
+Always set to [ProviderId](./auth.md#providerid).TWITTER.
+
+Signature:
+
+```typescript
+static readonly PROVIDER_ID: 'twitter.com';
+```
+
+## TwitterAuthProvider.TWITTER\_SIGN\_IN\_METHOD
+
+Always set to [SignInMethod](./auth.md#signinmethod).TWITTER.
+
+Signature:
+
+```typescript
+static readonly TWITTER_SIGN_IN_METHOD: 'twitter.com';
+```
+
+## TwitterAuthProvider.credential()
+
+Creates a credential for Twitter.
+
+Signature:
+
+```typescript
+static credential(token: string, secret: string): OAuthCredential;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| token | string | Twitter access token. |
+| secret | string | Twitter secret. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class)
+
+## TwitterAuthProvider.credentialFromError()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [AuthError](./auth.autherror.md#autherror_interface) which was thrown during a sign-in, link, or reauthenticate operation.
+
+Signature:
+
+```typescript
+static credentialFromError(error: FirebaseError): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| error | [FirebaseError](./util.firebaseerror.md#firebaseerror_class) | |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+## TwitterAuthProvider.credentialFromResult()
+
+Used to extract the underlying [OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) from a [UserCredential](./auth.usercredential.md#usercredential_interface).
+
+Signature:
+
+```typescript
+static credentialFromResult(userCredential: UserCredential): OAuthCredential | null;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| userCredential | [UserCredential](./auth.usercredential.md#usercredential_interface) | The user credential. |
+
+Returns:
+
+[OAuthCredential](./auth.oauthcredential.md#oauthcredential_class) \| null
+
+### Example 1
+
+
+```javascript
+// Sign in using a redirect.
+const provider = new TwitterAuthProvider();
+// Start a sign in process for an unauthenticated user.
+await signInWithRedirect(auth, provider);
+// This will trigger a full page redirect away from your app
+
+// After returning from the redirect when your app initializes you can obtain the result
+const result = await getRedirectResult(auth);
+if (result) {
+ // This is the signed-in user
+ const user = result.user;
+ // This gives you a Twitter Access Token and Secret.
+ const credential = TwitterAuthProvider.credentialFromResult(result);
+ const token = credential.accessToken;
+ const secret = credential.secret;
+}
+
+```
+
+### Example 2
+
+
+```javascript
+// Sign in using a popup.
+const provider = new TwitterAuthProvider();
+const result = await signInWithPopup(auth, provider);
+
+// The signed-in user info.
+const user = result.user;
+// This gives you a Twitter Access Token and Secret.
+const credential = TwitterAuthProvider.credentialFromResult(result);
+const token = credential.accessToken;
+const secret = credential.secret;
+
+```
+
diff --git a/docs-devsite/auth.user.md b/docs-devsite/auth.user.md
new file mode 100644
index 00000000000..18a56a45901
--- /dev/null
+++ b/docs-devsite/auth.user.md
@@ -0,0 +1,204 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# User interface
+A user account.
+
+Signature:
+
+```typescript
+export interface User extends UserInfo
+```
+Extends: [UserInfo](./auth.userinfo.md#userinfo_interface)
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [emailVerified](./auth.user.md#useremailverified) | boolean | Whether the email has been verified with [sendEmailVerification()](./auth.md#sendemailverification) and [applyActionCode()](./auth.md#applyactioncode). |
+| [isAnonymous](./auth.user.md#userisanonymous) | boolean | Whether the user is authenticated using the [ProviderId](./auth.md#providerid).ANONYMOUS provider. |
+| [metadata](./auth.user.md#usermetadata) | [UserMetadata](./auth.usermetadata.md#usermetadata_interface) | Additional metadata around user creation and sign-in times. |
+| [providerData](./auth.user.md#userproviderdata) | [UserInfo](./auth.userinfo.md#userinfo_interface)\[\] | Additional per provider such as displayName and profile information. |
+| [refreshToken](./auth.user.md#userrefreshtoken) | string | Refresh token used to reauthenticate the user. Avoid using this directly and prefer [User.getIdToken()](./auth.user.md#usergetidtoken) to refresh the ID token instead. |
+| [tenantId](./auth.user.md#usertenantid) | string \| null | The user's tenant ID. |
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [delete()](./auth.user.md#userdelete) | Deletes and signs out the user. |
+| [getIdToken(forceRefresh)](./auth.user.md#usergetidtoken) | Returns a JSON Web Token (JWT) used to identify the user to a Firebase service. |
+| [getIdTokenResult(forceRefresh)](./auth.user.md#usergetidtokenresult) | Returns a deserialized JSON Web Token (JWT) used to identitfy the user to a Firebase service. |
+| [reload()](./auth.user.md#userreload) | Refreshes the user, if signed in. |
+| [toJSON()](./auth.user.md#usertojson) | Returns a JSON-serializable representation of this object. |
+
+## User.emailVerified
+
+Whether the email has been verified with [sendEmailVerification()](./auth.md#sendemailverification) and [applyActionCode()](./auth.md#applyactioncode).
+
+Signature:
+
+```typescript
+readonly emailVerified: boolean;
+```
+
+## User.isAnonymous
+
+Whether the user is authenticated using the [ProviderId](./auth.md#providerid).ANONYMOUS provider.
+
+Signature:
+
+```typescript
+readonly isAnonymous: boolean;
+```
+
+## User.metadata
+
+Additional metadata around user creation and sign-in times.
+
+Signature:
+
+```typescript
+readonly metadata: UserMetadata;
+```
+
+## User.providerData
+
+Additional per provider such as displayName and profile information.
+
+Signature:
+
+```typescript
+readonly providerData: UserInfo[];
+```
+
+## User.refreshToken
+
+Refresh token used to reauthenticate the user. Avoid using this directly and prefer [User.getIdToken()](./auth.user.md#usergetidtoken) to refresh the ID token instead.
+
+Signature:
+
+```typescript
+readonly refreshToken: string;
+```
+
+## User.tenantId
+
+The user's tenant ID.
+
+This is a read-only property, which indicates the tenant ID used to sign in the user. This is null if the user is signed in from the parent project.
+
+Signature:
+
+```typescript
+readonly tenantId: string | null;
+```
+
+### Example
+
+
+```javascript
+// Set the tenant ID on Auth instance.
+auth.tenantId = 'TENANT_PROJECT_ID';
+
+// All future sign-in request now include tenant ID.
+const result = await signInWithEmailAndPassword(auth, email, password);
+// result.user.tenantId should be 'TENANT_PROJECT_ID'.
+
+```
+
+## User.delete()
+
+Deletes and signs out the user.
+
+Important: this is a security-sensitive operation that requires the user to have recently signed in. If this requirement isn't met, ask the user to authenticate again and then call one of the reauthentication methods like [reauthenticateWithCredential()](./auth.md#reauthenticatewithcredential).
+
+Signature:
+
+```typescript
+delete(): PromiseDatabase instance. |
+
+## Database.app
+
+The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) associated with this Realtime Database instance.
+
+Signature:
+
+```typescript
+readonly app: FirebaseApp;
+```
+
+## Database.type
+
+Represents a `Database` instance.
+
+Signature:
+
+```typescript
+readonly 'type' = "database";
+```
diff --git a/docs-devsite/database.databasereference.md b/docs-devsite/database.databasereference.md
new file mode 100644
index 00000000000..13f19a3bf4f
--- /dev/null
+++ b/docs-devsite/database.databasereference.md
@@ -0,0 +1,68 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# DatabaseReference interface
+A `DatabaseReference` represents a specific location in your Database and can be used for reading or writing data to that Database location.
+
+You can reference the root or child location in your Database by calling `ref()` or `ref("child/path")`.
+
+Writing is done with the `set()` method and reading can be done with the `on*()` method. See [https://firebase.google.com/docs/database/web/read-and-write](https://firebase.google.com/docs/database/web/read-and-write)
+
+Signature:
+
+```typescript
+export declare interface DatabaseReference extends Query
+```
+Extends: [Query](./database.query.md#query_interface)
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [key](./database.databasereference.md#databasereferencekey) | string \| null | The last part of the DatabaseReference's path.For example, "ada" is the key for https://<DATABASE_NAME>.firebaseio.com/users/ada.The key of a root DatabaseReference is null. |
+| [parent](./database.databasereference.md#databasereferenceparent) | [DatabaseReference](./database.databasereference.md#databasereference_interface) \| null | The parent location of a DatabaseReference.The parent of a root DatabaseReference is null. |
+| [root](./database.databasereference.md#databasereferenceroot) | [DatabaseReference](./database.databasereference.md#databasereference_interface) | The root DatabaseReference of the Database. |
+
+## DatabaseReference.key
+
+The last part of the `DatabaseReference`'s path.
+
+For example, `"ada"` is the key for `https://DataSnapshot.The last token in a Database location is considered its key. For example, "ada" is the key for the /users/ada/ node. Accessing the key on any DataSnapshot will return the key for the location that generated it. However, accessing the key on the root URL of a Database will return null. |
+| [priority](./database.datasnapshot.md#datasnapshotpriority) | | string \| number \| null | Gets the priority value of the data in this DataSnapshot.Applications need not use priority but can order collections by ordinary properties (see [Sorting and filtering data](https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data) ). |
+| [ref](./database.datasnapshot.md#datasnapshotref) | | [DatabaseReference](./database.databasereference.md#databasereference_interface) | The location of this DataSnapshot. |
+| [size](./database.datasnapshot.md#datasnapshotsize) | | number | Returns the number of child properties of this DataSnapshot. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [child(path)](./database.datasnapshot.md#datasnapshotchild) | | Gets another DataSnapshot for the location at the specified relative path.Passing a relative path to the child() method of a DataSnapshot returns another DataSnapshot for the location at the specified relative path. The relative path can either be a simple child name (for example, "ada") or a deeper, slash-separated path (for example, "ada/name/first"). If the child location has no data, an empty DataSnapshot (that is, a DataSnapshot whose value is null) is returned. |
+| [exists()](./database.datasnapshot.md#datasnapshotexists) | | Returns true if this DataSnapshot contains any data. It is slightly more efficient than using snapshot.val() !== null. |
+| [exportVal()](./database.datasnapshot.md#datasnapshotexportval) | | Exports the entire contents of the DataSnapshot as a JavaScript object.The exportVal() method is similar to val(), except priority information is included (if available), making it suitable for backing up your data. |
+| [forEach(action)](./database.datasnapshot.md#datasnapshotforeach) | | Enumerates the top-level children in the DataSnapshot.Because of the way JavaScript objects work, the ordering of data in the JavaScript object returned by val() is not guaranteed to match the ordering on the server nor the ordering of onChildAdded() events. That is where forEach() comes in handy. It guarantees the children of a DataSnapshot will be iterated in their query order.If no explicit orderBy*() method is used, results are returned ordered by key (unless priorities are used, in which case, results are returned by priority). |
+| [hasChild(path)](./database.datasnapshot.md#datasnapshothaschild) | | Returns true if the specified child path has (non-null) data. |
+| [hasChildren()](./database.datasnapshot.md#datasnapshothaschildren) | | Returns whether or not the DataSnapshot has any non-null child properties.You can use hasChildren() to determine if a DataSnapshot has any children. If it does, you can enumerate them using forEach(). If it doesn't, then either this snapshot contains a primitive value (which can be retrieved with val()) or it is empty (in which case, val() will return null). |
+| [toJSON()](./database.datasnapshot.md#datasnapshottojson) | | Returns a JSON-serializable representation of this object. |
+| [val()](./database.datasnapshot.md#datasnapshotval) | | Extracts a JavaScript value from a DataSnapshot.Depending on the data in a DataSnapshot, the val() method may return a scalar type (string, number, or boolean), an array, or an object. It may also return null, indicating that the DataSnapshot is empty (contains no data). |
+
+## DataSnapshot.key
+
+The key (last part of the path) of the location of this `DataSnapshot`.
+
+The last token in a Database location is considered its key. For example, "ada" is the key for the /users/ada/ node. Accessing the key on any `DataSnapshot` will return the key for the location that generated it. However, accessing the key on the root URL of a Database will return `null`.
+
+Signature:
+
+```typescript
+get key(): string | null;
+```
+
+## DataSnapshot.priority
+
+Gets the priority value of the data in this `DataSnapshot`.
+
+Applications need not use priority but can order collections by ordinary properties (see [Sorting and filtering data](https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data) ).
+
+Signature:
+
+```typescript
+get priority(): string | number | null;
+```
+
+## DataSnapshot.ref
+
+The location of this DataSnapshot.
+
+Signature:
+
+```typescript
+readonly ref: DatabaseReference;
+```
+
+## DataSnapshot.size
+
+Returns the number of child properties of this `DataSnapshot`.
+
+Signature:
+
+```typescript
+get size(): number;
+```
+
+## DataSnapshot.child()
+
+Gets another `DataSnapshot` for the location at the specified relative path.
+
+Passing a relative path to the `child()` method of a DataSnapshot returns another `DataSnapshot` for the location at the specified relative path. The relative path can either be a simple child name (for example, "ada") or a deeper, slash-separated path (for example, "ada/name/first"). If the child location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot` whose value is `null`) is returned.
+
+Signature:
+
+```typescript
+child(path: string): DataSnapshot;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| path | string | A relative path to the location of child data. |
+
+Returns:
+
+[DataSnapshot](./database.datasnapshot.md#datasnapshot_class)
+
+## DataSnapshot.exists()
+
+Returns true if this `DataSnapshot` contains any data. It is slightly more efficient than using `snapshot.val() !== null`.
+
+Signature:
+
+```typescript
+exists(): boolean;
+```
+Returns:
+
+boolean
+
+## DataSnapshot.exportVal()
+
+Exports the entire contents of the DataSnapshot as a JavaScript object.
+
+The `exportVal()` method is similar to `val()`, except priority information is included (if available), making it suitable for backing up your data.
+
+Signature:
+
+```typescript
+exportVal(): any;
+```
+Returns:
+
+any
+
+The DataSnapshot's contents as a JavaScript value (Object, Array, string, number, boolean, or `null`).
+
+## DataSnapshot.forEach()
+
+Enumerates the top-level children in the `DataSnapshot`.
+
+Because of the way JavaScript objects work, the ordering of data in the JavaScript object returned by `val()` is not guaranteed to match the ordering on the server nor the ordering of `onChildAdded()` events. That is where `forEach()` comes in handy. It guarantees the children of a `DataSnapshot` will be iterated in their query order.
+
+If no explicit `orderBy*()` method is used, results are returned ordered by key (unless priorities are used, in which case, results are returned by priority).
+
+Signature:
+
+```typescript
+forEach(action: (child: DataSnapshot) => boolean | void): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| action | (child: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => boolean \| void | A function that will be called for each child DataSnapshot. The callback can return true to cancel further enumeration. |
+
+Returns:
+
+boolean
+
+true if enumeration was canceled due to your callback returning true.
+
+## DataSnapshot.hasChild()
+
+Returns true if the specified child path has (non-null) data.
+
+Signature:
+
+```typescript
+hasChild(path: string): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| path | string | A relative path to the location of a potential child. |
+
+Returns:
+
+boolean
+
+`true` if data exists at the specified child path; else `false`.
+
+## DataSnapshot.hasChildren()
+
+Returns whether or not the `DataSnapshot` has any non-`null` child properties.
+
+You can use `hasChildren()` to determine if a `DataSnapshot` has any children. If it does, you can enumerate them using `forEach()`. If it doesn't, then either this snapshot contains a primitive value (which can be retrieved with `val()`) or it is empty (in which case, `val()` will return `null`).
+
+Signature:
+
+```typescript
+hasChildren(): boolean;
+```
+Returns:
+
+boolean
+
+true if this snapshot has any children; else false.
+
+## DataSnapshot.toJSON()
+
+Returns a JSON-serializable representation of this object.
+
+Signature:
+
+```typescript
+toJSON(): object | null;
+```
+Returns:
+
+object \| null
+
+## DataSnapshot.val()
+
+Extracts a JavaScript value from a `DataSnapshot`.
+
+Depending on the data in a `DataSnapshot`, the `val()` method may return a scalar type (string, number, or boolean), an array, or an object. It may also return null, indicating that the `DataSnapshot` is empty (contains no data).
+
+Signature:
+
+```typescript
+val(): any;
+```
+Returns:
+
+any
+
+The DataSnapshot's contents as a JavaScript value (Object, Array, string, number, boolean, or `null`).
+
diff --git a/docs-devsite/database.listenoptions.md b/docs-devsite/database.listenoptions.md
new file mode 100644
index 00000000000..171067dd020
--- /dev/null
+++ b/docs-devsite/database.listenoptions.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ListenOptions interface
+An options objects that can be used to customize a listener.
+
+Signature:
+
+```typescript
+export declare interface ListenOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [onlyOnce](./database.listenoptions.md#listenoptionsonlyonce) | boolean | Whether to remove the listener after its first invocation. |
+
+## ListenOptions.onlyOnce
+
+Whether to remove the listener after its first invocation.
+
+Signature:
+
+```typescript
+readonly onlyOnce?: boolean;
+```
diff --git a/docs-devsite/database.md b/docs-devsite/database.md
new file mode 100644
index 00000000000..686ca7f8580
--- /dev/null
+++ b/docs-devsite/database.md
@@ -0,0 +1,1405 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# database package
+Firebase Realtime Database
+
+## Functions
+
+| Function | Description |
+| --- | --- |
+| function(app...) |
+| [getDatabase(app, url)](./database.md#getdatabase) | Returns the instance of the Realtime Database SDK that is associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). Initializes a new instance with with default settings if no instance exists or if the existing instance uses a custom database URL. |
+| function(db...) |
+| [connectDatabaseEmulator(db, host, port, options)](./database.md#connectdatabaseemulator) | Modify the provided instance to communicate with the Realtime Database emulator.Note: This method must be called before performing any other operation. |
+| [goOffline(db)](./database.md#gooffline) | Disconnects from the server (all Database operations will be completed offline).The client automatically maintains a persistent connection to the Database server, which will remain active indefinitely and reconnect when disconnected. However, the goOffline() and goOnline() methods may be used to control the client connection in cases where a persistent connection is undesirable.While offline, the client will no longer receive data updates from the Database. However, all Database operations performed locally will continue to immediately fire events, allowing your application to continue behaving normally. Additionally, each operation performed locally will automatically be queued and retried upon reconnection to the Database server.To reconnect to the Database and begin receiving remote events, see goOnline(). |
+| [goOnline(db)](./database.md#goonline) | Reconnects to the server and synchronizes the offline Database state with the server state.This method should be used after disabling the active connection with goOffline(). Once reconnected, the client will transmit the proper data and fire the appropriate events so that your client "catches up" automatically. |
+| [ref(db, path)](./database.md#ref) | Returns a Reference representing the location in the Database corresponding to the provided path. If no path is provided, the Reference will point to the root of the Database. |
+| [refFromURL(db, url)](./database.md#reffromurl) | Returns a Reference representing the location in the Database corresponding to the provided Firebase URL.An exception is thrown if the URL is not a valid Firebase Database URL or it has a different domain than the current Database instance.Note that all query parameters (orderBy, limitToLast, etc.) are ignored and are not applied to the returned Reference. |
+| function() |
+| [forceLongPolling()](./database.md#forcelongpolling) | Force the use of longPolling instead of websockets. This will be ignored if websocket protocol is used in databaseURL. |
+| [forceWebSockets()](./database.md#forcewebsockets) | Force the use of websockets instead of longPolling. |
+| [orderByKey()](./database.md#orderbykey) | Creates a new QueryConstraint that orders by the key.Sorts the results of a query by their (ascending) key values.You can read more about orderByKey() in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data). |
+| [orderByPriority()](./database.md#orderbypriority) | Creates a new QueryConstraint that orders by priority.Applications need not use priority but can order collections by ordinary properties (see [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data) for alternatives to priority. |
+| [orderByValue()](./database.md#orderbyvalue) | Creates a new QueryConstraint that orders by value.If the children of a query are all scalar values (string, number, or boolean), you can order the results by their (ascending) values.You can read more about orderByValue() in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data). |
+| [serverTimestamp()](./database.md#servertimestamp) | Returns a placeholder value for auto-populating the current timestamp (time since the Unix epoch, in milliseconds) as determined by the Firebase servers. |
+| function(delta...) |
+| [increment(delta)](./database.md#increment) | Returns a placeholder value that can be used to atomically increment the current database value by the provided delta. |
+| function(enabled...) |
+| [enableLogging(enabled, persistent)](./database.md#enablelogging) | Logs debugging information to the console. |
+| function(limit...) |
+| [limitToFirst(limit)](./database.md#limittofirst) | Creates a new QueryConstraint that if limited to the first specific number of children.The limitToFirst() method is used to set a maximum number of children to be synced for a given callback. If we set a limit of 100, we will initially only receive up to 100 child_added events. If we have fewer than 100 messages stored in our Database, a child_added event will fire for each message. However, if we have over 100 messages, we will only receive a child_added event for the first 100 ordered messages. As items change, we will receive child_removed events for each item that drops out of the active list so that the total number stays at 100.You can read more about limitToFirst() in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data). |
+| [limitToLast(limit)](./database.md#limittolast) | Creates a new QueryConstraint that is limited to return only the last specified number of children.The limitToLast() method is used to set a maximum number of children to be synced for a given callback. If we set a limit of 100, we will initially only receive up to 100 child_added events. If we have fewer than 100 messages stored in our Database, a child_added event will fire for each message. However, if we have over 100 messages, we will only receive a child_added event for the last 100 ordered messages. As items change, we will receive child_removed events for each item that drops out of the active list so that the total number stays at 100.You can read more about limitToLast() in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data). |
+| function(logger...) |
+| [enableLogging(logger)](./database.md#enablelogging) | Logs debugging information to the console. |
+| function(parent...) |
+| [child(parent, path)](./database.md#child) | Gets a Reference for the location at the specified relative path.The relative path can either be a simple child name (for example, "ada") or a deeper slash-separated path (for example, "ada/name/first"). |
+| [push(parent, value)](./database.md#push) | Generates a new child location using a unique key and returns its Reference.This is the most common pattern for adding data to a collection of items.If you provide a value to push(), the value is written to the generated location. If you don't pass a value, nothing is written to the database and the child remains empty (but you can use the Reference elsewhere).The unique keys generated by push() are ordered by the current time, so the resulting list of items is chronologically sorted. The keys are also designed to be unguessable (they contain 72 random bits of entropy).See [Append to a list of data](https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data). See [The 2^120 Ways to Ensure Unique Identifiers](https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html). |
+| function(path...) |
+| [orderByChild(path)](./database.md#orderbychild) | Creates a new QueryConstraint that orders by the specified child key.Queries can only order by one key at a time. Calling orderByChild() multiple times on the same query is an error.Firebase queries allow you to order your data by any child key on the fly. However, if you know in advance what your indexes will be, you can define them via the .indexOn rule in your Security Rules for better performance. See the[https://firebase.google.com/docs/database/security/indexing-data](https://firebase.google.com/docs/database/security/indexing-data) rule for more information.You can read more about orderByChild() in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data). |
+| function(query...) |
+| [get(query)](./database.md#get) | Gets the most up-to-date result for this query. |
+| [off(query, eventType, callback)](./database.md#off) | Detaches a callback previously attached with the corresponding on*() (onValue, onChildAdded) listener. Note: This is not the recommended way to remove a listener. Instead, please use the returned callback function from the respective on* callbacks.Detach a callback previously attached with on*(). Calling off() on a parent listener will not automatically remove listeners registered on child nodes, off() must also be called on any child listeners to remove the callback.If a callback is not specified, all callbacks for the specified eventType will be removed. Similarly, if no eventType is specified, all callbacks for the Reference will be removed.Individual listeners can also be removed by invoking their unsubscribe callbacks. |
+| [onChildAdded(query, callback, cancelCallback)](./database.md#onchildadded) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildAdded event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The DataSnapshot passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildAdded(query, callback, options)](./database.md#onchildadded) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildAdded event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The DataSnapshot passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildAdded(query, callback, cancelCallback, options)](./database.md#onchildadded) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildAdded event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The DataSnapshot passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildChanged(query, callback, cancelCallback)](./database.md#onchildchanged) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildChanged event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single child_changed event may represent multiple changes to the child. The DataSnapshot passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildChanged(query, callback, options)](./database.md#onchildchanged) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildChanged event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single child_changed event may represent multiple changes to the child. The DataSnapshot passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildChanged(query, callback, cancelCallback, options)](./database.md#onchildchanged) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildChanged event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single child_changed event may represent multiple changes to the child. The DataSnapshot passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildMoved(query, callback, cancelCallback)](./database.md#onchildmoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildMoved event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The DataSnapshot passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildMoved(query, callback, options)](./database.md#onchildmoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildMoved event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The DataSnapshot passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildMoved(query, callback, cancelCallback, options)](./database.md#onchildmoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildMoved event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The DataSnapshot passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or null if it is the first child. |
+| [onChildRemoved(query, callback, cancelCallback)](./database.md#onchildremoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildRemoved event will be triggered once every time a child is removed. The DataSnapshot passed into the callback will be the old data for the child that was removed. A child will get removed when either:- a client explicitly calls remove() on that child or one of its ancestors - a client calls set(null) on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit) |
+| [onChildRemoved(query, callback, options)](./database.md#onchildremoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildRemoved event will be triggered once every time a child is removed. The DataSnapshot passed into the callback will be the old data for the child that was removed. A child will get removed when either:- a client explicitly calls remove() on that child or one of its ancestors - a client calls set(null) on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit) |
+| [onChildRemoved(query, callback, cancelCallback, options)](./database.md#onchildremoved) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onChildRemoved event will be triggered once every time a child is removed. The DataSnapshot passed into the callback will be the old data for the child that was removed. A child will get removed when either:- a client explicitly calls remove() on that child or one of its ancestors - a client calls set(null) on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit) |
+| [onValue(query, callback, cancelCallback)](./database.md#onvalue) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onValue event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The DataSnapshot passed to the callback will be for the location at which on() was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty DataSnapshot (val() will return null). |
+| [onValue(query, callback, options)](./database.md#onvalue) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onValue event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The DataSnapshot passed to the callback will be for the location at which on() was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty DataSnapshot (val() will return null). |
+| [onValue(query, callback, cancelCallback, options)](./database.md#onvalue) | Listens for data changes at a particular location.This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.An onValue event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The DataSnapshot passed to the callback will be for the location at which on() was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty DataSnapshot (val() will return null). |
+| [query(query, queryConstraints)](./database.md#query) | Creates a new immutable instance of Query that is extended to also include additional query constraints. |
+| function(ref...) |
+| [onDisconnect(ref)](./database.md#ondisconnect) | Returns an OnDisconnect object - see [Enabling Offline Capabilities in JavaScript](https://firebase.google.com/docs/database/web/offline-capabilities) for more information on how to use it. |
+| [remove(ref)](./database.md#remove) | Removes the data at this Database location.Any data at child locations will also be deleted.The effect of the remove will be visible immediately and the corresponding event 'value' will be triggered. Synchronization of the remove to the Firebase servers will also be started, and the returned Promise will resolve when complete. If provided, the onComplete callback will be called asynchronously after synchronization has finished. |
+| [runTransaction(ref, transactionUpdate, options)](./database.md#runtransaction) | Atomically modifies the data at this location.Atomically modify the data at this location. Unlike a normal set(), which just overwrites the data regardless of its previous value, runTransaction() is used to modify the existing value to a new value, ensuring there are no conflicts with other clients writing to the same location at the same time.To accomplish this, you pass runTransaction() an update function which is used to transform the current value into a new value. If another client writes to the location before your new value is successfully written, your update function will be called again with the new current value, and the write will be retried. This will happen repeatedly until your write succeeds without conflict or you abort the transaction by not returning a value from your update function.Note: Modifying data with set() will cancel any pending transactions at that location, so extreme care should be taken if mixing set() and runTransaction() to update the same data.Note: When using transactions with Security and Firebase Rules in place, be aware that a client needs .read access in addition to .write access in order to perform a transaction. This is because the client-side nature of transactions requires the client to read the data in order to transactionally update it. |
+| [set(ref, value)](./database.md#set) | Writes data to this Database location.This will overwrite any data at this location and all child locations.The effect of the write will be visible immediately, and the corresponding events ("value", "child\_added", etc.) will be triggered. Synchronization of the data to the Firebase servers will also be started, and the returned Promise will resolve when complete. If provided, the onComplete callback will be called asynchronously after synchronization has finished.Passing null for the new value is equivalent to calling remove(); namely, all data at this location and all child locations will be deleted.set() will remove any priority stored at this location, so if priority is meant to be preserved, you need to use setWithPriority() instead.Note that modifying data with set() will cancel any pending transactions at that location, so extreme care should be taken if mixing set() and transaction() to modify the same data.A single set() will generate a single "value" event at the location where the set() was performed. |
+| [setPriority(ref, priority)](./database.md#setpriority) | Sets a priority for the data at this Database location.Applications need not use priority but can order collections by ordinary properties (see [Sorting and filtering data](https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data) ). |
+| [setWithPriority(ref, value, priority)](./database.md#setwithpriority) | Writes data the Database location. Like set() but also specifies the priority for that data.Applications need not use priority but can order collections by ordinary properties (see [Sorting and filtering data](https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data) ). |
+| [update(ref, values)](./database.md#update) | Writes multiple values to the Database at once.The values argument contains multiple property-value pairs that will be written to the Database together. Each child property can either be a simple property (for example, "name") or a relative path (for example, "name/first") from the current location to the data to update.As opposed to the set() method, update() can be use to selectively update only the referenced properties at the current location (instead of replacing all the child properties at the current location).The effect of the write will be visible immediately, and the corresponding events ('value', 'child\_added', etc.) will be triggered. Synchronization of the data to the Firebase servers will also be started, and the returned Promise will resolve when complete. If provided, the onComplete callback will be called asynchronously after synchronization has finished.A single update() will generate a single "value" event at the location where the update() was performed, regardless of how many children were modified.Note that modifying data with update() will cancel any pending transactions at that location, so extreme care should be taken if mixing update() and transaction() to modify the same data.Passing null to update() will remove the data at this location.See [Introducing multi-location updates and more](https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html). |
+| function(value...) |
+| [endAt(value, key)](./database.md#endat) | Creates a QueryConstraint with the specified ending point.Using startAt(), startAfter(), endBefore(), endAt() and equalTo() allows you to choose arbitrary starting and ending points for your queries.The ending point is inclusive, so children with exactly the specified value will be included in the query. The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have a key name less than or equal to the specified key.You can read more about endAt() in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data). |
+| [endBefore(value, key)](./database.md#endbefore) | Creates a QueryConstraint with the specified ending point (exclusive).Using startAt(), startAfter(), endBefore(), endAt() and equalTo() allows you to choose arbitrary starting and ending points for your queries.The ending point is exclusive. If only a value is provided, children with a value less than the specified value will be included in the query. If a key is specified, then children must have a value less than or equal to the specified value and a key name less than the specified key. |
+| [equalTo(value, key)](./database.md#equalto) | Creates a QueryConstraint that includes children that match the specified value.Using startAt(), startAfter(), endBefore(), endAt() and equalTo() allows you to choose arbitrary starting and ending points for your queries.The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have exactly the specified key as their key name. This can be used to filter result sets with many matches for the same value.You can read more about equalTo() in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data). |
+| [startAfter(value, key)](./database.md#startafter) | Creates a QueryConstraint with the specified starting point (exclusive).Using startAt(), startAfter(), endBefore(), endAt() and equalTo() allows you to choose arbitrary starting and ending points for your queries.The starting point is exclusive. If only a value is provided, children with a value greater than the specified value will be included in the query. If a key is specified, then children must have a value greater than or equal to the specified value and a a key name greater than the specified key. |
+| [startAt(value, key)](./database.md#startat) | Creates a QueryConstraint with the specified starting point.Using startAt(), startAfter(), endBefore(), endAt() and equalTo() allows you to choose arbitrary starting and ending points for your queries.The starting point is inclusive, so children with exactly the specified value will be included in the query. The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have a key name greater than or equal to the specified key.You can read more about startAt() in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data). |
+
+## Classes
+
+| Class | Description |
+| --- | --- |
+| [Database](./database.database.md#database_class) | Class representing a Firebase Realtime Database. |
+| [DataSnapshot](./database.datasnapshot.md#datasnapshot_class) | A DataSnapshot contains data from a Database location.Any time you read data from the Database, you receive the data as a DataSnapshot. A DataSnapshot is passed to the event callbacks you attach with on() or once(). You can extract the contents of the snapshot as a JavaScript object by calling the val() method. Alternatively, you can traverse into the snapshot by calling child() to return child snapshots (which you could then call val() on).A DataSnapshot is an efficiently generated, immutable copy of the data at a Database location. It cannot be modified and will never change (to modify data, you always call the set() method on a Reference directly). |
+| [OnDisconnect](./database.ondisconnect.md#ondisconnect_class) | The onDisconnect class allows you to write or clear data when your client disconnects from the Database server. These updates occur whether your client disconnects cleanly or not, so you can rely on them to clean up data even if a connection is dropped or a client crashes.The onDisconnect class is most commonly used to manage presence in applications where it is useful to detect how many clients are connected and when other clients disconnect. See [Enabling Offline Capabilities in JavaScript](https://firebase.google.com/docs/database/web/offline-capabilities) for more information.To avoid problems when a connection is dropped before the requests can be transferred to the Database server, these functions should be called before writing any data.Note that onDisconnect operations are only triggered once. If you want an operation to occur each time a disconnect occurs, you'll need to re-establish the onDisconnect operations each time you reconnect. |
+| [QueryConstraint](./database.queryconstraint.md#queryconstraint_class) | A QueryConstraint is used to narrow the set of documents returned by a Database query. QueryConstraints are created by invoking [endAt()](./database.md#endat), [endBefore()](./database.md#endbefore), [startAt()](./database.md#startat), [startAfter()](./database.md#startafter), [limitToFirst()](./database.md#limittofirst), [limitToLast()](./database.md#limittolast), [orderByChild()](./database.md#orderbychild), [orderByChild()](./database.md#orderbychild), [orderByKey()](./database.md#orderbykey) , [orderByPriority()](./database.md#orderbypriority) , [orderByValue()](./database.md#orderbyvalue) or [equalTo()](./database.md#equalto) and can then be passed to [query()](./database.md#query) to create a new query instance that also contains this QueryConstraint. |
+| [TransactionResult](./database.transactionresult.md#transactionresult_class) | A type for the resolve value of [runTransaction()](./database.md#runtransaction). |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [DatabaseReference](./database.databasereference.md#databasereference_interface) | A DatabaseReference represents a specific location in your Database and can be used for reading or writing data to that Database location.You can reference the root or child location in your Database by calling ref() or ref("child/path").Writing is done with the set() method and reading can be done with the on*() method. See [https://firebase.google.com/docs/database/web/read-and-write](https://firebase.google.com/docs/database/web/read-and-write) |
+| [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An options objects that can be used to customize a listener. |
+| [Query](./database.query.md#query_interface) | A Query sorts and filters the data at a Database location so only a subset of the child data is included. This can be used to order a collection of data by some attribute (for example, height of dinosaurs) as well as to restrict a large list of items (for example, chat messages) down to a number suitable for synchronizing to the client. Queries are created by chaining together one or more of the filter methods defined here.Just as with a DatabaseReference, you can receive data from a Query by using the on*() methods. You will only receive events and DataSnapshots for the subset of the data that matches your query.See [https://firebase.google.com/docs/database/web/lists-of-data\#sorting\_and\_filtering\_data](https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data) for more information. |
+| [ThenableReference](./database.thenablereference.md#thenablereference_interface) | A Promise that can also act as a DatabaseReference when returned by [push()](./database.md#push). The reference is available immediately and the Promise resolves as the write to the backend completes. |
+| [TransactionOptions](./database.transactionoptions.md#transactionoptions_interface) | An options object to configure transactions. |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [EventType](./database.md#eventtype) | One of the following strings: "value", "child\_added", "child\_changed", "child\_removed", or "child\_moved." |
+| [QueryConstraintType](./database.md#queryconstrainttype) | Describes the different query constraints available in this SDK. |
+| [Unsubscribe](./database.md#unsubscribe) | A callback that can invoked to remove a listener. |
+
+## getDatabase()
+
+Returns the instance of the Realtime Database SDK that is associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). Initializes a new instance with with default settings if no instance exists or if the existing instance uses a custom database URL.
+
+Signature:
+
+```typescript
+export declare function getDatabase(app?: FirebaseApp, url?: string): Database;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) instance that the returned Realtime Database instance is associated with. |
+| url | string | The URL of the Realtime Database instance to connect to. If not provided, the SDK connects to the default instance of the Firebase App. |
+
+Returns:
+
+[Database](./database.database.md#database_class)
+
+The `Database` instance of the provided app.
+
+## connectDatabaseEmulator()
+
+Modify the provided instance to communicate with the Realtime Database emulator.
+
+
Note: This method must be called before performing any other operation.
+
+Signature:
+
+```typescript
+export declare function connectDatabaseEmulator(db: Database, host: string, port: number, options?: {
+ mockUserToken?: EmulatorMockTokenOptions | string;
+}): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| db | [Database](./database.database.md#database_class) | The instance to modify. |
+| host | string | The emulator host (ex: localhost) |
+| port | number | The emulator port (ex: 8080) |
+| options | { mockUserToken?: [EmulatorMockTokenOptions](./util.md#emulatormocktokenoptions) \| string; } | |
+
+Returns:
+
+void
+
+## goOffline()
+
+Disconnects from the server (all Database operations will be completed offline).
+
+The client automatically maintains a persistent connection to the Database server, which will remain active indefinitely and reconnect when disconnected. However, the `goOffline()` and `goOnline()` methods may be used to control the client connection in cases where a persistent connection is undesirable.
+
+While offline, the client will no longer receive data updates from the Database. However, all Database operations performed locally will continue to immediately fire events, allowing your application to continue behaving normally. Additionally, each operation performed locally will automatically be queued and retried upon reconnection to the Database server.
+
+To reconnect to the Database and begin receiving remote events, see `goOnline()`.
+
+Signature:
+
+```typescript
+export declare function goOffline(db: Database): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| db | [Database](./database.database.md#database_class) | The instance to disconnect. |
+
+Returns:
+
+void
+
+## goOnline()
+
+Reconnects to the server and synchronizes the offline Database state with the server state.
+
+This method should be used after disabling the active connection with `goOffline()`. Once reconnected, the client will transmit the proper data and fire the appropriate events so that your client "catches up" automatically.
+
+Signature:
+
+```typescript
+export declare function goOnline(db: Database): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| db | [Database](./database.database.md#database_class) | The instance to reconnect. |
+
+Returns:
+
+void
+
+## ref()
+
+Returns a `Reference` representing the location in the Database corresponding to the provided path. If no path is provided, the `Reference` will point to the root of the Database.
+
+Signature:
+
+```typescript
+export declare function ref(db: Database, path?: string): DatabaseReference;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| db | [Database](./database.database.md#database_class) | The database instance to obtain a reference for. |
+| path | string | Optional path representing the location the returned Reference will point. If not provided, the returned Reference will point to the root of the Database. |
+
+Returns:
+
+[DatabaseReference](./database.databasereference.md#databasereference_interface)
+
+If a path is provided, a `Reference` pointing to the provided path. Otherwise, a `Reference` pointing to the root of the Database.
+
+## refFromURL()
+
+Returns a `Reference` representing the location in the Database corresponding to the provided Firebase URL.
+
+An exception is thrown if the URL is not a valid Firebase Database URL or it has a different domain than the current `Database` instance.
+
+Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored and are not applied to the returned `Reference`.
+
+Signature:
+
+```typescript
+export declare function refFromURL(db: Database, url: string): DatabaseReference;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| db | [Database](./database.database.md#database_class) | The database instance to obtain a reference for. |
+| url | string | The Firebase URL at which the returned Reference will point. |
+
+Returns:
+
+[DatabaseReference](./database.databasereference.md#databasereference_interface)
+
+A `Reference` pointing to the provided Firebase URL.
+
+## forceLongPolling()
+
+Force the use of longPolling instead of websockets. This will be ignored if websocket protocol is used in databaseURL.
+
+Signature:
+
+```typescript
+export declare function forceLongPolling(): void;
+```
+Returns:
+
+void
+
+## forceWebSockets()
+
+Force the use of websockets instead of longPolling.
+
+Signature:
+
+```typescript
+export declare function forceWebSockets(): void;
+```
+Returns:
+
+void
+
+## orderByKey()
+
+Creates a new `QueryConstraint` that orders by the key.
+
+Sorts the results of a query by their (ascending) key values.
+
+You can read more about `orderByKey()` in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data).
+
+Signature:
+
+```typescript
+export declare function orderByKey(): QueryConstraint;
+```
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## orderByPriority()
+
+Creates a new `QueryConstraint` that orders by priority.
+
+Applications need not use priority but can order collections by ordinary properties (see [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data) for alternatives to priority.
+
+Signature:
+
+```typescript
+export declare function orderByPriority(): QueryConstraint;
+```
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## orderByValue()
+
+Creates a new `QueryConstraint` that orders by value.
+
+If the children of a query are all scalar values (string, number, or boolean), you can order the results by their (ascending) values.
+
+You can read more about `orderByValue()` in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data).
+
+Signature:
+
+```typescript
+export declare function orderByValue(): QueryConstraint;
+```
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## serverTimestamp()
+
+Returns a placeholder value for auto-populating the current timestamp (time since the Unix epoch, in milliseconds) as determined by the Firebase servers.
+
+Signature:
+
+```typescript
+export declare function serverTimestamp(): object;
+```
+Returns:
+
+object
+
+## increment()
+
+Returns a placeholder value that can be used to atomically increment the current database value by the provided delta.
+
+Signature:
+
+```typescript
+export declare function increment(delta: number): object;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| delta | number | the amount to modify the current value atomically. |
+
+Returns:
+
+object
+
+A placeholder value for modifying data atomically server-side.
+
+## enableLogging()
+
+Logs debugging information to the console.
+
+Signature:
+
+```typescript
+export declare function enableLogging(enabled: boolean, persistent?: boolean): any;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| enabled | boolean | Enables logging if true, disables logging if false. |
+| persistent | boolean | Remembers the logging state between page refreshes if true. |
+
+Returns:
+
+any
+
+## limitToFirst()
+
+Creates a new `QueryConstraint` that if limited to the first specific number of children.
+
+The `limitToFirst()` method is used to set a maximum number of children to be synced for a given callback. If we set a limit of 100, we will initially only receive up to 100 `child_added` events. If we have fewer than 100 messages stored in our Database, a `child_added` event will fire for each message. However, if we have over 100 messages, we will only receive a `child_added` event for the first 100 ordered messages. As items change, we will receive `child_removed` events for each item that drops out of the active list so that the total number stays at 100.
+
+You can read more about `limitToFirst()` in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data).
+
+Signature:
+
+```typescript
+export declare function limitToFirst(limit: number): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| limit | number | The maximum number of nodes to include in this query. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## limitToLast()
+
+Creates a new `QueryConstraint` that is limited to return only the last specified number of children.
+
+The `limitToLast()` method is used to set a maximum number of children to be synced for a given callback. If we set a limit of 100, we will initially only receive up to 100 `child_added` events. If we have fewer than 100 messages stored in our Database, a `child_added` event will fire for each message. However, if we have over 100 messages, we will only receive a `child_added` event for the last 100 ordered messages. As items change, we will receive `child_removed` events for each item that drops out of the active list so that the total number stays at 100.
+
+You can read more about `limitToLast()` in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data).
+
+Signature:
+
+```typescript
+export declare function limitToLast(limit: number): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| limit | number | The maximum number of nodes to include in this query. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## enableLogging()
+
+Logs debugging information to the console.
+
+Signature:
+
+```typescript
+export declare function enableLogging(logger: (message: string) => unknown): any;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| logger | (message: string) => unknown | A custom logger function to control how things get logged. |
+
+Returns:
+
+any
+
+## child()
+
+Gets a `Reference` for the location at the specified relative path.
+
+The relative path can either be a simple child name (for example, "ada") or a deeper slash-separated path (for example, "ada/name/first").
+
+Signature:
+
+```typescript
+export declare function child(parent: DatabaseReference, path: string): DatabaseReference;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| parent | [DatabaseReference](./database.databasereference.md#databasereference_interface) | The parent location. |
+| path | string | A relative path from this location to the desired child location. |
+
+Returns:
+
+[DatabaseReference](./database.databasereference.md#databasereference_interface)
+
+The specified child location.
+
+## push()
+
+Generates a new child location using a unique key and returns its `Reference`.
+
+This is the most common pattern for adding data to a collection of items.
+
+If you provide a value to `push()`, the value is written to the generated location. If you don't pass a value, nothing is written to the database and the child remains empty (but you can use the `Reference` elsewhere).
+
+The unique keys generated by `push()` are ordered by the current time, so the resulting list of items is chronologically sorted. The keys are also designed to be unguessable (they contain 72 random bits of entropy).
+
+See [Append to a list of data](https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data). See [The 2^120 Ways to Ensure Unique Identifiers](https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html).
+
+Signature:
+
+```typescript
+export declare function push(parent: DatabaseReference, value?: unknown): ThenableReference;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| parent | [DatabaseReference](./database.databasereference.md#databasereference_interface) | The parent location. |
+| value | unknown | Optional value to be written at the generated location. |
+
+Returns:
+
+[ThenableReference](./database.thenablereference.md#thenablereference_interface)
+
+Combined `Promise` and `Reference`; resolves when write is complete, but can be used immediately as the `Reference` to the child location.
+
+## orderByChild()
+
+Creates a new `QueryConstraint` that orders by the specified child key.
+
+Queries can only order by one key at a time. Calling `orderByChild()` multiple times on the same query is an error.
+
+Firebase queries allow you to order your data by any child key on the fly. However, if you know in advance what your indexes will be, you can define them via the .indexOn rule in your Security Rules for better performance. See the[https://firebase.google.com/docs/database/security/indexing-data](https://firebase.google.com/docs/database/security/indexing-data) rule for more information.
+
+You can read more about `orderByChild()` in [Sort data](https://firebase.google.com/docs/database/web/lists-of-data#sort_data).
+
+Signature:
+
+```typescript
+export declare function orderByChild(path: string): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| path | string | The path to order by. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## get()
+
+Gets the most up-to-date result for this query.
+
+Signature:
+
+```typescript
+export declare function get(query: Query): PromiseReference will be removed. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName?: string \| null) => unknown | The callback function that was passed to on() or undefined to remove all callbacks. |
+
+Returns:
+
+void
+
+## onChildAdded()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildAdded` event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The `DataSnapshot` passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildAdded(query: Query, callback: (snapshot: DataSnapshot, previousChildName?: string | null) => unknown, cancelCallback?: (error: Error) => unknown): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName?: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildAdded()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildAdded` event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The `DataSnapshot` passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildAdded(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildAdded()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildAdded` event will be triggered once for each initial child at this location, and it will be triggered again every time a new child is added. The `DataSnapshot` passed into the callback will reflect the data for the relevant child. For ordering purposes, it is passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildAdded(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, cancelCallback: (error: Error) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildChanged()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildChanged` event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single `child_changed` event may represent multiple changes to the child. The `DataSnapshot` passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildChanged(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, cancelCallback?: (error: Error) => unknown): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildChanged()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildChanged` event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single `child_changed` event may represent multiple changes to the child. The `DataSnapshot` passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildChanged(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildChanged()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildChanged` event will be triggered when the data stored in a child (or any of its descendants) changes. Note that a single `child_changed` event may represent multiple changes to the child. The `DataSnapshot` passed to the callback will contain the new child contents. For ordering purposes, the callback is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildChanged(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, cancelCallback: (error: Error) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildMoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildMoved` event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The `DataSnapshot` passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildMoved(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, cancelCallback?: (error: Error) => unknown): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildMoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildMoved` event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The `DataSnapshot` passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildMoved(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildMoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildMoved` event will be triggered when a child's sort order changes such that its position relative to its siblings changes. The `DataSnapshot` passed to the callback will be for the data of the child that has moved. It is also passed a second argument which is a string containing the key of the previous sibling child by sort order, or `null` if it is the first child.
+
+Signature:
+
+```typescript
+export declare function onChildMoved(query: Query, callback: (snapshot: DataSnapshot, previousChildName: string | null) => unknown, cancelCallback: (error: Error) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class), previousChildName: string \| null) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildRemoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildRemoved` event will be triggered once every time a child is removed. The `DataSnapshot` passed into the callback will be the old data for the child that was removed. A child will get removed when either:
+
+- a client explicitly calls `remove()` on that child or one of its ancestors - a client calls `set(null)` on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit)
+
+Signature:
+
+```typescript
+export declare function onChildRemoved(query: Query, callback: (snapshot: DataSnapshot) => unknown, cancelCallback?: (error: Error) => unknown): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildRemoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildRemoved` event will be triggered once every time a child is removed. The `DataSnapshot` passed into the callback will be the old data for the child that was removed. A child will get removed when either:
+
+- a client explicitly calls `remove()` on that child or one of its ancestors - a client calls `set(null)` on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit)
+
+Signature:
+
+```typescript
+export declare function onChildRemoved(query: Query, callback: (snapshot: DataSnapshot) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onChildRemoved()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onChildRemoved` event will be triggered once every time a child is removed. The `DataSnapshot` passed into the callback will be the old data for the child that was removed. A child will get removed when either:
+
+- a client explicitly calls `remove()` on that child or one of its ancestors - a client calls `set(null)` on that child or one of its ancestors - that child has all of its children removed - there is a query in effect which now filters out the child (because it's sort order changed or the max limit was hit)
+
+Signature:
+
+```typescript
+export declare function onChildRemoved(query: Query, callback: (snapshot: DataSnapshot) => unknown, cancelCallback: (error: Error) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot and a string containing the key of the previous child, by sort order, or null if it is the first child. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onValue()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onValue` event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The `DataSnapshot` passed to the callback will be for the location at which `on()` was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty `DataSnapshot` (`val()` will return `null`).
+
+Signature:
+
+```typescript
+export declare function onValue(query: Query, callback: (snapshot: DataSnapshot) => unknown, cancelCallback?: (error: Error) => unknown): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onValue()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onValue` event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The `DataSnapshot` passed to the callback will be for the location at which `on()` was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty `DataSnapshot` (`val()` will return `null`).
+
+Signature:
+
+```typescript
+export declare function onValue(query: Query, callback: (snapshot: DataSnapshot) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## onValue()
+
+Listens for data changes at a particular location.
+
+This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Invoke the returned unsubscribe callback to stop receiving updates. See [Retrieve Data on the Web](https://firebase.google.com/docs/database/web/retrieve-data) for more details.
+
+An `onValue` event will trigger once with the initial data stored at this location, and then trigger again each time the data changes. The `DataSnapshot` passed to the callback will be for the location at which `on()` was called. It won't trigger until the entire contents has been synchronized. If the location has no data, it will be triggered with an empty `DataSnapshot` (`val()` will return `null`).
+
+Signature:
+
+```typescript
+export declare function onValue(query: Query, callback: (snapshot: DataSnapshot) => unknown, cancelCallback: (error: Error) => unknown, options: ListenOptions): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The query to run. |
+| callback | (snapshot: [DataSnapshot](./database.datasnapshot.md#datasnapshot_class)) => unknown | A callback that fires when the specified event occurs. The callback will be passed a DataSnapshot. |
+| cancelCallback | (error: Error) => unknown | An optional callback that will be notified if your event subscription is ever canceled because your client does not have permission to read this data (or it had permission but has now lost it). This callback will be passed an Error object indicating why the failure occurred. |
+| options | [ListenOptions](./database.listenoptions.md#listenoptions_interface) | An object that can be used to configure onlyOnce, which then removes the listener after its first invocation. |
+
+Returns:
+
+[Unsubscribe](./database.md#unsubscribe)
+
+A function that can be invoked to remove the listener.
+
+## query()
+
+Creates a new immutable instance of `Query` that is extended to also include additional query constraints.
+
+Signature:
+
+```typescript
+export declare function query(query: Query, ...queryConstraints: QueryConstraint[]): Query;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| query | [Query](./database.query.md#query_interface) | The Query instance to use as a base for the new constraints. |
+| queryConstraints | [QueryConstraint](./database.queryconstraint.md#queryconstraint_class)\[\] | The list of QueryConstraints to apply. |
+
+Returns:
+
+[Query](./database.query.md#query_interface)
+
+## Exceptions
+
+if any of the provided query constraints cannot be combined with the existing or new constraints.
+
+## onDisconnect()
+
+Returns an `OnDisconnect` object - see [Enabling Offline Capabilities in JavaScript](https://firebase.google.com/docs/database/web/offline-capabilities) for more information on how to use it.
+
+Signature:
+
+```typescript
+export declare function onDisconnect(ref: DatabaseReference): OnDisconnect;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| ref | [DatabaseReference](./database.databasereference.md#databasereference_interface) | The reference to add OnDisconnect triggers for. |
+
+Returns:
+
+[OnDisconnect](./database.ondisconnect.md#ondisconnect_class)
+
+## remove()
+
+Removes the data at this Database location.
+
+Any data at child locations will also be deleted.
+
+The effect of the remove will be visible immediately and the corresponding event 'value' will be triggered. Synchronization of the remove to the Firebase servers will also be started, and the returned Promise will resolve when complete. If provided, the onComplete callback will be called asynchronously after synchronization has finished.
+
+Signature:
+
+```typescript
+export declare function remove(ref: DatabaseReference): Promiseundefined is returned (i.e. you return with no arguments) the transaction will be aborted and the data at this location will not be modified. |
+| options | [TransactionOptions](./database.transactionoptions.md#transactionoptions_interface) | An options object to configure transactions. |
+
+Returns:
+
+Promise<[TransactionResult](./database.transactionresult.md#transactionresult_class)>
+
+A `Promise` that can optionally be used instead of the `onComplete` callback to handle success and failure.
+
+## set()
+
+Writes data to this Database location.
+
+This will overwrite any data at this location and all child locations.
+
+The effect of the write will be visible immediately, and the corresponding events ("value", "child\_added", etc.) will be triggered. Synchronization of the data to the Firebase servers will also be started, and the returned Promise will resolve when complete. If provided, the `onComplete` callback will be called asynchronously after synchronization has finished.
+
+Passing `null` for the new value is equivalent to calling `remove()`; namely, all data at this location and all child locations will be deleted.
+
+`set()` will remove any priority stored at this location, so if priority is meant to be preserved, you need to use `setWithPriority()` instead.
+
+Note that modifying data with `set()` will cancel any pending transactions at that location, so extreme care should be taken if mixing `set()` and `transaction()` to modify the same data.
+
+A single `set()` will generate a single "value" event at the location where the `set()` was performed.
+
+Signature:
+
+```typescript
+export declare function set(ref: DatabaseReference, value: unknown): PromiseorderBy*() function was used in this query. Specify a value that matches the orderBy*() type. When used in combination with orderByKey(), the value must be a string. |
+| key | string | The child key to end at, among the children with the previously specified priority. This argument is only allowed if ordering by child, value, or priority. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## endBefore()
+
+Creates a `QueryConstraint` with the specified ending point (exclusive).
+
+Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()` allows you to choose arbitrary starting and ending points for your queries.
+
+The ending point is exclusive. If only a value is provided, children with a value less than the specified value will be included in the query. If a key is specified, then children must have a value less than or equal to the specified value and a key name less than the specified key.
+
+Signature:
+
+```typescript
+export declare function endBefore(value: number | string | boolean | null, key?: string): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| value | number \| string \| boolean \| null | The value to end before. The argument type depends on which orderBy*() function was used in this query. Specify a value that matches the orderBy*() type. When used in combination with orderByKey(), the value must be a string. |
+| key | string | The child key to end before, among the children with the previously specified priority. This argument is only allowed if ordering by child, value, or priority. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## equalTo()
+
+Creates a `QueryConstraint` that includes children that match the specified value.
+
+Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()` allows you to choose arbitrary starting and ending points for your queries.
+
+The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have exactly the specified key as their key name. This can be used to filter result sets with many matches for the same value.
+
+You can read more about `equalTo()` in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data).
+
+Signature:
+
+```typescript
+export declare function equalTo(value: number | string | boolean | null, key?: string): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| value | number \| string \| boolean \| null | The value to match for. The argument type depends on which orderBy*() function was used in this query. Specify a value that matches the orderBy*() type. When used in combination with orderByKey(), the value must be a string. |
+| key | string | The child key to start at, among the children with the previously specified priority. This argument is only allowed if ordering by child, value, or priority. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## startAfter()
+
+Creates a `QueryConstraint` with the specified starting point (exclusive).
+
+Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()` allows you to choose arbitrary starting and ending points for your queries.
+
+The starting point is exclusive. If only a value is provided, children with a value greater than the specified value will be included in the query. If a key is specified, then children must have a value greater than or equal to the specified value and a a key name greater than the specified key.
+
+Signature:
+
+```typescript
+export declare function startAfter(value: number | string | boolean | null, key?: string): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| value | number \| string \| boolean \| null | The value to start after. The argument type depends on which orderBy*() function was used in this query. Specify a value that matches the orderBy*() type. When used in combination with orderByKey(), the value must be a string. |
+| key | string | The child key to start after. This argument is only allowed if ordering by child, value, or priority. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## startAt()
+
+Creates a `QueryConstraint` with the specified starting point.
+
+Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()` allows you to choose arbitrary starting and ending points for your queries.
+
+The starting point is inclusive, so children with exactly the specified value will be included in the query. The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have a key name greater than or equal to the specified key.
+
+You can read more about `startAt()` in [Filtering data](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data).
+
+Signature:
+
+```typescript
+export declare function startAt(value?: number | string | boolean | null, key?: string): QueryConstraint;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| value | number \| string \| boolean \| null | The value to start at. The argument type depends on which orderBy*() function was used in this query. Specify a value that matches the orderBy*() type. When used in combination with orderByKey(), the value must be a string. |
+| key | string | The child key to start at. This argument is only allowed if ordering by child, value, or priority. |
+
+Returns:
+
+[QueryConstraint](./database.queryconstraint.md#queryconstraint_class)
+
+## EventType
+
+One of the following strings: "value", "child\_added", "child\_changed", "child\_removed", or "child\_moved."
+
+Signature:
+
+```typescript
+export declare type EventType = 'value' | 'child_added' | 'child_changed' | 'child_moved' | 'child_removed';
+```
+
+## QueryConstraintType
+
+Describes the different query constraints available in this SDK.
+
+Signature:
+
+```typescript
+export declare type QueryConstraintType = 'endAt' | 'endBefore' | 'startAt' | 'startAfter' | 'limitToFirst' | 'limitToLast' | 'orderByChild' | 'orderByKey' | 'orderByPriority' | 'orderByValue' | 'equalTo';
+```
+
+## Unsubscribe
+
+A callback that can invoked to remove a listener.
+
+Signature:
+
+```typescript
+export declare type Unsubscribe = () => void;
+```
diff --git a/docs-devsite/database.ondisconnect.md b/docs-devsite/database.ondisconnect.md
new file mode 100644
index 00000000000..b7ed5075365
--- /dev/null
+++ b/docs-devsite/database.ondisconnect.md
@@ -0,0 +1,143 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# OnDisconnect class
+The `onDisconnect` class allows you to write or clear data when your client disconnects from the Database server. These updates occur whether your client disconnects cleanly or not, so you can rely on them to clean up data even if a connection is dropped or a client crashes.
+
+The `onDisconnect` class is most commonly used to manage presence in applications where it is useful to detect how many clients are connected and when other clients disconnect. See [Enabling Offline Capabilities in JavaScript](https://firebase.google.com/docs/database/web/offline-capabilities) for more information.
+
+To avoid problems when a connection is dropped before the requests can be transferred to the Database server, these functions should be called before writing any data.
+
+Note that `onDisconnect` operations are only triggered once. If you want an operation to occur each time a disconnect occurs, you'll need to re-establish the `onDisconnect` operations each time you reconnect.
+
+Signature:
+
+```typescript
+export declare class OnDisconnect
+```
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [cancel()](./database.ondisconnect.md#ondisconnectcancel) | | Cancels all previously queued onDisconnect() set or update events for this location and all children.If a write has been queued for this location via a set() or update() at a parent location, the write at this location will be canceled, though writes to sibling locations will still occur. |
+| [remove()](./database.ondisconnect.md#ondisconnectremove) | | Ensures the data at this location is deleted when the client is disconnected (due to closing the browser, navigating to a new page, or network issues). |
+| [set(value)](./database.ondisconnect.md#ondisconnectset) | | Ensures the data at this location is set to the specified value when the client is disconnected (due to closing the browser, navigating to a new page, or network issues).set() is especially useful for implementing "presence" systems, where a value should be changed or cleared when a user disconnects so that they appear "offline" to other users. See [Enabling Offline Capabilities in JavaScript](https://firebase.google.com/docs/database/web/offline-capabilities) for more information.Note that onDisconnect operations are only triggered once. If you want an operation to occur each time a disconnect occurs, you'll need to re-establish the onDisconnect operations each time. |
+| [setWithPriority(value, priority)](./database.ondisconnect.md#ondisconnectsetwithpriority) | | Ensures the data at this location is set to the specified value and priority when the client is disconnected (due to closing the browser, navigating to a new page, or network issues). |
+| [update(values)](./database.ondisconnect.md#ondisconnectupdate) | | Writes multiple values at this location when the client is disconnected (due to closing the browser, navigating to a new page, or network issues).The values argument contains multiple property-value pairs that will be written to the Database together. Each child property can either be a simple property (for example, "name") or a relative path (for example, "name/first") from the current location to the data to update.As opposed to the set() method, update() can be use to selectively update only the referenced properties at the current location (instead of replacing all the child properties at the current location). |
+
+## OnDisconnect.cancel()
+
+Cancels all previously queued `onDisconnect()` set or update events for this location and all children.
+
+If a write has been queued for this location via a `set()` or `update()` at a parent location, the write at this location will be canceled, though writes to sibling locations will still occur.
+
+Signature:
+
+```typescript
+cancel(): PromiseDatabaseReference for the Query's location. |
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [isEqual(other)](./database.query.md#queryisequal) | Returns whether or not the current and provided queries represent the same location, have the same query parameters, and are from the same instance of FirebaseApp.Two DatabaseReference objects are equivalent if they represent the same location and are from the same instance of FirebaseApp.Two Query objects are equivalent if they represent the same location, have the same query parameters, and are from the same instance of FirebaseApp. Equivalent queries share the same sort order, limits, and starting and ending points. |
+| [toJSON()](./database.query.md#querytojson) | Returns a JSON-serializable representation of this object. |
+| [toString()](./database.query.md#querytostring) | Gets the absolute URL for this location.The toString() method returns a URL that is ready to be put into a browser, curl command, or a refFromURL() call. Since all of those expect the URL to be url-encoded, toString() returns an encoded URL.Append '.json' to the returned URL when typed into a browser to download JSON-formatted data. If the location is secured (that is, not publicly readable), you will get a permission-denied error. |
+
+## Query.ref
+
+The `DatabaseReference` for the `Query`'s location.
+
+Signature:
+
+```typescript
+readonly ref: DatabaseReference;
+```
+
+## Query.isEqual()
+
+Returns whether or not the current and provided queries represent the same location, have the same query parameters, and are from the same instance of `FirebaseApp`.
+
+Two `DatabaseReference` objects are equivalent if they represent the same location and are from the same instance of `FirebaseApp`.
+
+Two `Query` objects are equivalent if they represent the same location, have the same query parameters, and are from the same instance of `FirebaseApp`. Equivalent queries share the same sort order, limits, and starting and ending points.
+
+Signature:
+
+```typescript
+isEqual(other: Query | null): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| other | [Query](./database.query.md#query_interface) \| null | The query to compare against. |
+
+Returns:
+
+boolean
+
+Whether or not the current and provided queries are equivalent.
+
+## Query.toJSON()
+
+Returns a JSON-serializable representation of this object.
+
+Signature:
+
+```typescript
+toJSON(): string;
+```
+Returns:
+
+string
+
+A JSON-serializable representation of this object.
+
+## Query.toString()
+
+Gets the absolute URL for this location.
+
+The `toString()` method returns a URL that is ready to be put into a browser, curl command, or a `refFromURL()` call. Since all of those expect the URL to be url-encoded, `toString()` returns an encoded URL.
+
+Append '.json' to the returned URL when typed into a browser to download JSON-formatted data. If the location is secured (that is, not publicly readable), you will get a permission-denied error.
+
+Signature:
+
+```typescript
+toString(): string;
+```
+Returns:
+
+string
+
+The absolute URL for this location.
+
diff --git a/docs-devsite/database.queryconstraint.md b/docs-devsite/database.queryconstraint.md
new file mode 100644
index 00000000000..fe98c6badf3
--- /dev/null
+++ b/docs-devsite/database.queryconstraint.md
@@ -0,0 +1,35 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# QueryConstraint class
+A `QueryConstraint` is used to narrow the set of documents returned by a Database query. `QueryConstraint`s are created by invoking [endAt()](./database.md#endat), [endBefore()](./database.md#endbefore), [startAt()](./database.md#startat), [startAfter()](./database.md#startafter), [limitToFirst()](./database.md#limittofirst), [limitToLast()](./database.md#limittolast), [orderByChild()](./database.md#orderbychild), [orderByChild()](./database.md#orderbychild), [orderByKey()](./database.md#orderbykey) , [orderByPriority()](./database.md#orderbypriority) , [orderByValue()](./database.md#orderbyvalue) or [equalTo()](./database.md#equalto) and can then be passed to [query()](./database.md#query) to create a new query instance that also contains this `QueryConstraint`.
+
+Signature:
+
+```typescript
+export declare abstract class QueryConstraint
+```
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [type](./database.queryconstraint.md#queryconstrainttype) | | [QueryConstraintType](./database.md#queryconstrainttype) | The type of this query constraints |
+
+## QueryConstraint.type
+
+The type of this query constraints
+
+Signature:
+
+```typescript
+abstract readonly type: QueryConstraintType;
+```
diff --git a/docs-devsite/database.thenablereference.md b/docs-devsite/database.thenablereference.md
new file mode 100644
index 00000000000..b6231d2bd03
--- /dev/null
+++ b/docs-devsite/database.thenablereference.md
@@ -0,0 +1,21 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# ThenableReference interface
+A `Promise` that can also act as a `DatabaseReference` when returned by [push()](./database.md#push). The reference is available immediately and the `Promise` resolves as the write to the backend completes.
+
+Signature:
+
+```typescript
+export declare interface ThenableReference extends DatabaseReference, PickAggregateQuerySnapshot were performed. |
+| [type](./firestore_.aggregatequerysnapshot.md#aggregatequerysnapshottype) | | (not declared) | A type string to uniquely identify instances of this class. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [data()](./firestore_.aggregatequerysnapshot.md#aggregatequerysnapshotdata) | | Returns the results of the aggregations performed over the underlying query.The keys of the returned object will be the same as those of the AggregateSpec object specified to the aggregation method, and the values will be the corresponding aggregation result. |
+
+## AggregateQuerySnapshot.query
+
+The underlying query over which the aggregations recorded in this `AggregateQuerySnapshot` were performed.
+
+Signature:
+
+```typescript
+readonly query: Querystatic | Creates a new Bytes object from the given Base64 string, converting it to bytes. |
+| [fromUint8Array(array)](./firestore_.bytes.md#bytesfromuint8array) | static | Creates a new Bytes object from the given Uint8Array. |
+| [isEqual(other)](./firestore_.bytes.md#bytesisequal) | | Returns true if this Bytes object is equal to the provided one. |
+| [toBase64()](./firestore_.bytes.md#bytestobase64) | | Returns the underlying bytes as a Base64-encoded string. |
+| [toString()](./firestore_.bytes.md#bytestostring) | | Returns a string representation of the Bytes object. |
+| [toUint8Array()](./firestore_.bytes.md#bytestouint8array) | | Returns the underlying bytes in a new Uint8Array. |
+
+## Bytes.fromBase64String()
+
+Creates a new `Bytes` object from the given Base64 string, converting it to bytes.
+
+Signature:
+
+```typescript
+static fromBase64String(base64: string): Bytes;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| base64 | string | The Base64 string used to create the Bytes object. |
+
+Returns:
+
+[Bytes](./firestore_.bytes.md#bytes_class)
+
+## Bytes.fromUint8Array()
+
+Creates a new `Bytes` object from the given Uint8Array.
+
+Signature:
+
+```typescript
+static fromUint8Array(array: Uint8Array): Bytes;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| array | Uint8Array | The Uint8Array used to create the Bytes object. |
+
+Returns:
+
+[Bytes](./firestore_.bytes.md#bytes_class)
+
+## Bytes.isEqual()
+
+Returns true if this `Bytes` object is equal to the provided one.
+
+Signature:
+
+```typescript
+isEqual(other: Bytes): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| other | [Bytes](./firestore_.bytes.md#bytes_class) | The Bytes object to compare against. |
+
+Returns:
+
+boolean
+
+true if this `Bytes` object is equal to the provided one.
+
+## Bytes.toBase64()
+
+Returns the underlying bytes as a Base64-encoded string.
+
+Signature:
+
+```typescript
+toBase64(): string;
+```
+Returns:
+
+string
+
+The Base64-encoded string created from the `Bytes` object.
+
+## Bytes.toString()
+
+Returns a string representation of the `Bytes` object.
+
+Signature:
+
+```typescript
+toString(): string;
+```
+Returns:
+
+string
+
+A string representation of the `Bytes` object.
+
+## Bytes.toUint8Array()
+
+Returns the underlying bytes in a new `Uint8Array`.
+
+Signature:
+
+```typescript
+toUint8Array(): Uint8Array;
+```
+Returns:
+
+Uint8Array
+
+The Uint8Array created from the `Bytes` object.
+
diff --git a/docs-devsite/firestore_.collectionreference.md b/docs-devsite/firestore_.collectionreference.md
new file mode 100644
index 00000000000..56c81c6b245
--- /dev/null
+++ b/docs-devsite/firestore_.collectionreference.md
@@ -0,0 +1,121 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# CollectionReference class
+A `CollectionReference` object can be used for adding documents, getting document references, and querying for documents (using [query()](./firestore_.md#query)).
+
+Signature:
+
+```typescript
+export declare class CollectionReferenceDocumentReference if this is a subcollection. If this isn't a subcollection, the reference is null. |
+| [path](./firestore_.collectionreference.md#collectionreferencepath) | | string | A string representing the path of the referenced collection (relative to the root of the database). |
+| [type](./firestore_.collectionreference.md#collectionreferencetype) | | (not declared) | The type of this Firestore reference. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [withConverter(converter)](./firestore_.collectionreference.md#collectionreferencewithconverter) | | Applies a custom data converter to this CollectionReference, allowing you to use your own custom model objects with Firestore. When you call [addDoc()](./firestore_.md#adddoc) with the returned CollectionReference instance, the provided converter will convert between Firestore data and your custom type U. |
+| [withConverter(converter)](./firestore_.collectionreference.md#collectionreferencewithconverter) | | Removes the current converter. |
+
+## CollectionReference.id
+
+The collection's identifier.
+
+Signature:
+
+```typescript
+get id(): string;
+```
+
+## CollectionReference.parent
+
+A reference to the containing `DocumentReference` if this is a subcollection. If this isn't a subcollection, the reference is null.
+
+Signature:
+
+```typescript
+get parent(): DocumentReferencenull removes the current converter. |
+
+Returns:
+
+[CollectionReference](./firestore_.collectionreference.md#collectionreference_class)<[DocumentData](./firestore_.documentdata.md#documentdata_interface)>
+
+A `CollectionReferenceDocumentChange (i.e. supposing that all prior DocumentChange objects and the current DocumentChange object have been applied). Is -1 for 'removed' events. |
+| [oldIndex](./firestore_.documentchange.md#documentchangeoldindex) | number | The index of the changed document in the result set immediately prior to this DocumentChange (i.e. supposing that all prior DocumentChange objects have been applied). Is -1 for 'added' events. |
+| [type](./firestore_.documentchange.md#documentchangetype) | [DocumentChangeType](./firestore_.md#documentchangetype) | The type of change ('added', 'modified', or 'removed'). |
+
+## DocumentChange.doc
+
+The document affected by this change.
+
+Signature:
+
+```typescript
+readonly doc: QueryDocumentSnapshotFirestoreDataConverter associated with this instance. |
+| [firestore](./firestore_.documentreference.md#documentreferencefirestore) | | [Firestore](./firestore_.firestore.md#firestore_class) | The [Firestore](./firestore_.firestore.md#firestore_class) instance the document is in. This is useful for performing transactions, for example. |
+| [id](./firestore_.documentreference.md#documentreferenceid) | | string | The document's identifier within its collection. |
+| [parent](./firestore_.documentreference.md#documentreferenceparent) | | [CollectionReference](./firestore_.collectionreference.md#collectionreference_class)<T> | The collection this DocumentReference belongs to. |
+| [path](./firestore_.documentreference.md#documentreferencepath) | | string | A string representing the path of the referenced document (relative to the root of the database). |
+| [type](./firestore_.documentreference.md#documentreferencetype) | | (not declared) | The type of this Firestore reference. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [withConverter(converter)](./firestore_.documentreference.md#documentreferencewithconverter) | | Applies a custom data converter to this DocumentReference, allowing you to use your own custom model objects with Firestore. When you call [setDoc()](./firestore_lite.md#setdoc), [getDoc()](./firestore_lite.md#getdoc), etc. with the returned DocumentReference instance, the provided converter will convert between Firestore data and your custom type U. |
+| [withConverter(converter)](./firestore_.documentreference.md#documentreferencewithconverter) | | Removes the current converter. |
+
+## DocumentReference.converter
+
+If provided, the `FirestoreDataConverter` associated with this instance.
+
+Signature:
+
+```typescript
+readonly converter: FirestoreDataConverternull removes the current converter. |
+
+Returns:
+
+[DocumentReference](./firestore_.documentreference.md#documentreference_class)<[DocumentData](./firestore_.documentdata.md#documentdata_interface)>
+
+A `DocumentReferenceDocumentSnapshot class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [id](./firestore_.documentsnapshot.md#documentsnapshotid) | | string | Property of the DocumentSnapshot that provides the document's ID. |
+| [metadata](./firestore_.documentsnapshot.md#documentsnapshotmetadata) | | [SnapshotMetadata](./firestore_.snapshotmetadata.md#snapshotmetadata_class) | Metadata about the DocumentSnapshot, including information about its source and local modifications. |
+| [ref](./firestore_.documentsnapshot.md#documentsnapshotref) | | [DocumentReference](./firestore_.documentreference.md#documentreference_class)<T> | The DocumentReference for the document included in the DocumentSnapshot. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [data(options)](./firestore_.documentsnapshot.md#documentsnapshotdata) | | Retrieves all fields in the document as an Object. Returns undefined if the document doesn't exist.By default, serverTimestamp() values that have not yet been set to their final value will be returned as null. You can override this by passing an options object. |
+| [exists()](./firestore_.documentsnapshot.md#documentsnapshotexists) | | Returns whether or not the data exists. True if the document exists. |
+| [get(fieldPath, options)](./firestore_.documentsnapshot.md#documentsnapshotget) | | Retrieves the field specified by fieldPath. Returns undefined if the document or field doesn't exist.By default, a serverTimestamp() that has not yet been set to its final value will be returned as null. You can override this by passing an options object. |
+
+## DocumentSnapshot.(constructor)
+
+Constructs a new instance of the `DocumentSnapshot` class
+
+Signature:
+
+```typescript
+protected constructor();
+```
+
+## DocumentSnapshot.id
+
+Property of the `DocumentSnapshot` that provides the document's ID.
+
+Signature:
+
+```typescript
+get id(): string;
+```
+
+## DocumentSnapshot.metadata
+
+Metadata about the `DocumentSnapshot`, including information about its source and local modifications.
+
+Signature:
+
+```typescript
+readonly metadata: SnapshotMetadata;
+```
+
+## DocumentSnapshot.ref
+
+The `DocumentReference` for the document included in the `DocumentSnapshot`.
+
+Signature:
+
+```typescript
+get ref(): DocumentReferenceFieldPath from the provided field names. If more than one field name is provided, the path will point to a nested field in a document. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [isEqual(other)](./firestore_.fieldpath.md#fieldpathisequal) | | Returns true if this FieldPath is equal to the provided one. |
+
+## FieldPath.(constructor)
+
+Creates a `FieldPath` from the provided field names. If more than one field name is provided, the path will point to a nested field in a document.
+
+Signature:
+
+```typescript
+constructor(...fieldNames: string[]);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| fieldNames | string\[\] | A list of field names. |
+
+## FieldPath.isEqual()
+
+Returns true if this `FieldPath` is equal to the provided one.
+
+Signature:
+
+```typescript
+isEqual(other: FieldPath): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| other | [FieldPath](./firestore_.fieldpath.md#fieldpath_class) | The FieldPath to compare against. |
+
+Returns:
+
+boolean
+
+true if this `FieldPath` is equal to the provided one.
+
diff --git a/docs-devsite/firestore_.fieldvalue.md b/docs-devsite/firestore_.fieldvalue.md
new file mode 100644
index 00000000000..62c034583d6
--- /dev/null
+++ b/docs-devsite/firestore_.fieldvalue.md
@@ -0,0 +1,46 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FieldValue class
+Sentinel values that can be used when writing document fields with `set()` or `update()`.
+
+Signature:
+
+```typescript
+export declare abstract class FieldValue
+```
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [isEqual(other)](./firestore_.fieldvalue.md#fieldvalueisequal) | | Compares FieldValues for equality. |
+
+## FieldValue.isEqual()
+
+Compares `FieldValue`s for equality.
+
+Signature:
+
+```typescript
+abstract isEqual(other: FieldValue): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| other | [FieldValue](./firestore_.fieldvalue.md#fieldvalue_class) | |
+
+Returns:
+
+boolean
+
diff --git a/docs-devsite/firestore_.firestore.md b/docs-devsite/firestore_.firestore.md
new file mode 100644
index 00000000000..01267d5b2d3
--- /dev/null
+++ b/docs-devsite/firestore_.firestore.md
@@ -0,0 +1,68 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# Firestore class
+The Cloud Firestore service interface.
+
+Do not call this constructor directly. Instead, use [getFirestore()](./firestore_.md#getfirestore).
+
+Signature:
+
+```typescript
+export declare class Firestore
+```
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [app](./firestore_.firestore.md#firestoreapp) | | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) associated with this Firestore service instance. |
+| [type](./firestore_.firestore.md#firestoretype) | | 'firestore-lite' \| 'firestore' | Whether it's a [Firestore](./firestore_.firestore.md#firestore_class) or Firestore Lite instance. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [toJSON()](./firestore_.firestore.md#firestoretojson) | | Returns a JSON-serializable representation of this Firestore instance. |
+
+## Firestore.app
+
+The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) associated with this `Firestore` service instance.
+
+Signature:
+
+```typescript
+get app(): FirebaseApp;
+```
+
+## Firestore.type
+
+Whether it's a [Firestore](./firestore_.firestore.md#firestore_class) or Firestore Lite instance.
+
+Signature:
+
+```typescript
+type: 'firestore-lite' | 'firestore';
+```
+
+## Firestore.toJSON()
+
+Returns a JSON-serializable representation of this `Firestore` instance.
+
+Signature:
+
+```typescript
+toJSON(): object;
+```
+Returns:
+
+object
+
diff --git a/docs-devsite/firestore_.firestoredataconverter.md b/docs-devsite/firestore_.firestoredataconverter.md
new file mode 100644
index 00000000000..f7d80ac4a13
--- /dev/null
+++ b/docs-devsite/firestore_.firestoredataconverter.md
@@ -0,0 +1,134 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# FirestoreDataConverter interface
+Converter used by `withConverter()` to transform user objects of type `T` into Firestore data.
+
+Using the converter allows you to specify generic type arguments when storing and retrieving objects from Firestore.
+
+Signature:
+
+```typescript
+export declare interface FirestoreDataConvertersnapshot.data(options). |
+| [toFirestore(modelObject)](./firestore_.firestoredataconverter.md#firestoredataconvertertofirestore) | Called by the Firestore SDK to convert a custom model object of type T into a plain JavaScript object (suitable for writing directly to the Firestore database). To use set() with merge and mergeFields, toFirestore() must be defined with PartialWithFieldValue<T>.The WithFieldValue<T> type extends T to also allow FieldValues such as [deleteField()](./firestore_.md#deletefield) to be used as property values. |
+| [toFirestore(modelObject, options)](./firestore_.firestoredataconverter.md#firestoredataconvertertofirestore) | Called by the Firestore SDK to convert a custom model object of type T into a plain JavaScript object (suitable for writing directly to the Firestore database). Used with [setDoc()](./firestore_.md#setdoc), and with merge:true or mergeFields.The PartialWithFieldValue<T> type extends Partial<T> to allow FieldValues such as [arrayUnion()](./firestore_.md#arrayunion) to be used as property values. It also supports nested Partial by allowing nested fields to be omitted. |
+
+## FirestoreDataConverter.fromFirestore()
+
+Called by the Firestore SDK to convert Firestore data into an object of type T. You can access your data by calling: `snapshot.data(options)`.
+
+Signature:
+
+```typescript
+fromFirestore(snapshot: QueryDocumentSnapshotQueryDocumentSnapshot containing your data and metadata. |
+| options | [SnapshotOptions](./firestore_.snapshotoptions.md#snapshotoptions_interface) | The SnapshotOptions from the initial call to data(). |
+
+Returns:
+
+T
+
+## FirestoreDataConverter.toFirestore()
+
+Called by the Firestore SDK to convert a custom model object of type `T` into a plain JavaScript object (suitable for writing directly to the Firestore database). To use `set()` with `merge` and `mergeFields`, `toFirestore()` must be defined with `PartialWithFieldValueCACHE_SIZE_UNLIMITED to disable garbage collection. |
+| [experimentalAutoDetectLongPolling](./firestore_.firestoresettings.md#firestoresettingsexperimentalautodetectlongpolling) | boolean | Configures the SDK's underlying transport (WebChannel) to automatically detect if long-polling should be used. This is very similar to experimentalForceLongPolling, but only uses long-polling if required.This setting will likely be enabled by default in future releases and cannot be combined with experimentalForceLongPolling. |
+| [experimentalForceLongPolling](./firestore_.firestoresettings.md#firestoresettingsexperimentalforcelongpolling) | boolean | Forces the SDK’s underlying network transport (WebChannel) to use long-polling. Each response from the backend will be closed immediately after the backend sends data (by default responses are kept open in case the backend has more data to send). This avoids incompatibility issues with certain proxies, antivirus software, etc. that incorrectly buffer traffic indefinitely. Use of this option will cause some performance degradation though.This setting cannot be used with experimentalAutoDetectLongPolling and may be removed in a future release. If you find yourself using it to work around a specific network reliability issue, please tell us about it in https://github.com/firebase/firebase-js-sdk/issues/1674. |
+| [host](./firestore_.firestoresettings.md#firestoresettingshost) | string | The hostname to connect to. |
+| [ignoreUndefinedProperties](./firestore_.firestoresettings.md#firestoresettingsignoreundefinedproperties) | boolean | Whether to skip nested properties that are set to undefined during object serialization. If set to true, these properties are skipped and not written to Firestore. If set to false or omitted, the SDK throws an exception when it encounters properties of type undefined. |
+| [ssl](./firestore_.firestoresettings.md#firestoresettingsssl) | boolean | Whether to use SSL when connecting. |
+
+## FirestoreSettings.cacheSizeBytes
+
+An approximate cache size threshold for the on-disk data. If the cache grows beyond this size, Firestore will start removing data that hasn't been recently used. The size is not a guarantee that the cache will stay below that size, only that if the cache exceeds the given size, cleanup will be attempted.
+
+The default value is 40 MB. The threshold must be set to at least 1 MB, and can be set to `CACHE_SIZE_UNLIMITED` to disable garbage collection.
+
+Signature:
+
+```typescript
+cacheSizeBytes?: number;
+```
+
+## FirestoreSettings.experimentalAutoDetectLongPolling
+
+Configures the SDK's underlying transport (WebChannel) to automatically detect if long-polling should be used. This is very similar to `experimentalForceLongPolling`, but only uses long-polling if required.
+
+This setting will likely be enabled by default in future releases and cannot be combined with `experimentalForceLongPolling`.
+
+Signature:
+
+```typescript
+experimentalAutoDetectLongPolling?: boolean;
+```
+
+## FirestoreSettings.experimentalForceLongPolling
+
+Forces the SDK’s underlying network transport (WebChannel) to use long-polling. Each response from the backend will be closed immediately after the backend sends data (by default responses are kept open in case the backend has more data to send). This avoids incompatibility issues with certain proxies, antivirus software, etc. that incorrectly buffer traffic indefinitely. Use of this option will cause some performance degradation though.
+
+This setting cannot be used with `experimentalAutoDetectLongPolling` and may be removed in a future release. If you find yourself using it to work around a specific network reliability issue, please tell us about it in https://github.com/firebase/firebase-js-sdk/issues/1674.
+
+Signature:
+
+```typescript
+experimentalForceLongPolling?: boolean;
+```
+
+## FirestoreSettings.host
+
+The hostname to connect to.
+
+Signature:
+
+```typescript
+host?: string;
+```
+
+## FirestoreSettings.ignoreUndefinedProperties
+
+Whether to skip nested properties that are set to `undefined` during object serialization. If set to `true`, these properties are skipped and not written to Firestore. If set to `false` or omitted, the SDK throws an exception when it encounters properties of type `undefined`.
+
+Signature:
+
+```typescript
+ignoreUndefinedProperties?: boolean;
+```
+
+## FirestoreSettings.ssl
+
+Whether to use SSL when connecting.
+
+Signature:
+
+```typescript
+ssl?: boolean;
+```
diff --git a/docs-devsite/firestore_.geopoint.md b/docs-devsite/firestore_.geopoint.md
new file mode 100644
index 00000000000..d2fd1bd7392
--- /dev/null
+++ b/docs-devsite/firestore_.geopoint.md
@@ -0,0 +1,117 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# GeoPoint class
+An immutable object representing a geographic location in Firestore. The location is represented as latitude/longitude pair.
+
+Latitude values are in the range of \[-90, 90\]. Longitude values are in the range of \[-180, 180\].
+
+Signature:
+
+```typescript
+export declare class GeoPoint
+```
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(latitude, longitude)](./firestore_.geopoint.md#geopointconstructor) | | Creates a new immutable GeoPoint object with the provided latitude and longitude values. |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [latitude](./firestore_.geopoint.md#geopointlatitude) | | number | The latitude of this GeoPoint instance. |
+| [longitude](./firestore_.geopoint.md#geopointlongitude) | | number | The longitude of this GeoPoint instance. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [isEqual(other)](./firestore_.geopoint.md#geopointisequal) | | Returns true if this GeoPoint is equal to the provided one. |
+| [toJSON()](./firestore_.geopoint.md#geopointtojson) | | Returns a JSON-serializable representation of this GeoPoint. |
+
+## GeoPoint.(constructor)
+
+Creates a new immutable `GeoPoint` object with the provided latitude and longitude values.
+
+Signature:
+
+```typescript
+constructor(latitude: number, longitude: number);
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| latitude | number | The latitude as number between -90 and 90. |
+| longitude | number | The longitude as number between -180 and 180. |
+
+## GeoPoint.latitude
+
+The latitude of this `GeoPoint` instance.
+
+Signature:
+
+```typescript
+get latitude(): number;
+```
+
+## GeoPoint.longitude
+
+The longitude of this `GeoPoint` instance.
+
+Signature:
+
+```typescript
+get longitude(): number;
+```
+
+## GeoPoint.isEqual()
+
+Returns true if this `GeoPoint` is equal to the provided one.
+
+Signature:
+
+```typescript
+isEqual(other: GeoPoint): boolean;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| other | [GeoPoint](./firestore_.geopoint.md#geopoint_class) | The GeoPoint to compare against. |
+
+Returns:
+
+boolean
+
+true if this `GeoPoint` is equal to the provided one.
+
+## GeoPoint.toJSON()
+
+Returns a JSON-serializable representation of this GeoPoint.
+
+Signature:
+
+```typescript
+toJSON(): {
+ latitude: number;
+ longitude: number;
+ };
+```
+Returns:
+
+{ latitude: number; longitude: number; }
+
diff --git a/docs-devsite/firestore_.index.md b/docs-devsite/firestore_.index.md
new file mode 100644
index 00000000000..3ea216d6798
--- /dev/null
+++ b/docs-devsite/firestore_.index.md
@@ -0,0 +1,55 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# Index interface
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+The SDK definition of a Firestore index.
+
+Signature:
+
+```typescript
+export declare interface Index
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [collectionGroup](./firestore_.index.md#indexcollectiongroup) | string | (BETA) The ID of the collection to index. |
+| [fields](./firestore_.index.md#indexfields) | [IndexField](./firestore_.indexfield.md#indexfield_interface)\[\] | (BETA) A list of fields to index. |
+
+## Index.collectionGroup
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+The ID of the collection to index.
+
+Signature:
+
+```typescript
+readonly collectionGroup: string;
+```
+
+## Index.fields
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+A list of fields to index.
+
+Signature:
+
+```typescript
+readonly fields?: IndexField[];
+```
diff --git a/docs-devsite/firestore_.indexconfiguration.md b/docs-devsite/firestore_.indexconfiguration.md
new file mode 100644
index 00000000000..8a0592e7ed6
--- /dev/null
+++ b/docs-devsite/firestore_.indexconfiguration.md
@@ -0,0 +1,43 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# IndexConfiguration interface
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+A list of Firestore indexes to speed up local query execution.
+
+See [JSON Format](https://firebase.google.com/docs/reference/firestore/indexes/#json_format) for a description of the format of the index definition.
+
+Signature:
+
+```typescript
+export declare interface IndexConfiguration
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [indexes](./firestore_.indexconfiguration.md#indexconfigurationindexes) | [Index](./firestore_.index.md#index_interface)\[\] | (BETA) A list of all Firestore indexes. |
+
+## IndexConfiguration.indexes
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+A list of all Firestore indexes.
+
+Signature:
+
+```typescript
+readonly indexes?: Index[];
+```
diff --git a/docs-devsite/firestore_.indexfield.md b/docs-devsite/firestore_.indexfield.md
new file mode 100644
index 00000000000..278e2f63ce8
--- /dev/null
+++ b/docs-devsite/firestore_.indexfield.md
@@ -0,0 +1,73 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# IndexField interface
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+A single field element in an index configuration.
+
+Signature:
+
+```typescript
+export declare interface IndexField
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [arrayConfig](./firestore_.indexfield.md#indexfieldarrayconfig) | 'CONTAINS' | (BETA) What type of array index to create. Set to CONTAINS for array-contains and array-contains-any indexes.Only one of arrayConfig or order should be set; |
+| [fieldPath](./firestore_.indexfield.md#indexfieldfieldpath) | string | (BETA) The field path to index. |
+| [order](./firestore_.indexfield.md#indexfieldorder) | 'ASCENDING' \| 'DESCENDING' | (BETA) What type of array index to create. Set to ASCENDING or 'DESCENDING for ==, !=, <=, <=, in and not-in\` filters.Only one of arrayConfig or order should be set. |
+
+## IndexField.arrayConfig
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+What type of array index to create. Set to `CONTAINS` for `array-contains` and `array-contains-any` indexes.
+
+Only one of `arrayConfig` or `order` should be set;
+
+Signature:
+
+```typescript
+readonly arrayConfig?: 'CONTAINS';
+```
+
+## IndexField.fieldPath
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+The field path to index.
+
+Signature:
+
+```typescript
+readonly fieldPath: string;
+```
+
+## IndexField.order
+
+> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
+>
+
+What type of array index to create. Set to `ASCENDING` or 'DESCENDING` for `==`, `!=`, `<=`, `<=`, `in` and `not-in\` filters.
+
+Only one of `arrayConfig` or `order` should be set.
+
+Signature:
+
+```typescript
+readonly order?: 'ASCENDING' | 'DESCENDING';
+```
diff --git a/docs-devsite/firestore_.loadbundletask.md b/docs-devsite/firestore_.loadbundletask.md
new file mode 100644
index 00000000000..8b446d5d6e1
--- /dev/null
+++ b/docs-devsite/firestore_.loadbundletask.md
@@ -0,0 +1,94 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LoadBundleTask class
+Represents the task of loading a Firestore bundle. It provides progress of bundle loading, as well as task completion and error events.
+
+The API is compatible with `PromisePromise<LoadBundleTaskProgress>.catch interface. |
+| [onProgress(next, error, complete)](./firestore_.loadbundletask.md#loadbundletaskonprogress) | | Registers functions to listen to bundle loading progress events. |
+| [then(onFulfilled, onRejected)](./firestore_.loadbundletask.md#loadbundletaskthen) | | Implements the Promise<LoadBundleTaskProgress>.then interface. |
+
+## LoadBundleTask.catch()
+
+Implements the `Promisenext calls occur each time a Firestore document is loaded from the bundle. |
+| error | (err: Error) => unknown | Called when an error occurs during bundle loading. The task aborts after reporting the error, and there should be no more updates after this. |
+| complete | () => void | Called when the loading task is complete. |
+
+Returns:
+
+void
+
+## LoadBundleTask.then()
+
+Implements the `PromiseLoadBundleTaskProgress update. The update will always have its taskState set to "Success". |
+| onRejected | (a: Error) => R \| PromiseLike<R> | Called when an error occurs during bundle loading. |
+
+Returns:
+
+Promise<T \| R>
+
diff --git a/docs-devsite/firestore_.loadbundletaskprogress.md b/docs-devsite/firestore_.loadbundletaskprogress.md
new file mode 100644
index 00000000000..98124754928
--- /dev/null
+++ b/docs-devsite/firestore_.loadbundletaskprogress.md
@@ -0,0 +1,79 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LoadBundleTaskProgress interface
+Represents a progress update or a final state from loading bundles.
+
+Signature:
+
+```typescript
+export declare interface LoadBundleTaskProgress
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [bytesLoaded](./firestore_.loadbundletaskprogress.md#loadbundletaskprogressbytesloaded) | number | How many bytes have been loaded. |
+| [documentsLoaded](./firestore_.loadbundletaskprogress.md#loadbundletaskprogressdocumentsloaded) | number | How many documents have been loaded. |
+| [taskState](./firestore_.loadbundletaskprogress.md#loadbundletaskprogresstaskstate) | [TaskState](./firestore_.md#taskstate) | Current task state. |
+| [totalBytes](./firestore_.loadbundletaskprogress.md#loadbundletaskprogresstotalbytes) | number | How many bytes are in the bundle being loaded. |
+| [totalDocuments](./firestore_.loadbundletaskprogress.md#loadbundletaskprogresstotaldocuments) | number | How many documents are in the bundle being loaded. |
+
+## LoadBundleTaskProgress.bytesLoaded
+
+How many bytes have been loaded.
+
+Signature:
+
+```typescript
+bytesLoaded: number;
+```
+
+## LoadBundleTaskProgress.documentsLoaded
+
+How many documents have been loaded.
+
+Signature:
+
+```typescript
+documentsLoaded: number;
+```
+
+## LoadBundleTaskProgress.taskState
+
+Current task state.
+
+Signature:
+
+```typescript
+taskState: TaskState;
+```
+
+## LoadBundleTaskProgress.totalBytes
+
+How many bytes are in the bundle being loaded.
+
+Signature:
+
+```typescript
+totalBytes: number;
+```
+
+## LoadBundleTaskProgress.totalDocuments
+
+How many documents are in the bundle being loaded.
+
+Signature:
+
+```typescript
+totalDocuments: number;
+```
diff --git a/docs-devsite/firestore_.md b/docs-devsite/firestore_.md
new file mode 100644
index 00000000000..4a5c2dd49b2
--- /dev/null
+++ b/docs-devsite/firestore_.md
@@ -0,0 +1,2134 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# @firebase/firestore
+
+## Functions
+
+| Function | Description |
+| --- | --- |
+| function(app...) |
+| [getFirestore(app)](./firestore_.md#getfirestore) | Returns the existing default [Firestore](./firestore_.firestore.md#firestore_class) instance that is associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). If no instance exists, initializes a new instance with default settings. |
+| [initializeFirestore(app, settings, databaseId)](./firestore_.md#initializefirestore) | Initializes a new instance of [Firestore](./firestore_.firestore.md#firestore_class) with the provided settings. Can only be called before any other function, including [getFirestore()](./firestore_.md#getfirestore). If the custom settings are empty, this function is equivalent to calling [getFirestore()](./firestore_.md#getfirestore). |
+| function(firestore...) |
+| [clearIndexedDbPersistence(firestore)](./firestore_.md#clearindexeddbpersistence) | Clears the persistent storage. This includes pending writes and cached documents.Must be called while the [Firestore](./firestore_.firestore.md#firestore_class) instance is not started (after the app is terminated or when the app is first initialized). On startup, this function must be called before other functions (other than [initializeFirestore()](./firestore_.md#initializefirestore) or [getFirestore()](./firestore_.md#getfirestore))). If the [Firestore](./firestore_.firestore.md#firestore_class) instance is still running, the promise will be rejected with the error code of failed-precondition.Note: clearIndexedDbPersistence() is primarily intended to help write reliable tests that use Cloud Firestore. It uses an efficient mechanism for dropping existing data but does not attempt to securely overwrite or otherwise make cached data unrecoverable. For applications that are sensitive to the disclosure of cached data in between user sessions, we strongly recommend not enabling persistence at all. |
+| [collection(firestore, path, pathSegments)](./firestore_.md#collection) | Gets a CollectionReference instance that refers to the collection at the specified absolute path. |
+| [collectionGroup(firestore, collectionId)](./firestore_.md#collectiongroup) | Creates and returns a new Query instance that includes all documents in the database that are contained in a collection or subcollection with the given collectionId. |
+| [connectFirestoreEmulator(firestore, host, port, options)](./firestore_.md#connectfirestoreemulator) | Modify this instance to communicate with the Cloud Firestore emulator.Note: This must be called before this instance has been used to do any operations. |
+| [disableNetwork(firestore)](./firestore_.md#disablenetwork) | Disables network usage for this instance. It can be re-enabled via [enableNetwork()](./firestore_.md#enablenetwork). While the network is disabled, any snapshot listeners, getDoc() or getDocs() calls will return results from cache, and any write operations will be queued until the network is restored. |
+| [doc(firestore, path, pathSegments)](./firestore_.md#doc) | Gets a DocumentReference instance that refers to the document at the specified absolute path. |
+| [enableIndexedDbPersistence(firestore, persistenceSettings)](./firestore_.md#enableindexeddbpersistence) | Attempts to enable persistent storage, if possible.Must be called before any other functions (other than [initializeFirestore()](./firestore_.md#initializefirestore), [getFirestore()](./firestore_.md#getfirestore) or [clearIndexedDbPersistence()](./firestore_.md#clearindexeddbpersistence).If this fails, enableIndexedDbPersistence() will reject the promise it returns. Note that even after this failure, the [Firestore](./firestore_.firestore.md#firestore_class) instance will remain usable, however offline persistence will be disabled.There are several reasons why this can fail, which can be identified by the code on the error.\* failed-precondition: The app is already open in another browser tab. \* unimplemented: The browser is incompatible with the offline persistence implementation. |
+| [enableMultiTabIndexedDbPersistence(firestore)](./firestore_.md#enablemultitabindexeddbpersistence) | Attempts to enable multi-tab persistent storage, if possible. If enabled across all tabs, all operations share access to local persistence, including shared execution of queries and latency-compensated local document updates across all connected instances.If this fails, enableMultiTabIndexedDbPersistence() will reject the promise it returns. Note that even after this failure, the [Firestore](./firestore_.firestore.md#firestore_class) instance will remain usable, however offline persistence will be disabled.There are several reasons why this can fail, which can be identified by the code on the error.\* failed-precondition: The app is already open in another browser tab and multi-tab is not enabled. \* unimplemented: The browser is incompatible with the offline persistence implementation. |
+| [enableNetwork(firestore)](./firestore_.md#enablenetwork) | Re-enables use of the network for this [Firestore](./firestore_.firestore.md#firestore_class) instance after a prior call to [disableNetwork()](./firestore_.md#disablenetwork). |
+| [loadBundle(firestore, bundleData)](./firestore_.md#loadbundle) | Loads a Firestore bundle into the local cache. |
+| [namedQuery(firestore, name)](./firestore_.md#namedquery) | Reads a Firestore [Query](./firestore_.query.md#query_class) from local cache, identified by the given name.The named queries are packaged into bundles on the server side (along with resulting documents), and loaded to local cache using loadBundle. Once in local cache, use this method to extract a [Query](./firestore_.query.md#query_class) by name. |
+| [onSnapshotsInSync(firestore, observer)](./firestore_.md#onsnapshotsinsync) | Attaches a listener for a snapshots-in-sync event. The snapshots-in-sync event indicates that all listeners affected by a given change have fired, even if a single server-generated change affects multiple listeners.NOTE: The snapshots-in-sync event only indicates that listeners are in sync with each other, but does not relate to whether those snapshots are in sync with the server. Use SnapshotMetadata in the individual listeners to determine if a snapshot is from the cache or the server. |
+| [onSnapshotsInSync(firestore, onSync)](./firestore_.md#onsnapshotsinsync) | Attaches a listener for a snapshots-in-sync event. The snapshots-in-sync event indicates that all listeners affected by a given change have fired, even if a single server-generated change affects multiple listeners.NOTE: The snapshots-in-sync event only indicates that listeners are in sync with each other, but does not relate to whether those snapshots are in sync with the server. Use SnapshotMetadata in the individual listeners to determine if a snapshot is from the cache or the server. |
+| [runTransaction(firestore, updateFunction, options)](./firestore_.md#runtransaction) | Executes the given updateFunction and then attempts to commit the changes applied within the transaction. If any document read within the transaction has changed, Cloud Firestore retries the updateFunction. If it fails to commit after 5 attempts, the transaction fails.The maximum number of writes allowed in a single transaction is 500. |
+| [setIndexConfiguration(firestore, configuration)](./firestore_.md#setindexconfiguration) | (BETA) Configures indexing for local query execution. Any previous index configuration is overridden. The Promise resolves once the index configuration has been persisted.The index entries themselves are created asynchronously. You can continue to use queries that require indexing even if the indices are not yet available. Query execution will automatically start using the index once the index entries have been written.Indexes are only supported with IndexedDb persistence. Invoke either enableIndexedDbPersistence() or enableMultiTabIndexedDbPersistence() before setting an index configuration. If IndexedDb is not enabled, any index configuration is ignored. |
+| [setIndexConfiguration(firestore, json)](./firestore_.md#setindexconfiguration) | (BETA) Configures indexing for local query execution. Any previous index configuration is overridden. The Promise resolves once the index configuration has been persisted.The index entries themselves are created asynchronously. You can continue to use queries that require indexing even if the indices are not yet available. Query execution will automatically start using the index once the index entries have been written.Indexes are only supported with IndexedDb persistence. Invoke either enableIndexedDbPersistence() or enableMultiTabIndexedDbPersistence() before setting an index configuration. If IndexedDb is not enabled, any index configuration is ignored.The method accepts the JSON format exported by the Firebase CLI (firebase firestore:indexes). If the JSON format is invalid, this method throws an error. |
+| [terminate(firestore)](./firestore_.md#terminate) | Terminates the provided [Firestore](./firestore_.firestore.md#firestore_class) instance.After calling terminate() only the clearIndexedDbPersistence() function may be used. Any other function will throw a FirestoreError.To restart after termination, create a new instance of FirebaseFirestore with [getFirestore()](./firestore_.md#getfirestore).Termination does not cancel any pending writes, and any promises that are awaiting a response from the server will not be resolved. If you have persistence enabled, the next time you start this instance, it will resume sending these writes to the server.Note: Under normal circumstances, calling terminate() is not required. This function is useful only when you want to force this instance to release all of its resources or in combination with clearIndexedDbPersistence() to ensure that all local state is destroyed between test runs. |
+| [waitForPendingWrites(firestore)](./firestore_.md#waitforpendingwrites) | Waits until all currently pending writes for the active user have been acknowledged by the backend.The returned promise resolves immediately if there are no outstanding writes. Otherwise, the promise waits for all previously issued writes (including those written in a previous app session), but it does not wait for writes that were added after the function is called. If you want to wait for additional writes, call waitForPendingWrites() again.Any outstanding waitForPendingWrites() promises are rejected during user changes. |
+| [writeBatch(firestore)](./firestore_.md#writebatch) | Creates a write batch, used for performing multiple writes as a single atomic operation. The maximum number of writes allowed in a single [WriteBatch](./firestore_.writebatch.md#writebatch_class) is 500.Unlike transactions, write batches are persisted offline and therefore are preferable when you don't need to condition your writes on read data. |
+| function() |
+| [deleteField()](./firestore_.md#deletefield) | Returns a sentinel for use with [updateDoc()](./firestore_lite.md#updatedoc) or [setDoc()](./firestore_lite.md#setdoc) with {merge: true} to mark a field for deletion. |
+| [documentId()](./firestore_.md#documentid) | Returns a special sentinel FieldPath to refer to the ID of a document. It can be used in queries to sort or filter by the document ID. |
+| [getFirestore()](./firestore_.md#getfirestore) | Returns the existing default [Firestore](./firestore_.firestore.md#firestore_class) instance that is associated with the default [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). If no instance exists, initializes a new instance with default settings. |
+| [serverTimestamp()](./firestore_.md#servertimestamp) | Returns a sentinel used with [setDoc()](./firestore_lite.md#setdoc) or [updateDoc()](./firestore_lite.md#updatedoc) to include a server-generated timestamp in the written data. |
+| function(elements...) |
+| [arrayRemove(elements)](./firestore_.md#arrayremove) | Returns a special value that can be used with [setDoc()](./firestore_.md#setdoc) or that tells the server to remove the given elements from any array value that already exists on the server. All instances of each element specified will be removed from the array. If the field being modified is not already an array it will be overwritten with an empty array. |
+| [arrayUnion(elements)](./firestore_.md#arrayunion) | Returns a special value that can be used with [setDoc()](./firestore_lite.md#setdoc) or [updateDoc()](./firestore_lite.md#updatedoc) that tells the server to union the given elements with any array value that already exists on the server. Each specified element that doesn't already exist in the array will be added to the end. If the field being modified is not already an array it will be overwritten with an array containing exactly the specified elements. |
+| function(fieldPath...) |
+| [orderBy(fieldPath, directionStr)](./firestore_.md#orderby) | Creates a [QueryOrderByConstraint](./firestore_.queryorderbyconstraint.md#queryorderbyconstraint_class) that sorts the query result by the specified field, optionally in descending order instead of ascending.Note: Documents that do not contain the specified field will not be present in the query result. |
+| [where(fieldPath, opStr, value)](./firestore_.md#where) | Creates a [QueryFieldFilterConstraint](./firestore_.queryfieldfilterconstraint.md#queryfieldfilterconstraint_class) that enforces that documents must contain the specified field and that the value should satisfy the relation constraint provided. |
+| function(fieldValues...) |
+| [endAt(fieldValues)](./firestore_.md#endat) | Creates a [QueryEndAtConstraint](./firestore_.queryendatconstraint.md#queryendatconstraint_class) that modifies the result set to end at the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query. |
+| [endBefore(fieldValues)](./firestore_.md#endbefore) | Creates a [QueryEndAtConstraint](./firestore_.queryendatconstraint.md#queryendatconstraint_class) that modifies the result set to end before the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query. |
+| [startAfter(fieldValues)](./firestore_.md#startafter) | Creates a [QueryStartAtConstraint](./firestore_.querystartatconstraint.md#querystartatconstraint_class) that modifies the result set to start after the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query. |
+| [startAt(fieldValues)](./firestore_.md#startat) | Creates a [QueryStartAtConstraint](./firestore_.querystartatconstraint.md#querystartatconstraint_class) that modifies the result set to start at the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query. |
+| function(left...) |
+| [aggregateQuerySnapshotEqual(left, right)](./firestore_.md#aggregatequerysnapshotequal) | Compares two AggregateQuerySnapshot instances for equality.Two AggregateQuerySnapshot instances are considered "equal" if they have underlying queries that compare equal, and the same data. |
+| [queryEqual(left, right)](./firestore_.md#queryequal) | Returns true if the provided queries point to the same collection and apply the same constraints. |
+| [refEqual(left, right)](./firestore_.md#refequal) | Returns true if the provided references are equal. |
+| [snapshotEqual(left, right)](./firestore_.md#snapshotequal) | Returns true if the provided snapshots are equal. |
+| function(limit...) |
+| [limit(limit)](./firestore_.md#limit) | Creates a [QueryLimitConstraint](./firestore_.querylimitconstraint.md#querylimitconstraint_class) that only returns the first matching documents. |
+| [limitToLast(limit)](./firestore_.md#limittolast) | Creates a [QueryLimitConstraint](./firestore_.querylimitconstraint.md#querylimitconstraint_class) that only returns the last matching documents.You must specify at least one orderBy clause for limitToLast queries, otherwise an exception will be thrown during execution. |
+| function(logLevel...) |
+| [setLogLevel(logLevel)](./firestore_.md#setloglevel) | Sets the verbosity of Cloud Firestore logs (debug, error, or silent). |
+| function(n...) |
+| [increment(n)](./firestore_.md#increment) | Returns a special value that can be used with [setDoc()](./firestore_lite.md#setdoc) or [updateDoc()](./firestore_lite.md#updatedoc) that tells the server to increment the field's current value by the given value.If either the operand or the current field value uses floating point precision, all arithmetic follows IEEE 754 semantics. If both values are integers, values outside of JavaScript's safe number range (Number.MIN_SAFE_INTEGER to Number.MAX_SAFE_INTEGER) are also subject to precision loss. Furthermore, once processed by the Firestore backend, all integer operations are capped between -2^63 and 2^63-1.If the current field value is not of type number, or if the field does not yet exist, the transformation sets the field to the given value. |
+| function(query...) |
+| [getCountFromServer(query)](./firestore_.md#getcountfromserver) | Calculates the number of documents in the result set of the given query, without actually downloading the documents.Using this function to count the documents is efficient because only the final count, not the documents' data, is downloaded. This function can even count the documents if the result set would be prohibitively large to download entirely (e.g. thousands of documents).The result received from the server is presented, unaltered, without considering any local state. That is, documents in the local cache are not taken into consideration, neither are local modifications not yet synchronized with the server. Previously-downloaded results, if any, are not used: every request using this source necessarily involves a round trip to the server. |
+| [getDocs(query)](./firestore_.md#getdocs) | Executes the query and returns the results as a QuerySnapshot.Note: getDocs() attempts to provide up-to-date data when possible by waiting for data from the server, but it may return cached data or fail if you are offline and the server cannot be reached. To specify this behavior, invoke [getDocsFromCache()](./firestore_.md#getdocsfromcache) or [getDocsFromServer()](./firestore_.md#getdocsfromserver). |
+| [getDocsFromCache(query)](./firestore_.md#getdocsfromcache) | Executes the query and returns the results as a QuerySnapshot from cache. Returns an empty result set if no documents matching the query are currently cached. |
+| [getDocsFromServer(query)](./firestore_.md#getdocsfromserver) | Executes the query and returns the results as a QuerySnapshot from the server. Returns an error if the network is not available. |
+| [onSnapshot(query, observer)](./firestore_.md#onsnapshot) | Attaches a listener for QuerySnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks. The listener can be cancelled by calling the function that is returned when onSnapshot is called.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(query, options, observer)](./firestore_.md#onsnapshot) | Attaches a listener for QuerySnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks. The listener can be cancelled by calling the function that is returned when onSnapshot is called.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(query, onNext, onError, onCompletion)](./firestore_.md#onsnapshot) | Attaches a listener for QuerySnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks. The listener can be cancelled by calling the function that is returned when onSnapshot is called.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(query, options, onNext, onError, onCompletion)](./firestore_.md#onsnapshot) | Attaches a listener for QuerySnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks. The listener can be cancelled by calling the function that is returned when onSnapshot is called.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [query(query, queryConstraints)](./firestore_.md#query) | Creates a new immutable instance of [Query](./firestore_.query.md#query_class) that is extended to also include additional query constraints. |
+| function(reference...) |
+| [addDoc(reference, data)](./firestore_.md#adddoc) | Add a new document to specified CollectionReference with the given data, assigning it a document ID automatically. |
+| [collection(reference, path, pathSegments)](./firestore_.md#collection) | Gets a CollectionReference instance that refers to a subcollection of reference at the the specified relative path. |
+| [collection(reference, path, pathSegments)](./firestore_.md#collection) | Gets a CollectionReference instance that refers to a subcollection of reference at the the specified relative path. |
+| [deleteDoc(reference)](./firestore_.md#deletedoc) | Deletes the document referred to by the specified DocumentReference. |
+| [doc(reference, path, pathSegments)](./firestore_.md#doc) | Gets a DocumentReference instance that refers to a document within reference at the specified relative path. If no path is specified, an automatically-generated unique ID will be used for the returned DocumentReference. |
+| [doc(reference, path, pathSegments)](./firestore_.md#doc) | Gets a DocumentReference instance that refers to a document within reference at the specified relative path. |
+| [getDoc(reference)](./firestore_.md#getdoc) | Reads the document referred to by this DocumentReference.Note: getDoc() attempts to provide up-to-date data when possible by waiting for data from the server, but it may return cached data or fail if you are offline and the server cannot be reached. To specify this behavior, invoke [getDocFromCache()](./firestore_.md#getdocfromcache) or [getDocFromServer()](./firestore_.md#getdocfromserver). |
+| [getDocFromCache(reference)](./firestore_.md#getdocfromcache) | Reads the document referred to by this DocumentReference from cache. Returns an error if the document is not currently cached. |
+| [getDocFromServer(reference)](./firestore_.md#getdocfromserver) | Reads the document referred to by this DocumentReference from the server. Returns an error if the network is not available. |
+| [onSnapshot(reference, observer)](./firestore_.md#onsnapshot) | Attaches a listener for DocumentSnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(reference, options, observer)](./firestore_.md#onsnapshot) | Attaches a listener for DocumentSnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(reference, onNext, onError, onCompletion)](./firestore_.md#onsnapshot) | Attaches a listener for DocumentSnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [onSnapshot(reference, options, onNext, onError, onCompletion)](./firestore_.md#onsnapshot) | Attaches a listener for DocumentSnapshot events. You may either pass individual onNext and onError callbacks or pass a single observer object with next and error callbacks.NOTE: Although an onCompletion callback can be provided, it will never be called because the snapshot stream is never-ending. |
+| [setDoc(reference, data)](./firestore_.md#setdoc) | Writes to the document referred to by this DocumentReference. If the document does not yet exist, it will be created. |
+| [setDoc(reference, data, options)](./firestore_.md#setdoc) | Writes to the document referred to by the specified DocumentReference. If the document does not yet exist, it will be created. If you provide merge or mergeFields, the provided data can be merged into an existing document. |
+| [updateDoc(reference, data)](./firestore_.md#updatedoc) | Updates fields in the document referred to by the specified DocumentReference. The update will fail if applied to a document that does not exist. |
+| [updateDoc(reference, field, value, moreFieldsAndValues)](./firestore_.md#updatedoc) | Updates fields in the document referred to by the specified DocumentReference The update will fail if applied to a document that does not exist.Nested fields can be updated by providing dot-separated field path strings or by providing FieldPath objects. |
+| function(snapshot...) |
+| [endAt(snapshot)](./firestore_.md#endat) | Creates a [QueryEndAtConstraint](./firestore_.queryendatconstraint.md#queryendatconstraint_class) that modifies the result set to end at the provided document (inclusive). The end position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of the query. |
+| [endBefore(snapshot)](./firestore_.md#endbefore) | Creates a [QueryEndAtConstraint](./firestore_.queryendatconstraint.md#queryendatconstraint_class) that modifies the result set to end before the provided document (exclusive). The end position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of the query. |
+| [startAfter(snapshot)](./firestore_.md#startafter) | Creates a [QueryStartAtConstraint](./firestore_.querystartatconstraint.md#querystartatconstraint_class) that modifies the result set to start after the provided document (exclusive). The starting position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of the query. |
+| [startAt(snapshot)](./firestore_.md#startat) | Creates a [QueryStartAtConstraint](./firestore_.querystartatconstraint.md#querystartatconstraint_class) that modifies the result set to start at the provided document (inclusive). The starting position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of this query. |
+
+## Classes
+
+| Class | Description |
+| --- | --- |
+| [AggregateField](./firestore_.aggregatefield.md#aggregatefield_class) | Represents an aggregation that can be performed by Firestore. |
+| [AggregateQuerySnapshot](./firestore_.aggregatequerysnapshot.md#aggregatequerysnapshot_class) | The results of executing an aggregation query. |
+| [Bytes](./firestore_.bytes.md#bytes_class) | An immutable object representing an array of bytes. |
+| [CollectionReference](./firestore_.collectionreference.md#collectionreference_class) | A CollectionReference object can be used for adding documents, getting document references, and querying for documents (using [query()](./firestore_.md#query)). |
+| [DocumentReference](./firestore_.documentreference.md#documentreference_class) | A DocumentReference refers to a document location in a Firestore database and can be used to write, read, or listen to the location. The document at the referenced location may or may not exist. |
+| [DocumentSnapshot](./firestore_.documentsnapshot.md#documentsnapshot_class) | A DocumentSnapshot contains data read from a document in your Firestore database. The data can be extracted with .data() or .get(<field>) to get a specific field.For a DocumentSnapshot that points to a non-existing document, any data access will return 'undefined'. You can use the exists() method to explicitly verify a document's existence. |
+| [FieldPath](./firestore_.fieldpath.md#fieldpath_class) | A FieldPath refers to a field in a document. The path may consist of a single field name (referring to a top-level field in the document), or a list of field names (referring to a nested field in the document).Create a FieldPath by providing field names. If more than one field name is provided, the path will point to a nested field in a document. |
+| [FieldValue](./firestore_.fieldvalue.md#fieldvalue_class) | Sentinel values that can be used when writing document fields with set() or update(). |
+| [Firestore](./firestore_.firestore.md#firestore_class) | The Cloud Firestore service interface.Do not call this constructor directly. Instead, use [getFirestore()](./firestore_.md#getfirestore). |
+| [FirestoreError](./firestore_.firestoreerror.md#firestoreerror_class) | An error returned by a Firestore operation. |
+| [GeoPoint](./firestore_.geopoint.md#geopoint_class) | An immutable object representing a geographic location in Firestore. The location is represented as latitude/longitude pair.Latitude values are in the range of \[-90, 90\]. Longitude values are in the range of \[-180, 180\]. |
+| [LoadBundleTask](./firestore_.loadbundletask.md#loadbundletask_class) | Represents the task of loading a Firestore bundle. It provides progress of bundle loading, as well as task completion and error events.The API is compatible with Promise<LoadBundleTaskProgress>. |
+| [Query](./firestore_.query.md#query_class) | A Query refers to a query which you can read or listen to. You can also construct refined Query objects by adding filters and ordering. |
+| [QueryConstraint](./firestore_.queryconstraint.md#queryconstraint_class) | A QueryConstraint is used to narrow the set of documents returned by a Firestore query. QueryConstraints are created by invoking [where()](./firestore_.md#where), [orderBy()](./firestore_.md#orderby), , , , , [limit()](./firestore_.md#limit), [limitToLast()](./firestore_.md#limittolast) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryConstraint. |
+| [QueryDocumentSnapshot](./firestore_.querydocumentsnapshot.md#querydocumentsnapshot_class) | A QueryDocumentSnapshot contains data read from a document in your Firestore database as part of a query. The document is guaranteed to exist and its data can be extracted with .data() or .get(<field>) to get a specific field.A QueryDocumentSnapshot offers the same API surface as a DocumentSnapshot. Since query results contain only existing documents, the exists property will always be true and data() will never return 'undefined'. |
+| [QueryEndAtConstraint](./firestore_.queryendatconstraint.md#queryendatconstraint_class) | A QueryEndAtConstraint is used to exclude documents from the end of a result set returned by a Firestore query. QueryEndAtConstraints are created by invoking [endAt()](./firestore_.md#endat) or [endBefore()](./firestore_.md#endbefore) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryEndAtConstraint. |
+| [QueryFieldFilterConstraint](./firestore_.queryfieldfilterconstraint.md#queryfieldfilterconstraint_class) | A QueryFieldFilterConstraint is used to narrow the set of documents returned by a Firestore query by filtering on one or more document fields. QueryFieldFilterConstraints are created by invoking [where()](./firestore_.md#where) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryFieldFilterConstraint. |
+| [QueryLimitConstraint](./firestore_.querylimitconstraint.md#querylimitconstraint_class) | A QueryLimitConstraint is used to limit the number of documents returned by a Firestore query. QueryLimitConstraints are created by invoking [limit()](./firestore_.md#limit) or [limitToLast()](./firestore_.md#limittolast) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryLimitConstraint. |
+| [QueryOrderByConstraint](./firestore_.queryorderbyconstraint.md#queryorderbyconstraint_class) | A QueryOrderByConstraint is used to sort the set of documents returned by a Firestore query. QueryOrderByConstraints are created by invoking [orderBy()](./firestore_.md#orderby) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryOrderByConstraint.Note: Documents that do not contain the orderBy field will not be present in the query result. |
+| [QuerySnapshot](./firestore_.querysnapshot.md#querysnapshot_class) | A QuerySnapshot contains zero or more DocumentSnapshot objects representing the results of a query. The documents can be accessed as an array via the docs property or enumerated using the forEach method. The number of documents can be determined via the empty and size properties. |
+| [QueryStartAtConstraint](./firestore_.querystartatconstraint.md#querystartatconstraint_class) | A QueryStartAtConstraint is used to exclude documents from the start of a result set returned by a Firestore query. QueryStartAtConstraints are created by invoking [startAt()](./firestore_.md#startat) or [startAfter()](./firestore_.md#startafter) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains this QueryStartAtConstraint. |
+| [SnapshotMetadata](./firestore_.snapshotmetadata.md#snapshotmetadata_class) | Metadata about a snapshot, describing the state of the snapshot. |
+| [Timestamp](./firestore_.timestamp.md#timestamp_class) | A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time.It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one. It is encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "smeared" so that no leap second table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.For examples and further specifications, refer to the [Timestamp definition](https://github.com/google/protobuf/blob/master/src/google/protobuf/timestamp.proto). |
+| [Transaction](./firestore_.transaction.md#transaction_class) | A reference to a transaction.The Transaction object passed to a transaction's updateFunction provides the methods to read and write data within the transaction context. See [runTransaction()](./firestore_.md#runtransaction). |
+| [WriteBatch](./firestore_.writebatch.md#writebatch_class) | A write batch, used to perform multiple writes as a single atomic unit.A WriteBatch object can be acquired by calling [writeBatch()](./firestore_.md#writebatch). It provides methods for adding writes to the write batch. None of the writes will be committed (or visible locally) until [WriteBatch.commit()](./firestore_.writebatch.md#writebatchcommit) is called. |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [AggregateSpec](./firestore_.aggregatespec.md#aggregatespec_interface) | A type whose property values are all AggregateField objects. |
+| [DocumentChange](./firestore_.documentchange.md#documentchange_interface) | A DocumentChange represents a change to the documents matching a query. It contains the document affected and the type of change that occurred. |
+| [DocumentData](./firestore_.documentdata.md#documentdata_interface) | Document data (for use with [setDoc()](./firestore_lite.md#setdoc)) consists of fields mapped to values. |
+| [FirestoreDataConverter](./firestore_.firestoredataconverter.md#firestoredataconverter_interface) | Converter used by withConverter() to transform user objects of type T into Firestore data.Using the converter allows you to specify generic type arguments when storing and retrieving objects from Firestore. |
+| [FirestoreSettings](./firestore_.firestoresettings.md#firestoresettings_interface) | Specifies custom configurations for your Cloud Firestore instance. You must set these before invoking any other methods. |
+| [Index](./firestore_.index.md#index_interface) | (BETA) The SDK definition of a Firestore index. |
+| [IndexConfiguration](./firestore_.indexconfiguration.md#indexconfiguration_interface) | (BETA) A list of Firestore indexes to speed up local query execution.See [JSON Format](https://firebase.google.com/docs/reference/firestore/indexes/#json_format) for a description of the format of the index definition. |
+| [IndexField](./firestore_.indexfield.md#indexfield_interface) | (BETA) A single field element in an index configuration. |
+| [LoadBundleTaskProgress](./firestore_.loadbundletaskprogress.md#loadbundletaskprogress_interface) | Represents a progress update or a final state from loading bundles. |
+| [PersistenceSettings](./firestore_.persistencesettings.md#persistencesettings_interface) | Settings that can be passed to enableIndexedDbPersistence() to configure Firestore persistence. |
+| [SnapshotListenOptions](./firestore_.snapshotlistenoptions.md#snapshotlistenoptions_interface) | An options object that can be passed to [onSnapshot()](./firestore_.md#onsnapshot) and [QuerySnapshot.docChanges()](./firestore_.querysnapshot.md#querysnapshotdocchanges) to control which types of changes to include in the result set. |
+| [SnapshotOptions](./firestore_.snapshotoptions.md#snapshotoptions_interface) | Options that configure how data is retrieved from a DocumentSnapshot (for example the desired behavior for server timestamps that have not yet been set to their final value). |
+| [TransactionOptions](./firestore_.transactionoptions.md#transactionoptions_interface) | Options to customize transaction behavior. |
+| [Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface) | A function returned by onSnapshot() that removes the listener when invoked. |
+
+## Variables
+
+| Variable | Description |
+| --- | --- |
+| [CACHE\_SIZE\_UNLIMITED](./firestore_.md#cache_size_unlimited) | Constant used to indicate the LRU garbage collection should be disabled. Set this value as the cacheSizeBytes on the settings passed to the [Firestore](./firestore_.firestore.md#firestore_class) instance. |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [AddPrefixToKeys](./firestore_.md#addprefixtokeys) | Returns a new map where every key is prefixed with the outer key appended to a dot. |
+| [AggregateFieldType](./firestore_.md#aggregatefieldtype) | The union of all AggregateField types that are supported by Firestore. |
+| [AggregateSpecData](./firestore_.md#aggregatespecdata) | A type whose keys are taken from an AggregateSpec, and whose values are the result of the aggregation performed by the corresponding AggregateField from the input AggregateSpec. |
+| [ChildUpdateFields](./firestore_.md#childupdatefields) | Helper for calculating the nested fields for a given type T1. This is needed to distribute union types such as undefined | {...} (happens for optional props) or {a: A} | {b: B}.In this use case, V is used to distribute the union types of T[K] on Record, since T[K] is evaluated as an expression and not distributed.See https://www.typescriptlang.org/docs/handbook/advanced-types.html\#distributive-conditional-types |
+| [DocumentChangeType](./firestore_.md#documentchangetype) | The type of a DocumentChange may be 'added', 'removed', or 'modified'. |
+| [FirestoreErrorCode](./firestore_.md#firestoreerrorcode) | The set of Firestore status codes. The codes are the same at the ones exposed by gRPC here: https://github.com/grpc/grpc/blob/master/doc/statuscodes.mdPossible values: - 'cancelled': The operation was cancelled (typically by the caller). - 'unknown': Unknown error or an error from a different error domain. - 'invalid-argument': Client specified an invalid argument. Note that this differs from 'failed-precondition'. 'invalid-argument' indicates arguments that are problematic regardless of the state of the system (e.g. an invalid field name). - 'deadline-exceeded': Deadline expired before operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. - 'not-found': Some requested document was not found. - 'already-exists': Some document that we attempted to create already exists. - 'permission-denied': The caller does not have permission to execute the specified operation. - 'resource-exhausted': Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. - 'failed-precondition': Operation was rejected because the system is not in a state required for the operation's execution. - 'aborted': The operation was aborted, typically due to a concurrency issue like transaction aborts, etc. - 'out-of-range': Operation was attempted past the valid range. - 'unimplemented': Operation is not implemented or not supported/enabled. - 'internal': Internal errors. Means some invariants expected by underlying system has been broken. If you see one of these errors, something is very broken. - 'unavailable': The service is currently unavailable. This is most likely a transient condition and may be corrected by retrying with a backoff. - 'data-loss': Unrecoverable data loss or corruption. - 'unauthenticated': The request does not have valid authentication credentials for the operation. |
+| [NestedUpdateFields](./firestore_.md#nestedupdatefields) | For each field (e.g. 'bar'), find all nested keys (e.g. {'bar.baz': T1, 'bar.qux': T2}). Intersect them together to make a single map containing all possible keys that are all marked as optional |
+| [OrderByDirection](./firestore_.md#orderbydirection) | The direction of a [orderBy()](./firestore_.md#orderby) clause is specified as 'desc' or 'asc' (descending or ascending). |
+| [PartialWithFieldValue](./firestore_.md#partialwithfieldvalue) | Similar to Typescript's Partial<T>, but allows nested fields to be omitted and FieldValues to be passed in as property values. |
+| [Primitive](./firestore_.md#primitive) | Primitive types. |
+| [QueryConstraintType](./firestore_.md#queryconstrainttype) | Describes the different query constraints available in this SDK. |
+| [QueryNonFilterConstraint](./firestore_.md#querynonfilterconstraint) | QueryNonFilterConstraint is a helper union type that represents QueryConstraints which are used to narrow or order the set of documents, but that do not explicitly filter on a document field. QueryNonFilterConstraints are created by invoking [orderBy()](./firestore_.md#orderby), , , , , [limit()](./firestore_.md#limit) or [limitToLast()](./firestore_.md#limittolast) and can then be passed to [query()](./firestore_.md#query) to create a new query instance that also contains the QueryConstraint. |
+| [SetOptions](./firestore_.md#setoptions) | An options object that configures the behavior of [setDoc()](./firestore_lite.md#setdoc), and calls. These calls can be configured to perform granular merges instead of overwriting the target documents in their entirety by providing a SetOptions with merge: true. |
+| [TaskState](./firestore_.md#taskstate) | Represents the state of bundle loading tasks.Both 'Error' and 'Success' are sinking state: task will abort or complete and there will be no more updates after they are reported. |
+| [UnionToIntersection](./firestore_.md#uniontointersection) | Given a union type U = T1 | T2 | ..., returns an intersected type (T1 & T2 & ...).Uses distributive conditional types and inference from conditional types. This works because multiple candidates for the same type variable in contra-variant positions causes an intersection type to be inferred. https://www.typescriptlang.org/docs/handbook/advanced-types.html\#type-inference-in-conditional-types https://stackoverflow.com/questions/50374908/transform-union-type-to-intersection-type |
+| [UpdateData](./firestore_.md#updatedata) | Update data (for use with [updateDoc()](./firestore_.md#updatedoc)) that consists of field paths (e.g. 'foo' or 'foo.baz') mapped to values. Fields that contain dots reference nested fields within the document. FieldValues can be passed in as property values. |
+| [WhereFilterOp](./firestore_.md#wherefilterop) | Filter conditions in a [where()](./firestore_.md#where) clause are specified using the strings '<', '<=', '==', '!=', '>=', '>', 'array-contains', 'in', 'array-contains-any', and 'not-in'. |
+| [WithFieldValue](./firestore_.md#withfieldvalue) | Allows FieldValues to be passed in as a property value while maintaining type safety. |
+
+## getFirestore()
+
+Returns the existing default [Firestore](./firestore_.firestore.md#firestore_class) instance that is associated with the provided [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface). If no instance exists, initializes a new instance with default settings.
+
+Signature:
+
+```typescript
+export declare function getFirestore(app: FirebaseApp): Firestore;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) instance that the returned [Firestore](./firestore_.firestore.md#firestore_class) instance is associated with. |
+
+Returns:
+
+[Firestore](./firestore_.firestore.md#firestore_class)
+
+The [Firestore](./firestore_.firestore.md#firestore_class) instance of the provided app.
+
+## initializeFirestore()
+
+Initializes a new instance of [Firestore](./firestore_.firestore.md#firestore_class) with the provided settings. Can only be called before any other function, including [getFirestore()](./firestore_.md#getfirestore). If the custom settings are empty, this function is equivalent to calling [getFirestore()](./firestore_.md#getfirestore).
+
+Signature:
+
+```typescript
+export declare function initializeFirestore(app: FirebaseApp, settings: FirestoreSettings, databaseId?: string): Firestore;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) with which the [Firestore](./firestore_.firestore.md#firestore_class) instance will be associated. |
+| settings | [FirestoreSettings](./firestore_.firestoresettings.md#firestoresettings_interface) | A settings object to configure the [Firestore](./firestore_.firestore.md#firestore_class) instance. |
+| databaseId | string | The name of database. |
+
+Returns:
+
+[Firestore](./firestore_.firestore.md#firestore_class)
+
+A newly initialized [Firestore](./firestore_.firestore.md#firestore_class) instance.
+
+## clearIndexedDbPersistence()
+
+Clears the persistent storage. This includes pending writes and cached documents.
+
+Must be called while the [Firestore](./firestore_.firestore.md#firestore_class) instance is not started (after the app is terminated or when the app is first initialized). On startup, this function must be called before other functions (other than [initializeFirestore()](./firestore_.md#initializefirestore) or [getFirestore()](./firestore_.md#getfirestore))). If the [Firestore](./firestore_.firestore.md#firestore_class) instance is still running, the promise will be rejected with the error code of `failed-precondition`.
+
+Note: `clearIndexedDbPersistence()` is primarily intended to help write reliable tests that use Cloud Firestore. It uses an efficient mechanism for dropping existing data but does not attempt to securely overwrite or otherwise make cached data unrecoverable. For applications that are sensitive to the disclosure of cached data in between user sessions, we strongly recommend not enabling persistence at all.
+
+Signature:
+
+```typescript
+export declare function clearIndexedDbPersistence(firestore: Firestore): PromiseFirestore instance. |
+| path | string | A slash-separated path to a collection. |
+| pathSegments | string\[\] | Additional path segments to apply relative to the first argument. |
+
+Returns:
+
+[CollectionReference](./firestore_.collectionreference.md#collectionreference_class)<[DocumentData](./firestore_.documentdata.md#documentdata_interface)>
+
+The `CollectionReference` instance.
+
+## Exceptions
+
+If the final path has an even number of segments and does not point to a collection.
+
+## collectionGroup()
+
+Creates and returns a new `Query` instance that includes all documents in the database that are contained in a collection or subcollection with the given `collectionId`.
+
+Signature:
+
+```typescript
+export declare function collectionGroup(firestore: Firestore, collectionId: string): QueryFirestore instance. |
+| collectionId | string | Identifies the collections to query over. Every collection or subcollection with this ID as the last segment of its path will be included. Cannot contain a slash. |
+
+Returns:
+
+[Query](./firestore_.query.md#query_class)<[DocumentData](./firestore_.documentdata.md#documentdata_interface)>
+
+The created `Query`.
+
+## connectFirestoreEmulator()
+
+Modify this instance to communicate with the Cloud Firestore emulator.
+
+Note: This must be called before this instance has been used to do any operations.
+
+Signature:
+
+```typescript
+export declare function connectFirestoreEmulator(firestore: Firestore, host: string, port: number, options?: {
+ mockUserToken?: EmulatorMockTokenOptions | string;
+}): void;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| firestore | [Firestore](./firestore_.firestore.md#firestore_class) | The Firestore instance to configure to connect to the emulator. |
+| host | string | the emulator host (ex: localhost). |
+| port | number | the emulator port (ex: 9000). |
+| options | { mockUserToken?: [EmulatorMockTokenOptions](./util.md#emulatormocktokenoptions) \| string; } | |
+
+Returns:
+
+void
+
+## disableNetwork()
+
+Disables network usage for this instance. It can be re-enabled via [enableNetwork()](./firestore_.md#enablenetwork). While the network is disabled, any snapshot listeners, `getDoc()` or `getDocs()` calls will return results from cache, and any write operations will be queued until the network is restored.
+
+Signature:
+
+```typescript
+export declare function disableNetwork(firestore: Firestore): PromiseFirestore instance. |
+| path | string | A slash-separated path to a document. |
+| pathSegments | string\[\] | Additional path segments that will be applied relative to the first argument. |
+
+Returns:
+
+[DocumentReference](./firestore_.documentreference.md#documentreference_class)<[DocumentData](./firestore_.documentdata.md#documentdata_interface)>
+
+The `DocumentReference` instance.
+
+## Exceptions
+
+If the final path has an odd number of segments and does not point to a document.
+
+## enableIndexedDbPersistence()
+
+Attempts to enable persistent storage, if possible.
+
+Must be called before any other functions (other than [initializeFirestore()](./firestore_.md#initializefirestore), [getFirestore()](./firestore_.md#getfirestore) or [clearIndexedDbPersistence()](./firestore_.md#clearindexeddbpersistence).
+
+If this fails, `enableIndexedDbPersistence()` will reject the promise it returns. Note that even after this failure, the [Firestore](./firestore_.firestore.md#firestore_class) instance will remain usable, however offline persistence will be disabled.
+
+There are several reasons why this can fail, which can be identified by the `code` on the error.
+
+\* failed-precondition: The app is already open in another browser tab. \* unimplemented: The browser is incompatible with the offline persistence implementation.
+
+Signature:
+
+```typescript
+export declare function enableIndexedDbPersistence(firestore: Firestore, persistenceSettings?: PersistenceSettings): PromiseArrayBuffer, ReadableStream<Uint8Array> or string. |
+
+Returns:
+
+[LoadBundleTask](./firestore_.loadbundletask.md#loadbundletask_class)
+
+A `LoadBundleTask` object, which notifies callers with progress updates, and completion or error events. It can be used as a `Promisenext and error callbacks. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshotsInSync()
+
+Attaches a listener for a snapshots-in-sync event. The snapshots-in-sync event indicates that all listeners affected by a given change have fired, even if a single server-generated change affects multiple listeners.
+
+NOTE: The snapshots-in-sync event only indicates that listeners are in sync with each other, but does not relate to whether those snapshots are in sync with the server. Use `SnapshotMetadata` in the individual listeners to determine if a snapshot is from the cache or the server.
+
+Signature:
+
+```typescript
+export declare function onSnapshotsInSync(firestore: Firestore, onSync: () => void): Unsubscribe;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| firestore | [Firestore](./firestore_.firestore.md#firestore_class) | The Firestore instance for synchronizing snapshots. |
+| onSync | () => void | A callback to be called every time all snapshot listeners are in sync with each other. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## runTransaction()
+
+Executes the given `updateFunction` and then attempts to commit the changes applied within the transaction. If any document read within the transaction has changed, Cloud Firestore retries the `updateFunction`. If it fails to commit after 5 attempts, the transaction fails.
+
+The maximum number of writes allowed in a single transaction is 500.
+
+Signature:
+
+```typescript
+export declare function runTransactionAggregateQuerySnapshot to compare. |
+| right | [AggregateQuerySnapshot](./firestore_.aggregatequerysnapshot.md#aggregatequerysnapshot_class)<T> | The second AggregateQuerySnapshot to compare. |
+
+Returns:
+
+boolean
+
+`true` if the objects are "equal", as defined above, or `false` otherwise.
+
+## queryEqual()
+
+Returns true if the provided queries point to the same collection and apply the same constraints.
+
+Signature:
+
+```typescript
+export declare function queryEqualQuery to compare. |
+| right | [Query](./firestore_.query.md#query_class)<T> | A Query to compare. |
+
+Returns:
+
+boolean
+
+true if the references point to the same location in the same Firestore database.
+
+## refEqual()
+
+Returns true if the provided references are equal.
+
+Signature:
+
+```typescript
+export declare function refEqual
|
+
+Returns:
+
+void
+
+## increment()
+
+Returns a special value that can be used with [setDoc()](./firestore_lite.md#setdoc) or [updateDoc()](./firestore_lite.md#updatedoc) that tells the server to increment the field's current value by the given value.
+
+If either the operand or the current field value uses floating point precision, all arithmetic follows IEEE 754 semantics. If both values are integers, values outside of JavaScript's safe number range (`Number.MIN_SAFE_INTEGER` to `Number.MAX_SAFE_INTEGER`) are also subject to precision loss. Furthermore, once processed by the Firestore backend, all integer operations are capped between -2^63 and 2^63-1.
+
+If the current field value is not of type `number`, or if the field does not yet exist, the transformation sets the field to the given value.
+
+Signature:
+
+```typescript
+export declare function increment(n: number): FieldValue;
+```
+
+### Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| n | number | The value to increment by. |
+
+Returns:
+
+[FieldValue](./firestore_.fieldvalue.md#fieldvalue_class)
+
+The `FieldValue` sentinel for use in a call to `setDoc()` or `updateDoc()`
+
+## getCountFromServer()
+
+Calculates the number of documents in the result set of the given query, without actually downloading the documents.
+
+Using this function to count the documents is efficient because only the final count, not the documents' data, is downloaded. This function can even count the documents if the result set would be prohibitively large to download entirely (e.g. thousands of documents).
+
+The result received from the server is presented, unaltered, without considering any local state. That is, documents in the local cache are not taken into consideration, neither are local modifications not yet synchronized with the server. Previously-downloaded results, if any, are not used: every request using this source necessarily involves a round trip to the server.
+
+Signature:
+
+```typescript
+export declare function getCountFromServer(query: Querydebug for the most verbose logging level, primarily for debugging.error to log errors only.silent to turn off logging.next and error callbacks. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `QuerySnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks. The listener can be cancelled by calling the function that is returned when `onSnapshot` is called.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotnext and error callbacks. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `QuerySnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks. The listener can be cancelled by calling the function that is returned when `onSnapshot` is called.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotQuerySnapshot is available. |
+| onError | (error: [FirestoreError](./firestore_.firestoreerror.md#firestoreerror_class)) => void | A callback to be called if the listen fails or is cancelled. No further callbacks will occur. |
+| onCompletion | () => void | Can be provided, but will not be called since streams are never ending. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `QuerySnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks. The listener can be cancelled by calling the function that is returned when `onSnapshot` is called.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotQuerySnapshot is available. |
+| onError | (error: [FirestoreError](./firestore_.firestoreerror.md#firestoreerror_class)) => void | A callback to be called if the listen fails or is cancelled. No further callbacks will occur. |
+| onCompletion | () => void | Can be provided, but will not be called since streams are never ending. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## query()
+
+Creates a new immutable instance of [Query](./firestore_.query.md#query_class) that is extended to also include additional query constraints.
+
+Signature:
+
+```typescript
+export declare function querynext and error callbacks. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `DocumentSnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotnext and error callbacks. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `DocumentSnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotDocumentSnapshot is available. |
+| onError | (error: [FirestoreError](./firestore_.firestoreerror.md#firestoreerror_class)) => void | A callback to be called if the listen fails or is cancelled. No further callbacks will occur. |
+| onCompletion | () => void | Can be provided, but will not be called since streams are never ending. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## onSnapshot()
+
+Attaches a listener for `DocumentSnapshot` events. You may either pass individual `onNext` and `onError` callbacks or pass a single observer object with `next` and `error` callbacks.
+
+NOTE: Although an `onCompletion` callback can be provided, it will never be called because the snapshot stream is never-ending.
+
+Signature:
+
+```typescript
+export declare function onSnapshotDocumentSnapshot is available. |
+| onError | (error: [FirestoreError](./firestore_.firestoreerror.md#firestoreerror_class)) => void | A callback to be called if the listen fails or is cancelled. No further callbacks will occur. |
+| onCompletion | () => void | Can be provided, but will not be called since streams are never ending. |
+
+Returns:
+
+[Unsubscribe](./firestore_.unsubscribe.md#unsubscribe_interface)
+
+An unsubscribe function that can be called to cancel the snapshot listener.
+
+## setDoc()
+
+Writes to the document referred to by this `DocumentReference`. If the document does not yet exist, it will be created.
+
+Signature:
+
+```typescript
+export declare function setDoc