From 293993bef1bb0a2a341539068300bf552279ac2b Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Wed, 26 Aug 2026 08:09:28 -0500 Subject: [PATCH 1/2] docs: fix broken links found by docs.page check --- docs/analytics/screen-tracking.mdx | 4 +-- docs/auth/multi-factor-auth.mdx | 11 ++++--- docs/auth/phone-auth.mdx | 4 +-- docs/auth/usage/index.mdx | 8 ++--- docs/database/presence-detection.mdx | 4 +-- docs/database/usage/index.mdx | 10 +++---- docs/firestore/usage/index.mdx | 42 +++++++++++++-------------- docs/messaging/server-integration.mdx | 4 +-- docs/messaging/usage/index.mdx | 6 ++-- docs/migrating-to-v26.mdx | 2 +- docs/releases/v6.4.0.mdx | 2 +- docs/storage/usage/index.mdx | 2 +- docs/typescript.mdx | 2 +- 13 files changed, 50 insertions(+), 51 deletions(-) diff --git a/docs/analytics/screen-tracking.mdx b/docs/analytics/screen-tracking.mdx index 441f9dc714..aa5242f4ee 100644 --- a/docs/analytics/screen-tracking.mdx +++ b/docs/analytics/screen-tracking.mdx @@ -13,7 +13,7 @@ therefore there is no "one fits all" solution to screen tracking. The [React Navigation](https://reactnavigation.org/) library allows for various navigation techniques such as Stack, Tab, Native or even custom navigation. The `NavigationContainer` component which the library exposes provides -access to the current navigation state when a screen changes, allowing you to use the [`logScreenView`](https://invertase.github.io/react-native-firebase/_react-native-firebase/analytics/modular/logScreenView.html) +access to the current navigation state when a screen changes, allowing you to use the [`logScreenView`](https://reference.rnfirebase.io/_react-native-firebase/analytics/index/logScreenView.html) method the Analytics library provides: ```jsx @@ -57,7 +57,7 @@ documentation on the React Navigation website. The [`wix/react-native-navigation`](https://github.com/wix/react-native-navigation) provides 100% native platform navigation for React Native apps. To manually track screens, you need to setup a `componentDidAppear` event listener and manually call the -[`logScreenView`](https://invertase.github.io/react-native-firebase/_react-native-firebase/analytics/modular/logScreenView.html) method the Analytics library provides: +[`logScreenView`](https://reference.rnfirebase.io/_react-native-firebase/analytics/index/logScreenView.html) method the Analytics library provides: ```js import { getAnalytics, logScreenView } from '@react-native-firebase/analytics'; diff --git a/docs/auth/multi-factor-auth.mdx b/docs/auth/multi-factor-auth.mdx index 47f1e9c47b..cb659240c6 100644 --- a/docs/auth/multi-factor-auth.mdx +++ b/docs/auth/multi-factor-auth.mdx @@ -6,7 +6,7 @@ previous: /auth/oidc-auth --- > Before a user can enroll a second factor they need to verify their email. See -> [`User`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/User.html#sendemailverification) interface is returned. +> [`sendEmailVerification`](https://reference.rnfirebase.io/_react-native-firebase/auth/sendEmailVerification.html). # TOTP MFA @@ -26,7 +26,7 @@ to enable multi-factor authentication for your project and verify your app. ## Enroll a new factor -Begin by obtaining a [`MultiFactorUser`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/MultiFactorUser.html) +Begin by obtaining a [`MultiFactorUser`](https://reference.rnfirebase.io/_react-native-firebase/auth/MultiFactorUser.html) instance for the current user. This is the entry point for most multi-factor operations: @@ -64,7 +64,7 @@ const multiFactorAssertion = PhoneMultiFactorGenerator.assertion(cred); await multiFactorUser.enroll(multiFactorAssertion, 'Optional display name for the user'); ``` -You can inspect [`User#multiFactor`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/User.html#multifactor) for +You can inspect [`User#multiFactor`](https://reference.rnfirebase.io/_react-native-firebase/auth/User.html#multifactor) for information about the user's enrolled factors. ## Sign-in flow using phone multi-factor @@ -98,7 +98,7 @@ signInWithEmailAndPassword(getAuth(), email, password) ``` Using the error object you can obtain a -[`MultiFactorResolver`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/MultiFactorResolver.html) instance and +[`MultiFactorResolver`](https://reference.rnfirebase.io/_react-native-firebase/auth/MultiFactorResolver.html) instance and continue the flow: ```js @@ -196,6 +196,5 @@ signInWithEmailAndPassword(getAuth(), email, password) ## Testing You can define test phone numbers and corresponding verification codes. The -official[official -guide](https://cloud.google.com/identity-platform/docs/ios/mfa#enabling_multi-factor_authentication) +[official guide](https://cloud.google.com/identity-platform/docs/ios/mfa#enabling_multi-factor_authentication) contains more information on setting this up. diff --git a/docs/auth/phone-auth.mdx b/docs/auth/phone-auth.mdx index ed11388772..dbad60834c 100644 --- a/docs/auth/phone-auth.mdx +++ b/docs/auth/phone-auth.mdx @@ -23,13 +23,13 @@ Ensure that all parts of step 1 and 2 from [the official firebase iOS phone auth Phone auth requires app verification, and the automatic app verification process uses data-only firebase cloud messages to the app. Data-only cloud messaging only works on real devices where the app has background refresh enabled. If background refresh disabled, or if using the Simulator, app verification uses the fallback reCAPTCHA flow allowing you to check if it is configured correctly. -For reliable automated testing, you may want to disable both automatic and fallback reCAPTCHA app verification for your app. To do this, [you may disable app verification in AuthSettings](https://reference.rnfirebase.io/_react-native-firebase/auth/FirebaseAuthTypes/AuthSettings.html#appVerificationDisabledForTesting) prior to calling any phone auth methods. +For reliable automated testing, you may want to disable both automatic and fallback reCAPTCHA app verification for your app. To do this, [you may disable app verification in AuthSettings](https://reference.rnfirebase.io/_react-native-firebase/auth/AuthSettings.html#appverificationdisabledfortesting) prior to calling any phone auth methods. # Android Setup Ensure that all parts of step 1 and 2 from [the official firebase Android phone auth docs](https://firebase.google.com/docs/auth/android/phone-auth#enable-phone-number-sign-in-for-your-firebase-project) have been followed. -To bypass Play Integrity for manual testing, you may [force reCAPTCHA to be used](https://reference.rnfirebase.io/_react-native-firebase/auth/FirebaseAuthTypes/AuthSettings.html#appVerificationDisabledForTesting) prior to calling [`verifyPhoneNumber`](https://reference.rnfirebase.io/_react-native-firebase/auth/verifyPhoneNumber.html). +To bypass Play Integrity for manual testing, you may [force reCAPTCHA to be used](https://reference.rnfirebase.io/_react-native-firebase/auth/AuthSettings.html#appverificationdisabledfortesting) prior to calling [`verifyPhoneNumber`](https://reference.rnfirebase.io/_react-native-firebase/auth/verifyPhoneNumber.html). # Expo Setup diff --git a/docs/auth/usage/index.mdx b/docs/auth/usage/index.mdx index 3391b15f13..b0560d76ee 100644 --- a/docs/auth/usage/index.mdx +++ b/docs/auth/usage/index.mdx @@ -95,7 +95,7 @@ function App() { ``` If the `user` returned within the handler is `null` we assume the user is currently signed-out, otherwise they are -signed-in and a [`User`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/User.html) interface is returned. +signed-in and a [`User`](https://reference.rnfirebase.io/_react-native-firebase/auth/User.html) interface is returned. The `onAuthStateChanged` method also returns an unsubscriber function which allows us to stop listening for events whenever the hook is no longer in use. @@ -134,7 +134,7 @@ signInAnonymously(getAuth()) ``` Once successfully signed in, any [`onAuthStateChanged`](/auth/usage#listening-to-authentication-state) listeners will trigger an event -with the [`User`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/User.html) details. +with the [`User`](https://reference.rnfirebase.io/_react-native-firebase/auth/User.html) details. In case any errors occur, the module provides support for identifying what specifically went wrong by attaching a code to the error. For a full list of error codes available, view the [Firebase documentation](https://firebase.google.com/docs/reference/js/auth.md#autherrorcodes). @@ -171,14 +171,14 @@ createUserWithEmailAndPassword(getAuth(), 'jane.doe@example.com', 'SuperSecretPa ``` Once successfully created and/or signed in, any [`onAuthStateChanged`](/auth/usage#listening-to-authentication-state) listeners will trigger an event -with the [`User`](https://invertase.github.io/react-native-firebase/_react-native-firebase/auth/FirebaseAuthTypes/User.html) details. +with the [`User`](https://reference.rnfirebase.io/_react-native-firebase/auth/User.html) details. In case any errors occur, the module provides support for identifying what specifically went wrong by attaching a code to the error. For a full list of error codes available, view the [Firebase documentation](https://firebase.google.com/docs/reference/js/auth.md#autherrorcodes). ## Authenticate with backend server -The user's token should be used for authentication with your backend systems. The token is fetched with the [getIdToken](https://reference.rnfirebase.io/_react-native-firebase/auth/FirebaseAuthTypes/User.html#getIdToken) method. As mentioned in the [Firebase documentation](https://firebase.google.com/docs/auth/web/manage-users#get_a_users_profile), the uid should not be used for authentication. +The user's token should be used for authentication with your backend systems. The token is fetched with the [getIdToken](https://reference.rnfirebase.io/_react-native-firebase/auth/getIdToken.html) method. As mentioned in the [Firebase documentation](https://firebase.google.com/docs/auth/web/manage-users#get_a_users_profile), the uid should not be used for authentication. ## Signing out diff --git a/docs/database/presence-detection.mdx b/docs/database/presence-detection.mdx index fb37e43ceb..1058936839 100644 --- a/docs/database/presence-detection.mdx +++ b/docs/database/presence-detection.mdx @@ -49,9 +49,9 @@ If the device suddenly goes offline, or is quit, the app can no longer execute c Realtime Database API provides a way to execute code on the Firebase servers whenever the connection between an app & server is lost. -The `onDisconnect` function returns a new [`OnDisconnect`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/OnDisconnect.html) instance. This instance +The `onDisconnect` function returns a new [`OnDisconnect`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/OnDisconnect.html) instance. This instance provides functionality to remove or set data whenever a client disconnects. Using the -[`remove`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/OnDisconnect.html#remove) method we can remove the node on the database if the client disconnects: +[`remove`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/OnDisconnect.html#remove) method we can remove the node on the database if the client disconnects: ```jsx import React, { useEffect } from 'react'; diff --git a/docs/database/usage/index.mdx b/docs/database/usage/index.mdx index 8364a67f0c..0d2c3dede2 100644 --- a/docs/database/usage/index.mdx +++ b/docs/database/usage/index.mdx @@ -50,7 +50,7 @@ To learn more, view the [Firebase Realtime Database documentation](https://fireb A core concept to understanding Realtime Database are references - a reference to a specific node within your database. A node can be a specific property or sub-nodes. -To create a [`Reference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/Reference.html), use the `ref` function: +To create a [`Reference`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/DatabaseReference.html), use the `ref` function: ```js import { getDatabase, ref } from '@react-native-firebase/database'; @@ -71,7 +71,7 @@ const reference = ref(db, '/users/123'); ## Reading data The Realtime Data provides the ability to read the value of a reference as a one-time read, or realtime changes to the node. -When a value is read from the database, the API returns a [`DataSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/DataSnapshot.html). +When a value is read from the database, the API returns a [`DataSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/DataSnapshot.html). The snapshot includes information such as whether the reference node exists, it's value or any children the node has and more. @@ -128,7 +128,7 @@ function User({ userId }) { The above example demonstrates how to subscribe to events whenever a value within the node changes. In some cases, you may need to only subscribe to events whenever a child node is added/changed/moved/removed. This can be achieved using -a different listener such as [`onChildAdded`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/EventType.html). +a different listener such as [`onChildAdded`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/EventType.html). If you are listening to a node with many children, only listening to data you care about helps reduce network bandwidth and speeds up your application. @@ -253,7 +253,7 @@ update(ref(db, '/users/123'), { Currently the examples have only demonstrated working with known reference node keys (e.g. `/users/123`). In some cases, you may not have a suitable id or may want Firebase to automatically create a node with a generated key. The `push` function -returns a [`ThenableReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/ThenableReference.html), allowing you to observe a node before it is +returns a [`ThenableReference`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/ThenableReference.html), allowing you to observe a node before it is sent to remote Firebase database. `push` will automatically generate a new key if one is not provided: @@ -329,7 +329,7 @@ onPostLike('567').then(transaction => { ``` Once the transaction is successful, a promise is resolved with a value containing whether the operation committed on the remote -database and the new [`DataSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/database/FirebaseDatabaseTypes/DataSnapshot.html) containing the new value. +database and the new [`DataSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/database/types/database/DataSnapshot.html) containing the new value. # Securing data diff --git a/docs/firestore/usage/index.mdx b/docs/firestore/usage/index.mdx index 2abd98c64f..1d1f324809 100644 --- a/docs/firestore/usage/index.mdx +++ b/docs/firestore/usage/index.mdx @@ -59,7 +59,7 @@ const db = getFirestore(); const usersCollection = collection(db, 'Users'); ``` -The `collection` function returns a [`CollectionReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/CollectionReference.html) class, which provides +The `collection` function returns a [`CollectionReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/CollectionReference.html) class, which provides properties and methods to query and fetch the data from Cloud Firestore. We can also directly reference a single document on the collection by calling the `doc` function: @@ -72,11 +72,11 @@ const db = getFirestore(); const userDocument = doc(collection(db, 'Users'), 'ABC'); ``` -The `doc` function returns a [`DocumentReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentReference.html). +The `doc` function returns a [`DocumentReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentReference.html). A document can contain different types of data, including scalar values (strings, booleans, numbers), arrays (lists) and -objects (maps) along with specific Cloud Firestore data such as [Timestamps](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/Timestamp.html), -[GeoPoints](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/GeoPoint.html), [Bytes](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/Bytes.html#frombase64string) and more. +objects (maps) along with specific Cloud Firestore data such as [Timestamps](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/Timestamp.html), +[GeoPoints](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/GeoPoint.html), [Bytes](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/Bytes.html#frombase64string) and more. ## Read Data @@ -85,8 +85,8 @@ realtime updates when the data within a query changes. ### One-time read -To read a collection or document once, call `getDocs` on a [`CollectionReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/CollectionReference.html) -or `getDoc` on a [`DocumentReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentReference.html): +To read a collection or document once, call `getDocs` on a [`CollectionReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/CollectionReference.html) +or `getDoc` on a [`DocumentReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentReference.html): ```js import { collection, doc, getDoc, getDocs, getFirestore } from '@react-native-firebase/firestore'; @@ -142,14 +142,14 @@ Realtime changes via `onSnapshot` can be applied to both collections and documen ### Snapshots -Once a query has returned a result, Firestore returns either a [`QuerySnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html) (for -collection queries) or a [`DocumentSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) (for document queries). These snapshots +Once a query has returned a result, Firestore returns either a [`QuerySnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html) (for +collection queries) or a [`DocumentSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) (for document queries). These snapshots provide the ability to view the data, view query metadata (such as whether the data was from local cache), whether the document exists or not and more. #### `QuerySnapshot` -A [`QuerySnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html) returned from a collection query allows you to inspect the collection, +A [`QuerySnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html) returned from a collection query allows you to inspect the collection, such as how many documents exist within it, access to the documents within the collection, any changes since the last query and more. @@ -169,13 +169,13 @@ getDocs(collection(db, 'Users')).then(querySnapshot => { }); ``` -Each child document of a `QuerySnapshot` is a [`QueryDocumentSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/QueryDocumentSnapshot.html), which +Each child document of a `QuerySnapshot` is a [`QueryDocumentSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/QueryDocumentSnapshot.html), which allows you to access specific information about a document (see below). #### `DocumentSnapshot` -A [`DocumentSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) is returned from a query to a specific document, or as part -of the documents returned via a [`QuerySnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html). The snapshot provides the ability +A [`DocumentSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) is returned from a query to a specific document, or as part +of the documents returned via a [`QuerySnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/QuerySnapshot.html). The snapshot provides the ability to view a documents data, metadata and whether a document actually exists. To view a documents data, call the `data` method on the snapshot: @@ -371,7 +371,7 @@ getDocs(query(collection(db, 'Users'), orderBy('age', 'desc'), startAt(18), endA The above query orders the users by age in descending order, but only returns users whose age is between 18 and 30. -You can further specify a [`DocumentSnapshot`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) instead of a specific value. For example: +You can further specify a [`DocumentSnapshot`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentSnapshot.html) instead of a specific value. For example: ```js import { @@ -413,7 +413,7 @@ For a more in-depth look at what is possible when writing data to Firestore plea ## Adding documents -To add a new document to a collection, use `addDoc` with a [`CollectionReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/CollectionReference.html): +To add a new document to a collection, use `addDoc` with a [`CollectionReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/CollectionReference.html): ```js import { addDoc, collection, getFirestore } from '@react-native-firebase/firestore'; @@ -429,7 +429,7 @@ addDoc(collection(db, 'Users'), { ``` `addDoc` adds the new document to your collection with a random unique ID. If you'd like to specify your own ID, -call `setDoc` with a [`DocumentReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentReference.html) instead: +call `setDoc` with a [`DocumentReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentReference.html) instead: ```js import { collection, doc, getFirestore, setDoc } from '@react-native-firebase/firestore'; @@ -446,7 +446,7 @@ setDoc(doc(collection(db, 'Users'), 'ABC'), { ### Updating documents -The `setDoc` example above replaces any existing data on a given [`DocumentReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/types/firestore/DocumentReference.html). +The `setDoc` example above replaces any existing data on a given [`DocumentReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/types/firestore/DocumentReference.html). if you'd like to update a document instead, use `updateDoc`: ```js @@ -477,10 +477,10 @@ updateDoc(doc(collection(db, 'Users'), 'ABC'), { #### Field values -Cloud Firestore supports storing and manipulating values on your database, such as [Timestamps](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/Timestamp.html), -[GeoPoints](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/GeoPoint.html), [Bytes](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/Bytes.html#frombase64string) and array management. +Cloud Firestore supports storing and manipulating values on your database, such as [Timestamps](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/Timestamp.html), +[GeoPoints](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/GeoPoint.html), [Bytes](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/Bytes.html#frombase64string) and array management. -To store [`GeoPoint`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/GeoPoint.html) values, provide the latitude and longitude to a new instance of the +To store [`GeoPoint`](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/GeoPoint.html) values, provide the latitude and longitude to a new instance of the class: ```js @@ -493,7 +493,7 @@ updateDoc(doc(db, 'users', 'ABC'), { }); ``` -To store raw [Bytes](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/Bytes.html#frombase64string) (for example of a `Base64` image string), provide the string to the static +To store raw [Bytes](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/Bytes.html#frombase64string) (for example of a `Base64` image string), provide the string to the static `fromBase64String` method on the class: ```js @@ -548,7 +548,7 @@ updateDoc(doc(db, 'users', 'ABC'), { ## Removing data -You can delete documents within Cloud Firestore using the `deleteDoc` method with a [`DocumentReference`](https://invertase.github.io/react-native-firebase/_react-native-firebase/firestore/modular/deleteDoc.html): +You can delete documents within Cloud Firestore using the `deleteDoc` method with a [`DocumentReference`](https://reference.rnfirebase.io/_react-native-firebase/firestore/index/deleteDoc.html): ```js import { deleteDoc, doc, getFirestore } from '@react-native-firebase/firestore'; diff --git a/docs/messaging/server-integration.mdx b/docs/messaging/server-integration.mdx index 6ea0271cfb..ca19d52175 100644 --- a/docs/messaging/server-integration.mdx +++ b/docs/messaging/server-integration.mdx @@ -144,7 +144,7 @@ by default. To enable this functionality, you must set the "priority" to `high` The `data` property can send an object of key-value pairs totaling `4KB` as string values (hence the `JSON.stringify`). Back within our application, as explained in the [Usage](/messaging/usage) documentation, our message handlers will receive a -[`RemoteMessage`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) payload containing the message details sent from the server: +[`RemoteMessage`](https://reference.rnfirebase.io/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) payload containing the message details sent from the server: ```jsx import { useEffect } from 'react'; @@ -177,7 +177,7 @@ This means that by default, if your app has users and you allow them to log out How and when you invalidate a token and generate a new one will be specific to your project, but a common pattern is to delete the FCM token during logout and update your back end to remove it, then to fetch the FCM token during login and update your back end systems to associate the new token with the logged in user. -Use [`deleteToken`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/modular/deleteToken.html) and [`getToken`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/modular/getToken.html) from the modular API. +Use [`deleteToken`](https://reference.rnfirebase.io/_react-native-firebase/messaging/index/deleteToken.html) and [`getToken`](https://reference.rnfirebase.io/_react-native-firebase/messaging/index/getToken.html) from the modular API. Note that when a token is deleted by calling the `deleteToken` method, it is immediately and permanently invalid. diff --git a/docs/messaging/usage/index.mdx b/docs/messaging/usage/index.mdx index 695e08a4b1..6f4775b44f 100644 --- a/docs/messaging/usage/index.mdx +++ b/docs/messaging/usage/index.mdx @@ -220,7 +220,7 @@ function App() { ``` The `remoteMessage` property contains all of the information about the message sent to the device from FCM, including -any custom data (via the `data` property) and notification data. To learn more, view the [`RemoteMessage`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) +any custom data (via the `data` property) and notification data. To learn more, view the [`RemoteMessage`](https://reference.rnfirebase.io/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) API reference. If the `RemoteMessage` payload contains a `notification` property when sent to the `onMessage` handler, the device @@ -256,7 +256,7 @@ The handler must return a promise once your logic has completed to free up devic any UI (e.g. via state) - you can however perform network requests, update local storage etc. The `remoteMessage` property contains all of the information about the message sent to the device from FCM, including -any custom data via the `data` property. To learn more, view the [`RemoteMessage`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) +any custom data via the `data` property. To learn more, view the [`RemoteMessage`](https://reference.rnfirebase.io/_react-native-firebase/messaging/types/messaging/RemoteMessage.html) API reference. If the `RemoteMessage` payload contains a `notification` property when sent to the `setBackgroundMessageHandler` handler, the device @@ -314,7 +314,7 @@ admin.messaging().send({ }); ``` -View the [Sending Notification Requests to APNs](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns/) documentation to learn more about APNs headers. +View the [Sending Notification Requests to APNs](https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns) documentation to learn more about APNs headers. These options can be applied to all FCM messages. View the [Server Integration](/messaging/server-integration) documentation to learn more about other available SDKs. diff --git a/docs/migrating-to-v26.mdx b/docs/migrating-to-v26.mdx index a2510b84cc..92ef47c6ef 100644 --- a/docs/migrating-to-v26.mdx +++ b/docs/migrating-to-v26.mdx @@ -1,6 +1,6 @@ --- title: Migrating to v26 -description: Migrate to React Native Firebase v26 — namespaced API removal. +description: Migrate to React Native Firebase v26 - namespaced API removal. previous: /migrating-to-v25 next: /typescript --- diff --git a/docs/releases/v6.4.0.mdx b/docs/releases/v6.4.0.mdx index c907b21cf3..88ad85978c 100644 --- a/docs/releases/v6.4.0.mdx +++ b/docs/releases/v6.4.0.mdx @@ -18,7 +18,7 @@ description: 'Messaging focused release with features, bug fixes and documentati - the permission API selects sensible defaults, however; allows you to fully customize them if required. - provisional permissions are now disabled by default (previously, it was enabled by default for iOS 12+ devices). ([`#d66a611`](https://github.com/invertase/react-native-firebase/commit/d66a6118f82005087f53b86571990fc071402153)) - the `requestPermission` & `hasPermission` APIs now returns the current authorization status as an enum, rather than a boolean value. - - see [`AuthorizationStatus`](https://invertase.github.io/react-native-firebase/_react-native-firebase/messaging/modular/AuthorizationStatus.html) reference documentation for available enum members + - see [`AuthorizationStatus`](https://reference.rnfirebase.io/_react-native-firebase/messaging/index/AuthorizationStatus.html) reference documentation for available enum members --- diff --git a/docs/storage/usage/index.mdx b/docs/storage/usage/index.mdx index 19f1f00be7..b2421c1d77 100644 --- a/docs/storage/usage/index.mdx +++ b/docs/storage/usage/index.mdx @@ -102,7 +102,7 @@ function App() { ### Tasks -The `putFile` method returns a [`Task`](https://invertase.github.io/react-native-firebase/_react-native-firebase/storage/FirebaseStorageTypes/Task.html), which if required, allows you to hook into information +The `putFile` method returns a [`Task`](https://reference.rnfirebase.io/_react-native-firebase/storage/types/storage/Task.html), which if required, allows you to hook into information such as the current upload progress: ```js diff --git a/docs/typescript.mdx b/docs/typescript.mdx index ac08f1bc53..deae8c6b7b 100644 --- a/docs/typescript.mdx +++ b/docs/typescript.mdx @@ -39,7 +39,7 @@ See [Migrating to v25](/migrating-to-v25) for Auth breaking changes (`FirebaseAu Published types are built to `packages//dist/typescript/` (for example `packages/auth/dist/typescript/lib/index.d.ts`). Source lives under `packages//lib/` as TypeScript (`.ts`) since the v25 package migrations. -Modular Auth source: [`packages/auth/lib/modular.ts`](https://github.com/invertase/react-native-firebase/blob/main/packages/auth/lib/modular.ts). +Modular Auth source: [`packages/auth/lib/index.ts`](https://github.com/invertase/react-native-firebase/blob/main/packages/auth/lib/index.ts). Public API reference (generated from source JSDoc): [reference API](https://reference.rnfirebase.io/modules.html). From 106d170a82de0c639c35a809e66f3d9169d687d5 Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Wed, 26 Aug 2026 08:09:28 -0500 Subject: [PATCH 2/2] ci(docs): add docs.page link check to docs workflow --- .github/workflows/docs.yml | 2 + okf-bundle/documentation-site-maintenance.md | 16 ++- okf-bundle/testing/agent-command-policy.md | 2 +- okf-bundle/testing/validation-checklist.md | 18 ++- package.json | 4 +- yarn.lock | 127 ++++++++++++++++++- 6 files changed, 158 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 340d0f46df..fcda8c9649 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -52,6 +52,8 @@ jobs: - name: Spell check run: | yarn lint:spellcheck + - name: Docs.page links + run: yarn lint:docs-links # https://github.com/actions/cache/releases - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 name: Yarn Cache Save diff --git a/okf-bundle/documentation-site-maintenance.md b/okf-bundle/documentation-site-maintenance.md index 8b31e6b812..b61386c39a 100644 --- a/okf-bundle/documentation-site-maintenance.md +++ b/okf-bundle/documentation-site-maintenance.md @@ -66,16 +66,28 @@ Removed packages (e.g. Dynamic Links) have no TypeDoc module — fall back to `m - [ ] `yarn reference:api` succeeds - [ ] All `docs.json` redirect targets verified (200) - [ ] New legacy paths identified and redirected or explicitly deferred with rationale -- [ ] Markdown/spellcheck when `docs/**` changed — [validation checklist § lint and formatting](testing/validation-checklist.md#lint-and-formatting) (`yarn lint:markdown` / `yarn lint:spellcheck` glob `docs/**` only; OKF-only diffs do not run those) +- [ ] Markdown/spellcheck/link check when `docs/**` changed — [validation checklist § lint and formatting](testing/validation-checklist.md#lint-and-formatting) (`yarn lint:markdown` / `yarn lint:spellcheck` / `yarn lint:docs-links` glob `docs/**` only; OKF-only diffs do not run those) **Validation commands:** [validation checklist § API reference](testing/validation-checklist.md#api-reference-and-type-parity), [§ lint and formatting](testing/validation-checklist.md#lint-and-formatting). +## Docs.page link check (CI) + + + +`yarn lint:docs-links` runs `@docs.page/cli` `check` (pinned in root `package.json`) and is a step in `.github/workflows/docs.yml`. + +`docs check` defaults every check to **error**. The yarn script is `docs check . --external-links warn` — the only override. npmjs, Stack Overflow, and similar hosts often return **403** to automated link checkers even when the URL is valid in a browser. + +**Agents** ([validation checklist § docs.page link check](testing/validation-checklist.md#docs-page-link-check)): fix every **error**; the **only** acceptable non-fix is an **external** **warn** from bot/WAF **403** / aborted fetch — do not rewrite those links or relax other check severities. + +Sweep real 404s before enabling the CI step on a branch so the first green run stays bisectable. + ## docs.json edits (non-TypeDoc) When adding user docs pages only (sidebar, tabs, content under `docs/`): - Add sidebar entries in `docs.json` when new pages ship. -- Run markdown/spellcheck per [validation checklist](testing/validation-checklist.md#lint-and-formatting). +- Run markdown/spellcheck/link check per [validation checklist](testing/validation-checklist.md#lint-and-formatting): `yarn lint:markdown`, `yarn lint:spellcheck`, `yarn lint:docs-links`. - Redirect audit **not** required unless `redirects` or TypeDoc config also changed. ## Colocated TypeDoc reminder diff --git a/okf-bundle/testing/agent-command-policy.md b/okf-bundle/testing/agent-command-policy.md index e2dea2ba0f..2df181e129 100644 --- a/okf-bundle/testing/agent-command-policy.md +++ b/okf-bundle/testing/agent-command-policy.md @@ -35,7 +35,7 @@ Single source for **which shell commands agents may run** in this repo. E2e is a | TS/JS validation sequence | [validation checklist](validation-checklist.md) | ad-hoc `tsc` in package dirs unless listed there | | JS lint (implementation / review gate) | `yarn lint:js`, `yarn lint:js --fix` | package-scoped `eslint`, `npx eslint` | | Android Java format / lint | `yarn lint:android` | `yarn google-java-format`, bare `google-java-format`, `google-java-format -i`, `npx google-java-format`, any invented format script | -| Docs lint | `yarn lint:markdown`, `yarn lint:spellcheck` — when: [validation checklist § lint and formatting](validation-checklist.md#lint-and-formatting) (`docs/**` only; OKF-only skips) | ad-hoc prettier/eslint on single files | +| Docs lint | `yarn lint:markdown`, `yarn lint:spellcheck`, `yarn lint:docs-links` — when: [validation checklist § lint and formatting](validation-checklist.md#lint-and-formatting) (`docs/**` only; OKF-only skips) | ad-hoc prettier/eslint on single files; ad-hoc `npx @docs.page/cli` | | iOS Ruby lint (RuboCop) | `yarn lint:ruby` (also runs inside `yarn tests:ios:ruby`) | ad-hoc `rubocop`, `bundle exec rubocop` without the Gemfile/config | | Android JVM unit tests | `yarn tests:android:unit` | ad-hoc `./gradlew …` outside this yarn script; bare Robolectric/JUnit IDE-only as the agent gate | | iOS Ruby unit tests (SPM / CocoaPods helpers) | `yarn lint:ruby` / `yarn tests:ios:ruby` (after root `yarn` or `yarn ruby:install` when gems are missing) | ad-hoc `ruby packages/app/__tests__/…_test.rb`, bare `ruby …/run_with_coverage.rb` without the yarn script as the agent gate | diff --git a/okf-bundle/testing/validation-checklist.md b/okf-bundle/testing/validation-checklist.md index 7efaaf0213..a9dfb5e1b8 100644 --- a/okf-bundle/testing/validation-checklist.md +++ b/okf-bundle/testing/validation-checklist.md @@ -130,13 +130,27 @@ Run **only** the scripts whose trees are in the diff (exit 0). Do not run the re | `packages/*/lib/**` | `yarn lint:deps` | Blocking. [dependency-cycle linting](../monorepo-tooling/prepare-and-cache.md#dependency-cycle-linting). | | Java under `packages/*/android` | `yarn lint:android` | **Implementation only.** `google-java-format --set-exit-if-changed --replace` — **mutates**. Only entrypoint ([agent command policy](agent-command-policy.md)); never invent `yarn google-java-format` / `npx google-java-format`. Can flake; rerun once/twice if failure is not clearly in diff. Commit formatter output. | | iOS native (`packages/*/ios` `.h` / `.cpp` / `.m` / `.mm`, not generated) | `yarn lint:ios:check` | clang-format **check** (`-n -Werror`). Implementation may `yarn lint:ios:fix` then re-check. | -| `docs/**` | `yarn lint:markdown` then `yarn lint:spellcheck` | Scripts glob `docs/**` only (CI docs job). OKF-only diffs skip these. | +| `docs/**` | `yarn lint:markdown` then `yarn lint:spellcheck` then `yarn lint:docs-links` | Scripts glob `docs/**` only (CI docs job). OKF-only diffs skip these. Link-check: [§ docs.page link check](#docs-page-link-check). | A JS-only (or docs-only) diff does **not** require full `yarn lint`. Full `yarn lint` is the CI equivalent when the diff spans those package trees **and** mutating `lint:android` is allowed (`implementation`). ### Frozen `independent-review` (check-only) -Frozen review is [report/check-only except revert `.only`](change-authoring-workflow.md#frozen-tree). **Do not** run `yarn lint:android` or full `yarn lint` — `lint:android` `--replace` mutates the tree. Run the **check-only** by-diff scripts: `lint:js` (JS/TS), `lint:deps` (lib), `lint:ios:check` (ios), markdown/spellcheck (`docs/**` only). +Frozen review is [report/check-only except revert `.only`](change-authoring-workflow.md#frozen-tree). **Do not** run `yarn lint:android` or full `yarn lint` — `lint:android` `--replace` mutates the tree. Run the **check-only** by-diff scripts: `lint:js` (JS/TS), `lint:deps` (lib), `lint:ios:check` (ios), markdown/spellcheck/link check (`docs/**` only). + + + +### `yarn lint:docs-links` — fix failures; one warn-only exception + +When `docs/**` is in the diff, **`yarn lint:docs-links` exit code 0** is blocking ([change authoring § validation evidence](change-authoring-workflow.md#validation-evidence-blocking)). The script runs `docs check . --external-links warn`; all other checks use CLI defaults (**error**). + +**Agents must fix every `error` line** (internal links, assets, MDX render, metadata). Do not hand off or close gates while errors remain. + +**The only acceptable non-fix** is an **`warn`** on an **external** link where the checker reports **403 Forbidden**, **Unable to reach** / aborted fetch, or similar **bot/WAF blocking** (common on npmjs.com, stackoverflow.com, some Google support URLs). Those URLs are often valid in a browser; CI and the checker use automated clients. **Do not** replace, remove, or “fix” those links to clear warnings — **do not** downgrade other checks to `warn` or `off` to hide real failures. + +If an external link is a true **404** / **not found** at **error** severity, fix it like any other error. If unsure, verify in a browser; 403 from npm/SO in warn output alone is not grounds to change the link. + +Detail: [documentation site maintenance § Docs.page link check](../documentation-site-maintenance.md#docs-page-link-check-ci). ## E2e with coverage diff --git a/package.json b/package.json index 34431a650d..d6a6145988 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,12 @@ "lint:ios:check": "find packages/*/ios -type f \\( -name '*.h' -o -name '*.cpp' -o -name '*.m' -o -name '*.mm' \\) -not -path '*/generated/*' -print0 | xargs -0 clang-format --style=Google -n -Werror", "lint:ios:fix": "find packages/*/ios -type f \\( -name '*.h' -o -name '*.cpp' -o -name '*.m' -o -name '*.mm' \\) -not -path '*/generated/*' -print0 | xargs -0 clang-format -i --style=Google", "lint:markdown": "eslint \"docs/**/*.mdx\" --max-warnings=0 && prettier --check \"docs/**/*.mdx\"", + "lint:docs-links": "docs check . --external-links warn", "lint:report": "eslint --output-file=eslint-report.json --format=json . --ext .js,.jsx,.ts,.tsx", "lint:spellcheck": "spellchecker --quiet --files=\"docs/**/*.{md,mdx}\" --dictionaries=\"./.spellcheck.dict.txt\" --reports=\"spelling.json\" --plugins spell indefinite-article repeated-words syntax-mentions syntax-urls frontmatter", "tsc:compile": "tsc --project .", "tsc:compile:consumer": "tsc --project tsconfig.consumer.json", - "lint:all": "yarn lint && yarn lint:markdown && yarn lint:spellcheck && yarn tsc:compile", + "lint:all": "yarn lint && yarn lint:markdown && yarn lint:spellcheck && yarn lint:docs-links && yarn tsc:compile", "test:full": "bash ./scripts/run-full-tests.sh", "reference:api": "typedoc", "reference:api:gh-pages": "typedoc --out apidocs-out --hostedBaseUrl https://reference.rnfirebase.io/ --useHostedBaseUrlForAbsoluteLinks", @@ -90,6 +91,7 @@ "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/preset-env": "^7.29.3", + "@docs.page/cli": "2.0.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^10.0.1", "@firebase/rules-unit-testing": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index f400af9d6f..db6fb910c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2235,6 +2235,28 @@ __metadata: languageName: node linkType: hard +"@clack/core@npm:1.4.3": + version: 1.4.3 + resolution: "@clack/core@npm:1.4.3" + dependencies: + fast-wrap-ansi: "npm:^0.2.0" + sisteransi: "npm:^1.0.5" + checksum: 10/9d875718cb161e0eca97c3ed3ba3063211436c4224a04556b840e045f18505c8fdb645754d9459181069b3a3b6699962d0f47e38e2502cb0acfef1649b3557b3 + languageName: node + linkType: hard + +"@clack/prompts@npm:^1.5.1": + version: 1.7.0 + resolution: "@clack/prompts@npm:1.7.0" + dependencies: + "@clack/core": "npm:1.4.3" + fast-string-width: "npm:^3.0.2" + fast-wrap-ansi: "npm:^0.2.0" + sisteransi: "npm:^1.0.5" + checksum: 10/2bfc89d6755a1e10166a3b7a6cc883a09c1d4d82c08fbe98763284d522f256a58ed20c5ee4ab36f2a6e06bc1b3f0c16b02657159f7d593dab12c55260755f0c2 + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -2269,6 +2291,33 @@ __metadata: languageName: node linkType: hard +"@docs.page/cli@npm:2.0.0": + version: 2.0.0 + resolution: "@docs.page/cli@npm:2.0.0" + dependencies: + "@clack/prompts": "npm:^1.5.1" + chalk: "npm:^5.3.0" + chokidar: "npm:^4.0.0" + commander: "npm:^12.1.0" + fast-glob: "npm:^3.3.3" + gray-matter: "npm:^4.0.3" + handlebars: "npm:^4.7.9" + jose: "npm:^6.2.3" + js-yaml: "npm:^4.1.1" + remark-frontmatter: "npm:^5.0.0" + remark-mdx: "npm:^3.1.1" + remark-parse: "npm:^11.0.0" + unified: "npm:^11.0.5" + ws: "npm:^8.18.0" + peerDependencies: + typescript: ^5 + bin: + docs: dist/cli.js + docs.page: dist/cli.js + checksum: 10/9e418f7e6bf061c1505ef62644893983b319fd634987c2da60e058be38dc9eb1b71ddb01779193315cbcd73a5ef4ec93887eae831dd3ab1270008913fdbc6f71 + languageName: node + linkType: hard + "@electric-sql/pglite-tools@npm:^0.2.8": version: 0.2.19 resolution: "@electric-sql/pglite-tools@npm:0.2.19" @@ -9660,7 +9709,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.4.1, chalk@npm:^5.6.2": +"chalk@npm:^5.3.0, chalk@npm:^5.4.1, chalk@npm:^5.6.2": version: 5.6.2 resolution: "chalk@npm:5.6.2" checksum: 10/1b2f48f6fba1370670d5610f9cd54c391d6ede28f4b7062dd38244ea5768777af72e5be6b74fb6c6d54cb84c4a2dff3f3afa9b7cb5948f7f022cfd3d087989e0 @@ -9728,7 +9777,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.1": +"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -10175,7 +10224,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^12.0.0": +"commander@npm:^12.0.0, commander@npm:^12.1.0": version: 12.1.0 resolution: "commander@npm:12.1.0" checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93 @@ -12689,6 +12738,15 @@ __metadata: languageName: node linkType: hard +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: "npm:^0.1.0" + checksum: 10/8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 + languageName: node + linkType: hard + "extend@npm:^3.0.0, extend@npm:^3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -14123,6 +14181,18 @@ __metadata: languageName: node linkType: hard +"gray-matter@npm:^4.0.3": + version: 4.0.3 + resolution: "gray-matter@npm:4.0.3" + dependencies: + js-yaml: "npm:^3.13.1" + kind-of: "npm:^6.0.2" + section-matter: "npm:^1.0.0" + strip-bom-string: "npm:^1.0.0" + checksum: 10/9a8f146a7a918d2524d5d60e0b4d45729f5bca54aa41247f971d9e4bc984943fda58159435763d463ec2abc8a0e238e807bd9b05e3a48f4a613a325c9dd5ad0c + languageName: node + linkType: hard + "gtoken@npm:^7.0.0": version: 7.1.0 resolution: "gtoken@npm:7.1.0" @@ -15257,6 +15327,13 @@ __metadata: languageName: node linkType: hard +"is-extendable@npm:^0.1.0": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 10/3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -16608,6 +16685,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^6.2.3": + version: 6.2.9 + resolution: "jose@npm:6.2.9" + checksum: 10/297a644db9076337b70e497b16a602961d823928a9035917cd383148ef2b8b27879f41030bddbe8db4dc9c580bdf84df8a6cd3dadbe2f20d2a703c4e1a1ba8da + languageName: node + linkType: hard + "js-message@npm:1.0.7": version: 1.0.7 resolution: "js-message@npm:1.0.7" @@ -17004,7 +17088,7 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 @@ -22449,6 +22533,7 @@ __metadata: "@babel/plugin-proposal-private-property-in-object": "npm:^7.21.11" "@babel/plugin-transform-class-properties": "npm:^7.28.6" "@babel/preset-env": "npm:^7.29.3" + "@docs.page/cli": "npm:2.0.0" "@eslint/eslintrc": "npm:^3.3.5" "@eslint/js": "npm:^10.0.1" "@firebase/rules-unit-testing": "npm:^5.0.0" @@ -23099,7 +23184,7 @@ __metadata: languageName: node linkType: hard -"remark-mdx@npm:^3.1.0": +"remark-mdx@npm:^3.1.0, remark-mdx@npm:^3.1.1": version: 3.1.1 resolution: "remark-mdx@npm:3.1.1" dependencies: @@ -23681,6 +23766,16 @@ __metadata: languageName: node linkType: hard +"section-matter@npm:^1.0.0": + version: 1.0.0 + resolution: "section-matter@npm:1.0.0" + dependencies: + extend-shallow: "npm:^2.0.1" + kind-of: "npm:^6.0.0" + checksum: 10/cedfda3a9238f66942d92531fe043dd134702a462cdc9e254cd6aa418c66ca0d229900e4da78ffd1a07051e7b239251c4dc4748e9d1c76bf41a37bff7a478556 + languageName: node + linkType: hard + "selfsigned@npm:^2.4.1": version: 2.4.1 resolution: "selfsigned@npm:2.4.1" @@ -24793,6 +24888,13 @@ __metadata: languageName: node linkType: hard +"strip-bom-string@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-bom-string@npm:1.0.0" + checksum: 10/5635a3656d8512a2c194d6c8d5dee7ef0dde6802f7be9413b91e201981ad4132506656d9cf14137f019fd50f0269390d91c7f6a2601b1bee039a4859cfce4934 + languageName: node + linkType: hard + "strip-bom@npm:3.0.0, strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -26917,6 +27019,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.18.0": + version: 8.21.3 + resolution: "ws@npm:8.21.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/8856922c26fd2d106931c16310d9a0bc2d6d37ed8771352bfa0d2a36df0ab5cb1f6528c6db8213f3333cf4ce93925e56f13604df0454cb0d4289fef922bebcdd + languageName: node + linkType: hard + "xcode@npm:^3.0.1": version: 3.0.1 resolution: "xcode@npm:3.0.1"