@cubejs-client/core 1.5.11 → 1.5.12

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.umd.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","../src/index.umd.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\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({ ...en, weekStart: 1 });\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\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 * AbortSignal to cancel requests\n */\n signal?: AbortSignal;\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 * Cache mode for query execution\n */\n cache?: CacheMode;\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};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\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(promise: Promise<any>) {\n return promise\n .then((result) => result)\n .catch((error) => {\n if (error !== MUTEX_ERROR) {\n throw error;\n }\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 baseRequestId: uuidv4(),\n ...params\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 === '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 = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n 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 return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n signal: options?.signal\n }),\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 }),\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 }),\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 }),\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 }),\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 request = this.request('cubesql', {\n query: sqlQuery,\n cache: options?.cache,\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout\n });\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 return {\n schema: JSON.parse(schema).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 };\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 };\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 };\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","import cube, * as clientCoreExports from './index';\n\nconst cubeAll: any = cube;\n\nObject.keys(clientCoreExports).forEach((key) => {\n cubeAll[key] = (clientCoreExports as Record<string, any>)[key];\n});\n\nexport default cubeAll;\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","_objectSpread","en","weekStart","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","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","allYValues","measureOnX","_ref14","_ref15","yGrouped","_ref16","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref17","_query$measures","e","a","m","_ref18","_ref19","_ref20","tablePivot","isMeasuresPresent","_ref21","_ref22","_ref23","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref24","type","_ref25","_ref26","currentItem","_currentItem","children","toColumns","item","path","_ref27","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref28","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref29","_ref29$measures","_ref29$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","_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","_this$prepareQueryOpt","prepareQueryOptions","_this$prepareQueryOpt2","_options6","patched","_this6","_this$prepareQueryOpt3","_this$prepareQueryOpt4","_options7","_this7","_this8","dryRun","_this9","cubeSql","_this0","cache","timeoutMs","_response$error$split","_response$error$split2","_toArray","_arrayLikeToArray","err","cubeSqlStream","_callee8","streamResponse","decoder","buffer","lines","_iterator2","_step2","line","parsed","_parsed","_t3","_t4","_t6","_context8","TextDecoder","decode","pop","_createForOfIteratorHelper","s","n","cubeAll","clientCoreExports"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-core.umd.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","../src/index.umd.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\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({ ...en, weekStart: 1 });\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\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 * 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 * Cache mode for query execution\n */\n cache?: CacheMode;\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};\n\nexport type CubeSqlStreamChunk = {\n type: 'schema';\n schema: CubeSqlSchemaColumn[];\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(promise: Promise<any>) {\n return promise\n .then((result) => result)\n .catch((error) => {\n if (error !== MUTEX_ERROR) {\n throw error;\n }\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 === '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 = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n 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 return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n signal: options?.signal,\n baseRequestId: options?.baseRequestId,\n }),\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 request = this.request('cubesql', {\n query: sqlQuery,\n cache: options?.cache,\n method: 'POST',\n signal: options?.signal,\n fetchTimeout: options?.timeout,\n baseRequestId: options?.baseRequestId,\n });\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 return {\n schema: JSON.parse(schema).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 };\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 };\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 };\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","import cube, * as clientCoreExports from './index';\n\nconst cubeAll: any = cube;\n\nObject.keys(clientCoreExports).forEach((key) => {\n cubeAll[key] = (clientCoreExports as Record<string, any>)[key];\n});\n\nexport default cubeAll;\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","_objectSpread","en","weekStart","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","fillWithValue","fillMissingDates","rows","_series$resultIndex$m","_series$resultIndex","byXValues","groupBy","xGrouped","pipe","yValuesMap","_ref12","_ref13","allYValues","measureOnX","_ref14","_ref15","yGrouped","_ref16","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","_pivot$index","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref17","_query$measures","e","a","m","_ref18","_ref19","_ref20","tablePivot","isMeasuresPresent","_ref21","_ref22","_ref23","tableColumns","_pivot$","r","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref24","type","_ref25","_ref26","currentItem","_currentItem","children","toColumns","item","path","_ref27","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","uniq","_ref28","_query$measures2","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","foundTd","decompose","_this5","serialize","deserialize","defaultPivotConfig","_ref29","_ref29$measures","_ref29$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","_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","_this$prepareQueryOpt","prepareQueryOptions","_this$prepareQueryOpt2","_options6","_options7","patched","_this6","_this$prepareQueryOpt3","_this$prepareQueryOpt4","_options8","_options9","_this7","_this8","dryRun","_this9","cubeSql","_this0","cache","timeoutMs","_response$error$split","_response$error$split2","_toArray","_arrayLikeToArray","err","cubeSqlStream","_callee8","streamResponse","decoder","buffer","lines","_iterator2","_step2","line","parsed","_parsed","_t3","_t4","_t6","_context8","TextDecoder","decode","pop","_createForOfIteratorHelper","s","n","cubeAll","clientCoreExports"],"mappings":"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"}