diff --git a/packages/cubejs-client-core/index.d.ts b/packages/cubejs-client-core/index.d.ts index b83ae50f703a6..2f4637388e7ec 100644 --- a/packages/cubejs-client-core/index.d.ts +++ b/packages/cubejs-client-core/index.d.ts @@ -21,6 +21,7 @@ declare module '@cubejs-client/core' { * custom headers */ headers?: Record; + credentials?: 'omit' | 'same-origin' | 'include'; }; export interface ITransport { @@ -47,6 +48,7 @@ declare module '@cubejs-client/core' { transport?: ITransport; headers?: Record; pollInterval?: number; + credentials?: 'omit' | 'same-origin' | 'include'; }; export type LoadMethodOptions = { @@ -646,7 +648,7 @@ declare module '@cubejs-client/core' { /** * Main class for accessing Cube.js API - * + * * @order 2 */ export class CubejsApi { diff --git a/packages/cubejs-client-core/src/HttpTransport.js b/packages/cubejs-client-core/src/HttpTransport.js index ec44191a0cae1..e0987b47e668f 100644 --- a/packages/cubejs-client-core/src/HttpTransport.js +++ b/packages/cubejs-client-core/src/HttpTransport.js @@ -2,10 +2,11 @@ import fetch from 'cross-fetch'; import 'url-search-params-polyfill'; class HttpTransport { - constructor({ authorization, apiUrl, headers = {} }) { + constructor({ authorization, apiUrl, headers = {}, credentials }) { this.authorization = authorization; this.apiUrl = apiUrl; this.headers = headers; + this.credentials = credentials; } request(method, { baseRequestId, ...params }) { @@ -25,7 +26,8 @@ class HttpTransport { Authorization: this.authorization, 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`, ...this.headers - } + }, + credentials: this.credentials } ); diff --git a/packages/cubejs-client-core/src/index.js b/packages/cubejs-client-core/src/index.js index d3e39c6bd8e15..ce91f0434e5c3 100644 --- a/packages/cubejs-client-core/src/index.js +++ b/packages/cubejs-client-core/src/index.js @@ -25,10 +25,12 @@ class CubejsApi { this.apiToken = apiToken; this.apiUrl = options.apiUrl || API_URL; this.headers = options.headers || {}; + this.credentials = options.credentials; this.transport = options.transport || new HttpTransport({ authorization: typeof apiToken === 'function' ? undefined : apiToken, apiUrl: this.apiUrl, - headers: this.headers + headers: this.headers, + credentials: this.credentials }); this.pollInterval = options.pollInterval || 5; this.parseDateMeasures = options.parseDateMeasures;