A package to query the status of Hyperlane messages with user-provided parameters.
npm install @bvvvp009/hyperstatus
import { queryGraphQL } from '@bvvvp009/hyperstatus';
const fetchMessages = async () => {
const params = { search: '0x1234...' };
const messages = await queryGraphQL(params);
console.log(messages);
};
fetchMessages();
import { startPolling } from '@bvvvp009/hyperstatus';
const pendingMessageIds = ['0x123...', '0x456...']; //tx hash from the
const handleMessages = (messages) => {
messages.forEach(message => {
console.log(`Message ${message.id} status: ${message.status}`);
});
};
// Start polling every 60 seconds
startPolling(pendingMessageIds, 60000, handleMessages);
import React, { useState, useEffect } from 'react';
import { queryGraphQL, startPolling } from '@bvvvp009/hyperstatus';
import { toast, ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
function App() {
queryGraphQL({ search:'0xbf28e675bcc8fd109cb4162d1581c27d171bae36d762635a6e5dc8533b232d89' }).then(initialResults => {
// setresult(initialResults)
// Start polling for pending messages
console.log('initials results',initialResults)
const pendingMessageIds = initialResults
.filter(msg => msg.status === 'Pending' && !msg.isNonEVM)
.map(msg => msg.id);
console.log("pending",pendingMessageIds)
startPolling(pendingMessageIds,40000, (updatedMessages) => {
console.log('Updated messages:', updatedMessages);
// Handle updated messages (e.g., update UI, show notifications, etc.)
const Msg = ({ closeToast, toastProps }) => (
<div>
<div>Message status {updatedMessages[0]?.status}</div>
<div>From:{updatedMessages[0]?.from || 'Unknown Chain'}</div>
<div>To:{updatedMessages[0]?.to || 'Unknown Chain'}</div>
</div>
);
toast(<Msg/>,{toastId:updatedMessages[0]?.details?.msg_id})
});
});
return (
<div>
<ToastContainer limit={3}/>
</div>
);
}
export default App;
queryGraphQL(params: any): Promise<any[]> Queries the GraphQL API with the provided parameters and returns an array of message objects.
checkPendingMessages(pendingMessageIds: string[]): Promise<any[]> Checks the status of the pending messages and returns an array of updated message objects.
startPolling(pendingMessageIds: string[], interval: number, callback?: (messages: any[]) => void) Starts polling for the status of the pending messages at the specified interval and calls the callback function with the updated messages.