TypeScript icon, indicating that this package has built-in type declarations

4.1.0 • Public • Published


Motorcycle Components and functions for dealing with HTTP

This is a thin abstraction and helpful functions built on top of most-request, which uses superagent under the hood.

Let me have it!

yarn add @motorcycle/http
# or
npm install --save @motorcycle/http


  • All functions of arity 2 or more are curried for you!
  • Types not described in the API can be found in the Types section.

Http(sinks: HttpSinks): HttpSources

Effectful component for making HTTP requests and retrieving HTTP responses.

import { run } from '@motorcycle/run';
import { Http } from '@motorcycle/http';

function Effects(sinks) {
  const { response$$ } = Http(sinks);

  return { response$$ }

run(Main, Effects);

request(method: HTTPMethod, url: string): RequestOptions

Create simple RequestOptions objects for use with Http component.

function Main(sources) {
  const { dom } = sources;


  const request$ = constant(request('GET', URL), makeRequest$);

  return { request$ }

There are also many functions similar to request that are for particular HTTP methods, all of which take a URL string and return RequestOptions.

  • get(url: string): RequestOptions
  • head(url: string): RequestOptions
  • post(url: string): RequestOptions
  • put(url: string): RequestOptions
  • del(url: string): RequestOptions
  • connect(url: string): RequestOptions
  • options(url: string): RequestOptions
  • trace(url: string): RequestOptions
  • patch(url: string): RequestOptions


All of the types used in the API section.

export interface HttpSinks {
    request$: Stream<RequestOptions>;

export interface HttpSources {
    response$$: Stream<ResponseStream>;

export interface Response {
    text: string;
    body: any;
    files: any;
    header: any;
    type: string;
    charset: string;
    status: number;
    statusType: number;
    info: boolean;
    ok: boolean;
    redirect: boolean;
    clientError: boolean;
    serverError: boolean;
    error: Error;
    accepted: boolean;
    noContent: boolean;
    badRequest: boolean;
    unauthorized: boolean;
    notAcceptable: boolean;
    notFound: boolean;
    forbidden: boolean;
    xhr: XMLHttpRequest;
    get(header: string): string;

export declare type HTTPMethod =
  'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';

export interface RequestOptions {
    url: string;
    method: HTTPMethod;
    query?: Object;
    send?: Object;
    headers?: Object;
    accept?: string;
    type?: string;
    user?: string;
    password?: string;
    field?: Object;
    progress?: boolean;
    attach?: Array<Attachment>;
    agent?: AgentOptions;
    withCredentials?: boolean;
    redirects?: number;
    lazy?: boolean;

export interface Attachment {
    name: string;
    path: string;
    filename?: string;

export interface AgentOptions {
    key: string;
    cert: string;




Package Sidebar


npm i @motorcycle/http

Weekly Downloads






Last publish


  • tylors
  • motorcyclets
  • frikki