Skip to content

Commit

Permalink
@uppy/companion-client: add support for AbortSignal (#4201)
Browse files Browse the repository at this point in the history
  • Loading branch information
aduh95 authored Nov 8, 2022
1 parent 875bc0b commit 0b0289f
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 8 deletions.
24 changes: 20 additions & 4 deletions packages/@uppy/companion-client/src/RequestClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,11 +150,12 @@ export default class RequestClient {
}))
}

async #request ({ path, method = 'GET', data, skipPostResponse }) {
async #request ({ path, method = 'GET', data, skipPostResponse, signal }) {
try {
const headers = await this.preflightAndHeaders(path)
const response = await fetchWithNetworkError(this.#getUrl(path), {
method,
signal,
headers,
credentials: this.opts.companionCookiesRule || 'same-origin',
body: data ? JSON.stringify(data) : null,
Expand All @@ -167,9 +168,24 @@ export default class RequestClient {
}
}

async get (path, skipPostResponse) { return this.#request({ path, skipPostResponse }) }
async get (path, options = undefined) {
// TODO: remove boolean support for options that was added for backward compatibility.
// eslint-disable-next-line no-param-reassign
if (typeof options === 'boolean') options = { skipPostResponse: options }
return this.#request({ ...options, path })
}

async post (path, data, skipPostResponse) { return this.#request({ path, method: 'POST', data, skipPostResponse }) }
async post (path, data, options = undefined) {
// TODO: remove boolean support for options that was added for backward compatibility.
// eslint-disable-next-line no-param-reassign
if (typeof options === 'boolean') options = { skipPostResponse: options }
return this.#request({ ...options, path, method: 'POST', data })
}

async delete (path, data, skipPostResponse) { return this.#request({ path, method: 'DELETE', data, skipPostResponse }) }
async delete (path, data = undefined, options) {
// TODO: remove boolean support for options that was added for backward compatibility.
// eslint-disable-next-line no-param-reassign
if (typeof options === 'boolean') options = { skipPostResponse: options }
return this.#request({ ...options, path, method: 'DELETE', data })
}
}
28 changes: 24 additions & 4 deletions packages/@uppy/companion-client/types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,40 @@ export interface TokenStorage {
removeItem: (key: string) => Promise<void>
}

type CompanionHeaders = Record<string, string>

export interface RequestClientOptions {
companionUrl: string
companionHeaders?: Record<string, unknown>
companionHeaders?: CompanionHeaders
companionCookiesRule?: RequestCredentials
}

type RequestOptions = {
skipPostResponse?: boolean,
signal?: AbortSignal,
}

export class RequestClient {
constructor (uppy: Uppy, opts: RequestClientOptions)

get (path: string): Promise<any>
readonly hostname: string

setCompanionHeaders(headers: CompanionHeaders): void

get<T = unknown> (path: string, options?: RequestOptions): Promise<T>

/** @deprecated use option bag instead */
get<T = unknown> (path: string, skipPostResponse: boolean): Promise<T>

post<T = unknown> (path: string, data: Record<string, unknown>, options?: RequestOptions): Promise<T>

/** @deprecated use option bag instead */
post<T = unknown> (path: string, data: Record<string, unknown>, skipPostResponse: boolean): Promise<T>

post (path: string, data: Record<string, unknown>): Promise<any>
delete<T = unknown> (path: string, data?: Record<string, unknown>, options?: RequestOptions): Promise<T>

delete (path: string, data: Record<string, unknown>): Promise<any>
/** @deprecated use option bag instead */
delete<T = unknown> (path: string, data: Record<string, unknown>, skipPostResponse: boolean): Promise<T>
}

/**
Expand Down

0 comments on commit 0b0289f

Please sign in to comment.