@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,44 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import EventEmitter from 'events';
|
|
4
|
+
import { DataLoadService } from './DataLoadService.js';
|
|
5
|
+
import { DataLoadServiceI, SocketI } from './types.js';
|
|
6
|
+
declare type Options = {
|
|
7
|
+
socketRegisterCheckInterval?: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Initiate single socket connection and creates new PivotDataSource for each JAQL request
|
|
11
|
+
*/
|
|
12
|
+
export declare class SisenseDataLoadService extends DataLoadService implements DataLoadServiceI {
|
|
13
|
+
/**
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
options: Options;
|
|
17
|
+
/**
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
registrationWaitTimer?: NodeJS.Timeout;
|
|
21
|
+
/**
|
|
22
|
+
* @private
|
|
23
|
+
*
|
|
24
|
+
* onMessage remove listeners callback
|
|
25
|
+
*/
|
|
26
|
+
onMessageCancels: Array<Function | undefined>;
|
|
27
|
+
constructor(socket?: SocketI, events?: EventEmitter, options?: Options);
|
|
28
|
+
destroy(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Start data loading from the server
|
|
31
|
+
*
|
|
32
|
+
* @returns {void}
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
loadFromServer(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Wait for socket connection and registration
|
|
38
|
+
*
|
|
39
|
+
* @returns {Promise<*>} - wait promise
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
waitForSocketReady(): Promise<any>;
|
|
43
|
+
}
|
|
44
|
+
export default SisenseDataLoadService;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SisenseDataLoadService = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const constants_js_1 = require("./constants.js");
|
|
6
|
+
const DataLoadService_js_1 = require("./DataLoadService.js");
|
|
7
|
+
/**
|
|
8
|
+
* Initiate single socket connection and creates new PivotDataSource for each JAQL request
|
|
9
|
+
*/
|
|
10
|
+
class SisenseDataLoadService extends DataLoadService_js_1.DataLoadService {
|
|
11
|
+
constructor(socket, events, options = {}) {
|
|
12
|
+
super(socket, events);
|
|
13
|
+
/**
|
|
14
|
+
* @private
|
|
15
|
+
*
|
|
16
|
+
* onMessage remove listeners callback
|
|
17
|
+
*/
|
|
18
|
+
this.onMessageCancels = [];
|
|
19
|
+
this.options = options;
|
|
20
|
+
}
|
|
21
|
+
destroy() {
|
|
22
|
+
super.destroy();
|
|
23
|
+
if (this.onMessageCancels.length) {
|
|
24
|
+
this.onMessageCancels.forEach((onMessageCancel) => {
|
|
25
|
+
if (onMessageCancel) {
|
|
26
|
+
onMessageCancel();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
this.onMessageCancels.length = 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start data loading from the server
|
|
34
|
+
*
|
|
35
|
+
* @returns {void}
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
loadFromServer() {
|
|
39
|
+
// eslint-disable-next-line promise/catch-or-return
|
|
40
|
+
this.waitForSocketReady().then(() => {
|
|
41
|
+
const queryJaql = Object.assign({ queryGuid: (0, uuid_1.v4)() }, this.jaql);
|
|
42
|
+
const { queryGuid } = queryJaql;
|
|
43
|
+
if (this.onMessageCancels.length) {
|
|
44
|
+
this.onMessageCancels.forEach((onMessageCancel) => {
|
|
45
|
+
if (onMessageCancel) {
|
|
46
|
+
onMessageCancel();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
this.onMessageCancels.length = 0;
|
|
50
|
+
}
|
|
51
|
+
Object.values(constants_js_1.MessageType).forEach((mType) => {
|
|
52
|
+
// TODO: misnomer??? It should be onMessageHandle
|
|
53
|
+
const onMessageCancel = this.socket.onMessage(mType, queryGuid, (type, data) => {
|
|
54
|
+
this.notifyAboutDataChunk(type, data);
|
|
55
|
+
});
|
|
56
|
+
this.onMessageCancels.push(onMessageCancel);
|
|
57
|
+
});
|
|
58
|
+
this.socket.send('pivot', queryJaql);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Wait for socket connection and registration
|
|
63
|
+
*
|
|
64
|
+
* @returns {Promise<*>} - wait promise
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
waitForSocketReady() {
|
|
68
|
+
if (this.socket.isReady()) {
|
|
69
|
+
return Promise.resolve();
|
|
70
|
+
}
|
|
71
|
+
return new Promise((resolve) => {
|
|
72
|
+
const { socketRegisterCheckInterval = 100 } = this.options;
|
|
73
|
+
if (this.registrationWaitTimer) {
|
|
74
|
+
clearInterval(this.registrationWaitTimer);
|
|
75
|
+
}
|
|
76
|
+
const checkSocketReady = () => {
|
|
77
|
+
if (this.socket.isReady()) {
|
|
78
|
+
clearInterval(this.registrationWaitTimer);
|
|
79
|
+
resolve();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
this.registrationWaitTimer = setInterval(checkSocketReady, socketRegisterCheckInterval);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.SisenseDataLoadService = SisenseDataLoadService;
|
|
87
|
+
exports.default = SisenseDataLoadService;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import EventEmitter from 'events';
|
|
3
|
+
import { DataLoadServiceI, JaqlRequest } from './types.js';
|
|
4
|
+
export declare class TestDataLoadService implements DataLoadServiceI {
|
|
5
|
+
events: EventEmitter;
|
|
6
|
+
data?: JaqlRequest;
|
|
7
|
+
delegatedLoadService?: DataLoadServiceI;
|
|
8
|
+
constructor(url: string, events?: EventEmitter);
|
|
9
|
+
destroy(): void;
|
|
10
|
+
clone(): DataLoadServiceI;
|
|
11
|
+
load(jaql: JaqlRequest): Promise<any>;
|
|
12
|
+
cancelQuery(): Promise<void>;
|
|
13
|
+
clear(): void;
|
|
14
|
+
getJaql(): JaqlRequest | undefined;
|
|
15
|
+
isSingleRowTree(): boolean;
|
|
16
|
+
getTotalItemsCount(): number;
|
|
17
|
+
delegate(loadService: DataLoadServiceI): void;
|
|
18
|
+
on(eventName: string, callback: (payload: any) => void): void;
|
|
19
|
+
off(eventName: string, callback: (payload: any) => void): void;
|
|
20
|
+
offAll(eventName: string): void;
|
|
21
|
+
listenerCount(eventName: string): number;
|
|
22
|
+
emit(eventName: string, ...rest: Array<any>): void;
|
|
23
|
+
isFormattingChanges(jaql?: JaqlRequest): boolean;
|
|
24
|
+
hasData(): boolean;
|
|
25
|
+
hasError(): boolean;
|
|
26
|
+
}
|
|
27
|
+
export default TestDataLoadService;
|
|
@@ -0,0 +1,76 @@
|
|
|
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.TestDataLoadService = void 0;
|
|
7
|
+
/* eslint-disable class-methods-use-this */
|
|
8
|
+
const events_1 = __importDefault(require("events"));
|
|
9
|
+
class TestDataLoadService {
|
|
10
|
+
constructor(url, events) {
|
|
11
|
+
this.delegatedLoadService = undefined;
|
|
12
|
+
this.events = events || new events_1.default();
|
|
13
|
+
}
|
|
14
|
+
destroy() {
|
|
15
|
+
this.data = undefined;
|
|
16
|
+
}
|
|
17
|
+
clone() {
|
|
18
|
+
throw new Error(`"TestDataLoadService.clone" should not be called`);
|
|
19
|
+
}
|
|
20
|
+
load(jaql) {
|
|
21
|
+
this.data = jaql;
|
|
22
|
+
return Promise.resolve(null);
|
|
23
|
+
}
|
|
24
|
+
cancelQuery() {
|
|
25
|
+
return Promise.resolve();
|
|
26
|
+
}
|
|
27
|
+
clear() {
|
|
28
|
+
this.data = undefined;
|
|
29
|
+
}
|
|
30
|
+
getJaql() {
|
|
31
|
+
return this.data;
|
|
32
|
+
}
|
|
33
|
+
isSingleRowTree() {
|
|
34
|
+
return !this.data;
|
|
35
|
+
}
|
|
36
|
+
getTotalItemsCount() {
|
|
37
|
+
return this && 0;
|
|
38
|
+
}
|
|
39
|
+
delegate(loadService) {
|
|
40
|
+
this.delegatedLoadService = loadService;
|
|
41
|
+
}
|
|
42
|
+
on(eventName, callback) {
|
|
43
|
+
this.events.on(eventName, callback);
|
|
44
|
+
}
|
|
45
|
+
off(eventName, callback) {
|
|
46
|
+
this.events.removeListener(eventName, callback);
|
|
47
|
+
}
|
|
48
|
+
offAll(eventName) {
|
|
49
|
+
this.events.removeAllListeners(eventName);
|
|
50
|
+
}
|
|
51
|
+
listenerCount(eventName) {
|
|
52
|
+
return this.events.listenerCount(eventName);
|
|
53
|
+
}
|
|
54
|
+
emit(eventName, ...rest) {
|
|
55
|
+
this.events.emit(eventName, ...rest);
|
|
56
|
+
}
|
|
57
|
+
isFormattingChanges(jaql) {
|
|
58
|
+
return jaql ? true : !!this;
|
|
59
|
+
}
|
|
60
|
+
// applyFormattingChanges(jaql?: JaqlRequest): Promise<DataLoadServiceI> {
|
|
61
|
+
// const res = jaql ? this : this;
|
|
62
|
+
// return Promise.resolve(res);
|
|
63
|
+
// }
|
|
64
|
+
//
|
|
65
|
+
// checkSorting(): Promise<void> {
|
|
66
|
+
// return this && Promise.resolve();
|
|
67
|
+
// }
|
|
68
|
+
hasData() {
|
|
69
|
+
return this && true;
|
|
70
|
+
}
|
|
71
|
+
hasError() {
|
|
72
|
+
return this && false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.TestDataLoadService = TestDataLoadService;
|
|
76
|
+
exports.default = TestDataLoadService;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const MessageType: {
|
|
2
|
+
HEADERS: string;
|
|
3
|
+
METADATA: string;
|
|
4
|
+
DATA: string;
|
|
5
|
+
GRAND: string;
|
|
6
|
+
FINISH: string;
|
|
7
|
+
ERROR: string;
|
|
8
|
+
TOTAL_ROWS: string;
|
|
9
|
+
DATA_FINISH: string;
|
|
10
|
+
DATABARS: string;
|
|
11
|
+
RANGE_MIN_MAX: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const MESSAGES_ORDER: string[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MESSAGES_ORDER = exports.MessageType = void 0;
|
|
4
|
+
// Message type for each of the data chunks
|
|
5
|
+
exports.MessageType = {
|
|
6
|
+
HEADERS: 'headers',
|
|
7
|
+
METADATA: 'metadata',
|
|
8
|
+
DATA: 'data',
|
|
9
|
+
GRAND: 'grand',
|
|
10
|
+
FINISH: 'finish',
|
|
11
|
+
ERROR: 'error',
|
|
12
|
+
TOTAL_ROWS: 'totalRows',
|
|
13
|
+
DATA_FINISH: 'dataFinish',
|
|
14
|
+
DATABARS: 'dataBars',
|
|
15
|
+
RANGE_MIN_MAX: 'rangeMinMax',
|
|
16
|
+
};
|
|
17
|
+
exports.MESSAGES_ORDER = [
|
|
18
|
+
exports.MessageType.ERROR,
|
|
19
|
+
exports.MessageType.HEADERS,
|
|
20
|
+
exports.MessageType.GRAND,
|
|
21
|
+
exports.MessageType.METADATA,
|
|
22
|
+
exports.MessageType.DATA,
|
|
23
|
+
exports.MessageType.DATA_FINISH,
|
|
24
|
+
exports.MessageType.TOTAL_ROWS,
|
|
25
|
+
exports.MessageType.DATABARS,
|
|
26
|
+
exports.MessageType.RANGE_MIN_MAX,
|
|
27
|
+
exports.MessageType.FINISH,
|
|
28
|
+
];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AbstractDataLoadService } from './AbstractDataLoadService.js';
|
|
2
|
+
export { DataLoadService } from './DataLoadService.js';
|
|
3
|
+
export { SisenseDataLoadService } from './SisenseDataLoadService.js';
|
|
4
|
+
export { TestDataLoadService } from './TestDataLoadService.js';
|
|
5
|
+
export { SisenseSocket } from './sockets/SisenseSocket.js';
|
|
6
|
+
export { type MeasurePath } from './types.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SisenseSocket = exports.TestDataLoadService = exports.SisenseDataLoadService = exports.DataLoadService = exports.AbstractDataLoadService = void 0;
|
|
4
|
+
/* eslint-disable import/prefer-default-export */
|
|
5
|
+
var AbstractDataLoadService_js_1 = require("./AbstractDataLoadService.js");
|
|
6
|
+
Object.defineProperty(exports, "AbstractDataLoadService", { enumerable: true, get: function () { return AbstractDataLoadService_js_1.AbstractDataLoadService; } });
|
|
7
|
+
var DataLoadService_js_1 = require("./DataLoadService.js");
|
|
8
|
+
Object.defineProperty(exports, "DataLoadService", { enumerable: true, get: function () { return DataLoadService_js_1.DataLoadService; } });
|
|
9
|
+
var SisenseDataLoadService_js_1 = require("./SisenseDataLoadService.js");
|
|
10
|
+
Object.defineProperty(exports, "SisenseDataLoadService", { enumerable: true, get: function () { return SisenseDataLoadService_js_1.SisenseDataLoadService; } });
|
|
11
|
+
var TestDataLoadService_js_1 = require("./TestDataLoadService.js");
|
|
12
|
+
Object.defineProperty(exports, "TestDataLoadService", { enumerable: true, get: function () { return TestDataLoadService_js_1.TestDataLoadService; } });
|
|
13
|
+
var SisenseSocket_js_1 = require("./sockets/SisenseSocket.js");
|
|
14
|
+
Object.defineProperty(exports, "SisenseSocket", { enumerable: true, get: function () { return SisenseSocket_js_1.SisenseSocket; } });
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { SocketI, SocketQueryOptions } from '../types.js';
|
|
2
|
+
export declare class SisenseSocket implements SocketI {
|
|
3
|
+
/**
|
|
4
|
+
@private */
|
|
5
|
+
socket: SocketIOClient.Socket;
|
|
6
|
+
private isRegistered;
|
|
7
|
+
private isListening;
|
|
8
|
+
/**
|
|
9
|
+
@private */
|
|
10
|
+
onMessageCallback?: (type: string, data: any) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new SisenseSocket instance.
|
|
13
|
+
*
|
|
14
|
+
* @param data - Either a URL string or an existing SocketIOClient.Socket instance
|
|
15
|
+
* @param query - Socket query options for authentication
|
|
16
|
+
* @param namespace - Optional socket.io namespace to connect to (e.g., 'pivot2')
|
|
17
|
+
*/
|
|
18
|
+
constructor(data: string | SocketIOClient.Socket, query: SocketQueryOptions, namespace?: string);
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes on socket readiness events
|
|
21
|
+
*/
|
|
22
|
+
subcribeOnSocketReadiness(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Checks if socket is ready for sending messages or not
|
|
25
|
+
*
|
|
26
|
+
* @returns {boolean} - true - ready
|
|
27
|
+
*/
|
|
28
|
+
isReady(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Attach event handler
|
|
31
|
+
*
|
|
32
|
+
* @param {string} event - event name
|
|
33
|
+
* @param {Function} cb - handler function
|
|
34
|
+
* @returns {void}
|
|
35
|
+
*/
|
|
36
|
+
on(event: string, cb: Function): void;
|
|
37
|
+
/**
|
|
38
|
+
* Detach event handler
|
|
39
|
+
*
|
|
40
|
+
* @param {string} event - event name
|
|
41
|
+
* @param {Function} cb - handler function
|
|
42
|
+
* @returns {void}
|
|
43
|
+
*/
|
|
44
|
+
off(event: string, cb: Function): void;
|
|
45
|
+
/**
|
|
46
|
+
* Send message via socket
|
|
47
|
+
*
|
|
48
|
+
* @param {string} event - message name
|
|
49
|
+
* @param {Array<any>} args - arguments
|
|
50
|
+
* @param {Array<any>} args.0 - message data
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
send(event: string, ...args: any[]): void;
|
|
54
|
+
/**
|
|
55
|
+
* Specific message handler
|
|
56
|
+
*
|
|
57
|
+
* @param {string} type - message type
|
|
58
|
+
* @param {string} subType - message subtype (query ID)
|
|
59
|
+
* @param {Function} callback - handler function
|
|
60
|
+
* @returns {Function} - unsubscribe function
|
|
61
|
+
*/
|
|
62
|
+
onMessage(type: string, subType: string, callback: (type: string, data: any) => void): () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Emulate receiving message from socket
|
|
65
|
+
*
|
|
66
|
+
* @param {string} event - message type
|
|
67
|
+
* @param {any} data - message data
|
|
68
|
+
* @returns {void}
|
|
69
|
+
*/
|
|
70
|
+
trigger(event: string, data: any): any;
|
|
71
|
+
/**
|
|
72
|
+
* Creates and configures a new socket.io connection.
|
|
73
|
+
*
|
|
74
|
+
* @param url - Base URL of the Sisense instance
|
|
75
|
+
* @param query - Socket query options for authentication
|
|
76
|
+
* @param namespace - Optional socket.io namespace to connect to (e.g., 'pivot2')
|
|
77
|
+
* @returns Configured SocketIOClient.Socket instance
|
|
78
|
+
*/
|
|
79
|
+
static createNewSocket(url: string, query: SocketQueryOptions, namespace?: string): SocketIOClient.Socket;
|
|
80
|
+
}
|
|
81
|
+
export default SisenseSocket;
|
|
@@ -0,0 +1,162 @@
|
|
|
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.SisenseSocket = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
8
|
+
const sdk_common_1 = require("@sisense/sdk-common");
|
|
9
|
+
const socket_io_client_1 = __importDefault(require("socket.io-client"));
|
|
10
|
+
const helpers_js_1 = require("./helpers.js");
|
|
11
|
+
class SisenseSocket {
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new SisenseSocket instance.
|
|
14
|
+
*
|
|
15
|
+
* @param data - Either a URL string or an existing SocketIOClient.Socket instance
|
|
16
|
+
* @param query - Socket query options for authentication
|
|
17
|
+
* @param namespace - Optional socket.io namespace to connect to (e.g., 'pivot2')
|
|
18
|
+
*/
|
|
19
|
+
constructor(data, query, namespace) {
|
|
20
|
+
this.isRegistered = false;
|
|
21
|
+
this.isListening = false;
|
|
22
|
+
if (typeof data === 'string') {
|
|
23
|
+
this.socket = SisenseSocket.createNewSocket(data, query, namespace);
|
|
24
|
+
this.subcribeOnSocketReadiness();
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.socket = data;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Subscribes on socket readiness events
|
|
32
|
+
*/
|
|
33
|
+
subcribeOnSocketReadiness() {
|
|
34
|
+
this.socket.on('register', () => {
|
|
35
|
+
this.isRegistered = true;
|
|
36
|
+
});
|
|
37
|
+
this.socket.on('listen', () => {
|
|
38
|
+
this.isListening = true;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if socket is ready for sending messages or not
|
|
43
|
+
*
|
|
44
|
+
* @returns {boolean} - true - ready
|
|
45
|
+
*/
|
|
46
|
+
isReady() {
|
|
47
|
+
// return this.socket.registeredInSisense;
|
|
48
|
+
return this.isRegistered && this.isListening;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Attach event handler
|
|
52
|
+
*
|
|
53
|
+
* @param {string} event - event name
|
|
54
|
+
* @param {Function} cb - handler function
|
|
55
|
+
* @returns {void}
|
|
56
|
+
*/
|
|
57
|
+
on(event, cb) {
|
|
58
|
+
this.socket.on(event, cb);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detach event handler
|
|
62
|
+
*
|
|
63
|
+
* @param {string} event - event name
|
|
64
|
+
* @param {Function} cb - handler function
|
|
65
|
+
* @returns {void}
|
|
66
|
+
*/
|
|
67
|
+
off(event, cb) {
|
|
68
|
+
this.socket.off(event, cb);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Send message via socket
|
|
72
|
+
*
|
|
73
|
+
* @param {string} event - message name
|
|
74
|
+
* @param {Array<any>} args - arguments
|
|
75
|
+
* @param {Array<any>} args.0 - message data
|
|
76
|
+
* @returns {void}
|
|
77
|
+
*/
|
|
78
|
+
send(event, ...args) {
|
|
79
|
+
const data = args[0];
|
|
80
|
+
this.socket.emit(event, JSON.stringify(data));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Specific message handler
|
|
84
|
+
*
|
|
85
|
+
* @param {string} type - message type
|
|
86
|
+
* @param {string} subType - message subtype (query ID)
|
|
87
|
+
* @param {Function} callback - handler function
|
|
88
|
+
* @returns {Function} - unsubscribe function
|
|
89
|
+
*/
|
|
90
|
+
onMessage(type, subType, callback) {
|
|
91
|
+
this.onMessageCallback = callback;
|
|
92
|
+
const eventType = type || '';
|
|
93
|
+
const eventSubType = subType || '';
|
|
94
|
+
const eventName = eventSubType ? `${eventType}-${eventSubType}` : eventType;
|
|
95
|
+
const handler = (event) => {
|
|
96
|
+
let data = null;
|
|
97
|
+
try {
|
|
98
|
+
data = JSON.parse(event);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
throw new Error('Error parsing response message');
|
|
102
|
+
}
|
|
103
|
+
callback(eventType, data);
|
|
104
|
+
};
|
|
105
|
+
this.on(eventName, handler);
|
|
106
|
+
return () => {
|
|
107
|
+
this.off(eventName, handler);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Emulate receiving message from socket
|
|
112
|
+
*
|
|
113
|
+
* @param {string} event - message type
|
|
114
|
+
* @param {any} data - message data
|
|
115
|
+
* @returns {void}
|
|
116
|
+
*/
|
|
117
|
+
trigger(event, data) {
|
|
118
|
+
if (this.onMessageCallback) {
|
|
119
|
+
this.onMessageCallback(event, data);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Creates and configures a new socket.io connection.
|
|
124
|
+
*
|
|
125
|
+
* @param url - Base URL of the Sisense instance
|
|
126
|
+
* @param query - Socket query options for authentication
|
|
127
|
+
* @param namespace - Optional socket.io namespace to connect to (e.g., 'pivot2')
|
|
128
|
+
* @returns Configured SocketIOClient.Socket instance
|
|
129
|
+
*/
|
|
130
|
+
static createNewSocket(url, query, namespace) {
|
|
131
|
+
const gatewayUrl = new URL('./gateway', new URL((0, sdk_common_1.normalizeUrl)(url)));
|
|
132
|
+
const uri = gatewayUrl.origin + (namespace ? `/${namespace}` : '');
|
|
133
|
+
const socket = socket_io_client_1.default.connect(uri, {
|
|
134
|
+
path: gatewayUrl.pathname,
|
|
135
|
+
transports: ['websocket'],
|
|
136
|
+
reconnection: true,
|
|
137
|
+
query,
|
|
138
|
+
});
|
|
139
|
+
socket.on('connect_error', (err) => {
|
|
140
|
+
console.log(`connect_error due to ${err.message}`);
|
|
141
|
+
});
|
|
142
|
+
socket.on('csrf', () => {
|
|
143
|
+
// If CSRF is enabled, we will receive a CSRF event from the server and should send a CSRF event back to initiate the CSRF check
|
|
144
|
+
socket.emit('csrf', (0, helpers_js_1.getCsrfResponseData)());
|
|
145
|
+
});
|
|
146
|
+
socket.on('listen', () => {
|
|
147
|
+
// Send the register event only when the server is ready to listen
|
|
148
|
+
socket.emit('register', {});
|
|
149
|
+
});
|
|
150
|
+
socket.on('register', () => {
|
|
151
|
+
socket.emit('{"eventName": "_registerEvent", "data": "pivot2"}');
|
|
152
|
+
// socket.registeredInSisense = true;
|
|
153
|
+
});
|
|
154
|
+
socket.on('error', (err) => {
|
|
155
|
+
// eslint-disable-next-line no-console
|
|
156
|
+
console.warn(`"SisenseSocket" socket error "${err}"`);
|
|
157
|
+
});
|
|
158
|
+
return socket;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.SisenseSocket = SisenseSocket;
|
|
162
|
+
exports.default = SisenseSocket;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import EventEmitter from 'events';
|
|
3
|
+
import { SocketI } from '../types.js';
|
|
4
|
+
export declare class TestSocket implements SocketI {
|
|
5
|
+
/** @private */
|
|
6
|
+
events: EventEmitter;
|
|
7
|
+
/** @private */
|
|
8
|
+
ready: boolean;
|
|
9
|
+
/** @private */
|
|
10
|
+
onMessageCallback?: (type: string, data: any) => void;
|
|
11
|
+
constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Checks if socket is ready for sending messages or not
|
|
14
|
+
*
|
|
15
|
+
* @returns {boolean} - true - ready
|
|
16
|
+
*/
|
|
17
|
+
isReady(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Attach event handler
|
|
20
|
+
*
|
|
21
|
+
* @param {string} event - event name
|
|
22
|
+
* @param {Function} cb - handler function
|
|
23
|
+
* @returns {void}
|
|
24
|
+
*/
|
|
25
|
+
on(event: string, cb: (...args: Array<any>) => void): void;
|
|
26
|
+
/**
|
|
27
|
+
* Detach event handler
|
|
28
|
+
*
|
|
29
|
+
* @param {string} event - event name
|
|
30
|
+
* @param {Function} cb - handler function
|
|
31
|
+
* @returns {void}
|
|
32
|
+
*/
|
|
33
|
+
off(event: string, cb: (...args: Array<any>) => void): void;
|
|
34
|
+
/**
|
|
35
|
+
* Send message via socket
|
|
36
|
+
*
|
|
37
|
+
* @param {string} event - message name
|
|
38
|
+
* @param {Array<any>} args - arguments
|
|
39
|
+
* @param {Array<any>} args.0 - message data
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
send(event: string, ...args: any[]): void;
|
|
43
|
+
/**
|
|
44
|
+
* Specific message handler
|
|
45
|
+
*
|
|
46
|
+
* @param {string} type - message type
|
|
47
|
+
* @param {string} subType - message subtype (query ID)
|
|
48
|
+
* @param {Function} callback - handler function
|
|
49
|
+
* @returns {Function} - unsubscribe function
|
|
50
|
+
*/
|
|
51
|
+
onMessage(type: string, subType: string, callback: (type: string, data: any) => void): () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Emulate receiving message from socket
|
|
54
|
+
*
|
|
55
|
+
* @param {string} event - message type
|
|
56
|
+
* @param {any} data - message data
|
|
57
|
+
* @returns {Promise} - waiting promise
|
|
58
|
+
*/
|
|
59
|
+
trigger(event: string, data: any): any;
|
|
60
|
+
}
|
|
61
|
+
export default TestSocket;
|