@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.
Files changed (189) hide show
  1. package/LICENSE.md +35 -0
  2. package/README.md +2 -0
  3. package/dist/__test-helpers__/testUtils.d.ts +30 -0
  4. package/dist/__test-helpers__/testUtils.js +89 -0
  5. package/dist/builders/index.d.ts +2 -0
  6. package/dist/builders/index.js +2 -0
  7. package/dist/builders/pivot-data-builder.d.ts +34 -0
  8. package/dist/builders/pivot-data-builder.js +182 -0
  9. package/dist/builders/socket-builder.d.ts +18 -0
  10. package/dist/builders/socket-builder.js +72 -0
  11. package/dist/cjs/__test-helpers__/testUtils.d.ts +30 -0
  12. package/dist/cjs/__test-helpers__/testUtils.js +104 -0
  13. package/dist/cjs/builders/index.d.ts +2 -0
  14. package/dist/cjs/builders/index.js +7 -0
  15. package/dist/cjs/builders/pivot-data-builder.d.ts +34 -0
  16. package/dist/cjs/builders/pivot-data-builder.js +186 -0
  17. package/dist/cjs/builders/socket-builder.d.ts +18 -0
  18. package/dist/cjs/builders/socket-builder.js +79 -0
  19. package/dist/cjs/data-handling/DataService.d.ts +672 -0
  20. package/dist/cjs/data-handling/DataService.js +1364 -0
  21. package/dist/cjs/data-handling/DivergenceComparator.d.ts +7 -0
  22. package/dist/cjs/data-handling/DivergenceComparator.js +20 -0
  23. package/dist/cjs/data-handling/constants.d.ts +44 -0
  24. package/dist/cjs/data-handling/constants.js +43 -0
  25. package/dist/cjs/data-handling/index.d.ts +3 -0
  26. package/dist/cjs/data-handling/index.js +23 -0
  27. package/dist/cjs/data-handling/types.d.ts +104 -0
  28. package/dist/cjs/data-handling/types.js +2 -0
  29. package/dist/cjs/data-handling/utils/createPivotTreeNode.d.ts +13 -0
  30. package/dist/cjs/data-handling/utils/createPivotTreeNode.js +21 -0
  31. package/dist/cjs/data-handling/utils/index.d.ts +4 -0
  32. package/dist/cjs/data-handling/utils/index.js +14 -0
  33. package/dist/cjs/data-handling/utils/jaqlProcessor.d.ts +122 -0
  34. package/dist/cjs/data-handling/utils/jaqlProcessor.js +661 -0
  35. package/dist/cjs/data-handling/utils/pivotTransforms.d.ts +74 -0
  36. package/dist/cjs/data-handling/utils/pivotTransforms.js +373 -0
  37. package/dist/cjs/data-handling/utils/plugins/PluginService.d.ts +135 -0
  38. package/dist/cjs/data-handling/utils/plugins/PluginService.js +383 -0
  39. package/dist/cjs/data-handling/utils/plugins/getters.d.ts +23 -0
  40. package/dist/cjs/data-handling/utils/plugins/getters.js +70 -0
  41. package/dist/cjs/data-handling/utils/plugins/types.d.ts +75 -0
  42. package/dist/cjs/data-handling/utils/plugins/types.js +2 -0
  43. package/dist/cjs/data-handling/utils/plugins/validator.d.ts +13 -0
  44. package/dist/cjs/data-handling/utils/plugins/validator.js +169 -0
  45. package/dist/cjs/data-load/AbstractDataLoadService.d.ts +256 -0
  46. package/dist/cjs/data-load/AbstractDataLoadService.js +473 -0
  47. package/dist/cjs/data-load/DataLoadService.d.ts +63 -0
  48. package/dist/cjs/data-load/DataLoadService.js +152 -0
  49. package/dist/cjs/data-load/SisenseDataLoadService.d.ts +44 -0
  50. package/dist/cjs/data-load/SisenseDataLoadService.js +87 -0
  51. package/dist/cjs/data-load/TestDataLoadService.d.ts +27 -0
  52. package/dist/cjs/data-load/TestDataLoadService.js +76 -0
  53. package/dist/cjs/data-load/constants.d.ts +13 -0
  54. package/dist/cjs/data-load/constants.js +28 -0
  55. package/dist/cjs/data-load/index.d.ts +6 -0
  56. package/dist/cjs/data-load/index.js +14 -0
  57. package/dist/cjs/data-load/sockets/SisenseSocket.d.ts +81 -0
  58. package/dist/cjs/data-load/sockets/SisenseSocket.js +162 -0
  59. package/dist/cjs/data-load/sockets/TestSocket.d.ts +61 -0
  60. package/dist/cjs/data-load/sockets/TestSocket.js +90 -0
  61. package/dist/cjs/data-load/sockets/helpers.d.ts +4 -0
  62. package/dist/cjs/data-load/sockets/helpers.js +27 -0
  63. package/dist/cjs/data-load/sockets/index.d.ts +2 -0
  64. package/dist/cjs/data-load/sockets/index.js +8 -0
  65. package/dist/cjs/data-load/types.d.ts +90 -0
  66. package/dist/cjs/data-load/types.js +2 -0
  67. package/dist/cjs/errors/LoadingCanceledError.d.ts +7 -0
  68. package/dist/cjs/errors/LoadingCanceledError.js +24 -0
  69. package/dist/cjs/errors/index.d.ts +1 -0
  70. package/dist/cjs/errors/index.js +6 -0
  71. package/dist/cjs/index.d.ts +17 -0
  72. package/dist/cjs/index.js +32 -0
  73. package/dist/cjs/package.json +12 -0
  74. package/dist/cjs/pivot-query-client.d.ts +13 -0
  75. package/dist/cjs/pivot-query-client.js +26 -0
  76. package/dist/cjs/tree-structure/AbstractTreeService.d.ts +308 -0
  77. package/dist/cjs/tree-structure/AbstractTreeService.js +716 -0
  78. package/dist/cjs/tree-structure/HeaderTreeService.d.ts +180 -0
  79. package/dist/cjs/tree-structure/HeaderTreeService.js +280 -0
  80. package/dist/cjs/tree-structure/TreeCellMap.d.ts +104 -0
  81. package/dist/cjs/tree-structure/TreeCellMap.js +145 -0
  82. package/dist/cjs/tree-structure/TreeService.d.ts +8 -0
  83. package/dist/cjs/tree-structure/TreeService.js +12 -0
  84. package/dist/cjs/tree-structure/constants.d.ts +6 -0
  85. package/dist/cjs/tree-structure/constants.js +10 -0
  86. package/dist/cjs/tree-structure/index.d.ts +5 -0
  87. package/dist/cjs/tree-structure/index.js +10 -0
  88. package/dist/cjs/tree-structure/types.d.ts +93 -0
  89. package/dist/cjs/tree-structure/types.js +2 -0
  90. package/dist/cjs/tree-structure/utils/index.d.ts +1 -0
  91. package/dist/cjs/tree-structure/utils/index.js +9 -0
  92. package/dist/cjs/tree-structure/utils/treeNode.d.ts +147 -0
  93. package/dist/cjs/tree-structure/utils/treeNode.js +534 -0
  94. package/dist/cjs/utils/array.d.ts +13 -0
  95. package/dist/cjs/utils/array.js +25 -0
  96. package/dist/cjs/utils/cloneObject.d.ts +30 -0
  97. package/dist/cjs/utils/cloneObject.js +225 -0
  98. package/dist/cjs/utils/index.d.ts +3 -0
  99. package/dist/cjs/utils/index.js +9 -0
  100. package/dist/cjs/utils/throttle.d.ts +12 -0
  101. package/dist/cjs/utils/throttle.js +39 -0
  102. package/dist/cjs/utils/types.d.ts +12 -0
  103. package/dist/cjs/utils/types.js +2 -0
  104. package/dist/data-handling/DataService.d.ts +672 -0
  105. package/dist/data-handling/DataService.js +1357 -0
  106. package/dist/data-handling/DivergenceComparator.d.ts +7 -0
  107. package/dist/data-handling/DivergenceComparator.js +16 -0
  108. package/dist/data-handling/constants.d.ts +44 -0
  109. package/dist/data-handling/constants.js +40 -0
  110. package/dist/data-handling/index.d.ts +3 -0
  111. package/dist/data-handling/index.js +4 -0
  112. package/dist/data-handling/types.d.ts +104 -0
  113. package/dist/data-handling/types.js +1 -0
  114. package/dist/data-handling/utils/createPivotTreeNode.d.ts +13 -0
  115. package/dist/data-handling/utils/createPivotTreeNode.js +17 -0
  116. package/dist/data-handling/utils/index.d.ts +4 -0
  117. package/dist/data-handling/utils/index.js +4 -0
  118. package/dist/data-handling/utils/jaqlProcessor.d.ts +122 -0
  119. package/dist/data-handling/utils/jaqlProcessor.js +621 -0
  120. package/dist/data-handling/utils/pivotTransforms.d.ts +74 -0
  121. package/dist/data-handling/utils/pivotTransforms.js +335 -0
  122. package/dist/data-handling/utils/plugins/PluginService.d.ts +135 -0
  123. package/dist/data-handling/utils/plugins/PluginService.js +379 -0
  124. package/dist/data-handling/utils/plugins/getters.d.ts +23 -0
  125. package/dist/data-handling/utils/plugins/getters.js +65 -0
  126. package/dist/data-handling/utils/plugins/types.d.ts +75 -0
  127. package/dist/data-handling/utils/plugins/types.js +1 -0
  128. package/dist/data-handling/utils/plugins/validator.d.ts +13 -0
  129. package/dist/data-handling/utils/plugins/validator.js +165 -0
  130. package/dist/data-load/AbstractDataLoadService.d.ts +256 -0
  131. package/dist/data-load/AbstractDataLoadService.js +466 -0
  132. package/dist/data-load/DataLoadService.d.ts +63 -0
  133. package/dist/data-load/DataLoadService.js +148 -0
  134. package/dist/data-load/SisenseDataLoadService.d.ts +44 -0
  135. package/dist/data-load/SisenseDataLoadService.js +83 -0
  136. package/dist/data-load/TestDataLoadService.d.ts +27 -0
  137. package/dist/data-load/TestDataLoadService.js +69 -0
  138. package/dist/data-load/constants.d.ts +13 -0
  139. package/dist/data-load/constants.js +25 -0
  140. package/dist/data-load/index.d.ts +6 -0
  141. package/dist/data-load/index.js +6 -0
  142. package/dist/data-load/sockets/SisenseSocket.d.ts +81 -0
  143. package/dist/data-load/sockets/SisenseSocket.js +155 -0
  144. package/dist/data-load/sockets/TestSocket.d.ts +61 -0
  145. package/dist/data-load/sockets/TestSocket.js +83 -0
  146. package/dist/data-load/sockets/helpers.d.ts +4 -0
  147. package/dist/data-load/sockets/helpers.js +23 -0
  148. package/dist/data-load/sockets/index.d.ts +2 -0
  149. package/dist/data-load/sockets/index.js +3 -0
  150. package/dist/data-load/types.d.ts +90 -0
  151. package/dist/data-load/types.js +1 -0
  152. package/dist/errors/LoadingCanceledError.d.ts +7 -0
  153. package/dist/errors/LoadingCanceledError.js +20 -0
  154. package/dist/errors/index.d.ts +1 -0
  155. package/dist/errors/index.js +2 -0
  156. package/dist/index.d.ts +17 -0
  157. package/dist/index.js +9 -0
  158. package/dist/pivot-query-client.d.ts +13 -0
  159. package/dist/pivot-query-client.js +22 -0
  160. package/dist/tree-structure/AbstractTreeService.d.ts +308 -0
  161. package/dist/tree-structure/AbstractTreeService.js +712 -0
  162. package/dist/tree-structure/HeaderTreeService.d.ts +180 -0
  163. package/dist/tree-structure/HeaderTreeService.js +276 -0
  164. package/dist/tree-structure/TreeCellMap.d.ts +104 -0
  165. package/dist/tree-structure/TreeCellMap.js +141 -0
  166. package/dist/tree-structure/TreeService.d.ts +8 -0
  167. package/dist/tree-structure/TreeService.js +8 -0
  168. package/dist/tree-structure/constants.d.ts +6 -0
  169. package/dist/tree-structure/constants.js +7 -0
  170. package/dist/tree-structure/index.d.ts +5 -0
  171. package/dist/tree-structure/index.js +4 -0
  172. package/dist/tree-structure/types.d.ts +93 -0
  173. package/dist/tree-structure/types.js +1 -0
  174. package/dist/tree-structure/utils/index.d.ts +1 -0
  175. package/dist/tree-structure/utils/index.js +1 -0
  176. package/dist/tree-structure/utils/treeNode.d.ts +147 -0
  177. package/dist/tree-structure/utils/treeNode.js +515 -0
  178. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  179. package/dist/utils/array.d.ts +13 -0
  180. package/dist/utils/array.js +21 -0
  181. package/dist/utils/cloneObject.d.ts +30 -0
  182. package/dist/utils/cloneObject.js +221 -0
  183. package/dist/utils/index.d.ts +3 -0
  184. package/dist/utils/index.js +3 -0
  185. package/dist/utils/throttle.d.ts +12 -0
  186. package/dist/utils/throttle.js +35 -0
  187. package/dist/utils/types.d.ts +12 -0
  188. package/dist/utils/types.js +1 -0
  189. package/package.json +61 -0
@@ -0,0 +1,165 @@
1
+ import { PluginsPanelFields } from '../../constants.js';
2
+ /**
3
+ * Validate metadata by target type
4
+ *
5
+ * @param {DimensionTarget | ValueTarget} target - object of target rules
6
+ * @param {Array<DimensionMetadata | MeasureMetadata>} metadata - Array of cell metadata
7
+ * @param {DimensionOptions | MeasureOptions} options - array of fields to compare
8
+ * @returns {boolean} validation result
9
+ */
10
+ // eslint-disable-next-line sonarjs/cognitive-complexity
11
+ function fieldsComparator(target, metadata, options) {
12
+ if (!metadata || !metadata.length) {
13
+ return false;
14
+ }
15
+ return metadata.some((metadataItem) => {
16
+ let fieldsValid = true;
17
+ if (options && options.fields && options.fields.length) {
18
+ options.fields.forEach((field) => {
19
+ if (target[field] !== undefined && metadataItem[field] === undefined) {
20
+ fieldsValid = false;
21
+ }
22
+ else if (target[field] !== undefined && metadataItem[field] !== undefined) {
23
+ if (Array.isArray(target[field])) {
24
+ fieldsValid = fieldsValid && target[field].indexOf(metadataItem[field]) !== -1;
25
+ }
26
+ else {
27
+ fieldsValid = fieldsValid && target[field] === metadataItem[field];
28
+ }
29
+ }
30
+ });
31
+ }
32
+ return fieldsValid;
33
+ });
34
+ }
35
+ /**
36
+ * Validate metadata by target type
37
+ *
38
+ * @param {Array<string>} target - types of cells
39
+ * @param {Array<string>} metadata - current cell type
40
+ * @returns {boolean} validation result
41
+ */
42
+ const isValidType = (target, metadata = []) => {
43
+ let valid = false;
44
+ if (!metadata || !metadata.length) {
45
+ return false;
46
+ }
47
+ if (target.length === 0) {
48
+ return true;
49
+ }
50
+ target.forEach((type) => {
51
+ if (metadata.includes(type)) {
52
+ valid = true;
53
+ }
54
+ });
55
+ return valid;
56
+ };
57
+ /**
58
+ * Validate metadata with target
59
+ *
60
+ * @param {DimensionTarget} target - target rows
61
+ * @param {Array<DimensionMetadata>} dimMetadata - array of rows or columns in metadata
62
+ * @returns {boolean} validation result
63
+ */
64
+ const isValidDimension = (target, dimMetadata) => {
65
+ // validate by indexes || dimension & member || title
66
+ let valid = true;
67
+ if (!dimMetadata || !dimMetadata.length) {
68
+ valid = false;
69
+ }
70
+ else {
71
+ target.forEach((dimTarget) => {
72
+ if (dimTarget.index) {
73
+ const currentPanel = dimMetadata[dimMetadata.length - 1];
74
+ valid =
75
+ valid &&
76
+ fieldsComparator(dimTarget, [currentPanel], { fields: [PluginsPanelFields.INDEX] });
77
+ }
78
+ if (dimTarget.dim) {
79
+ dimTarget.name = dimTarget.dim;
80
+ if (dimTarget.members) {
81
+ dimTarget.member = dimTarget.members;
82
+ }
83
+ valid =
84
+ valid &&
85
+ fieldsComparator(dimTarget, dimMetadata, {
86
+ fields: [PluginsPanelFields.NAME, PluginsPanelFields.MEMBER],
87
+ });
88
+ }
89
+ if (dimTarget.title) {
90
+ const currentPanel = dimMetadata[dimMetadata.length - 1];
91
+ valid =
92
+ valid &&
93
+ fieldsComparator(dimTarget, [currentPanel], { fields: [PluginsPanelFields.TITLE] });
94
+ }
95
+ });
96
+ }
97
+ return valid;
98
+ };
99
+ /**
100
+ * Validate metadata with target
101
+ *
102
+ * @param {ValueTarget} target - target rows
103
+ * @param {MeasureMetadata} measureMetadata - array of rows or columns in metadata
104
+ * @returns {boolean} validation result
105
+ */
106
+ const isValidMeasure = (target, measureMetadata) => {
107
+ // validate by indexes || dimension & member || title
108
+ let valid = true;
109
+ if (!measureMetadata || !measureMetadata.length) {
110
+ valid = false;
111
+ }
112
+ else {
113
+ target.forEach((measureTarget) => {
114
+ if (measureTarget.index) {
115
+ valid =
116
+ valid &&
117
+ fieldsComparator(measureTarget, measureMetadata, { fields: [PluginsPanelFields.INDEX] });
118
+ }
119
+ if (measureTarget.dim) {
120
+ measureTarget.name = measureTarget.dim;
121
+ valid =
122
+ valid &&
123
+ fieldsComparator(measureTarget, measureMetadata, {
124
+ fields: [PluginsPanelFields.DIM, PluginsPanelFields.AGG],
125
+ });
126
+ }
127
+ if (measureTarget.title) {
128
+ valid =
129
+ valid &&
130
+ fieldsComparator(measureTarget, measureMetadata, { fields: [PluginsPanelFields.TITLE] });
131
+ }
132
+ });
133
+ }
134
+ return valid;
135
+ };
136
+ /**
137
+ * Collect and return rows or columns group metadata
138
+ *
139
+ * @param {Target} target - target rows
140
+ * @param {Metadata} metadata - array of rows in metadata
141
+ * @returns {boolean} validation result
142
+ */
143
+ // eslint-disable-next-line sonarjs/cognitive-complexity
144
+ export const validate = (target, metadata) => {
145
+ let valid = true;
146
+ if (target.type && valid) {
147
+ valid = valid && isValidType(target.type, metadata.type);
148
+ }
149
+ if (target.rows && target.rows.length && valid) {
150
+ const rows = metadata.rows ? metadata.rows : [];
151
+ valid = valid && isValidDimension(target.rows, rows);
152
+ }
153
+ if (target.columns && valid) {
154
+ const columns = metadata.columns ? metadata.columns : [];
155
+ valid = valid && isValidDimension(target.columns, columns);
156
+ }
157
+ if (target.values && valid) {
158
+ const measure = metadata.measure ? [metadata.measure] : [];
159
+ valid = valid && isValidMeasure(target.values, measure);
160
+ }
161
+ return valid;
162
+ };
163
+ export default {
164
+ validate,
165
+ };
@@ -0,0 +1,256 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import EventEmitter from 'events';
4
+ import { DataLoadServiceI, JaqlRequest } from './types.js';
5
+ declare type DataCache = {
6
+ [key: string]: any;
7
+ };
8
+ declare type LoadState = {
9
+ [key: string]: number;
10
+ };
11
+ /**
12
+ * Initiate single socket connection and creates new PivotDataSource for each JAQL request
13
+ */
14
+ export declare class AbstractDataLoadService implements DataLoadServiceI {
15
+ /**
16
+ *
17
+ * @private
18
+ *
19
+ * EventEmitter instance
20
+ */
21
+ events: EventEmitter;
22
+ /**
23
+ * @private
24
+ *
25
+ * jaql request object
26
+ */
27
+ jaql?: JaqlRequest;
28
+ /**
29
+ * @private
30
+ *
31
+ * cache object
32
+ */
33
+ data?: DataCache;
34
+ /**
35
+ * @private
36
+ *
37
+ * state for "load" method
38
+ */
39
+ isLoadInProgress: boolean;
40
+ /**
41
+ @private */
42
+ loadPromiseResolve?: Function;
43
+ /**
44
+ *
45
+ * @private
46
+ */
47
+ loadPromiseReject?: Function;
48
+ /**
49
+ * @private
50
+ *
51
+ * info about amount of data which already loaded from cache
52
+ */
53
+ loadFromCacheState?: LoadState;
54
+ /**
55
+ @private */
56
+ loadFromCacheInitialTimer?: NodeJS.Timeout;
57
+ /**
58
+ @private */
59
+ loadFromCacheTimer?: NodeJS.Immediate;
60
+ /**
61
+ * @private
62
+ *
63
+ * defines initial pivot data structure
64
+ */
65
+ isSingleBranchTree: boolean;
66
+ /**
67
+ * @private
68
+ *
69
+ * items count loaded on client side
70
+ */
71
+ loadedItemsCount: number;
72
+ /**
73
+ * @private
74
+ *
75
+ * total items count on back-end side
76
+ */
77
+ totalItemsCount: number;
78
+ /**
79
+ * @private
80
+ *
81
+ * defines if amount of data was limited on back-end or not
82
+ */
83
+ isLimited: boolean;
84
+ /**
85
+ * @private
86
+ *
87
+ * detects if finish event was received
88
+ */
89
+ isFinishEventReceived: boolean;
90
+ constructor(events?: EventEmitter);
91
+ /**
92
+ * Destroys data load service
93
+ *
94
+ * @returns {void}
95
+ */
96
+ destroy(): void;
97
+ /**
98
+ * Return copy of load service
99
+ *
100
+ * @returns {DataLoadService} - cloned instance
101
+ */
102
+ clone(): DataLoadServiceI;
103
+ /**
104
+ * Start data loading according to JAQL request
105
+ *
106
+ * @param {JaqlRequest} jaql - JAQL request
107
+ * @returns {Promise<any>} - whole data loading promise
108
+ */
109
+ load(jaql: JaqlRequest): Promise<any>;
110
+ /**
111
+ * Clear data cache
112
+ *
113
+ * @returns {void}
114
+ */
115
+ clear(): void;
116
+ /**
117
+ * Returns current jaql request object
118
+ *
119
+ * @returns {JaqlRequest} - jaql request object
120
+ */
121
+ getJaql(): JaqlRequest | undefined;
122
+ /**
123
+ * Defines data structure
124
+ *
125
+ * @returns {boolean} - true - single branch tree
126
+ */
127
+ isSingleRowTree(): boolean;
128
+ /**
129
+ * Returns total amount items count handled on back-end side
130
+ *
131
+ * @returns {number} - items count
132
+ */
133
+ getTotalItemsCount(): number;
134
+ /**
135
+ * Defines if new jaql has only formatting changes or it requires new data loading from server
136
+ *
137
+ * @param {JaqlRequest} jaql - jaql request object
138
+ * @returns {boolean} - true - only formatting changes, can use cached data
139
+ */
140
+ isFormattingChanges(jaql?: JaqlRequest): boolean;
141
+ /**
142
+ * Defines if service have some data
143
+ *
144
+ * @returns {boolean} - true - has some data
145
+ */
146
+ hasData(): boolean;
147
+ /**
148
+ * Defines if service have some error
149
+ *
150
+ * @returns {boolean} - true - has some error
151
+ */
152
+ hasError(): boolean;
153
+ /**
154
+ * Start data loading from the server
155
+ *
156
+ * @returns {void}
157
+ * @private
158
+ */
159
+ loadFromServer(): void;
160
+ /**
161
+ * Method for canceling the processing of query already sent
162
+ *
163
+ * @returns {Promise<void>} - waiting promise
164
+ */
165
+ cancelQuery(): Promise<void>;
166
+ /**
167
+ * Method for detection if cancel query is still needed
168
+ *
169
+ * @returns {boolean} - is cancel query needed
170
+ */
171
+ isCancelQueryNeeded(): boolean;
172
+ /**
173
+ * Start data loading from the cache
174
+ *
175
+ * @returns {Promise<void>} - waiting promise
176
+ * @private
177
+ */
178
+ loadFromCache(): Promise<void>;
179
+ /**
180
+ * Starts loading data from cache queue
181
+ *
182
+ * @param {Function} onFinish - on finish callback
183
+ * @returns {void}
184
+ * @private
185
+ */
186
+ loadMessageFromCache(onFinish: () => void): void;
187
+ /**
188
+ * Cache appropriate message
189
+ *
190
+ * @param {string} type - message type
191
+ * @param {any} data - message payload
192
+ * @returns {void}
193
+ * @private
194
+ */
195
+ cacheData(type: string, data?: any): void;
196
+ /**
197
+ * Notify outside about data chunk with saving to inner cache, applying chunk formatting with
198
+ * saving initial messages queue
199
+ *
200
+ * @param {string} type - data chunk type
201
+ * @param {any} chunk - data chunk data
202
+ * @param {boolean} isFromCache - mark data which already was cached
203
+ * @returns {void}
204
+ * @private
205
+ */
206
+ notifyAboutDataChunk(type: string, chunk?: any, isFromCache?: boolean): void;
207
+ /**
208
+ * Resolve "load" method with appropriate data information
209
+ *
210
+ * @param {any} data - data to resolve with
211
+ * @returns {void}
212
+ * @private
213
+ */
214
+ notifyAboutDataLoaded(data?: any): void;
215
+ /**
216
+ * Reject "load" method with appropriate data information
217
+ *
218
+ * @param {any} data - data to reject with
219
+ * @returns {void}
220
+ * @private
221
+ */
222
+ notifyAboutDataError(data?: any): void;
223
+ /**
224
+ * Subscribe to event notification
225
+ *
226
+ * @param {string} eventName - event name to subscribe
227
+ * @param {Function} callback - event handler
228
+ * @returns {void}
229
+ */
230
+ on(eventName: string, callback: (payload: any) => void): void;
231
+ /**
232
+ * Unsubscribe from event notification
233
+ *
234
+ * @param {string} eventName - event name to unsubscribe
235
+ * @param {Function} callback - event handler
236
+ * @returns {void}
237
+ */
238
+ off(eventName: string, callback: (payload: any) => void): void;
239
+ /**
240
+ * Unsubscribe from all event notifications
241
+ *
242
+ * @param {string} eventName - event name to unsubscribe
243
+ * @returns {void}
244
+ */
245
+ offAll(eventName: string): void;
246
+ listenerCount(eventName: string): number;
247
+ /**
248
+ * Trigger event notification
249
+ *
250
+ * @param {string} eventName - event name to subscribe
251
+ * @param {Array<any>} rest - arguments will be passed to event handler
252
+ * @returns {void}
253
+ */
254
+ emit(eventName: string, ...rest: Array<any>): void;
255
+ }
256
+ export default AbstractDataLoadService;