Meet npm Pro: unlimited public & private packages + package-based permissions.Learn more »

koajax

0.6.0 • Public • Published

KoAJAX

HTTP Client based on Koa-like middlewares

NPM Dependency Build Status

NPM

Usage

RESTful API with Token-based Authorization

import { HTTPClient } from 'koajax';
 
var token = '';
 
export const client = new HTTPClient().use(
    async ({ request: { method, path, headers }, response }, next) => {
        if (token) headers['Authorization'] = 'token ' + token;
 
        await next();
 
        if (method === 'POST' && path.startsWith('/session'))
            token = response.headers.Token;
    }
);
 
client.get('/path/to/your/API').then(console.log);

Up/Download files

(based on Iterable Observer)

import { request } from 'koajax';
 
document.querySelector('input[type="file"]').onchange = async ({
    target: { files }
}) => {
    for (const file of files) {
        const { upload, download, response } = request({
            method: 'POST',
            path: '/files',
            body: file,
            responseType: 'json'
        });
 
        for await (const { loaded } of upload)
            console.log(`Upload ${file.name} : ${(loaded / file.size) * 100}%`);
 
        const { body } = await response;
 
        console.log(`Upload ${file.name} : ${body.url}`);
    }
};

Global Error fallback

npm install browser-unhandled-rejection
import { auto } from 'browser-unhandled-rejection';
import { HTTPError } from 'koajax';
 
auto();
 
self.addEventListener('unhandledrejection', event => {
    if (!(event.reason instanceof URIError)) return;
 
    const { message } = (event.reason as HTTPError).body;
 
    if (!message) return;
 
    event.preventDefault();
 
    self.alert(message);
});

Install

npm i koajax

DownloadsWeekly Downloads

34

Version

0.6.0

License

LGPL-3.0

Unpacked Size

80.4 kB

Total Files

15

Last publish

Collaborators

  • avatar