@cubejs-client/core 1.6.28 → 1.6.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-core.cjs.js","sources":["../src/time.ts","../src/utils.ts","../src/ResultSet.ts","../src/SqlQuery.ts","../src/Meta.ts","../src/ProgressResult.ts","../src/streaming.ts","../src/HttpTransport.ts","../src/RequestError.ts","../src/index.ts"],"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\n// A custom locale for internal use that doesn't affect the global dayjs instance\nconst cubeInternalLocale = 'cube-internal-en';\nconst customLocale = {\n ...en,\n name: cubeInternalLocale,\n weekStart: 1\n};\n(dayjs as any).Ls[cubeInternalLocale] = customLocale;\n\nexport type SqlInterval = string;\n\n// TODO: Define a better type as unitOfTime.DurationConstructor in moment.js\nexport type ParsedInterval = Record<string, number>;\n\nexport type Granularity = {\n interval: SqlInterval;\n origin?: string;\n offset?: SqlInterval;\n};\n\nexport type DayRange = {\n by: (value: any) => dayjs.Dayjs[];\n snapTo: (value: any) => DayRange;\n start: dayjs.Dayjs;\n end: dayjs.Dayjs;\n};\n\nexport type TimeDimensionPredefinedGranularity =\n 'second'\n | 'minute'\n | 'hour'\n | 'day'\n | 'week'\n | 'month'\n | 'quarter'\n | 'year';\n\nexport type TimeDimensionGranularity = TimeDimensionPredefinedGranularity | string;\n\nexport type TGranularityMap = {\n name: TimeDimensionGranularity | undefined;\n title: string;\n};\n\nexport const GRANULARITIES: TGranularityMap[] = [\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: any[]): dayjs.Dayjs => dayjs(...args).locale(cubeInternalLocale);\n\nexport const TIME_SERIES: Record<string, (range: DayRange) => string[]> = {\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: TimeDimensionGranularity): boolean => !!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\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: SqlInterval): ParsedInterval {\n const interval: ParsedInterval = {};\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: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\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: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\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: dayjs.Dayjs, interval: ParsedInterval, origin: dayjs.Dayjs): dayjs.Dayjs {\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\nexport const dayRange = (from: any, to: any, annotations?: Record<string, { granularity?: Granularity }>): DayRange => ({\n by: (value: any) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.startOf(value).isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value: any): DayRange => {\n // Check if this is a custom granularity\n if (!isPredefinedGranularity(value) && annotations) {\n // Try to find the custom granularity metadata\n // The annotation key might be in format \"Cube.dimension.granularity\"\n // So we need to search through all annotations\n let customGranularity: Granularity | undefined;\n\n for (const key of Object.keys(annotations)) {\n if (key.endsWith(`.${value}`) && annotations[key].granularity) {\n customGranularity = annotations[key].granularity;\n break;\n }\n }\n\n if (customGranularity?.interval) {\n // For custom granularities, calculate the range for the bucket\n const intervalParsed = parseSqlInterval(customGranularity.interval);\n let intervalStart = internalDayjs(from);\n\n // origin and offset are mutually exclusive\n // If either is specified, align to it\n if (customGranularity.origin || customGranularity.offset) {\n let origin;\n if (customGranularity.origin) {\n // Absolute origin time\n origin = internalDayjs(customGranularity.origin);\n } else {\n // offset is relative to start of year\n origin = addInterval(internalDayjs().startOf('year'), parseSqlInterval(customGranularity.offset!));\n }\n\n // Align the value to the origin to find the actual bucket start\n intervalStart = alignToOrigin(intervalStart, intervalParsed, origin);\n }\n\n // End is start + interval - 1 millisecond (to stay within the bucket)\n const intervalEnd = addInterval(intervalStart, intervalParsed).subtract(1, 'millisecond');\n\n return dayRange(intervalStart, intervalEnd, annotations);\n }\n }\n\n // Default behavior for predefined granularities\n return dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value), annotations);\n },\n start: internalDayjs(from),\n end: internalDayjs(to),\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: string, to: string, granularity: Granularity): string[] => {\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 */\nexport const diffTimeUnitForInterval = (interval: string): string => {\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: string, i2: string): string => {\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: string): string => {\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 { DeeplyReadonly } from './index';\nimport { DEFAULT_GRANULARITY } from './time';\nimport {\n Filter,\n PivotConfig,\n Query,\n QueryOrder,\n TDefaultHeuristicsOptions,\n TDefaultHeuristicsResponse,\n TDefaultHeuristicsState,\n TFlatFilter,\n TOrderMember,\n TQueryOrderArray,\n TQueryOrderObject,\n TSourceAxis\n} from './types';\n\nexport function removeEmptyQueryFields(_query: DeeplyReadonly<Query>) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query).flatMap(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n } else if (!Object.keys(value).length) {\n return [];\n }\n }\n\n return [[key, value]];\n })\n );\n}\n\nexport function validateQuery(_query: DeeplyReadonly<Query> | null | undefined): Query {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => 'operator' in f),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1: DeeplyReadonly<Query> | null, query2: DeeplyReadonly<Query> | null): boolean {\n return (\n equals(\n Object.entries(query1?.order || {}),\n Object.entries(query2?.order || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query: DeeplyReadonly<Query>): { [key: string]: QueryOrder } {\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(\n newState: TDefaultHeuristicsState,\n oldQuery: Query,\n options: TDefaultHeuristicsOptions\n): TDefaultHeuristicsResponse {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state: TDefaultHeuristicsResponse = {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\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 {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n ...newState,\n };\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?.granularity || granularity,\n dateRange: 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: DeeplyReadonly<Query | Query[]> | null | undefined): boolean {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => q.measures?.length || q.dimensions?.length || q.timeDimensions?.length\n );\n}\n\nexport function movePivotItem(\n pivotConfig: PivotConfig,\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n): PivotConfig {\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<T = any>(list: T[], sourceIndex: number, destinationIndex: number): T[] {\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: Filter[] = []): TFlatFilter[] {\n return filters.reduce<TFlatFilter[]>((memo, filter) => {\n if ('or' in filter) {\n return [...memo, ...flattenFilters(filter.or)];\n }\n\n if ('and' in filter) {\n return [...memo, ...flattenFilters(filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query: DeeplyReadonly<Query> = {}): string[] {\n const keys = ['measures', 'dimensions', 'segments'] as const;\n const members = new Set<string>();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n const filters = flattenFilters(query.filters as Filter[]);\n filters.forEach((filter) => {\n const member = filter.dimension || filter.member;\n if (typeof member === 'string') {\n members.add(member);\n }\n });\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers: any[], order: TQueryOrderObject | TQueryOrderArray): TOrderMember[] {\n const ids = new Set<string>();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers: TOrderMember[] = [];\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: string[], index: number, pivotConfig?: Partial<PivotConfig>, duplicateMeasures: Set<string> = new Set()) {\n const nonNullValues = values.filter((value: any) => value != null);\n\n if (pivotConfig?.aliasSeries?.[index]) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n 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';\nimport {\n Annotation,\n ChartPivotRow, DateRange,\n DrillDownLocator,\n LoadResponse,\n LoadResponseResult, Pivot,\n PivotConfig, PivotConfigFull,\n PivotQuery,\n PivotRow,\n Query,\n QueryAnnotations, QueryType,\n SerializedResult,\n Series,\n SeriesNamesColumn,\n TableColumn,\n TimeDimension\n} from './types';\n\nconst groupByToPairs = function groupByToPairsImpl<T, K>(keyFn: (item: T) => K): (data: T[]) => [K, T[]][] {\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: any[][]): any[] => {\n const res: any[] = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE: Record<string, QueryType> = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nexport type ResultSetOptions = {\n parseDateMeasures?: boolean;\n};\n\n/**\n * Provides a convenient interface for data manipulation.\n */\nexport default class ResultSet<T extends Record<string, any> = any> {\n private readonly loadResponse: LoadResponse<T>;\n\n private readonly loadResponses: LoadResponseResult<T>[];\n\n private readonly queryType: QueryType;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly options: {};\n\n private readonly backwardCompatibleData: Record<string, any>[][];\n\n public static measureFromAxis(axisValues: string[]): string {\n return axisValues[axisValues.length - 1];\n }\n\n public static timeDimensionMember(td: TimeDimension) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n /**\n * ```js\n * import { ResultSet } from '@cubejs-client/core';\n *\n * const resultSet = await cubeApi.load(query);\n * // You can store the result somewhere\n * const tmp = resultSet.serialize();\n *\n * // and restore it later\n * const resultSet = ResultSet.deserialize(tmp);\n * ```\n * @param data the result of [serialize](#result-set-serialize)\n * @param options\n */\n public static deserialize<TData extends Record<string, any> = any>(data: SerializedResult, options?: Object): ResultSet<TData> {\n return new ResultSet(data.loadResponse, options);\n }\n\n public constructor(loadResponse: LoadResponse<T> | LoadResponseResult<T>, options: ResultSetOptions = {}) {\n if ('queryType' in loadResponse && loadResponse.queryType != null) {\n this.loadResponse = loadResponse;\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse = {\n ...loadResponse,\n pivotQuery: {\n ...loadResponse.query,\n queryType: this.queryType\n }\n } as LoadResponse<T>;\n this.loadResponses = [loadResponse as LoadResponseResult<T>];\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 /**\n * Returns a measure drill down query.\n *\n * Provided you have a measure with the defined `drillMembers` on the `Orders` cube\n * ```js\n * measures: {\n * count: {\n * type: `count`,\n * drillMembers: [Orders.status, Users.city, count],\n * },\n * // ...\n * }\n * ```\n *\n * Then you can use the `drillDown` method to see the rows that contribute to that metric\n * ```js\n * resultSet.drillDown(\n * {\n * xValues,\n * yValues,\n * },\n * // you should pass the `pivotConfig` if you have used it for axes manipulation\n * pivotConfig\n * )\n * ```\n *\n * the result will be a query with the required filters applied and the dimensions/measures filled out\n * ```js\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Orders.status', 'Users.city'],\n * filters: [\n * // dimension and measure filters\n * ],\n * timeDimensions: [\n * //...\n * ]\n * }\n * ```\n *\n * In case when you want to add `order` or `limit` to the query, you can simply spread it\n *\n * ```js\n * // An example for React\n * const drillDownResponse = useCubeQuery(\n * {\n * ...drillDownQuery,\n * limit: 30,\n * order: {\n * 'Orders.ts': 'desc'\n * }\n * },\n * {\n * skip: !drillDownQuery\n * }\n * );\n * ```\n * @returns Drill down query\n */\n public drillDown(drillDownLocator: DrillDownLocator, pivotConfig?: PivotConfig): Query | null {\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 = drillDownLocator?.xValues ?? [];\n const yValues = drillDownLocator?.yValues ?? [];\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values: string[][] = [];\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, timeDimensions: timeDimensionsAnnotation } = 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]?.drillMembers?.length ?? 0)) {\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 // dayRange.snapTo now handles both predefined and custom granularities\n const range = dayRange(value, value, timeDimensionsAnnotation).snapTo(granularity);\n\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 Array.isArray(query.timeDimensions) &&\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 /**\n * Returns an array of series with key, title and series data.\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.series() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * series: [\n * { x: '2015-01-01T00:00:00', value: 27120 },\n * { x: '2015-02-01T00:00:00', value: 25861 },\n * { x: '2015-03-01T00:00:00', value: 29661 },\n * //...\n * ],\n * },\n * ]\n * ```\n */\n public series<SeriesItem = any>(pivotConfig?: PivotConfig): Series<SeriesItem>[] {\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 } as Series<SeriesItem>));\n }\n\n private axisValues(axis: string[], resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return (row: Record<string, any>) => {\n const value = (measure?: string) => axis\n .filter(d => d !== 'measures')\n .map((d: string) => {\n const val = row[d];\n return val != null ? val : null;\n })\n .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 private axisValuesString(axisValues: (string | number)[], delimiter: string = ', '): string {\n const formatValue = (v: string | number) => {\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 public static getNormalizedPivotConfig(query?: PivotQuery, pivotConfig?: PivotConfig): PivotConfigFull {\n const defaultPivotConfig: PivotConfig = {\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 const normalizedPivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig) as PivotConfigFull;\n\n const substituteTimeDimensionMembers = (axis: string[]) => 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 normalizedPivotConfig.x = substituteTimeDimensionMembers(normalizedPivotConfig.x);\n normalizedPivotConfig.y = substituteTimeDimensionMembers(normalizedPivotConfig.y);\n\n const allIncludedDimensions = normalizedPivotConfig.x.concat(normalizedPivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key: string) => allDimensions.includes(key) || key === 'measures';\n\n normalizedPivotConfig.x = normalizedPivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(dimensionFilter);\n\n if (!normalizedPivotConfig.x.concat(normalizedPivotConfig.y).find(d => d === 'measures')) {\n normalizedPivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !normalizedPivotConfig.y.concat(normalizedPivotConfig.x).includes('compareDateRange')) {\n normalizedPivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n normalizedPivotConfig.x = normalizedPivotConfig.x.filter(d => d !== 'measures');\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(d => d !== 'measures');\n }\n\n return normalizedPivotConfig;\n }\n\n public normalizePivotConfig(pivotConfig?: PivotConfig): PivotConfigFull {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n public timeSeries(timeDimension: TimeDimension, resultIndex?: number, annotations?: Record<string, Annotation>) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let dateRange: DateRange | null | undefined;\n dateRange = timeDimension.dateRange;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const rawRows: Record<string, any>[] = this.timeDimensionBackwardCompatibleData(resultIndex || 0);\n\n const dates = rawRows\n .map(row => {\n const value = row[member];\n return value ? internalDayjs(value) : null;\n })\n .filter((d): d is dayjs.Dayjs => Boolean(d));\n\n dateRange = dates.length && [\n (reduce(minBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n (reduce(maxBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n (timeDimension.dateRange as string[]).find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end, annotations);\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 /**\n * Base method for pivoting [ResultSet](#result-set) data.\n * Most of the time shouldn't be used directly and [chartPivot](#result-set-chart-pivot)\n * or [tablePivot](#table-pivot) should be used instead.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-03-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.pivot({ x: ['Stories.time'], y: ['measures'] }) will return\n * [\n * {\n * xValues: [\"2015-01-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 27120]\n * ]\n * },\n * {\n * xValues: [\"2015-02-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 25861]\n * ]\n * },\n * {\n * xValues: [\"2015-03-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 29661]\n * ]\n * }\n * ]\n * ```\n * @returns An array of pivoted rows.\n */\n public pivot(pivotConfig?: PivotConfig): PivotRow[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs<{ xValues: string[], row: Record<string, any> }, string>(({ xValues }) => this.axisValuesString(xValues));\n const measureValue = (row: Record<string, any>, measure: string) => row[measure] ?? normalizedPivotConfig.fillWithValue ?? 0;\n\n if (\n normalizedPivotConfig.fillMissingDates &&\n normalizedPivotConfig.x.length === 1 &&\n (equals(\n normalizedPivotConfig.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,\n 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: [string, { xValues: string[], row: Record<string, any> }[]][] = pipe(\n map((row: Record<string, any>) => this.axisValues(normalizedPivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap: Record<string, any> = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(normalizedPivotConfig.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((normalizedPivotConfig.x).find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped: Record<string, any> = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(normalizedPivotConfig.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, normalizedPivotConfig.joinDateRange || false)\n : pivotImpl();\n }\n\n private mergePivots(pivots: Pivot[][], joinDateRange: ((pivots: Pivot, joinDateRange: any) => PivotRow[]) | false): PivotRow[] {\n const minLengthPivot: Pivot[] = pivots.reduce<Pivot[] | null>(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n ) || [];\n\n return minLengthPivot.map((_: any, index: number) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => 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 /**\n * Returns normalized query result data in the following format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.chartPivot() will return\n * [\n * { \"x\":\"2015-01-01T00:00:00\", \"Stories.count\": 27120, \"xValues\": [\"2015-01-01T00:00:00\"] },\n * { \"x\":\"2015-02-01T00:00:00\", \"Stories.count\": 25861, \"xValues\": [\"2015-02-01T00:00:00\"] },\n * { \"x\":\"2015-03-01T00:00:00\", \"Stories.count\": 29661, \"xValues\": [\"2015-03-01T00:00:00\"] },\n * //...\n * ]\n *\n * ```\n * When using `chartPivot()` or `seriesNames()`, you can pass `aliasSeries` in the [pivotConfig](#types-pivot-config)\n * to give each series a unique prefix. This is useful for `blending queries` which use the same measure multiple times.\n *\n * ```js\n * // For the queries\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * },\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * filters: [\n * {\n * member: 'Stores.read',\n * operator: 'equals',\n * value: ['true'],\n * },\n * ],\n * },\n *\n * // ResultSet.chartPivot({ aliasSeries: ['one', 'two'] }) will return\n * [\n * {\n * x: '2015-01-01T00:00:00',\n * 'one,Stories.count': 27120,\n * 'two,Stories.count': 8933,\n * xValues: ['2015-01-01T00:00:00'],\n * },\n * {\n * x: '2015-02-01T00:00:00',\n * 'one,Stories.count': 25861,\n * 'two,Stories.count': 8344,\n * xValues: ['2015-02-01T00:00:00'],\n * },\n * {\n * x: '2015-03-01T00:00:00',\n * 'one,Stories.count': 29661,\n * 'two,Stories.count': 9023,\n * xValues: ['2015-03-01T00:00:00'],\n * },\n * //...\n * ]\n * ```\n */\n public chartPivot(pivotConfig?: PivotConfig): ChartPivotRow[] {\n const validate = (value: string) => {\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<string>();\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: Record<string, number | string | Date> = {};\n\n yValuesArray\n .forEach(([yValues, m]: [string[], string], i: number) => {\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 } as ChartPivotRow);\n });\n }\n\n /**\n * Returns normalized query result data prepared for visualization in the table format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tablePivot() will return\n * [\n * { \"Stories.time\": \"2015-01-01T00:00:00\", \"Stories.count\": 27120 },\n * { \"Stories.time\": \"2015-02-01T00:00:00\", \"Stories.count\": 25861 },\n * { \"Stories.time\": \"2015-03-01T00:00:00\", \"Stories.count\": 29661 },\n * //...\n * ]\n * ```\n * @returns An array of pivoted rows\n */\n public tablePivot(pivotConfig?: PivotConfig): Array<{ [key: string]: string | number | boolean }> {\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 [\n ...(normalizedPivotConfig.x).map((key, index): [string, string | number] => [\n key,\n xValues[index]\n ]),\n ...(isMeasuresPresent\n ? yValuesArray.map(([yValues, measure]): [string, string | number] => [\n yValues.length ? yValues.join() : 'value',\n measure\n ])\n : [])\n ]\n ));\n }\n\n /**\n * Returns an array of column definitions for `tablePivot`.\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tableColumns() will return\n * [\n * {\n * key: 'Stories.time',\n * dataIndex: 'Stories.time',\n * title: 'Stories Time',\n * shortTitle: 'Time',\n * type: 'time',\n * format: undefined,\n * },\n * {\n * key: 'Stories.count',\n * dataIndex: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * type: 'count',\n * format: undefined,\n * },\n * //...\n * ]\n * ```\n *\n * In case we want to pivot the table axes\n * ```js\n * // Let's take this query as an example\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Users.country', 'Users.gender']\n * }\n *\n * // and put the dimensions on `y` axis\n * resultSet.tableColumns({\n * x: [],\n * y: ['Users.country', 'Users.gender', 'measures']\n * })\n * ```\n *\n * then `tableColumns` will group the table head and return\n * ```js\n * {\n * key: 'Germany',\n * type: 'string',\n * title: 'Users Country Germany',\n * shortTitle: 'Germany',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * key: 'male',\n * type: 'string',\n * title: 'Users Gender male',\n * shortTitle: 'male',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.male.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * {\n * // ...\n * shortTitle: 'female',\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.female.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * ],\n * },\n * // ...\n * ```\n * @returns An array of columns\n */\n public tableColumns(pivotConfig?: PivotConfig): TableColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n\n const annotations: QueryAnnotations = this.loadResponses\n .map((r) => r.annotation)\n .reduce<QueryAnnotations>((acc, annotation) => mergeDeepLeft(acc, annotation) as QueryAnnotations,\n {\n dimensions: {},\n measures: {},\n timeDimensions: {},\n segments: {},\n });\n\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema: Record<string, any> = {};\n\n const extractFields = (key: string) => {\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]?.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}`]?.children || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item: Record<string, any> = {}, path: string[] = []): TableColumn[] => {\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 } as TableColumn;\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n } as TableColumn;\n });\n };\n\n let otherColumns: TableColumn[] = [];\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 // Synthetic 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).map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n } as TableColumn;\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n public totalRow(pivotConfig?: PivotConfig): ChartPivotRow {\n return this.chartPivot(pivotConfig)[0];\n }\n\n public categories(pivotConfig?: PivotConfig): ChartPivotRow[] {\n return this.chartPivot(pivotConfig);\n }\n\n /**\n * Returns an array of series objects, containing `key` and `title` parameters.\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.seriesNames() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * yValues: ['Stories.count'],\n * },\n * ]\n * ```\n * @returns An array of series names\n */\n public seriesNames(pivotConfig?: PivotConfig): SeriesNamesColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = this.loadResponses\n .map(r => r.annotation.measures)\n .reduce((acc, m) => ({ ...acc, ...m }), {});\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(normalizedPivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n\n const duplicateMeasures = new Set<string>();\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, normalizedPivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n normalizedPivotConfig.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 normalizedPivotConfig.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 public query(): 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 public pivotQuery(): PivotQuery {\n return this.loadResponse.pivotQuery || null;\n }\n\n /**\n * @return the total number of rows if the `total` option was set, when sending the query\n */\n public totalRows(): number | null | undefined {\n return this.loadResponses[0].total;\n }\n\n public rawData(): T[] {\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 public annotation(): QueryAnnotations {\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 private timeDimensionBackwardCompatibleData(resultIndex: number) {\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 => {\n const foundTd = timeDimensions.find(d => d.dimension === field);\n return foundTd && !row[ResultSet.timeDimensionMember(foundTd)];\n }\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 /**\n * Can be used when you need access to the methods that can't be used with some query types (eg `compareDateRangeQuery` or `blendingQuery`)\n * ```js\n * resultSet.decompose().forEach((currentResultSet) => {\n * console.log(currentResultSet.rawData());\n * });\n * ```\n */\n public decompose(): ResultSet<any>[] {\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 /**\n * Can be used to stash the `ResultSet` in a storage and restored later with [deserialize](#result-set-deserialize)\n */\n public serialize(): SerializedResult {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n","export type SqlQueryTuple = [string, any[], any?];\n\nexport type SqlData = {\n aliasNameToMember: Record<string, string>;\n cacheKeyQueries: SqlQueryTuple[];\n dataSource: string;\n external: boolean;\n sql: SqlQueryTuple;\n preAggregations: any[];\n rollupMatchResults: any[];\n};\n\nexport type SqlQueryWrapper = { sql: SqlData };\n\nexport default class SqlQuery {\n private readonly sqlQuery: SqlQueryWrapper;\n\n public constructor(sqlQuery: SqlQueryWrapper) {\n this.sqlQuery = sqlQuery;\n }\n\n public rawQuery(): SqlData {\n return this.sqlQuery.sql;\n }\n\n public sql(): string {\n return this.rawQuery().sql[0];\n }\n}\n","import { unnest, fromPairs } from 'ramda';\nimport {\n Cube,\n CubesMap,\n MemberType,\n MetaResponse,\n TCubeMeasure,\n TCubeDimension,\n TCubeMember,\n TCubeMemberByType,\n Query,\n FilterOperator,\n TCubeSegment,\n NotFoundMember,\n} from './types';\nimport { DeeplyReadonly } from './index';\n\nexport interface CubeMemberWrapper<T> {\n cubeName: string;\n cubeTitle: string;\n type: 'view' | 'cube';\n public: boolean;\n members: T[];\n}\n\nexport type AggregatedMembers = {\n measures: CubeMemberWrapper<TCubeMeasure>[];\n dimensions: CubeMemberWrapper<TCubeDimension>[];\n segments: CubeMemberWrapper<TCubeSegment>[];\n timeDimensions: CubeMemberWrapper<TCubeDimension>[];\n};\n\nconst memberMap = (memberArray: any[]) => fromPairs(\n memberArray.map((m) => [m.name, m])\n);\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 */\nexport default class Meta {\n /**\n * Raw meta response\n */\n public readonly meta: MetaResponse;\n\n /**\n * An array of all available cubes with their members\n */\n public readonly cubes: Cube[];\n\n /**\n * A map of all cubes where the key is a cube name\n */\n public readonly cubesMap: CubesMap;\n\n public constructor(metaResponse: 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 /**\n * Get all members of a specific type for a given query.\n * If empty query is provided no filtering is done based on query context and all available members are retrieved.\n * @param _query - context query to provide filtering of members available to add to this query\n * @param memberType\n */\n public membersForQuery(_query: DeeplyReadonly<Query> | null, memberType: MemberType): (TCubeMeasure | TCubeDimension | TCubeMember | TCubeSegment)[] {\n return unnest(this.cubes.map((c) => c[memberType]))\n .sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n public membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce<AggregatedMembers>(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members: TCubeMeasure[] | TCubeDimension[] | TCubeSegment[] = [];\n\n // eslint-disable-next-line default-case\n switch (key) {\n case 'measures':\n members = cube.measures || [];\n break;\n case 'dimensions':\n members = cube.dimensions || [];\n break;\n case 'segments':\n members = cube.segments || [];\n break;\n case 'timeDimensions':\n members = cube.dimensions.filter((m) => m.type === 'time') || [];\n break;\n }\n\n // TODO: Convince TS this is working\n // @ts-ignore\n memo[key].push({\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members,\n });\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n } as AggregatedMembers\n );\n }\n\n /**\n * Get meta information for a cube member\n * meta information contains:\n * ```javascript\n * {\n * name,\n * title,\n * shortTitle,\n * type,\n * description,\n * format\n * }\n * ```\n * @param memberName - Fully qualified member name in a form `Cube.memberName`\n * @param memberType\n * @return An object containing meta information about member\n */\n public resolveMember<T extends MemberType>(\n memberName: string,\n memberType: T | T[]\n ): NotFoundMember | TCubeMemberByType<T> {\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 as TCubeMemberByType<T>;\n }\n\n public defaultTimeDimensionNameFor(memberName: string): string | null | undefined {\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 public filterOperatorsForMember(memberName: string, memberType: MemberType | MemberType[]): FilterOperator[] {\n const member = this.resolveMember(memberName, memberType);\n\n if ('error' in member || !('type' in member) || member.type === 'boolean') {\n return operators.string;\n }\n\n return operators[member.type] || operators.string;\n }\n}\n","import { ProgressResponse } from './types';\n\nexport default class ProgressResult {\n private progressResponse: ProgressResponse;\n\n public constructor(progressResponse: ProgressResponse) {\n this.progressResponse = progressResponse;\n }\n\n public stage(): string {\n return this.progressResponse.stage;\n }\n\n public timeElapsed(): number {\n return this.progressResponse.timeElapsed;\n }\n}\n","export async function* responseChunks(res: Response): AsyncIterable<Uint8Array> {\n // eslint-disable-next-line prefer-destructuring\n const body: any = res.body;\n\n if (body && typeof body.getReader === 'function') {\n const reader = body.getReader(); // Browser / Node native fetch\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) yield value; // Uint8Array\n }\n } finally {\n reader.releaseLock?.();\n }\n return;\n }\n\n // Node.js Readable (node-fetch v2 via cross-fetch)\n if (body && Symbol.asyncIterator in body) {\n for await (const chunk of body as AsyncIterable<Buffer | Uint8Array | string>) {\n if (typeof chunk === 'string') {\n // Convert string chunks to bytes (rare, but safe)\n yield new TextEncoder().encode(chunk);\n } else {\n yield new Uint8Array(chunk);\n }\n }\n return;\n }\n\n throw new Error('Unsupported response body type for streaming');\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\nimport { responseChunks } from './streaming';\n\nexport interface ErrorResponse {\n error: string;\n}\n\nexport type TransportOptions = {\n /**\n * [jwt auth token](security)\n */\n authorization?: string;\n /**\n * path to `/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * custom headers\n */\n headers: Record<string, string>;\n credentials?: 'omit' | 'same-origin' | 'include';\n method?: 'GET' | 'PUT' | 'POST' | 'PATCH';\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n};\n\nexport interface ITransportResponse<R> {\n subscribe: <CBResult>(\n cb: (\n result: R | ErrorResponse,\n resubscribe: () => Promise<CBResult>\n ) => CBResult\n ) => Promise<CBResult>;\n // Optional, supported in WebSocketTransport\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamResponse {\n stream(): Promise<AsyncIterable<Uint8Array>>;\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamParams<T extends Record<string, unknown> = Record<string, unknown>> {\n method?: 'GET' | 'POST' | 'PUT' | 'PATCH';\n fetchTimeout?: number;\n baseRequestId?: string;\n signal?: AbortSignal;\n params?: T;\n}\n\nexport interface ITransport<R> {\n request(\n method: string,\n params: Record<string, unknown>\n ): ITransportResponse<R>;\n requestStream?<T extends Record<string, unknown> = Record<string, unknown>>(\n method: string,\n params: ITransportStreamParams<T>\n ): ITransportStreamResponse;\n authorization: TransportOptions['authorization'];\n}\n\n/**\n * Default transport implementation.\n */\nexport class HttpTransport implements ITransport<Response> {\n public authorization: TransportOptions['authorization'];\n\n protected apiUrl: TransportOptions['apiUrl'];\n\n protected method: TransportOptions['method'];\n\n protected headers: TransportOptions['headers'];\n\n protected credentials: TransportOptions['credentials'];\n\n protected fetchTimeout: number | undefined;\n\n private readonly signal: AbortSignal | undefined;\n\n public constructor({\n authorization,\n apiUrl,\n method,\n headers = {},\n credentials,\n fetchTimeout,\n signal,\n }: Omit<TransportOptions, 'headers'> & {\n headers?: TransportOptions['headers'];\n }) {\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 this.signal = signal;\n }\n\n public request(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, ...params }: any\n ): ITransportResponse<Response> {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params &&\n Object.keys(params)\n .map((k) => ({\n [k]:\n typeof params[k] === 'object'\n ? JSON.stringify(params[k])\n : params[k],\n }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod =\n method ?? this.method ?? (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n const actualSignal =\n signal ||\n this.signal ||\n (effectiveFetchTimeout\n ? AbortSignal.timeout(effectiveFetchTimeout)\n : undefined);\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':\n baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null,\n signal: actualSignal,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n try {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n } catch (e: any) {\n let errorMessage = 'network Error';\n\n if (e.name === 'AbortError') {\n if (\n actualSignal?.reason === 'TimeoutError' ||\n actualSignal?.reason?.name === 'TimeoutError'\n ) {\n errorMessage = 'timeout';\n } else {\n errorMessage = 'aborted';\n }\n }\n\n const result: ErrorResponse = { error: errorMessage };\n return callback(result, () => this.subscribe(callback));\n }\n },\n };\n }\n\n public requestStream<T extends Record<string, unknown> = Record<string, unknown>>(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, params }: ITransportStreamParams<T>\n ): ITransportStreamResponse {\n const processedParams: Record<string, string> = {};\n\n // Handle the generic params object\n if (params) {\n Object.keys(params).forEach((k) => {\n const value = params[k];\n if (value !== undefined) {\n processedParams[k] = typeof value === 'object' ? JSON.stringify(value) : String(value);\n }\n });\n }\n\n const searchParams = new URLSearchParams(processedParams);\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod = method ?? this.method ?? 'POST';\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n\n let controller: AbortController | undefined;\n let actualSignal: AbortSignal | undefined = signal || this.signal;\n\n if (!actualSignal && effectiveFetchTimeout) {\n controller = new AbortController();\n actualSignal = controller.signal;\n setTimeout(() => controller?.abort(), effectiveFetchTimeout);\n }\n\n return {\n stream: async () => {\n const response = await fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId || 'stream-request',\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params || {}) : null,\n signal: actualSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n if (!response.body) {\n throw new Error('No response body available for streaming');\n }\n\n return responseChunks(response);\n },\n unsubscribe: async () => {\n if (controller) {\n controller.abort();\n }\n },\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n public response: any;\n\n public status: number;\n\n public constructor(message: string, response: any, status: number) {\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, { ErrorResponse, ITransport, TransportOptions } from './HttpTransport';\nimport RequestError from './RequestError';\nimport {\n CacheMode,\n ExtractTimeMembers,\n LoadResponse,\n MetaResponse,\n PivotQuery,\n ProgressResponse,\n Query,\n QueryOrder,\n QueryType,\n TransformedQuery\n} from './types';\n\nexport type LoadMethodCallback<T> = (error: Error | null, resultSet: T) => void;\n\nexport type LoadMethodOptions = {\n /**\n * Key to store the current request's MUTEX inside the `mutexObj`. MUTEX object is used to reject orphaned queries results when new queries are sent. For example: if two queries are sent with the same `mutexKey` only the last one will return results.\n */\n mutexKey?: string;\n /**\n * Object to store MUTEX\n */\n mutexObj?: { [key: string]: any };\n /**\n * Pass `true` to use continuous fetch behavior.\n */\n subscribe?: boolean;\n /**\n * A Cube API instance. If not provided will be taken from `CubeProvider`\n */\n // eslint-disable-next-line no-use-before-define\n cubeApi?: CubeApi;\n /**\n * If enabled, all members of the 'number' type will be automatically converted to numerical values on the client side\n */\n castNumerics?: boolean;\n /**\n * Function that receives `ProgressResult` on each `Continue wait` message.\n */\n progressCallback?(result: ProgressResult): void;\n /**\n * Server-side cache policy for query execution. Does not control client-side caching.\n */\n cache?: CacheMode;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n\n /**\n * Client provided request ID, if client wants to track request onb their own\n */\n baseRequestId?: string;\n};\n\nexport type DeeplyReadonly<T> = {\n readonly [K in keyof T]: DeeplyReadonly<T[K]>;\n};\n\nexport type ExtractMembers<T extends DeeplyReadonly<Query>> =\n | (T extends { dimensions: readonly (infer Names)[]; } ? Names : never)\n | (T extends { measures: readonly (infer Names)[]; } ? Names : never)\n | (T extends { timeDimensions: (infer U); } ? ExtractTimeMembers<U> : never);\n\n// If we can't infer any members at all, then return any.\nexport type SingleQueryRecordType<T extends DeeplyReadonly<Query>> = ExtractMembers<T> extends never\n ? any\n : { [K in string & ExtractMembers<T>]: string | number | boolean | null };\n\nexport type QueryArrayRecordType<T extends DeeplyReadonly<Query[]>> =\n T extends readonly [infer First, ...infer Rest]\n ? SingleQueryRecordType<DeeplyReadonly<First>> | QueryArrayRecordType<Rest & DeeplyReadonly<Query[]>>\n : never;\n\nexport type QueryRecordType<T extends DeeplyReadonly<Query | Query[]>> =\n T extends DeeplyReadonly<Query[]> ? QueryArrayRecordType<T> :\n T extends DeeplyReadonly<Query> ? SingleQueryRecordType<T> :\n never;\n\nexport interface UnsubscribeObj {\n /**\n * Allows to stop requests in-flight in long polling or web socket subscribe loops.\n * It doesn't cancel any submitted requests to the underlying databases.\n */\n unsubscribe(): Promise<void>;\n}\n\n/**\n * @deprecated use DryRunResponse\n */\nexport type TDryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type DryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type CubeSqlOptions = LoadMethodOptions & {\n /**\n * Query timeout in milliseconds\n */\n timeout?: number;\n};\n\nexport type CubeSqlSchemaColumn = {\n name: string;\n // eslint-disable-next-line camelcase\n column_type: string;\n};\n\nexport type CubeSqlResult = {\n schema: CubeSqlSchemaColumn[];\n data: (string | number | boolean | null)[][];\n lastRefreshTime?: string;\n};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\n lastRefreshTime?: string;\n} | {\n type: 'data';\n data: (string | number | boolean | null)[];\n} | {\n type: 'error';\n error: string;\n};\n\ninterface BodyResponse {\n error?: string;\n [key: string]: any;\n}\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\nfunction mutexPromise<T>(promise: Promise<T>): Promise<T | null> {\n return promise\n .then((result) => result)\n .catch((error) => {\n if (error !== MUTEX_ERROR) {\n throw error;\n }\n\n return null;\n });\n}\n\nexport type ResponseFormat = 'compact' | 'default' | undefined;\n\nexport type CubeApiOptions = {\n /**\n * URL of your Cube.js Backend. By default, in the development environment it is `http://localhost:4000/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * Transport implementation to use. [HttpTransport](#http-transport) will be used by default.\n */\n transport?: ITransport<any>;\n method?: TransportOptions['method'];\n headers?: TransportOptions['headers'];\n pollInterval?: number;\n credentials?: TransportOptions['credentials'];\n parseDateMeasures?: boolean;\n resType?: 'default' | 'compact';\n castNumerics?: boolean;\n /**\n * How many network errors would be retried before returning to users. Default to 0.\n */\n networkErrorRetries?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n};\n\n/**\n * Main class for accessing Cube API\n */\nclass CubeApi {\n private readonly apiToken: string | (() => Promise<string>) | (CubeApiOptions & any[]) | undefined;\n\n private readonly apiUrl: string;\n\n private readonly method: TransportOptions['method'];\n\n private readonly headers: TransportOptions['headers'];\n\n private readonly credentials: TransportOptions['credentials'];\n\n protected readonly transport: ITransport<any>;\n\n private readonly pollInterval: number;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly castNumerics: boolean;\n\n private readonly networkErrorRetries: number;\n\n private updateAuthorizationPromise: Promise<any> | null;\n\n public constructor(apiToken: string | (() => Promise<string>) | undefined, options: CubeApiOptions);\n\n public constructor(options: CubeApiOptions);\n\n /**\n * Creates an instance of the `CubeApi`. The API entry point.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * 'CUBE-API-TOKEN',\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n *\n * You can also pass an async function or a promise that will resolve to the API token\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * async () => await Auth.getJwtToken(),\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n */\n public constructor(\n apiToken: string | (() => Promise<string>) | undefined | CubeApiOptions,\n options?: CubeApiOptions\n ) {\n if (apiToken && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n\n if (!options || (!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\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'string' ? apiToken : undefined,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials,\n fetchTimeout: options.fetchTimeout,\n signal: options.signal\n });\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 protected request(method: string, params?: any) {\n return this.transport.request(method, {\n ...params,\n baseRequestId: params?.baseRequestId || uuidv4(),\n });\n }\n\n private loadMethod(request: CallableFunction, toResult: CallableFunction, options?: LoadMethodOptions, callback?: CallableFunction) {\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 (options &&\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: Response | ErrorResponse, next: CallableFunction) => {\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<void>(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait: boolean = false) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise<void>(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 (('status' in response && response.status === 502) ||\n ('error' in response && response.error?.toLowerCase() === 'network error') &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n // From here we're sure that response is only fetch Response\n response = (response as Response);\n let body: BodyResponse = {};\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?.includes('Continue wait')) {\n await checkMutex();\n if (options?.progressCallback) {\n options.progressCallback(new ProgressResult(body as ProgressResponse));\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 || (response as any).error || '', body, response.status);\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: Promise<any> = requestPromise\n .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 private async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n const tokenFetcher = this.apiToken;\n\n if (typeof tokenFetcher === 'function') {\n const promise = (async () => {\n try {\n const token = await tokenFetcher();\n\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n } finally {\n this.updateAuthorizationPromise = null;\n }\n })();\n\n this.updateAuthorizationPromise = promise;\n await promise;\n }\n }\n\n /**\n * Add system properties to a query object.\n */\n private patchQueryInternal(query: DeeplyReadonly<Query>, responseFormat: ResponseFormat): DeeplyReadonly<Query> {\n if (\n responseFormat === 'compact' &&\n query.responseFormat !== 'compact'\n ) {\n return {\n ...query,\n responseFormat: '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 */\n protected loadResponseInternal(response: LoadResponse<any>, options: LoadMethodOptions | null = {}): ResultSet<any> {\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 }).reduce<string[]>((acc, [k, v]) => {\n if (v.type === 'number') {\n acc.push(k);\n }\n return acc;\n }, []);\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 === 'compact') {\n response.results.forEach((result, j) => {\n const data: Record<string, any>[] = [];\n const { dataset, members } = result.data as unknown as { dataset: any[]; members: string[] };\n dataset.forEach((r) => {\n const row: Record<string, any> = {};\n 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 public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n ): UnsubscribeObj;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<any>>,\n responseFormat?: string\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n /**\n * Fetch data for the passed `query`.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * import Chart from 'chart.js';\n * import chartjsConfig from './toChartjsData';\n *\n * const cubeApi = cube('CUBEJS_TOKEN');\n *\n * const resultSet = await cubeApi.load({\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * });\n *\n * const context = document.getElementById('myChart');\n * new Chart(context, chartjsConfig(resultSet));\n * ```\n * @param query - [Query object](/product/apis-integrations/rest-api/query-format)\n * @param options\n * @param callback\n * @param responseFormat\n */\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions, callback?: CallableFunction, responseFormat: ResponseFormat = 'default') {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n\n const params: Record<string, unknown> = {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n };\n\n if (options?.cache) {\n params.cache = options.cache;\n }\n\n return this.loadMethod(\n () => this.request('load', params),\n (response: any) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n private prepareQueryOptions<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions | null, responseFormat: ResponseFormat = 'default'): [query: QueryType, options: LoadMethodOptions] {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === 'compact') {\n if (Array.isArray(query)) {\n const patched = query.map((q) => this.patchQueryInternal(q, 'compact'));\n return [patched as unknown as QueryType, options];\n } else {\n const patched = this.patchQueryInternal(query as DeeplyReadonly<Query>, 'compact');\n return [patched as QueryType, options];\n }\n }\n\n return [query, options];\n }\n\n /**\n * Allows you to fetch data and receive updates over time. See [Real-Time Data Fetch](/product/apis-integrations/rest-api/real-time-data-fetch)\n *\n * ```js\n * // Subscribe to a query's updates\n * const subscription = await cubeApi.subscribe(\n * {\n * measures: ['Logs.count'],\n * timeDimensions: [\n * {\n * dimension: 'Logs.time',\n * granularity: 'hour',\n * dateRange: 'last 1440 minutes',\n * },\n * ],\n * },\n * options,\n * (error, resultSet) => {\n * if (!error) {\n * // handle the update\n * }\n * }\n * );\n *\n * // Unsubscribe from a query's updates\n * subscription.unsubscribe();\n * ```\n */\n public subscribe<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options: LoadMethodOptions | null,\n callback: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n responseFormat: ResponseFormat = 'default'\n ): UnsubscribeObj {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n ) as UnsubscribeObj;\n }\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<SqlQuery>;\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): UnsubscribeObj;\n\n /**\n * Get generated SQL string for the given `query`.\n */\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): Promise<SqlQuery> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('sql', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n public meta(options?: LoadMethodOptions): Promise<Meta>;\n\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): UnsubscribeObj;\n\n /**\n * Get meta description of cubes available for querying.\n */\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): Promise<Meta> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('meta', {\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (body: MetaResponse) => new Meta(body),\n options,\n callback\n );\n }\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<DryRunResponse>;\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): UnsubscribeObj;\n\n /**\n * Get query related meta without query execution\n */\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): Promise<DryRunResponse> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('dry-run', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: DryRunResponse) => response,\n options,\n callback\n );\n }\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions): Promise<CubeSqlResult>;\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): UnsubscribeObj;\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return the results.\n */\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): Promise<CubeSqlResult> | UnsubscribeObj {\n return this.loadMethod(\n () => {\n const cubesqlParams: Record<string, unknown> = {\n query: sqlQuery,\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: options?.baseRequestId,\n throwContinueWait: true,\n };\n\n if (options?.cache) {\n cubesqlParams.cache = options.cache;\n }\n\n const request = this.request('cubesql', cubesqlParams);\n\n return request;\n },\n (response: any) => {\n // TODO: The response is sending both errors and successful results as `error`\n if (!response || !response.error) {\n throw new Error('Invalid response format');\n }\n\n // Check if this is a timeout or abort error from transport\n if (response.error === 'timeout') {\n const timeoutMs = options?.timeout || 5 * 60 * 1000;\n throw new Error(`CubeSQL query timed out after ${timeoutMs}ms`);\n }\n\n if (response.error === 'aborted') {\n throw new Error('CubeSQL query was aborted');\n }\n\n const [schema, ...data] = response.error.split('\\n');\n\n try {\n const parsedSchema = JSON.parse(schema);\n return {\n schema: parsedSchema.schema,\n data: data\n .filter((d: string) => d.trim().length)\n .map((d: string) => JSON.parse(d).data)\n .reduce((a: any, b: any) => a.concat(b), []),\n ...(parsedSchema.lastRefreshTime ? { lastRefreshTime: parsedSchema.lastRefreshTime } : {}),\n };\n } catch (err) {\n throw new Error(response.error);\n }\n },\n options,\n callback\n );\n }\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return streaming results as an async generator.\n * The server returns JSONL (JSON Lines) format with schema first, then data rows.\n */\n public async* cubeSqlStream(sqlQuery: string, options?: CubeSqlOptions): AsyncGenerator<CubeSqlStreamChunk> {\n if (!this.transport.requestStream) {\n throw new Error('Transport does not support streaming');\n }\n\n const streamResponse = this.transport.requestStream('cubesql', {\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: uuidv4(),\n params: {\n query: sqlQuery,\n cache: options?.cache\n }\n });\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n const stream = await streamResponse.stream();\n\n for await (const chunk of stream) {\n buffer += decoder.decode(chunk, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim()) {\n try {\n const parsed = JSON.parse(line);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse JSON line: ${line}`\n };\n }\n }\n }\n }\n\n if (buffer.trim()) {\n try {\n const parsed = JSON.parse(buffer);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse remaining JSON: ${buffer}`\n };\n }\n }\n } catch (error: any) {\n if (error.name === 'AbortError') {\n throw new Error('aborted');\n }\n throw error;\n } finally {\n if (streamResponse.unsubscribe) {\n await streamResponse.unsubscribe();\n }\n }\n }\n}\n\nexport default (apiToken: string | (() => Promise<string>), options: CubeApiOptions) => new CubeApi(apiToken, options);\n\nexport { CubeApi };\nexport { default as Meta } from './Meta';\nexport { default as SqlQuery } from './SqlQuery';\nexport { default as RequestError } from './RequestError';\nexport { default as ProgressResult } from './ProgressResult';\nexport { default as ResultSet } from './ResultSet';\nexport * from './HttpTransport';\nexport * from './utils';\nexport * from './time';\nexport * from './types';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","cubeInternalLocale","customLocale","_objectSpread","en","name","weekStart","Ls","GRANULARITIES","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","parseSqlInterval","intervalStr","interval","parts","split","i","length","value","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","add","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isBefore","isAfter","isSame","dayRange","from","to","annotations","results","start","end","push","_customGranularity","customGranularity","_i","_Object$keys","keys","concat","intervalParsed","intervalStart","offset","intervalEnd","endOf","timeSeriesFromCustomInterval","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","flatMap","includes","Array","isArray","validateQuery","filters","filter","f","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","shouldApplyHeuristicOrder","pivotConfig","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","chartType","newChartType","_ref8","_ref9","_ref0","_ref1","isQueryPresent","every","q","_q$measures","_q$dimensions","_q$timeDimensions","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref10","_ref11","memberId","currentOrder","has","aliasSeries","values","index","_pivotConfig$aliasSer","duplicateMeasures","nonNullValues","groupByToPairs","groupByToPairsImpl","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","_drillDownLocator$yVa","_measures$measureName","_measures$measureName2","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","_this$loadResponses$","annotation","timeDimensionsAnnotation","measureName","_Object$keys2","drillMembers","operator","_ref5","_member$split","_member$split2","cubeName","_query$timeDimensions","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","obj","axisValues","axis","resultIndex","measure","val","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","timeDimensionMember","rawRows","timeDimensionBackwardCompatibleData","Boolean","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","measureValue","_row$measure","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","_ref14","allYValues","measureOnX","_ref15","_ref16","yGrouped","_ref17","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref18","_query$measures","e","a","m","_ref19","_ref20","_ref21","tablePivot","isMeasuresPresent","_ref22","_ref23","_ref24","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref25","type","_ref26","_ref27","currentItem","_currentItem","children","toColumns","item","path","_ref28","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref29","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref30","_ref30$measures","_ref30$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","responseChunks","_x","_responseChunks","_wrapAsyncGenerator","_regeneratorRuntime","mark","_callee","body","reader","_yield$_awaitAsyncGen","done","_reader$releaseLock","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","chunk","_t","wrap","_context","prev","next","getReader","_awaitAsyncGenerator","read","sent","abrupt","releaseLock","call","finish","Symbol","asyncIterator","_asyncIterator","TextEncoder","encode","Uint8Array","stop","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","fetchTimeout","signal","request","apiMethod","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","effectiveFetchTimeout","actualSignal","AbortSignal","timeout","runRequest","fetch","Authorization","subscribe","callback","_asyncToGenerator","errorMessage","_actualSignal$reason","_result","reason","requestStream","processedParams","String","controller","AbortController","setTimeout","_controller","abort","stream","_stream","_callee2","response","_context2","ok","status","statusText","unsubscribe","_unsubscribe","_callee3","_context3","RequestError","_Error","message","_callSuper","_inherits","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","mutexPromise","promise","then","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","networkRetries","loadImpl","_callee4","_options2","_response$error","_body$error","_options5","subscribeNext","continueWait","text","_options3","_options4","_error","_context4","_options","Promise","resolve","wait","_args3","toLowerCase","parse","progressCallback","_x2","_callee5","_context5","_updateTransportAuthorization","_callee7","tokenFetcher","_context7","_callee6","token","_context6","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","load","_options6","_options7","_options8","_this$prepareQueryOpt","prepareQueryOptions","_this$prepareQueryOpt2","cache","patched","_this6","_this$prepareQueryOpt3","_this$prepareQueryOpt4","_options9","_options0","_this7","_this8","dryRun","_this9","cubeSql","_this0","cubesqlParams","throwContinueWait","timeoutMs","_response$error$split","_response$error$split2","_toArray","_arrayLikeToArray","parsedSchema","lastRefreshTime","err","cubeSqlStream","_callee8","streamResponse","decoder","buffer","lines","_iterator2","_step2","line","parsed","_parsed","_t2","_t3","_t4","_t5","_t6","_context8","TextDecoder","decode","pop","_createForOfIteratorHelper","s","n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-core.cjs.js","sources":["../src/time.ts","../src/utils.ts","../src/ResultSet.ts","../src/SqlQuery.ts","../src/Meta.ts","../src/ProgressResult.ts","../src/streaming.ts","../src/HttpTransport.ts","../src/RequestError.ts","../src/index.ts"],"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\n// A custom locale for internal use that doesn't affect the global dayjs instance\nconst cubeInternalLocale = 'cube-internal-en';\nconst customLocale = {\n ...en,\n name: cubeInternalLocale,\n weekStart: 1\n};\n(dayjs as any).Ls[cubeInternalLocale] = customLocale;\n\nexport type SqlInterval = string;\n\n// TODO: Define a better type as unitOfTime.DurationConstructor in moment.js\nexport type ParsedInterval = Record<string, number>;\n\nexport type Granularity = {\n interval: SqlInterval;\n origin?: string;\n offset?: SqlInterval;\n};\n\nexport type DayRange = {\n by: (value: any) => dayjs.Dayjs[];\n snapTo: (value: any) => DayRange;\n start: dayjs.Dayjs;\n end: dayjs.Dayjs;\n};\n\nexport type TimeDimensionPredefinedGranularity =\n 'second'\n | 'minute'\n | 'hour'\n | 'day'\n | 'week'\n | 'month'\n | 'quarter'\n | 'year';\n\nexport type TimeDimensionGranularity = TimeDimensionPredefinedGranularity | string;\n\nexport type TGranularityMap = {\n name: TimeDimensionGranularity | undefined;\n title: string;\n};\n\nexport const GRANULARITIES: TGranularityMap[] = [\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: any[]): dayjs.Dayjs => dayjs(...args).locale(cubeInternalLocale);\n\nexport const TIME_SERIES: Record<string, (range: DayRange) => string[]> = {\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: TimeDimensionGranularity): boolean => !!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\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: SqlInterval): ParsedInterval {\n const interval: ParsedInterval = {};\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: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\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: dayjs.Dayjs, interval: ParsedInterval): dayjs.Dayjs {\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: dayjs.Dayjs, interval: ParsedInterval, origin: dayjs.Dayjs): dayjs.Dayjs {\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\nexport const dayRange = (from: any, to: any, annotations?: Record<string, { granularity?: Granularity }>): DayRange => ({\n by: (value: any) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.startOf(value).isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value: any): DayRange => {\n // Check if this is a custom granularity\n if (!isPredefinedGranularity(value) && annotations) {\n // Try to find the custom granularity metadata\n // The annotation key might be in format \"Cube.dimension.granularity\"\n // So we need to search through all annotations\n let customGranularity: Granularity | undefined;\n\n for (const key of Object.keys(annotations)) {\n if (key.endsWith(`.${value}`) && annotations[key].granularity) {\n customGranularity = annotations[key].granularity;\n break;\n }\n }\n\n if (customGranularity?.interval) {\n // For custom granularities, calculate the range for the bucket\n const intervalParsed = parseSqlInterval(customGranularity.interval);\n let intervalStart = internalDayjs(from);\n\n // origin and offset are mutually exclusive\n // If either is specified, align to it\n if (customGranularity.origin || customGranularity.offset) {\n let origin;\n if (customGranularity.origin) {\n // Absolute origin time\n origin = internalDayjs(customGranularity.origin);\n } else {\n // offset is relative to start of year\n origin = addInterval(internalDayjs().startOf('year'), parseSqlInterval(customGranularity.offset!));\n }\n\n // Align the value to the origin to find the actual bucket start\n intervalStart = alignToOrigin(intervalStart, intervalParsed, origin);\n }\n\n // End is start + interval - 1 millisecond (to stay within the bucket)\n const intervalEnd = addInterval(intervalStart, intervalParsed).subtract(1, 'millisecond');\n\n return dayRange(intervalStart, intervalEnd, annotations);\n }\n }\n\n // Default behavior for predefined granularities\n return dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value), annotations);\n },\n start: internalDayjs(from),\n end: internalDayjs(to),\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: string, to: string, granularity: Granularity): string[] => {\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 */\nexport const diffTimeUnitForInterval = (interval: string): string => {\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: string, i2: string): string => {\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: string): string => {\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 { DeeplyReadonly } from './index';\nimport { DEFAULT_GRANULARITY } from './time';\nimport {\n Filter,\n PivotConfig,\n Query,\n QueryOrder,\n TDefaultHeuristicsOptions,\n TDefaultHeuristicsResponse,\n TDefaultHeuristicsState,\n TFlatFilter,\n TOrderMember,\n TQueryOrderArray,\n TQueryOrderObject,\n TSourceAxis\n} from './types';\n\nexport function removeEmptyQueryFields(_query: DeeplyReadonly<Query>) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query).flatMap(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && value.length === 0) {\n return [];\n } else if (!Object.keys(value).length) {\n return [];\n }\n }\n\n return [[key, value]];\n })\n );\n}\n\nexport function validateQuery(_query: DeeplyReadonly<Query> | null | undefined): Query {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => 'operator' in f),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1: DeeplyReadonly<Query> | null, query2: DeeplyReadonly<Query> | null): boolean {\n return (\n equals(\n Object.entries(query1?.order || {}),\n Object.entries(query2?.order || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query: DeeplyReadonly<Query>): { [key: string]: QueryOrder } {\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(\n newState: TDefaultHeuristicsState,\n oldQuery: Query,\n options: TDefaultHeuristicsOptions\n): TDefaultHeuristicsResponse {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state: TDefaultHeuristicsResponse = {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\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 {\n shouldApplyHeuristicOrder: false,\n pivotConfig: null,\n ...newState,\n };\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?.granularity || granularity,\n dateRange: 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: DeeplyReadonly<Query | Query[]> | null | undefined): boolean {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => q.measures?.length || q.dimensions?.length || q.timeDimensions?.length\n );\n}\n\nexport function movePivotItem(\n pivotConfig: PivotConfig,\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n): PivotConfig {\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<T = any>(list: T[], sourceIndex: number, destinationIndex: number): T[] {\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: Filter[] = []): TFlatFilter[] {\n return filters.reduce<TFlatFilter[]>((memo, filter) => {\n if ('or' in filter) {\n return [...memo, ...flattenFilters(filter.or)];\n }\n\n if ('and' in filter) {\n return [...memo, ...flattenFilters(filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query: DeeplyReadonly<Query> = {}): string[] {\n const keys = ['measures', 'dimensions', 'segments'] as const;\n const members = new Set<string>();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n const filters = flattenFilters(query.filters as Filter[]);\n filters.forEach((filter) => {\n const member = filter.dimension || filter.member;\n if (typeof member === 'string') {\n members.add(member);\n }\n });\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers: any[], order: TQueryOrderObject | TQueryOrderArray): TOrderMember[] {\n const ids = new Set<string>();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers: TOrderMember[] = [];\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: string[], index: number, pivotConfig?: Partial<PivotConfig>, duplicateMeasures: Set<string> = new Set()) {\n const nonNullValues = values.filter((value: any) => value != null);\n\n if (pivotConfig?.aliasSeries?.[index]) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n 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';\nimport {\n Annotation,\n ChartPivotRow, DateRange,\n DrillDownLocator,\n LoadResponse,\n LoadResponseResult, Pivot,\n PivotConfig, PivotConfigFull,\n PivotQuery,\n PivotRow,\n Query,\n QueryAnnotations, QueryType,\n SerializedResult,\n Series,\n SeriesNamesColumn,\n TableColumn,\n TimeDimension\n} from './types';\n\nconst groupByToPairs = function groupByToPairsImpl<T, K>(keyFn: (item: T) => K): (data: T[]) => [K, T[]][] {\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: any[][]): any[] => {\n const res: any[] = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE: Record<string, QueryType> = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nexport type ResultSetOptions = {\n parseDateMeasures?: boolean;\n};\n\n/**\n * Provides a convenient interface for data manipulation.\n */\nexport default class ResultSet<T extends Record<string, any> = any> {\n private readonly loadResponse: LoadResponse<T>;\n\n private readonly loadResponses: LoadResponseResult<T>[];\n\n private readonly queryType: QueryType;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly options: {};\n\n private readonly backwardCompatibleData: Record<string, any>[][];\n\n public static measureFromAxis(axisValues: string[]): string {\n return axisValues[axisValues.length - 1];\n }\n\n public static timeDimensionMember(td: TimeDimension) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n /**\n * ```js\n * import { ResultSet } from '@cubejs-client/core';\n *\n * const resultSet = await cubeApi.load(query);\n * // You can store the result somewhere\n * const tmp = resultSet.serialize();\n *\n * // and restore it later\n * const resultSet = ResultSet.deserialize(tmp);\n * ```\n * @param data the result of [serialize](#result-set-serialize)\n * @param options\n */\n public static deserialize<TData extends Record<string, any> = any>(data: SerializedResult, options?: Object): ResultSet<TData> {\n return new ResultSet(data.loadResponse, options);\n }\n\n public constructor(loadResponse: LoadResponse<T> | LoadResponseResult<T>, options: ResultSetOptions = {}) {\n if ('queryType' in loadResponse && loadResponse.queryType != null) {\n this.loadResponse = loadResponse;\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse = {\n ...loadResponse,\n pivotQuery: {\n ...loadResponse.query,\n queryType: this.queryType\n }\n } as LoadResponse<T>;\n this.loadResponses = [loadResponse as LoadResponseResult<T>];\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 /**\n * Returns a measure drill down query.\n *\n * Provided you have a measure with the defined `drillMembers` on the `Orders` cube\n * ```js\n * measures: {\n * count: {\n * type: `count`,\n * drillMembers: [Orders.status, Users.city, count],\n * },\n * // ...\n * }\n * ```\n *\n * Then you can use the `drillDown` method to see the rows that contribute to that metric\n * ```js\n * resultSet.drillDown(\n * {\n * xValues,\n * yValues,\n * },\n * // you should pass the `pivotConfig` if you have used it for axes manipulation\n * pivotConfig\n * )\n * ```\n *\n * the result will be a query with the required filters applied and the dimensions/measures filled out\n * ```js\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Orders.status', 'Users.city'],\n * filters: [\n * // dimension and measure filters\n * ],\n * timeDimensions: [\n * //...\n * ]\n * }\n * ```\n *\n * In case when you want to add `order` or `limit` to the query, you can simply spread it\n *\n * ```js\n * // An example for React\n * const drillDownResponse = useCubeQuery(\n * {\n * ...drillDownQuery,\n * limit: 30,\n * order: {\n * 'Orders.ts': 'desc'\n * }\n * },\n * {\n * skip: !drillDownQuery\n * }\n * );\n * ```\n * @returns Drill down query\n */\n public drillDown(drillDownLocator: DrillDownLocator, pivotConfig?: PivotConfig): Query | null {\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 = drillDownLocator?.xValues ?? [];\n const yValues = drillDownLocator?.yValues ?? [];\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values: string[][] = [];\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, timeDimensions: timeDimensionsAnnotation } = 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]?.drillMembers?.length ?? 0)) {\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 // dayRange.snapTo now handles both predefined and custom granularities\n const range = dayRange(value, value, timeDimensionsAnnotation).snapTo(granularity);\n\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 Array.isArray(query.timeDimensions) &&\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 /**\n * Returns an array of series with key, title and series data.\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.series() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * series: [\n * { x: '2015-01-01T00:00:00', value: 27120 },\n * { x: '2015-02-01T00:00:00', value: 25861 },\n * { x: '2015-03-01T00:00:00', value: 29661 },\n * //...\n * ],\n * },\n * ]\n * ```\n */\n public series<SeriesItem = any>(pivotConfig?: PivotConfig): Series<SeriesItem>[] {\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 } as Series<SeriesItem>));\n }\n\n private axisValues(axis: string[], resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return (row: Record<string, any>) => {\n const value = (measure?: string) => axis\n .filter(d => d !== 'measures')\n .map((d: string) => {\n const val = row[d];\n return val != null ? val : null;\n })\n .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 private axisValuesString(axisValues: (string | number)[], delimiter: string = ', '): string {\n const formatValue = (v: string | number) => {\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 public static getNormalizedPivotConfig(query?: PivotQuery, pivotConfig?: PivotConfig): PivotConfigFull {\n const defaultPivotConfig: PivotConfig = {\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 const normalizedPivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig) as PivotConfigFull;\n\n const substituteTimeDimensionMembers = (axis: string[]) => 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 normalizedPivotConfig.x = substituteTimeDimensionMembers(normalizedPivotConfig.x);\n normalizedPivotConfig.y = substituteTimeDimensionMembers(normalizedPivotConfig.y);\n\n const allIncludedDimensions = normalizedPivotConfig.x.concat(normalizedPivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key: string) => allDimensions.includes(key) || key === 'measures';\n\n normalizedPivotConfig.x = normalizedPivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(dimensionFilter);\n\n if (!normalizedPivotConfig.x.concat(normalizedPivotConfig.y).find(d => d === 'measures')) {\n normalizedPivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !normalizedPivotConfig.y.concat(normalizedPivotConfig.x).includes('compareDateRange')) {\n normalizedPivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n normalizedPivotConfig.x = normalizedPivotConfig.x.filter(d => d !== 'measures');\n normalizedPivotConfig.y = normalizedPivotConfig.y.filter(d => d !== 'measures');\n }\n\n return normalizedPivotConfig;\n }\n\n public normalizePivotConfig(pivotConfig?: PivotConfig): PivotConfigFull {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n public timeSeries(timeDimension: TimeDimension, resultIndex?: number, annotations?: Record<string, Annotation>) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let dateRange: DateRange | null | undefined;\n dateRange = timeDimension.dateRange;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const rawRows: Record<string, any>[] = this.timeDimensionBackwardCompatibleData(resultIndex || 0);\n\n const dates = rawRows\n .map(row => {\n const value = row[member];\n return value ? internalDayjs(value) : null;\n })\n .filter((d): d is dayjs.Dayjs => Boolean(d));\n\n dateRange = dates.length && [\n (reduce(minBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n (reduce(maxBy((d: dayjs.Dayjs): Date => d.toDate()), dates[0], dates)).toString(),\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n (timeDimension.dateRange as string[]).find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end, annotations);\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 /**\n * Base method for pivoting [ResultSet](#result-set) data.\n * Most of the time shouldn't be used directly and [chartPivot](#result-set-chart-pivot)\n * or [tablePivot](#table-pivot) should be used instead.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-03-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.pivot({ x: ['Stories.time'], y: ['measures'] }) will return\n * [\n * {\n * xValues: [\"2015-01-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 27120]\n * ]\n * },\n * {\n * xValues: [\"2015-02-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 25861]\n * ]\n * },\n * {\n * xValues: [\"2015-03-01T00:00:00\"],\n * yValuesArray: [\n * [['Stories.count'], 29661]\n * ]\n * }\n * ]\n * ```\n * @returns An array of pivoted rows.\n */\n public pivot(pivotConfig?: PivotConfig): PivotRow[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs<{ xValues: string[], row: Record<string, any> }, string>(({ xValues }) => this.axisValuesString(xValues));\n const measureValue = (row: Record<string, any>, measure: string) => row[measure] ?? normalizedPivotConfig.fillWithValue ?? 0;\n\n if (\n normalizedPivotConfig.fillMissingDates &&\n normalizedPivotConfig.x.length === 1 &&\n (equals(\n normalizedPivotConfig.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,\n 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: [string, { xValues: string[], row: Record<string, any> }[]][] = pipe(\n map((row: Record<string, any>) => this.axisValues(normalizedPivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap: Record<string, any> = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(normalizedPivotConfig.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((normalizedPivotConfig.x).find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped: Record<string, any> = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(normalizedPivotConfig.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, normalizedPivotConfig.joinDateRange || false)\n : pivotImpl();\n }\n\n private mergePivots(pivots: Pivot[][], joinDateRange: ((pivots: Pivot, joinDateRange: any) => PivotRow[]) | false): PivotRow[] {\n const minLengthPivot: Pivot[] = pivots.reduce<Pivot[] | null>(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n ) || [];\n\n return minLengthPivot.map((_: any, index: number) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => 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 /**\n * Returns normalized query result data in the following format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.chartPivot() will return\n * [\n * { \"x\":\"2015-01-01T00:00:00\", \"Stories.count\": 27120, \"xValues\": [\"2015-01-01T00:00:00\"] },\n * { \"x\":\"2015-02-01T00:00:00\", \"Stories.count\": 25861, \"xValues\": [\"2015-02-01T00:00:00\"] },\n * { \"x\":\"2015-03-01T00:00:00\", \"Stories.count\": 29661, \"xValues\": [\"2015-03-01T00:00:00\"] },\n * //...\n * ]\n *\n * ```\n * When using `chartPivot()` or `seriesNames()`, you can pass `aliasSeries` in the [pivotConfig](#types-pivot-config)\n * to give each series a unique prefix. This is useful for `blending queries` which use the same measure multiple times.\n *\n * ```js\n * // For the queries\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * },\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [\n * {\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month',\n * },\n * ],\n * filters: [\n * {\n * member: 'Stores.read',\n * operator: 'equals',\n * value: ['true'],\n * },\n * ],\n * },\n *\n * // ResultSet.chartPivot({ aliasSeries: ['one', 'two'] }) will return\n * [\n * {\n * x: '2015-01-01T00:00:00',\n * 'one,Stories.count': 27120,\n * 'two,Stories.count': 8933,\n * xValues: ['2015-01-01T00:00:00'],\n * },\n * {\n * x: '2015-02-01T00:00:00',\n * 'one,Stories.count': 25861,\n * 'two,Stories.count': 8344,\n * xValues: ['2015-02-01T00:00:00'],\n * },\n * {\n * x: '2015-03-01T00:00:00',\n * 'one,Stories.count': 29661,\n * 'two,Stories.count': 9023,\n * xValues: ['2015-03-01T00:00:00'],\n * },\n * //...\n * ]\n * ```\n */\n public chartPivot(pivotConfig?: PivotConfig): ChartPivotRow[] {\n const validate = (value: string) => {\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<string>();\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: Record<string, number | string | Date> = {};\n\n yValuesArray\n .forEach(([yValues, m]: [string[], string], i: number) => {\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 } as ChartPivotRow);\n });\n }\n\n /**\n * Returns normalized query result data prepared for visualization in the table format.\n *\n * You can find the examples of using the `pivotConfig` [here](#types-pivot-config)\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tablePivot() will return\n * [\n * { \"Stories.time\": \"2015-01-01T00:00:00\", \"Stories.count\": 27120 },\n * { \"Stories.time\": \"2015-02-01T00:00:00\", \"Stories.count\": 25861 },\n * { \"Stories.time\": \"2015-03-01T00:00:00\", \"Stories.count\": 29661 },\n * //...\n * ]\n * ```\n * @returns An array of pivoted rows\n */\n public tablePivot(pivotConfig?: PivotConfig): Array<{ [key: string]: string | number | boolean }> {\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 [\n ...(normalizedPivotConfig.x).map((key, index): [string, string | number] => [\n key,\n xValues[index]\n ]),\n ...(isMeasuresPresent\n ? yValuesArray.map(([yValues, measure]): [string, string | number] => [\n yValues.length ? yValues.join() : 'value',\n measure\n ])\n : [])\n ]\n ));\n }\n\n /**\n * Returns an array of column definitions for `tablePivot`.\n *\n * For example:\n * ```js\n * // For the query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.tableColumns() will return\n * [\n * {\n * key: 'Stories.time',\n * dataIndex: 'Stories.time',\n * title: 'Stories Time',\n * shortTitle: 'Time',\n * type: 'time',\n * format: undefined,\n * },\n * {\n * key: 'Stories.count',\n * dataIndex: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * type: 'count',\n * format: undefined,\n * },\n * //...\n * ]\n * ```\n *\n * In case we want to pivot the table axes\n * ```js\n * // Let's take this query as an example\n * {\n * measures: ['Orders.count'],\n * dimensions: ['Users.country', 'Users.gender']\n * }\n *\n * // and put the dimensions on `y` axis\n * resultSet.tableColumns({\n * x: [],\n * y: ['Users.country', 'Users.gender', 'measures']\n * })\n * ```\n *\n * then `tableColumns` will group the table head and return\n * ```js\n * {\n * key: 'Germany',\n * type: 'string',\n * title: 'Users Country Germany',\n * shortTitle: 'Germany',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * key: 'male',\n * type: 'string',\n * title: 'Users Gender male',\n * shortTitle: 'male',\n * meta: undefined,\n * format: undefined,\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.male.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * {\n * // ...\n * shortTitle: 'female',\n * children: [\n * {\n * // ...\n * dataIndex: 'Germany.female.Orders.count',\n * shortTitle: 'Count',\n * },\n * ],\n * },\n * ],\n * },\n * // ...\n * ```\n * @returns An array of columns\n */\n public tableColumns(pivotConfig?: PivotConfig): TableColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n\n const annotations: QueryAnnotations = this.loadResponses\n .map((r) => r.annotation)\n .reduce<QueryAnnotations>((acc, annotation) => mergeDeepLeft(acc, annotation) as QueryAnnotations,\n {\n dimensions: {},\n measures: {},\n timeDimensions: {},\n segments: {},\n });\n\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema: Record<string, any> = {};\n\n const extractFields = (key: string) => {\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]?.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}`]?.children || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item: Record<string, any> = {}, path: string[] = []): TableColumn[] => {\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 } as TableColumn;\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n } as TableColumn;\n });\n };\n\n let otherColumns: TableColumn[] = [];\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 // Synthetic 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).map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n } as TableColumn;\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n public totalRow(pivotConfig?: PivotConfig): ChartPivotRow {\n return this.chartPivot(pivotConfig)[0];\n }\n\n public categories(pivotConfig?: PivotConfig): ChartPivotRow[] {\n return this.chartPivot(pivotConfig);\n }\n\n /**\n * Returns an array of series objects, containing `key` and `title` parameters.\n * ```js\n * // For query\n * {\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * }\n *\n * // ResultSet.seriesNames() will return\n * [\n * {\n * key: 'Stories.count',\n * title: 'Stories Count',\n * shortTitle: 'Count',\n * yValues: ['Stories.count'],\n * },\n * ]\n * ```\n * @returns An array of series names\n */\n public seriesNames(pivotConfig?: PivotConfig): SeriesNamesColumn[] {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = this.loadResponses\n .map(r => r.annotation.measures)\n .reduce((acc, m) => ({ ...acc, ...m }), {});\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(normalizedPivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n\n const duplicateMeasures = new Set<string>();\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, normalizedPivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n normalizedPivotConfig.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 normalizedPivotConfig.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 public query(): 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 public pivotQuery(): PivotQuery {\n return this.loadResponse.pivotQuery || null;\n }\n\n /**\n * @return the total number of rows if the `total` option was set, when sending the query\n */\n public totalRows(): number | null | undefined {\n return this.loadResponses[0].total;\n }\n\n public rawData(): T[] {\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 public annotation(): QueryAnnotations {\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 private timeDimensionBackwardCompatibleData(resultIndex: number) {\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 => {\n const foundTd = timeDimensions.find(d => d.dimension === field);\n return foundTd && !row[ResultSet.timeDimensionMember(foundTd)];\n }\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 /**\n * Can be used when you need access to the methods that can't be used with some query types (eg `compareDateRangeQuery` or `blendingQuery`)\n * ```js\n * resultSet.decompose().forEach((currentResultSet) => {\n * console.log(currentResultSet.rawData());\n * });\n * ```\n */\n public decompose(): ResultSet<any>[] {\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 /**\n * Can be used to stash the `ResultSet` in a storage and restored later with [deserialize](#result-set-deserialize)\n */\n public serialize(): SerializedResult {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n","export type SqlQueryTuple = [string, any[], any?];\n\nexport type SqlData = {\n aliasNameToMember: Record<string, string>;\n cacheKeyQueries: SqlQueryTuple[];\n dataSource: string;\n external: boolean;\n sql: SqlQueryTuple;\n preAggregations: any[];\n rollupMatchResults: any[];\n};\n\nexport type SqlQueryWrapper = { sql: SqlData };\n\nexport default class SqlQuery {\n private readonly sqlQuery: SqlQueryWrapper;\n\n public constructor(sqlQuery: SqlQueryWrapper) {\n this.sqlQuery = sqlQuery;\n }\n\n public rawQuery(): SqlData {\n return this.sqlQuery.sql;\n }\n\n public sql(): string {\n return this.rawQuery().sql[0];\n }\n}\n","import { unnest, fromPairs } from 'ramda';\nimport {\n Cube,\n CubesMap,\n MemberType,\n MetaResponse,\n TCubeMeasure,\n TCubeDimension,\n TCubeMember,\n TCubeMemberByType,\n Query,\n FilterOperator,\n TCubeSegment,\n NotFoundMember,\n} from './types';\nimport { DeeplyReadonly } from './index';\n\nexport interface CubeMemberWrapper<T> {\n cubeName: string;\n cubeTitle: string;\n type: 'view' | 'cube';\n public: boolean;\n members: T[];\n}\n\nexport type AggregatedMembers = {\n measures: CubeMemberWrapper<TCubeMeasure>[];\n dimensions: CubeMemberWrapper<TCubeDimension>[];\n segments: CubeMemberWrapper<TCubeSegment>[];\n timeDimensions: CubeMemberWrapper<TCubeDimension>[];\n};\n\nconst memberMap = (memberArray: any[]) => fromPairs(\n memberArray.map((m) => [m.name, m])\n);\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 */\nexport default class Meta {\n /**\n * Raw meta response\n */\n public readonly meta: MetaResponse;\n\n /**\n * An array of all available cubes with their members\n */\n public readonly cubes: Cube[];\n\n /**\n * A map of all cubes where the key is a cube name\n */\n public readonly cubesMap: CubesMap;\n\n public constructor(metaResponse: 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 /**\n * Get all members of a specific type for a given query.\n * If empty query is provided no filtering is done based on query context and all available members are retrieved.\n * @param _query - context query to provide filtering of members available to add to this query\n * @param memberType\n */\n public membersForQuery(_query: DeeplyReadonly<Query> | null, memberType: MemberType): (TCubeMeasure | TCubeDimension | TCubeMember | TCubeSegment)[] {\n return unnest(this.cubes.map((c) => c[memberType]))\n .sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n public membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce<AggregatedMembers>(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members: TCubeMeasure[] | TCubeDimension[] | TCubeSegment[] = [];\n\n // eslint-disable-next-line default-case\n switch (key) {\n case 'measures':\n members = cube.measures || [];\n break;\n case 'dimensions':\n members = cube.dimensions || [];\n break;\n case 'segments':\n members = cube.segments || [];\n break;\n case 'timeDimensions':\n members = cube.dimensions.filter((m) => m.type === 'time') || [];\n break;\n }\n\n // TODO: Convince TS this is working\n // @ts-ignore\n memo[key].push({\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members,\n });\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n } as AggregatedMembers\n );\n }\n\n /**\n * Get meta information for a cube member\n * meta information contains:\n * ```javascript\n * {\n * name,\n * title,\n * shortTitle,\n * type,\n * description,\n * format\n * }\n * ```\n * @param memberName - Fully qualified member name in a form `Cube.memberName`\n * @param memberType\n * @return An object containing meta information about member\n */\n public resolveMember<T extends MemberType>(\n memberName: string,\n memberType: T | T[]\n ): NotFoundMember | TCubeMemberByType<T> {\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 as TCubeMemberByType<T>;\n }\n\n public defaultTimeDimensionNameFor(memberName: string): string | null | undefined {\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 public filterOperatorsForMember(memberName: string, memberType: MemberType | MemberType[]): FilterOperator[] {\n const member = this.resolveMember(memberName, memberType);\n\n if ('error' in member || !('type' in member) || member.type === 'boolean') {\n return operators.string;\n }\n\n return operators[member.type] || operators.string;\n }\n}\n","import { ProgressResponse } from './types';\n\nexport default class ProgressResult {\n private progressResponse: ProgressResponse;\n\n public constructor(progressResponse: ProgressResponse) {\n this.progressResponse = progressResponse;\n }\n\n public stage(): string {\n return this.progressResponse.stage;\n }\n\n public timeElapsed(): number {\n return this.progressResponse.timeElapsed;\n }\n}\n","export async function* responseChunks(res: Response): AsyncIterable<Uint8Array> {\n // eslint-disable-next-line prefer-destructuring\n const body: any = res.body;\n\n if (body && typeof body.getReader === 'function') {\n const reader = body.getReader(); // Browser / Node native fetch\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) yield value; // Uint8Array\n }\n } finally {\n reader.releaseLock?.();\n }\n return;\n }\n\n // Node.js Readable (node-fetch v2 via cross-fetch)\n if (body && Symbol.asyncIterator in body) {\n for await (const chunk of body as AsyncIterable<Buffer | Uint8Array | string>) {\n if (typeof chunk === 'string') {\n // Convert string chunks to bytes (rare, but safe)\n yield new TextEncoder().encode(chunk);\n } else {\n yield new Uint8Array(chunk);\n }\n }\n return;\n }\n\n throw new Error('Unsupported response body type for streaming');\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\nimport { responseChunks } from './streaming';\n\nexport interface ErrorResponse {\n error: string;\n}\n\nexport type TransportOptions = {\n /**\n * [jwt auth token](security)\n */\n authorization?: string;\n /**\n * path to `/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * custom headers\n */\n headers: Record<string, string>;\n credentials?: 'omit' | 'same-origin' | 'include';\n method?: 'GET' | 'PUT' | 'POST' | 'PATCH';\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n};\n\nexport interface ITransportResponse<R> {\n subscribe: <CBResult>(\n cb: (\n result: R | ErrorResponse,\n resubscribe: () => Promise<CBResult>\n ) => CBResult\n ) => Promise<CBResult>;\n // Optional, supported in WebSocketTransport\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamResponse {\n stream(): Promise<AsyncIterable<Uint8Array>>;\n unsubscribe?: () => Promise<void>;\n}\n\nexport interface ITransportStreamParams<T extends Record<string, unknown> = Record<string, unknown>> {\n method?: 'GET' | 'POST' | 'PUT' | 'PATCH';\n fetchTimeout?: number;\n baseRequestId?: string;\n signal?: AbortSignal;\n params?: T;\n}\n\nexport interface ITransport<R> {\n request(\n method: string,\n params: Record<string, unknown>\n ): ITransportResponse<R>;\n requestStream?<T extends Record<string, unknown> = Record<string, unknown>>(\n method: string,\n params: ITransportStreamParams<T>\n ): ITransportStreamResponse;\n authorization: TransportOptions['authorization'];\n}\n\n/**\n * Default transport implementation.\n */\nexport class HttpTransport implements ITransport<Response> {\n public authorization: TransportOptions['authorization'];\n\n protected apiUrl: TransportOptions['apiUrl'];\n\n protected method: TransportOptions['method'];\n\n protected headers: TransportOptions['headers'];\n\n protected credentials: TransportOptions['credentials'];\n\n protected fetchTimeout: number | undefined;\n\n private readonly signal: AbortSignal | undefined;\n\n public constructor({\n authorization,\n apiUrl,\n method,\n headers = {},\n credentials,\n fetchTimeout,\n signal,\n }: Omit<TransportOptions, 'headers'> & {\n headers?: TransportOptions['headers'];\n }) {\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 this.signal = signal;\n }\n\n public request(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, ...params }: any\n ): ITransportResponse<Response> {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params &&\n Object.keys(params)\n .map((k) => ({\n [k]:\n typeof params[k] === 'object'\n ? JSON.stringify(params[k])\n : params[k],\n }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod =\n method ?? this.method ?? (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n const actualSignal =\n signal ||\n this.signal ||\n (effectiveFetchTimeout\n ? AbortSignal.timeout(effectiveFetchTimeout)\n : undefined);\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':\n baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null,\n signal: actualSignal,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n try {\n const result = await runRequest();\n return callback(result, () => this.subscribe(callback));\n } catch (e: any) {\n let errorMessage = 'network Error';\n\n if (e.name === 'AbortError') {\n if (\n actualSignal?.reason === 'TimeoutError' ||\n actualSignal?.reason?.name === 'TimeoutError'\n ) {\n errorMessage = 'timeout';\n } else {\n errorMessage = 'aborted';\n }\n }\n\n const result: ErrorResponse = { error: errorMessage };\n return callback(result, () => this.subscribe(callback));\n }\n },\n };\n }\n\n public requestStream<T extends Record<string, unknown> = Record<string, unknown>>(\n apiMethod: string,\n { method, fetchTimeout, baseRequestId, signal, params }: ITransportStreamParams<T>\n ): ITransportStreamResponse {\n const processedParams: Record<string, string> = {};\n\n // Handle the generic params object\n if (params) {\n Object.keys(params).forEach((k) => {\n const value = params[k];\n if (value !== undefined) {\n processedParams[k] = typeof value === 'object' ? JSON.stringify(value) : String(value);\n }\n });\n }\n\n const searchParams = new URLSearchParams(processedParams);\n\n let url = `${this.apiUrl}/${apiMethod}${\n searchParams.toString().length ? `?${searchParams}` : ''\n }`;\n\n const requestMethod = method ?? this.method ?? 'POST';\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${apiMethod}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n const effectiveFetchTimeout = fetchTimeout ?? this.fetchTimeout;\n\n let controller: AbortController | undefined;\n let actualSignal: AbortSignal | undefined = signal || this.signal;\n\n if (!actualSignal && effectiveFetchTimeout) {\n controller = new AbortController();\n actualSignal = controller.signal;\n setTimeout(() => controller?.abort(), effectiveFetchTimeout);\n }\n\n return {\n stream: async () => {\n const response = await fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId || 'stream-request',\n ...this.headers,\n } as HeadersInit,\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params || {}) : null,\n signal: actualSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n if (!response.body) {\n throw new Error('No response body available for streaming');\n }\n\n return responseChunks(response);\n },\n unsubscribe: async () => {\n if (controller) {\n controller.abort();\n }\n },\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n public response: any;\n\n public status: number;\n\n public constructor(message: string, response: any, status: number) {\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, { ErrorResponse, ITransport, TransportOptions } from './HttpTransport';\nimport RequestError from './RequestError';\nimport {\n CacheMode,\n DimensionFormat,\n ExtractTimeMembers,\n LoadResponse,\n MeasureFormat,\n MetaResponse,\n PivotQuery,\n ProgressResponse,\n Query,\n QueryOrder,\n QueryType,\n TransformedQuery\n} from './types';\n\nexport type LoadMethodCallback<T> = (error: Error | null, resultSet: T) => void;\n\nexport type LoadMethodOptions = {\n /**\n * Key to store the current request's MUTEX inside the `mutexObj`. MUTEX object is used to reject orphaned queries results when new queries are sent. For example: if two queries are sent with the same `mutexKey` only the last one will return results.\n */\n mutexKey?: string;\n /**\n * Object to store MUTEX\n */\n mutexObj?: { [key: string]: any };\n /**\n * Pass `true` to use continuous fetch behavior.\n */\n subscribe?: boolean;\n /**\n * A Cube API instance. If not provided will be taken from `CubeProvider`\n */\n // eslint-disable-next-line no-use-before-define\n cubeApi?: CubeApi;\n /**\n * If enabled, all members of the 'number' type will be automatically converted to numerical values on the client side\n */\n castNumerics?: boolean;\n /**\n * Function that receives `ProgressResult` on each `Continue wait` message.\n */\n progressCallback?(result: ProgressResult): void;\n /**\n * Server-side cache policy for query execution. Does not control client-side caching.\n */\n cache?: CacheMode;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n\n /**\n * Client provided request ID, if client wants to track request onb their own\n */\n baseRequestId?: string;\n};\n\nexport type DeeplyReadonly<T> = {\n readonly [K in keyof T]: DeeplyReadonly<T[K]>;\n};\n\nexport type ExtractMembers<T extends DeeplyReadonly<Query>> =\n | (T extends { dimensions: readonly (infer Names)[]; } ? Names : never)\n | (T extends { measures: readonly (infer Names)[]; } ? Names : never)\n | (T extends { timeDimensions: (infer U); } ? ExtractTimeMembers<U> : never);\n\n// If we can't infer any members at all, then return any.\nexport type SingleQueryRecordType<T extends DeeplyReadonly<Query>> = ExtractMembers<T> extends never\n ? any\n : { [K in string & ExtractMembers<T>]: string | number | boolean | null };\n\nexport type QueryArrayRecordType<T extends DeeplyReadonly<Query[]>> =\n T extends readonly [infer First, ...infer Rest]\n ? SingleQueryRecordType<DeeplyReadonly<First>> | QueryArrayRecordType<Rest & DeeplyReadonly<Query[]>>\n : never;\n\nexport type QueryRecordType<T extends DeeplyReadonly<Query | Query[]>> =\n T extends DeeplyReadonly<Query[]> ? QueryArrayRecordType<T> :\n T extends DeeplyReadonly<Query> ? SingleQueryRecordType<T> :\n never;\n\nexport interface UnsubscribeObj {\n /**\n * Allows to stop requests in-flight in long polling or web socket subscribe loops.\n * It doesn't cancel any submitted requests to the underlying databases.\n */\n unsubscribe(): Promise<void>;\n}\n\n/**\n * @deprecated use DryRunResponse\n */\nexport type TDryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type DryRunResponse = {\n queryType: QueryType;\n normalizedQueries: Query[];\n pivotQuery: PivotQuery;\n queryOrder: Array<{ [k: string]: QueryOrder }>;\n transformedQueries: TransformedQuery[];\n};\n\nexport type CubeSqlOptions = LoadMethodOptions & {\n /**\n * Query timeout in milliseconds\n */\n timeout?: number;\n};\n\nexport type CubeSqlSchemaColumn = {\n name: string;\n // eslint-disable-next-line camelcase\n column_type: string;\n format?: DimensionFormat | MeasureFormat;\n};\n\nexport type CubeSqlResult = {\n schema: CubeSqlSchemaColumn[];\n data: (string | number | boolean | null)[][];\n lastRefreshTime?: string;\n};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\n lastRefreshTime?: string;\n} | {\n type: 'data';\n data: (string | number | boolean | null)[];\n} | {\n type: 'error';\n error: string;\n};\n\ninterface BodyResponse {\n error?: string;\n [key: string]: any;\n}\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\nfunction mutexPromise<T>(promise: Promise<T>): Promise<T | null> {\n return promise\n .then((result) => result)\n .catch((error) => {\n if (error !== MUTEX_ERROR) {\n throw error;\n }\n\n return null;\n });\n}\n\nexport type ResponseFormat = 'compact' | 'default' | undefined;\n\nexport type CubeApiOptions = {\n /**\n * URL of your Cube.js Backend. By default, in the development environment it is `http://localhost:4000/cubejs-api/v1`\n */\n apiUrl: string;\n /**\n * Transport implementation to use. [HttpTransport](#http-transport) will be used by default.\n */\n transport?: ITransport<any>;\n method?: TransportOptions['method'];\n headers?: TransportOptions['headers'];\n pollInterval?: number;\n credentials?: TransportOptions['credentials'];\n parseDateMeasures?: boolean;\n resType?: 'default' | 'compact';\n castNumerics?: boolean;\n /**\n * How many network errors would be retried before returning to users. Default to 0.\n */\n networkErrorRetries?: number;\n /**\n * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\n /**\n * Fetch timeout in milliseconds. Would be passed as AbortSignal.timeout()\n */\n fetchTimeout?: number;\n};\n\n/**\n * Main class for accessing Cube API\n */\nclass CubeApi {\n private readonly apiToken: string | (() => Promise<string>) | (CubeApiOptions & any[]) | undefined;\n\n private readonly apiUrl: string;\n\n private readonly method: TransportOptions['method'];\n\n private readonly headers: TransportOptions['headers'];\n\n private readonly credentials: TransportOptions['credentials'];\n\n protected readonly transport: ITransport<any>;\n\n private readonly pollInterval: number;\n\n private readonly parseDateMeasures: boolean | undefined;\n\n private readonly castNumerics: boolean;\n\n private readonly networkErrorRetries: number;\n\n private updateAuthorizationPromise: Promise<any> | null;\n\n public constructor(apiToken: string | (() => Promise<string>) | undefined, options: CubeApiOptions);\n\n public constructor(options: CubeApiOptions);\n\n /**\n * Creates an instance of the `CubeApi`. The API entry point.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * 'CUBE-API-TOKEN',\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n *\n * You can also pass an async function or a promise that will resolve to the API token\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * const cubeApi = cube(\n * async () => await Auth.getJwtToken(),\n * { apiUrl: 'http://localhost:4000/cubejs-api/v1' }\n * );\n * ```\n */\n public constructor(\n apiToken: string | (() => Promise<string>) | undefined | CubeApiOptions,\n options?: CubeApiOptions\n ) {\n if (apiToken && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n\n if (!options || (!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\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'string' ? apiToken : undefined,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials,\n fetchTimeout: options.fetchTimeout,\n signal: options.signal\n });\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 protected request(method: string, params?: any) {\n return this.transport.request(method, {\n ...params,\n baseRequestId: params?.baseRequestId || uuidv4(),\n });\n }\n\n private loadMethod(request: CallableFunction, toResult: CallableFunction, options?: LoadMethodOptions, callback?: CallableFunction) {\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 (options &&\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: Response | ErrorResponse, next: CallableFunction) => {\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<void>(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait: boolean = false) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise<void>(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 (('status' in response && response.status === 502) ||\n ('error' in response && response.error?.toLowerCase() === 'network error') &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n // From here we're sure that response is only fetch Response\n response = (response as Response);\n let body: BodyResponse = {};\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?.includes('Continue wait')) {\n await checkMutex();\n if (options?.progressCallback) {\n options.progressCallback(new ProgressResult(body as ProgressResponse));\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 || (response as any).error || '', body, response.status);\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: Promise<any> = requestPromise\n .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 private async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n const tokenFetcher = this.apiToken;\n\n if (typeof tokenFetcher === 'function') {\n const promise = (async () => {\n try {\n const token = await tokenFetcher();\n\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n } finally {\n this.updateAuthorizationPromise = null;\n }\n })();\n\n this.updateAuthorizationPromise = promise;\n await promise;\n }\n }\n\n /**\n * Add system properties to a query object.\n */\n private patchQueryInternal(query: DeeplyReadonly<Query>, responseFormat: ResponseFormat): DeeplyReadonly<Query> {\n if (\n responseFormat === 'compact' &&\n query.responseFormat !== 'compact'\n ) {\n return {\n ...query,\n responseFormat: '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 */\n protected loadResponseInternal(response: LoadResponse<any>, options: LoadMethodOptions | null = {}): ResultSet<any> {\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 }).reduce<string[]>((acc, [k, v]) => {\n if (v.type === 'number') {\n acc.push(k);\n }\n return acc;\n }, []);\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 === 'compact') {\n response.results.forEach((result, j) => {\n const data: Record<string, any>[] = [];\n const { dataset, members } = result.data as unknown as { dataset: any[]; members: string[] };\n dataset.forEach((r) => {\n const row: Record<string, any> = {};\n 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 public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n ): UnsubscribeObj;\n\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options?: LoadMethodOptions,\n callback?: LoadMethodCallback<ResultSet<any>>,\n responseFormat?: string\n ): Promise<ResultSet<QueryRecordType<QueryType>>>;\n\n /**\n * Fetch data for the passed `query`.\n *\n * ```js\n * import cube from '@cubejs-client/core';\n * import Chart from 'chart.js';\n * import chartjsConfig from './toChartjsData';\n *\n * const cubeApi = cube('CUBEJS_TOKEN');\n *\n * const resultSet = await cubeApi.load({\n * measures: ['Stories.count'],\n * timeDimensions: [{\n * dimension: 'Stories.time',\n * dateRange: ['2015-01-01', '2015-12-31'],\n * granularity: 'month'\n * }]\n * });\n *\n * const context = document.getElementById('myChart');\n * new Chart(context, chartjsConfig(resultSet));\n * ```\n * @param query - [Query object](/product/apis-integrations/rest-api/query-format)\n * @param options\n * @param callback\n * @param responseFormat\n */\n public load<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions, callback?: CallableFunction, responseFormat: ResponseFormat = 'default') {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n\n const params: Record<string, unknown> = {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n };\n\n if (options?.cache) {\n params.cache = options.cache;\n }\n\n return this.loadMethod(\n () => this.request('load', params),\n (response: any) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n private prepareQueryOptions<QueryType extends DeeplyReadonly<Query | Query[]>>(query: QueryType, options?: LoadMethodOptions | null, responseFormat: ResponseFormat = 'default'): [query: QueryType, options: LoadMethodOptions] {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === 'compact') {\n if (Array.isArray(query)) {\n const patched = query.map((q) => this.patchQueryInternal(q, 'compact'));\n return [patched as unknown as QueryType, options];\n } else {\n const patched = this.patchQueryInternal(query as DeeplyReadonly<Query>, 'compact');\n return [patched as QueryType, options];\n }\n }\n\n return [query, options];\n }\n\n /**\n * Allows you to fetch data and receive updates over time. See [Real-Time Data Fetch](/product/apis-integrations/rest-api/real-time-data-fetch)\n *\n * ```js\n * // Subscribe to a query's updates\n * const subscription = await cubeApi.subscribe(\n * {\n * measures: ['Logs.count'],\n * timeDimensions: [\n * {\n * dimension: 'Logs.time',\n * granularity: 'hour',\n * dateRange: 'last 1440 minutes',\n * },\n * ],\n * },\n * options,\n * (error, resultSet) => {\n * if (!error) {\n * // handle the update\n * }\n * }\n * );\n *\n * // Unsubscribe from a query's updates\n * subscription.unsubscribe();\n * ```\n */\n public subscribe<QueryType extends DeeplyReadonly<Query | Query[]>>(\n query: QueryType,\n options: LoadMethodOptions | null,\n callback: LoadMethodCallback<ResultSet<QueryRecordType<QueryType>>>,\n responseFormat: ResponseFormat = 'default'\n ): UnsubscribeObj {\n [query, options] = this.prepareQueryOptions(query, options, responseFormat);\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n ) as UnsubscribeObj;\n }\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<SqlQuery>;\n\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): UnsubscribeObj;\n\n /**\n * Get generated SQL string for the given `query`.\n */\n public sql(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<SqlQuery>): Promise<SqlQuery> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('sql', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: any) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n public meta(options?: LoadMethodOptions): Promise<Meta>;\n\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): UnsubscribeObj;\n\n /**\n * Get meta description of cubes available for querying.\n */\n public meta(options?: LoadMethodOptions, callback?: LoadMethodCallback<Meta>): Promise<Meta> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('meta', {\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (body: MetaResponse) => new Meta(body),\n options,\n callback\n );\n }\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions): Promise<DryRunResponse>;\n\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): UnsubscribeObj;\n\n /**\n * Get query related meta without query execution\n */\n public dryRun(query: DeeplyReadonly<Query | Query[]>, options?: LoadMethodOptions, callback?: LoadMethodCallback<DryRunResponse>): Promise<DryRunResponse> | UnsubscribeObj {\n return this.loadMethod(\n () => this.request('dry-run', {\n query,\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\n (response: DryRunResponse) => response,\n options,\n callback\n );\n }\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions): Promise<CubeSqlResult>;\n\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): UnsubscribeObj;\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return the results.\n */\n public cubeSql(sqlQuery: string, options?: CubeSqlOptions, callback?: LoadMethodCallback<CubeSqlResult>): Promise<CubeSqlResult> | UnsubscribeObj {\n return this.loadMethod(\n () => {\n const cubesqlParams: Record<string, unknown> = {\n query: sqlQuery,\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: options?.baseRequestId,\n throwContinueWait: true,\n };\n\n if (options?.cache) {\n cubesqlParams.cache = options.cache;\n }\n\n const request = this.request('cubesql', cubesqlParams);\n\n return request;\n },\n (response: any) => {\n // TODO: The response is sending both errors and successful results as `error`\n if (!response || !response.error) {\n throw new Error('Invalid response format');\n }\n\n // Check if this is a timeout or abort error from transport\n if (response.error === 'timeout') {\n const timeoutMs = options?.timeout || 5 * 60 * 1000;\n throw new Error(`CubeSQL query timed out after ${timeoutMs}ms`);\n }\n\n if (response.error === 'aborted') {\n throw new Error('CubeSQL query was aborted');\n }\n\n const [schema, ...data] = response.error.split('\\n');\n\n try {\n const parsedSchema = JSON.parse(schema);\n return {\n schema: parsedSchema.schema,\n data: data\n .filter((d: string) => d.trim().length)\n .map((d: string) => JSON.parse(d).data)\n .reduce((a: any, b: any) => a.concat(b), []),\n ...(parsedSchema.lastRefreshTime ? { lastRefreshTime: parsedSchema.lastRefreshTime } : {}),\n };\n } catch (err) {\n throw new Error(response.error);\n }\n },\n options,\n callback\n );\n }\n\n /**\n * Execute a Cube SQL query against Cube SQL interface and return streaming results as an async generator.\n * The server returns JSONL (JSON Lines) format with schema first, then data rows.\n */\n public async* cubeSqlStream(sqlQuery: string, options?: CubeSqlOptions): AsyncGenerator<CubeSqlStreamChunk> {\n if (!this.transport.requestStream) {\n throw new Error('Transport does not support streaming');\n }\n\n const streamResponse = this.transport.requestStream('cubesql', {\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: uuidv4(),\n params: {\n query: sqlQuery,\n cache: options?.cache\n }\n });\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n const stream = await streamResponse.stream();\n\n for await (const chunk of stream) {\n buffer += decoder.decode(chunk, { stream: true });\n\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim()) {\n try {\n const parsed = JSON.parse(line);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse JSON line: ${line}`\n };\n }\n }\n }\n }\n\n if (buffer.trim()) {\n try {\n const parsed = JSON.parse(buffer);\n\n if (parsed.schema) {\n yield {\n type: 'schema' as const,\n schema: parsed.schema,\n ...(parsed.lastRefreshTime ? { lastRefreshTime: parsed.lastRefreshTime } : {}),\n };\n } else if (parsed.data) {\n yield {\n type: 'data' as const,\n data: parsed.data\n };\n } else if (parsed.error) {\n yield {\n type: 'error' as const,\n error: parsed.error\n };\n }\n } catch (parseError) {\n yield {\n type: 'error' as const,\n error: `Failed to parse remaining JSON: ${buffer}`\n };\n }\n }\n } catch (error: any) {\n if (error.name === 'AbortError') {\n throw new Error('aborted');\n }\n throw error;\n } finally {\n if (streamResponse.unsubscribe) {\n await streamResponse.unsubscribe();\n }\n }\n }\n}\n\nexport default (apiToken: string | (() => Promise<string>), options: CubeApiOptions) => new CubeApi(apiToken, options);\n\nexport { CubeApi };\nexport { default as Meta } from './Meta';\nexport { default as SqlQuery } from './SqlQuery';\nexport { default as RequestError } from './RequestError';\nexport { default as ProgressResult } from './ProgressResult';\nexport { default as ResultSet } from './ResultSet';\nexport * from './HttpTransport';\nexport * from './utils';\nexport * from './time';\nexport * from './types';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","cubeInternalLocale","customLocale","_objectSpread","en","name","weekStart","Ls","GRANULARITIES","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","parseSqlInterval","intervalStr","interval","parts","split","i","length","value","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","add","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isBefore","isAfter","isSame","dayRange","from","to","annotations","results","start","end","push","_customGranularity","customGranularity","_i","_Object$keys","keys","concat","intervalParsed","intervalStart","offset","intervalEnd","endOf","timeSeriesFromCustomInterval","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","flatMap","includes","Array","isArray","validateQuery","filters","filter","f","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","shouldApplyHeuristicOrder","pivotConfig","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","chartType","newChartType","_ref8","_ref9","_ref0","_ref1","isQueryPresent","every","q","_q$measures","_q$dimensions","_q$timeDimensions","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref10","_ref11","memberId","currentOrder","has","aliasSeries","values","index","_pivotConfig$aliasSer","duplicateMeasures","nonNullValues","groupByToPairs","groupByToPairsImpl","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","_drillDownLocator$yVa","_measures$measureName","_measures$measureName2","xValues","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","_this$loadResponses$","annotation","timeDimensionsAnnotation","measureName","_Object$keys2","drillMembers","operator","_ref5","_member$split","_member$split2","cubeName","_query$timeDimensions","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","obj","axisValues","axis","resultIndex","measure","val","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","timeDimensionMember","rawRows","timeDimensionBackwardCompatibleData","Boolean","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","measureValue","_row$measure","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","_ref14","allYValues","measureOnX","_ref15","_ref16","yGrouped","_ref17","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref18","_query$measures","e","a","m","_ref19","_ref20","_ref21","tablePivot","isMeasuresPresent","_ref22","_ref23","_ref24","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref25","type","_ref26","_ref27","currentItem","_currentItem","children","toColumns","item","path","_ref28","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref29","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref30","_ref30$measures","_ref30$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","responseChunks","_x","_responseChunks","_wrapAsyncGenerator","_regeneratorRuntime","mark","_callee","body","reader","_yield$_awaitAsyncGen","done","_reader$releaseLock","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","chunk","_t","wrap","_context","prev","next","getReader","_awaitAsyncGenerator","read","sent","abrupt","releaseLock","call","finish","Symbol","asyncIterator","_asyncIterator","TextEncoder","encode","Uint8Array","stop","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","fetchTimeout","signal","request","apiMethod","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","effectiveFetchTimeout","actualSignal","AbortSignal","timeout","runRequest","fetch","Authorization","subscribe","callback","_asyncToGenerator","errorMessage","_actualSignal$reason","_result","reason","requestStream","processedParams","String","controller","AbortController","setTimeout","_controller","abort","stream","_stream","_callee2","response","_context2","ok","status","statusText","unsubscribe","_unsubscribe","_callee3","_context3","RequestError","_Error","message","_callSuper","_inherits","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","mutexPromise","promise","then","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","skipAuthorizationUpdate","unsubscribed","checkMutex","requestInstance","networkRetries","loadImpl","_callee4","_options2","_response$error","_body$error","_options5","subscribeNext","continueWait","text","_options3","_options4","_error","_context4","_options","Promise","resolve","wait","_args3","toLowerCase","parse","progressCallback","_x2","_callee5","_context5","_updateTransportAuthorization","_callee7","tokenFetcher","_context7","_callee6","token","_context6","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","load","_options6","_options7","_options8","_this$prepareQueryOpt","prepareQueryOptions","_this$prepareQueryOpt2","cache","patched","_this6","_this$prepareQueryOpt3","_this$prepareQueryOpt4","_options9","_options0","_this7","_this8","dryRun","_this9","cubeSql","_this0","cubesqlParams","throwContinueWait","timeoutMs","_response$error$split","_response$error$split2","_toArray","_arrayLikeToArray","parsedSchema","lastRefreshTime","err","cubeSqlStream","_callee8","streamResponse","decoder","buffer","lines","_iterator2","_step2","line","parsed","_parsed","_t2","_t3","_t4","_t5","_t6","_context8","TextDecoder","decode","pop","_createForOfIteratorHelper","s","n"],"mappings":"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"}
|