@cubejs-client/core 1.3.14 → 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
@@ -1,432 +0,0 @@
1
- import 'jest';
2
-
3
- import ResultSet from '../ResultSet';
4
- import { loadResponse, loadResponseWithoutDateRange } from './fixtures/datablending/load-responses.json';
5
-
6
- describe('data blending', () => {
7
- const resultSet1 = new ResultSet(loadResponse);
8
-
9
- describe('with different dimensions', () => {
10
- test('normalized pivotConfig', () => {
11
- expect(resultSet1.normalizePivotConfig()).toStrictEqual({
12
- x: ['time.day'],
13
- y: ['Users.country', 'measures'],
14
- fillMissingDates: true,
15
- joinDateRange: false,
16
- });
17
- });
18
-
19
- test('pivot', () => {
20
- expect(resultSet1.pivot()).toStrictEqual([
21
- {
22
- xValues: ['2020-08-01T00:00:00.000'],
23
- yValuesArray: [
24
- [[null, 'Orders.count'], 1],
25
- [['Australia', 'Users.count'], 20],
26
- [['Spain', 'Users.count'], 0],
27
- [['Italy', 'Users.count'], 0],
28
- ],
29
- },
30
- {
31
- xValues: ['2020-08-02T00:00:00.000'],
32
- yValuesArray: [
33
- [[null, 'Orders.count'], 2],
34
- [['Australia', 'Users.count'], 0],
35
- [['Spain', 'Users.count'], 0],
36
- [['Italy', 'Users.count'], 0],
37
- ],
38
- },
39
- {
40
- xValues: ['2020-08-03T00:00:00.000'],
41
- yValuesArray: [
42
- [[null, 'Orders.count'], 0],
43
- [['Australia', 'Users.count'], 0],
44
- [['Spain', 'Users.count'], 0],
45
- [['Italy', 'Users.count'], 0],
46
- ],
47
- },
48
- {
49
- xValues: ['2020-08-04T00:00:00.000'],
50
- yValuesArray: [
51
- [[null, 'Orders.count'], 0],
52
- [['Australia', 'Users.count'], 0],
53
- [['Spain', 'Users.count'], 0],
54
- [['Italy', 'Users.count'], 0],
55
- ],
56
- },
57
- {
58
- xValues: ['2020-08-05T00:00:00.000'],
59
- yValuesArray: [
60
- [[null, 'Orders.count'], 0],
61
- [['Australia', 'Users.count'], 0],
62
- [['Spain', 'Users.count'], 34],
63
- [['Italy', 'Users.count'], 18],
64
- ],
65
- },
66
- {
67
- xValues: ['2020-08-06T00:00:00.000'],
68
- yValuesArray: [
69
- [[null, 'Orders.count'], 0],
70
- [['Australia', 'Users.count'], 0],
71
- [['Spain', 'Users.count'], 0],
72
- [['Italy', 'Users.count'], 0],
73
- ],
74
- },
75
- {
76
- xValues: ['2020-08-07T00:00:00.000'],
77
- yValuesArray: [
78
- [[null, 'Orders.count'], 0],
79
- [['Australia', 'Users.count'], 0],
80
- [['Spain', 'Users.count'], 0],
81
- [['Italy', 'Users.count'], 0],
82
- ],
83
- },
84
- ]);
85
- });
86
- });
87
-
88
- test('query with a single measure', () => {
89
- const resultSet = new ResultSet({
90
- queryType: 'blendingQuery',
91
- results: [
92
- {
93
- query: {
94
- measures: ['Users.count'],
95
- timeDimensions: [
96
- {
97
- dimension: 'Users.ts',
98
- granularity: 'month',
99
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
100
- },
101
- ],
102
- filters: [],
103
- order: [],
104
- dimensions: [],
105
- },
106
- data: [
107
- {
108
- 'Users.ts.month': '2020-08-01T00:00:00.000',
109
- 'Users.ts': '2020-08-01T00:00:00.000',
110
- 'Users.count': 14,
111
- 'time.month': '2020-08-01T00:00:00.000',
112
- },
113
- {
114
- 'Users.ts.month': '2020-09-01T00:00:00.000',
115
- 'Users.ts': '2020-09-01T00:00:00.000',
116
- 'Users.count': 23,
117
- 'time.month': '2020-09-01T00:00:00.000',
118
- },
119
- ],
120
- annotation: {
121
- measures: {
122
- 'Users.count': {
123
- title: 'Users Count',
124
- shortTitle: 'Count',
125
- type: 'number',
126
- drillMembers: ['Users.id', 'Users.name'],
127
- drillMembersGrouped: {
128
- measures: [],
129
- dimensions: ['Users.id', 'Users.name'],
130
- },
131
- },
132
- },
133
- dimensions: {},
134
- segments: {},
135
- timeDimensions: {
136
- 'Users.ts.month': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
137
- 'Users.ts': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
138
- },
139
- },
140
- },
141
- {
142
- query: {
143
- measures: ['Users.count'],
144
- timeDimensions: [
145
- {
146
- dimension: 'Users.ts',
147
- granularity: 'month',
148
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
149
- },
150
- ],
151
- filters: [
152
- {
153
- member: 'Users.country',
154
- operator: 'equals',
155
- value: ['USA'],
156
- },
157
- ],
158
- order: [],
159
- },
160
- data: [
161
- {
162
- 'Users.ts.month': '2020-08-01T00:00:00.000',
163
- 'Users.ts': '2020-08-01T00:00:00.000',
164
- 'Users.count': 2,
165
- 'time.month': '2020-08-01T00:00:00.000',
166
- },
167
- {
168
- 'Users.ts.month': '2020-09-01T00:00:00.000',
169
- 'Users.ts': '2020-09-05T00:00:00.000',
170
- 'Users.count': 4,
171
- 'time.month': '2020-09-01T00:00:00.000',
172
- },
173
- {
174
- 'Users.ts.month': '2020-10-01T00:00:00.000',
175
- 'Users.ts': '2020-10-05T00:00:00.000',
176
- 'Users.count': 7,
177
- 'time.month': '2020-10-01T00:00:00.000',
178
- },
179
- ],
180
- annotation: {
181
- measures: {
182
- 'Users.count': {
183
- title: 'Users Count',
184
- shortTitle: 'Count',
185
- type: 'number',
186
- drillMembers: [],
187
- drillMembersGrouped: {
188
- measures: [],
189
- dimensions: [],
190
- },
191
- },
192
- },
193
- dimensions: {},
194
- segments: {},
195
- timeDimensions: {
196
- 'Users.ts.month': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
197
- 'Users.ts': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
198
- },
199
- },
200
- },
201
- ],
202
- pivotQuery: {
203
- measures: ['Users.count', 'Users.count'],
204
- timeDimensions: [
205
- {
206
- dimension: 'time',
207
- granularity: 'month',
208
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
209
- },
210
- ],
211
- dimensions: [],
212
- },
213
- });
214
-
215
- expect(resultSet.chartPivot()).toEqual([
216
- {
217
- x: '2020-07-01T00:00:00.000',
218
- '0,Users.count': 0,
219
- '1,Users.count': 0,
220
- xValues: ['2020-07-01T00:00:00.000'],
221
- },
222
- {
223
- x: '2020-08-01T00:00:00.000',
224
- '0,Users.count': 14,
225
- '1,Users.count': 2,
226
- xValues: ['2020-08-01T00:00:00.000'],
227
- },
228
- {
229
- x: '2020-09-01T00:00:00.000',
230
- '0,Users.count': 23,
231
- '1,Users.count': 4,
232
- xValues: ['2020-09-01T00:00:00.000'],
233
- },
234
- {
235
- x: '2020-10-01T00:00:00.000',
236
- '0,Users.count': 0,
237
- '1,Users.count': 7,
238
- xValues: ['2020-10-01T00:00:00.000'],
239
- },
240
- {
241
- x: '2020-11-01T00:00:00.000',
242
- '0,Users.count': 0,
243
- '1,Users.count': 0,
244
- xValues: ['2020-11-01T00:00:00.000'],
245
- },
246
- ]);
247
- });
248
-
249
- test('query without date range', () => {
250
- const resultSet = new ResultSet(loadResponseWithoutDateRange);
251
-
252
- expect(resultSet.chartPivot()).toEqual([
253
- {
254
- x: '2020-08-01T00:00:00.000',
255
- xValues: ['2020-08-01T00:00:00.000'],
256
- 'Orders.count': 1,
257
- 'Australia,Users.count': 20,
258
- 'Italy,Users.count': 0,
259
- 'Spain,Users.count': 0
260
- },
261
- {
262
- x: '2020-08-02T00:00:00.000',
263
- xValues: ['2020-08-02T00:00:00.000'],
264
- 'Orders.count': 2,
265
- 'Australia,Users.count': 0,
266
- 'Spain,Users.count': 34,
267
- 'Italy,Users.count': 18,
268
- },
269
- ]);
270
- });
271
-
272
- test('query with a single measure and a custom series alias', () => {
273
- const resultSet = new ResultSet({
274
- queryType: 'blendingQuery',
275
- results: [
276
- {
277
- query: {
278
- measures: ['Users.count'],
279
- timeDimensions: [
280
- {
281
- dimension: 'Users.ts',
282
- granularity: 'month',
283
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
284
- },
285
- ],
286
- filters: [],
287
- order: [],
288
- dimensions: [],
289
- },
290
- data: [
291
- {
292
- 'Users.ts.month': '2020-08-01T00:00:00.000',
293
- 'Users.ts': '2020-08-01T00:00:00.000',
294
- 'Users.count': 14,
295
- 'time.month': '2020-08-01T00:00:00.000',
296
- },
297
- {
298
- 'Users.ts.month': '2020-09-01T00:00:00.000',
299
- 'Users.ts': '2020-09-01T00:00:00.000',
300
- 'Users.count': 23,
301
- 'time.month': '2020-09-01T00:00:00.000',
302
- },
303
- ],
304
- annotation: {
305
- measures: {
306
- 'Users.count': {
307
- title: 'Users Count',
308
- shortTitle: 'Count',
309
- type: 'number',
310
- drillMembers: ['Users.id', 'Users.name'],
311
- drillMembersGrouped: {
312
- measures: [],
313
- dimensions: ['Users.id', 'Users.name'],
314
- },
315
- },
316
- },
317
- dimensions: {},
318
- segments: {},
319
- timeDimensions: {
320
- 'Users.ts.month': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
321
- 'Users.ts': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
322
- },
323
- },
324
- },
325
- {
326
- query: {
327
- measures: ['Users.count'],
328
- timeDimensions: [
329
- {
330
- dimension: 'Users.ts',
331
- granularity: 'month',
332
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
333
- },
334
- ],
335
- filters: [
336
- {
337
- member: 'Users.country',
338
- operator: 'equals',
339
- value: ['USA'],
340
- },
341
- ],
342
- order: [],
343
- },
344
- data: [
345
- {
346
- 'Users.ts.month': '2020-08-01T00:00:00.000',
347
- 'Users.ts': '2020-08-01T00:00:00.000',
348
- 'Users.count': 2,
349
- 'time.month': '2020-08-01T00:00:00.000',
350
- },
351
- {
352
- 'Users.ts.month': '2020-09-01T00:00:00.000',
353
- 'Users.ts': '2020-09-05T00:00:00.000',
354
- 'Users.count': 4,
355
- 'time.month': '2020-09-01T00:00:00.000',
356
- },
357
- {
358
- 'Users.ts.month': '2020-10-01T00:00:00.000',
359
- 'Users.ts': '2020-10-05T00:00:00.000',
360
- 'Users.count': 7,
361
- 'time.month': '2020-10-01T00:00:00.000',
362
- },
363
- ],
364
- annotation: {
365
- measures: {
366
- 'Users.count': {
367
- title: 'Users Count',
368
- shortTitle: 'Count',
369
- type: 'number',
370
- drillMembers: [],
371
- drillMembersGrouped: {
372
- measures: [],
373
- dimensions: [],
374
- },
375
- },
376
- },
377
- dimensions: {},
378
- segments: {},
379
- timeDimensions: {
380
- 'Users.ts.month': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
381
- 'Users.ts': { title: 'Users Ts', shortTitle: 'Ts', type: 'time' },
382
- },
383
- },
384
- },
385
- ],
386
- pivotQuery: {
387
- measures: ['Users.count', 'Users.count'],
388
- timeDimensions: [
389
- {
390
- dimension: 'time',
391
- granularity: 'month',
392
- dateRange: ['2020-07-01T00:00:00.000', '2020-11-01T00:00:00.000'],
393
- },
394
- ],
395
- dimensions: [],
396
- },
397
- });
398
-
399
- expect(resultSet.chartPivot({ aliasSeries: ['one', 'two'] })).toEqual([
400
- {
401
- x: '2020-07-01T00:00:00.000',
402
- 'one,Users.count': 0,
403
- 'two,Users.count': 0,
404
- xValues: ['2020-07-01T00:00:00.000'],
405
- },
406
- {
407
- x: '2020-08-01T00:00:00.000',
408
- 'one,Users.count': 14,
409
- 'two,Users.count': 2,
410
- xValues: ['2020-08-01T00:00:00.000'],
411
- },
412
- {
413
- x: '2020-09-01T00:00:00.000',
414
- 'one,Users.count': 23,
415
- 'two,Users.count': 4,
416
- xValues: ['2020-09-01T00:00:00.000'],
417
- },
418
- {
419
- x: '2020-10-01T00:00:00.000',
420
- 'one,Users.count': 0,
421
- 'two,Users.count': 7,
422
- xValues: ['2020-10-01T00:00:00.000'],
423
- },
424
- {
425
- x: '2020-11-01T00:00:00.000',
426
- 'one,Users.count': 0,
427
- 'two,Users.count': 0,
428
- xValues: ['2020-11-01T00:00:00.000'],
429
- },
430
- ]);
431
- });
432
- });
@@ -1,118 +0,0 @@
1
- import 'jest';
2
- import { defaultHeuristics } from '../utils';
3
-
4
- jest.mock('moment-range', () => {
5
- const Moment = jest.requireActual('moment');
6
- const MomentRange = jest.requireActual('moment-range');
7
- const moment = MomentRange.extendMoment(Moment);
8
- return {
9
- extendMoment: () => moment,
10
- };
11
- });
12
-
13
- describe('default heuristics', () => {
14
- it('removes the time dimension when the measure is removed', () => {
15
- const newState = {
16
- query: {
17
- timeDimensions: [
18
- {
19
- dimension: 'Orders.ts',
20
- granularity: 'month',
21
- dateRange: 'this year',
22
- },
23
- ],
24
- },
25
- };
26
- const oldQuery = {
27
- measures: ['Orders.count'],
28
- timeDimensions: [
29
- {
30
- dimension: 'Orders.ts',
31
- granularity: 'month',
32
- dateRange: 'this year',
33
- },
34
- ],
35
- };
36
- expect(
37
- defaultHeuristics(newState, oldQuery, {
38
- meta: {
39
- defaultTimeDimensionNameFor() {
40
- return 'Orders.ts';
41
- },
42
- },
43
- })
44
- ).toStrictEqual({
45
- pivotConfig: null,
46
- query: {
47
- filters: [],
48
- timeDimensions: [],
49
- },
50
- sessionGranularity: null,
51
- shouldApplyHeuristicOrder: true,
52
- });
53
- });
54
-
55
- it('respects the granularity', () => {
56
- const meta = {
57
- defaultTimeDimensionNameFor() {
58
- return 'Orders.createdAt';
59
- },
60
- };
61
-
62
- const newState = {
63
- query: {
64
- measures: ['Orders.count'],
65
- timeDimensions: [
66
- {
67
- dimension: 'Orders.createdAt',
68
- granularity: 'month',
69
- },
70
- ],
71
- },
72
- };
73
-
74
- const oldQuery = {};
75
-
76
- expect(defaultHeuristics(newState, oldQuery, { meta })).toMatchObject({
77
- query: {
78
- timeDimensions: [
79
- {
80
- granularity: 'month',
81
- },
82
- ],
83
- },
84
- });
85
- });
86
-
87
- it('handles dateRange correctly', () => {
88
- const meta = {
89
- defaultTimeDimensionNameFor() {
90
- return 'Orders.createdAt';
91
- },
92
- };
93
-
94
- const newState = {
95
- query: {
96
- measures: ['Orders.count'],
97
- timeDimensions: [
98
- {
99
- dimension: 'Orders.createdAt',
100
- granularity: 'month',
101
- dateRange: 'This quarter',
102
- },
103
- ],
104
- },
105
- };
106
-
107
- expect(defaultHeuristics(newState, {}, { meta })).toMatchObject({
108
- query: {
109
- timeDimensions: [
110
- {
111
- granularity: 'month',
112
- dateRange: 'This quarter',
113
- },
114
- ],
115
- },
116
- });
117
- });
118
- });