@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.
- package/dist/{cubejs-client-core.js → cubejs-client-core.cjs.js} +1016 -411
- package/dist/cubejs-client-core.cjs.js.map +1 -0
- package/dist/cubejs-client-core.umd.js +2901 -12088
- package/dist/cubejs-client-core.umd.js.map +1 -1
- package/dist/src/HttpTransport.d.ts +54 -0
- package/dist/src/HttpTransport.d.ts.map +1 -0
- package/dist/src/HttpTransport.js +55 -0
- package/dist/src/Meta.d.ts +62 -0
- package/dist/src/Meta.d.ts.map +1 -0
- package/dist/src/Meta.js +150 -0
- package/dist/src/ProgressResult.d.ts +8 -0
- package/dist/src/ProgressResult.d.ts.map +1 -0
- package/dist/src/ProgressResult.js +11 -0
- package/dist/src/RequestError.d.ts +6 -0
- package/dist/src/RequestError.d.ts.map +1 -0
- package/dist/src/RequestError.js +7 -0
- package/dist/src/ResultSet.d.ts +430 -0
- package/dist/src/ResultSet.d.ts.map +1 -0
- package/dist/src/ResultSet.js +952 -0
- package/dist/src/SqlQuery.d.ts +17 -0
- package/dist/src/SqlQuery.d.ts.map +1 -0
- package/dist/src/SqlQuery.js +11 -0
- package/dist/src/index.d.ts +194 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +411 -0
- package/dist/src/index.umd.d.ts +3 -0
- package/dist/src/index.umd.d.ts.map +1 -0
- package/dist/src/index.umd.js +6 -0
- package/dist/src/time.d.ts +70 -0
- package/dist/src/time.d.ts.map +1 -0
- package/dist/src/time.js +249 -0
- package/dist/src/types.d.ts +424 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +1 -0
- package/dist/src/utils.d.ts +19 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +294 -0
- package/dist/test/CubeApi.test.d.ts +7 -0
- package/dist/test/CubeApi.test.d.ts.map +1 -0
- package/dist/test/CubeApi.test.js +279 -0
- package/dist/test/HttpTransport.test.d.ts +2 -0
- package/dist/test/HttpTransport.test.d.ts.map +1 -0
- package/dist/test/HttpTransport.test.js +244 -0
- package/dist/test/ResultSet.test.d.ts +7 -0
- package/dist/test/ResultSet.test.d.ts.map +1 -0
- package/dist/test/ResultSet.test.js +1725 -0
- package/dist/test/compare-date-range.test.d.ts +2 -0
- package/dist/test/compare-date-range.test.d.ts.map +1 -0
- package/dist/test/compare-date-range.test.js +742 -0
- package/dist/test/data-blending.test.d.ts +2 -0
- package/dist/test/data-blending.test.d.ts.map +1 -0
- package/dist/test/data-blending.test.js +423 -0
- package/dist/test/default-heuristics.test.d.ts +2 -0
- package/dist/test/default-heuristics.test.d.ts.map +1 -0
- package/dist/test/default-heuristics.test.js +108 -0
- package/dist/test/drill-down.test.d.ts +2 -0
- package/dist/test/drill-down.test.d.ts.map +1 -0
- package/dist/test/drill-down.test.js +373 -0
- package/dist/test/fixtures/datablending/load-responses.json +261 -0
- package/dist/test/granularity.test.d.ts +2 -0
- package/dist/test/granularity.test.d.ts.map +1 -0
- package/dist/test/granularity.test.js +218 -0
- package/dist/test/helpers.d.ts +283 -0
- package/dist/test/helpers.d.ts.map +1 -0
- package/dist/test/helpers.js +974 -0
- package/dist/test/index.test.d.ts +7 -0
- package/dist/test/index.test.d.ts.map +1 -0
- package/dist/test/index.test.js +370 -0
- package/dist/test/table.test.d.ts +2 -0
- package/dist/test/table.test.d.ts.map +1 -0
- package/dist/test/table.test.js +757 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +32 -0
- package/package.json +26 -21
- package/dist/cubejs-client-core.esm.js +0 -1639
- package/dist/cubejs-client-core.esm.js.map +0 -1
- package/dist/cubejs-client-core.js.map +0 -1
- package/index.d.ts +0 -1338
- package/src/HttpTransport.js +0 -60
- package/src/HttpTransport.test.js +0 -117
- package/src/Meta.js +0 -142
- package/src/ProgressResult.js +0 -13
- package/src/RequestError.js +0 -7
- package/src/ResultSet.js +0 -746
- package/src/SqlQuery.js +0 -13
- package/src/index.js +0 -398
- package/src/index.test.js +0 -454
- package/src/index.umd.js +0 -8
- package/src/tests/ResultSet.test.js +0 -1655
- package/src/tests/compare-date-range.test.js +0 -753
- package/src/tests/data-blending.test.js +0 -432
- package/src/tests/default-heuristics.test.js +0 -118
- package/src/tests/drill-down.test.js +0 -402
- package/src/tests/fixtures/datablending/load-responses.json +0 -261
- package/src/tests/granularity.test.js +0 -225
- package/src/tests/table.test.js +0 -791
- package/src/tests/utils.test.js +0 -35
- package/src/time.js +0 -296
- package/src/utils.js +0 -368
|
@@ -3,25 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
|
-
var
|
|
6
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
7
7
|
var _typeof = require('@babel/runtime/helpers/typeof');
|
|
8
8
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
9
9
|
var _createClass = require('@babel/runtime/helpers/createClass');
|
|
10
|
-
var
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
11
|
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
12
|
-
require('core-js/modules/es.array.filter.js');
|
|
13
12
|
require('core-js/modules/es.array.for-each.js');
|
|
14
13
|
require('core-js/modules/es.symbol.js');
|
|
14
|
+
require('core-js/modules/es.array.filter.js');
|
|
15
15
|
require('core-js/modules/es.array.is-array.js');
|
|
16
|
+
require('core-js/modules/es.object.define-properties.js');
|
|
17
|
+
require('core-js/modules/es.object.define-property.js');
|
|
18
|
+
require('core-js/modules/es.object.get-own-property-descriptor.js');
|
|
19
|
+
require('core-js/modules/es.object.get-own-property-descriptors.js');
|
|
16
20
|
require('core-js/modules/es.array.map.js');
|
|
21
|
+
require('core-js/modules/es.array.reduce.js');
|
|
17
22
|
require('core-js/modules/es.number.constructor.js');
|
|
18
23
|
require('core-js/modules/es.object.entries.js');
|
|
19
24
|
require('core-js/modules/es.object.keys.js');
|
|
20
25
|
require('core-js/modules/es.object.to-string.js');
|
|
21
|
-
require('core-js/modules/es.object.define-properties.js');
|
|
22
|
-
require('core-js/modules/es.object.define-property.js');
|
|
23
|
-
require('core-js/modules/es.object.get-own-property-descriptor.js');
|
|
24
|
-
require('core-js/modules/es.object.get-own-property-descriptors.js');
|
|
25
26
|
require('core-js/modules/es.promise.js');
|
|
26
27
|
require('core-js/modules/web.dom-collections.for-each.js');
|
|
27
28
|
require('core-js/modules/web.timers.js');
|
|
@@ -36,7 +37,6 @@ require('core-js/modules/es.array.includes.js');
|
|
|
36
37
|
require('core-js/modules/es.array.index-of.js');
|
|
37
38
|
require('core-js/modules/es.array.iterator.js');
|
|
38
39
|
require('core-js/modules/es.array.join.js');
|
|
39
|
-
require('core-js/modules/es.array.reduce.js');
|
|
40
40
|
require('core-js/modules/es.date.to-string.js');
|
|
41
41
|
require('core-js/modules/es.map.js');
|
|
42
42
|
require('core-js/modules/es.number.is-nan.js');
|
|
@@ -53,7 +53,9 @@ require('core-js/modules/web.dom-collections.iterator.js');
|
|
|
53
53
|
var dayjs = require('dayjs');
|
|
54
54
|
var ramda = require('ramda');
|
|
55
55
|
require('core-js/modules/es.array.every.js');
|
|
56
|
+
require('core-js/modules/es.array.flat-map.js');
|
|
56
57
|
require('core-js/modules/es.array.splice.js');
|
|
58
|
+
require('core-js/modules/es.array.unscopables.flat-map.js');
|
|
57
59
|
require('core-js/modules/es.array.slice.js');
|
|
58
60
|
require('core-js/modules/es.parse-int.js');
|
|
59
61
|
require('core-js/modules/es.string.ends-with.js');
|
|
@@ -77,11 +79,11 @@ var _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');
|
|
|
77
79
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
78
80
|
|
|
79
81
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
80
|
-
var
|
|
82
|
+
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
|
|
81
83
|
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
|
|
82
84
|
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
83
85
|
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
84
|
-
var
|
|
86
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
85
87
|
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
|
|
86
88
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
87
89
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
@@ -101,6 +103,9 @@ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t
|
|
|
101
103
|
dayjs__default['default'].extend(quarterOfYear__default['default']);
|
|
102
104
|
dayjs__default['default'].extend(duration__default['default']);
|
|
103
105
|
dayjs__default['default'].extend(isoWeek__default['default']);
|
|
106
|
+
|
|
107
|
+
// TODO: Define a better type as unitOfTime.DurationConstructor in moment.js
|
|
108
|
+
|
|
104
109
|
var GRANULARITIES = [{
|
|
105
110
|
name: undefined,
|
|
106
111
|
title: 'w/o grouping'
|
|
@@ -315,9 +320,6 @@ var timeSeriesFromCustomInterval = function timeSeriesFromCustomInterval(from, t
|
|
|
315
320
|
|
|
316
321
|
/**
|
|
317
322
|
* Returns the lowest time unit for the interval
|
|
318
|
-
* @protected
|
|
319
|
-
* @param {string} interval
|
|
320
|
-
* @returns {string}
|
|
321
323
|
*/
|
|
322
324
|
var diffTimeUnitForInterval = function diffTimeUnitForInterval(interval) {
|
|
323
325
|
if (/second/i.test(interval)) {
|
|
@@ -381,40 +383,38 @@ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymb
|
|
|
381
383
|
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty__default['default'](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
382
384
|
function removeEmptyQueryFields(_query) {
|
|
383
385
|
var query = _query || {};
|
|
384
|
-
return ramda.fromPairs(ramda.toPairs(query).
|
|
386
|
+
return ramda.fromPairs(ramda.toPairs(query).flatMap(function (_ref) {
|
|
385
387
|
var _ref2 = _slicedToArray__default['default'](_ref, 2),
|
|
386
388
|
key = _ref2[0],
|
|
387
389
|
value = _ref2[1];
|
|
388
390
|
if (['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)) {
|
|
389
391
|
if (Array.isArray(value) && value.length === 0) {
|
|
390
|
-
return
|
|
392
|
+
return [];
|
|
391
393
|
}
|
|
392
394
|
}
|
|
393
395
|
if (key === 'order' && value) {
|
|
394
|
-
if (Array.isArray(value) &&
|
|
395
|
-
return
|
|
396
|
+
if (Array.isArray(value) && value.length === 0) {
|
|
397
|
+
return [];
|
|
396
398
|
} else if (!Object.keys(value).length) {
|
|
397
|
-
return
|
|
399
|
+
return [];
|
|
398
400
|
}
|
|
399
401
|
}
|
|
400
|
-
return [key, value];
|
|
401
|
-
})
|
|
402
|
+
return [[key, value]];
|
|
403
|
+
}));
|
|
402
404
|
}
|
|
403
405
|
function validateQuery(_query) {
|
|
404
406
|
var query = _query || {};
|
|
405
407
|
return removeEmptyQueryFields(_objectSpread$3(_objectSpread$3({}, query), {}, {
|
|
406
408
|
filters: (query.filters || []).filter(function (f) {
|
|
407
|
-
return f
|
|
409
|
+
return 'operator' in f;
|
|
408
410
|
}),
|
|
409
411
|
timeDimensions: (query.timeDimensions || []).filter(function (td) {
|
|
410
412
|
return !(!td.dateRange && !td.granularity);
|
|
411
413
|
})
|
|
412
414
|
}));
|
|
413
415
|
}
|
|
414
|
-
function areQueriesEqual() {
|
|
415
|
-
|
|
416
|
-
var query2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
417
|
-
return ramda.equals(Object.entries(query1 && query1.order || {}), Object.entries(query2 && query2.order || {})) && ramda.equals(query1, query2);
|
|
416
|
+
function areQueriesEqual(query1, query2) {
|
|
417
|
+
return ramda.equals(Object.entries((query1 === null || query1 === void 0 ? void 0 : query1.order) || {}), Object.entries((query2 === null || query2 === void 0 ? void 0 : query2.order) || {})) && ramda.equals(query1, query2);
|
|
418
418
|
}
|
|
419
419
|
function defaultOrder(query) {
|
|
420
420
|
var granularity = (query.timeDimensions || []).find(function (d) {
|
|
@@ -429,9 +429,7 @@ function defaultOrder(query) {
|
|
|
429
429
|
}
|
|
430
430
|
return {};
|
|
431
431
|
}
|
|
432
|
-
function defaultHeuristics(newState) {
|
|
433
|
-
var oldQuery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
434
|
-
var options = arguments.length > 2 ? arguments[2] : undefined;
|
|
432
|
+
function defaultHeuristics(newState, oldQuery, options) {
|
|
435
433
|
var _clone = ramda.clone(newState),
|
|
436
434
|
query = _clone.query,
|
|
437
435
|
props = _objectWithoutProperties__default['default'](_clone, _excluded$2);
|
|
@@ -439,6 +437,8 @@ function defaultHeuristics(newState) {
|
|
|
439
437
|
sessionGranularity = options.sessionGranularity;
|
|
440
438
|
var granularity = sessionGranularity || DEFAULT_GRANULARITY;
|
|
441
439
|
var state = _objectSpread$3({
|
|
440
|
+
shouldApplyHeuristicOrder: false,
|
|
441
|
+
pivotConfig: null,
|
|
442
442
|
query: query
|
|
443
443
|
}, props);
|
|
444
444
|
var newQuery = null;
|
|
@@ -446,7 +446,10 @@ function defaultHeuristics(newState) {
|
|
|
446
446
|
newQuery = query;
|
|
447
447
|
}
|
|
448
448
|
if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {
|
|
449
|
-
return
|
|
449
|
+
return _objectSpread$3({
|
|
450
|
+
shouldApplyHeuristicOrder: false,
|
|
451
|
+
pivotConfig: null
|
|
452
|
+
}, newState);
|
|
450
453
|
}
|
|
451
454
|
if (newQuery) {
|
|
452
455
|
if ((oldQuery.timeDimensions || []).length === 1 && (newQuery.timeDimensions || []).length === 1 && newQuery.timeDimensions[0].granularity && oldQuery.timeDimensions[0].granularity !== newQuery.timeDimensions[0].granularity) {
|
|
@@ -462,8 +465,8 @@ function defaultHeuristics(newState) {
|
|
|
462
465
|
newQuery = _objectSpread$3(_objectSpread$3({}, newQuery), {}, {
|
|
463
466
|
timeDimensions: defaultTimeDimension ? [{
|
|
464
467
|
dimension: defaultTimeDimension,
|
|
465
|
-
granularity: td
|
|
466
|
-
dateRange: td
|
|
468
|
+
granularity: (td === null || td === void 0 ? void 0 : td.granularity) || granularity,
|
|
469
|
+
dateRange: td === null || td === void 0 ? void 0 : td.dateRange
|
|
467
470
|
}] : []
|
|
468
471
|
});
|
|
469
472
|
return _objectSpread$3(_objectSpread$3({}, state), {}, {
|
|
@@ -520,8 +523,9 @@ function defaultHeuristics(newState) {
|
|
|
520
523
|
if (state.chartType) {
|
|
521
524
|
var newChartType = state.chartType;
|
|
522
525
|
if ((newChartType === 'line' || newChartType === 'area') && (oldQuery.timeDimensions || []).length === 1 && !oldQuery.timeDimensions[0].granularity) {
|
|
523
|
-
var
|
|
524
|
-
|
|
526
|
+
var _ref8 = oldQuery.timeDimensions,
|
|
527
|
+
_ref9 = _slicedToArray__default['default'](_ref8, 1),
|
|
528
|
+
_td = _ref9[0];
|
|
525
529
|
return _objectSpread$3(_objectSpread$3({}, state), {}, {
|
|
526
530
|
pivotConfig: null,
|
|
527
531
|
query: _objectSpread$3(_objectSpread$3({}, oldQuery), {}, {
|
|
@@ -532,8 +536,9 @@ function defaultHeuristics(newState) {
|
|
|
532
536
|
});
|
|
533
537
|
}
|
|
534
538
|
if ((newChartType === 'pie' || newChartType === 'table' || newChartType === 'number') && (oldQuery.timeDimensions || []).length === 1 && oldQuery.timeDimensions[0].granularity) {
|
|
535
|
-
var
|
|
536
|
-
|
|
539
|
+
var _ref10 = oldQuery.timeDimensions,
|
|
540
|
+
_ref11 = _slicedToArray__default['default'](_ref10, 1),
|
|
541
|
+
_td2 = _ref11[0];
|
|
537
542
|
return _objectSpread$3(_objectSpread$3({}, state), {}, {
|
|
538
543
|
pivotConfig: null,
|
|
539
544
|
shouldApplyHeuristicOrder: true,
|
|
@@ -552,13 +557,14 @@ function isQueryPresent(query) {
|
|
|
552
557
|
return false;
|
|
553
558
|
}
|
|
554
559
|
return (Array.isArray(query) ? query : [query]).every(function (q) {
|
|
555
|
-
|
|
560
|
+
var _q$measures, _q$dimensions, _q$timeDimensions;
|
|
561
|
+
return ((_q$measures = q.measures) === null || _q$measures === void 0 ? void 0 : _q$measures.length) || ((_q$dimensions = q.dimensions) === null || _q$dimensions === void 0 ? void 0 : _q$dimensions.length) || ((_q$timeDimensions = q.timeDimensions) === null || _q$timeDimensions === void 0 ? void 0 : _q$timeDimensions.length);
|
|
556
562
|
});
|
|
557
563
|
}
|
|
558
564
|
function movePivotItem(pivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis) {
|
|
559
565
|
var nextPivotConfig = _objectSpread$3(_objectSpread$3({}, pivotConfig), {}, {
|
|
560
|
-
x: _toConsumableArray__default['default'](pivotConfig.x),
|
|
561
|
-
y: _toConsumableArray__default['default'](pivotConfig.y)
|
|
566
|
+
x: _toConsumableArray__default['default'](pivotConfig.x || []),
|
|
567
|
+
y: _toConsumableArray__default['default'](pivotConfig.y || [])
|
|
562
568
|
});
|
|
563
569
|
var id = pivotConfig[sourceAxis][sourceIndex];
|
|
564
570
|
var lastIndex = nextPivotConfig[destinationAxis].length - 1;
|
|
@@ -584,8 +590,11 @@ function moveItemInArray(list, sourceIndex, destinationIndex) {
|
|
|
584
590
|
function flattenFilters() {
|
|
585
591
|
var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
586
592
|
return filters.reduce(function (memo, filter) {
|
|
587
|
-
if (
|
|
588
|
-
return [].concat(_toConsumableArray__default['default'](memo), _toConsumableArray__default['default'](flattenFilters(filter.or
|
|
593
|
+
if ('or' in filter) {
|
|
594
|
+
return [].concat(_toConsumableArray__default['default'](memo), _toConsumableArray__default['default'](flattenFilters(filter.or)));
|
|
595
|
+
}
|
|
596
|
+
if ('and' in filter) {
|
|
597
|
+
return [].concat(_toConsumableArray__default['default'](memo), _toConsumableArray__default['default'](flattenFilters(filter.and)));
|
|
589
598
|
}
|
|
590
599
|
return [].concat(_toConsumableArray__default['default'](memo), [filter]);
|
|
591
600
|
}, []);
|
|
@@ -602,8 +611,12 @@ function getQueryMembers() {
|
|
|
602
611
|
(query.timeDimensions || []).forEach(function (td) {
|
|
603
612
|
return members.add(td.dimension);
|
|
604
613
|
});
|
|
605
|
-
flattenFilters(query.filters)
|
|
606
|
-
|
|
614
|
+
var filters = flattenFilters(query.filters);
|
|
615
|
+
filters.forEach(function (filter) {
|
|
616
|
+
var member = filter.dimension || filter.member;
|
|
617
|
+
if (typeof member === 'string') {
|
|
618
|
+
members.add(member);
|
|
619
|
+
}
|
|
607
620
|
});
|
|
608
621
|
return _toConsumableArray__default['default'](members);
|
|
609
622
|
}
|
|
@@ -612,10 +625,10 @@ function getOrderMembersFromOrder(orderMembers, order) {
|
|
|
612
625
|
var indexedOrderMembers = ramda.indexBy(ramda.prop('id'), orderMembers);
|
|
613
626
|
var entries = Array.isArray(order) ? order : Object.entries(order || {});
|
|
614
627
|
var nextOrderMembers = [];
|
|
615
|
-
entries.forEach(function (
|
|
616
|
-
var
|
|
617
|
-
memberId =
|
|
618
|
-
currentOrder =
|
|
628
|
+
entries.forEach(function (_ref12) {
|
|
629
|
+
var _ref13 = _slicedToArray__default['default'](_ref12, 2),
|
|
630
|
+
memberId = _ref13[0],
|
|
631
|
+
currentOrder = _ref13[1];
|
|
619
632
|
if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {
|
|
620
633
|
ids.add(memberId);
|
|
621
634
|
nextOrderMembers.push(_objectSpread$3(_objectSpread$3({}, indexedOrderMembers[memberId]), {}, {
|
|
@@ -632,11 +645,13 @@ function getOrderMembersFromOrder(orderMembers, order) {
|
|
|
632
645
|
});
|
|
633
646
|
return nextOrderMembers;
|
|
634
647
|
}
|
|
635
|
-
function aliasSeries(values, index, pivotConfig
|
|
648
|
+
function aliasSeries(values, index, pivotConfig) {
|
|
649
|
+
var _pivotConfig$aliasSer;
|
|
650
|
+
var duplicateMeasures = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Set();
|
|
636
651
|
var nonNullValues = values.filter(function (value) {
|
|
637
652
|
return value != null;
|
|
638
653
|
});
|
|
639
|
-
if (pivotConfig && pivotConfig
|
|
654
|
+
if (pivotConfig !== null && pivotConfig !== void 0 && (_pivotConfig$aliasSer = pivotConfig.aliasSeries) !== null && _pivotConfig$aliasSer !== void 0 && _pivotConfig$aliasSer[index]) {
|
|
640
655
|
return [pivotConfig.aliasSeries[index]].concat(_toConsumableArray__default['default'](nonNullValues));
|
|
641
656
|
} else if (duplicateMeasures.has(nonNullValues[0])) {
|
|
642
657
|
return [index].concat(_toConsumableArray__default['default'](nonNullValues));
|
|
@@ -649,7 +664,7 @@ var _excluded$1 = ["x"],
|
|
|
649
664
|
_excluded3 = ["title", "shortTitle"];
|
|
650
665
|
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
651
666
|
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty__default['default'](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
652
|
-
var groupByToPairs = function
|
|
667
|
+
var groupByToPairs = function groupByToPairsImpl(keyFn) {
|
|
653
668
|
var acc = new Map();
|
|
654
669
|
return function (data) {
|
|
655
670
|
data.forEach(function (row) {
|
|
@@ -676,18 +691,29 @@ var QUERY_TYPE = {
|
|
|
676
691
|
COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',
|
|
677
692
|
BLENDING_QUERY: 'blendingQuery'
|
|
678
693
|
};
|
|
694
|
+
/**
|
|
695
|
+
* Provides a convenient interface for data manipulation.
|
|
696
|
+
*/
|
|
679
697
|
var ResultSet = /*#__PURE__*/function () {
|
|
680
698
|
function ResultSet(loadResponse) {
|
|
681
699
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
682
700
|
_classCallCheck__default['default'](this, ResultSet);
|
|
683
|
-
this
|
|
684
|
-
|
|
701
|
+
_defineProperty__default['default'](this, "loadResponse", void 0);
|
|
702
|
+
_defineProperty__default['default'](this, "loadResponses", void 0);
|
|
703
|
+
_defineProperty__default['default'](this, "queryType", void 0);
|
|
704
|
+
_defineProperty__default['default'](this, "parseDateMeasures", void 0);
|
|
705
|
+
_defineProperty__default['default'](this, "options", void 0);
|
|
706
|
+
_defineProperty__default['default'](this, "backwardCompatibleData", void 0);
|
|
707
|
+
if ('queryType' in loadResponse && loadResponse.queryType != null) {
|
|
708
|
+
this.loadResponse = loadResponse;
|
|
685
709
|
this.queryType = loadResponse.queryType;
|
|
686
710
|
this.loadResponses = loadResponse.results;
|
|
687
711
|
} else {
|
|
688
712
|
this.queryType = QUERY_TYPE.REGULAR_QUERY;
|
|
689
|
-
this.loadResponse
|
|
690
|
-
|
|
713
|
+
this.loadResponse = _objectSpread$2(_objectSpread$2({}, loadResponse), {}, {
|
|
714
|
+
pivotQuery: _objectSpread$2(_objectSpread$2({}, loadResponse.query), {}, {
|
|
715
|
+
queryType: this.queryType
|
|
716
|
+
})
|
|
691
717
|
});
|
|
692
718
|
this.loadResponses = [loadResponse];
|
|
693
719
|
}
|
|
@@ -698,9 +724,70 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
698
724
|
this.options = options;
|
|
699
725
|
this.backwardCompatibleData = [];
|
|
700
726
|
}
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Returns a measure drill down query.
|
|
730
|
+
*
|
|
731
|
+
* Provided you have a measure with the defined `drillMembers` on the `Orders` cube
|
|
732
|
+
* ```js
|
|
733
|
+
* measures: {
|
|
734
|
+
* count: {
|
|
735
|
+
* type: `count`,
|
|
736
|
+
* drillMembers: [Orders.status, Users.city, count],
|
|
737
|
+
* },
|
|
738
|
+
* // ...
|
|
739
|
+
* }
|
|
740
|
+
* ```
|
|
741
|
+
*
|
|
742
|
+
* Then you can use the `drillDown` method to see the rows that contribute to that metric
|
|
743
|
+
* ```js
|
|
744
|
+
* resultSet.drillDown(
|
|
745
|
+
* {
|
|
746
|
+
* xValues,
|
|
747
|
+
* yValues,
|
|
748
|
+
* },
|
|
749
|
+
* // you should pass the `pivotConfig` if you have used it for axes manipulation
|
|
750
|
+
* pivotConfig
|
|
751
|
+
* )
|
|
752
|
+
* ```
|
|
753
|
+
*
|
|
754
|
+
* the result will be a query with the required filters applied and the dimensions/measures filled out
|
|
755
|
+
* ```js
|
|
756
|
+
* {
|
|
757
|
+
* measures: ['Orders.count'],
|
|
758
|
+
* dimensions: ['Orders.status', 'Users.city'],
|
|
759
|
+
* filters: [
|
|
760
|
+
* // dimension and measure filters
|
|
761
|
+
* ],
|
|
762
|
+
* timeDimensions: [
|
|
763
|
+
* //...
|
|
764
|
+
* ]
|
|
765
|
+
* }
|
|
766
|
+
* ```
|
|
767
|
+
*
|
|
768
|
+
* In case when you want to add `order` or `limit` to the query, you can simply spread it
|
|
769
|
+
*
|
|
770
|
+
* ```js
|
|
771
|
+
* // An example for React
|
|
772
|
+
* const drillDownResponse = useCubeQuery(
|
|
773
|
+
* {
|
|
774
|
+
* ...drillDownQuery,
|
|
775
|
+
* limit: 30,
|
|
776
|
+
* order: {
|
|
777
|
+
* 'Orders.ts': 'desc'
|
|
778
|
+
* }
|
|
779
|
+
* },
|
|
780
|
+
* {
|
|
781
|
+
* skip: !drillDownQuery
|
|
782
|
+
* }
|
|
783
|
+
* );
|
|
784
|
+
* ```
|
|
785
|
+
* @returns Drill down query
|
|
786
|
+
*/
|
|
701
787
|
return _createClass__default['default'](ResultSet, [{
|
|
702
788
|
key: "drillDown",
|
|
703
789
|
value: function drillDown(drillDownLocator, pivotConfig) {
|
|
790
|
+
var _drillDownLocator$xVa, _drillDownLocator$yVa, _measures$measureName, _measures$measureName2;
|
|
704
791
|
if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {
|
|
705
792
|
throw new Error('compareDateRange drillDown query is not currently supported');
|
|
706
793
|
}
|
|
@@ -708,16 +795,14 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
708
795
|
throw new Error('Data blending drillDown query is not currently supported');
|
|
709
796
|
}
|
|
710
797
|
var query = this.loadResponses[0].query;
|
|
711
|
-
var _drillDownLocator$xVa = drillDownLocator.xValues
|
|
712
|
-
|
|
713
|
-
_drillDownLocator$yVa = drillDownLocator.yValues,
|
|
714
|
-
yValues = _drillDownLocator$yVa === void 0 ? [] : _drillDownLocator$yVa;
|
|
798
|
+
var xValues = (_drillDownLocator$xVa = drillDownLocator === null || drillDownLocator === void 0 ? void 0 : drillDownLocator.xValues) !== null && _drillDownLocator$xVa !== void 0 ? _drillDownLocator$xVa : [];
|
|
799
|
+
var yValues = (_drillDownLocator$yVa = drillDownLocator === null || drillDownLocator === void 0 ? void 0 : drillDownLocator.yValues) !== null && _drillDownLocator$yVa !== void 0 ? _drillDownLocator$yVa : [];
|
|
715
800
|
var normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);
|
|
716
801
|
var values = [];
|
|
717
|
-
normalizedPivotConfig.x.forEach(function (member, currentIndex) {
|
|
802
|
+
normalizedPivotConfig === null || normalizedPivotConfig === void 0 || normalizedPivotConfig.x.forEach(function (member, currentIndex) {
|
|
718
803
|
return values.push([member, xValues[currentIndex]]);
|
|
719
804
|
});
|
|
720
|
-
normalizedPivotConfig.y.forEach(function (member, currentIndex) {
|
|
805
|
+
normalizedPivotConfig === null || normalizedPivotConfig === void 0 || normalizedPivotConfig.y.forEach(function (member, currentIndex) {
|
|
721
806
|
return values.push([member, yValues[currentIndex]]);
|
|
722
807
|
});
|
|
723
808
|
var _this$query = this.query(),
|
|
@@ -738,7 +823,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
738
823
|
var _Object$keys2 = _slicedToArray__default['default'](_Object$keys, 1);
|
|
739
824
|
measureName = _Object$keys2[0];
|
|
740
825
|
}
|
|
741
|
-
if (!(
|
|
826
|
+
if (!((_measures$measureName = (_measures$measureName2 = measures[measureName]) === null || _measures$measureName2 === void 0 || (_measures$measureName2 = _measures$measureName2.drillMembers) === null || _measures$measureName2 === void 0 ? void 0 : _measures$measureName2.length) !== null && _measures$measureName !== void 0 ? _measures$measureName : 0)) {
|
|
742
827
|
return null;
|
|
743
828
|
}
|
|
744
829
|
var filters = [{
|
|
@@ -760,8 +845,9 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
760
845
|
dimension = _member$split2[1],
|
|
761
846
|
granularity = _member$split2[2];
|
|
762
847
|
if (granularity !== undefined) {
|
|
848
|
+
var _query$timeDimensions;
|
|
763
849
|
var range = _dayRange(value, value).snapTo(granularity);
|
|
764
|
-
var originalTimeDimension = query.timeDimensions.find(function (td) {
|
|
850
|
+
var originalTimeDimension = (_query$timeDimensions = query.timeDimensions) === null || _query$timeDimensions === void 0 ? void 0 : _query$timeDimensions.find(function (td) {
|
|
765
851
|
return td.dimension;
|
|
766
852
|
});
|
|
767
853
|
var dateRange = [range.start, range.end];
|
|
@@ -790,7 +876,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
790
876
|
});
|
|
791
877
|
}
|
|
792
878
|
});
|
|
793
|
-
if (timeDimensions.length === 0 && query.timeDimensions.length > 0 && query.timeDimensions[0].granularity == null) {
|
|
879
|
+
if (timeDimensions.length === 0 && Array.isArray(query.timeDimensions) && query.timeDimensions.length > 0 && query.timeDimensions[0].granularity == null) {
|
|
794
880
|
timeDimensions.push(query.timeDimensions[0]);
|
|
795
881
|
}
|
|
796
882
|
return _objectSpread$2(_objectSpread$2(_objectSpread$2({}, measures[measureName].drillMembersGrouped), {}, {
|
|
@@ -803,6 +889,36 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
803
889
|
timezone: query.timezone
|
|
804
890
|
});
|
|
805
891
|
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Returns an array of series with key, title and series data.
|
|
895
|
+
* ```js
|
|
896
|
+
* // For the query
|
|
897
|
+
* {
|
|
898
|
+
* measures: ['Stories.count'],
|
|
899
|
+
* timeDimensions: [{
|
|
900
|
+
* dimension: 'Stories.time',
|
|
901
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
902
|
+
* granularity: 'month'
|
|
903
|
+
* }]
|
|
904
|
+
* }
|
|
905
|
+
*
|
|
906
|
+
* // ResultSet.series() will return
|
|
907
|
+
* [
|
|
908
|
+
* {
|
|
909
|
+
* key: 'Stories.count',
|
|
910
|
+
* title: 'Stories Count',
|
|
911
|
+
* shortTitle: 'Count',
|
|
912
|
+
* series: [
|
|
913
|
+
* { x: '2015-01-01T00:00:00', value: 27120 },
|
|
914
|
+
* { x: '2015-02-01T00:00:00', value: 25861 },
|
|
915
|
+
* { x: '2015-03-01T00:00:00', value: 29661 },
|
|
916
|
+
* //...
|
|
917
|
+
* ],
|
|
918
|
+
* },
|
|
919
|
+
* ]
|
|
920
|
+
* ```
|
|
921
|
+
*/
|
|
806
922
|
}, {
|
|
807
923
|
key: "series",
|
|
808
924
|
value: function series(pivotConfig) {
|
|
@@ -836,20 +952,22 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
836
952
|
return axis.filter(function (d) {
|
|
837
953
|
return d !== 'measures';
|
|
838
954
|
}).map(function (d) {
|
|
839
|
-
|
|
955
|
+
var val = row[d];
|
|
956
|
+
return val != null ? val : null;
|
|
840
957
|
}).concat(measure ? [measure] : []);
|
|
841
958
|
};
|
|
842
959
|
if (axis.find(function (d) {
|
|
843
960
|
return d === 'measures';
|
|
844
961
|
}) && (query.measures || []).length) {
|
|
845
|
-
return query.measures.map(value);
|
|
962
|
+
return (query.measures || []).map(value);
|
|
846
963
|
}
|
|
847
964
|
return [value()];
|
|
848
965
|
};
|
|
849
966
|
}
|
|
850
967
|
}, {
|
|
851
968
|
key: "axisValuesString",
|
|
852
|
-
value: function axisValuesString(axisValues
|
|
969
|
+
value: function axisValuesString(axisValues) {
|
|
970
|
+
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ', ';
|
|
853
971
|
var formatValue = function formatValue(v) {
|
|
854
972
|
if (v == null) {
|
|
855
973
|
return '∅';
|
|
@@ -859,7 +977,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
859
977
|
return v;
|
|
860
978
|
}
|
|
861
979
|
};
|
|
862
|
-
return axisValues.map(formatValue).join(delimiter
|
|
980
|
+
return axisValues.map(formatValue).join(delimiter);
|
|
863
981
|
}
|
|
864
982
|
}, {
|
|
865
983
|
key: "normalizePivotConfig",
|
|
@@ -872,17 +990,22 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
872
990
|
if (!timeDimension.granularity) {
|
|
873
991
|
return null;
|
|
874
992
|
}
|
|
875
|
-
var dateRange
|
|
993
|
+
var dateRange;
|
|
994
|
+
dateRange = timeDimension.dateRange;
|
|
876
995
|
if (!dateRange) {
|
|
877
996
|
var member = ResultSet.timeDimensionMember(timeDimension);
|
|
878
|
-
var
|
|
879
|
-
|
|
880
|
-
|
|
997
|
+
var rawRows = this.timeDimensionBackwardCompatibleData(resultIndex || 0);
|
|
998
|
+
var dates = rawRows.map(function (row) {
|
|
999
|
+
var value = row[member];
|
|
1000
|
+
return value ? internalDayjs(value) : null;
|
|
1001
|
+
}).filter(function (d) {
|
|
1002
|
+
return Boolean(d);
|
|
1003
|
+
});
|
|
881
1004
|
dateRange = dates.length && [ramda.reduce(ramda.minBy(function (d) {
|
|
882
1005
|
return d.toDate();
|
|
883
|
-
}), dates[0], dates), ramda.reduce(ramda.maxBy(function (d) {
|
|
1006
|
+
}), dates[0], dates).toString(), ramda.reduce(ramda.maxBy(function (d) {
|
|
884
1007
|
return d.toDate();
|
|
885
|
-
}), dates[0], dates)] || null;
|
|
1008
|
+
}), dates[0], dates).toString()] || null;
|
|
886
1009
|
}
|
|
887
1010
|
if (!dateRange) {
|
|
888
1011
|
return null;
|
|
@@ -898,16 +1021,58 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
898
1021
|
if (isPredefinedGranularity(timeDimension.granularity)) {
|
|
899
1022
|
return TIME_SERIES[timeDimension.granularity](padToDay ? range.snapTo('d') : range);
|
|
900
1023
|
}
|
|
901
|
-
if (!annotations["".concat(timeDimension.dimension, ".").concat(timeDimension.granularity)]) {
|
|
1024
|
+
if (!(annotations !== null && annotations !== void 0 && annotations["".concat(timeDimension.dimension, ".").concat(timeDimension.granularity)])) {
|
|
902
1025
|
throw new Error("Granularity \"".concat(timeDimension.granularity, "\" not found in time dimension \"").concat(timeDimension.dimension, "\""));
|
|
903
1026
|
}
|
|
904
1027
|
return timeSeriesFromCustomInterval(start, end, annotations["".concat(timeDimension.dimension, ".").concat(timeDimension.granularity)].granularity);
|
|
905
1028
|
}
|
|
1029
|
+
|
|
1030
|
+
/**
|
|
1031
|
+
* Base method for pivoting [ResultSet](#result-set) data.
|
|
1032
|
+
* Most of the time shouldn't be used directly and [chartPivot](#result-set-chart-pivot)
|
|
1033
|
+
* or [tablePivot](#table-pivot) should be used instead.
|
|
1034
|
+
*
|
|
1035
|
+
* You can find the examples of using the `pivotConfig` [here](#types-pivot-config)
|
|
1036
|
+
* ```js
|
|
1037
|
+
* // For query
|
|
1038
|
+
* {
|
|
1039
|
+
* measures: ['Stories.count'],
|
|
1040
|
+
* timeDimensions: [{
|
|
1041
|
+
* dimension: 'Stories.time',
|
|
1042
|
+
* dateRange: ['2015-01-01', '2015-03-31'],
|
|
1043
|
+
* granularity: 'month'
|
|
1044
|
+
* }]
|
|
1045
|
+
* }
|
|
1046
|
+
*
|
|
1047
|
+
* // ResultSet.pivot({ x: ['Stories.time'], y: ['measures'] }) will return
|
|
1048
|
+
* [
|
|
1049
|
+
* {
|
|
1050
|
+
* xValues: ["2015-01-01T00:00:00"],
|
|
1051
|
+
* yValuesArray: [
|
|
1052
|
+
* [['Stories.count'], 27120]
|
|
1053
|
+
* ]
|
|
1054
|
+
* },
|
|
1055
|
+
* {
|
|
1056
|
+
* xValues: ["2015-02-01T00:00:00"],
|
|
1057
|
+
* yValuesArray: [
|
|
1058
|
+
* [['Stories.count'], 25861]
|
|
1059
|
+
* ]
|
|
1060
|
+
* },
|
|
1061
|
+
* {
|
|
1062
|
+
* xValues: ["2015-03-01T00:00:00"],
|
|
1063
|
+
* yValuesArray: [
|
|
1064
|
+
* [['Stories.count'], 29661]
|
|
1065
|
+
* ]
|
|
1066
|
+
* }
|
|
1067
|
+
* ]
|
|
1068
|
+
* ```
|
|
1069
|
+
* @returns An array of pivoted rows.
|
|
1070
|
+
*/
|
|
906
1071
|
}, {
|
|
907
1072
|
key: "pivot",
|
|
908
1073
|
value: function pivot(pivotConfig) {
|
|
909
1074
|
var _this2 = this;
|
|
910
|
-
|
|
1075
|
+
var normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);
|
|
911
1076
|
var query = this.loadResponse.pivotQuery;
|
|
912
1077
|
var pivotImpl = function pivotImpl() {
|
|
913
1078
|
var resultIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
@@ -916,9 +1081,9 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
916
1081
|
return _this2.axisValuesString(xValues);
|
|
917
1082
|
});
|
|
918
1083
|
var measureValue = function measureValue(row, measure) {
|
|
919
|
-
return row[measure] ||
|
|
1084
|
+
return row[measure] || normalizedPivotConfig.fillWithValue || 0;
|
|
920
1085
|
};
|
|
921
|
-
if (
|
|
1086
|
+
if (normalizedPivotConfig.fillMissingDates && normalizedPivotConfig.x.length === 1 && ramda.equals(normalizedPivotConfig.x, (query.timeDimensions || []).filter(function (td) {
|
|
922
1087
|
return Boolean(td.granularity);
|
|
923
1088
|
}).map(function (td) {
|
|
924
1089
|
return ResultSet.timeDimensionMember(td);
|
|
@@ -928,21 +1093,22 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
928
1093
|
});
|
|
929
1094
|
if (series[0]) {
|
|
930
1095
|
groupByXAxis = function groupByXAxis(rows) {
|
|
1096
|
+
var _series$resultIndex$m, _series$resultIndex;
|
|
931
1097
|
var byXValues = ramda.groupBy(function (_ref12) {
|
|
932
1098
|
var xValues = _ref12.xValues;
|
|
933
1099
|
return xValues[0];
|
|
934
1100
|
}, rows);
|
|
935
|
-
return series[resultIndex].map(function (d) {
|
|
1101
|
+
return (_series$resultIndex$m = (_series$resultIndex = series[resultIndex]) === null || _series$resultIndex === void 0 ? void 0 : _series$resultIndex.map(function (d) {
|
|
936
1102
|
return [d, byXValues[d] || [{
|
|
937
1103
|
xValues: [d],
|
|
938
1104
|
row: {}
|
|
939
1105
|
}]];
|
|
940
|
-
});
|
|
1106
|
+
})) !== null && _series$resultIndex$m !== void 0 ? _series$resultIndex$m : [];
|
|
941
1107
|
};
|
|
942
1108
|
}
|
|
943
1109
|
}
|
|
944
1110
|
var xGrouped = ramda.pipe(ramda.map(function (row) {
|
|
945
|
-
return _this2.axisValues(
|
|
1111
|
+
return _this2.axisValues(normalizedPivotConfig.x, resultIndex)(row).map(function (xValues) {
|
|
946
1112
|
return {
|
|
947
1113
|
xValues: xValues,
|
|
948
1114
|
row: row
|
|
@@ -955,7 +1121,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
955
1121
|
rows = _ref14[1];
|
|
956
1122
|
rows.forEach(function (_ref15) {
|
|
957
1123
|
var row = _ref15.row;
|
|
958
|
-
_this2.axisValues(
|
|
1124
|
+
_this2.axisValues(normalizedPivotConfig.y, resultIndex)(row).forEach(function (values) {
|
|
959
1125
|
if (Object.keys(row).length > 0) {
|
|
960
1126
|
yValuesMap[values.join()] = values;
|
|
961
1127
|
}
|
|
@@ -963,7 +1129,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
963
1129
|
});
|
|
964
1130
|
});
|
|
965
1131
|
var allYValues = Object.values(yValuesMap);
|
|
966
|
-
var measureOnX = Boolean(
|
|
1132
|
+
var measureOnX = Boolean(normalizedPivotConfig.x.find(function (d) {
|
|
967
1133
|
return d === 'measures';
|
|
968
1134
|
}));
|
|
969
1135
|
return xGrouped.map(function (_ref16) {
|
|
@@ -973,7 +1139,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
973
1139
|
var yGrouped = {};
|
|
974
1140
|
rows.forEach(function (_ref18) {
|
|
975
1141
|
var row = _ref18.row;
|
|
976
|
-
var arr = _this2.axisValues(
|
|
1142
|
+
var arr = _this2.axisValues(normalizedPivotConfig.y, resultIndex)(row).map(function (yValues) {
|
|
977
1143
|
return {
|
|
978
1144
|
yValues: yValues,
|
|
979
1145
|
row: row
|
|
@@ -997,17 +1163,18 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
997
1163
|
var pivots = this.loadResponses.length > 1 ? this.loadResponses.map(function (_, index) {
|
|
998
1164
|
return pivotImpl(index);
|
|
999
1165
|
}) : [];
|
|
1000
|
-
return pivots.length ? this.mergePivots(pivots,
|
|
1166
|
+
return pivots.length ? this.mergePivots(pivots, normalizedPivotConfig.joinDateRange || false) : pivotImpl();
|
|
1001
1167
|
}
|
|
1002
1168
|
}, {
|
|
1003
1169
|
key: "mergePivots",
|
|
1004
1170
|
value: function mergePivots(pivots, joinDateRange) {
|
|
1005
1171
|
var minLengthPivot = pivots.reduce(function (memo, current) {
|
|
1006
1172
|
return memo != null && current.length >= memo.length ? memo : current;
|
|
1007
|
-
}, null);
|
|
1173
|
+
}, null) || [];
|
|
1008
1174
|
return minLengthPivot.map(function (_, index) {
|
|
1009
1175
|
var xValues = joinDateRange ? [pivots.map(function (pivot) {
|
|
1010
|
-
|
|
1176
|
+
var _pivot$index;
|
|
1177
|
+
return ((_pivot$index = pivot[index]) === null || _pivot$index === void 0 ? void 0 : _pivot$index.xValues) || [];
|
|
1011
1178
|
}).join(', ')] : minLengthPivot[index].xValues;
|
|
1012
1179
|
return {
|
|
1013
1180
|
xValues: xValues,
|
|
@@ -1017,12 +1184,88 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1017
1184
|
};
|
|
1018
1185
|
});
|
|
1019
1186
|
}
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1187
|
+
|
|
1188
|
+
/**
|
|
1189
|
+
* Returns normalized query result data in the following format.
|
|
1190
|
+
*
|
|
1191
|
+
* You can find the examples of using the `pivotConfig` [here](#types-pivot-config)
|
|
1192
|
+
* ```js
|
|
1193
|
+
* // For the query
|
|
1194
|
+
* {
|
|
1195
|
+
* measures: ['Stories.count'],
|
|
1196
|
+
* timeDimensions: [{
|
|
1197
|
+
* dimension: 'Stories.time',
|
|
1198
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1199
|
+
* granularity: 'month'
|
|
1200
|
+
* }]
|
|
1201
|
+
* }
|
|
1202
|
+
*
|
|
1203
|
+
* // ResultSet.chartPivot() will return
|
|
1204
|
+
* [
|
|
1205
|
+
* { "x":"2015-01-01T00:00:00", "Stories.count": 27120, "xValues": ["2015-01-01T00:00:00"] },
|
|
1206
|
+
* { "x":"2015-02-01T00:00:00", "Stories.count": 25861, "xValues": ["2015-02-01T00:00:00"] },
|
|
1207
|
+
* { "x":"2015-03-01T00:00:00", "Stories.count": 29661, "xValues": ["2015-03-01T00:00:00"] },
|
|
1208
|
+
* //...
|
|
1209
|
+
* ]
|
|
1210
|
+
*
|
|
1211
|
+
* ```
|
|
1212
|
+
* When using `chartPivot()` or `seriesNames()`, you can pass `aliasSeries` in the [pivotConfig](#types-pivot-config)
|
|
1213
|
+
* to give each series a unique prefix. This is useful for `blending queries` which use the same measure multiple times.
|
|
1214
|
+
*
|
|
1215
|
+
* ```js
|
|
1216
|
+
* // For the queries
|
|
1217
|
+
* {
|
|
1218
|
+
* measures: ['Stories.count'],
|
|
1219
|
+
* timeDimensions: [
|
|
1220
|
+
* {
|
|
1221
|
+
* dimension: 'Stories.time',
|
|
1222
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1223
|
+
* granularity: 'month',
|
|
1224
|
+
* },
|
|
1225
|
+
* ],
|
|
1226
|
+
* },
|
|
1227
|
+
* {
|
|
1228
|
+
* measures: ['Stories.count'],
|
|
1229
|
+
* timeDimensions: [
|
|
1230
|
+
* {
|
|
1231
|
+
* dimension: 'Stories.time',
|
|
1232
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1233
|
+
* granularity: 'month',
|
|
1234
|
+
* },
|
|
1235
|
+
* ],
|
|
1236
|
+
* filters: [
|
|
1237
|
+
* {
|
|
1238
|
+
* member: 'Stores.read',
|
|
1239
|
+
* operator: 'equals',
|
|
1240
|
+
* value: ['true'],
|
|
1241
|
+
* },
|
|
1242
|
+
* ],
|
|
1243
|
+
* },
|
|
1244
|
+
*
|
|
1245
|
+
* // ResultSet.chartPivot({ aliasSeries: ['one', 'two'] }) will return
|
|
1246
|
+
* [
|
|
1247
|
+
* {
|
|
1248
|
+
* x: '2015-01-01T00:00:00',
|
|
1249
|
+
* 'one,Stories.count': 27120,
|
|
1250
|
+
* 'two,Stories.count': 8933,
|
|
1251
|
+
* xValues: ['2015-01-01T00:00:00'],
|
|
1252
|
+
* },
|
|
1253
|
+
* {
|
|
1254
|
+
* x: '2015-02-01T00:00:00',
|
|
1255
|
+
* 'one,Stories.count': 25861,
|
|
1256
|
+
* 'two,Stories.count': 8344,
|
|
1257
|
+
* xValues: ['2015-02-01T00:00:00'],
|
|
1258
|
+
* },
|
|
1259
|
+
* {
|
|
1260
|
+
* x: '2015-03-01T00:00:00',
|
|
1261
|
+
* 'one,Stories.count': 29661,
|
|
1262
|
+
* 'two,Stories.count': 9023,
|
|
1263
|
+
* xValues: ['2015-03-01T00:00:00'],
|
|
1264
|
+
* },
|
|
1265
|
+
* //...
|
|
1266
|
+
* ]
|
|
1267
|
+
* ```
|
|
1268
|
+
*/
|
|
1026
1269
|
}, {
|
|
1027
1270
|
key: "chartPivot",
|
|
1028
1271
|
value: function chartPivot(pivotConfig) {
|
|
@@ -1038,8 +1281,9 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1038
1281
|
var duplicateMeasures = new Set();
|
|
1039
1282
|
if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {
|
|
1040
1283
|
var allMeasures = ramda.flatten(this.loadResponses.map(function (_ref19) {
|
|
1284
|
+
var _query$measures;
|
|
1041
1285
|
var query = _ref19.query;
|
|
1042
|
-
return query.measures;
|
|
1286
|
+
return (_query$measures = query.measures) !== null && _query$measures !== void 0 ? _query$measures : [];
|
|
1043
1287
|
}));
|
|
1044
1288
|
allMeasures.filter(function (e, i, a) {
|
|
1045
1289
|
return a.indexOf(e) !== i;
|
|
@@ -1063,6 +1307,34 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1063
1307
|
}, yValuesMap);
|
|
1064
1308
|
});
|
|
1065
1309
|
}
|
|
1310
|
+
|
|
1311
|
+
/**
|
|
1312
|
+
* Returns normalized query result data prepared for visualization in the table format.
|
|
1313
|
+
*
|
|
1314
|
+
* You can find the examples of using the `pivotConfig` [here](#types-pivot-config)
|
|
1315
|
+
*
|
|
1316
|
+
* For example:
|
|
1317
|
+
* ```js
|
|
1318
|
+
* // For the query
|
|
1319
|
+
* {
|
|
1320
|
+
* measures: ['Stories.count'],
|
|
1321
|
+
* timeDimensions: [{
|
|
1322
|
+
* dimension: 'Stories.time',
|
|
1323
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1324
|
+
* granularity: 'month'
|
|
1325
|
+
* }]
|
|
1326
|
+
* }
|
|
1327
|
+
*
|
|
1328
|
+
* // ResultSet.tablePivot() will return
|
|
1329
|
+
* [
|
|
1330
|
+
* { "Stories.time": "2015-01-01T00:00:00", "Stories.count": 27120 },
|
|
1331
|
+
* { "Stories.time": "2015-02-01T00:00:00", "Stories.count": 25861 },
|
|
1332
|
+
* { "Stories.time": "2015-03-01T00:00:00", "Stories.count": 29661 },
|
|
1333
|
+
* //...
|
|
1334
|
+
* ]
|
|
1335
|
+
* ```
|
|
1336
|
+
* @returns An array of pivoted rows
|
|
1337
|
+
*/
|
|
1066
1338
|
}, {
|
|
1067
1339
|
key: "tablePivot",
|
|
1068
1340
|
value: function tablePivot(pivotConfig) {
|
|
@@ -1071,21 +1343,127 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1071
1343
|
return this.pivot(normalizedPivotConfig).map(function (_ref23) {
|
|
1072
1344
|
var xValues = _ref23.xValues,
|
|
1073
1345
|
yValuesArray = _ref23.yValuesArray;
|
|
1074
|
-
return ramda.fromPairs(normalizedPivotConfig.x.map(function (key, index) {
|
|
1075
|
-
|
|
1076
|
-
|
|
1346
|
+
return ramda.fromPairs([].concat(_toConsumableArray__default['default'](normalizedPivotConfig.x.map(function (key, index) {
|
|
1347
|
+
var _xValues$index;
|
|
1348
|
+
return [key, (_xValues$index = xValues[index]) !== null && _xValues$index !== void 0 ? _xValues$index : ''];
|
|
1349
|
+
})), _toConsumableArray__default['default'](isMeasuresPresent ? yValuesArray.map(function (_ref24) {
|
|
1077
1350
|
var _ref25 = _slicedToArray__default['default'](_ref24, 2),
|
|
1078
1351
|
yValues = _ref25[0],
|
|
1079
1352
|
measure = _ref25[1];
|
|
1080
1353
|
return [yValues.length ? yValues.join() : 'value', measure];
|
|
1081
|
-
}) : []));
|
|
1354
|
+
}) : [])));
|
|
1082
1355
|
});
|
|
1083
1356
|
}
|
|
1357
|
+
|
|
1358
|
+
/**
|
|
1359
|
+
* Returns an array of column definitions for `tablePivot`.
|
|
1360
|
+
*
|
|
1361
|
+
* For example:
|
|
1362
|
+
* ```js
|
|
1363
|
+
* // For the query
|
|
1364
|
+
* {
|
|
1365
|
+
* measures: ['Stories.count'],
|
|
1366
|
+
* timeDimensions: [{
|
|
1367
|
+
* dimension: 'Stories.time',
|
|
1368
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1369
|
+
* granularity: 'month'
|
|
1370
|
+
* }]
|
|
1371
|
+
* }
|
|
1372
|
+
*
|
|
1373
|
+
* // ResultSet.tableColumns() will return
|
|
1374
|
+
* [
|
|
1375
|
+
* {
|
|
1376
|
+
* key: 'Stories.time',
|
|
1377
|
+
* dataIndex: 'Stories.time',
|
|
1378
|
+
* title: 'Stories Time',
|
|
1379
|
+
* shortTitle: 'Time',
|
|
1380
|
+
* type: 'time',
|
|
1381
|
+
* format: undefined,
|
|
1382
|
+
* },
|
|
1383
|
+
* {
|
|
1384
|
+
* key: 'Stories.count',
|
|
1385
|
+
* dataIndex: 'Stories.count',
|
|
1386
|
+
* title: 'Stories Count',
|
|
1387
|
+
* shortTitle: 'Count',
|
|
1388
|
+
* type: 'count',
|
|
1389
|
+
* format: undefined,
|
|
1390
|
+
* },
|
|
1391
|
+
* //...
|
|
1392
|
+
* ]
|
|
1393
|
+
* ```
|
|
1394
|
+
*
|
|
1395
|
+
* In case we want to pivot the table axes
|
|
1396
|
+
* ```js
|
|
1397
|
+
* // Let's take this query as an example
|
|
1398
|
+
* {
|
|
1399
|
+
* measures: ['Orders.count'],
|
|
1400
|
+
* dimensions: ['Users.country', 'Users.gender']
|
|
1401
|
+
* }
|
|
1402
|
+
*
|
|
1403
|
+
* // and put the dimensions on `y` axis
|
|
1404
|
+
* resultSet.tableColumns({
|
|
1405
|
+
* x: [],
|
|
1406
|
+
* y: ['Users.country', 'Users.gender', 'measures']
|
|
1407
|
+
* })
|
|
1408
|
+
* ```
|
|
1409
|
+
*
|
|
1410
|
+
* then `tableColumns` will group the table head and return
|
|
1411
|
+
* ```js
|
|
1412
|
+
* {
|
|
1413
|
+
* key: 'Germany',
|
|
1414
|
+
* type: 'string',
|
|
1415
|
+
* title: 'Users Country Germany',
|
|
1416
|
+
* shortTitle: 'Germany',
|
|
1417
|
+
* meta: undefined,
|
|
1418
|
+
* format: undefined,
|
|
1419
|
+
* children: [
|
|
1420
|
+
* {
|
|
1421
|
+
* key: 'male',
|
|
1422
|
+
* type: 'string',
|
|
1423
|
+
* title: 'Users Gender male',
|
|
1424
|
+
* shortTitle: 'male',
|
|
1425
|
+
* meta: undefined,
|
|
1426
|
+
* format: undefined,
|
|
1427
|
+
* children: [
|
|
1428
|
+
* {
|
|
1429
|
+
* // ...
|
|
1430
|
+
* dataIndex: 'Germany.male.Orders.count',
|
|
1431
|
+
* shortTitle: 'Count',
|
|
1432
|
+
* },
|
|
1433
|
+
* ],
|
|
1434
|
+
* },
|
|
1435
|
+
* {
|
|
1436
|
+
* // ...
|
|
1437
|
+
* shortTitle: 'female',
|
|
1438
|
+
* children: [
|
|
1439
|
+
* {
|
|
1440
|
+
* // ...
|
|
1441
|
+
* dataIndex: 'Germany.female.Orders.count',
|
|
1442
|
+
* shortTitle: 'Count',
|
|
1443
|
+
* },
|
|
1444
|
+
* ],
|
|
1445
|
+
* },
|
|
1446
|
+
* ],
|
|
1447
|
+
* },
|
|
1448
|
+
* // ...
|
|
1449
|
+
* ```
|
|
1450
|
+
* @returns An array of columns
|
|
1451
|
+
*/
|
|
1084
1452
|
}, {
|
|
1085
1453
|
key: "tableColumns",
|
|
1086
1454
|
value: function tableColumns(pivotConfig) {
|
|
1455
|
+
var _pivot$;
|
|
1087
1456
|
var normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});
|
|
1088
|
-
var annotations =
|
|
1457
|
+
var annotations = this.loadResponses.map(function (r) {
|
|
1458
|
+
return r.annotation;
|
|
1459
|
+
}).reduce(function (acc, annotation) {
|
|
1460
|
+
return ramda.mergeDeepLeft(acc, annotation);
|
|
1461
|
+
}, {
|
|
1462
|
+
dimensions: {},
|
|
1463
|
+
measures: {},
|
|
1464
|
+
timeDimensions: {},
|
|
1465
|
+
segments: {}
|
|
1466
|
+
});
|
|
1089
1467
|
var flatMeta = Object.values(annotations).reduce(function (a, b) {
|
|
1090
1468
|
return _objectSpread$2(_objectSpread$2({}, a), b);
|
|
1091
1469
|
}, {});
|
|
@@ -1107,16 +1485,17 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1107
1485
|
};
|
|
1108
1486
|
};
|
|
1109
1487
|
var pivot = this.pivot(normalizedPivotConfig);
|
|
1110
|
-
(pivot[0]
|
|
1488
|
+
(((_pivot$ = pivot[0]) === null || _pivot$ === void 0 ? void 0 : _pivot$.yValuesArray) || []).forEach(function (_ref27) {
|
|
1111
1489
|
var _ref28 = _slicedToArray__default['default'](_ref27, 1),
|
|
1112
1490
|
yValues = _ref28[0];
|
|
1113
1491
|
if (yValues.length > 0) {
|
|
1114
1492
|
var currentItem = schema;
|
|
1115
1493
|
yValues.forEach(function (value, index) {
|
|
1494
|
+
var _currentItem;
|
|
1116
1495
|
currentItem["_".concat(value)] = {
|
|
1117
1496
|
key: value,
|
|
1118
1497
|
memberId: normalizedPivotConfig.y[index] === 'measures' ? value : normalizedPivotConfig.y[index],
|
|
1119
|
-
children:
|
|
1498
|
+
children: ((_currentItem = currentItem["_".concat(value)]) === null || _currentItem === void 0 ? void 0 : _currentItem.children) || {}
|
|
1120
1499
|
};
|
|
1121
1500
|
currentItem = currentItem["_".concat(value)].children;
|
|
1122
1501
|
});
|
|
@@ -1162,7 +1541,7 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1162
1541
|
});
|
|
1163
1542
|
}
|
|
1164
1543
|
|
|
1165
|
-
//
|
|
1544
|
+
// Synthetic column to display the measure value
|
|
1166
1545
|
if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {
|
|
1167
1546
|
otherColumns.push({
|
|
1168
1547
|
key: 'value',
|
|
@@ -1195,23 +1574,53 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1195
1574
|
}, {
|
|
1196
1575
|
key: "categories",
|
|
1197
1576
|
value: function categories(pivotConfig) {
|
|
1198
|
-
// TODO
|
|
1199
1577
|
return this.chartPivot(pivotConfig);
|
|
1200
1578
|
}
|
|
1579
|
+
|
|
1580
|
+
/**
|
|
1581
|
+
* Returns an array of series objects, containing `key` and `title` parameters.
|
|
1582
|
+
* ```js
|
|
1583
|
+
* // For query
|
|
1584
|
+
* {
|
|
1585
|
+
* measures: ['Stories.count'],
|
|
1586
|
+
* timeDimensions: [{
|
|
1587
|
+
* dimension: 'Stories.time',
|
|
1588
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
1589
|
+
* granularity: 'month'
|
|
1590
|
+
* }]
|
|
1591
|
+
* }
|
|
1592
|
+
*
|
|
1593
|
+
* // ResultSet.seriesNames() will return
|
|
1594
|
+
* [
|
|
1595
|
+
* {
|
|
1596
|
+
* key: 'Stories.count',
|
|
1597
|
+
* title: 'Stories Count',
|
|
1598
|
+
* shortTitle: 'Count',
|
|
1599
|
+
* yValues: ['Stories.count'],
|
|
1600
|
+
* },
|
|
1601
|
+
* ]
|
|
1602
|
+
* ```
|
|
1603
|
+
* @returns An array of series names
|
|
1604
|
+
*/
|
|
1201
1605
|
}, {
|
|
1202
1606
|
key: "seriesNames",
|
|
1203
1607
|
value: function seriesNames(pivotConfig) {
|
|
1204
1608
|
var _this4 = this;
|
|
1205
|
-
|
|
1206
|
-
var measures =
|
|
1609
|
+
var normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);
|
|
1610
|
+
var measures = this.loadResponses.map(function (r) {
|
|
1611
|
+
return r.annotation.measures;
|
|
1612
|
+
}).reduce(function (acc, m) {
|
|
1613
|
+
return _objectSpread$2(_objectSpread$2({}, acc), m);
|
|
1614
|
+
}, {});
|
|
1207
1615
|
var seriesNames = unnest(this.loadResponses.map(function (_, index) {
|
|
1208
|
-
return ramda.pipe(ramda.map(_this4.axisValues(
|
|
1616
|
+
return ramda.pipe(ramda.map(_this4.axisValues(normalizedPivotConfig.y, index)), unnest, ramda.uniq)(_this4.timeDimensionBackwardCompatibleData(index));
|
|
1209
1617
|
}));
|
|
1210
1618
|
var duplicateMeasures = new Set();
|
|
1211
1619
|
if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {
|
|
1212
1620
|
var allMeasures = ramda.flatten(this.loadResponses.map(function (_ref30) {
|
|
1621
|
+
var _query$measures2;
|
|
1213
1622
|
var query = _ref30.query;
|
|
1214
|
-
return query.measures;
|
|
1623
|
+
return (_query$measures2 = query.measures) !== null && _query$measures2 !== void 0 ? _query$measures2 : [];
|
|
1215
1624
|
}));
|
|
1216
1625
|
allMeasures.filter(function (e, i, a) {
|
|
1217
1626
|
return a.indexOf(e) !== i;
|
|
@@ -1220,12 +1629,12 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1220
1629
|
});
|
|
1221
1630
|
}
|
|
1222
1631
|
return seriesNames.map(function (axisValues, i) {
|
|
1223
|
-
var aliasedAxis = aliasSeries(axisValues, i,
|
|
1632
|
+
var aliasedAxis = aliasSeries(axisValues, i, normalizedPivotConfig, duplicateMeasures);
|
|
1224
1633
|
return {
|
|
1225
|
-
title: _this4.axisValuesString(
|
|
1634
|
+
title: _this4.axisValuesString(normalizedPivotConfig.y.find(function (d) {
|
|
1226
1635
|
return d === 'measures';
|
|
1227
1636
|
}) ? ramda.dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].title) : aliasedAxis, ', '),
|
|
1228
|
-
shortTitle: _this4.axisValuesString(
|
|
1637
|
+
shortTitle: _this4.axisValuesString(normalizedPivotConfig.y.find(function (d) {
|
|
1229
1638
|
return d === 'measures';
|
|
1230
1639
|
}) ? ramda.dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].shortTitle) : aliasedAxis, ', '),
|
|
1231
1640
|
key: _this4.axisValuesString(aliasedAxis, ','),
|
|
@@ -1246,6 +1655,10 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1246
1655
|
value: function pivotQuery() {
|
|
1247
1656
|
return this.loadResponse.pivotQuery || null;
|
|
1248
1657
|
}
|
|
1658
|
+
|
|
1659
|
+
/**
|
|
1660
|
+
* @return the total number of rows if the `total` option was set, when sending the query
|
|
1661
|
+
*/
|
|
1249
1662
|
}, {
|
|
1250
1663
|
key: "totalRows",
|
|
1251
1664
|
value: function totalRows() {
|
|
@@ -1282,11 +1695,10 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1282
1695
|
});
|
|
1283
1696
|
this.backwardCompatibleData[resultIndex] = data.map(function (row) {
|
|
1284
1697
|
return _objectSpread$2(_objectSpread$2({}, row), ramda.fromPairs(Object.keys(row).filter(function (field) {
|
|
1285
|
-
|
|
1698
|
+
var foundTd = timeDimensions.find(function (d) {
|
|
1286
1699
|
return d.dimension === field;
|
|
1287
|
-
})
|
|
1288
|
-
|
|
1289
|
-
}))];
|
|
1700
|
+
});
|
|
1701
|
+
return foundTd && !row[ResultSet.timeDimensionMember(foundTd)];
|
|
1290
1702
|
}).map(function (field) {
|
|
1291
1703
|
return [ResultSet.timeDimensionMember(timeDimensions.find(function (d) {
|
|
1292
1704
|
return d.dimension === field;
|
|
@@ -1296,6 +1708,15 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1296
1708
|
}
|
|
1297
1709
|
return this.backwardCompatibleData[resultIndex];
|
|
1298
1710
|
}
|
|
1711
|
+
|
|
1712
|
+
/**
|
|
1713
|
+
* Can be used when you need access to the methods that can't be used with some query types (eg `compareDateRangeQuery` or `blendingQuery`)
|
|
1714
|
+
* ```js
|
|
1715
|
+
* resultSet.decompose().forEach((currentResultSet) => {
|
|
1716
|
+
* console.log(currentResultSet.rawData());
|
|
1717
|
+
* });
|
|
1718
|
+
* ```
|
|
1719
|
+
*/
|
|
1299
1720
|
}, {
|
|
1300
1721
|
key: "decompose",
|
|
1301
1722
|
value: function decompose() {
|
|
@@ -1310,6 +1731,10 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1310
1731
|
}, _this5.options);
|
|
1311
1732
|
});
|
|
1312
1733
|
}
|
|
1734
|
+
|
|
1735
|
+
/**
|
|
1736
|
+
* Can be used to stash the `ResultSet` in a storage and restored later with [deserialize](#result-set-deserialize)
|
|
1737
|
+
*/
|
|
1313
1738
|
}, {
|
|
1314
1739
|
key: "serialize",
|
|
1315
1740
|
value: function serialize() {
|
|
@@ -1327,28 +1752,41 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1327
1752
|
value: function timeDimensionMember(td) {
|
|
1328
1753
|
return "".concat(td.dimension, ".").concat(td.granularity);
|
|
1329
1754
|
}
|
|
1755
|
+
|
|
1756
|
+
/**
|
|
1757
|
+
* ```js
|
|
1758
|
+
* import { ResultSet } from '@cubejs-client/core';
|
|
1759
|
+
*
|
|
1760
|
+
* const resultSet = await cubeApi.load(query);
|
|
1761
|
+
* // You can store the result somewhere
|
|
1762
|
+
* const tmp = resultSet.serialize();
|
|
1763
|
+
*
|
|
1764
|
+
* // and restore it later
|
|
1765
|
+
* const resultSet = ResultSet.deserialize(tmp);
|
|
1766
|
+
* ```
|
|
1767
|
+
* @param data the result of [serialize](#result-set-serialize)
|
|
1768
|
+
* @param options
|
|
1769
|
+
*/
|
|
1330
1770
|
}, {
|
|
1331
1771
|
key: "deserialize",
|
|
1332
|
-
value: function deserialize(data) {
|
|
1333
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1772
|
+
value: function deserialize(data, options) {
|
|
1334
1773
|
return new ResultSet(data.loadResponse, options);
|
|
1335
1774
|
}
|
|
1336
1775
|
}, {
|
|
1337
1776
|
key: "getNormalizedPivotConfig",
|
|
1338
|
-
value: function getNormalizedPivotConfig() {
|
|
1339
|
-
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1340
|
-
var pivotConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
1777
|
+
value: function getNormalizedPivotConfig(query, pivotConfig) {
|
|
1341
1778
|
var defaultPivotConfig = {
|
|
1342
1779
|
x: [],
|
|
1343
1780
|
y: [],
|
|
1344
1781
|
fillMissingDates: true,
|
|
1345
1782
|
joinDateRange: false
|
|
1346
1783
|
};
|
|
1347
|
-
var
|
|
1348
|
-
measures =
|
|
1349
|
-
|
|
1350
|
-
dimensions =
|
|
1351
|
-
|
|
1784
|
+
var _ref31 = query || {},
|
|
1785
|
+
_ref31$measures = _ref31.measures,
|
|
1786
|
+
measures = _ref31$measures === void 0 ? [] : _ref31$measures,
|
|
1787
|
+
_ref31$dimensions = _ref31.dimensions,
|
|
1788
|
+
dimensions = _ref31$dimensions === void 0 ? [] : _ref31$dimensions;
|
|
1789
|
+
var timeDimensions = ((query === null || query === void 0 ? void 0 : query.timeDimensions) || []).filter(function (td) {
|
|
1352
1790
|
return !!td.granularity;
|
|
1353
1791
|
});
|
|
1354
1792
|
pivotConfig = pivotConfig || (timeDimensions.length ? {
|
|
@@ -1360,48 +1798,48 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1360
1798
|
x: dimensions,
|
|
1361
1799
|
y: []
|
|
1362
1800
|
});
|
|
1363
|
-
|
|
1801
|
+
var normalizedPivotConfig = ramda.mergeDeepLeft(pivotConfig, defaultPivotConfig);
|
|
1364
1802
|
var substituteTimeDimensionMembers = function substituteTimeDimensionMembers(axis) {
|
|
1365
1803
|
return axis.map(function (subDim) {
|
|
1366
1804
|
return timeDimensions.find(function (td) {
|
|
1367
1805
|
return td.dimension === subDim;
|
|
1368
1806
|
}) && !dimensions.find(function (d) {
|
|
1369
1807
|
return d === subDim;
|
|
1370
|
-
}) ? ResultSet.timeDimensionMember(query.timeDimensions.find(function (td) {
|
|
1808
|
+
}) ? ResultSet.timeDimensionMember(((query === null || query === void 0 ? void 0 : query.timeDimensions) || []).find(function (td) {
|
|
1371
1809
|
return td.dimension === subDim;
|
|
1372
1810
|
})) : subDim;
|
|
1373
1811
|
});
|
|
1374
1812
|
};
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
var allIncludedDimensions =
|
|
1813
|
+
normalizedPivotConfig.x = substituteTimeDimensionMembers(normalizedPivotConfig.x);
|
|
1814
|
+
normalizedPivotConfig.y = substituteTimeDimensionMembers(normalizedPivotConfig.y);
|
|
1815
|
+
var allIncludedDimensions = normalizedPivotConfig.x.concat(normalizedPivotConfig.y);
|
|
1378
1816
|
var allDimensions = timeDimensions.map(function (td) {
|
|
1379
1817
|
return ResultSet.timeDimensionMember(td);
|
|
1380
1818
|
}).concat(dimensions);
|
|
1381
1819
|
var dimensionFilter = function dimensionFilter(key) {
|
|
1382
1820
|
return allDimensions.includes(key) || key === 'measures';
|
|
1383
1821
|
};
|
|
1384
|
-
|
|
1822
|
+
normalizedPivotConfig.x = normalizedPivotConfig.x.concat(allDimensions.filter(function (d) {
|
|
1385
1823
|
return !allIncludedDimensions.includes(d) && d !== 'compareDateRange';
|
|
1386
1824
|
})).filter(dimensionFilter);
|
|
1387
|
-
|
|
1388
|
-
if (!
|
|
1825
|
+
normalizedPivotConfig.y = normalizedPivotConfig.y.filter(dimensionFilter);
|
|
1826
|
+
if (!normalizedPivotConfig.x.concat(normalizedPivotConfig.y).find(function (d) {
|
|
1389
1827
|
return d === 'measures';
|
|
1390
1828
|
})) {
|
|
1391
|
-
|
|
1829
|
+
normalizedPivotConfig.y.push('measures');
|
|
1392
1830
|
}
|
|
1393
|
-
if (dimensions.includes('compareDateRange') && !
|
|
1394
|
-
|
|
1831
|
+
if (dimensions.includes('compareDateRange') && !normalizedPivotConfig.y.concat(normalizedPivotConfig.x).includes('compareDateRange')) {
|
|
1832
|
+
normalizedPivotConfig.y.unshift('compareDateRange');
|
|
1395
1833
|
}
|
|
1396
1834
|
if (!measures.length) {
|
|
1397
|
-
|
|
1835
|
+
normalizedPivotConfig.x = normalizedPivotConfig.x.filter(function (d) {
|
|
1398
1836
|
return d !== 'measures';
|
|
1399
1837
|
});
|
|
1400
|
-
|
|
1838
|
+
normalizedPivotConfig.y = normalizedPivotConfig.y.filter(function (d) {
|
|
1401
1839
|
return d !== 'measures';
|
|
1402
1840
|
});
|
|
1403
1841
|
}
|
|
1404
|
-
return
|
|
1842
|
+
return normalizedPivotConfig;
|
|
1405
1843
|
}
|
|
1406
1844
|
}]);
|
|
1407
1845
|
}();
|
|
@@ -1409,12 +1847,13 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1409
1847
|
var SqlQuery = /*#__PURE__*/function () {
|
|
1410
1848
|
function SqlQuery(sqlQuery) {
|
|
1411
1849
|
_classCallCheck__default['default'](this, SqlQuery);
|
|
1850
|
+
_defineProperty__default['default'](this, "sqlQuery", void 0);
|
|
1412
1851
|
this.sqlQuery = sqlQuery;
|
|
1413
1852
|
}
|
|
1414
1853
|
return _createClass__default['default'](SqlQuery, [{
|
|
1415
1854
|
key: "rawQuery",
|
|
1416
1855
|
value: function rawQuery() {
|
|
1417
|
-
return this.sqlQuery
|
|
1856
|
+
return this.sqlQuery;
|
|
1418
1857
|
}
|
|
1419
1858
|
}, {
|
|
1420
1859
|
key: "sql",
|
|
@@ -1519,6 +1958,18 @@ var operators = {
|
|
|
1519
1958
|
var Meta = /*#__PURE__*/function () {
|
|
1520
1959
|
function Meta(metaResponse) {
|
|
1521
1960
|
_classCallCheck__default['default'](this, Meta);
|
|
1961
|
+
/**
|
|
1962
|
+
* Raw meta response
|
|
1963
|
+
*/
|
|
1964
|
+
_defineProperty__default['default'](this, "meta", void 0);
|
|
1965
|
+
/**
|
|
1966
|
+
* An array of all available cubes with their members
|
|
1967
|
+
*/
|
|
1968
|
+
_defineProperty__default['default'](this, "cubes", void 0);
|
|
1969
|
+
/**
|
|
1970
|
+
* A map of all cubes where the key is a cube name
|
|
1971
|
+
*/
|
|
1972
|
+
_defineProperty__default['default'](this, "cubesMap", void 0);
|
|
1522
1973
|
this.meta = metaResponse;
|
|
1523
1974
|
var cubes = this.meta.cubes;
|
|
1524
1975
|
this.cubes = cubes;
|
|
@@ -1530,9 +1981,16 @@ var Meta = /*#__PURE__*/function () {
|
|
|
1530
1981
|
}];
|
|
1531
1982
|
}));
|
|
1532
1983
|
}
|
|
1984
|
+
|
|
1985
|
+
/**
|
|
1986
|
+
* Get all members of a specific type for a given query.
|
|
1987
|
+
* If empty query is provided no filtering is done based on query context and all available members are retrieved.
|
|
1988
|
+
* @param _query - context query to provide filtering of members available to add to this query
|
|
1989
|
+
* @param memberType
|
|
1990
|
+
*/
|
|
1533
1991
|
return _createClass__default['default'](Meta, [{
|
|
1534
1992
|
key: "membersForQuery",
|
|
1535
|
-
value: function membersForQuery(
|
|
1993
|
+
value: function membersForQuery(_query, memberType) {
|
|
1536
1994
|
return ramda.unnest(this.cubes.map(function (c) {
|
|
1537
1995
|
return c[memberType];
|
|
1538
1996
|
})).sort(function (a, b) {
|
|
@@ -1545,19 +2003,35 @@ var Meta = /*#__PURE__*/function () {
|
|
|
1545
2003
|
var memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];
|
|
1546
2004
|
return this.cubes.reduce(function (memo, cube) {
|
|
1547
2005
|
memberKeys.forEach(function (key) {
|
|
1548
|
-
var members =
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
2006
|
+
var members = [];
|
|
2007
|
+
|
|
2008
|
+
// eslint-disable-next-line default-case
|
|
2009
|
+
switch (key) {
|
|
2010
|
+
case 'measures':
|
|
2011
|
+
members = cube.measures || [];
|
|
2012
|
+
break;
|
|
2013
|
+
case 'dimensions':
|
|
2014
|
+
members = cube.dimensions || [];
|
|
2015
|
+
break;
|
|
2016
|
+
case 'segments':
|
|
2017
|
+
members = cube.segments || [];
|
|
2018
|
+
break;
|
|
2019
|
+
case 'timeDimensions':
|
|
2020
|
+
members = cube.dimensions.filter(function (m) {
|
|
2021
|
+
return m.type === 'time';
|
|
2022
|
+
}) || [];
|
|
2023
|
+
break;
|
|
1553
2024
|
}
|
|
1554
|
-
|
|
2025
|
+
|
|
2026
|
+
// TODO: Convince TS this is working
|
|
2027
|
+
// @ts-ignore
|
|
2028
|
+
memo[key].push({
|
|
1555
2029
|
cubeName: cube.name,
|
|
1556
2030
|
cubeTitle: cube.title,
|
|
1557
2031
|
type: cube.type,
|
|
1558
2032
|
"public": cube["public"],
|
|
1559
2033
|
members: members
|
|
1560
|
-
}
|
|
2034
|
+
});
|
|
1561
2035
|
});
|
|
1562
2036
|
return memo;
|
|
1563
2037
|
}, {
|
|
@@ -1567,6 +2041,24 @@ var Meta = /*#__PURE__*/function () {
|
|
|
1567
2041
|
timeDimensions: []
|
|
1568
2042
|
});
|
|
1569
2043
|
}
|
|
2044
|
+
|
|
2045
|
+
/**
|
|
2046
|
+
* Get meta information for a cube member
|
|
2047
|
+
* meta information contains:
|
|
2048
|
+
* ```javascript
|
|
2049
|
+
* {
|
|
2050
|
+
* name,
|
|
2051
|
+
* title,
|
|
2052
|
+
* shortTitle,
|
|
2053
|
+
* type,
|
|
2054
|
+
* description,
|
|
2055
|
+
* format
|
|
2056
|
+
* }
|
|
2057
|
+
* ```
|
|
2058
|
+
* @param memberName - Fully qualified member name in a form `Cube.memberName`
|
|
2059
|
+
* @param memberType
|
|
2060
|
+
* @return An object containing meta information about member
|
|
2061
|
+
*/
|
|
1570
2062
|
}, {
|
|
1571
2063
|
key: "resolveMember",
|
|
1572
2064
|
value: function resolveMember(memberName, memberType) {
|
|
@@ -1612,6 +2104,9 @@ var Meta = /*#__PURE__*/function () {
|
|
|
1612
2104
|
key: "filterOperatorsForMember",
|
|
1613
2105
|
value: function filterOperatorsForMember(memberName, memberType) {
|
|
1614
2106
|
var member = this.resolveMember(memberName, memberType);
|
|
2107
|
+
if ('error' in member || !('type' in member) || member.type === 'boolean') {
|
|
2108
|
+
return operators.string;
|
|
2109
|
+
}
|
|
1615
2110
|
return operators[member.type] || operators.string;
|
|
1616
2111
|
}
|
|
1617
2112
|
}]);
|
|
@@ -1620,6 +2115,7 @@ var Meta = /*#__PURE__*/function () {
|
|
|
1620
2115
|
var ProgressResult = /*#__PURE__*/function () {
|
|
1621
2116
|
function ProgressResult(progressResponse) {
|
|
1622
2117
|
_classCallCheck__default['default'](this, ProgressResult);
|
|
2118
|
+
_defineProperty__default['default'](this, "progressResponse", void 0);
|
|
1623
2119
|
this.progressResponse = progressResponse;
|
|
1624
2120
|
}
|
|
1625
2121
|
return _createClass__default['default'](ProgressResult, [{
|
|
@@ -1635,9 +2131,12 @@ var ProgressResult = /*#__PURE__*/function () {
|
|
|
1635
2131
|
}]);
|
|
1636
2132
|
}();
|
|
1637
2133
|
|
|
1638
|
-
var _excluded = ["baseRequestId"];
|
|
2134
|
+
var _excluded = ["baseRequestId", "signal"];
|
|
1639
2135
|
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1640
2136
|
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty__default['default'](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2137
|
+
/**
|
|
2138
|
+
* Default transport implementation.
|
|
2139
|
+
*/
|
|
1641
2140
|
var HttpTransport = /*#__PURE__*/function () {
|
|
1642
2141
|
function HttpTransport(_ref) {
|
|
1643
2142
|
var authorization = _ref.authorization,
|
|
@@ -1646,20 +2145,30 @@ var HttpTransport = /*#__PURE__*/function () {
|
|
|
1646
2145
|
_ref$headers = _ref.headers,
|
|
1647
2146
|
headers = _ref$headers === void 0 ? {} : _ref$headers,
|
|
1648
2147
|
credentials = _ref.credentials,
|
|
1649
|
-
fetchTimeout = _ref.fetchTimeout
|
|
2148
|
+
fetchTimeout = _ref.fetchTimeout,
|
|
2149
|
+
signal = _ref.signal;
|
|
1650
2150
|
_classCallCheck__default['default'](this, HttpTransport);
|
|
2151
|
+
_defineProperty__default['default'](this, "authorization", void 0);
|
|
2152
|
+
_defineProperty__default['default'](this, "apiUrl", void 0);
|
|
2153
|
+
_defineProperty__default['default'](this, "method", void 0);
|
|
2154
|
+
_defineProperty__default['default'](this, "headers", void 0);
|
|
2155
|
+
_defineProperty__default['default'](this, "credentials", void 0);
|
|
2156
|
+
_defineProperty__default['default'](this, "fetchTimeout", void 0);
|
|
2157
|
+
_defineProperty__default['default'](this, "signal", void 0);
|
|
1651
2158
|
this.authorization = authorization;
|
|
1652
2159
|
this.apiUrl = apiUrl;
|
|
1653
2160
|
this.method = method;
|
|
1654
2161
|
this.headers = headers;
|
|
1655
2162
|
this.credentials = credentials;
|
|
1656
2163
|
this.fetchTimeout = fetchTimeout;
|
|
2164
|
+
this.signal = signal;
|
|
1657
2165
|
}
|
|
1658
2166
|
return _createClass__default['default'](HttpTransport, [{
|
|
1659
2167
|
key: "request",
|
|
1660
2168
|
value: function request(method, _ref2) {
|
|
1661
2169
|
var _this = this;
|
|
1662
2170
|
var baseRequestId = _ref2.baseRequestId,
|
|
2171
|
+
signal = _ref2.signal,
|
|
1663
2172
|
params = _objectWithoutProperties__default['default'](_ref2, _excluded);
|
|
1664
2173
|
var spanCounter = 1;
|
|
1665
2174
|
var searchParams = new URLSearchParams(params && Object.keys(params).map(function (k) {
|
|
@@ -1685,35 +2194,39 @@ var HttpTransport = /*#__PURE__*/function () {
|
|
|
1685
2194
|
}, _this.headers),
|
|
1686
2195
|
credentials: _this.credentials,
|
|
1687
2196
|
body: requestMethod === 'POST' ? JSON.stringify(params) : null,
|
|
1688
|
-
signal: _this.fetchTimeout ? AbortSignal.timeout(_this.fetchTimeout) : undefined
|
|
2197
|
+
signal: signal || _this.signal || (_this.fetchTimeout ? AbortSignal.timeout(_this.fetchTimeout) : undefined)
|
|
1689
2198
|
});
|
|
1690
2199
|
};
|
|
1691
2200
|
return {
|
|
1692
2201
|
/* eslint no-unsafe-finally: off */subscribe: function subscribe(callback) {
|
|
1693
2202
|
var _this2 = this;
|
|
1694
2203
|
return _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
|
|
1695
|
-
var result;
|
|
2204
|
+
var result, _result;
|
|
1696
2205
|
return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
|
|
1697
2206
|
while (1) switch (_context.prev = _context.next) {
|
|
1698
2207
|
case 0:
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
};
|
|
1702
|
-
_context.prev = 1;
|
|
1703
|
-
_context.next = 4;
|
|
2208
|
+
_context.prev = 0;
|
|
2209
|
+
_context.next = 3;
|
|
1704
2210
|
return runRequest();
|
|
1705
|
-
case
|
|
2211
|
+
case 3:
|
|
1706
2212
|
result = _context.sent;
|
|
1707
|
-
case 5:
|
|
1708
|
-
_context.prev = 5;
|
|
1709
2213
|
return _context.abrupt("return", callback(result, function () {
|
|
1710
2214
|
return _this2.subscribe(callback);
|
|
1711
2215
|
}));
|
|
1712
|
-
case
|
|
2216
|
+
case 7:
|
|
2217
|
+
_context.prev = 7;
|
|
2218
|
+
_context.t0 = _context["catch"](0);
|
|
2219
|
+
_result = {
|
|
2220
|
+
error: 'network Error'
|
|
2221
|
+
};
|
|
2222
|
+
return _context.abrupt("return", callback(_result, function () {
|
|
2223
|
+
return _this2.subscribe(callback);
|
|
2224
|
+
}));
|
|
2225
|
+
case 11:
|
|
1713
2226
|
case "end":
|
|
1714
2227
|
return _context.stop();
|
|
1715
2228
|
}
|
|
1716
|
-
}, _callee, null, [[
|
|
2229
|
+
}, _callee, null, [[0, 7]]);
|
|
1717
2230
|
}))();
|
|
1718
2231
|
}
|
|
1719
2232
|
};
|
|
@@ -1728,6 +2241,8 @@ var RequestError = /*#__PURE__*/function (_Error) {
|
|
|
1728
2241
|
var _this;
|
|
1729
2242
|
_classCallCheck__default['default'](this, RequestError);
|
|
1730
2243
|
_this = _callSuper(this, RequestError, [message]);
|
|
2244
|
+
_defineProperty__default['default'](_this, "response", void 0);
|
|
2245
|
+
_defineProperty__default['default'](_this, "status", void 0);
|
|
1731
2246
|
_this.response = response;
|
|
1732
2247
|
_this.status = status;
|
|
1733
2248
|
return _this;
|
|
@@ -1738,57 +2253,67 @@ var RequestError = /*#__PURE__*/function (_Error) {
|
|
|
1738
2253
|
|
|
1739
2254
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1740
2255
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default['default'](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1741
|
-
|
|
1742
|
-
|
|
2256
|
+
|
|
2257
|
+
// If we can't infer any members at all, then return any.
|
|
1743
2258
|
|
|
1744
2259
|
/**
|
|
1745
|
-
*
|
|
2260
|
+
* @deprecated use DryRunResponse
|
|
1746
2261
|
*/
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
};
|
|
2262
|
+
|
|
2263
|
+
var mutexCounter = 0;
|
|
2264
|
+
var MUTEX_ERROR = 'Mutex has been changed';
|
|
1751
2265
|
function mutexPromise(promise) {
|
|
1752
|
-
return
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
_context.next = 4;
|
|
1760
|
-
return promise;
|
|
1761
|
-
case 4:
|
|
1762
|
-
_context.t1 = _context.sent;
|
|
1763
|
-
(0, _context.t0)(_context.t1);
|
|
1764
|
-
_context.next = 11;
|
|
1765
|
-
break;
|
|
1766
|
-
case 8:
|
|
1767
|
-
_context.prev = 8;
|
|
1768
|
-
_context.t2 = _context["catch"](0);
|
|
1769
|
-
if (_context.t2 !== MUTEX_ERROR) {
|
|
1770
|
-
reject(_context.t2);
|
|
1771
|
-
}
|
|
1772
|
-
case 11:
|
|
1773
|
-
case "end":
|
|
1774
|
-
return _context.stop();
|
|
1775
|
-
}
|
|
1776
|
-
}, _callee, null, [[0, 8]]);
|
|
1777
|
-
}));
|
|
1778
|
-
return function (_x, _x2) {
|
|
1779
|
-
return _ref.apply(this, arguments);
|
|
1780
|
-
};
|
|
1781
|
-
}());
|
|
2266
|
+
return promise.then(function (result) {
|
|
2267
|
+
return result;
|
|
2268
|
+
})["catch"](function (error) {
|
|
2269
|
+
if (error !== MUTEX_ERROR) {
|
|
2270
|
+
throw error;
|
|
2271
|
+
}
|
|
2272
|
+
});
|
|
1782
2273
|
}
|
|
2274
|
+
/**
|
|
2275
|
+
* Main class for accessing Cube API
|
|
2276
|
+
*/
|
|
1783
2277
|
var CubeApi = /*#__PURE__*/function () {
|
|
2278
|
+
/**
|
|
2279
|
+
* Creates an instance of the `CubeApi`. The API entry point.
|
|
2280
|
+
*
|
|
2281
|
+
* ```js
|
|
2282
|
+
* import cube from '@cubejs-client/core';
|
|
2283
|
+
* const cubeApi = cube(
|
|
2284
|
+
* 'CUBE-API-TOKEN',
|
|
2285
|
+
* { apiUrl: 'http://localhost:4000/cubejs-api/v1' }
|
|
2286
|
+
* );
|
|
2287
|
+
* ```
|
|
2288
|
+
*
|
|
2289
|
+
* You can also pass an async function or a promise that will resolve to the API token
|
|
2290
|
+
*
|
|
2291
|
+
* ```js
|
|
2292
|
+
* import cube from '@cubejs-client/core';
|
|
2293
|
+
* const cubeApi = cube(
|
|
2294
|
+
* async () => await Auth.getJwtToken(),
|
|
2295
|
+
* { apiUrl: 'http://localhost:4000/cubejs-api/v1' }
|
|
2296
|
+
* );
|
|
2297
|
+
* ```
|
|
2298
|
+
*/
|
|
1784
2299
|
function CubeApi(apiToken, options) {
|
|
1785
2300
|
_classCallCheck__default['default'](this, CubeApi);
|
|
1786
|
-
|
|
2301
|
+
_defineProperty__default['default'](this, "apiToken", void 0);
|
|
2302
|
+
_defineProperty__default['default'](this, "apiUrl", void 0);
|
|
2303
|
+
_defineProperty__default['default'](this, "method", void 0);
|
|
2304
|
+
_defineProperty__default['default'](this, "headers", void 0);
|
|
2305
|
+
_defineProperty__default['default'](this, "credentials", void 0);
|
|
2306
|
+
_defineProperty__default['default'](this, "transport", void 0);
|
|
2307
|
+
_defineProperty__default['default'](this, "pollInterval", void 0);
|
|
2308
|
+
_defineProperty__default['default'](this, "parseDateMeasures", void 0);
|
|
2309
|
+
_defineProperty__default['default'](this, "castNumerics", void 0);
|
|
2310
|
+
_defineProperty__default['default'](this, "networkErrorRetries", void 0);
|
|
2311
|
+
_defineProperty__default['default'](this, "updateAuthorizationPromise", void 0);
|
|
2312
|
+
if (apiToken && !Array.isArray(apiToken) && _typeof__default['default'](apiToken) === 'object') {
|
|
1787
2313
|
options = apiToken;
|
|
1788
2314
|
apiToken = undefined;
|
|
1789
2315
|
}
|
|
1790
|
-
options
|
|
1791
|
-
if (!options.transport && !options.apiUrl) {
|
|
2316
|
+
if (!options || !options.transport && !options.apiUrl) {
|
|
1792
2317
|
throw new Error('The `apiUrl` option is required');
|
|
1793
2318
|
}
|
|
1794
2319
|
this.apiToken = apiToken;
|
|
@@ -1797,11 +2322,13 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
1797
2322
|
this.headers = options.headers || {};
|
|
1798
2323
|
this.credentials = options.credentials;
|
|
1799
2324
|
this.transport = options.transport || new HttpTransport({
|
|
1800
|
-
authorization: typeof apiToken === '
|
|
2325
|
+
authorization: typeof apiToken === 'string' ? apiToken : undefined,
|
|
1801
2326
|
apiUrl: this.apiUrl,
|
|
1802
2327
|
method: this.method,
|
|
1803
2328
|
headers: this.headers,
|
|
1804
|
-
credentials: this.credentials
|
|
2329
|
+
credentials: this.credentials,
|
|
2330
|
+
fetchTimeout: options.fetchTimeout,
|
|
2331
|
+
signal: options.signal
|
|
1805
2332
|
});
|
|
1806
2333
|
this.pollInterval = options.pollInterval || 5;
|
|
1807
2334
|
this.parseDateMeasures = options.parseDateMeasures;
|
|
@@ -1836,218 +2363,225 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
1836
2363
|
var skipAuthorizationUpdate = true;
|
|
1837
2364
|
var unsubscribed = false;
|
|
1838
2365
|
var checkMutex = /*#__PURE__*/function () {
|
|
1839
|
-
var
|
|
2366
|
+
var _ref = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
|
|
1840
2367
|
var requestInstance;
|
|
1841
|
-
return _regeneratorRuntime__default['default'].wrap(function
|
|
1842
|
-
while (1) switch (
|
|
2368
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
|
|
2369
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1843
2370
|
case 0:
|
|
1844
|
-
|
|
2371
|
+
_context.next = 2;
|
|
1845
2372
|
return requestPromise;
|
|
1846
2373
|
case 2:
|
|
1847
|
-
requestInstance =
|
|
1848
|
-
if (!(options.mutexObj && options.mutexObj[mutexKey] !== mutexValue)) {
|
|
1849
|
-
|
|
2374
|
+
requestInstance = _context.sent;
|
|
2375
|
+
if (!(options && options.mutexObj && options.mutexObj[mutexKey] !== mutexValue)) {
|
|
2376
|
+
_context.next = 9;
|
|
1850
2377
|
break;
|
|
1851
2378
|
}
|
|
1852
2379
|
unsubscribed = true;
|
|
1853
2380
|
if (!requestInstance.unsubscribe) {
|
|
1854
|
-
|
|
2381
|
+
_context.next = 8;
|
|
1855
2382
|
break;
|
|
1856
2383
|
}
|
|
1857
|
-
|
|
2384
|
+
_context.next = 8;
|
|
1858
2385
|
return requestInstance.unsubscribe();
|
|
1859
2386
|
case 8:
|
|
1860
2387
|
throw MUTEX_ERROR;
|
|
1861
2388
|
case 9:
|
|
1862
2389
|
case "end":
|
|
1863
|
-
return
|
|
2390
|
+
return _context.stop();
|
|
1864
2391
|
}
|
|
1865
|
-
},
|
|
2392
|
+
}, _callee);
|
|
1866
2393
|
}));
|
|
1867
2394
|
return function checkMutex() {
|
|
1868
|
-
return
|
|
2395
|
+
return _ref.apply(this, arguments);
|
|
1869
2396
|
};
|
|
1870
2397
|
}();
|
|
1871
2398
|
var networkRetries = this.networkErrorRetries;
|
|
1872
2399
|
var loadImpl = /*#__PURE__*/function () {
|
|
1873
|
-
var
|
|
1874
|
-
var
|
|
1875
|
-
|
|
1876
|
-
|
|
2400
|
+
var _ref2 = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4(response, next) {
|
|
2401
|
+
var _options2, _response$error, _options5;
|
|
2402
|
+
var requestInstance, subscribeNext, continueWait, body, text, _options3, _options4, _error, result;
|
|
2403
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
|
|
2404
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
1877
2405
|
case 0:
|
|
1878
|
-
|
|
2406
|
+
_context4.next = 2;
|
|
1879
2407
|
return requestPromise;
|
|
1880
2408
|
case 2:
|
|
1881
|
-
requestInstance =
|
|
2409
|
+
requestInstance = _context4.sent;
|
|
1882
2410
|
subscribeNext = /*#__PURE__*/function () {
|
|
1883
|
-
var
|
|
1884
|
-
|
|
1885
|
-
|
|
2411
|
+
var _ref3 = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
|
|
2412
|
+
var _options;
|
|
2413
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
|
|
2414
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
1886
2415
|
case 0:
|
|
1887
|
-
if (!(options.subscribe && !unsubscribed)) {
|
|
1888
|
-
|
|
2416
|
+
if (!((_options = options) !== null && _options !== void 0 && _options.subscribe && !unsubscribed)) {
|
|
2417
|
+
_context2.next = 8;
|
|
1889
2418
|
break;
|
|
1890
2419
|
}
|
|
1891
2420
|
if (!requestInstance.unsubscribe) {
|
|
1892
|
-
|
|
2421
|
+
_context2.next = 5;
|
|
1893
2422
|
break;
|
|
1894
2423
|
}
|
|
1895
|
-
return
|
|
2424
|
+
return _context2.abrupt("return", next());
|
|
1896
2425
|
case 5:
|
|
1897
|
-
|
|
2426
|
+
_context2.next = 7;
|
|
1898
2427
|
return new Promise(function (resolve) {
|
|
1899
2428
|
return setTimeout(function () {
|
|
1900
2429
|
return resolve();
|
|
1901
2430
|
}, _this.pollInterval * 1000);
|
|
1902
2431
|
});
|
|
1903
2432
|
case 7:
|
|
1904
|
-
return
|
|
2433
|
+
return _context2.abrupt("return", next());
|
|
1905
2434
|
case 8:
|
|
1906
|
-
return
|
|
2435
|
+
return _context2.abrupt("return", null);
|
|
1907
2436
|
case 9:
|
|
1908
2437
|
case "end":
|
|
1909
|
-
return
|
|
2438
|
+
return _context2.stop();
|
|
1910
2439
|
}
|
|
1911
|
-
},
|
|
2440
|
+
}, _callee2);
|
|
1912
2441
|
}));
|
|
1913
2442
|
return function subscribeNext() {
|
|
1914
|
-
return
|
|
2443
|
+
return _ref3.apply(this, arguments);
|
|
1915
2444
|
};
|
|
1916
2445
|
}();
|
|
1917
2446
|
continueWait = /*#__PURE__*/function () {
|
|
1918
|
-
var
|
|
1919
|
-
|
|
1920
|
-
|
|
2447
|
+
var _ref4 = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
|
|
2448
|
+
var wait,
|
|
2449
|
+
_args3 = arguments;
|
|
2450
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
|
|
2451
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
1921
2452
|
case 0:
|
|
2453
|
+
wait = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
|
|
1922
2454
|
if (unsubscribed) {
|
|
1923
|
-
|
|
2455
|
+
_context3.next = 6;
|
|
1924
2456
|
break;
|
|
1925
2457
|
}
|
|
1926
2458
|
if (!wait) {
|
|
1927
|
-
|
|
2459
|
+
_context3.next = 5;
|
|
1928
2460
|
break;
|
|
1929
2461
|
}
|
|
1930
|
-
|
|
2462
|
+
_context3.next = 5;
|
|
1931
2463
|
return new Promise(function (resolve) {
|
|
1932
2464
|
return setTimeout(function () {
|
|
1933
2465
|
return resolve();
|
|
1934
2466
|
}, _this.pollInterval * 1000);
|
|
1935
2467
|
});
|
|
1936
|
-
case 4:
|
|
1937
|
-
return _context4.abrupt("return", next());
|
|
1938
2468
|
case 5:
|
|
1939
|
-
return
|
|
2469
|
+
return _context3.abrupt("return", next());
|
|
1940
2470
|
case 6:
|
|
2471
|
+
return _context3.abrupt("return", null);
|
|
2472
|
+
case 7:
|
|
1941
2473
|
case "end":
|
|
1942
|
-
return
|
|
2474
|
+
return _context3.stop();
|
|
1943
2475
|
}
|
|
1944
|
-
},
|
|
2476
|
+
}, _callee3);
|
|
1945
2477
|
}));
|
|
1946
|
-
return function continueWait(
|
|
1947
|
-
return
|
|
2478
|
+
return function continueWait() {
|
|
2479
|
+
return _ref4.apply(this, arguments);
|
|
1948
2480
|
};
|
|
1949
2481
|
}();
|
|
1950
|
-
if (!(options.subscribe && !skipAuthorizationUpdate)) {
|
|
1951
|
-
|
|
2482
|
+
if (!((_options2 = options) !== null && _options2 !== void 0 && _options2.subscribe && !skipAuthorizationUpdate)) {
|
|
2483
|
+
_context4.next = 8;
|
|
1952
2484
|
break;
|
|
1953
2485
|
}
|
|
1954
|
-
|
|
2486
|
+
_context4.next = 8;
|
|
1955
2487
|
return _this.updateTransportAuthorization();
|
|
1956
2488
|
case 8:
|
|
1957
2489
|
skipAuthorizationUpdate = false;
|
|
1958
|
-
if (!(response.status === 502 ||
|
|
1959
|
-
|
|
2490
|
+
if (!('status' in response && response.status === 502 || 'error' in response && ((_response$error = response.error) === null || _response$error === void 0 ? void 0 : _response$error.toLowerCase()) === 'network error' && --networkRetries >= 0)) {
|
|
2491
|
+
_context4.next = 13;
|
|
1960
2492
|
break;
|
|
1961
2493
|
}
|
|
1962
|
-
|
|
2494
|
+
_context4.next = 12;
|
|
1963
2495
|
return checkMutex();
|
|
1964
2496
|
case 12:
|
|
1965
|
-
return
|
|
2497
|
+
return _context4.abrupt("return", continueWait(true));
|
|
1966
2498
|
case 13:
|
|
2499
|
+
// From here we're sure that response is only fetch Response
|
|
2500
|
+
response = response;
|
|
1967
2501
|
body = {};
|
|
1968
2502
|
text = '';
|
|
1969
|
-
|
|
1970
|
-
|
|
2503
|
+
_context4.prev = 16;
|
|
2504
|
+
_context4.next = 19;
|
|
1971
2505
|
return response.text();
|
|
1972
|
-
case
|
|
1973
|
-
text =
|
|
2506
|
+
case 19:
|
|
2507
|
+
text = _context4.sent;
|
|
1974
2508
|
body = JSON.parse(text);
|
|
1975
|
-
|
|
2509
|
+
_context4.next = 26;
|
|
1976
2510
|
break;
|
|
1977
|
-
case
|
|
1978
|
-
|
|
1979
|
-
|
|
2511
|
+
case 23:
|
|
2512
|
+
_context4.prev = 23;
|
|
2513
|
+
_context4.t0 = _context4["catch"](16);
|
|
1980
2514
|
body.error = text;
|
|
1981
|
-
case
|
|
2515
|
+
case 26:
|
|
1982
2516
|
if (!(body.error === 'Continue wait')) {
|
|
1983
|
-
|
|
2517
|
+
_context4.next = 31;
|
|
1984
2518
|
break;
|
|
1985
2519
|
}
|
|
1986
|
-
|
|
2520
|
+
_context4.next = 29;
|
|
1987
2521
|
return checkMutex();
|
|
1988
|
-
case
|
|
1989
|
-
if (options.progressCallback) {
|
|
2522
|
+
case 29:
|
|
2523
|
+
if ((_options3 = options) !== null && _options3 !== void 0 && _options3.progressCallback) {
|
|
1990
2524
|
options.progressCallback(new ProgressResult(body));
|
|
1991
2525
|
}
|
|
1992
|
-
return
|
|
1993
|
-
case
|
|
2526
|
+
return _context4.abrupt("return", continueWait());
|
|
2527
|
+
case 31:
|
|
1994
2528
|
if (!(response.status !== 200)) {
|
|
1995
|
-
|
|
2529
|
+
_context4.next = 44;
|
|
1996
2530
|
break;
|
|
1997
2531
|
}
|
|
1998
|
-
|
|
2532
|
+
_context4.next = 34;
|
|
1999
2533
|
return checkMutex();
|
|
2000
|
-
case
|
|
2001
|
-
if (!(!options.subscribe && requestInstance.unsubscribe)) {
|
|
2002
|
-
|
|
2534
|
+
case 34:
|
|
2535
|
+
if (!(!((_options4 = options) !== null && _options4 !== void 0 && _options4.subscribe) && requestInstance.unsubscribe)) {
|
|
2536
|
+
_context4.next = 37;
|
|
2003
2537
|
break;
|
|
2004
2538
|
}
|
|
2005
|
-
|
|
2539
|
+
_context4.next = 37;
|
|
2006
2540
|
return requestInstance.unsubscribe();
|
|
2007
|
-
case
|
|
2008
|
-
|
|
2541
|
+
case 37:
|
|
2542
|
+
_error = new RequestError(body.error || '', body, response.status);
|
|
2009
2543
|
if (!callback) {
|
|
2010
|
-
|
|
2544
|
+
_context4.next = 42;
|
|
2011
2545
|
break;
|
|
2012
2546
|
}
|
|
2013
|
-
callback(
|
|
2014
|
-
|
|
2547
|
+
callback(_error);
|
|
2548
|
+
_context4.next = 43;
|
|
2015
2549
|
break;
|
|
2016
|
-
case 41:
|
|
2017
|
-
throw error;
|
|
2018
2550
|
case 42:
|
|
2019
|
-
|
|
2551
|
+
throw _error;
|
|
2020
2552
|
case 43:
|
|
2021
|
-
|
|
2553
|
+
return _context4.abrupt("return", subscribeNext());
|
|
2554
|
+
case 44:
|
|
2555
|
+
_context4.next = 46;
|
|
2022
2556
|
return checkMutex();
|
|
2023
|
-
case
|
|
2024
|
-
if (!(!options.subscribe && requestInstance.unsubscribe)) {
|
|
2025
|
-
|
|
2557
|
+
case 46:
|
|
2558
|
+
if (!(!((_options5 = options) !== null && _options5 !== void 0 && _options5.subscribe) && requestInstance.unsubscribe)) {
|
|
2559
|
+
_context4.next = 49;
|
|
2026
2560
|
break;
|
|
2027
2561
|
}
|
|
2028
|
-
|
|
2562
|
+
_context4.next = 49;
|
|
2029
2563
|
return requestInstance.unsubscribe();
|
|
2030
|
-
case
|
|
2564
|
+
case 49:
|
|
2031
2565
|
result = toResult(body);
|
|
2032
2566
|
if (!callback) {
|
|
2033
|
-
|
|
2567
|
+
_context4.next = 54;
|
|
2034
2568
|
break;
|
|
2035
2569
|
}
|
|
2036
2570
|
callback(null, result);
|
|
2037
|
-
|
|
2571
|
+
_context4.next = 55;
|
|
2038
2572
|
break;
|
|
2039
|
-
case 53:
|
|
2040
|
-
return _context5.abrupt("return", result);
|
|
2041
2573
|
case 54:
|
|
2042
|
-
return
|
|
2574
|
+
return _context4.abrupt("return", result);
|
|
2043
2575
|
case 55:
|
|
2576
|
+
return _context4.abrupt("return", subscribeNext());
|
|
2577
|
+
case 56:
|
|
2044
2578
|
case "end":
|
|
2045
|
-
return
|
|
2579
|
+
return _context4.stop();
|
|
2046
2580
|
}
|
|
2047
|
-
},
|
|
2581
|
+
}, _callee4, null, [[16, 23]]);
|
|
2048
2582
|
}));
|
|
2049
|
-
return function loadImpl(
|
|
2050
|
-
return
|
|
2583
|
+
return function loadImpl(_x, _x2) {
|
|
2584
|
+
return _ref2.apply(this, arguments);
|
|
2051
2585
|
};
|
|
2052
2586
|
}();
|
|
2053
2587
|
var promise = requestPromise.then(function (requestInstance) {
|
|
@@ -2056,28 +2590,28 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2056
2590
|
if (callback) {
|
|
2057
2591
|
return {
|
|
2058
2592
|
unsubscribe: function () {
|
|
2059
|
-
var _unsubscribe = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function
|
|
2593
|
+
var _unsubscribe = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5() {
|
|
2060
2594
|
var requestInstance;
|
|
2061
|
-
return _regeneratorRuntime__default['default'].wrap(function
|
|
2062
|
-
while (1) switch (
|
|
2595
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
|
|
2596
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
2063
2597
|
case 0:
|
|
2064
|
-
|
|
2598
|
+
_context5.next = 2;
|
|
2065
2599
|
return requestPromise;
|
|
2066
2600
|
case 2:
|
|
2067
|
-
requestInstance =
|
|
2601
|
+
requestInstance = _context5.sent;
|
|
2068
2602
|
unsubscribed = true;
|
|
2069
2603
|
if (!requestInstance.unsubscribe) {
|
|
2070
|
-
|
|
2604
|
+
_context5.next = 6;
|
|
2071
2605
|
break;
|
|
2072
2606
|
}
|
|
2073
|
-
return
|
|
2607
|
+
return _context5.abrupt("return", requestInstance.unsubscribe());
|
|
2074
2608
|
case 6:
|
|
2075
|
-
return
|
|
2609
|
+
return _context5.abrupt("return", null);
|
|
2076
2610
|
case 7:
|
|
2077
2611
|
case "end":
|
|
2078
|
-
return
|
|
2612
|
+
return _context5.stop();
|
|
2079
2613
|
}
|
|
2080
|
-
},
|
|
2614
|
+
}, _callee5);
|
|
2081
2615
|
}));
|
|
2082
2616
|
function unsubscribe() {
|
|
2083
2617
|
return _unsubscribe.apply(this, arguments);
|
|
@@ -2092,66 +2626,57 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2092
2626
|
}, {
|
|
2093
2627
|
key: "updateTransportAuthorization",
|
|
2094
2628
|
value: function () {
|
|
2095
|
-
var _updateTransportAuthorization = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function
|
|
2629
|
+
var _updateTransportAuthorization = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee7() {
|
|
2096
2630
|
var _this2 = this;
|
|
2097
|
-
|
|
2098
|
-
|
|
2631
|
+
var tokenFetcher, promise;
|
|
2632
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee7$(_context7) {
|
|
2633
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
2099
2634
|
case 0:
|
|
2100
2635
|
if (!this.updateAuthorizationPromise) {
|
|
2101
|
-
|
|
2636
|
+
_context7.next = 4;
|
|
2102
2637
|
break;
|
|
2103
2638
|
}
|
|
2104
|
-
|
|
2639
|
+
_context7.next = 3;
|
|
2105
2640
|
return this.updateAuthorizationPromise;
|
|
2106
2641
|
case 3:
|
|
2107
|
-
return
|
|
2642
|
+
return _context7.abrupt("return");
|
|
2108
2643
|
case 4:
|
|
2109
|
-
|
|
2110
|
-
|
|
2644
|
+
tokenFetcher = this.apiToken;
|
|
2645
|
+
if (!(typeof tokenFetcher === 'function')) {
|
|
2646
|
+
_context7.next = 10;
|
|
2111
2647
|
break;
|
|
2112
2648
|
}
|
|
2113
|
-
|
|
2114
|
-
var
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
return _context7.stop();
|
|
2141
|
-
}
|
|
2142
|
-
}, _callee7, null, [[0, 8, 11, 14]]);
|
|
2143
|
-
}));
|
|
2144
|
-
return function (_x6, _x7) {
|
|
2145
|
-
return _ref6.apply(this, arguments);
|
|
2146
|
-
};
|
|
2147
|
-
}());
|
|
2148
|
-
_context8.next = 8;
|
|
2149
|
-
return this.updateAuthorizationPromise;
|
|
2150
|
-
case 8:
|
|
2649
|
+
promise = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee6() {
|
|
2650
|
+
var token;
|
|
2651
|
+
return _regeneratorRuntime__default['default'].wrap(function _callee6$(_context6) {
|
|
2652
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
2653
|
+
case 0:
|
|
2654
|
+
_context6.prev = 0;
|
|
2655
|
+
_context6.next = 3;
|
|
2656
|
+
return tokenFetcher();
|
|
2657
|
+
case 3:
|
|
2658
|
+
token = _context6.sent;
|
|
2659
|
+
if (_this2.transport.authorization !== token) {
|
|
2660
|
+
_this2.transport.authorization = token;
|
|
2661
|
+
}
|
|
2662
|
+
case 5:
|
|
2663
|
+
_context6.prev = 5;
|
|
2664
|
+
_this2.updateAuthorizationPromise = null;
|
|
2665
|
+
return _context6.finish(5);
|
|
2666
|
+
case 8:
|
|
2667
|
+
case "end":
|
|
2668
|
+
return _context6.stop();
|
|
2669
|
+
}
|
|
2670
|
+
}, _callee6, null, [[0,, 5, 8]]);
|
|
2671
|
+
}))();
|
|
2672
|
+
this.updateAuthorizationPromise = promise;
|
|
2673
|
+
_context7.next = 10;
|
|
2674
|
+
return promise;
|
|
2675
|
+
case 10:
|
|
2151
2676
|
case "end":
|
|
2152
|
-
return
|
|
2677
|
+
return _context7.stop();
|
|
2153
2678
|
}
|
|
2154
|
-
},
|
|
2679
|
+
}, _callee7, this);
|
|
2155
2680
|
}));
|
|
2156
2681
|
function updateTransportAuthorization() {
|
|
2157
2682
|
return _updateTransportAuthorization.apply(this, arguments);
|
|
@@ -2160,17 +2685,13 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2160
2685
|
}()
|
|
2161
2686
|
/**
|
|
2162
2687
|
* Add system properties to a query object.
|
|
2163
|
-
* @param {Query} query
|
|
2164
|
-
* @param {string} responseFormat
|
|
2165
|
-
* @returns {void}
|
|
2166
|
-
* @private
|
|
2167
2688
|
*/
|
|
2168
2689
|
}, {
|
|
2169
2690
|
key: "patchQueryInternal",
|
|
2170
2691
|
value: function patchQueryInternal(query, responseFormat) {
|
|
2171
|
-
if (responseFormat ===
|
|
2692
|
+
if (responseFormat === 'compact' && query.responseFormat !== 'compact') {
|
|
2172
2693
|
return _objectSpread(_objectSpread({}, query), {}, {
|
|
2173
|
-
responseFormat:
|
|
2694
|
+
responseFormat: 'compact'
|
|
2174
2695
|
});
|
|
2175
2696
|
} else {
|
|
2176
2697
|
return query;
|
|
@@ -2180,26 +2701,23 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2180
2701
|
/**
|
|
2181
2702
|
* Process result fetched from the gateway#load method according
|
|
2182
2703
|
* to the network protocol.
|
|
2183
|
-
* @param {*} response
|
|
2184
|
-
* @returns ResultSet
|
|
2185
|
-
* @private
|
|
2186
2704
|
*/
|
|
2187
2705
|
}, {
|
|
2188
2706
|
key: "loadResponseInternal",
|
|
2189
2707
|
value: function loadResponseInternal(response) {
|
|
2190
2708
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2191
2709
|
if (response.results.length) {
|
|
2192
|
-
if (options.castNumerics) {
|
|
2710
|
+
if (options !== null && options !== void 0 && options.castNumerics) {
|
|
2193
2711
|
response.results.forEach(function (result) {
|
|
2194
|
-
var numericMembers = Object.entries(_objectSpread(_objectSpread({}, result.annotation.measures), result.annotation.dimensions)).
|
|
2195
|
-
var
|
|
2196
|
-
k =
|
|
2197
|
-
v =
|
|
2712
|
+
var numericMembers = Object.entries(_objectSpread(_objectSpread({}, result.annotation.measures), result.annotation.dimensions)).reduce(function (acc, _ref6) {
|
|
2713
|
+
var _ref7 = _slicedToArray__default['default'](_ref6, 2),
|
|
2714
|
+
k = _ref7[0],
|
|
2715
|
+
v = _ref7[1];
|
|
2198
2716
|
if (v.type === 'number') {
|
|
2199
|
-
|
|
2717
|
+
acc.push(k);
|
|
2200
2718
|
}
|
|
2201
|
-
return
|
|
2202
|
-
})
|
|
2719
|
+
return acc;
|
|
2720
|
+
}, []);
|
|
2203
2721
|
result.data = result.data.map(function (row) {
|
|
2204
2722
|
numericMembers.forEach(function (key) {
|
|
2205
2723
|
if (row[key] != null) {
|
|
@@ -2210,12 +2728,15 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2210
2728
|
});
|
|
2211
2729
|
});
|
|
2212
2730
|
}
|
|
2213
|
-
if (response.results[0].query.responseFormat && response.results[0].query.responseFormat ===
|
|
2731
|
+
if (response.results[0].query.responseFormat && response.results[0].query.responseFormat === 'compact') {
|
|
2214
2732
|
response.results.forEach(function (result, j) {
|
|
2215
2733
|
var data = [];
|
|
2216
|
-
result.data
|
|
2734
|
+
var _ref8 = result.data,
|
|
2735
|
+
dataset = _ref8.dataset,
|
|
2736
|
+
members = _ref8.members;
|
|
2737
|
+
dataset.forEach(function (r) {
|
|
2217
2738
|
var row = {};
|
|
2218
|
-
|
|
2739
|
+
members.forEach(function (m, i) {
|
|
2219
2740
|
row[m] = r[i];
|
|
2220
2741
|
});
|
|
2221
2742
|
data.push(row);
|
|
@@ -2230,65 +2751,136 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2230
2751
|
}
|
|
2231
2752
|
}, {
|
|
2232
2753
|
key: "load",
|
|
2233
|
-
value:
|
|
2754
|
+
value:
|
|
2755
|
+
/**
|
|
2756
|
+
* Fetch data for the passed `query`.
|
|
2757
|
+
*
|
|
2758
|
+
* ```js
|
|
2759
|
+
* import cube from '@cubejs-client/core';
|
|
2760
|
+
* import Chart from 'chart.js';
|
|
2761
|
+
* import chartjsConfig from './toChartjsData';
|
|
2762
|
+
*
|
|
2763
|
+
* const cubeApi = cube('CUBEJS_TOKEN');
|
|
2764
|
+
*
|
|
2765
|
+
* const resultSet = await cubeApi.load({
|
|
2766
|
+
* measures: ['Stories.count'],
|
|
2767
|
+
* timeDimensions: [{
|
|
2768
|
+
* dimension: 'Stories.time',
|
|
2769
|
+
* dateRange: ['2015-01-01', '2015-12-31'],
|
|
2770
|
+
* granularity: 'month'
|
|
2771
|
+
* }]
|
|
2772
|
+
* });
|
|
2773
|
+
*
|
|
2774
|
+
* const context = document.getElementById('myChart');
|
|
2775
|
+
* new Chart(context, chartjsConfig(resultSet));
|
|
2776
|
+
* ```
|
|
2777
|
+
* @param query - [Query object](/product/apis-integrations/rest-api/query-format)
|
|
2778
|
+
* @param options
|
|
2779
|
+
* @param callback
|
|
2780
|
+
* @param responseFormat
|
|
2781
|
+
*/
|
|
2782
|
+
function load(query, options, callback) {
|
|
2234
2783
|
var _this3 = this;
|
|
2235
|
-
var responseFormat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] :
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
if (Array.isArray(query)) {
|
|
2241
|
-
query = query.map(function (q) {
|
|
2242
|
-
return _this3.patchQueryInternal(q, ResultType.COMPACT);
|
|
2243
|
-
});
|
|
2244
|
-
} else {
|
|
2245
|
-
query = this.patchQueryInternal(query, ResultType.COMPACT);
|
|
2246
|
-
}
|
|
2247
|
-
}
|
|
2784
|
+
var responseFormat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'default';
|
|
2785
|
+
var _this$prepareQueryOpt = this.prepareQueryOptions(query, options, responseFormat);
|
|
2786
|
+
var _this$prepareQueryOpt2 = _slicedToArray__default['default'](_this$prepareQueryOpt, 2);
|
|
2787
|
+
query = _this$prepareQueryOpt2[0];
|
|
2788
|
+
options = _this$prepareQueryOpt2[1];
|
|
2248
2789
|
return this.loadMethod(function () {
|
|
2790
|
+
var _options6;
|
|
2249
2791
|
return _this3.request('load', {
|
|
2250
2792
|
query: query,
|
|
2251
|
-
queryType: 'multi'
|
|
2793
|
+
queryType: 'multi',
|
|
2794
|
+
signal: (_options6 = options) === null || _options6 === void 0 ? void 0 : _options6.signal
|
|
2252
2795
|
});
|
|
2253
2796
|
}, function (response) {
|
|
2254
2797
|
return _this3.loadResponseInternal(response, options);
|
|
2255
2798
|
}, options, callback);
|
|
2256
2799
|
}
|
|
2257
2800
|
}, {
|
|
2258
|
-
key: "
|
|
2259
|
-
value: function
|
|
2801
|
+
key: "prepareQueryOptions",
|
|
2802
|
+
value: function prepareQueryOptions(query, options) {
|
|
2260
2803
|
var _this4 = this;
|
|
2261
|
-
var responseFormat = arguments.length >
|
|
2804
|
+
var responseFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';
|
|
2262
2805
|
options = _objectSpread({
|
|
2263
2806
|
castNumerics: this.castNumerics
|
|
2264
2807
|
}, options);
|
|
2265
|
-
if (responseFormat ===
|
|
2808
|
+
if (responseFormat === 'compact') {
|
|
2266
2809
|
if (Array.isArray(query)) {
|
|
2267
|
-
|
|
2268
|
-
return _this4.patchQueryInternal(q,
|
|
2810
|
+
var patched = query.map(function (q) {
|
|
2811
|
+
return _this4.patchQueryInternal(q, 'compact');
|
|
2269
2812
|
});
|
|
2813
|
+
return [patched, options];
|
|
2270
2814
|
} else {
|
|
2271
|
-
|
|
2815
|
+
var _patched = this.patchQueryInternal(query, 'compact');
|
|
2816
|
+
return [_patched, options];
|
|
2272
2817
|
}
|
|
2273
2818
|
}
|
|
2819
|
+
return [query, options];
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
/**
|
|
2823
|
+
* Allows you to fetch data and receive updates over time. See [Real-Time Data Fetch](/product/apis-integrations/rest-api/real-time-data-fetch)
|
|
2824
|
+
*
|
|
2825
|
+
* ```js
|
|
2826
|
+
* // Subscribe to a query's updates
|
|
2827
|
+
* const subscription = await cubeApi.subscribe(
|
|
2828
|
+
* {
|
|
2829
|
+
* measures: ['Logs.count'],
|
|
2830
|
+
* timeDimensions: [
|
|
2831
|
+
* {
|
|
2832
|
+
* dimension: 'Logs.time',
|
|
2833
|
+
* granularity: 'hour',
|
|
2834
|
+
* dateRange: 'last 1440 minutes',
|
|
2835
|
+
* },
|
|
2836
|
+
* ],
|
|
2837
|
+
* },
|
|
2838
|
+
* options,
|
|
2839
|
+
* (error, resultSet) => {
|
|
2840
|
+
* if (!error) {
|
|
2841
|
+
* // handle the update
|
|
2842
|
+
* }
|
|
2843
|
+
* }
|
|
2844
|
+
* );
|
|
2845
|
+
*
|
|
2846
|
+
* // Unsubscribe from a query's updates
|
|
2847
|
+
* subscription.unsubscribe();
|
|
2848
|
+
* ```
|
|
2849
|
+
*/
|
|
2850
|
+
}, {
|
|
2851
|
+
key: "subscribe",
|
|
2852
|
+
value: function subscribe(query, options, callback) {
|
|
2853
|
+
var _this5 = this;
|
|
2854
|
+
var responseFormat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'default';
|
|
2855
|
+
var _this$prepareQueryOpt3 = this.prepareQueryOptions(query, options, responseFormat);
|
|
2856
|
+
var _this$prepareQueryOpt4 = _slicedToArray__default['default'](_this$prepareQueryOpt3, 2);
|
|
2857
|
+
query = _this$prepareQueryOpt4[0];
|
|
2858
|
+
options = _this$prepareQueryOpt4[1];
|
|
2274
2859
|
return this.loadMethod(function () {
|
|
2275
|
-
|
|
2860
|
+
var _options7;
|
|
2861
|
+
return _this5.request('subscribe', {
|
|
2276
2862
|
query: query,
|
|
2277
|
-
queryType: 'multi'
|
|
2863
|
+
queryType: 'multi',
|
|
2864
|
+
signal: (_options7 = options) === null || _options7 === void 0 ? void 0 : _options7.signal
|
|
2278
2865
|
});
|
|
2279
2866
|
}, function (response) {
|
|
2280
|
-
return
|
|
2867
|
+
return _this5.loadResponseInternal(response, options);
|
|
2281
2868
|
}, _objectSpread(_objectSpread({}, options), {}, {
|
|
2282
2869
|
subscribe: true
|
|
2283
2870
|
}), callback);
|
|
2284
2871
|
}
|
|
2285
2872
|
}, {
|
|
2286
2873
|
key: "sql",
|
|
2287
|
-
value:
|
|
2288
|
-
|
|
2874
|
+
value:
|
|
2875
|
+
/**
|
|
2876
|
+
* Get generated SQL string for the given `query`.
|
|
2877
|
+
*/
|
|
2878
|
+
function sql(query, options, callback) {
|
|
2879
|
+
var _this6 = this;
|
|
2289
2880
|
return this.loadMethod(function () {
|
|
2290
|
-
return
|
|
2291
|
-
query: query
|
|
2881
|
+
return _this6.request('sql', {
|
|
2882
|
+
query: query,
|
|
2883
|
+
signal: options === null || options === void 0 ? void 0 : options.signal
|
|
2292
2884
|
});
|
|
2293
2885
|
}, function (response) {
|
|
2294
2886
|
return Array.isArray(response) ? response.map(function (body) {
|
|
@@ -2298,21 +2890,32 @@ var CubeApi = /*#__PURE__*/function () {
|
|
|
2298
2890
|
}
|
|
2299
2891
|
}, {
|
|
2300
2892
|
key: "meta",
|
|
2301
|
-
value:
|
|
2302
|
-
|
|
2893
|
+
value:
|
|
2894
|
+
/**
|
|
2895
|
+
* Get meta description of cubes available for querying.
|
|
2896
|
+
*/
|
|
2897
|
+
function meta(options, callback) {
|
|
2898
|
+
var _this7 = this;
|
|
2303
2899
|
return this.loadMethod(function () {
|
|
2304
|
-
return
|
|
2900
|
+
return _this7.request('meta', {
|
|
2901
|
+
signal: options === null || options === void 0 ? void 0 : options.signal
|
|
2902
|
+
});
|
|
2305
2903
|
}, function (body) {
|
|
2306
2904
|
return new Meta(body);
|
|
2307
2905
|
}, options, callback);
|
|
2308
2906
|
}
|
|
2309
2907
|
}, {
|
|
2310
2908
|
key: "dryRun",
|
|
2311
|
-
value:
|
|
2312
|
-
|
|
2909
|
+
value:
|
|
2910
|
+
/**
|
|
2911
|
+
* Get query related meta without query execution
|
|
2912
|
+
*/
|
|
2913
|
+
function dryRun(query, options, callback) {
|
|
2914
|
+
var _this8 = this;
|
|
2313
2915
|
return this.loadMethod(function () {
|
|
2314
|
-
return
|
|
2315
|
-
query: query
|
|
2916
|
+
return _this8.request('dry-run', {
|
|
2917
|
+
query: query,
|
|
2918
|
+
signal: options === null || options === void 0 ? void 0 : options.signal
|
|
2316
2919
|
});
|
|
2317
2920
|
}, function (response) {
|
|
2318
2921
|
return response;
|
|
@@ -2331,8 +2934,10 @@ exports.GRANULARITIES = GRANULARITIES;
|
|
|
2331
2934
|
exports.HttpTransport = HttpTransport;
|
|
2332
2935
|
exports.LocalDateRegex = LocalDateRegex;
|
|
2333
2936
|
exports.Meta = Meta;
|
|
2937
|
+
exports.ProgressResult = ProgressResult;
|
|
2334
2938
|
exports.RequestError = RequestError;
|
|
2335
2939
|
exports.ResultSet = ResultSet;
|
|
2940
|
+
exports.SqlQuery = SqlQuery;
|
|
2336
2941
|
exports.TIME_SERIES = TIME_SERIES;
|
|
2337
2942
|
exports.addInterval = addInterval;
|
|
2338
2943
|
exports.aliasSeries = aliasSeries;
|
|
@@ -2357,4 +2962,4 @@ exports.removeEmptyQueryFields = removeEmptyQueryFields;
|
|
|
2357
2962
|
exports.subtractInterval = subtractInterval;
|
|
2358
2963
|
exports.timeSeriesFromCustomInterval = timeSeriesFromCustomInterval;
|
|
2359
2964
|
exports.validateQuery = validateQuery;
|
|
2360
|
-
//# sourceMappingURL=cubejs-client-core.js.map
|
|
2965
|
+
//# sourceMappingURL=cubejs-client-core.cjs.js.map
|