@cubejs-client/core 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cubejs-client-core.esm.js +1 -1
- package/dist/cubejs-client-core.esm.js.map +1 -1
- package/dist/cubejs-client-core.js +350 -384
- package/dist/cubejs-client-core.js.map +1 -1
- package/dist/cubejs-client-core.umd.js +2948 -2968
- package/dist/cubejs-client-core.umd.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-core.esm.js","sources":["../src/time.js","../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 dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport duration from 'dayjs/plugin/duration';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport en from 'dayjs/locale/en';\n\ndayjs.extend(quarterOfYear);\ndayjs.extend(duration);\ndayjs.extend(isoWeek);\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 const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity) => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr) {\n const interval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate, interval, origin) {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from, to, granularity) => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n * @protected\n * @param {string} interval\n * @returns {string}\n */\nexport const diffTimeUnitForInterval = (interval) => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1, i2) => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr) => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DEFAULT_GRANULARITY } from './time';\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\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';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\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 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 { query } = this.loadResponses[0];\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 const originalTimeDimension = query.timeDimensions.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.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 if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex, annotations) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || pivotConfig.fillWithValue || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions[0],\n resultIndex, loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n totalRows() {\n return this.loadResponses[0].total;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on 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 type: cube.type,\n public: cube.public,\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, fetchTimeout }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n this.fetchTimeout = fetchTimeout;\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 signal: this.fetchTimeout ? AbortSignal.timeout(this.fetchTimeout) : undefined,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubeApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n this.castNumerics = typeof options.castNumerics === 'boolean' ? options.castNumerics : false;\n this.networkErrorRetries = options.networkErrorRetries || 0;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n let networkRetries = this.networkErrorRetries;\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 response.error &&\n response.error.toLowerCase() === 'network error' &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response, options = {}) {\n if (\n response.results.length\n ) {\n if (options.castNumerics) {\n response.results.forEach((result) => {\n const numericMembers = Object.entries({\n ...result.annotation.measures,\n ...result.annotation.dimensions,\n }).map(([k, v]) => {\n if (v.type === 'number') {\n return k;\n }\n\n return undefined;\n }).filter(Boolean);\n\n result.data = result.data.map((row) => {\n numericMembers.forEach((key) => {\n if (row[key] != null) {\n row[key] = Number(row[key]);\n }\n });\n\n return row;\n });\n });\n }\n\n if (response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n }\n\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubeApi(apiToken, options);\n\nexport { CubeApi, HttpTransport, ResultSet, RequestError, Meta };\nexport * from './utils';\nexport * from './time';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","args","locale","en","weekStart","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","dayRange","from","to","value","results","start","end","isBefore","isSame","push","add","endOf","parseSqlInterval","intervalStr","interval","parts","split","i","length","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","key","subtractInterval","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isAfter","timeSeriesFromCustomInterval","intervalParsed","offset","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","includes","Array","isArray","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","props","meta","sessionGranularity","state","newQuery","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","groupByToPairs","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","measureFromAxis","axisValues","timeDimensionMember","deserialize","loadResponse","constructor","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","drillDown","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","cubeName","originalTimeDimension","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","seriesNames","shortTitle","chartPivot","obj","axis","resultIndex","measure","concat","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","defaultPivotConfig","fillMissingDates","joinDateRange","mergeDeepLeft","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","timeSeries","timeDimension","annotations","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivot","pivotImpl","groupByXAxis","measureValue","fillWithValue","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","pivots","_","mergePivots","minLengthPivot","current","pivotedRows","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","a","m","tablePivot","isMeasuresPresent","tableColumns","pluck","flatMeta","b","schema","extractFields","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","mergeAll","uniq","aliasedAxis","dropLast","totalRows","total","rawData","field","decompose","serialize","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","public","resolveMember","memberName","error","memberTypes","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","fetchTimeout","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","signal","AbortSignal","timeout","subscribe","callback","RequestError","message","response","status","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","unsubscribe","networkRetries","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","toLowerCase","text","parse","progressCallback","token","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","r","load","dryRun"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-core.esm.js","sources":["../src/time.js","../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 dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport duration from 'dayjs/plugin/duration';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport en from 'dayjs/locale/en';\n\ndayjs.extend(quarterOfYear);\ndayjs.extend(duration);\ndayjs.extend(isoWeek);\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 const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity) => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr) {\n const interval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate, interval, origin) {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from, to, granularity) => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n * @protected\n * @param {string} interval\n * @returns {string}\n */\nexport const diffTimeUnitForInterval = (interval) => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1, i2) => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr) => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DEFAULT_GRANULARITY } from './time';\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\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';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\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 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 { query } = this.loadResponses[0];\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 const originalTimeDimension = query.timeDimensions.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.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 if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex, annotations) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || pivotConfig.fillWithValue || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions[0],\n resultIndex, loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n totalRows() {\n return this.loadResponses[0].total;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on 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 type: cube.type,\n public: cube.public,\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, fetchTimeout }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n this.fetchTimeout = fetchTimeout;\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 signal: this.fetchTimeout ? AbortSignal.timeout(this.fetchTimeout) : undefined,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubeApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n this.castNumerics = typeof options.castNumerics === 'boolean' ? options.castNumerics : false;\n this.networkErrorRetries = options.networkErrorRetries || 0;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n let networkRetries = this.networkErrorRetries;\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 response.error &&\n response.error.toLowerCase() === 'network error' &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response, options = {}) {\n if (\n response.results.length\n ) {\n if (options.castNumerics) {\n response.results.forEach((result) => {\n const numericMembers = Object.entries({\n ...result.annotation.measures,\n ...result.annotation.dimensions,\n }).map(([k, v]) => {\n if (v.type === 'number') {\n return k;\n }\n\n return undefined;\n }).filter(Boolean);\n\n result.data = result.data.map((row) => {\n numericMembers.forEach((key) => {\n if (row[key] != null) {\n row[key] = Number(row[key]);\n }\n });\n\n return row;\n });\n });\n }\n\n if (response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n }\n\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubeApi(apiToken, options);\n\nexport { CubeApi, HttpTransport, ResultSet, RequestError, Meta };\nexport * from './utils';\nexport * from './time';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","args","locale","en","weekStart","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","dayRange","from","to","value","results","start","end","isBefore","isSame","push","add","endOf","parseSqlInterval","intervalStr","interval","parts","split","i","length","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","key","subtractInterval","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isAfter","timeSeriesFromCustomInterval","intervalParsed","offset","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","includes","Array","isArray","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","props","meta","sessionGranularity","state","newQuery","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","y","id","lastIndex","splice","moveItemInArray","list","result","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","memberId","currentOrder","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","groupByToPairs","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","measureFromAxis","axisValues","timeDimensionMember","deserialize","loadResponse","constructor","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","drillDown","drillDownLocator","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","parentFilters","segments","annotation","measureName","drillMembers","cubeName","originalTimeDimension","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","seriesNames","shortTitle","chartPivot","obj","axis","resultIndex","measure","concat","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","defaultPivotConfig","fillMissingDates","joinDateRange","mergeDeepLeft","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","timeSeries","timeDimension","annotations","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","pivot","pivotImpl","groupByXAxis","measureValue","fillWithValue","rows","byXValues","groupBy","xGrouped","yValuesMap","allYValues","measureOnX","yGrouped","yValuesArray","pivots","_","mergePivots","minLengthPivot","current","pivotedRows","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","e","a","m","tablePivot","isMeasuresPresent","tableColumns","pluck","flatMeta","b","schema","extractFields","type","currentItem","children","toColumns","item","path","fields","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","mergeAll","uniq","aliasedAxis","dropLast","totalRows","total","rawData","field","decompose","serialize","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","public","resolveMember","memberName","error","memberTypes","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","headers","credentials","fetchTimeout","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","signal","AbortSignal","timeout","subscribe","callback","RequestError","message","response","status","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","unsubscribe","networkRetries","loadImpl","next","subscribeNext","setTimeout","continueWait","wait","toLowerCase","text","parse","progressCallback","token","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","r","load","dryRun"],"mappings":"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"}
|