- Notifications
You must be signed in to change notification settings - Fork2
Async lightweight http client with in-built reconciliation
License
FeezyHendrix/possum
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Possum
is a TypeScript library designed to enhance the reliability of HTTP requests in web applications. Itautomatically retries failed HTTP requests by leveraging local storage and web workers. This ensures that even if a usergoes offline or encounters an error, their requests are stored and retried upon re-establishing a connection orreloading the page.
- Automatic Retry: Failed requests are retried automatically.
- Local Storage: Requests are stored locally in case of failure.
- Web Workers: Requests are retried in a separate thread to maintain UI responsiveness.
- Configurable: Easy to configure for different use cases.
npm install possum-client
Or using yarn:
yarn add possum-client
First, import and initializePossum
in your application.
import{PossumClient}from"possum-client";
UseperformPossumRequest
to handle your HTTP requests:
import{PossumClient}from"possum-client";const{performPossumRequest}=PossumClient();constrequestData={url:'https://example.com/data',method:'GET'};performPossumRequest(requestData).then(response=>console.log(response)).catch(error=>console.error(error));
interfacePossumeRequest{url:string;method:'GET'|'POST'|'PUT'|'PATCH'|'DELETE';data?:any,headers:any;}
interfacePossumClientOptions{/** * Options to define the storage possum would use to store failed requests. */store?:PossumStoreConfigOptions;/** * If true possum would attach an event listener to process stored failed requests on `DOMContentLoaded`. * This option only works while on the browser */retryOnPageLoad?:boolean;}
import{PossumClient}from"possum-client";import{createClient}from'redis';constredisClient=awaitcreateClient().on('error',err=>console.log('Redis Client Error',err)).connect();// configuring possum to use redis to store failed requestsconst{performPossumRequest}=PossumClient({store:{get:async(id)=>{constdata=awaitredisClient.get(id);returndata ?JSON.parse(data) :null;},set:async(id,data)=>{awaitredisClient.set(id,JSON.stringify(data))}}});constrequestData={url:'https://example.com/data',method:'GET'};performPossumRequest(requestData).then(response=>console.log(response)).catch(error=>console.error(error));
performPossumRequest(request: Request): Promise<any>
processFailedRequestsOnLoad(): void
PossumClient(options?: PossumClientOptions): { performPossumRequest, processFailedRequestsOnLoad }
Contributions are always welcome!If you have new features to introduce or bugs to squash, kindly submitaPull Request (PR) to make your mark. Your participation is highlyappreciated.
This project is licensed under the MIT License - see theLICENSE file for details.
About
Async lightweight http client with in-built reconciliation