Wrapper for XMLHttpRequest with better data-structures
npm install @swan-io/request


> Wrapper for fetch with better data-structures
``bash`
$ yarn add @swan-io/request @swan-io/boxed--- or ---
$ npm install --save @swan-io/request @swan-io/boxed
- Has a strong contract with data-structures from Boxed (Future, Result & Option)Future
- Makes the request easily cancellable with APItype
- Gives freedom of interpretation for response status
- Handles timeouts
- Types the response using the provided
`ts
import { Request, badStatusToError, emptyToError } from "@swan-io/request";
// Regular case
Request.make({ url: "/api/health", type: "text" }).onResolve(console.log);
// Result.Ok({status: 200, ok: true, response: Option.Some("{\"ok\":true}")})
// Timeout
Request.make({ url: "/api/health", type: "text", timeout: 2000 }).onResolve(
console.log,
);
// Result.Error(TimeoutError)
// Network error
Request.make({ url: "/api/health", type: "text" }).onResolve(console.log);
// Result.Error(NetworkError)
// Custom response type
Request.make({ url: "/api/health", type: "json" }).onResolve(console.log);
// Result.Ok({status: 200, ok: true, response: Option.Some({ok: true})})
// Handle empty response as an error
Request.make({ url: "/api/health", type: "text" })
.mapOkToResult(emptyToError)
.onResolve(console.log);
// Result.Error(EmptyResponseError)
// Handle bad status as an error
Request.make({ url: "/api/health", type: "text" })
.mapOkToResult(badStatusToError)
.onResolve(console.log);
// Result.Error(BadStatusError)
// Cancel request
useEffect(() => {
const future = Request.make({ url: "/api/health", type: "text" });
return () => future.cancel();
}, []);
`
#### config
- url: stringmethod
- : GET (default), POST, OPTIONS, PATCH, PUT or DELETEtype
- :text
- : (default) response will be a stringarraybuffer
- : response will be a ArrayBufferblob
- : response will be Blobjson
- : response will be a JSON valuebody
- : request bodyheaders
- : a record containing the headerscreatials
- : omit, same-origin or includetimeout
- : number
#### Return value
Returns a Future, where Response has the following properties:
- status: numberok
- : booleanresponse
- : Optionurl
- : stringheaders
- : Headers
T is the type associated with the responseType provided in the config object.
Helper to use with mapOkToResult to consider empty response as an error.
Helper to use with mapOkToResult` to consider a status outside of the 200-299 range as an error.