sozoo-axios-fetch-adapter v0.12.3
axios-fetch-adapter
An Axios adapter that uses native fetch or a custom fetch function. Useful for Cloudflare Workers and ServiceWorker environments.
Note: This adapter was designed for version
0.21.1of Axios, which is still used in prominent e-commerce SDKs.
Install
npm install @haverstack/axios-fetch-adapterUse
The default use-case for this library is:
import axios from "axios";
import fetchAdapter from "@haverstack/axios-fetch-adapter";
const client = axios.create({
adapter: fetchAdapter
});Using with custom fetch functions
If your application does not use a globally-available fetch, you can specify your own custom fetch function instead:
import axios from "axios";
import { createFetchAdapter } from "@haverstack/axios-fetch-adapter";
import myCustomFetch from "my-custom-fetch";
const myCustomFetchAdapter = createFetchAdapter({ fetch: myCustomFetch });
const client = axios.create({
adapter: myCustomFetchAdapter
});If your application allows for using non-fully-qualified URLs, e.g. /foo, use the disableRequest option to pass URLs directly to your custom fetch function without creating a Request object:
import axios from "axios";
import { createFetchAdapter } from "@haverstack/axios-fetch-adapter";
import myCustomFetch from "my-custom-fetch";
const customAdapter = createFetchAdapter({
fetch: myCustomFetch,
disableRequest: true
});
const client = axios.create({
adapter: myCustomFetchAdapter
});Note: A side effect of the disableRequest option is that the AxiosResponse object will only have the request URL in its request property instead of a Request object. This means that accessing, for example, response.request.url will throw an error.
Using with the Square Node.js SDK
To use this library with the square package to manage your Square resources:
import { Client, Environment } from "square";
import fetchAdapter from "@haverstack/axios-fetch-adapter";
const client = new Client({
accessToken,
environment,
unstable_httpClientOptions: { adapter: fetchAdapter }
});Development
# Run tests
npm run test
# Check tests, linting, and formatting
npm run check
# Fix linting and formatting
npm run fixA Miniflare testing environment is used in order to simulate a Cloudflare Worker or a ServiceWorker. This testing environment is also useful because Node does not have a native implementation of fetch.
Acknowledgements
The code in this repo draws heavily from the following projects:
- vespaiach/axios-fetch-adapter: Most of the initial code in this repo was copied from here. Licensed MIT.
- axios/axios: The
buildFullPathfunction fromaxioshas been copied here and modified to be more flexible. Licensed MIT.