purest
Version:
REST API Client Library
440 lines (423 loc) • 8.31 kB
TypeScript
import {
RequestOptions as RequestComposeOptions,
AuthOptions,
ClientResponse,
BufferResponse,
StreamResponse,
} from 'request-compose'
// ----------------------------------------------------------------------------
/**
* Purest instance config
*/
export interface PurestInstanceConfig {
/**
* Purest providers config
*/
config?: PurestConfig
/**
* Provider name
*/
provider?: string
/**
* Instance defaults
*/
defaults?: PurestOptions
/**
* Method aliases
*/
methods?: PurestMethods
}
/**
* Purest config
*/
export interface PurestConfig {
/**
* Provider name
*/
[provider: string]: {
[endpoint: string]: PurestOptions | undefined
} | undefined
}
/**
* Request options
*/
export interface PurestOptions extends RequestComposeOptions {
/**
* Path part to replace the {path} with, or absolute URL
*/
get?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
head?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
post?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
put?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
patch?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
options?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
delete?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
trace?: string
/**
* Path part to replace the {path} with, or absolute URL
*/
connect?: string
/**
* Return the response body as buffer
*/
buffer?: boolean
/**
* Return the response stream
*/
stream?: boolean
/**
* Origin part of the URL
*/
origin?: string
/**
* Path part of the URL; to be used with origin
*/
path?: string
/**
* {subdomain} part of the URL to replace in origin
*/
subdomain?: string
/**
* {version} part of the URL to replace in path
*/
version?: string
/**
* {type} part of the URL to replace in path; usually json or xml
*/
type?: string
/**
* Endpoint name to use
*/
endpoint?: string
/**
* List of values to replace {auth} with, or basic auth
*/
auth?: string | [] | AuthOptions
}
/**
* Method Overrides
*/
export interface PurestMethods {
/**
* get method aliases
*/
get?: string[]
/**
* head method aliases
*/
head?: string[]
/**
* post method aliases
*/
post?: string[]
/**
* put method aliases
*/
put?: string[]
/**
* patch method aliases
*/
patch?: string[]
/**
* options method aliases
*/
options?: string[]
/**
* delete method aliases
*/
delete?: string[]
/**
* trace method aliases
*/
trace?: string[]
/**
* connect method aliases
*/
connect?: string[]
/**
* method method aliases
*/
method?: string[]
/**
* headers method aliases
*/
headers?: string[]
/**
* timeout method aliases
*/
timeout?: string[]
/**
* agent method aliases
*/
agent?: string[]
/**
* url method aliases
*/
url?: string[]
/**
* proxy method aliases
*/
proxy?: string[]
/**
* qs method aliases
*/
qs?: string[]
/**
* form method aliases
*/
form?: string[]
/**
* json method aliases
*/
json?: string[]
/**
* body method aliases
*/
body?: string[]
/**
* multipart method aliases
*/
multipart?: string[]
/**
* oauth method aliases
*/
oauth?: string[]
/**
* encoding method aliases
*/
encoding?: string[]
/**
* redirect method aliases
*/
redirect?: string[]
/**
* request method aliases
*/
request?: string[]
/**
* buffer method aliases
*/
buffer?: string[]
/**
* stream method aliases
*/
stream?: string[]
/**
* origin method aliases
*/
origin?: string[]
/**
* path method aliases
*/
path?: string[]
/**
* subdomain method aliases
*/
subdomain?: string[]
/**
* version method aliases
*/
version?: string[]
/**
* type method aliases
*/
type?: string[]
/**
* endpoint method aliases
*/
endpoint?: string[]
/**
* auth method aliases
*/
auth?: string[]
}
// ----------------------------------------------------------------------------
/**
* Purest request instance
*/
export type PurestRequest = (options: PurestOptions) => Promise<PurestResponse>
/**
* Purest endpoint instance
*/
export type PurestEndpoint = (endpoint?: string) => PurestAPI
/**
* Purest chain instance
*/
export interface PurestAPI {
/**
* Path part to replace the {path} with, or absolute URL
*/
get(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
head(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
post(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
put(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
patch(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
options(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
delete(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
trace(path?: string): PurestAPI
/**
* Path part to replace the {path} with, or absolute URL
*/
connect(path?: string): PurestAPI
/**
* HTTP method name
*/
method(name: string): PurestAPI
/**
* HTTP headers
*/
headers(headers: object): PurestAPI
/**
* Request timeout in milliseconds, defaults to 3000
*/
timeout(timeout: number): PurestAPI
/**
* HTTP agent
*/
agent(agent: object): PurestAPI
/**
* Absolute URL
*/
url(url: string): PurestAPI
/**
* Proxy URL; for HTTP use Agent instead
*/
proxy(proxy: string): PurestAPI
/**
* URL querystring
*/
qs(querystring: object | string): PurestAPI
/**
* application/x-www-form-urlencoded request body
*/
form(form: object | string): PurestAPI
/**
* JSON encoded request body
*/
json(json: object | string): PurestAPI
/**
* Raw request body
*/
body(body: string | Buffer | object): PurestAPI
/**
* multipart/form-data as object or multipart/related as array
*/
multipart(body: object | []): PurestAPI
/**
* OAuth 1.0a authentication
*/
oauth(oauth: object): PurestAPI
/**
* Response encoding
*/
encoding(name: string): PurestAPI
/**
* Redirect options
*/
redirect(options: object): PurestAPI
/**
* Parsed response body
*/
request(options?: PurestOptions): Promise<ClientResponse>
/**
* Response body as buffer
*/
buffer(options?: PurestOptions): Promise<BufferResponse>
/**
* Response stream
*/
stream(options?: PurestOptions): Promise<StreamResponse>
/**
* Origin part of the URL
*/
origin(origin: string): PurestAPI
/**
* Path part of the URL; to be used with origin
*/
path(path: string): PurestAPI
/**
* {subdomain} part of the URL to replace in origin
*/
subdomain(subdomain: string): PurestAPI
/**
* {version} part of the URL to replace in path
*/
version(version: string): PurestAPI
/**
* {type} part of the URL to replace in path; usually json or xml
*/
type(type: string): PurestAPI
/**
* Endpoint name to use
*/
endpoint(name: string): PurestAPI
/**
* List of values to replace {auth} with
*/
auth(...values: string[]): PurestAPI
/**
* Array of values to replace {auth} with
*/
auth(value: string[]): PurestAPI
/**
* Basic auth
*/
auth(basic: {user: string, pass: string}): PurestAPI
}
// ----------------------------------------------------------------------------
/**
* Purest response
*/
export type PurestResponse = ClientResponse & BufferResponse & StreamResponse
// ----------------------------------------------------------------------------
/**
* Purest
*/
declare function purest (config?: PurestInstanceConfig): PurestRequest & PurestEndpoint & PurestAPI
/**
* Purest
*/
declare module purest {}
export default purest