@sisense/sdk-pivot-query-client 2.17.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.
- package/LICENSE.md +35 -0
- package/README.md +2 -0
- package/dist/__test-helpers__/testUtils.d.ts +30 -0
- package/dist/__test-helpers__/testUtils.js +89 -0
- package/dist/builders/index.d.ts +2 -0
- package/dist/builders/index.js +2 -0
- package/dist/builders/pivot-data-builder.d.ts +34 -0
- package/dist/builders/pivot-data-builder.js +182 -0
- package/dist/builders/socket-builder.d.ts +18 -0
- package/dist/builders/socket-builder.js +72 -0
- package/dist/cjs/__test-helpers__/testUtils.d.ts +30 -0
- package/dist/cjs/__test-helpers__/testUtils.js +104 -0
- package/dist/cjs/builders/index.d.ts +2 -0
- package/dist/cjs/builders/index.js +7 -0
- package/dist/cjs/builders/pivot-data-builder.d.ts +34 -0
- package/dist/cjs/builders/pivot-data-builder.js +186 -0
- package/dist/cjs/builders/socket-builder.d.ts +18 -0
- package/dist/cjs/builders/socket-builder.js +79 -0
- package/dist/cjs/data-handling/DataService.d.ts +672 -0
- package/dist/cjs/data-handling/DataService.js +1364 -0
- package/dist/cjs/data-handling/DivergenceComparator.d.ts +7 -0
- package/dist/cjs/data-handling/DivergenceComparator.js +20 -0
- package/dist/cjs/data-handling/constants.d.ts +44 -0
- package/dist/cjs/data-handling/constants.js +43 -0
- package/dist/cjs/data-handling/index.d.ts +3 -0
- package/dist/cjs/data-handling/index.js +23 -0
- package/dist/cjs/data-handling/types.d.ts +104 -0
- package/dist/cjs/data-handling/types.js +2 -0
- package/dist/cjs/data-handling/utils/createPivotTreeNode.d.ts +13 -0
- package/dist/cjs/data-handling/utils/createPivotTreeNode.js +21 -0
- package/dist/cjs/data-handling/utils/index.d.ts +4 -0
- package/dist/cjs/data-handling/utils/index.js +14 -0
- package/dist/cjs/data-handling/utils/jaqlProcessor.d.ts +122 -0
- package/dist/cjs/data-handling/utils/jaqlProcessor.js +661 -0
- package/dist/cjs/data-handling/utils/pivotTransforms.d.ts +74 -0
- package/dist/cjs/data-handling/utils/pivotTransforms.js +373 -0
- package/dist/cjs/data-handling/utils/plugins/PluginService.d.ts +135 -0
- package/dist/cjs/data-handling/utils/plugins/PluginService.js +383 -0
- package/dist/cjs/data-handling/utils/plugins/getters.d.ts +23 -0
- package/dist/cjs/data-handling/utils/plugins/getters.js +70 -0
- package/dist/cjs/data-handling/utils/plugins/types.d.ts +75 -0
- package/dist/cjs/data-handling/utils/plugins/types.js +2 -0
- package/dist/cjs/data-handling/utils/plugins/validator.d.ts +13 -0
- package/dist/cjs/data-handling/utils/plugins/validator.js +169 -0
- package/dist/cjs/data-load/AbstractDataLoadService.d.ts +256 -0
- package/dist/cjs/data-load/AbstractDataLoadService.js +473 -0
- package/dist/cjs/data-load/DataLoadService.d.ts +63 -0
- package/dist/cjs/data-load/DataLoadService.js +152 -0
- package/dist/cjs/data-load/SisenseDataLoadService.d.ts +44 -0
- package/dist/cjs/data-load/SisenseDataLoadService.js +87 -0
- package/dist/cjs/data-load/TestDataLoadService.d.ts +27 -0
- package/dist/cjs/data-load/TestDataLoadService.js +76 -0
- package/dist/cjs/data-load/constants.d.ts +13 -0
- package/dist/cjs/data-load/constants.js +28 -0
- package/dist/cjs/data-load/index.d.ts +6 -0
- package/dist/cjs/data-load/index.js +14 -0
- package/dist/cjs/data-load/sockets/SisenseSocket.d.ts +81 -0
- package/dist/cjs/data-load/sockets/SisenseSocket.js +162 -0
- package/dist/cjs/data-load/sockets/TestSocket.d.ts +61 -0
- package/dist/cjs/data-load/sockets/TestSocket.js +90 -0
- package/dist/cjs/data-load/sockets/helpers.d.ts +4 -0
- package/dist/cjs/data-load/sockets/helpers.js +27 -0
- package/dist/cjs/data-load/sockets/index.d.ts +2 -0
- package/dist/cjs/data-load/sockets/index.js +8 -0
- package/dist/cjs/data-load/types.d.ts +90 -0
- package/dist/cjs/data-load/types.js +2 -0
- package/dist/cjs/errors/LoadingCanceledError.d.ts +7 -0
- package/dist/cjs/errors/LoadingCanceledError.js +24 -0
- package/dist/cjs/errors/index.d.ts +1 -0
- package/dist/cjs/errors/index.js +6 -0
- package/dist/cjs/index.d.ts +17 -0
- package/dist/cjs/index.js +32 -0
- package/dist/cjs/package.json +12 -0
- package/dist/cjs/pivot-query-client.d.ts +13 -0
- package/dist/cjs/pivot-query-client.js +26 -0
- package/dist/cjs/tree-structure/AbstractTreeService.d.ts +308 -0
- package/dist/cjs/tree-structure/AbstractTreeService.js +716 -0
- package/dist/cjs/tree-structure/HeaderTreeService.d.ts +180 -0
- package/dist/cjs/tree-structure/HeaderTreeService.js +280 -0
- package/dist/cjs/tree-structure/TreeCellMap.d.ts +104 -0
- package/dist/cjs/tree-structure/TreeCellMap.js +145 -0
- package/dist/cjs/tree-structure/TreeService.d.ts +8 -0
- package/dist/cjs/tree-structure/TreeService.js +12 -0
- package/dist/cjs/tree-structure/constants.d.ts +6 -0
- package/dist/cjs/tree-structure/constants.js +10 -0
- package/dist/cjs/tree-structure/index.d.ts +5 -0
- package/dist/cjs/tree-structure/index.js +10 -0
- package/dist/cjs/tree-structure/types.d.ts +93 -0
- package/dist/cjs/tree-structure/types.js +2 -0
- package/dist/cjs/tree-structure/utils/index.d.ts +1 -0
- package/dist/cjs/tree-structure/utils/index.js +9 -0
- package/dist/cjs/tree-structure/utils/treeNode.d.ts +147 -0
- package/dist/cjs/tree-structure/utils/treeNode.js +534 -0
- package/dist/cjs/utils/array.d.ts +13 -0
- package/dist/cjs/utils/array.js +25 -0
- package/dist/cjs/utils/cloneObject.d.ts +30 -0
- package/dist/cjs/utils/cloneObject.js +225 -0
- package/dist/cjs/utils/index.d.ts +3 -0
- package/dist/cjs/utils/index.js +9 -0
- package/dist/cjs/utils/throttle.d.ts +12 -0
- package/dist/cjs/utils/throttle.js +39 -0
- package/dist/cjs/utils/types.d.ts +12 -0
- package/dist/cjs/utils/types.js +2 -0
- package/dist/data-handling/DataService.d.ts +672 -0
- package/dist/data-handling/DataService.js +1357 -0
- package/dist/data-handling/DivergenceComparator.d.ts +7 -0
- package/dist/data-handling/DivergenceComparator.js +16 -0
- package/dist/data-handling/constants.d.ts +44 -0
- package/dist/data-handling/constants.js +40 -0
- package/dist/data-handling/index.d.ts +3 -0
- package/dist/data-handling/index.js +4 -0
- package/dist/data-handling/types.d.ts +104 -0
- package/dist/data-handling/types.js +1 -0
- package/dist/data-handling/utils/createPivotTreeNode.d.ts +13 -0
- package/dist/data-handling/utils/createPivotTreeNode.js +17 -0
- package/dist/data-handling/utils/index.d.ts +4 -0
- package/dist/data-handling/utils/index.js +4 -0
- package/dist/data-handling/utils/jaqlProcessor.d.ts +122 -0
- package/dist/data-handling/utils/jaqlProcessor.js +621 -0
- package/dist/data-handling/utils/pivotTransforms.d.ts +74 -0
- package/dist/data-handling/utils/pivotTransforms.js +335 -0
- package/dist/data-handling/utils/plugins/PluginService.d.ts +135 -0
- package/dist/data-handling/utils/plugins/PluginService.js +379 -0
- package/dist/data-handling/utils/plugins/getters.d.ts +23 -0
- package/dist/data-handling/utils/plugins/getters.js +65 -0
- package/dist/data-handling/utils/plugins/types.d.ts +75 -0
- package/dist/data-handling/utils/plugins/types.js +1 -0
- package/dist/data-handling/utils/plugins/validator.d.ts +13 -0
- package/dist/data-handling/utils/plugins/validator.js +165 -0
- package/dist/data-load/AbstractDataLoadService.d.ts +256 -0
- package/dist/data-load/AbstractDataLoadService.js +466 -0
- package/dist/data-load/DataLoadService.d.ts +63 -0
- package/dist/data-load/DataLoadService.js +148 -0
- package/dist/data-load/SisenseDataLoadService.d.ts +44 -0
- package/dist/data-load/SisenseDataLoadService.js +83 -0
- package/dist/data-load/TestDataLoadService.d.ts +27 -0
- package/dist/data-load/TestDataLoadService.js +69 -0
- package/dist/data-load/constants.d.ts +13 -0
- package/dist/data-load/constants.js +25 -0
- package/dist/data-load/index.d.ts +6 -0
- package/dist/data-load/index.js +6 -0
- package/dist/data-load/sockets/SisenseSocket.d.ts +81 -0
- package/dist/data-load/sockets/SisenseSocket.js +155 -0
- package/dist/data-load/sockets/TestSocket.d.ts +61 -0
- package/dist/data-load/sockets/TestSocket.js +83 -0
- package/dist/data-load/sockets/helpers.d.ts +4 -0
- package/dist/data-load/sockets/helpers.js +23 -0
- package/dist/data-load/sockets/index.d.ts +2 -0
- package/dist/data-load/sockets/index.js +3 -0
- package/dist/data-load/types.d.ts +90 -0
- package/dist/data-load/types.js +1 -0
- package/dist/errors/LoadingCanceledError.d.ts +7 -0
- package/dist/errors/LoadingCanceledError.js +20 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +2 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +9 -0
- package/dist/pivot-query-client.d.ts +13 -0
- package/dist/pivot-query-client.js +22 -0
- package/dist/tree-structure/AbstractTreeService.d.ts +308 -0
- package/dist/tree-structure/AbstractTreeService.js +712 -0
- package/dist/tree-structure/HeaderTreeService.d.ts +180 -0
- package/dist/tree-structure/HeaderTreeService.js +276 -0
- package/dist/tree-structure/TreeCellMap.d.ts +104 -0
- package/dist/tree-structure/TreeCellMap.js +141 -0
- package/dist/tree-structure/TreeService.d.ts +8 -0
- package/dist/tree-structure/TreeService.js +8 -0
- package/dist/tree-structure/constants.d.ts +6 -0
- package/dist/tree-structure/constants.js +7 -0
- package/dist/tree-structure/index.d.ts +5 -0
- package/dist/tree-structure/index.js +4 -0
- package/dist/tree-structure/types.d.ts +93 -0
- package/dist/tree-structure/types.js +1 -0
- package/dist/tree-structure/utils/index.d.ts +1 -0
- package/dist/tree-structure/utils/index.js +1 -0
- package/dist/tree-structure/utils/treeNode.d.ts +147 -0
- package/dist/tree-structure/utils/treeNode.js +515 -0
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
- package/dist/utils/array.d.ts +13 -0
- package/dist/utils/array.js +21 -0
- package/dist/utils/cloneObject.d.ts +30 -0
- package/dist/utils/cloneObject.js +221 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/throttle.d.ts +12 -0
- package/dist/utils/throttle.js +35 -0
- package/dist/utils/types.d.ts +12 -0
- package/dist/utils/types.js +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PivotQueryResultData } from '@sisense/sdk-data';
|
|
2
|
+
import { InitPageData } from '../data-handling/types.js';
|
|
3
|
+
import { DataLoadServiceI, JaqlRequest, SocketI } from '../data-load/types.js';
|
|
4
|
+
export declare class PivotDataBuilder {
|
|
5
|
+
/**
|
|
6
|
+
* DataLoadServiceI instance
|
|
7
|
+
*/
|
|
8
|
+
private dataLoadService?;
|
|
9
|
+
/**
|
|
10
|
+
* SocketI instance
|
|
11
|
+
*/
|
|
12
|
+
private readonly socket;
|
|
13
|
+
/**
|
|
14
|
+
* @param socket - socket instance
|
|
15
|
+
*/
|
|
16
|
+
constructor(socket: SocketI);
|
|
17
|
+
destroy(): void;
|
|
18
|
+
prepareRequest(jaql: JaqlRequest): Promise<JaqlRequest>;
|
|
19
|
+
prepareLoadService(jaql?: JaqlRequest, useCache?: boolean): DataLoadServiceI;
|
|
20
|
+
prepareDataService(dataLoadService: DataLoadServiceI): {
|
|
21
|
+
loadData: (jaql?: JaqlRequest, pageSize?: number, isPaginated?: boolean) => Promise<InitPageData>;
|
|
22
|
+
};
|
|
23
|
+
loadInitData(jaql: JaqlRequest, isPaginated?: boolean, elementsPerPage?: number, useCache?: boolean): Promise<PivotQueryResultData>;
|
|
24
|
+
private buildColumnsHelper;
|
|
25
|
+
/**
|
|
26
|
+
* Transforms Pivot Grid to Columns of Table structure
|
|
27
|
+
*
|
|
28
|
+
* @param columnType - type of column
|
|
29
|
+
* @param grid - pivot grid
|
|
30
|
+
* @returns An array of columns
|
|
31
|
+
*/
|
|
32
|
+
private transformGridToColumns;
|
|
33
|
+
private transformTreeStructuresToResultData;
|
|
34
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PivotDataBuilder = void 0;
|
|
13
|
+
const sdk_data_1 = require("@sisense/sdk-data");
|
|
14
|
+
const DataService_js_1 = require("../data-handling/DataService.js");
|
|
15
|
+
const index_js_1 = require("../data-load/index.js");
|
|
16
|
+
class PivotDataBuilder {
|
|
17
|
+
/**
|
|
18
|
+
* @param socket - socket instance
|
|
19
|
+
*/
|
|
20
|
+
constructor(socket) {
|
|
21
|
+
this.socket = socket;
|
|
22
|
+
}
|
|
23
|
+
destroy() { }
|
|
24
|
+
prepareRequest(jaql) {
|
|
25
|
+
return Promise.resolve(jaql);
|
|
26
|
+
}
|
|
27
|
+
prepareLoadService(jaql, useCache = false) {
|
|
28
|
+
if (this.dataLoadService && (useCache || this.dataLoadService.isFormattingChanges(jaql))) {
|
|
29
|
+
return this.dataLoadService;
|
|
30
|
+
}
|
|
31
|
+
return new index_js_1.SisenseDataLoadService(this.socket);
|
|
32
|
+
}
|
|
33
|
+
prepareDataService(dataLoadService) {
|
|
34
|
+
const dataService = new DataService_js_1.DataService(dataLoadService);
|
|
35
|
+
return {
|
|
36
|
+
loadData: (jaql, pageSize, isPaginated) => {
|
|
37
|
+
if (!dataService) {
|
|
38
|
+
throw new Error('No DataService defined during "prepareDataService"');
|
|
39
|
+
}
|
|
40
|
+
return dataService.loadData(jaql, { pageSize, isPaginated });
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
loadInitData(jaql, isPaginated = true, elementsPerPage = 100, useCache = false) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const pageSize = isPaginated ? elementsPerPage : undefined;
|
|
47
|
+
try {
|
|
48
|
+
const jaqlInternal = yield this.prepareRequest(jaql);
|
|
49
|
+
// Currently, each jaql need a separate dataLoadService instance
|
|
50
|
+
// In other words, each dataLoadService is associated with a jaql
|
|
51
|
+
this.dataLoadService = this.prepareLoadService(jaqlInternal, useCache);
|
|
52
|
+
const { loadData } = this.prepareDataService(this.dataLoadService);
|
|
53
|
+
const { rowsTreeService, columnsTreeService, cornerTreeService, isLastPage } = yield loadData(useCache ? undefined : jaqlInternal, pageSize, isPaginated);
|
|
54
|
+
return this.transformTreeStructuresToResultData({
|
|
55
|
+
rowsTreeService,
|
|
56
|
+
columnsTreeService,
|
|
57
|
+
cornerTreeService,
|
|
58
|
+
isLastPage,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error('Error during loading initial page"', err);
|
|
63
|
+
}
|
|
64
|
+
return sdk_data_1.EMPTY_PIVOT_QUERY_RESULT_DATA;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
buildColumnsHelper(columnType, columns, prefix, treeNode) {
|
|
68
|
+
var _a;
|
|
69
|
+
const columnName = `${prefix}${prefix === '' ? '' : ' | '}${(_a = treeNode.value) === null || _a === void 0 ? void 0 : _a.toString()}`;
|
|
70
|
+
if (treeNode.children) {
|
|
71
|
+
treeNode.children.forEach((child) => {
|
|
72
|
+
this.buildColumnsHelper(columnType, columns, columnName, child);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
columns.push({ name: columnName, type: columnType });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Transforms Pivot Grid to Columns of Table structure
|
|
81
|
+
*
|
|
82
|
+
* @param columnType - type of column
|
|
83
|
+
* @param grid - pivot grid
|
|
84
|
+
* @returns An array of columns
|
|
85
|
+
*/
|
|
86
|
+
transformGridToColumns(columnType, grid) {
|
|
87
|
+
if (!grid || grid.length === 0) {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
const columns = [];
|
|
91
|
+
grid === null || grid === void 0 ? void 0 : grid[0].forEach((cell) => {
|
|
92
|
+
if (typeof cell === 'string')
|
|
93
|
+
return;
|
|
94
|
+
this.buildColumnsHelper(columnType, columns, '', cell);
|
|
95
|
+
});
|
|
96
|
+
return columns || [];
|
|
97
|
+
}
|
|
98
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity,max-lines-per-function
|
|
99
|
+
transformTreeStructuresToResultData(pivotTreeData) {
|
|
100
|
+
const { rowsTreeService, columnsTreeService, cornerTreeService } = pivotTreeData;
|
|
101
|
+
if (!rowsTreeService && !columnsTreeService && !cornerTreeService) {
|
|
102
|
+
return sdk_data_1.EMPTY_PIVOT_QUERY_RESULT_DATA;
|
|
103
|
+
}
|
|
104
|
+
const cornerGrid = cornerTreeService ? cornerTreeService.getGrid() : [];
|
|
105
|
+
const columnsGrid = columnsTreeService ? columnsTreeService.getGrid() : [];
|
|
106
|
+
const rowsGrid = rowsTreeService ? rowsTreeService.getGrid() : [];
|
|
107
|
+
const cornerColumns = this.transformGridToColumns('string', cornerGrid);
|
|
108
|
+
const columnsColumns = this.transformGridToColumns('number', columnsGrid);
|
|
109
|
+
const columns = [...cornerColumns, ...columnsColumns];
|
|
110
|
+
const FILL_IN_THE_BLANKS = true;
|
|
111
|
+
const valuesGrid = rowsTreeService
|
|
112
|
+
? rowsTreeService.extractData(columnsTreeService)
|
|
113
|
+
: [];
|
|
114
|
+
const rowCount = rowsGrid.length;
|
|
115
|
+
const columnCount = columns.length;
|
|
116
|
+
const rows = [];
|
|
117
|
+
let curRowIndex = 0;
|
|
118
|
+
let curColIndex = 0;
|
|
119
|
+
Array.from(Array(rowCount)).map((c, rowIndex) => {
|
|
120
|
+
const row = [];
|
|
121
|
+
Array.from(Array(columnCount)).map((c, colIndex) => {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
let dataNode;
|
|
124
|
+
if (colIndex < cornerColumns.length) {
|
|
125
|
+
curRowIndex = rowIndex;
|
|
126
|
+
curColIndex = colIndex;
|
|
127
|
+
try {
|
|
128
|
+
dataNode = rowsGrid[curRowIndex][curColIndex];
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
throw new Error(`Can't find data item for ${curRowIndex}-${curColIndex}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
curRowIndex = rowIndex;
|
|
136
|
+
curColIndex = colIndex - cornerColumns.length;
|
|
137
|
+
try {
|
|
138
|
+
dataNode = valuesGrid[curRowIndex][curColIndex];
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
throw new Error(`Can't find data item for ${curRowIndex}-${curColIndex}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
let value;
|
|
145
|
+
if (typeof dataNode === 'string') {
|
|
146
|
+
if (FILL_IN_THE_BLANKS) {
|
|
147
|
+
const indexes = dataNode.split('-');
|
|
148
|
+
// eslint-disable-next-line max-lines
|
|
149
|
+
if (indexes.length === 2) {
|
|
150
|
+
const parentRowIndex = Number(indexes[0]);
|
|
151
|
+
const parentColIndex = Number(indexes[1]);
|
|
152
|
+
dataNode = rowsGrid[parentRowIndex][parentColIndex];
|
|
153
|
+
value = ((_a = dataNode.value) === null || _a === void 0 ? void 0 : _a.toString()) || '';
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// eslint-disable-next-line max-lines
|
|
157
|
+
value = '';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
value = '';
|
|
162
|
+
}
|
|
163
|
+
// eslint-disable-next-line max-lines
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
value = ((_b = dataNode.value) === null || _b === void 0 ? void 0 : _b.toString()) || '';
|
|
167
|
+
}
|
|
168
|
+
row.push({ data: value, text: value });
|
|
169
|
+
});
|
|
170
|
+
rows.push(row);
|
|
171
|
+
});
|
|
172
|
+
return {
|
|
173
|
+
table: {
|
|
174
|
+
columns: columns,
|
|
175
|
+
rows: rows,
|
|
176
|
+
},
|
|
177
|
+
grids: {
|
|
178
|
+
corner: cornerGrid,
|
|
179
|
+
rows: rowsGrid,
|
|
180
|
+
columns: columnsGrid,
|
|
181
|
+
values: valuesGrid,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.PivotDataBuilder = PivotDataBuilder;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Authenticator } from '@sisense/sdk-rest-client';
|
|
2
|
+
import { SocketI } from '../data-load/types.js';
|
|
3
|
+
export declare class SocketBuilder {
|
|
4
|
+
private _socket;
|
|
5
|
+
private readonly _url;
|
|
6
|
+
private readonly _auth;
|
|
7
|
+
/**
|
|
8
|
+
* Boolean flag to indicate if the socket should be mocked or not (for testing).
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
private readonly _mockSocket;
|
|
13
|
+
constructor(url: string, auth: Authenticator, mockSocket?: boolean);
|
|
14
|
+
private getQueryOptionsSso;
|
|
15
|
+
private getQueryOptionsBearer;
|
|
16
|
+
private getQueryOptionsWat;
|
|
17
|
+
get socket(): SocketI;
|
|
18
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SocketBuilder = void 0;
|
|
7
|
+
const sdk_rest_client_1 = require("@sisense/sdk-rest-client");
|
|
8
|
+
const index_js_1 = require("../data-load/index.js");
|
|
9
|
+
const TestSocket_js_1 = __importDefault(require("../data-load/sockets/TestSocket.js"));
|
|
10
|
+
/**
|
|
11
|
+
* Builder to create a web socket client on demand to communicate with a Sisense web socket server.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
const PIVOT_NAMESPACE = 'pivot2';
|
|
16
|
+
class SocketBuilder {
|
|
17
|
+
constructor(url, auth, mockSocket = false) {
|
|
18
|
+
this._url = url;
|
|
19
|
+
this._auth = auth;
|
|
20
|
+
this._mockSocket = mockSocket;
|
|
21
|
+
}
|
|
22
|
+
getQueryOptionsSso(auth) {
|
|
23
|
+
// No need to add query params as SSO authentication
|
|
24
|
+
// is using cookies sent automatically by the browser
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
getQueryOptionsBearer(auth) {
|
|
28
|
+
const authToken = auth.bearer;
|
|
29
|
+
if (!authToken) {
|
|
30
|
+
throw new Error('Missing bearer token');
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
token: authToken,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
getQueryOptionsWat(auth) {
|
|
37
|
+
const headers = new Headers();
|
|
38
|
+
auth.applyHeaders(headers);
|
|
39
|
+
const authorization = headers.get('Authorization');
|
|
40
|
+
const initialiser = headers.get('Initialiser');
|
|
41
|
+
if (!authorization || !initialiser) {
|
|
42
|
+
throw new Error('Missing auth header');
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
authorization,
|
|
46
|
+
initialiser,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
get socket() {
|
|
50
|
+
// initialize socket only when needed
|
|
51
|
+
if (!this._socket) {
|
|
52
|
+
if (this._mockSocket) {
|
|
53
|
+
// use a mock socket for testing
|
|
54
|
+
this._socket = new TestSocket_js_1.default();
|
|
55
|
+
return this._socket;
|
|
56
|
+
}
|
|
57
|
+
const auth = this._auth;
|
|
58
|
+
const url = this._url;
|
|
59
|
+
let query = {};
|
|
60
|
+
// Do not use instanceof because it checks if the constructors are the same.
|
|
61
|
+
// However, when the class is imported from @sisense/sdk-rest-client,
|
|
62
|
+
// the code gets its own copy of the constructor from the code in the library,
|
|
63
|
+
// so they are not the same instance anymore.
|
|
64
|
+
// Reference: https://stackoverflow.com/a/63937850/2425556
|
|
65
|
+
if ((0, sdk_rest_client_1.isBearerAuthenticator)(auth)) {
|
|
66
|
+
query = this.getQueryOptionsBearer(auth);
|
|
67
|
+
}
|
|
68
|
+
else if ((0, sdk_rest_client_1.isWatAuthenticator)(auth)) {
|
|
69
|
+
query = this.getQueryOptionsWat(auth);
|
|
70
|
+
}
|
|
71
|
+
else if ((0, sdk_rest_client_1.isSsoAuthenticator)(auth)) {
|
|
72
|
+
query = this.getQueryOptionsSso(auth);
|
|
73
|
+
}
|
|
74
|
+
this._socket = new index_js_1.SisenseSocket(url, query, PIVOT_NAMESPACE);
|
|
75
|
+
}
|
|
76
|
+
return this._socket;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.SocketBuilder = SocketBuilder;
|