SkillAgentSearch skills...

Minireq

A minimal request library for the browser

Install / Use

/learn @jvanbruegge/Minireq
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

minireq

build docs codecov code style: prettier

A minimal request library built on XMLHTTPRequest for the browser, and for nodejs with the same API.

Documentation on Github Pages

Why not fetch, axios or superagent

fetch is too bare bones and also does not support features like progress indication. axios and superagent are neither minimal nor are they written with ES modules with makes them awkward to bundle.

Also I want a request library with better types than currently available.

Example

import { makeRequest } from '@minireq/browser';
// If you are using nodejs, you can use
// import { makeRequest } from '@minireq/node';

const request = makeRequest();

const { promise, abort } = request({
    method: 'GET',
    url: '/api/users',
});

// Abort on user click
document.querySelector('button.abortRequest').addEventListener('click', () => {
    abort();
});

promise.then(({ status, data }) => {
    if (status === 200) {
        console.log(data.name);
    }
});

Making a post request, with a timeout on 500ms

import { makeRequest } from '@minireq/browser';

const request = makeRequest();

const { promise } = request({
    method: 'POST',
    url: '/api/users',
    send: {
        name: 'Peter',
        age: 50,
        children: [],
    },
    timeout: 500,
});

promise.then(({ status, data }) => {
    if (status === 201) {
        console.log(data.id);
    }
});

Using a custom content type

import { makeRequest, defaultSerializers } from '@minireq/browser';

const serializer = {
    parse: (data: string) => data.split('\n').map(x => JSON.parse(x)),
    convert: (data: any) => {
        if (!Array.isArray(data)) {
            return [JSON.stringify(data)];
        } else {
            return data.map(x => JSON.stringify(x)).join('\n');
        }
    },
};

const { request } = makeRequest({
    ...defaultSerializers,
    'application/ndjson': serializer,
});

const { promise, abort } = request({
    method: 'GET',
    url: '/api/users',
    accept: 'application/ndjson',
});

const { status, data } = await promise;

if (status === 200) {
    console.log(data.length);
}
View on GitHub
GitHub Stars45
CategoryDevelopment
Updated2y ago
Forks2

Languages

TypeScript

Security Score

65/100

Audited on Aug 8, 2023

No findings