@cubejs-client/core 0.28.17 → 0.28.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-core.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 } 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: 'year', title: 'Year' },\n];\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(Object.entries((query1 && query1.order) || {}), 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 ((query.measures || []).length > 0 && (query.dimensions || []).length > 0) {\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 !== 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 && (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(newQuery.measures[0]);\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 ((oldQuery.dimensions || []).length === 0 && (newQuery.dimensions || []).length > 0) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({ ...td, granularity: undefined })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if ((oldQuery.dimensions || []).length > 0 && (newQuery.dimensions || []).length === 0) {\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 || (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' || newChartType === 'table' || 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(pivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis) {\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 (destinationIndex >= lastIndex && nextPivotConfig[destinationAxis][lastIndex] === 'measures') {\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 (pivotConfig && pivotConfig.aliasSeries && pivotConfig.aliasSeries[index]) {\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 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.locale({\n ...en,\n weekStart: 1,\n});\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};\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 = dayjs(from);\n const end = dayjs(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(dayjs(from).startOf(value), dayjs(to).endOf(value)),\n start: dayjs(from),\n end: dayjs(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] && dayjs(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 let measureValue = (row, measure) => row[measure];\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 measureValue = (row, measure) => row[measure] || 0;\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 ],\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 async subscribe(callback) {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response) {\n super(message);\n this.response = response;\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\nconst mutexPromise = (promise) => new Promise((resolve, reject) => {\n promise.then(r => resolve(r), e => e !== MUTEX_ERROR && reject(e));\n});\n\nclass CubejsApi {\n constructor(apiToken, options) {\n if (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\n request(method, params) {\n return this.transport.request(method, { baseRequestId: uuidv4(), ...params });\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.updateTransportAuthorization().then(() => request());\n\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (options.mutexObj && options.mutexObj[mutexKey] !== mutexValue) {\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 await this.updateTransportAuthorization();\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); // 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 (typeof this.apiToken === 'function') {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n }\n }\n\n load(query, options, callback) {\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi'\n }),\n (response) => new ResultSet(response, { parseDateMeasures: this.parseDateMeasures }),\n options,\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 subscribe(query, options, callback) {\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi'\n }),\n (body) => new ResultSet(body, { parseDateMeasures: this.parseDateMeasures }),\n { ...options, subscribe: true },\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubejsApi(apiToken, options);\n\nexport { CubejsApi, HttpTransport, ResultSet };\nexport {\n areQueriesEqual,\n defaultHeuristics,\n movePivotItem,\n isQueryPresent,\n moveItemInArray,\n defaultOrder,\n flattenFilters,\n getQueryMembers,\n getOrderMembersFromOrder,\n GRANULARITIES\n} from './utils';\n"],"names":["DEFAULT_GRANULARITY","GRANULARITIES","name","undefined","title","areQueriesEqual","query1","query2","equals","Object","entries","order","defaultOrder","query","granularity","timeDimensions","find","d","dimension","measures","length","dimensions","defaultHeuristics","newState","oldQuery","options","clone","props","meta","sessionGranularity","state","newQuery","Array","isArray","td","defaultTimeDimension","defaultTimeDimensionNameFor","dateRange","pivotConfig","shouldApplyHeuristicOrder","chartType","map","filters","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","filter","or","and","getQueryMembers","keys","members","Set","forEach","key","member","add","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","push","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","value","dayjs","locale","en","weekStart","TIME_SERIES","day","range","by","format","month","snapTo","year","hour","minute","second","week","startOf","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","loadResponse","queryType","loadResponses","pivotQuery","includes","Error","parseDateMeasures","backwardCompatibleData","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","operator","split","cubeName","join","dt","toString","drillMembersGrouped","timezone","seriesNames","series","chartPivot","obj","axis","resultIndex","measure","concat","axisValues","delimiter","formatValue","v","getNormalizedPivotConfig","timeDimension","timeDimensionMember","dates","pipe","Boolean","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivotImpl","groupByXAxis","axisValuesString","measureValue","fillMissingDates","timeSeries","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","pivot","validate","test","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","i","a","indexOf","m","isMeasuresPresent","fromPairs","annotations","pluck","mergeDeepLeft","flatMeta","b","schema","extractFields","shortTitle","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","mergeAll","uniq","aliasedAxis","dropLast","field","defaultPivotConfig","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","sql","rawQuery","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","memberType","sort","memberKeys","cube","cubeTitle","memberName","error","memberTypes","resolveMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","subscribe","callback","RequestError","message","response","mutexCounter","MUTEX_ERROR","mutexPromise","promise","Promise","resolve","reject","then","r","CubejsApi","apiToken","transport","pollInterval","request","uuidv4","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","unsubscribed","checkMutex","requestInstance","unsubscribe","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","status","text","parse","progressCallback","token","loadMethod"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-core.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 } 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 areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(Object.entries((query1 && query1.order) || {}), 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 ((query.measures || []).length > 0 && (query.dimensions || []).length > 0) {\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 !== 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 && (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(newQuery.measures[0]);\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 ((oldQuery.dimensions || []).length === 0 && (newQuery.dimensions || []).length > 0) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({ ...td, granularity: undefined })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if ((oldQuery.dimensions || []).length > 0 && (newQuery.dimensions || []).length === 0) {\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 || (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' || newChartType === 'table' || 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(pivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis) {\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 (destinationIndex >= lastIndex && nextPivotConfig[destinationAxis][lastIndex] === 'measures') {\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 (pivotConfig && pivotConfig.aliasSeries && pivotConfig.aliasSeries[index]) {\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.locale({\n ...en,\n weekStart: 1,\n});\ndayjs.extend(quarterOfYear);\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 = dayjs(from);\n const end = dayjs(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(dayjs(from).startOf(value), dayjs(to).endOf(value)),\n start: dayjs(from),\n end: dayjs(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] && dayjs(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 let measureValue = (row, measure) => row[measure];\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 measureValue = (row, measure) => row[measure] || 0;\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 ],\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 async subscribe(callback) {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response) {\n super(message);\n this.response = response;\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\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 (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, { baseRequestId: uuidv4(), ...params });\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.updateTransportAuthorization().then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (options.mutexObj && options.mutexObj[mutexKey] !== mutexValue) {\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); // 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 load(query, options, callback) {\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi'\n }),\n (response) => new ResultSet(response, { parseDateMeasures: this.parseDateMeasures }),\n options,\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 subscribe(query, options, callback) {\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi'\n }),\n (body) => new ResultSet(body, { parseDateMeasures: this.parseDateMeasures }),\n { ...options, subscribe: true },\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubejsApi(apiToken, options);\n\nexport { CubejsApi, HttpTransport, ResultSet };\nexport {\n areQueriesEqual,\n defaultHeuristics,\n movePivotItem,\n isQueryPresent,\n moveItemInArray,\n defaultOrder,\n flattenFilters,\n getQueryMembers,\n getOrderMembersFromOrder,\n GRANULARITIES\n} from './utils';\n"],"names":["DEFAULT_GRANULARITY","GRANULARITIES","name","undefined","title","areQueriesEqual","query1","query2","equals","Object","entries","order","defaultOrder","query","granularity","timeDimensions","find","d","dimension","measures","length","dimensions","defaultHeuristics","newState","oldQuery","options","clone","props","meta","sessionGranularity","state","newQuery","Array","isArray","td","defaultTimeDimension","defaultTimeDimensionNameFor","dateRange","pivotConfig","shouldApplyHeuristicOrder","chartType","map","filters","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","filter","or","and","getQueryMembers","keys","members","Set","forEach","key","member","add","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","push","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","value","dayjs","locale","en","weekStart","extend","quarterOfYear","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","loadResponse","queryType","loadResponses","pivotQuery","includes","Error","parseDateMeasures","backwardCompatibleData","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","operator","split","cubeName","join","dt","toString","drillMembersGrouped","timezone","seriesNames","series","chartPivot","obj","axis","resultIndex","measure","concat","axisValues","delimiter","formatValue","v","getNormalizedPivotConfig","timeDimension","timeDimensionMember","dates","pipe","Boolean","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivotImpl","groupByXAxis","axisValuesString","measureValue","fillMissingDates","timeSeries","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","pivot","validate","test","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","i","a","indexOf","m","isMeasuresPresent","fromPairs","annotations","pluck","mergeDeepLeft","flatMeta","b","schema","extractFields","shortTitle","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","mergeAll","uniq","aliasedAxis","dropLast","field","defaultPivotConfig","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","sql","rawQuery","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","memberType","sort","memberKeys","cube","cubeTitle","memberName","error","memberTypes","resolveMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","subscribe","callback","RequestError","message","response","mutexCounter","MUTEX_ERROR","mutexPromise","promise","Promise","resolve","reject","CubejsApi","apiToken","transport","pollInterval","updateAuthorizationPromise","request","uuidv4","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","unsubscribe","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","status","text","parse","progressCallback","token","loadMethod"],"mappings":"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"}
@@ -191,7 +191,7 @@
191
191
  (module.exports = function (key, value) {
192
192
  return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
193
193
  })('versions', []).push({
194
- version: '3.16.0',
194
+ version: '3.16.1',
195
195
  mode: 'global',
196
196
  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
197
197
  });
@@ -1357,42 +1357,6 @@
1357
1357
  defineProperty: objectDefineProperty.f
1358
1358
  });
1359
1359
 
1360
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1361
- try {
1362
- var info = gen[key](arg);
1363
- var value = info.value;
1364
- } catch (error) {
1365
- reject(error);
1366
- return;
1367
- }
1368
-
1369
- if (info.done) {
1370
- resolve(value);
1371
- } else {
1372
- Promise.resolve(value).then(_next, _throw);
1373
- }
1374
- }
1375
-
1376
- function _asyncToGenerator(fn) {
1377
- return function () {
1378
- var self = this,
1379
- args = arguments;
1380
- return new Promise(function (resolve, reject) {
1381
- var gen = fn.apply(self, args);
1382
-
1383
- function _next(value) {
1384
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1385
- }
1386
-
1387
- function _throw(err) {
1388
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1389
- }
1390
-
1391
- _next(undefined);
1392
- });
1393
- };
1394
- }
1395
-
1396
1360
  function _defineProperty(obj, key, value) {
1397
1361
  if (key in obj) {
1398
1362
  Object.defineProperty(obj, key, {
@@ -1446,6 +1410,42 @@
1446
1410
  return Constructor;
1447
1411
  }
1448
1412
 
1413
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1414
+ try {
1415
+ var info = gen[key](arg);
1416
+ var value = info.value;
1417
+ } catch (error) {
1418
+ reject(error);
1419
+ return;
1420
+ }
1421
+
1422
+ if (info.done) {
1423
+ resolve(value);
1424
+ } else {
1425
+ Promise.resolve(value).then(_next, _throw);
1426
+ }
1427
+ }
1428
+
1429
+ function _asyncToGenerator(fn) {
1430
+ return function () {
1431
+ var self = this,
1432
+ args = arguments;
1433
+ return new Promise(function (resolve, reject) {
1434
+ var gen = fn.apply(self, args);
1435
+
1436
+ function _next(value) {
1437
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1438
+ }
1439
+
1440
+ function _throw(err) {
1441
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1442
+ }
1443
+
1444
+ _next(undefined);
1445
+ });
1446
+ };
1447
+ }
1448
+
1449
1449
  /**
1450
1450
  * Copyright (c) 2014-present, Facebook, Inc.
1451
1451
  *
@@ -2537,6 +2537,8 @@
2537
2537
  clear: clear
2538
2538
  };
2539
2539
 
2540
+ var engineIsIosPebble = /iphone|ipod|ipad/i.test(engineUserAgent) && global$1.Pebble !== undefined;
2541
+
2540
2542
  var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(engineUserAgent);
2541
2543
 
2542
2544
  var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
@@ -2545,6 +2547,7 @@
2545
2547
 
2546
2548
 
2547
2549
 
2550
+
2548
2551
  var MutationObserver = global$1.MutationObserver || global$1.WebKitMutationObserver;
2549
2552
  var document$2 = global$1.document;
2550
2553
  var process$1 = global$1.process;
@@ -2584,7 +2587,7 @@
2584
2587
  node.data = toggle = !toggle;
2585
2588
  };
2586
2589
  // environments with maybe non-completely correct, but existent Promise
2587
- } else if (Promise$1 && Promise$1.resolve) {
2590
+ } else if (!engineIsIosPebble && Promise$1 && Promise$1.resolve) {
2588
2591
  // Promise.resolve without an argument throws an error in LG WebOS 2
2589
2592
  promise = Promise$1.resolve(undefined);
2590
2593
  // workaround of WebKit ~ iOS Safari 10.1 bug
@@ -4922,6 +4925,10 @@
4922
4925
  !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",$="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return -t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return +(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return {M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},D="en",v={};v[D]=M;var p=function(t){return t instanceof _},S=function(t,e,n){var r;if(!t)return D;if("string"==typeof t)v[t]&&(r=t),e&&(v[t]=e,r=t);else {var i=t.name;v[i]=t,r=i;}return !n&&r&&(D=r),r||!n&&D},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t);}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return O},m.isValid=function(){return !(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g="set"+(this.$u?"UTC":"");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var D=this.$locale().weekStart||0,v=(y<D?y+7:y)-D;return $(r?m-v:m+(6-v),M);case a:case d:return l(g+"Hours",0);case u:return l(g+"Minutes",1);case s:return l(g+"Seconds",2);case i:return l(g+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h="set"+(this.$u?"UTC":""),$=(n={},n[a]=h+"Date",n[d]=h+"Date",n[f]=h+"Month",n[c]=h+"FullYear",n[u]=h+"Hours",n[s]=h+"Minutes",n[i]=h+"Seconds",n[r]=h+"Milliseconds",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d;}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].substr(0,s)},c=function(t){return O.s(s%12||12,t,"0")},d=n.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,"0"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,"0"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,D=O.m(this,M);return D=(l={},l[c]=D/12,l[f]=D,l[h]=D/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?D:O.a(D)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return v[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),b=_.prototype;return w.prototype=b,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",f],["$y",c],["$D",d]].forEach((function(t){b[t[1]]=function(e){return this.$g(e,t[0],t[1])};})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=v[D],w.Ls=v,w.p={},w}));
4923
4926
  });
4924
4927
 
4928
+ var quarterOfYear = createCommonjsModule(function (module, exports) {
4929
+ !function(t,n){module.exports=n();}(commonjsGlobal,(function(){var t="month",n="quarter";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf("day"):this.month(3*o+2).endOf(t).endOf("day")}return u.bind(this)(e,i)};}}));
4930
+ });
4931
+
4925
4932
  var en = createCommonjsModule(function (module, exports) {
4926
4933
  !function(e,n){module.exports=n();}(commonjsGlobal,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")}}));
4927
4934
  });
@@ -7678,6 +7685,9 @@
7678
7685
  }, {
7679
7686
  name: 'month',
7680
7687
  title: 'Month'
7688
+ }, {
7689
+ name: 'quarter',
7690
+ title: 'Quarter'
7681
7691
  }, {
7682
7692
  name: 'year',
7683
7693
  title: 'Year'
@@ -7954,6 +7964,7 @@
7954
7964
  dayjs_min.locale(_objectSpread$2(_objectSpread$2({}, en), {}, {
7955
7965
  weekStart: 1
7956
7966
  }));
7967
+ dayjs_min.extend(quarterOfYear);
7957
7968
  var TIME_SERIES = {
7958
7969
  day: function day(range) {
7959
7970
  return range.by('d').map(function (d) {
@@ -7989,6 +8000,11 @@
7989
8000
  return range.snapTo('week').by('w').map(function (d) {
7990
8001
  return d.startOf('week').format('YYYY-MM-DDT00:00:00.000');
7991
8002
  });
8003
+ },
8004
+ quarter: function quarter(range) {
8005
+ return range.snapTo('quarter').by('quarter').map(function (d) {
8006
+ return d.startOf('quarter').format('YYYY-MM-DDT00:00:00.000');
8007
+ });
7992
8008
  }
7993
8009
  };
7994
8010
  var DateRegex = /^\d\d\d\d-\d\d-\d\d$/;
@@ -8531,12 +8547,12 @@
8531
8547
  if (yValues.length > 0) {
8532
8548
  var currentItem = schema;
8533
8549
  yValues.forEach(function (value, index) {
8534
- currentItem[value] = {
8550
+ currentItem["_".concat(value)] = {
8535
8551
  key: value,
8536
8552
  memberId: normalizedPivotConfig.y[index] === 'measures' ? value : normalizedPivotConfig.y[index],
8537
- children: currentItem[value] && currentItem[value].children || {}
8553
+ children: currentItem["_".concat(value)] && currentItem["_".concat(value)].children || {}
8538
8554
  };
8539
- currentItem = currentItem[value].children;
8555
+ currentItem = currentItem["_".concat(value)].children;
8540
8556
  });
8541
8557
  }
8542
8558
  });
@@ -11962,6 +11978,8 @@
11962
11978
  function _possibleConstructorReturn(self, call) {
11963
11979
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
11964
11980
  return call;
11981
+ } else if (call !== void 0) {
11982
+ throw new TypeError("Derived constructors may only return object or undefined");
11965
11983
  }
11966
11984
 
11967
11985
  return _assertThisInitialized(self);
@@ -12070,15 +12088,45 @@
12070
12088
  var mutexCounter = 0;
12071
12089
  var MUTEX_ERROR = 'Mutex has been changed';
12072
12090
 
12073
- var mutexPromise = function mutexPromise(promise) {
12074
- return new Promise(function (resolve, reject) {
12075
- promise.then(function (r) {
12076
- return resolve(r);
12077
- }, function (e) {
12078
- return e !== MUTEX_ERROR && reject(e);
12079
- });
12080
- });
12081
- };
12091
+ function mutexPromise(promise) {
12092
+ return new Promise( /*#__PURE__*/function () {
12093
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(resolve, reject) {
12094
+ return regenerator.wrap(function _callee$(_context) {
12095
+ while (1) {
12096
+ switch (_context.prev = _context.next) {
12097
+ case 0:
12098
+ _context.prev = 0;
12099
+ _context.t0 = resolve;
12100
+ _context.next = 4;
12101
+ return promise;
12102
+
12103
+ case 4:
12104
+ _context.t1 = _context.sent;
12105
+ (0, _context.t0)(_context.t1);
12106
+ _context.next = 11;
12107
+ break;
12108
+
12109
+ case 8:
12110
+ _context.prev = 8;
12111
+ _context.t2 = _context["catch"](0);
12112
+
12113
+ if (_context.t2 !== MUTEX_ERROR) {
12114
+ reject(_context.t2);
12115
+ }
12116
+
12117
+ case 11:
12118
+ case "end":
12119
+ return _context.stop();
12120
+ }
12121
+ }
12122
+ }, _callee, null, [[0, 8]]);
12123
+ }));
12124
+
12125
+ return function (_x, _x2) {
12126
+ return _ref.apply(this, arguments);
12127
+ };
12128
+ }());
12129
+ }
12082
12130
 
12083
12131
  var CubejsApi = /*#__PURE__*/function () {
12084
12132
  function CubejsApi(apiToken, options) {
@@ -12109,6 +12157,7 @@
12109
12157
  });
12110
12158
  this.pollInterval = options.pollInterval || 5;
12111
12159
  this.parseDateMeasures = options.parseDateMeasures;
12160
+ this.updateAuthorizationPromise = null;
12112
12161
  }
12113
12162
 
12114
12163
  _createClass(CubejsApi, [{
@@ -12140,34 +12189,35 @@
12140
12189
  var requestPromise = this.updateTransportAuthorization().then(function () {
12141
12190
  return request();
12142
12191
  });
12192
+ var skipAuthorizationUpdate = true;
12143
12193
  var unsubscribed = false;
12144
12194
 
12145
12195
  var checkMutex = /*#__PURE__*/function () {
12146
- var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee() {
12196
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2() {
12147
12197
  var requestInstance;
12148
- return regenerator.wrap(function _callee$(_context) {
12198
+ return regenerator.wrap(function _callee2$(_context2) {
12149
12199
  while (1) {
12150
- switch (_context.prev = _context.next) {
12200
+ switch (_context2.prev = _context2.next) {
12151
12201
  case 0:
12152
- _context.next = 2;
12202
+ _context2.next = 2;
12153
12203
  return requestPromise;
12154
12204
 
12155
12205
  case 2:
12156
- requestInstance = _context.sent;
12206
+ requestInstance = _context2.sent;
12157
12207
 
12158
12208
  if (!(options.mutexObj && options.mutexObj[mutexKey] !== mutexValue)) {
12159
- _context.next = 9;
12209
+ _context2.next = 9;
12160
12210
  break;
12161
12211
  }
12162
12212
 
12163
12213
  unsubscribed = true;
12164
12214
 
12165
12215
  if (!requestInstance.unsubscribe) {
12166
- _context.next = 8;
12216
+ _context2.next = 8;
12167
12217
  break;
12168
12218
  }
12169
12219
 
12170
- _context.next = 8;
12220
+ _context2.next = 8;
12171
12221
  return requestInstance.unsubscribe();
12172
12222
 
12173
12223
  case 8:
@@ -12175,50 +12225,50 @@
12175
12225
 
12176
12226
  case 9:
12177
12227
  case "end":
12178
- return _context.stop();
12228
+ return _context2.stop();
12179
12229
  }
12180
12230
  }
12181
- }, _callee);
12231
+ }, _callee2);
12182
12232
  }));
12183
12233
 
12184
12234
  return function checkMutex() {
12185
- return _ref.apply(this, arguments);
12235
+ return _ref2.apply(this, arguments);
12186
12236
  };
12187
12237
  }();
12188
12238
 
12189
12239
  var loadImpl = /*#__PURE__*/function () {
12190
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee4(response, next) {
12240
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee5(response, next) {
12191
12241
  var requestInstance, subscribeNext, continueWait, body, text, error, result;
12192
- return regenerator.wrap(function _callee4$(_context4) {
12242
+ return regenerator.wrap(function _callee5$(_context5) {
12193
12243
  while (1) {
12194
- switch (_context4.prev = _context4.next) {
12244
+ switch (_context5.prev = _context5.next) {
12195
12245
  case 0:
12196
- _context4.next = 2;
12246
+ _context5.next = 2;
12197
12247
  return requestPromise;
12198
12248
 
12199
12249
  case 2:
12200
- requestInstance = _context4.sent;
12250
+ requestInstance = _context5.sent;
12201
12251
 
12202
12252
  subscribeNext = /*#__PURE__*/function () {
12203
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2() {
12204
- return regenerator.wrap(function _callee2$(_context2) {
12253
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee3() {
12254
+ return regenerator.wrap(function _callee3$(_context3) {
12205
12255
  while (1) {
12206
- switch (_context2.prev = _context2.next) {
12256
+ switch (_context3.prev = _context3.next) {
12207
12257
  case 0:
12208
12258
  if (!(options.subscribe && !unsubscribed)) {
12209
- _context2.next = 8;
12259
+ _context3.next = 8;
12210
12260
  break;
12211
12261
  }
12212
12262
 
12213
12263
  if (!requestInstance.unsubscribe) {
12214
- _context2.next = 5;
12264
+ _context3.next = 5;
12215
12265
  break;
12216
12266
  }
12217
12267
 
12218
- return _context2.abrupt("return", next());
12268
+ return _context3.abrupt("return", next());
12219
12269
 
12220
12270
  case 5:
12221
- _context2.next = 7;
12271
+ _context3.next = 7;
12222
12272
  return new Promise(function (resolve) {
12223
12273
  return setTimeout(function () {
12224
12274
  return resolve();
@@ -12226,41 +12276,41 @@
12226
12276
  });
12227
12277
 
12228
12278
  case 7:
12229
- return _context2.abrupt("return", next());
12279
+ return _context3.abrupt("return", next());
12230
12280
 
12231
12281
  case 8:
12232
- return _context2.abrupt("return", null);
12282
+ return _context3.abrupt("return", null);
12233
12283
 
12234
12284
  case 9:
12235
12285
  case "end":
12236
- return _context2.stop();
12286
+ return _context3.stop();
12237
12287
  }
12238
12288
  }
12239
- }, _callee2);
12289
+ }, _callee3);
12240
12290
  }));
12241
12291
 
12242
12292
  return function subscribeNext() {
12243
- return _ref3.apply(this, arguments);
12293
+ return _ref4.apply(this, arguments);
12244
12294
  };
12245
12295
  }();
12246
12296
 
12247
12297
  continueWait = /*#__PURE__*/function () {
12248
- var _ref4 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee3(wait) {
12249
- return regenerator.wrap(function _callee3$(_context3) {
12298
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee4(wait) {
12299
+ return regenerator.wrap(function _callee4$(_context4) {
12250
12300
  while (1) {
12251
- switch (_context3.prev = _context3.next) {
12301
+ switch (_context4.prev = _context4.next) {
12252
12302
  case 0:
12253
12303
  if (unsubscribed) {
12254
- _context3.next = 5;
12304
+ _context4.next = 5;
12255
12305
  break;
12256
12306
  }
12257
12307
 
12258
12308
  if (!wait) {
12259
- _context3.next = 4;
12309
+ _context4.next = 4;
12260
12310
  break;
12261
12311
  }
12262
12312
 
12263
- _context3.next = 4;
12313
+ _context4.next = 4;
12264
12314
  return new Promise(function (resolve) {
12265
12315
  return setTimeout(function () {
12266
12316
  return resolve();
@@ -12268,150 +12318,157 @@
12268
12318
  });
12269
12319
 
12270
12320
  case 4:
12271
- return _context3.abrupt("return", next());
12321
+ return _context4.abrupt("return", next());
12272
12322
 
12273
12323
  case 5:
12274
- return _context3.abrupt("return", null);
12324
+ return _context4.abrupt("return", null);
12275
12325
 
12276
12326
  case 6:
12277
12327
  case "end":
12278
- return _context3.stop();
12328
+ return _context4.stop();
12279
12329
  }
12280
12330
  }
12281
- }, _callee3);
12331
+ }, _callee4);
12282
12332
  }));
12283
12333
 
12284
- return function continueWait(_x3) {
12285
- return _ref4.apply(this, arguments);
12334
+ return function continueWait(_x5) {
12335
+ return _ref5.apply(this, arguments);
12286
12336
  };
12287
12337
  }();
12288
12338
 
12289
- _context4.next = 7;
12339
+ if (!(options.subscribe && !skipAuthorizationUpdate)) {
12340
+ _context5.next = 8;
12341
+ break;
12342
+ }
12343
+
12344
+ _context5.next = 8;
12290
12345
  return _this.updateTransportAuthorization();
12291
12346
 
12292
- case 7:
12347
+ case 8:
12348
+ skipAuthorizationUpdate = false;
12349
+
12293
12350
  if (!(response.status === 502)) {
12294
- _context4.next = 11;
12351
+ _context5.next = 13;
12295
12352
  break;
12296
12353
  }
12297
12354
 
12298
- _context4.next = 10;
12355
+ _context5.next = 12;
12299
12356
  return checkMutex();
12300
12357
 
12301
- case 10:
12302
- return _context4.abrupt("return", continueWait(true));
12358
+ case 12:
12359
+ return _context5.abrupt("return", continueWait(true));
12303
12360
 
12304
- case 11:
12361
+ case 13:
12305
12362
  body = {};
12306
12363
  text = '';
12307
- _context4.prev = 13;
12308
- _context4.next = 16;
12364
+ _context5.prev = 15;
12365
+ _context5.next = 18;
12309
12366
  return response.text();
12310
12367
 
12311
- case 16:
12312
- text = _context4.sent;
12368
+ case 18:
12369
+ text = _context5.sent;
12313
12370
  body = JSON.parse(text);
12314
- _context4.next = 23;
12371
+ _context5.next = 25;
12315
12372
  break;
12316
12373
 
12317
- case 20:
12318
- _context4.prev = 20;
12319
- _context4.t0 = _context4["catch"](13);
12374
+ case 22:
12375
+ _context5.prev = 22;
12376
+ _context5.t0 = _context5["catch"](15);
12320
12377
  body.error = text;
12321
12378
 
12322
- case 23:
12379
+ case 25:
12323
12380
  if (!(body.error === 'Continue wait')) {
12324
- _context4.next = 28;
12381
+ _context5.next = 30;
12325
12382
  break;
12326
12383
  }
12327
12384
 
12328
- _context4.next = 26;
12385
+ _context5.next = 28;
12329
12386
  return checkMutex();
12330
12387
 
12331
- case 26:
12388
+ case 28:
12332
12389
  if (options.progressCallback) {
12333
12390
  options.progressCallback(new ProgressResult(body));
12334
12391
  }
12335
12392
 
12336
- return _context4.abrupt("return", continueWait());
12393
+ return _context5.abrupt("return", continueWait());
12337
12394
 
12338
- case 28:
12395
+ case 30:
12339
12396
  if (!(response.status !== 200)) {
12340
- _context4.next = 41;
12397
+ _context5.next = 43;
12341
12398
  break;
12342
12399
  }
12343
12400
 
12344
- _context4.next = 31;
12401
+ _context5.next = 33;
12345
12402
  return checkMutex();
12346
12403
 
12347
- case 31:
12404
+ case 33:
12348
12405
  if (!(!options.subscribe && requestInstance.unsubscribe)) {
12349
- _context4.next = 34;
12406
+ _context5.next = 36;
12350
12407
  break;
12351
12408
  }
12352
12409
 
12353
- _context4.next = 34;
12410
+ _context5.next = 36;
12354
12411
  return requestInstance.unsubscribe();
12355
12412
 
12356
- case 34:
12413
+ case 36:
12357
12414
  error = new RequestError(body.error, body); // TODO error class
12358
12415
 
12359
12416
  if (!callback) {
12360
- _context4.next = 39;
12417
+ _context5.next = 41;
12361
12418
  break;
12362
12419
  }
12363
12420
 
12364
12421
  callback(error);
12365
- _context4.next = 40;
12422
+ _context5.next = 42;
12366
12423
  break;
12367
12424
 
12368
- case 39:
12425
+ case 41:
12369
12426
  throw error;
12370
12427
 
12371
- case 40:
12372
- return _context4.abrupt("return", subscribeNext());
12428
+ case 42:
12429
+ return _context5.abrupt("return", subscribeNext());
12373
12430
 
12374
- case 41:
12375
- _context4.next = 43;
12431
+ case 43:
12432
+ _context5.next = 45;
12376
12433
  return checkMutex();
12377
12434
 
12378
- case 43:
12435
+ case 45:
12379
12436
  if (!(!options.subscribe && requestInstance.unsubscribe)) {
12380
- _context4.next = 46;
12437
+ _context5.next = 48;
12381
12438
  break;
12382
12439
  }
12383
12440
 
12384
- _context4.next = 46;
12441
+ _context5.next = 48;
12385
12442
  return requestInstance.unsubscribe();
12386
12443
 
12387
- case 46:
12444
+ case 48:
12388
12445
  result = toResult(body);
12389
12446
 
12390
12447
  if (!callback) {
12391
- _context4.next = 51;
12448
+ _context5.next = 53;
12392
12449
  break;
12393
12450
  }
12394
12451
 
12395
12452
  callback(null, result);
12396
- _context4.next = 52;
12453
+ _context5.next = 54;
12397
12454
  break;
12398
12455
 
12399
- case 51:
12400
- return _context4.abrupt("return", result);
12456
+ case 53:
12457
+ return _context5.abrupt("return", result);
12401
12458
 
12402
- case 52:
12403
- return _context4.abrupt("return", subscribeNext());
12459
+ case 54:
12460
+ return _context5.abrupt("return", subscribeNext());
12404
12461
 
12405
- case 53:
12462
+ case 55:
12406
12463
  case "end":
12407
- return _context4.stop();
12464
+ return _context5.stop();
12408
12465
  }
12409
12466
  }
12410
- }, _callee4, null, [[13, 20]]);
12467
+ }, _callee5, null, [[15, 22]]);
12411
12468
  }));
12412
12469
 
12413
- return function loadImpl(_x, _x2) {
12414
- return _ref2.apply(this, arguments);
12470
+ return function loadImpl(_x3, _x4) {
12471
+ return _ref3.apply(this, arguments);
12415
12472
  };
12416
12473
  }();
12417
12474
 
@@ -12422,35 +12479,35 @@
12422
12479
  if (callback) {
12423
12480
  return {
12424
12481
  unsubscribe: function () {
12425
- var _unsubscribe = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee5() {
12482
+ var _unsubscribe = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee6() {
12426
12483
  var requestInstance;
12427
- return regenerator.wrap(function _callee5$(_context5) {
12484
+ return regenerator.wrap(function _callee6$(_context6) {
12428
12485
  while (1) {
12429
- switch (_context5.prev = _context5.next) {
12486
+ switch (_context6.prev = _context6.next) {
12430
12487
  case 0:
12431
- _context5.next = 2;
12488
+ _context6.next = 2;
12432
12489
  return requestPromise;
12433
12490
 
12434
12491
  case 2:
12435
- requestInstance = _context5.sent;
12492
+ requestInstance = _context6.sent;
12436
12493
  unsubscribed = true;
12437
12494
 
12438
12495
  if (!requestInstance.unsubscribe) {
12439
- _context5.next = 6;
12496
+ _context6.next = 6;
12440
12497
  break;
12441
12498
  }
12442
12499
 
12443
- return _context5.abrupt("return", requestInstance.unsubscribe());
12500
+ return _context6.abrupt("return", requestInstance.unsubscribe());
12444
12501
 
12445
12502
  case 6:
12446
- return _context5.abrupt("return", null);
12503
+ return _context6.abrupt("return", null);
12447
12504
 
12448
12505
  case 7:
12449
12506
  case "end":
12450
- return _context5.stop();
12507
+ return _context6.stop();
12451
12508
  }
12452
12509
  }
12453
- }, _callee5);
12510
+ }, _callee6);
12454
12511
  }));
12455
12512
 
12456
12513
  function unsubscribe() {
@@ -12467,33 +12524,83 @@
12467
12524
  }, {
12468
12525
  key: "updateTransportAuthorization",
12469
12526
  value: function () {
12470
- var _updateTransportAuthorization = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee6() {
12471
- var token;
12472
- return regenerator.wrap(function _callee6$(_context6) {
12527
+ var _updateTransportAuthorization = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee8() {
12528
+ var _this2 = this;
12529
+
12530
+ return regenerator.wrap(function _callee8$(_context8) {
12473
12531
  while (1) {
12474
- switch (_context6.prev = _context6.next) {
12532
+ switch (_context8.prev = _context8.next) {
12475
12533
  case 0:
12476
- if (!(typeof this.apiToken === 'function')) {
12477
- _context6.next = 5;
12534
+ if (!this.updateAuthorizationPromise) {
12535
+ _context8.next = 4;
12478
12536
  break;
12479
12537
  }
12480
12538
 
12481
- _context6.next = 3;
12482
- return this.apiToken();
12539
+ _context8.next = 3;
12540
+ return this.updateAuthorizationPromise;
12483
12541
 
12484
12542
  case 3:
12485
- token = _context6.sent;
12543
+ return _context8.abrupt("return");
12486
12544
 
12487
- if (this.transport.authorization !== token) {
12488
- this.transport.authorization = token;
12545
+ case 4:
12546
+ if (!(typeof this.apiToken === 'function')) {
12547
+ _context8.next = 8;
12548
+ break;
12489
12549
  }
12490
12550
 
12491
- case 5:
12551
+ this.updateAuthorizationPromise = new Promise( /*#__PURE__*/function () {
12552
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee7(resolve, reject) {
12553
+ var token;
12554
+ return regenerator.wrap(function _callee7$(_context7) {
12555
+ while (1) {
12556
+ switch (_context7.prev = _context7.next) {
12557
+ case 0:
12558
+ _context7.prev = 0;
12559
+ _context7.next = 3;
12560
+ return _this2.apiToken();
12561
+
12562
+ case 3:
12563
+ token = _context7.sent;
12564
+
12565
+ if (_this2.transport.authorization !== token) {
12566
+ _this2.transport.authorization = token;
12567
+ }
12568
+
12569
+ resolve();
12570
+ _context7.next = 11;
12571
+ break;
12572
+
12573
+ case 8:
12574
+ _context7.prev = 8;
12575
+ _context7.t0 = _context7["catch"](0);
12576
+ reject(_context7.t0);
12577
+
12578
+ case 11:
12579
+ _context7.prev = 11;
12580
+ _this2.updateAuthorizationPromise = null;
12581
+ return _context7.finish(11);
12582
+
12583
+ case 14:
12584
+ case "end":
12585
+ return _context7.stop();
12586
+ }
12587
+ }
12588
+ }, _callee7, null, [[0, 8, 11, 14]]);
12589
+ }));
12590
+
12591
+ return function (_x6, _x7) {
12592
+ return _ref6.apply(this, arguments);
12593
+ };
12594
+ }());
12595
+ _context8.next = 8;
12596
+ return this.updateAuthorizationPromise;
12597
+
12598
+ case 8:
12492
12599
  case "end":
12493
- return _context6.stop();
12600
+ return _context8.stop();
12494
12601
  }
12495
12602
  }
12496
- }, _callee6, this);
12603
+ }, _callee8, this);
12497
12604
  }));
12498
12605
 
12499
12606
  function updateTransportAuthorization() {
@@ -12505,26 +12612,26 @@
12505
12612
  }, {
12506
12613
  key: "load",
12507
12614
  value: function load(query, options, callback) {
12508
- var _this2 = this;
12615
+ var _this3 = this;
12509
12616
 
12510
12617
  return this.loadMethod(function () {
12511
- return _this2.request('load', {
12618
+ return _this3.request('load', {
12512
12619
  query: query,
12513
12620
  queryType: 'multi'
12514
12621
  });
12515
12622
  }, function (response) {
12516
12623
  return new ResultSet(response, {
12517
- parseDateMeasures: _this2.parseDateMeasures
12624
+ parseDateMeasures: _this3.parseDateMeasures
12518
12625
  });
12519
12626
  }, options, callback);
12520
12627
  }
12521
12628
  }, {
12522
12629
  key: "sql",
12523
12630
  value: function sql(query, options, callback) {
12524
- var _this3 = this;
12631
+ var _this4 = this;
12525
12632
 
12526
12633
  return this.loadMethod(function () {
12527
- return _this3.request('sql', {
12634
+ return _this4.request('sql', {
12528
12635
  query: query
12529
12636
  });
12530
12637
  }, function (response) {
@@ -12536,10 +12643,10 @@
12536
12643
  }, {
12537
12644
  key: "meta",
12538
12645
  value: function meta(options, callback) {
12539
- var _this4 = this;
12646
+ var _this5 = this;
12540
12647
 
12541
12648
  return this.loadMethod(function () {
12542
- return _this4.request('meta');
12649
+ return _this5.request('meta');
12543
12650
  }, function (body) {
12544
12651
  return new Meta(body);
12545
12652
  }, options, callback);
@@ -12547,10 +12654,10 @@
12547
12654
  }, {
12548
12655
  key: "dryRun",
12549
12656
  value: function dryRun(query, options, callback) {
12550
- var _this5 = this;
12657
+ var _this6 = this;
12551
12658
 
12552
12659
  return this.loadMethod(function () {
12553
- return _this5.request('dry-run', {
12660
+ return _this6.request('dry-run', {
12554
12661
  query: query
12555
12662
  });
12556
12663
  }, function (response) {
@@ -12560,16 +12667,16 @@
12560
12667
  }, {
12561
12668
  key: "subscribe",
12562
12669
  value: function subscribe(query, options, callback) {
12563
- var _this6 = this;
12670
+ var _this7 = this;
12564
12671
 
12565
12672
  return this.loadMethod(function () {
12566
- return _this6.request('subscribe', {
12673
+ return _this7.request('subscribe', {
12567
12674
  query: query,
12568
12675
  queryType: 'multi'
12569
12676
  });
12570
12677
  }, function (body) {
12571
12678
  return new ResultSet(body, {
12572
- parseDateMeasures: _this6.parseDateMeasures
12679
+ parseDateMeasures: _this7.parseDateMeasures
12573
12680
  });
12574
12681
  }, _objectSpread(_objectSpread({}, options), {}, {
12575
12682
  subscribe: true