Skip to main content
The Deno 2 Release Candidate is here
Learn more

exFetch (Deno)

License GitHub Repository GitHub Stars GitHub Contributors GitHub Issues GitHub Pull Requests GitHub Discussions CodeFactor Grade

Releases Latest (GitHub Latest Release Date) Pre (GitHub Latest Pre-Release Date)
GitHub GitHub Total Downloads GitHub Latest Release Version GitHub Latest Pre-Release Version

📝 Description

A Deno module to extend fetch.

This project is inspired from:

🌟 Feature

  • Build in random retry delay.
  • Build in retry request.
  • Build in simplify paginate requests.

📚 Documentation (Excerpt)

For the full documentation, please visit the GitHub Repository Wiki.

Getting Started

  • Deno >= v1.35.0
    • allow-net (Allow Network Addresses): Resources Domain
/* Either */
import { ... } from "<URL>";// Named Import
import * as exFetch from "<URL>";// Namespace Import
import exFetch from "<URL>";// Default Import (Function `exFetch`)
Domain / Registry URL
Deno Land https://deno.land/x/exfetch[@<Tag>]/mod.ts
DenoPKG https://denopkg.com/hugoalh-studio/exfetch-deno[@<Tag>]/mod.ts
GitHub Raw * https://raw.githubusercontent.com/hugoalh-studio/exfetch-deno/<Tag>/mod.ts
Pax https://pax.deno.dev/hugoalh-studio/exfetch-deno[@<Tag>]/mod.ts

*: Must provide a tag.

API

Class

  • ExFetch

Function

  • exFetch
  • exFetchPaginate

Interface / Type

  • ExFetchEventName
  • ExFetchEventOnRetryPayload
  • ExFetchOptions
  • ExFetchPaginateOptions
  • ExFetchRetryOptions

Example

let responses: Response[] = await exFetchPaginate("https://api.github.com/repos/microsoft/vscode/labels?per_page=100");

responses.map((response: Response) => {
  return response.ok;
}).includes(false);
//=> false (`false` when no broken page, otherwise `true`)

let result = [];
for (let response in responses) {
  result = await response.json();
}
result;
/*=>
[
  {
    "id": 2339554941,
    "node_id": "MDU6TGFiZWwyMzM5NTU0OTQx",
    "url": "https://api.github.com/repos/microsoft/vscode/labels/:apple:%20si",
    "name": ":apple: si",
    "color": "e99695",
    "default": false,
    "description": "Issues related to apple silicon"
  },
  {
    "id": 421131022,
    "node_id": "MDU6TGFiZWw0MjExMzEwMjI=",
    "url": "https://api.github.com/repos/microsoft/vscode/labels/*as-designed",
    "name": "*as-designed",
    "color": "E2A1C2",
    "default": false,
    "description": "Described behavior is as designed"
  },
  {
    "id": 409283388,
    "node_id": "MDU6TGFiZWw0MDkyODMzODg=",
    "url": "https://api.github.com/repos/microsoft/vscode/labels/*caused-by-extension",
    "name": "*caused-by-extension",
    "color": "E2A1C2",
    "default": false,
    "description": "Issue identified to be caused by an extension"
  },
  {
    "id": 766755777,
    "node_id": "MDU6TGFiZWw3NjY3NTU3Nzc=",
    "url": "https://api.github.com/repos/microsoft/vscode/labels/*dev-question",
    "name": "*dev-question",
    "color": "E2A1C2",
    "default": false,
    "description": "VS Code Extension Development Question"
  },
  {
    "id": 366106217,
    "node_id": "MDU6TGFiZWwzNjYxMDYyMTc=",
    "url": "https://api.github.com/repos/microsoft/vscode/labels/*duplicate",
    "name": "*duplicate",
    "color": "E2A1C2",
    "default": false,
    "description": "Issue identified as a duplicate of another issue(s)"
  },
  ... +467
]
*/