Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/trim21/gm-fetch

fetch API for `GM.xmlHttpRequest`
https://github.com/trim21/gm-fetch

fetch javascript userscript

Last synced: about 2 months ago
JSON representation

fetch API for `GM.xmlHttpRequest`

Awesome Lists containing this project

README

        

# fetch for UserScript

using fetch based on `GM.xmlHttpRequest` in userscript.

**Don't forget to add `@grant GM.xmlHttpRequest` and `@connect` in your metadata**

## Introduction

It's not 100% same with fetch API because some security limit like cors site request doesn't exist on `GM.xmlHttpRequest`.

And `AbortSignal` is not supported very well due to the limitation of `GM.xmlHttpRequest`.

You can set some HTTP headers allowed by `GM.xmlHttpRequest` but not allowed by standard fetch API.

## Example

add this script to UserScript manager and visit

```javascript
// ==UserScript==
// @name new user script
// @version 0.0.1
// @match https://example.com/*
// @grant GM.xmlHttpRequest
// @require https://cdn.jsdelivr.net/npm/@trim21/gm-fetch
// @run-at document-end
// @connect httpbin.org
// ==/UserScript==

(async () => {
const res = await GM_fetch("https://httpbin.org/headers", { method: "GET" });
const data = await res.json();
console.log(data);
})();
```

(you can't use `@require https://cdn.jsdelivr.net/npm/@trim21/gm-fetch` directly if you want to upload your script to GreasyFork,
you will need to specify version you want to use, for example `@require https://cdn.jsdelivr.net/npm/@trim21/[email protected]`)

## if you are using js bundler

ES Module:

```javascript
import GM_fetch from "@trim21/gm-fetch";
```

CommonJS (not recommended):

```javascript
const GM_fetch = require("@trim21/gm-fetch");
```

## Browser Compatibility

This package is using `Request` and `Response` class, it so requires a browser with fetch API support.

## Licence

MIT