@sisense/sdk-query-client 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,6 @@ export interface QueryClient {
5
5
  executeCsvQuery(params: QueryDescription, config?: QueryExecutionConfig): ExecutingCsvQueryResult;
6
6
  executePivotQuery(params: PivotQueryDescription, config?: QueryExecutionConfig): ExecutingPivotQueryResult;
7
7
  getDataSourceFields(dataSource: DataSource): Promise<DataSourceField[]>;
8
- getDataSourceSchema(datasourceName: string): Promise<DataSourceSchema>;
8
+ getDataSourceSchema(datasourceName: string): Promise<DataSourceSchema | undefined>;
9
9
  getDataSourceList(): Promise<DataSourceMetadata[]>;
10
10
  }
@@ -1,25 +1,27 @@
1
1
  import { DataSource } from '@sisense/sdk-data';
2
2
  import { HttpClient } from '@sisense/sdk-rest-client';
3
- import { AbortRequestFunction, DataSourceField, JaqlResponse, JaqlQueryPayload, QueryGuid, DataSourceSchema, DataSourceMetadata } from '../types.js';
4
- type RequestSendingResult<T> = {
5
- responsePromise: Promise<T>;
6
- abortHttpRequest: AbortRequestFunction;
7
- };
3
+ import { DataSourceField, JaqlResponse, JaqlQueryPayload, QueryGuid, DataSourceSchema, DataSourceMetadata } from '../types.js';
8
4
  export declare class QueryApiDispatcher {
9
5
  private httpClient;
10
6
  constructor(httpClient: HttpClient);
11
- getDataSourceFields(dataSource: DataSource, count?: number, offset?: number): Promise<DataSourceField[]>;
7
+ getDataSourceFields(dataSource: DataSource, count?: number, offset?: number): Promise<DataSourceField[] | undefined>;
12
8
  /**
13
9
  * Returns a list of data sources.
14
10
  * This method works with user of viewer role or above.
15
11
  */
16
- getDataSourceList(): Promise<DataSourceMetadata[]>;
12
+ getDataSourceList(): Promise<DataSourceMetadata[] | undefined>;
17
13
  /**
18
14
  * Returns the schema of a data source by its name.
19
15
  */
20
- getDataSourceSchema(dataSourceName: string): Promise<DataSourceSchema>;
21
- sendJaqlRequest(dataSource: DataSource, jaqlPayload: JaqlQueryPayload): RequestSendingResult<JaqlResponse>;
22
- sendDownloadCsvRequest(dataSource: DataSource, jaqlPayload: JaqlQueryPayload): RequestSendingResult<ReadableStream>;
16
+ getDataSourceSchema(dataSourceName: string): Promise<DataSourceSchema | undefined>;
17
+ sendJaqlRequest(dataSource: DataSource, jaqlPayload: JaqlQueryPayload): {
18
+ responsePromise: Promise<JaqlResponse | undefined>;
19
+ abortHttpRequest: (reason?: string) => void;
20
+ };
21
+ sendDownloadCsvRequest(dataSource: DataSource, jaqlPayload: JaqlQueryPayload): {
22
+ responsePromise: Promise<ReadableStream<any> | undefined>;
23
+ abortHttpRequest: (reason?: string) => void;
24
+ };
23
25
  /**
24
26
  * Sends a request to cancel a JAQL query.
25
27
  *
@@ -35,4 +37,3 @@ export declare class QueryApiDispatcher {
35
37
  */
36
38
  sendCancelMultipleJaqlQueriesRequest(guids: QueryGuid[], dataSource: DataSource): Promise<void>;
37
39
  }
38
- export {};
@@ -15,17 +15,12 @@ export class QueryApiDispatcher {
15
15
  this.httpClient = httpClient;
16
16
  }
17
17
  getDataSourceFields(dataSource, count = 9999, offset = 0) {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- const dataSourceName = getDataSourceName(dataSource);
20
- const url = `${API_DATASOURCES_BASE_PATH}/${encodeURIComponent(dataSourceName)}/fields/search`;
21
- // when error is encountered, API returns only status code 400 without informative error message
22
- // to remedy, catch error and throw a more informative error message
23
- try {
24
- return yield this.httpClient.post(url, { offset, count });
25
- }
26
- catch (error) {
27
- throw new Error(`Failed to get fields for data source "${dataSource}". Please make sure the data source exists and is accessible.`);
28
- }
18
+ const dataSourceName = getDataSourceName(dataSource);
19
+ const url = `${API_DATASOURCES_BASE_PATH}/${encodeURIComponent(dataSourceName)}/fields/search`;
20
+ // when error is encountered, API returns only status code 400 without informative error message
21
+ // to remedy, catch error and throw a more informative error message
22
+ return this.httpClient.post(url, { offset, count }).catch(() => {
23
+ throw new Error(`Failed to get fields for data source "${dataSource}". Please make sure the data source exists and is accessible.`);
29
24
  });
30
25
  }
31
26
  /**
@@ -33,19 +28,15 @@ export class QueryApiDispatcher {
33
28
  * This method works with user of viewer role or above.
34
29
  */
35
30
  getDataSourceList() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const url = `${API_DATASOURCES_BASE_PATH}/?sharedWith=r,w`;
38
- return this.httpClient.get(url);
39
- });
31
+ const url = `${API_DATASOURCES_BASE_PATH}/?sharedWith=r,w`;
32
+ return this.httpClient.get(url);
40
33
  }
41
34
  /**
42
35
  * Returns the schema of a data source by its name.
43
36
  */
44
37
  getDataSourceSchema(dataSourceName) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- const url = `${API_DATAMODELS_BASE_PATH}/schema?title=${encodeURIComponent(dataSourceName)}`;
47
- return this.httpClient.get(url);
48
- });
38
+ const url = `${API_DATAMODELS_BASE_PATH}/schema?title=${encodeURIComponent(dataSourceName)}`;
39
+ return this.httpClient.get(url);
49
40
  }
50
41
  sendJaqlRequest(dataSource, jaqlPayload) {
51
42
  const url = getJaqlUrl(dataSource);
@@ -115,7 +106,7 @@ export class QueryApiDispatcher {
115
106
  /**
116
107
  * Returns the URL for canceling queries for a regular (non-live) datasource.
117
108
  *
118
- * @param dataSource
109
+ * @param dataSource - The data source of the query.
119
110
  */
120
111
  function getRegularCancelQueryUrl(dataSource) {
121
112
  const datasourcePath = encodeURIComponent(getDataSourceName(dataSource));
@@ -125,7 +116,7 @@ function getRegularCancelQueryUrl(dataSource) {
125
116
  * Returns the URL for canceling queries for a live datasource.
126
117
  * Live datasources require a different URL for canceling queries.
127
118
  *
128
- * @param dataSource
119
+ * @param dataSource - The data source of the query.
129
120
  */
130
121
  function getLiveCancelQueryUrl(dataSource) {
131
122
  const datasourcePath = encodeURIComponent(getDataSourceName(dataSource));
@@ -134,7 +125,7 @@ function getLiveCancelQueryUrl(dataSource) {
134
125
  /**
135
126
  * Returns the URL for sending a JAQL request.
136
127
  *
137
- * @param dataSource
128
+ * @param dataSource - The data source of the query.
138
129
  */
139
130
  function getJaqlUrl(dataSource) {
140
131
  const dataSourcePath = encodeURIComponent(getDataSourceName(dataSource));
@@ -1,4 +1,4 @@
1
- import { DataSourceField, DataSourceMetadata, DataSourceSchema, ExecutingCsvQueryResult, ExecutingPivotQueryResult, ExecutingQueryResult, PivotQueryDescription, QueryDescription, QueryExecutionConfig } from './types.js';
1
+ import { ExecutingCsvQueryResult, ExecutingPivotQueryResult, ExecutingQueryResult, PivotQueryDescription, QueryDescription, QueryExecutionConfig } from './types.js';
2
2
  import { QueryClient } from './interfaces.js';
3
3
  import { DataSource } from '@sisense/sdk-data';
4
4
  import { HttpClient } from '@sisense/sdk-rest-client';
@@ -29,15 +29,15 @@ export declare class DimensionalQueryClient implements QueryClient {
29
29
  * @throws Error if query description is invalid
30
30
  */
31
31
  executePivotQuery(pivotQueryDescription: PivotQueryDescription, config?: QueryExecutionConfig): ExecutingPivotQueryResult;
32
- getDataSourceFields(dataSource: DataSource, count?: number, offset?: number): Promise<DataSourceField[]>;
32
+ getDataSourceFields(dataSource: DataSource, count?: number, offset?: number): Promise<import("./types.js").DataSourceField[]>;
33
33
  /**
34
34
  * Returns the schema of a data source by its name.
35
35
  */
36
- getDataSourceSchema(datasourceName: string): Promise<DataSourceSchema>;
36
+ getDataSourceSchema(datasourceName: string): Promise<import("./types.js").DataSourceSchema | undefined>;
37
37
  /**
38
38
  * Returns a list of data sources
39
39
  */
40
- getDataSourceList(): Promise<DataSourceMetadata[]>;
40
+ getDataSourceList(): Promise<import("./types.js").DataSourceMetadata[]>;
41
41
  }
42
42
  /**
43
43
  * Validates query description
@@ -93,23 +93,23 @@ export class DimensionalQueryClient {
93
93
  }
94
94
  getDataSourceFields(dataSource, count = 9999, offset = 0) {
95
95
  return __awaiter(this, void 0, void 0, function* () {
96
- return this.queryApi.getDataSourceFields(dataSource, count, offset);
96
+ const dataSourceFields = yield this.queryApi.getDataSourceFields(dataSource, count, offset);
97
+ return dataSourceFields || [];
97
98
  });
98
99
  }
99
100
  /**
100
101
  * Returns the schema of a data source by its name.
101
102
  */
102
103
  getDataSourceSchema(datasourceName) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- return this.queryApi.getDataSourceSchema(datasourceName);
105
- });
104
+ return this.queryApi.getDataSourceSchema(datasourceName);
106
105
  }
107
106
  /**
108
107
  * Returns a list of data sources
109
108
  */
110
109
  getDataSourceList() {
111
110
  return __awaiter(this, void 0, void 0, function* () {
112
- return this.queryApi.getDataSourceList();
111
+ const dataSourceList = yield this.queryApi.getDataSourceList();
112
+ return dataSourceList || [];
113
113
  });
114
114
  }
115
115
  }
@@ -37,4 +37,4 @@ export declare class QueryTaskManager extends AbstractTaskManager {
37
37
  executeDownloadCsvSending: (passport: QueryTaskPassport) => Promise<import("@sisense/task-manager").TaskExecutionResult<Blob, EmptyObject>>;
38
38
  executePivotQuerySending: (passport: PivotQueryTaskPassport) => Promise<import("@sisense/task-manager").TaskExecutionResult<PivotQueryResultData, EmptyObject>>;
39
39
  }
40
- export declare function validateJaqlResponse(jaqlResponse: JaqlResponse): boolean;
40
+ export declare function validateJaqlResponse(jaqlResponse: JaqlResponse | undefined): asserts jaqlResponse is JaqlResponse;
@@ -118,8 +118,10 @@ export class QueryTaskManager extends AbstractTaskManager {
118
118
  }
119
119
  export function validateJaqlResponse(jaqlResponse) {
120
120
  var _a;
121
+ if (!jaqlResponse) {
122
+ throw new Error('No jaql response received from the server');
123
+ }
121
124
  if (jaqlResponse.error) {
122
125
  throw new Error(`${jaqlResponse.details} ${(_a = jaqlResponse.database) !== null && _a !== void 0 ? _a : ''} ${jaqlResponse.extraDetails ? JSON.stringify(jaqlResponse.extraDetails) : ''}`);
123
126
  }
124
- return true;
125
127
  }
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "Sisense",
12
12
  "Compose SDK"
13
13
  ],
14
- "version": "1.13.0",
14
+ "version": "1.14.0",
15
15
  "type": "module",
16
16
  "exports": "./dist/index.js",
17
17
  "main": "./dist/index.js",
@@ -20,10 +20,10 @@
20
20
  "author": "Sisense",
21
21
  "license": "SEE LICENSE IN LICENSE.md",
22
22
  "dependencies": {
23
- "@sisense/sdk-common": "^1.13.0",
24
- "@sisense/sdk-data": "^1.13.0",
25
- "@sisense/sdk-pivot-client": "^1.13.0",
26
- "@sisense/sdk-rest-client": "^1.13.0",
23
+ "@sisense/sdk-common": "^1.14.0",
24
+ "@sisense/sdk-data": "^1.14.0",
25
+ "@sisense/sdk-pivot-client": "^1.14.0",
26
+ "@sisense/sdk-rest-client": "^1.14.0",
27
27
  "@sisense/task-manager": "^0.1.0",
28
28
  "numeral": "^2.0.6",
29
29
  "ts-deepmerge": "6.0.2",