@cubejs-client/core 1.3.15 → 1.3.16

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 (100) hide show
  1. package/dist/{cubejs-client-core.js → cubejs-client-core.cjs.js} +1016 -411
  2. package/dist/cubejs-client-core.cjs.js.map +1 -0
  3. package/dist/cubejs-client-core.umd.js +2901 -12088
  4. package/dist/cubejs-client-core.umd.js.map +1 -1
  5. package/dist/src/HttpTransport.d.ts +54 -0
  6. package/dist/src/HttpTransport.d.ts.map +1 -0
  7. package/dist/src/HttpTransport.js +55 -0
  8. package/dist/src/Meta.d.ts +62 -0
  9. package/dist/src/Meta.d.ts.map +1 -0
  10. package/dist/src/Meta.js +150 -0
  11. package/dist/src/ProgressResult.d.ts +8 -0
  12. package/dist/src/ProgressResult.d.ts.map +1 -0
  13. package/dist/src/ProgressResult.js +11 -0
  14. package/dist/src/RequestError.d.ts +6 -0
  15. package/dist/src/RequestError.d.ts.map +1 -0
  16. package/dist/src/RequestError.js +7 -0
  17. package/dist/src/ResultSet.d.ts +430 -0
  18. package/dist/src/ResultSet.d.ts.map +1 -0
  19. package/dist/src/ResultSet.js +952 -0
  20. package/dist/src/SqlQuery.d.ts +17 -0
  21. package/dist/src/SqlQuery.d.ts.map +1 -0
  22. package/dist/src/SqlQuery.js +11 -0
  23. package/dist/src/index.d.ts +194 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +411 -0
  26. package/dist/src/index.umd.d.ts +3 -0
  27. package/dist/src/index.umd.d.ts.map +1 -0
  28. package/dist/src/index.umd.js +6 -0
  29. package/dist/src/time.d.ts +70 -0
  30. package/dist/src/time.d.ts.map +1 -0
  31. package/dist/src/time.js +249 -0
  32. package/dist/src/types.d.ts +424 -0
  33. package/dist/src/types.d.ts.map +1 -0
  34. package/dist/src/types.js +1 -0
  35. package/dist/src/utils.d.ts +19 -0
  36. package/dist/src/utils.d.ts.map +1 -0
  37. package/dist/src/utils.js +294 -0
  38. package/dist/test/CubeApi.test.d.ts +7 -0
  39. package/dist/test/CubeApi.test.d.ts.map +1 -0
  40. package/dist/test/CubeApi.test.js +279 -0
  41. package/dist/test/HttpTransport.test.d.ts +2 -0
  42. package/dist/test/HttpTransport.test.d.ts.map +1 -0
  43. package/dist/test/HttpTransport.test.js +244 -0
  44. package/dist/test/ResultSet.test.d.ts +7 -0
  45. package/dist/test/ResultSet.test.d.ts.map +1 -0
  46. package/dist/test/ResultSet.test.js +1725 -0
  47. package/dist/test/compare-date-range.test.d.ts +2 -0
  48. package/dist/test/compare-date-range.test.d.ts.map +1 -0
  49. package/dist/test/compare-date-range.test.js +742 -0
  50. package/dist/test/data-blending.test.d.ts +2 -0
  51. package/dist/test/data-blending.test.d.ts.map +1 -0
  52. package/dist/test/data-blending.test.js +423 -0
  53. package/dist/test/default-heuristics.test.d.ts +2 -0
  54. package/dist/test/default-heuristics.test.d.ts.map +1 -0
  55. package/dist/test/default-heuristics.test.js +108 -0
  56. package/dist/test/drill-down.test.d.ts +2 -0
  57. package/dist/test/drill-down.test.d.ts.map +1 -0
  58. package/dist/test/drill-down.test.js +373 -0
  59. package/dist/test/fixtures/datablending/load-responses.json +261 -0
  60. package/dist/test/granularity.test.d.ts +2 -0
  61. package/dist/test/granularity.test.d.ts.map +1 -0
  62. package/dist/test/granularity.test.js +218 -0
  63. package/dist/test/helpers.d.ts +283 -0
  64. package/dist/test/helpers.d.ts.map +1 -0
  65. package/dist/test/helpers.js +974 -0
  66. package/dist/test/index.test.d.ts +7 -0
  67. package/dist/test/index.test.d.ts.map +1 -0
  68. package/dist/test/index.test.js +370 -0
  69. package/dist/test/table.test.d.ts +2 -0
  70. package/dist/test/table.test.d.ts.map +1 -0
  71. package/dist/test/table.test.js +757 -0
  72. package/dist/test/utils.test.d.ts +2 -0
  73. package/dist/test/utils.test.d.ts.map +1 -0
  74. package/dist/test/utils.test.js +32 -0
  75. package/package.json +26 -21
  76. package/dist/cubejs-client-core.esm.js +0 -1639
  77. package/dist/cubejs-client-core.esm.js.map +0 -1
  78. package/dist/cubejs-client-core.js.map +0 -1
  79. package/index.d.ts +0 -1338
  80. package/src/HttpTransport.js +0 -60
  81. package/src/HttpTransport.test.js +0 -117
  82. package/src/Meta.js +0 -142
  83. package/src/ProgressResult.js +0 -13
  84. package/src/RequestError.js +0 -7
  85. package/src/ResultSet.js +0 -746
  86. package/src/SqlQuery.js +0 -13
  87. package/src/index.js +0 -398
  88. package/src/index.test.js +0 -454
  89. package/src/index.umd.js +0 -8
  90. package/src/tests/ResultSet.test.js +0 -1655
  91. package/src/tests/compare-date-range.test.js +0 -753
  92. package/src/tests/data-blending.test.js +0 -432
  93. package/src/tests/default-heuristics.test.js +0 -118
  94. package/src/tests/drill-down.test.js +0 -402
  95. package/src/tests/fixtures/datablending/load-responses.json +0 -261
  96. package/src/tests/granularity.test.js +0 -225
  97. package/src/tests/table.test.js +0 -791
  98. package/src/tests/utils.test.js +0 -35
  99. package/src/time.js +0 -296
  100. package/src/utils.js +0 -368
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license Apache-2.0
3
+ * @copyright Cube Dev, Inc.
4
+ * @fileoverview CubeApi class unit tests.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../test/index.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,370 @@
1
+ /**
2
+ * @license Apache-2.0
3
+ * @copyright Cube Dev, Inc.
4
+ * @fileoverview CubeApi class unit tests.
5
+ */
6
+ /* globals describe,test,expect,beforeEach,jest */
7
+ import { CubeApi } from '../src/index';
8
+ import ResultSet from '../src/ResultSet';
9
+ jest.mock('../src/ResultSet');
10
+ const MockedResultSet = ResultSet;
11
+ class CubeApiTest extends CubeApi {
12
+ loadResponseInternal(response, options = {}) {
13
+ return super.loadResponseInternal(response, options);
14
+ }
15
+ }
16
+ beforeEach(() => {
17
+ MockedResultSet.mockClear();
18
+ });
19
+ const mockData = {
20
+ regular_1: {
21
+ result_default: [
22
+ {
23
+ 'ECommerceRecordsUs2021.city': 'Missouri City',
24
+ 'ECommerceRecordsUs2021.avg_discount': '0.80000000000000000000'
25
+ },
26
+ {
27
+ 'ECommerceRecordsUs2021.city': 'Abilene',
28
+ 'ECommerceRecordsUs2021.avg_discount': '0.80000000000000000000'
29
+ }
30
+ ],
31
+ result_compact: {
32
+ members: ['ECommerceRecordsUs2021.city', 'ECommerceRecordsUs2021.avg_discount'],
33
+ dataset: [['Missouri City', '0.80000000000000000000'], ['Abilene', '0.80000000000000000000']],
34
+ }
35
+ },
36
+ regular_2: {
37
+ result_default: [
38
+ {
39
+ 'ECommerceRecordsUs2021.postalCode': '95823',
40
+ 'ECommerceRecordsUs2021.avg_profit': '646.1258666666666667'
41
+ },
42
+ {
43
+ 'ECommerceRecordsUs2021.postalCode': '64055',
44
+ 'ECommerceRecordsUs2021.avg_profit': '487.8315000000000000'
45
+ }
46
+ ],
47
+ result_compact: {
48
+ members: [
49
+ 'ECommerceRecordsUs2021.postalCode',
50
+ 'ECommerceRecordsUs2021.avg_profit',
51
+ ],
52
+ dataset: [
53
+ ['95823', '646.1258666666666667'],
54
+ ['64055', '487.8315000000000000']
55
+ ],
56
+ }
57
+ },
58
+ compare: [{
59
+ result_default: [
60
+ {
61
+ 'ECommerceRecordsUs2021.orderDate.day': '2020-01-01T00:00:00.000',
62
+ 'ECommerceRecordsUs2021.orderDate': '2020-01-01T00:00:00.000',
63
+ 'ECommerceRecordsUs2021.count': '10',
64
+ compareDateRange: '2020-01-01T00:00:00.000 - 2020-01-31T23:59:59.999'
65
+ },
66
+ {
67
+ 'ECommerceRecordsUs2021.orderDate.day': '2020-01-02T00:00:00.000',
68
+ 'ECommerceRecordsUs2021.orderDate': '2020-01-02T00:00:00.000',
69
+ 'ECommerceRecordsUs2021.count': '8',
70
+ compareDateRange: '2020-01-01T00:00:00.000 - 2020-01-31T23:59:59.999'
71
+ }
72
+ ],
73
+ result_compact: {
74
+ members: [
75
+ 'ECommerceRecordsUs2021.orderDate.day',
76
+ 'ECommerceRecordsUs2021.orderDate',
77
+ 'ECommerceRecordsUs2021.count',
78
+ 'compareDateRange',
79
+ ],
80
+ dataset: [
81
+ [
82
+ '2020-01-01T00:00:00.000',
83
+ '2020-01-01T00:00:00.000',
84
+ '10',
85
+ '2020-01-01T00:00:00.000 - 2020-01-31T23:59:59.999',
86
+ ],
87
+ [
88
+ '2020-01-02T00:00:00.000',
89
+ '2020-01-02T00:00:00.000',
90
+ '8',
91
+ '2020-01-01T00:00:00.000 - 2020-01-31T23:59:59.999'
92
+ ],
93
+ ],
94
+ },
95
+ }, {
96
+ result_default: [
97
+ {
98
+ 'ECommerceRecordsUs2021.orderDate.day': '2020-03-02T00:00:00.000',
99
+ 'ECommerceRecordsUs2021.orderDate': '2020-03-02T00:00:00.000',
100
+ 'ECommerceRecordsUs2021.count': '11',
101
+ compareDateRange: '2020-03-01T00:00:00.000 - 2020-03-31T23:59:59.999'
102
+ },
103
+ {
104
+ 'ECommerceRecordsUs2021.orderDate.day': '2020-03-03T00:00:00.000',
105
+ 'ECommerceRecordsUs2021.orderDate': '2020-03-03T00:00:00.000',
106
+ 'ECommerceRecordsUs2021.count': '7',
107
+ compareDateRange: '2020-03-01T00:00:00.000 - 2020-03-31T23:59:59.999'
108
+ }
109
+ ],
110
+ result_compact: {
111
+ members: [
112
+ 'ECommerceRecordsUs2021.orderDate.day',
113
+ 'ECommerceRecordsUs2021.orderDate',
114
+ 'ECommerceRecordsUs2021.count',
115
+ 'compareDateRange',
116
+ ],
117
+ dataset: [
118
+ [
119
+ '2020-03-02T00:00:00.000',
120
+ '2020-03-02T00:00:00.000',
121
+ '11',
122
+ '2020-03-01T00:00:00.000 - 2020-03-31T23:59:59.999',
123
+ ],
124
+ [
125
+ '2020-03-03T00:00:00.000',
126
+ '2020-03-03T00:00:00.000',
127
+ '7',
128
+ '2020-03-01T00:00:00.000 - 2020-03-31T23:59:59.999'
129
+ ],
130
+ ],
131
+ },
132
+ }],
133
+ blending: [{
134
+ result_default: [
135
+ {
136
+ 'ECommerceRecordsUs2021.orderDate.month': '2020-01-01T00:00:00.000',
137
+ 'ECommerceRecordsUs2021.orderDate': '2020-01-01T00:00:00.000',
138
+ 'ECommerceRecordsUs2021.avg_discount': '0.15638297872340425532',
139
+ 'time.month': '2020-01-01T00:00:00.000'
140
+ },
141
+ {
142
+ 'ECommerceRecordsUs2021.orderDate.month': '2020-02-01T00:00:00.000',
143
+ 'ECommerceRecordsUs2021.orderDate': '2020-02-01T00:00:00.000',
144
+ 'ECommerceRecordsUs2021.avg_discount': '0.17573529411764705882',
145
+ 'time.month': '2020-02-01T00:00:00.000'
146
+ }
147
+ ],
148
+ result_compact: {
149
+ members: [
150
+ 'ECommerceRecordsUs2021.orderDate.month',
151
+ 'ECommerceRecordsUs2021.orderDate',
152
+ 'ECommerceRecordsUs2021.avg_discount',
153
+ 'time.month',
154
+ ],
155
+ dataset: [
156
+ [
157
+ '2020-01-01T00:00:00.000',
158
+ '2020-01-01T00:00:00.000',
159
+ '0.15638297872340425532',
160
+ '2020-01-01T00:00:00.000',
161
+ ],
162
+ [
163
+ '2020-02-01T00:00:00.000',
164
+ '2020-02-01T00:00:00.000',
165
+ '0.17573529411764705882',
166
+ '2020-02-01T00:00:00.000',
167
+ ],
168
+ ],
169
+ },
170
+ }, {
171
+ result_default: [{
172
+ 'ECommerceRecordsUs2021.orderDate.month': '2020-01-01T00:00:00.000',
173
+ 'ECommerceRecordsUs2021.orderDate': '2020-01-01T00:00:00.000',
174
+ 'ECommerceRecordsUs2021.avg_discount': '0.28571428571428571429',
175
+ 'time.month': '2020-01-01T00:00:00.000'
176
+ },
177
+ {
178
+ 'ECommerceRecordsUs2021.orderDate.month': '2020-02-01T00:00:00.000',
179
+ 'ECommerceRecordsUs2021.orderDate': '2020-02-01T00:00:00.000',
180
+ 'ECommerceRecordsUs2021.avg_discount': '0.21777777777777777778',
181
+ 'time.month': '2020-02-01T00:00:00.000'
182
+ }],
183
+ result_compact: {
184
+ members: [
185
+ 'ECommerceRecordsUs2021.orderDate.month',
186
+ 'ECommerceRecordsUs2021.orderDate',
187
+ 'ECommerceRecordsUs2021.avg_discount',
188
+ 'time.month',
189
+ ],
190
+ dataset: [
191
+ [
192
+ '2020-01-01T00:00:00.000',
193
+ '2020-01-01T00:00:00.000',
194
+ '0.28571428571428571429',
195
+ '2020-01-01T00:00:00.000',
196
+ ],
197
+ [
198
+ '2020-02-01T00:00:00.000',
199
+ '2020-02-01T00:00:00.000',
200
+ '0.21777777777777777778',
201
+ '2020-02-01T00:00:00.000',
202
+ ],
203
+ ],
204
+ },
205
+ }],
206
+ };
207
+ describe('CubeApi', () => {
208
+ test('CubeApi#loadResponseInternal should work with the "default" resType for regular query', () => {
209
+ const api = new CubeApiTest(undefined, {
210
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
211
+ });
212
+ const income = {
213
+ results: [{
214
+ query: {},
215
+ data: JSON.parse(JSON.stringify(mockData.regular_1.result_default))
216
+ }],
217
+ };
218
+ const outcome = {
219
+ results: [{
220
+ query: {},
221
+ data: JSON.parse(JSON.stringify(mockData.regular_1.result_default))
222
+ }],
223
+ };
224
+ api.loadResponseInternal(income);
225
+ expect(ResultSet).toHaveBeenCalled();
226
+ expect(ResultSet).toHaveBeenCalledTimes(1);
227
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
228
+ parseDateMeasures: undefined
229
+ });
230
+ });
231
+ test('CubeApi#loadResponseInternal should work with the "default" resType for compare date range query', () => {
232
+ const api = new CubeApiTest(undefined, {
233
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
234
+ });
235
+ const income = {
236
+ results: [{
237
+ query: {},
238
+ data: JSON.parse(JSON.stringify(mockData.compare[0].result_default))
239
+ }, {
240
+ query: {},
241
+ data: JSON.parse(JSON.stringify(mockData.compare[1].result_default))
242
+ }],
243
+ };
244
+ const outcome = {
245
+ results: [{
246
+ query: {},
247
+ data: JSON.parse(JSON.stringify(mockData.compare[0].result_default))
248
+ }, {
249
+ query: {},
250
+ data: JSON.parse(JSON.stringify(mockData.compare[1].result_default))
251
+ }],
252
+ };
253
+ api.loadResponseInternal(income);
254
+ expect(ResultSet).toHaveBeenCalled();
255
+ expect(ResultSet).toHaveBeenCalledTimes(1);
256
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
257
+ parseDateMeasures: undefined
258
+ });
259
+ });
260
+ test('CubeApi#loadResponseInternal should work with the "default" resType for blending query', () => {
261
+ const api = new CubeApiTest(undefined, {
262
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
263
+ });
264
+ const income = {
265
+ results: [{
266
+ query: {},
267
+ data: JSON.parse(JSON.stringify(mockData.blending[0].result_default))
268
+ }, {
269
+ query: {},
270
+ data: JSON.parse(JSON.stringify(mockData.blending[1].result_default))
271
+ }],
272
+ };
273
+ const outcome = {
274
+ results: [{
275
+ query: {},
276
+ data: JSON.parse(JSON.stringify(mockData.blending[0].result_default))
277
+ }, {
278
+ query: {},
279
+ data: JSON.parse(JSON.stringify(mockData.blending[1].result_default))
280
+ }],
281
+ };
282
+ api.loadResponseInternal(income);
283
+ expect(ResultSet).toHaveBeenCalled();
284
+ expect(ResultSet).toHaveBeenCalledTimes(1);
285
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
286
+ parseDateMeasures: undefined
287
+ });
288
+ });
289
+ test('CubeApi#loadResponseInternal should work with the "compact" resType for regular query', () => {
290
+ const api = new CubeApiTest(undefined, {
291
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
292
+ });
293
+ const income = {
294
+ results: [{
295
+ query: { responseFormat: 'compact' },
296
+ data: JSON.parse(JSON.stringify(mockData.regular_1.result_compact))
297
+ }],
298
+ };
299
+ const outcome = {
300
+ results: [{
301
+ query: { responseFormat: 'compact' },
302
+ data: JSON.parse(JSON.stringify(mockData.regular_1.result_default))
303
+ }],
304
+ };
305
+ api.loadResponseInternal(income);
306
+ expect(ResultSet).toHaveBeenCalled();
307
+ expect(ResultSet).toHaveBeenCalledTimes(1);
308
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
309
+ parseDateMeasures: undefined
310
+ });
311
+ });
312
+ test('CubeApi#loadResponseInternal should work with the "compact" resType for compare date range query', () => {
313
+ const api = new CubeApiTest(undefined, {
314
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
315
+ });
316
+ const income = {
317
+ results: [{
318
+ query: { responseFormat: 'compact' },
319
+ data: JSON.parse(JSON.stringify(mockData.compare[0].result_compact))
320
+ }, {
321
+ query: { responseFormat: 'compact' },
322
+ data: JSON.parse(JSON.stringify(mockData.compare[1].result_compact))
323
+ }],
324
+ };
325
+ const outcome = {
326
+ results: [{
327
+ query: { responseFormat: 'compact' },
328
+ data: JSON.parse(JSON.stringify(mockData.compare[0].result_default))
329
+ }, {
330
+ query: { responseFormat: 'compact' },
331
+ data: JSON.parse(JSON.stringify(mockData.compare[1].result_default))
332
+ }],
333
+ };
334
+ api.loadResponseInternal(income);
335
+ expect(ResultSet).toHaveBeenCalled();
336
+ expect(ResultSet).toHaveBeenCalledTimes(1);
337
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
338
+ parseDateMeasures: undefined
339
+ });
340
+ });
341
+ test('CubeApi#loadResponseInternal should work with the "compact" resType for blending query', () => {
342
+ const api = new CubeApiTest(undefined, {
343
+ apiUrl: 'http://localhost:4000/cubejs-api/v1',
344
+ });
345
+ const income = {
346
+ results: [{
347
+ query: { responseFormat: 'compact' },
348
+ data: JSON.parse(JSON.stringify(mockData.blending[0].result_compact))
349
+ }, {
350
+ query: { responseFormat: 'compact' },
351
+ data: JSON.parse(JSON.stringify(mockData.blending[1].result_compact))
352
+ }],
353
+ };
354
+ const outcome = {
355
+ results: [{
356
+ query: { responseFormat: 'compact' },
357
+ data: JSON.parse(JSON.stringify(mockData.blending[0].result_default))
358
+ }, {
359
+ query: { responseFormat: 'compact' },
360
+ data: JSON.parse(JSON.stringify(mockData.blending[1].result_default))
361
+ }],
362
+ };
363
+ api.loadResponseInternal(income);
364
+ expect(ResultSet).toHaveBeenCalled();
365
+ expect(ResultSet).toHaveBeenCalledTimes(1);
366
+ expect(ResultSet).toHaveBeenCalledWith(outcome, {
367
+ parseDateMeasures: undefined
368
+ });
369
+ });
370
+ });
@@ -0,0 +1,2 @@
1
+ import 'jest';
2
+ //# sourceMappingURL=table.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.test.d.ts","sourceRoot":"","sources":["../../test/table.test.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,CAAC"}