diff --git a/.github/workflows/sync-search.yml b/.github/workflows/sync-search.yml
index 7b6bdeae..d3bd3391 100644
--- a/.github/workflows/sync-search.yml
+++ b/.github/workflows/sync-search.yml
@@ -3,8 +3,6 @@ name: Sync Search Content
on:
push:
branches: [main]
- pull_request:
- branches: [main]
jobs:
sync-search:
diff --git a/content/relayer/1.1.x/api/callPlugin.mdx b/content/relayer/1.1.x/api/callPlugin.mdx
index fe557873..e80f5752 100644
--- a/content/relayer/1.1.x/api/callPlugin.mdx
+++ b/content/relayer/1.1.x/api/callPlugin.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/cancelTransaction.mdx b/content/relayer/1.1.x/api/cancelTransaction.mdx
index 5e048adf..342de9b2 100644
--- a/content/relayer/1.1.x/api/cancelTransaction.mdx
+++ b/content/relayer/1.1.x/api/cancelTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/createNotification.mdx b/content/relayer/1.1.x/api/createNotification.mdx
index 9b979508..d7d916be 100644
--- a/content/relayer/1.1.x/api/createNotification.mdx
+++ b/content/relayer/1.1.x/api/createNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/createRelayer.mdx b/content/relayer/1.1.x/api/createRelayer.mdx
index a6f15a08..6004316f 100644
--- a/content/relayer/1.1.x/api/createRelayer.mdx
+++ b/content/relayer/1.1.x/api/createRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/createSigner.mdx b/content/relayer/1.1.x/api/createSigner.mdx
index 8ef67359..5cf9ec01 100644
--- a/content/relayer/1.1.x/api/createSigner.mdx
+++ b/content/relayer/1.1.x/api/createSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/deleteNotification.mdx b/content/relayer/1.1.x/api/deleteNotification.mdx
index e79a94a6..0f81bb7e 100644
--- a/content/relayer/1.1.x/api/deleteNotification.mdx
+++ b/content/relayer/1.1.x/api/deleteNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/deletePendingTransactions.mdx b/content/relayer/1.1.x/api/deletePendingTransactions.mdx
index 629f7246..52fccbfd 100644
--- a/content/relayer/1.1.x/api/deletePendingTransactions.mdx
+++ b/content/relayer/1.1.x/api/deletePendingTransactions.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/deleteRelayer.mdx b/content/relayer/1.1.x/api/deleteRelayer.mdx
index 108df063..19dc6cde 100644
--- a/content/relayer/1.1.x/api/deleteRelayer.mdx
+++ b/content/relayer/1.1.x/api/deleteRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/deleteSigner.mdx b/content/relayer/1.1.x/api/deleteSigner.mdx
index 1eac45c0..8ff8d171 100644
--- a/content/relayer/1.1.x/api/deleteSigner.mdx
+++ b/content/relayer/1.1.x/api/deleteSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getNotification.mdx b/content/relayer/1.1.x/api/getNotification.mdx
index fb83d496..683be6fa 100644
--- a/content/relayer/1.1.x/api/getNotification.mdx
+++ b/content/relayer/1.1.x/api/getNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getRelayer.mdx b/content/relayer/1.1.x/api/getRelayer.mdx
index a587175d..ab762fed 100644
--- a/content/relayer/1.1.x/api/getRelayer.mdx
+++ b/content/relayer/1.1.x/api/getRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getRelayerBalance.mdx b/content/relayer/1.1.x/api/getRelayerBalance.mdx
index 78808265..ac75d13c 100644
--- a/content/relayer/1.1.x/api/getRelayerBalance.mdx
+++ b/content/relayer/1.1.x/api/getRelayerBalance.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getRelayerStatus.mdx b/content/relayer/1.1.x/api/getRelayerStatus.mdx
index 158e831f..a2cb963b 100644
--- a/content/relayer/1.1.x/api/getRelayerStatus.mdx
+++ b/content/relayer/1.1.x/api/getRelayerStatus.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getSigner.mdx b/content/relayer/1.1.x/api/getSigner.mdx
index cef67a33..eadf133a 100644
--- a/content/relayer/1.1.x/api/getSigner.mdx
+++ b/content/relayer/1.1.x/api/getSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getTransactionById.mdx b/content/relayer/1.1.x/api/getTransactionById.mdx
index f2672ef9..77c008b2 100644
--- a/content/relayer/1.1.x/api/getTransactionById.mdx
+++ b/content/relayer/1.1.x/api/getTransactionById.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/getTransactionByNonce.mdx b/content/relayer/1.1.x/api/getTransactionByNonce.mdx
index c3565b0c..810eb101 100644
--- a/content/relayer/1.1.x/api/getTransactionByNonce.mdx
+++ b/content/relayer/1.1.x/api/getTransactionByNonce.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/health.mdx b/content/relayer/1.1.x/api/health.mdx
index 75a5d483..bf6af450 100644
--- a/content/relayer/1.1.x/api/health.mdx
+++ b/content/relayer/1.1.x/api/health.mdx
@@ -26,4 +26,4 @@ Handles the `/health` endpoint.
Returns an `HttpResponse` with a status of `200 OK` and a body of `"OK"`.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/listNotifications.mdx b/content/relayer/1.1.x/api/listNotifications.mdx
index a45ffb04..e736cba8 100644
--- a/content/relayer/1.1.x/api/listNotifications.mdx
+++ b/content/relayer/1.1.x/api/listNotifications.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all notifications with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/listRelayers.mdx b/content/relayer/1.1.x/api/listRelayers.mdx
index 77db3010..073c35b4 100644
--- a/content/relayer/1.1.x/api/listRelayers.mdx
+++ b/content/relayer/1.1.x/api/listRelayers.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all relayers with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/listSigners.mdx b/content/relayer/1.1.x/api/listSigners.mdx
index 1cbd571d..78a67216 100644
--- a/content/relayer/1.1.x/api/listSigners.mdx
+++ b/content/relayer/1.1.x/api/listSigners.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all signers with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/listTransactions.mdx b/content/relayer/1.1.x/api/listTransactions.mdx
index 5235f3aa..2a90441d 100644
--- a/content/relayer/1.1.x/api/listTransactions.mdx
+++ b/content/relayer/1.1.x/api/listTransactions.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/list_metrics.mdx b/content/relayer/1.1.x/api/list_metrics.mdx
index 66a0f51f..8ea7a892 100644
--- a/content/relayer/1.1.x/api/list_metrics.mdx
+++ b/content/relayer/1.1.x/api/list_metrics.mdx
@@ -30,4 +30,4 @@ Returns a list of all available metric names in JSON format.
An `HttpResponse` containing a JSON array of metric names.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/metric_detail.mdx b/content/relayer/1.1.x/api/metric_detail.mdx
index 021017d1..e252ce6f 100644
--- a/content/relayer/1.1.x/api/metric_detail.mdx
+++ b/content/relayer/1.1.x/api/metric_detail.mdx
@@ -35,4 +35,4 @@ _openapi:
An `HttpResponse` containing the metric details in plain text, or a 404 error if the metric is
not found.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/replaceTransaction.mdx b/content/relayer/1.1.x/api/replaceTransaction.mdx
index cc6c5d0e..6ff72edd 100644
--- a/content/relayer/1.1.x/api/replaceTransaction.mdx
+++ b/content/relayer/1.1.x/api/replaceTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/rpc.mdx b/content/relayer/1.1.x/api/rpc.mdx
index 3dbb0922..1def5de6 100644
--- a/content/relayer/1.1.x/api/rpc.mdx
+++ b/content/relayer/1.1.x/api/rpc.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/scrape_metrics.mdx b/content/relayer/1.1.x/api/scrape_metrics.mdx
index 9b43e8c4..0c8509b4 100644
--- a/content/relayer/1.1.x/api/scrape_metrics.mdx
+++ b/content/relayer/1.1.x/api/scrape_metrics.mdx
@@ -27,4 +27,4 @@ _openapi:
An `HttpResponse` containing the updated metrics in plain text, or an error message if the
update fails.
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/sendTransaction.mdx b/content/relayer/1.1.x/api/sendTransaction.mdx
index 086a1322..e70a0dba 100644
--- a/content/relayer/1.1.x/api/sendTransaction.mdx
+++ b/content/relayer/1.1.x/api/sendTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/sign.mdx b/content/relayer/1.1.x/api/sign.mdx
index 73a6e67d..28cf96de 100644
--- a/content/relayer/1.1.x/api/sign.mdx
+++ b/content/relayer/1.1.x/api/sign.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/signTransaction.mdx b/content/relayer/1.1.x/api/signTransaction.mdx
index b95f49c6..a53aa136 100644
--- a/content/relayer/1.1.x/api/signTransaction.mdx
+++ b/content/relayer/1.1.x/api/signTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/signTypedData.mdx b/content/relayer/1.1.x/api/signTypedData.mdx
index edb7b736..63a7d4d2 100644
--- a/content/relayer/1.1.x/api/signTypedData.mdx
+++ b/content/relayer/1.1.x/api/signTypedData.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/updateNotification.mdx b/content/relayer/1.1.x/api/updateNotification.mdx
index b591c02f..711b8b8d 100644
--- a/content/relayer/1.1.x/api/updateNotification.mdx
+++ b/content/relayer/1.1.x/api/updateNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/updateRelayer.mdx b/content/relayer/1.1.x/api/updateRelayer.mdx
index 9bd2ea5e..0af41d58 100644
--- a/content/relayer/1.1.x/api/updateRelayer.mdx
+++ b/content/relayer/1.1.x/api/updateRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/1.1.x/api/updateSigner.mdx b/content/relayer/1.1.x/api/updateSigner.mdx
index 080f7f4c..000843a6 100644
--- a/content/relayer/1.1.x/api/updateSigner.mdx
+++ b/content/relayer/1.1.x/api/updateSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/callPlugin.mdx b/content/relayer/api/callPlugin.mdx
index e55f43e0..d720f088 100644
--- a/content/relayer/api/callPlugin.mdx
+++ b/content/relayer/api/callPlugin.mdx
@@ -25,4 +25,4 @@ Logs and traces are only returned when the plugin is configured with `emit_logs`
Plugin-provided errors are normalized into a consistent payload (`code`, `details`) and a derived
message so downstream clients receive a stable shape regardless of how the handler threw.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/cancelTransaction.mdx b/content/relayer/api/cancelTransaction.mdx
index 5e048adf..342de9b2 100644
--- a/content/relayer/api/cancelTransaction.mdx
+++ b/content/relayer/api/cancelTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/createNotification.mdx b/content/relayer/api/createNotification.mdx
index 9b979508..d7d916be 100644
--- a/content/relayer/api/createNotification.mdx
+++ b/content/relayer/api/createNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/createRelayer.mdx b/content/relayer/api/createRelayer.mdx
index a6f15a08..6004316f 100644
--- a/content/relayer/api/createRelayer.mdx
+++ b/content/relayer/api/createRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/createSigner.mdx b/content/relayer/api/createSigner.mdx
index 8ef67359..5cf9ec01 100644
--- a/content/relayer/api/createSigner.mdx
+++ b/content/relayer/api/createSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/deleteNotification.mdx b/content/relayer/api/deleteNotification.mdx
index e79a94a6..0f81bb7e 100644
--- a/content/relayer/api/deleteNotification.mdx
+++ b/content/relayer/api/deleteNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/deletePendingTransactions.mdx b/content/relayer/api/deletePendingTransactions.mdx
index 629f7246..52fccbfd 100644
--- a/content/relayer/api/deletePendingTransactions.mdx
+++ b/content/relayer/api/deletePendingTransactions.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/deleteRelayer.mdx b/content/relayer/api/deleteRelayer.mdx
index 108df063..19dc6cde 100644
--- a/content/relayer/api/deleteRelayer.mdx
+++ b/content/relayer/api/deleteRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/deleteSigner.mdx b/content/relayer/api/deleteSigner.mdx
index 1eac45c0..8ff8d171 100644
--- a/content/relayer/api/deleteSigner.mdx
+++ b/content/relayer/api/deleteSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getNotification.mdx b/content/relayer/api/getNotification.mdx
index fb83d496..683be6fa 100644
--- a/content/relayer/api/getNotification.mdx
+++ b/content/relayer/api/getNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getRelayer.mdx b/content/relayer/api/getRelayer.mdx
index a587175d..ab762fed 100644
--- a/content/relayer/api/getRelayer.mdx
+++ b/content/relayer/api/getRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getRelayerBalance.mdx b/content/relayer/api/getRelayerBalance.mdx
index 78808265..ac75d13c 100644
--- a/content/relayer/api/getRelayerBalance.mdx
+++ b/content/relayer/api/getRelayerBalance.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getRelayerStatus.mdx b/content/relayer/api/getRelayerStatus.mdx
index 158e831f..a2cb963b 100644
--- a/content/relayer/api/getRelayerStatus.mdx
+++ b/content/relayer/api/getRelayerStatus.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getSigner.mdx b/content/relayer/api/getSigner.mdx
index cef67a33..eadf133a 100644
--- a/content/relayer/api/getSigner.mdx
+++ b/content/relayer/api/getSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getTransactionById.mdx b/content/relayer/api/getTransactionById.mdx
index f2672ef9..77c008b2 100644
--- a/content/relayer/api/getTransactionById.mdx
+++ b/content/relayer/api/getTransactionById.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/getTransactionByNonce.mdx b/content/relayer/api/getTransactionByNonce.mdx
index c3565b0c..810eb101 100644
--- a/content/relayer/api/getTransactionByNonce.mdx
+++ b/content/relayer/api/getTransactionByNonce.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/health.mdx b/content/relayer/api/health.mdx
index 75a5d483..bf6af450 100644
--- a/content/relayer/api/health.mdx
+++ b/content/relayer/api/health.mdx
@@ -26,4 +26,4 @@ Handles the `/health` endpoint.
Returns an `HttpResponse` with a status of `200 OK` and a body of `"OK"`.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/listNotifications.mdx b/content/relayer/api/listNotifications.mdx
index a45ffb04..e736cba8 100644
--- a/content/relayer/api/listNotifications.mdx
+++ b/content/relayer/api/listNotifications.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all notifications with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/listRelayers.mdx b/content/relayer/api/listRelayers.mdx
index 77db3010..073c35b4 100644
--- a/content/relayer/api/listRelayers.mdx
+++ b/content/relayer/api/listRelayers.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all relayers with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/listSigners.mdx b/content/relayer/api/listSigners.mdx
index 1cbd571d..78a67216 100644
--- a/content/relayer/api/listSigners.mdx
+++ b/content/relayer/api/listSigners.mdx
@@ -22,4 +22,4 @@ Note: OpenAPI documentation for these endpoints can be found in the `openapi.rs`
Lists all signers with pagination support.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/listTransactions.mdx b/content/relayer/api/listTransactions.mdx
index 5235f3aa..2a90441d 100644
--- a/content/relayer/api/listTransactions.mdx
+++ b/content/relayer/api/listTransactions.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/list_metrics.mdx b/content/relayer/api/list_metrics.mdx
index 66a0f51f..8ea7a892 100644
--- a/content/relayer/api/list_metrics.mdx
+++ b/content/relayer/api/list_metrics.mdx
@@ -30,4 +30,4 @@ Returns a list of all available metric names in JSON format.
An `HttpResponse` containing a JSON array of metric names.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/metric_detail.mdx b/content/relayer/api/metric_detail.mdx
index 021017d1..e252ce6f 100644
--- a/content/relayer/api/metric_detail.mdx
+++ b/content/relayer/api/metric_detail.mdx
@@ -35,4 +35,4 @@ _openapi:
An `HttpResponse` containing the metric details in plain text, or a 404 error if the metric is
not found.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/replaceTransaction.mdx b/content/relayer/api/replaceTransaction.mdx
index cc6c5d0e..6ff72edd 100644
--- a/content/relayer/api/replaceTransaction.mdx
+++ b/content/relayer/api/replaceTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/rpc.mdx b/content/relayer/api/rpc.mdx
index 3dbb0922..1def5de6 100644
--- a/content/relayer/api/rpc.mdx
+++ b/content/relayer/api/rpc.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/scrape_metrics.mdx b/content/relayer/api/scrape_metrics.mdx
index 9b43e8c4..0c8509b4 100644
--- a/content/relayer/api/scrape_metrics.mdx
+++ b/content/relayer/api/scrape_metrics.mdx
@@ -27,4 +27,4 @@ _openapi:
An `HttpResponse` containing the updated metrics in plain text, or an error message if the
update fails.
-
\ No newline at end of file
+
diff --git a/content/relayer/api/sendTransaction.mdx b/content/relayer/api/sendTransaction.mdx
index 086a1322..e70a0dba 100644
--- a/content/relayer/api/sendTransaction.mdx
+++ b/content/relayer/api/sendTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/sign.mdx b/content/relayer/api/sign.mdx
index 73a6e67d..28cf96de 100644
--- a/content/relayer/api/sign.mdx
+++ b/content/relayer/api/sign.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/signTransaction.mdx b/content/relayer/api/signTransaction.mdx
index b95f49c6..a53aa136 100644
--- a/content/relayer/api/signTransaction.mdx
+++ b/content/relayer/api/signTransaction.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/signTypedData.mdx b/content/relayer/api/signTypedData.mdx
index edb7b736..63a7d4d2 100644
--- a/content/relayer/api/signTypedData.mdx
+++ b/content/relayer/api/signTypedData.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/updateNotification.mdx b/content/relayer/api/updateNotification.mdx
index b591c02f..711b8b8d 100644
--- a/content/relayer/api/updateNotification.mdx
+++ b/content/relayer/api/updateNotification.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/updateRelayer.mdx b/content/relayer/api/updateRelayer.mdx
index 9bd2ea5e..0af41d58 100644
--- a/content/relayer/api/updateRelayer.mdx
+++ b/content/relayer/api/updateRelayer.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/content/relayer/api/updateSigner.mdx b/content/relayer/api/updateSigner.mdx
index 080f7f4c..000843a6 100644
--- a/content/relayer/api/updateSigner.mdx
+++ b/content/relayer/api/updateSigner.mdx
@@ -12,4 +12,4 @@ _openapi:
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
-
\ No newline at end of file
+
diff --git a/package.json b/package.json
index e6c20ffc..344a8419 100644
--- a/package.json
+++ b/package.json
@@ -1,73 +1,73 @@
{
- "name": "docs",
- "version": "0.0.0",
- "private": true,
- "type": "module",
- "scripts": {
- "build": "next build --turbo",
- "dev": "next dev --turbo",
- "start": "next start",
- "postinstall": "fumadocs-mdx",
- "lint": "biome lint src/",
- "lint:links": "tsx scripts/link-validation.ts",
- "lint:links-save": "tsx scripts/link-validation.ts --output broken-links.md",
- "lint:fix": "biome lint --write src/",
- "format": "biome format src/",
- "format:fix": "biome format --write src/",
- "check": "biome check src/ && pnpm run lint:links",
- "check:fix": "biome check --write src/"
- },
- "dependencies": {
- "@fumadocs/mdx-remote": "^1.4.0",
- "@netlify/plugin-nextjs": "^5.13.3",
- "@next/third-parties": "^15.5.4",
- "@orama/orama": "^3.1.13",
- "@radix-ui/react-collapsible": "^1.1.12",
- "@radix-ui/react-popover": "^1.1.15",
- "@radix-ui/react-presence": "^1.1.5",
- "@radix-ui/react-scroll-area": "^1.2.10",
- "@radix-ui/react-separator": "^1.1.7",
- "@tanstack/react-query": "^5.89.0",
- "algoliasearch": "^5.37.0",
- "class-variance-authority": "^0.7.1",
- "clsx": "^2.1.1",
- "fumadocs-core": "15.7.11",
- "fumadocs-mdx": "12.0.1",
- "fumadocs-openapi": "^9.3.8",
- "fumadocs-ui": "15.7.11",
- "glob": "^11.0.3",
- "katex": "^0.16.22",
- "lucide-react": "^0.540.0",
- "mermaid": "^11.11.0",
- "micromatch": "^4.0.8",
- "next": "^15.5.3",
- "next-themes": "^0.4.6",
- "next-validate-link": "^1.6.3",
- "react": "^19.1.1",
- "react-dom": "^19.1.1",
- "rehype-katex": "^7.0.1",
- "remark": "^15.0.1",
- "remark-gfm": "^4.0.1",
- "remark-math": "^6.0.0",
- "remark-mdx": "^3.1.1",
- "shiki": "^3.12.2",
- "tailwind-merge": "^3.3.1",
- "unist-util-visit": "^5.0.0"
- },
- "devDependencies": {
- "@biomejs/biome": "^2.2.4",
- "@tailwindcss/postcss": "^4.1.13",
- "@tanstack/react-query-devtools": "^5.89.0",
- "@types/mdx": "^2.0.13",
- "@types/micromatch": "^4.0.9",
- "@types/node": "24.1.0",
- "@types/react": "^19.1.12",
- "@types/react-dom": "^19.1.9",
- "postcss": "^8.5.6",
- "tailwindcss": "^4.1.13",
- "tsx": "^4.20.5",
- "tw-animate-css": "^1.3.8",
- "typescript": "^5.9.2"
- },
- "packageManager": "pnpm@10.17.1"
-}
\ No newline at end of file
+ "name": "docs",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "next build --turbo",
+ "dev": "next dev --turbo",
+ "start": "next start",
+ "postinstall": "fumadocs-mdx",
+ "lint": "biome lint src/",
+ "lint:links": "tsx scripts/link-validation.ts",
+ "lint:links-save": "tsx scripts/link-validation.ts --output broken-links.md",
+ "lint:fix": "biome lint --write src/",
+ "format": "biome format src/",
+ "format:fix": "biome format --write src/",
+ "check": "biome check src/ && pnpm run lint:links",
+ "check:fix": "biome check --write src/"
+ },
+ "dependencies": {
+ "@fumadocs/mdx-remote": "^1.4.0",
+ "@netlify/plugin-nextjs": "^5.13.3",
+ "@next/third-parties": "^15.5.4",
+ "@orama/orama": "^3.1.13",
+ "@radix-ui/react-collapsible": "^1.1.12",
+ "@radix-ui/react-popover": "^1.1.15",
+ "@radix-ui/react-presence": "^1.1.5",
+ "@radix-ui/react-scroll-area": "^1.2.10",
+ "@radix-ui/react-separator": "^1.1.7",
+ "@tanstack/react-query": "^5.89.0",
+ "algoliasearch": "^5.37.0",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "fumadocs-core": "15.7.11",
+ "fumadocs-mdx": "12.0.1",
+ "fumadocs-openapi": "^9.3.8",
+ "fumadocs-ui": "15.7.11",
+ "glob": "^11.0.3",
+ "katex": "^0.16.22",
+ "lucide-react": "^0.540.0",
+ "mermaid": "^11.11.0",
+ "micromatch": "^4.0.8",
+ "next": "^15.5.3",
+ "next-themes": "^0.4.6",
+ "next-validate-link": "^1.6.3",
+ "react": "^19.1.1",
+ "react-dom": "^19.1.1",
+ "rehype-katex": "^7.0.1",
+ "remark": "^15.0.1",
+ "remark-gfm": "^4.0.1",
+ "remark-math": "^6.0.0",
+ "remark-mdx": "^3.1.1",
+ "shiki": "^3.12.2",
+ "tailwind-merge": "^3.3.1",
+ "unist-util-visit": "^5.0.0"
+ },
+ "devDependencies": {
+ "@biomejs/biome": "^2.2.4",
+ "@tailwindcss/postcss": "^4.1.13",
+ "@tanstack/react-query-devtools": "^5.89.0",
+ "@types/mdx": "^2.0.13",
+ "@types/micromatch": "^4.0.9",
+ "@types/node": "24.1.0",
+ "@types/react": "^19.1.12",
+ "@types/react-dom": "^19.1.9",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.13",
+ "tsx": "^4.20.5",
+ "tw-animate-css": "^1.3.8",
+ "typescript": "^5.9.2"
+ },
+ "packageManager": "pnpm@10.17.1"
+}
diff --git a/scripts/link-validation.ts b/scripts/link-validation.ts
index 756bdfaa..a7ab9ffc 100644
--- a/scripts/link-validation.ts
+++ b/scripts/link-validation.ts
@@ -7,6 +7,20 @@ import {
import type { InferPageType } from "fumadocs-core/source";
import { source } from "@/lib/source";
import { writeFileSync } from "fs";
+import {
+ arbitrumStylusTree,
+ ethereumEvmTree,
+ impactTree,
+ midnightTree,
+ polkadotTree,
+ starknetTree,
+ stellarTree,
+ uniswapTree,
+ zamaTree,
+ type NavigationNode,
+ type NavigationPage,
+ type NavigationFolder,
+} from "@/navigation";
async function checkLinks() {
// Parse command line arguments
@@ -52,6 +66,11 @@ async function checkLinks() {
checkRelativePaths: "as-url",
});
+ // Validate navigation URLs if requested
+ let navigationErrors: Array<{ tree: string; url: string; reason: string }> =
+ [];
+ navigationErrors = await validateNavigationUrls(scanned);
+
if (outputFile) {
// Generate custom output format for file
let output = "";
@@ -70,16 +89,41 @@ async function checkLinks() {
}
}
- output += `\nSummary: ${totalErrors} errors found in ${validationResults.filter((r) => r.errors.length > 0).length} files out of ${totalFiles} total files\n`;
+ // Add navigation errors to output
+ if (navigationErrors.length > 0) {
+ output += `\nInvalid URLs in Navigation Trees:\n`;
+ for (const error of navigationErrors) {
+ totalErrors++;
+ output += `${error.tree}: ${error.url} - ${error.reason}\n`;
+ }
+ output += "------\n";
+ }
+
+ output += `\nSummary: ${totalErrors} errors found in ${validationResults.filter((r) => r.errors.length > 0).length} files out of ${totalFiles} total files`;
+ if (navigationErrors.length > 0) {
+ output += ` + ${navigationErrors.length} navigation errors`;
+ }
+ output += `\n`;
writeFileSync(outputFile, output);
console.log(`Results saved to ${outputFile}`);
console.log(
`${totalErrors} errors found in ${validationResults.filter((r) => r.errors.length > 0).length} files`,
);
+ if (navigationErrors.length > 0) {
+ console.log(`${navigationErrors.length} navigation errors found`);
+ }
} else {
// Use default printErrors for console output
printErrors(validationResults, true);
+
+ // Print navigation errors
+ if (navigationErrors.length > 0) {
+ console.log("\n❌ Navigation URL Errors:");
+ for (const error of navigationErrors) {
+ console.log(` ${error.tree}: ${error.url} - ${error.reason}`);
+ }
+ }
}
}
@@ -136,4 +180,86 @@ function getFiles(scope?: string | null) {
return Promise.all(promises);
}
+function extractUrlsFromNavigation(
+ nodes: NavigationNode[],
+ urls: string[] = [],
+): string[] {
+ for (const node of nodes) {
+ if (node.type === "page") {
+ const page = node as NavigationPage;
+ // Only validate internal URLs (not external links)
+ if (!page.external && page.url) {
+ urls.push(page.url);
+ }
+ } else if (node.type === "folder") {
+ const folder = node as NavigationFolder;
+ if (folder.index && !folder.index.external) {
+ urls.push(folder.index.url);
+ }
+ if (folder.children) {
+ extractUrlsFromNavigation(folder.children, urls);
+ }
+ }
+ }
+ return urls;
+}
+
+async function validateNavigationUrls(
+ scanned: Awaited>,
+): Promise> {
+ const navigationTrees = {
+ "Ethereum & EVM": ethereumEvmTree,
+ "Arbitrum Stylus": arbitrumStylusTree,
+ Stellar: stellarTree,
+ Midnight: midnightTree,
+ Starknet: starknetTree,
+ "Zama FHEVM": zamaTree,
+ "Uniswap Hooks": uniswapTree,
+ Polkadot: polkadotTree,
+ "OpenZeppelin Impact": impactTree,
+ };
+
+ const errors: Array<{ tree: string; url: string; reason: string }> = [];
+
+ for (const [treeName, tree] of Object.entries(navigationTrees)) {
+ const urls = extractUrlsFromNavigation(tree.children);
+
+ for (const url of urls) {
+ // Split URL into path and fragment
+ const [urlPath, fragment] = url.split("#");
+
+ // Check if the URL path exists in the scanned pages
+ // scanned.urls is a Map
+ const found = scanned.urls.has(urlPath);
+
+ if (!found) {
+ // Check fallback URLs (dynamic routes)
+ const foundInFallback = scanned.fallbackUrls.some((fallback) =>
+ fallback.url.test(urlPath),
+ );
+
+ if (!foundInFallback) {
+ errors.push({
+ tree: treeName,
+ url,
+ reason: "URL not found in site pages",
+ });
+ }
+ } else if (fragment) {
+ // If URL has a fragment, validate that the fragment exists on the page
+ const urlMeta = scanned.urls.get(urlPath);
+ if (urlMeta?.hashes && !urlMeta.hashes.includes(fragment)) {
+ errors.push({
+ tree: treeName,
+ url,
+ reason: `Fragment '#${fragment}' not found on page`,
+ });
+ }
+ }
+ }
+ }
+
+ return errors;
+}
+
void checkLinks();
diff --git a/src/lib/openapi.ts b/src/lib/openapi.ts
index 1532aa44..a803c68a 100644
--- a/src/lib/openapi.ts
+++ b/src/lib/openapi.ts
@@ -2,6 +2,6 @@ import { createOpenAPI } from "fumadocs-openapi/server";
export const openapi = createOpenAPI({
input: [
- "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-relayer/refs/heads/main/docs/openapi.json",
+ "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-relayer/refs/heads/main/openapi.json",
],
});
diff --git a/src/navigation/stellar.json b/src/navigation/stellar.json
index 2fe4e815..6387c3d4 100644
--- a/src/navigation/stellar.json
+++ b/src/navigation/stellar.json
@@ -82,182 +82,6 @@
"name": "Changelog",
"url": "/stellar-contracts/changelog"
},
- {
- "type": "folder",
- "name": "Previous Versions",
- "children": [
- {
- "type": "folder",
- "name": "v0.3.0",
- "children": [
- {
- "type": "page",
- "name": "Overview",
- "url": "/stellar-contracts/0.3.0"
- },
- {
- "type": "page",
- "name": "Get Started",
- "url": "/stellar-contracts/0.3.0/get-started"
- },
- {
- "type": "folder",
- "name": "Access Control",
- "children": [
- {
- "type": "page",
- "name": "Access Control",
- "url": "/stellar-contracts/0.3.0/utils/access/access-control"
- },
- {
- "type": "page",
- "name": "Ownable",
- "url": "/stellar-contracts/0.3.0/utils/access/ownable"
- }
- ]
- },
- {
- "type": "folder",
- "name": "Tokens",
- "children": [
- {
- "type": "folder",
- "name": "Fungible",
- "children": [
- {
- "type": "page",
- "name": "Fungible Token",
- "url": "/stellar-contracts/0.3.0/tokens/fungible/fungible"
- },
- {
- "type": "page",
- "name": "SAC Admin Generic",
- "url": "/stellar-contracts/0.3.0/tokens/fungible/sac-admin-generic"
- },
- {
- "type": "page",
- "name": "SAC Admin Wrapper",
- "url": "/stellar-contracts/0.3.0/tokens/fungible/sac-admin-wrapper"
- }
- ]
- },
- {
- "type": "folder",
- "name": "Non-Fungible",
- "children": [
- {
- "type": "page",
- "name": "Non-Fungible Token",
- "url": "/stellar-contracts/0.3.0/tokens/non-fungible/non-fungible"
- },
- {
- "type": "page",
- "name": "NFT Consecutive",
- "url": "/stellar-contracts/0.3.0/tokens/non-fungible/nft-consecutive"
- },
- {
- "type": "page",
- "name": "NFT Enumerable",
- "url": "/stellar-contracts/0.3.0/tokens/non-fungible/nft-enumerable"
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "Utilities",
- "children": [
- {
- "type": "page",
- "name": "Cryptography",
- "url": "/stellar-contracts/0.3.0/utils/crypto"
- },
- {
- "type": "page",
- "name": "Pausable",
- "url": "/stellar-contracts/0.3.0/utils/pausable"
- },
- {
- "type": "page",
- "name": "Upgradeable",
- "url": "/stellar-contracts/0.3.0/utils/upgradeable"
- }
- ]
- },
- {
- "type": "folder",
- "name": "Helpers",
- "children": [
- {
- "type": "page",
- "name": "Default Implementation Macro",
- "url": "/stellar-contracts/0.3.0/helpers/default-impl-macro"
- }
- ]
- }
- ]
- },
- {
- "type": "folder",
- "name": "v0.2.0",
- "children": [
- {
- "type": "page",
- "name": "Overview",
- "url": "/stellar-contracts/0.2.0"
- },
- {
- "type": "page",
- "name": "Get Started",
- "url": "/stellar-contracts/0.2.0/get-started"
- },
- {
- "type": "folder",
- "name": "Tokens",
- "children": [
- {
- "type": "page",
- "name": "Fungible Token",
- "url": "/stellar-contracts/0.2.0/tokens/fungible"
- },
- {
- "type": "page",
- "name": "Non-Fungible Token",
- "url": "/stellar-contracts/0.2.0/tokens/non-fungible"
- },
- {
- "type": "page",
- "name": "NFT Consecutive",
- "url": "/stellar-contracts/0.2.0/tokens/nft-consecutive"
- },
- {
- "type": "page",
- "name": "NFT Enumerable",
- "url": "/stellar-contracts/0.2.0/tokens/nft-enumerable"
- }
- ]
- },
- {
- "type": "folder",
- "name": "Utilities",
- "children": [
- {
- "type": "page",
- "name": "Pausable",
- "url": "/stellar-contracts/0.2.0/utils/pausable"
- },
- {
- "type": "page",
- "name": "Upgradeable",
- "url": "/stellar-contracts/0.2.0/utils/upgradeable"
- }
- ]
- }
- ]
- }
- ]
- },
{
"type": "separator",
"name": "Open Source Tools"