@cubejs-client/core 0.31.15 → 0.31.30
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/README.md +1 -1
- package/dist/cubejs-client-core.esm.js +3 -0
- package/dist/cubejs-client-core.esm.js.map +1 -1
- package/dist/cubejs-client-core.js +5 -0
- package/dist/cubejs-client-core.js.map +1 -1
- package/dist/cubejs-client-core.umd.js +5 -0
- package/dist/cubejs-client-core.umd.js.map +1 -1
- package/index.d.ts +3 -0
- package/package.json +2 -2
- package/src/ResultSet.js +11 -1
- package/src/tests/ResultSet.test.js +4 -0
- package/src/tests/compare-date-range.test.js +4 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<p align="center"><a href="https://cube.dev"><img src="https://i.imgur.com/zYHXm4o.png" alt="Cube.js" width="300px"></a></p>
|
|
2
2
|
|
|
3
|
-
[Website](https://cube.dev) • [Docs](https://cube.dev/docs) • [Blog](https://cube.dev/blog) • [Slack](https://slack.cube.dev) • [
|
|
3
|
+
[Website](https://cube.dev) • [Docs](https://cube.dev/docs) • [Blog](https://cube.dev/blog) • [Slack](https://slack.cube.dev) • [Twitter](https://twitter.com/thecubejs)
|
|
4
4
|
|
|
5
5
|
[](https://badge.fury.io/js/%40cubejs-backend%2Fserver)
|
|
6
6
|
[](https://github.com/cube-js/cube.js/actions?query=workflow%3ABuild+branch%3Amaster)
|
|
@@ -476,9 +476,11 @@ class ResultSet {
|
|
|
476
476
|
series(pivotConfig) {
|
|
477
477
|
return this.seriesNames(pivotConfig).map(({
|
|
478
478
|
title,
|
|
479
|
+
shortTitle,
|
|
479
480
|
key
|
|
480
481
|
}) => ({
|
|
481
482
|
title,
|
|
483
|
+
shortTitle,
|
|
482
484
|
key,
|
|
483
485
|
series: this.chartPivot(pivotConfig).map(({
|
|
484
486
|
x,
|
|
@@ -880,6 +882,7 @@ class ResultSet {
|
|
|
880
882
|
const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);
|
|
881
883
|
return {
|
|
882
884
|
title: this.axisValuesString(pivotConfig.y.find(d => d === 'measures') ? dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].title) : aliasedAxis, ', '),
|
|
885
|
+
shortTitle: this.axisValuesString(pivotConfig.y.find(d => d === 'measures') ? dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].shortTitle) : aliasedAxis, ', '),
|
|
883
886
|
key: this.axisValuesString(aliasedAxis, ','),
|
|
884
887
|
yValues: axisValues
|
|
885
888
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-core.esm.js","sources":["../src/utils.js","../src/ResultSet.js","../src/SqlQuery.js","../src/Meta.js","../src/ProgressResult.js","../src/HttpTransport.js","../src/RequestError.js","../src/index.js"],"sourcesContent":["import { indexBy, prop, clone, equals, fromPairs, toPairs } from 'ramda';\n\nexport const DEFAULT_GRANULARITY = 'day';\n\nexport const GRANULARITIES = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n \n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n \n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n \n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\n\nimport en from 'dayjs/locale/en';\nimport {\n groupBy, pipe, fromPairs, uniq, filter, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n pluck, mergeAll, flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\n\ndayjs.extend(quarterOfYear);\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally (https://day.js.org/docs/en/i18n/changing-locale)\n// So the function below has been added.\nconst internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format('YYYY-MM-DDT00:00:00.000')),\n};\n\nconst DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nconst LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nconst groupByToPairs = (keyFn) => {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr) => {\n const res = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\nexport const QUERY_TYPE = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nclass ResultSet {\n static measureFromAxis(axisValues) {\n return axisValues[axisValues.length - 1];\n }\n\n static timeDimensionMember(td) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n static deserialize(data, options = {}) {\n return new ResultSet(data.loadResponse, options);\n }\n\n constructor(loadResponse, options = {}) {\n this.loadResponse = loadResponse;\n\n if (this.loadResponse.queryType != null) {\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse.pivotQuery = {\n ...loadResponse.query,\n queryType: this.queryType\n };\n this.loadResponses = [loadResponse];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n drillDown(drillDownLocator, pivotConfig) {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { xValues = [], yValues = [] } = drillDownLocator;\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values = [];\n normalizedPivotConfig.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName] && measures[measureName].drillMembers || []).length) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n const range = dayRange(value, value).snapTo(granularity);\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: [\n range.start,\n range.end\n ].map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n const { query } = this.loadResponses[0];\n if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, key }) => ({\n title,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (!TIME_SERIES[timeDimension.granularity]) {\n throw new Error(`Unsupported time granularity: ${timeDimension.granularity}`);\n }\n\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(loadResponse.query.timeDimensions[0], resultIndex)\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'starts with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'ends with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'beforeDate', title: 'before date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nclass Meta {\n constructor(metaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n membersForQuery(query, memberType) {\n return unnest(this.cubes.map((c) => c[memberType])).sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members = cube[key];\n\n if (key === 'timeDimensions') {\n members = cube.dimensions.filter((m) => m.type === 'time');\n }\n\n memo[key] = [\n ...memo[key],\n {\n cubeName: cube.name,\n cubeTitle: cube.title,\n members\n },\n ];\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n }\n );\n }\n\n resolveMember(memberName, memberType) {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member;\n }\n\n defaultTimeDimensionNameFor(memberName) {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n filterOperatorsForMember(memberName, memberType) {\n const member = this.resolveMember(memberName, memberType);\n\n return operators[member.type] || operators.string;\n }\n}\n\nexport default Meta;\n","export default class ProgressResult {\n constructor(progressResponse) {\n this.progressResponse = progressResponse;\n }\n\n stage() {\n return this.progressResponse.stage;\n }\n\n timeElapsed() {\n return this.progressResponse.timeElapsed;\n }\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\n\nclass HttpTransport {\n constructor({ authorization, apiUrl, method, headers = {}, credentials }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n }\n\n request(method, { baseRequestId, ...params }) {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params && Object.keys(params)\n .map(k => ({ [k]: typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k] }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${method}${searchParams.toString().length ? `?${searchParams}` : ''}`;\n\n const requestMethod = this.method || (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${method}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers\n },\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubejsApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n const loadImpl = async (response, next) => {\n const requestInstance = await requestPromise;\n\n const subscribeNext = async () => {\n if (options.subscribe && !unsubscribed) {\n if (requestInstance.unsubscribe) {\n return next();\n } else {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n }\n return next();\n }\n return null;\n };\n\n if (options.subscribe && !skipAuthorizationUpdate) {\n await this.updateTransportAuthorization();\n }\n\n skipAuthorizationUpdate = false;\n\n if (response.status === 502) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response) {\n if (\n response.results.length &&\n response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT\n ) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n this.loadResponseInternal.bind(this),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n this.loadResponseInternal.bind(this),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubejsApi(apiToken, options);\n\nexport { CubejsApi, HttpTransport, ResultSet, RequestError };\nexport * from './utils';\n"],"names":["DEFAULT_GRANULARITY","GRANULARITIES","name","undefined","title","removeEmptyQueryFields","_query","query","fromPairs","toPairs","map","key","value","includes","Array","isArray","length","Object","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","granularity","areQueriesEqual","query1","query2","equals","entries","order","defaultOrder","find","d","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","props","clone","meta","sessionGranularity","state","newQuery","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","forEach","member","add","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","push","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","dayjs","extend","quarterOfYear","internalDayjs","args","locale","en","weekStart","TIME_SERIES","day","range","by","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","DateRegex","LocalDateRegex","groupByToPairs","keyFn","acc","Map","data","row","set","get","from","unnest","arr","res","subArr","element","dayRange","to","results","start","end","isBefore","isSame","endOf","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","measureFromAxis","axisValues","timeDimensionMember","deserialize","loadResponse","constructor","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","drillDown","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","cubeName","split","join","dt","toString","drillMembersGrouped","timezone","series","seriesNames","chartPivot","obj","axis","resultIndex","measure","concat","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","defaultPivotConfig","fillMissingDates","joinDateRange","mergeDeepLeft","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","timeSeries","timeDimension","dates","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivot","pivotImpl","groupByXAxis","measureValue","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","pivots","_","mergePivots","minLengthPivot","current","pivotedRows","validate","test","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","i","a","indexOf","m","tablePivot","isMeasuresPresent","tableColumns","annotations","pluck","flatMeta","b","schema","extractFields","shortTitle","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","mergeAll","uniq","aliasedAxis","dropLast","rawData","field","decompose","serialize","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","error","memberTypes","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","subscribe","callback","RequestError","message","response","status","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","CubejsApi","apiToken","transport","pollInterval","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","unsubscribe","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","text","parse","progressCallback","token","patchQueryInternal","responseFormat","loadResponseInternal","j","dataset","r","load","bind","dryRun"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-core.esm.js","sources":["../src/utils.js","../src/ResultSet.js","../src/SqlQuery.js","../src/Meta.js","../src/ProgressResult.js","../src/HttpTransport.js","../src/RequestError.js","../src/index.js"],"sourcesContent":["import { indexBy, prop, clone, equals, fromPairs, toPairs } from 'ramda';\n\nexport const DEFAULT_GRANULARITY = 'day';\n\nexport const GRANULARITIES = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n \n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n \n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n \n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\n\nimport en from 'dayjs/locale/en';\nimport {\n groupBy, pipe, fromPairs, uniq, filter, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n pluck, mergeAll, flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\n\ndayjs.extend(quarterOfYear);\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally (https://day.js.org/docs/en/i18n/changing-locale)\n// So the function below has been added.\nconst internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format('YYYY-MM-DDT00:00:00.000')),\n};\n\nconst DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nconst LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nconst groupByToPairs = (keyFn) => {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr) => {\n const res = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\nexport const QUERY_TYPE = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nclass ResultSet {\n static measureFromAxis(axisValues) {\n return axisValues[axisValues.length - 1];\n }\n\n static timeDimensionMember(td) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n static deserialize(data, options = {}) {\n return new ResultSet(data.loadResponse, options);\n }\n\n constructor(loadResponse, options = {}) {\n this.loadResponse = loadResponse;\n\n if (this.loadResponse.queryType != null) {\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse.pivotQuery = {\n ...loadResponse.query,\n queryType: this.queryType\n };\n this.loadResponses = [loadResponse];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n drillDown(drillDownLocator, pivotConfig) {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { xValues = [], yValues = [] } = drillDownLocator;\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values = [];\n normalizedPivotConfig.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName] && measures[measureName].drillMembers || []).length) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n const range = dayRange(value, value).snapTo(granularity);\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: [\n range.start,\n range.end\n ].map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n const { query } = this.loadResponses[0];\n if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (!TIME_SERIES[timeDimension.granularity]) {\n throw new Error(`Unsupported time granularity: ${timeDimension.granularity}`);\n }\n\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(loadResponse.query.timeDimensions[0], resultIndex)\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'starts with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'ends with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'beforeDate', title: 'before date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nclass Meta {\n constructor(metaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n membersForQuery(query, memberType) {\n return unnest(this.cubes.map((c) => c[memberType])).sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members = cube[key];\n\n if (key === 'timeDimensions') {\n members = cube.dimensions.filter((m) => m.type === 'time');\n }\n\n memo[key] = [\n ...memo[key],\n {\n cubeName: cube.name,\n cubeTitle: cube.title,\n members\n },\n ];\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n }\n );\n }\n\n resolveMember(memberName, memberType) {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member;\n }\n\n defaultTimeDimensionNameFor(memberName) {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n filterOperatorsForMember(memberName, memberType) {\n const member = this.resolveMember(memberName, memberType);\n\n return operators[member.type] || operators.string;\n }\n}\n\nexport default Meta;\n","export default class ProgressResult {\n constructor(progressResponse) {\n this.progressResponse = progressResponse;\n }\n\n stage() {\n return this.progressResponse.stage;\n }\n\n timeElapsed() {\n return this.progressResponse.timeElapsed;\n }\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\n\nclass HttpTransport {\n constructor({ authorization, apiUrl, method, headers = {}, credentials }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n }\n\n request(method, { baseRequestId, ...params }) {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params && Object.keys(params)\n .map(k => ({ [k]: typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k] }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${method}${searchParams.toString().length ? `?${searchParams}` : ''}`;\n\n const requestMethod = this.method || (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${method}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers\n },\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubejsApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n const loadImpl = async (response, next) => {\n const requestInstance = await requestPromise;\n\n const subscribeNext = async () => {\n if (options.subscribe && !unsubscribed) {\n if (requestInstance.unsubscribe) {\n return next();\n } else {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n }\n return next();\n }\n return null;\n };\n\n if (options.subscribe && !skipAuthorizationUpdate) {\n await this.updateTransportAuthorization();\n }\n\n skipAuthorizationUpdate = false;\n\n if (response.status === 502) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response) {\n if (\n response.results.length &&\n response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT\n ) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n this.loadResponseInternal.bind(this),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n this.loadResponseInternal.bind(this),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubejsApi(apiToken, options);\n\nexport { CubejsApi, HttpTransport, ResultSet, RequestError };\nexport * from './utils';\n"],"names":["DEFAULT_GRANULARITY","GRANULARITIES","name","undefined","title","removeEmptyQueryFields","_query","query","fromPairs","toPairs","map","key","value","includes","Array","isArray","length","Object","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","granularity","areQueriesEqual","query1","query2","equals","entries","order","defaultOrder","find","d","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","props","clone","meta","sessionGranularity","state","newQuery","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","forEach","member","add","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","push","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","dayjs","extend","quarterOfYear","internalDayjs","args","locale","en","weekStart","TIME_SERIES","day","range","by","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","DateRegex","LocalDateRegex","groupByToPairs","keyFn","acc","Map","data","row","set","get","from","unnest","arr","res","subArr","element","dayRange","to","results","start","end","isBefore","isSame","endOf","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","measureFromAxis","axisValues","timeDimensionMember","deserialize","loadResponse","constructor","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","drillDown","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","cubeName","split","join","dt","toString","drillMembersGrouped","timezone","series","seriesNames","shortTitle","chartPivot","obj","axis","resultIndex","measure","concat","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","defaultPivotConfig","fillMissingDates","joinDateRange","mergeDeepLeft","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","timeSeries","timeDimension","dates","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivot","pivotImpl","groupByXAxis","measureValue","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","pivots","_","mergePivots","minLengthPivot","current","pivotedRows","validate","test","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","i","a","indexOf","m","tablePivot","isMeasuresPresent","tableColumns","annotations","pluck","flatMeta","b","schema","extractFields","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","mergeAll","uniq","aliasedAxis","dropLast","rawData","field","decompose","serialize","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","error","memberTypes","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","subscribe","callback","RequestError","message","response","status","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","CubejsApi","apiToken","transport","pollInterval","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","unsubscribe","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","text","parse","progressCallback","token","patchQueryInternal","responseFormat","loadResponseInternal","j","dataset","r","load","bind","dryRun"],"mappings":"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"}
|
|
@@ -679,9 +679,11 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
679
679
|
|
|
680
680
|
return this.seriesNames(pivotConfig).map(function (_ref9) {
|
|
681
681
|
var title = _ref9.title,
|
|
682
|
+
shortTitle = _ref9.shortTitle,
|
|
682
683
|
key = _ref9.key;
|
|
683
684
|
return {
|
|
684
685
|
title: title,
|
|
686
|
+
shortTitle: shortTitle,
|
|
685
687
|
key: key,
|
|
686
688
|
series: _this.chartPivot(pivotConfig).map(function (_ref10) {
|
|
687
689
|
var x = _ref10.x,
|
|
@@ -1140,6 +1142,9 @@ var ResultSet = /*#__PURE__*/function () {
|
|
|
1140
1142
|
title: _this4.axisValuesString(pivotConfig.y.find(function (d) {
|
|
1141
1143
|
return d === 'measures';
|
|
1142
1144
|
}) ? ramda.dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].title) : aliasedAxis, ', '),
|
|
1145
|
+
shortTitle: _this4.axisValuesString(pivotConfig.y.find(function (d) {
|
|
1146
|
+
return d === 'measures';
|
|
1147
|
+
}) ? ramda.dropLast(1, aliasedAxis).concat(measures[ResultSet.measureFromAxis(axisValues)].shortTitle) : aliasedAxis, ', '),
|
|
1143
1148
|
key: _this4.axisValuesString(aliasedAxis, ','),
|
|
1144
1149
|
yValues: axisValues
|
|
1145
1150
|
};
|